Browse Source

update

xsync_v2
zhaohe 2 years ago
parent
commit
da1c2b91ec
  1. 2
      iflytop_xsync_protocol
  2. 51
      xsync.cpp
  3. 8
      xsync.hpp

2
iflytop_xsync_protocol

@ -1 +1 @@
Subproject commit 85b6bcc87f9188f061402b6ff6bac7b226c0025c
Subproject commit cb1114b21bf415053cdaeb7ed2940406e48d378b

51
xsync.cpp

@ -9,30 +9,56 @@ Xsync &Xsync::Ins() {
}
void Xsync::initialize(I_XSUDPFactory *xsync_udp_factory) { m_xsync_udp_factory = xsync_udp_factory; }
void Xsync::connect(string xsync_ip) {
xs_error_code_t Xsync::connect(string xsync_ip) {
m_xsync_ip = xsync_ip;
disConnect();
/**
* @brief m_xsync_reg_udp
*/
m_xsync_reg_udp = m_xsync_udp_factory->createXSUDP();
m_xsync_reg_udp->initialize(m_xsync_ip, IFLYTOP_XSYNC_SERVICE_PC_PORT);
xs_error_code_t ecode = kxs_ec_success;
auto xsync_reg_udp = m_xsync_udp_factory->createXSUDP();
ecode = xsync_reg_udp->initialize("0.0.0.0", IFLYTOP_XSYNC_SERVICE_PC_PORT);
if (ecode != kxs_ec_success) {
return ecode;
}
/**
* @brief m_xsync_timecode_udp_listener
*/
m_xsync_timecode_udp_listener = m_xsync_udp_factory->createXSUDP();
m_xsync_timecode_udp_listener->initialize(m_xsync_ip, IFLYTOP_XSYNC_TIMECODE_REPORT_PC_PORT);
m_xsync_timecode_udp_listener->startReceive([this](XsyncNetAdd &from, uint8_t *data, size_t length) { parseTimecodeMsgAndReport(from, data, length); });
auto xsync_timecode_udp_listener = m_xsync_udp_factory->createXSUDP();
ecode = xsync_timecode_udp_listener->initialize("0.0.0.0", IFLYTOP_XSYNC_TIMECODE_REPORT_PC_PORT);
if (ecode != kxs_ec_success) {
return ecode;
}
ecode = xsync_timecode_udp_listener->startReceive([this](XsyncNetAdd &from, uint8_t *data, size_t length) { parseTimecodeMsgAndReport(from, data, length); });
if (ecode != kxs_ec_success) {
return ecode;
}
/**
* @brief m_xsync_camera_sync_udp_listener
*/
m_xsync_camera_sync_udp_listener = m_xsync_udp_factory->createXSUDP();
m_xsync_camera_sync_udp_listener->initialize(m_xsync_ip, IFLYTOP_XSYNC_CAMERA_SYNC_PACKET_PC_PORT);
m_xsync_camera_sync_udp_listener->startReceive([this](XsyncNetAdd &from, uint8_t *data, size_t length) { parseCameraSyncMsgAndReport(from, data, length); });
auto xsync_camera_sync_udp_listener = m_xsync_udp_factory->createXSUDP();
ecode = xsync_camera_sync_udp_listener->initialize("0.0.0.0", IFLYTOP_XSYNC_CAMERA_SYNC_PACKET_PC_PORT);
if (ecode != kxs_ec_success) {
return ecode;
}
ecode = xsync_camera_sync_udp_listener->startReceive([this](XsyncNetAdd &from, uint8_t *data, size_t length) { parseCameraSyncMsgAndReport(from, data, length); });
if (ecode != kxs_ec_success) {
return ecode;
}
m_xsync_reg_udp = xsync_reg_udp;
m_xsync_timecode_udp_listener = xsync_timecode_udp_listener;
m_xsync_camera_sync_udp_listener = xsync_camera_sync_udp_listener;
m_net_state = kxsync_net_state_connected;
return ecode;
}
void Xsync::disConnect() {
xs_error_code_t Xsync::disConnect() {
if (m_xsync_reg_udp != nullptr) {
m_xsync_reg_udp->stopReceive();
m_xsync_reg_udp = nullptr;
@ -56,11 +82,12 @@ void Xsync::regOnTimecodeMsg(xsync_on_timecode_msg_t on_timecode_msg_cb) { m_on_
void Xsync::regOnCameraSyncMsg(xsync_on_camera_sync_msg_t on_camera_sync_msg_cb) { m_on_camera_sync_msg_cb = on_camera_sync_msg_cb; }
xs_error_code_t Xsync::xsync_send_cmd_block(iflytop_xsync_packet_header_t *cmd, iflytop_xsync_packet_header_t *rx_data, int32_t buffersize) {
if (!m_xsync_reg_udp) return kxs_ec_lose_connect;
m_xsync_reg_udp->clearRxBuffer();
cmd->index = txpacket_index++;
XsyncNetAdd toadd = {m_xsync_ip, IFLYTOP_XSYNC_SERVICE_PC_PORT};
XsyncNetAdd toadd = {m_xsync_ip, IFLYTOP_XSYNC_SERVICE_XSYNC_PORT};
xs_error_code_t ecode = //
m_xsync_reg_udp->sendto(toadd, (const char *)cmd, sizeof(iflytop_xsync_packet_header_t) + cmd->ndata * 4, nullptr);
if (ecode != kxs_ec_success) {
@ -68,7 +95,7 @@ xs_error_code_t Xsync::xsync_send_cmd_block(iflytop_xsync_packet_header_t *cmd,
}
XsyncNetAdd fromadd;
ecode = m_xsync_reg_udp->receive((char *)rx_data, buffersize, fromadd, 100);
ecode = m_xsync_reg_udp->receive((char *)rx_data, buffersize, fromadd, 10);
if (ecode != kxs_ec_success) {
return ecode;
}

8
xsync.hpp

@ -67,8 +67,8 @@ class Xsync {
bool ping(string xsync_ip);
void connect(string xsync_ip);
void disConnect();
xs_error_code_t connect(string xsync_ip);
xs_error_code_t disConnect();
xsync_net_state_t getNetState();
void regOnTimecodeMsg(xsync_on_timecode_msg_t on_timecode_msg_cb);
@ -80,6 +80,10 @@ class Xsync {
xs_error_code_t xsync_send_cmd_block(iflytop_xsync_packet_header_t *cmd, iflytop_xsync_packet_header_t *rx_data, int32_t buffersize);
/**
* @brief
*/
private:
void parseTimecodeMsgAndReport(XsyncNetAdd &from, uint8_t *data, size_t length);
void parseCameraSyncMsgAndReport(XsyncNetAdd &from, uint8_t *data, size_t length);

Loading…
Cancel
Save