|
|
@ -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; |
|
|
|
} |
|
|
|