Browse Source

add subframe

master
zhaohe 1 year ago
parent
commit
f2cd0a7edf
  1. 3
      include/xsync_v2_sig_type.hpp
  2. 14
      src/xsync_utils.cpp
  3. 10
      src/xsync_v2.cpp

3
include/xsync_v2_sig_type.hpp

@ -24,6 +24,7 @@ using namespace std;
typedef struct {
uint32_t tc0;
uint32_t tc1;
uint32_t subframe;
} Timecode64_t;
typedef enum {
@ -44,6 +45,7 @@ typedef struct {
uint8_t minute;
uint8_t second;
uint8_t frame;
uint8_t subframe;
} XsyncTimecode_t;
string XsyncTimecodeToStr(XsyncTimecode_t timecode);
@ -182,5 +184,4 @@ typedef enum {
DHCP_MODE = 1,
} NetworkMode_t;
} // namespace xsync

14
src/xsync_utils.cpp

@ -59,10 +59,11 @@ XsyncTimecode_t timecode64ToXsyncTimeCode(Timecode64_t tc64) {
uint8_t hour10s = (tc64.tc1 >> 24) & 0x03;
XsyncTimecode_t timecode;
timecode.hour = hour10s * 10 + houruints;
timecode.minute = minute10s * 10 + minuteuints;
timecode.second = second10s * 10 + seconduints;
timecode.frame = frame10s * 10 + frameuints;
timecode.hour = hour10s * 10 + houruints;
timecode.minute = minute10s * 10 + minuteuints;
timecode.second = second10s * 10 + seconduints;
timecode.frame = frame10s * 10 + frameuints;
timecode.subframe = tc64.subframe;
return timecode;
}
@ -79,8 +80,9 @@ Timecode64_t timecodeTo64(XsyncTimecode_t tc) {
uint32_t houruints = tc.hour % 10;
uint32_t hour10s = tc.hour / 10;
tc64.tc0 = frameuints + (frame10s << 8) + (seconduints << 16) + (second10s << 24);
tc64.tc1 = minuteuints + (minute10s << 8) + (houruints << 16) + (hour10s << 24);
tc64.tc0 = frameuints + (frame10s << 8) + (seconduints << 16) + (second10s << 24);
tc64.tc1 = minuteuints + (minute10s << 8) + (houruints << 16) + (hour10s << 24);
tc64.subframe = tc.subframe;
return tc64;
}

10
src/xsync_v2.cpp

@ -138,9 +138,11 @@ class Xsync : public IXsync {
if (packet->eventid == ktimecode_report_event) {
Timecode64_t tc64;
tc64.tc0 = packet->data[0];
tc64.tc1 = packet->data[1];
tc64.tc0 = packet->data[0];
tc64.tc1 = packet->data[1];
tc64.subframe = packet->data[2];
XsyncTimecode_t timecode = timecode64ToXsyncTimeCode(tc64);
if (m_on_timecode_msg_cb) m_on_timecode_msg_cb(&timecode);
} else if (packet->eventid == kxsync_work_state_report_event) {
// 信号发生器状态改变
@ -159,7 +161,9 @@ class Xsync : public IXsync {
xsync_camera_sync_udp_listener = g_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) goto err;
ecode = xsync_camera_sync_udp_listener->startReceive([this](XsyncNetAdd &from, uint8_t *data, size_t length) { parseCameraSyncMsgAndReport(from, data, length); });
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) goto err;
#endif

Loading…
Cancel
Save