Browse Source

update

xsync_v2
zhaohe 2 years ago
parent
commit
511a5714c7
  1. 49
      xsync.cpp
  2. 13
      xsync.hpp
  3. 12
      xsync_packet.hpp

49
xsync.cpp

@ -487,6 +487,7 @@ xsync_net_state_t Xsync::getNetState() { return m_net_state; }
void Xsync::Basic_registerOnTimecodeMsgCallback(xsync_on_timecode_msg_t on_timecode_msg_cb) { m_on_timecode_msg_cb = on_timecode_msg_cb; }
void Xsync::Basic_registerOnCameraSyncMsgCallback(xsync_on_camera_sync_msg_t on_camera_sync_msg_cb) { m_on_camera_sync_msg_cb = on_camera_sync_msg_cb; }
void Xsync::Basic_registerOnWorkstateChangeMsgCallback(xsync_on_workstate_change_msg_t on_workstate_change_msg_cb) { m_on_workstate_change_msg_cb = on_workstate_change_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, int32_t overtime_ms) {
lock_guard<recursive_mutex> lock(lock_);
@ -619,14 +620,17 @@ xs_error_code_t Xsync::reg_read_muti(uint32_t regadd, uint32_t nreg, vector<uint
}
void Xsync::parseTimecodeMsgAndReport(XsyncNetAdd &from, uint8_t *data, size_t length) {
//
iflytop_timecode_report_packet_t *packet = (iflytop_timecode_report_packet_t *)data;
Timecode64_t tc64;
tc64.tc0 = packet->timecode0;
tc64.tc1 = packet->timecode1;
XsyncTimecode_t timecode = timecode64ToXsyncTimeCode(tc64);
if (m_on_timecode_msg_cb) m_on_timecode_msg_cb(&timecode);
iflytop_xsync_event_report_packet_t *packet = (iflytop_xsync_event_report_packet_t *)data;
if (packet->eventid == ktimecode_report_event) {
Timecode64_t tc64;
tc64.tc0 = packet->data[0];
tc64.tc1 = packet->data[1];
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) {
// 信号发生器状态改变
if (m_on_workstate_change_msg_cb) m_on_workstate_change_msg_cb(packet->data[0]);
}
}
void Xsync::parseCameraSyncMsgAndReport(XsyncNetAdd &from, uint8_t *data, size_t length) {
uint32_t count = 0;
@ -704,14 +708,16 @@ xs_error_code_t Xsync::Basic_getGenlockFormat(GenlockFormat_t &format) {
return kxs_ec_success;
}
xs_error_code_t Xsync::Basic_setTimecodeFormat(TimecodeFormat_t format) {
DO_XSYNC(SigGenerator_setTimecodeFormat(format));
DO_XSYNC(TimecodeInputModule_setTimecodeFormat(format));
return kxs_ec_success;
}
xs_error_code_t Xsync::Basic_getTimecodeFormat(TimecodeFormat_t &format) {
DO_XSYNC(SigGenerator_getTimecodeFormat(format));
uint32_t readbak = 0;
DO_XSYNC(reg_write(reg::kSigGenerator_timecode_format, format, readbak, 10));
DO_XSYNC(reg_write(reg::ktimecode_in_timecode_format, format, readbak, 10));
// DO_XSYNC(reg_write(reg::ktimecode_out_timecode_format, format, readbak, 10)); //readonly
return kxs_ec_success;
}
// xs_error_code_t Xsync::Basic_getTimecodeFormat(TimecodeFormat_t &format) {
// DO_XSYNC(SigGenerator_getTimecodeFormat(format));
// return kxs_ec_success;
// }
/*******************************************************************************
* TTLOutputModule *
*******************************************************************************/
@ -990,10 +996,7 @@ xs_error_code_t Xsync::SigGenerator_getGenlockFormat(GenlockFormat_t &format) {
format = (GenlockFormat_t)readbak;
return ecode;
}
xs_error_code_t Xsync::SigGenerator_setTimecodeFormat(TimecodeFormat_t format) {
uint32_t readbak = 0;
return reg_write(reg::kSigGenerator_timecode_format, format, readbak, 10);
}
xs_error_code_t Xsync::SigGenerator_setTimecodeFormat(TimecodeFormat_t format) { return Basic_setTimecodeFormat(format); }
xs_error_code_t Xsync::SigGenerator_getTimecodeFormat(TimecodeFormat_t &format) {
uint32_t readbak = 0;
auto ecode = reg_read(reg::kSigGenerator_timecode_format, readbak, 10);
@ -1102,24 +1105,20 @@ xs_error_code_t Xsync::TimecodeInputModule_setSrcSelect(timecode_input_module::T
DO_XSYNC(reg_write(reg::ktimecode_in_timecode_sig_selt, timecode_select, readbak, 10));
return kxs_ec_success;
}
xs_error_code_t Xsync::TimecodeInputModule_getSrcSelect(timecode_input_module::TriggerSigType_t timecode_select) {
xs_error_code_t Xsync::TimecodeInputModule_getSrcSelect(timecode_input_module::TriggerSigType_t &timecode_select) {
uint32_t readbak = 0;
DO_XSYNC(reg_read(reg::ktimecode_in_timecode_sig_selt, readbak, 10));
timecode_select = (timecode_input_module::TriggerSigType_t)readbak;
return kxs_ec_success;
}
xs_error_code_t Xsync::TimecodeInputModule_setTimecodeFormat(TimecodeFormat_t format) {
uint32_t readbak = 0;
DO_XSYNC(reg_write(reg::ktimecode_in_timecode_format, format, readbak, 10));
return kxs_ec_success;
}
xs_error_code_t Xsync::TimecodeInputModule_setTimecodeFormat(TimecodeFormat_t format) { return Basic_setTimecodeFormat(format); }
xs_error_code_t Xsync::TimecodeInputModule_getTimecodeFormat(TimecodeFormat_t &format) {
uint32_t readbak = 0;
DO_XSYNC(reg_read(reg::ktimecode_in_timecode_format, readbak, 10));
format = (TimecodeFormat_t)readbak;
return kxs_ec_success;
}
xs_error_code_t Xsync::TimecodeInputModule_getTimecode(XsyncTimecode_t& timecode) {
xs_error_code_t Xsync::TimecodeInputModule_getTimecode(XsyncTimecode_t &timecode) {
uint32_t readbak = 0;
xs_error_code_t ecode = kxs_ec_success;

13
xsync.hpp

@ -73,6 +73,7 @@ typedef struct {
} xysnc_camera_sync_data_t;
typedef function<void(XsyncTimecode_t *timecode_msg)> xsync_on_timecode_msg_t;
typedef function<void(uint32_t workstate)> xsync_on_workstate_change_msg_t;
typedef function<void(xysnc_camera_sync_data_t *timecode_msg)> xsync_on_camera_sync_msg_t;
/*******************************************************************************
@ -208,8 +209,9 @@ class Xsync {
string m_xsync_ip;
bool m_is_connected = false;
xsync_on_camera_sync_msg_t m_on_camera_sync_msg_cb = nullptr;
xsync_on_timecode_msg_t m_on_timecode_msg_cb = nullptr;
xsync_on_camera_sync_msg_t m_on_camera_sync_msg_cb = nullptr;
xsync_on_timecode_msg_t m_on_timecode_msg_cb = nullptr;
xsync_on_workstate_change_msg_t m_on_workstate_change_msg_cb = nullptr;
int txpacket_index = 0;
@ -240,6 +242,7 @@ class Xsync {
*******************************************************************************/
void Basic_registerOnTimecodeMsgCallback(xsync_on_timecode_msg_t on_timecode_msg_cb);
void Basic_registerOnCameraSyncMsgCallback(xsync_on_camera_sync_msg_t on_camera_sync_msg_cb);
void Basic_registerOnWorkstateChangeMsgCallback(xsync_on_workstate_change_msg_t on_workstate_change_msg_cb);
/*******************************************************************************
* *
@ -261,19 +264,19 @@ class Xsync {
xs_error_code_t Basic_setGenlockFormat(GenlockFormat_t format);
xs_error_code_t Basic_getGenlockFormat(GenlockFormat_t &format);
xs_error_code_t Basic_setTimecodeFormat(TimecodeFormat_t format);
xs_error_code_t Basic_getTimecodeFormat(TimecodeFormat_t &format);
// xs_error_code_t Basic_getTimecodeFormat(TimecodeFormat_t &format);
/*******************************************************************************
* *
*******************************************************************************/
xs_error_code_t TimecodeInputModule_setSrcSelect(timecode_input_module::TriggerSigType_t timecode_select);
xs_error_code_t TimecodeInputModule_getSrcSelect(timecode_input_module::TriggerSigType_t timecode_select);
xs_error_code_t TimecodeInputModule_getSrcSelect(timecode_input_module::TriggerSigType_t &timecode_select);
xs_error_code_t TimecodeInputModule_setTimecodeFormat(TimecodeFormat_t format);
xs_error_code_t TimecodeInputModule_getTimecodeFormat(TimecodeFormat_t &format);
xs_error_code_t TimecodeInputModule_getTimecode(XsyncTimecode_t& timecode);
xs_error_code_t TimecodeInputModule_getTimecode(XsyncTimecode_t &timecode);
/*******************************************************************************
* TTL输入模块 *

12
xsync_packet.hpp

@ -28,10 +28,14 @@ typedef struct {
} iflytop_xsync_packet_header_t;
typedef struct {
uint32_t timecode0;
uint32_t timecode1;
} iflytop_timecode_report_packet_t;
#pragma pack()
uint32_t eventid;
uint32_t data[];
} iflytop_xsync_event_report_packet_t;
typedef enum {
ktimecode_report_event = 0,
kxsync_work_state_report_event = 1,
} iflytop_event_type_t;
typedef enum {
kxsync_packet_type_none = 0,

Loading…
Cancel
Save