|
|
@ -37,6 +37,126 @@ static uint32_t ipToUint32(const std::string &ipAddress, bool &suc) { |
|
|
|
|
|
|
|
return result_n; |
|
|
|
} |
|
|
|
namespace iflytop { |
|
|
|
namespace xsync_internal_signal { |
|
|
|
|
|
|
|
// level0 = 0, // 0
|
|
|
|
// level1 = 1, // 1
|
|
|
|
|
|
|
|
// ttlin1_module_raw_sig = 2, // ttl1输入模块原始信号
|
|
|
|
// ttlin1_module_sig_divide = 3, // ttl1输入模块分频信号
|
|
|
|
// ttlin2_module_raw_sig = 4, // ttl2输入模块原始信号
|
|
|
|
// ttlin2_module_sig_divide = 5, // ttl2输入模块分频信号
|
|
|
|
// ttlin3_module_raw_sig = 6, // ttl3输入模块原始信号
|
|
|
|
// ttlin3_module_sig_divide = 7, // ttl3输入模块分频信号
|
|
|
|
// ttlin4_module_raw_sig = 8, // ttl4输入模块原始信号
|
|
|
|
// ttlin4_module_sig_divide = 9, // ttl4输入模块分频信号
|
|
|
|
|
|
|
|
// genlockin_module_freq_sig = 10, // genlock输入模块频率信号
|
|
|
|
// timecodein_module_trigger_sig = 11, // timecode输入模块触发信号
|
|
|
|
|
|
|
|
// internal_camera_sync_sig = 12, // 内部相机同步信号
|
|
|
|
// internal_timecode_trigger_sig = 13, // 内部timecode触发信号
|
|
|
|
// internal_genlock_freq_sig = 14, // 内部genlock频率信号
|
|
|
|
// internal_work_state_sig = 15 // 内部工作状态信号
|
|
|
|
|
|
|
|
std::string signal_type_to_str(signal_type_t type) { |
|
|
|
switch (type) { |
|
|
|
case level0: |
|
|
|
return "level0"; |
|
|
|
case level1: |
|
|
|
return "level1"; |
|
|
|
case ttlin1_module_raw_sig: |
|
|
|
return "ttlin1_module_raw_sig"; |
|
|
|
case ttlin1_module_sig_divide: |
|
|
|
return "ttlin1_module_sig_divide"; |
|
|
|
case ttlin2_module_raw_sig: |
|
|
|
return "ttlin2_module_raw_sig"; |
|
|
|
case ttlin2_module_sig_divide: |
|
|
|
return "ttlin2_module_sig_divide"; |
|
|
|
case ttlin3_module_raw_sig: |
|
|
|
return "ttlin3_module_raw_sig"; |
|
|
|
case ttlin3_module_sig_divide: |
|
|
|
return "ttlin3_module_sig_divide"; |
|
|
|
case ttlin4_module_raw_sig: |
|
|
|
return "ttlin4_module_raw_sig"; |
|
|
|
case ttlin4_module_sig_divide: |
|
|
|
return "ttlin4_module_sig_divide"; |
|
|
|
case genlockin_module_freq_sig: |
|
|
|
return "genlockin_module_freq_sig"; |
|
|
|
case timecodein_module_trigger_sig: |
|
|
|
return "timecodein_module_trigger_sig"; |
|
|
|
case internal_camera_sync_sig: |
|
|
|
return "internal_camera_sync_sig"; |
|
|
|
case internal_timecode_trigger_sig: |
|
|
|
return "internal_timecode_trigger_sig"; |
|
|
|
case internal_genlock_freq_sig: |
|
|
|
return "internal_genlock_freq_sig"; |
|
|
|
case internal_work_state_sig: |
|
|
|
return "internal_work_state_sig"; |
|
|
|
default: |
|
|
|
return "unknow"; |
|
|
|
} |
|
|
|
return "unknow"; |
|
|
|
} |
|
|
|
signal_type_t str_to_signal_type(std::string type) { |
|
|
|
if (type == "level0") return level0; |
|
|
|
if (type == "level1") return level1; |
|
|
|
if (type == "ttlin1_module_raw_sig") return ttlin1_module_raw_sig; |
|
|
|
if (type == "ttlin1_module_sig_divide") return ttlin1_module_sig_divide; |
|
|
|
if (type == "ttlin2_module_raw_sig") return ttlin2_module_raw_sig; |
|
|
|
if (type == "ttlin2_module_sig_divide") return ttlin2_module_sig_divide; |
|
|
|
if (type == "ttlin3_module_raw_sig") return ttlin3_module_raw_sig; |
|
|
|
if (type == "ttlin3_module_sig_divide") return ttlin3_module_sig_divide; |
|
|
|
if (type == "ttlin4_module_raw_sig") return ttlin4_module_raw_sig; |
|
|
|
if (type == "ttlin4_module_sig_divide") return ttlin4_module_sig_divide; |
|
|
|
if (type == "genlockin_module_freq_sig") return genlockin_module_freq_sig; |
|
|
|
if (type == "timecodein_module_trigger_sig") return timecodein_module_trigger_sig; |
|
|
|
if (type == "internal_camera_sync_sig") return internal_camera_sync_sig; |
|
|
|
if (type == "internal_timecode_trigger_sig") return internal_timecode_trigger_sig; |
|
|
|
if (type == "internal_genlock_freq_sig") return internal_genlock_freq_sig; |
|
|
|
if (type == "internal_work_state_sig") return internal_work_state_sig; |
|
|
|
return level0; |
|
|
|
} |
|
|
|
} // namespace xsync_internal_signal
|
|
|
|
} // namespace iflytop
|
|
|
|
|
|
|
|
namespace iflytop { |
|
|
|
namespace xsync_ttlout_module { |
|
|
|
|
|
|
|
string output_signal_type_to_str(output_signal_type_t type) { |
|
|
|
switch (type) { |
|
|
|
case level0: |
|
|
|
return "level0"; |
|
|
|
case level1: |
|
|
|
return "level1"; |
|
|
|
case test_signal: |
|
|
|
return "test_signal"; |
|
|
|
case input_signal: |
|
|
|
return "input_signal"; |
|
|
|
case input_signal_mirror: |
|
|
|
return "input_signal_mirror"; |
|
|
|
case trigger_mode_signal: |
|
|
|
return "trigger_mode_signal"; |
|
|
|
case trigger_mode_signal_mirror: |
|
|
|
return "trigger_mode_signal_mirror"; |
|
|
|
default: |
|
|
|
return "unknow"; |
|
|
|
} |
|
|
|
return "unknow"; |
|
|
|
} |
|
|
|
output_signal_type_t str_to_output_signal_type(string type) { |
|
|
|
if (type == "level0") return level0; |
|
|
|
if (type == "level1") return level1; |
|
|
|
if (type == "test_signal") return test_signal; |
|
|
|
if (type == "input_signal") return input_signal; |
|
|
|
if (type == "input_signal_mirror") return input_signal_mirror; |
|
|
|
if (type == "trigger_mode_signal") return trigger_mode_signal; |
|
|
|
if (type == "trigger_mode_signal_mirror") return trigger_mode_signal_mirror; |
|
|
|
return level0; |
|
|
|
} |
|
|
|
} // namespace xsync_ttlout_module
|
|
|
|
} // namespace iflytop
|
|
|
|
|
|
|
|
Xsync::Xsync(/* args */) {} |
|
|
|
|
|
|
@ -120,8 +240,8 @@ xs_error_code_t Xsync::disConnect() { |
|
|
|
} |
|
|
|
xsync_net_state_t Xsync::getNetState() { return m_net_state; } |
|
|
|
|
|
|
|
void Xsync::regOnTimecodeMsg(xsync_on_timecode_msg_t on_timecode_msg_cb) { m_on_timecode_msg_cb = on_timecode_msg_cb; } |
|
|
|
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; } |
|
|
|
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; } |
|
|
|
|
|
|
|
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_); |
|
|
@ -299,13 +419,13 @@ void Xsync::parseCameraSyncMsgAndReport(XsyncNetAdd &from, uint8_t *data, size_t |
|
|
|
|
|
|
|
// xsync_stm32_action_generator_new_mac, //
|
|
|
|
// xsync_stm32_action_factory_reset, //
|
|
|
|
// xsync_stm32_action_reboot, //
|
|
|
|
// xsync_stm32_action_Basic_reboot, //
|
|
|
|
// xsync_stm32_action_storage_cfg,
|
|
|
|
xs_error_code_t Xsync::generatorNewMac() { return doaction(xsync_stm32_action_generator_new_mac, 0, nullptr, 2000); } |
|
|
|
xs_error_code_t Xsync::factoryReset() { return doaction(xsync_stm32_action_factory_reset, 0, nullptr, 1000); } |
|
|
|
xs_error_code_t Xsync::reboot() { return doaction(xsync_stm32_action_reboot, 0, nullptr); } |
|
|
|
xs_error_code_t Xsync::Basic_generatorNewMac() { return doaction(xsync_stm32_action_generator_new_mac, 0, nullptr, 2000); } |
|
|
|
xs_error_code_t Xsync::Basic_factoryReset() { return doaction(xsync_stm32_action_factory_reset, 0, nullptr, 1000); } |
|
|
|
xs_error_code_t Xsync::Basic_reboot() { return doaction(xsync_stm32_action_Basic_reboot, 0, nullptr); } |
|
|
|
xs_error_code_t Xsync::storageConfig() { return doaction(xsync_stm32_action_storage_cfg, 0, nullptr, 1000); } |
|
|
|
xs_error_code_t Xsync::changeNetworkConfig(string ip, string mask, string gateway) { |
|
|
|
xs_error_code_t Xsync::Basic_changeNetworkConfig(string ip, string mask, string gateway) { |
|
|
|
uint32_t ip32 = 0; |
|
|
|
uint32_t mask32 = 0; |
|
|
|
uint32_t gateway32 = 0; |
|
|
@ -334,7 +454,7 @@ xs_error_code_t Xsync::changeNetworkConfig(string ip, string mask, string gatewa |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
|
|
|
|
xs_error_code_t Xsync::clearXsyncCameraSyncIndexCount() { |
|
|
|
xs_error_code_t Xsync::Basic_clearXsyncCameraSyncIndexCount() { |
|
|
|
uint32_t readbak = 0; |
|
|
|
return reg_write(kxsync_reg_stm32_camera_sync_signal_count, 0, readbak); |
|
|
|
} |
|
|
@ -351,3 +471,137 @@ xs_error_code_t Xsync::doaction(uint32_t action, uint32_t actionval, uint32_t *a |
|
|
|
if (ackreturn) *ackreturn = readbak; |
|
|
|
return ecode; |
|
|
|
} |
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
* TTLOutputModule * |
|
|
|
*******************************************************************************/ |
|
|
|
// .reg0(reg_input_signal_select),
|
|
|
|
// .reg1(reg_output_signal_select),
|
|
|
|
// .reg2(reg_config),
|
|
|
|
// .reg3(reg_pulse_mode_valid_len),
|
|
|
|
// .reg4(reg_pulse_mode_trigger_delay)
|
|
|
|
|
|
|
|
xs_error_code_t Xsync::TTLOutputModule_getRegOff(int32_t index, uint32_t ®add) { |
|
|
|
switch (index) { |
|
|
|
case 1: |
|
|
|
regadd = REG_ADD_OFF_TTLOUT1; |
|
|
|
break; |
|
|
|
case 2: |
|
|
|
regadd = REG_ADD_OFF_TTLOUT2; |
|
|
|
break; |
|
|
|
case 3: |
|
|
|
regadd = REG_ADD_OFF_TTLOUT3; |
|
|
|
break; |
|
|
|
case 4: |
|
|
|
regadd = REG_ADD_OFF_TTLOUT4; |
|
|
|
break; |
|
|
|
default: |
|
|
|
return kxs_ec_param_error; |
|
|
|
} |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
|
|
|
|
xs_error_code_t Xsync::TTLOutputModule_setInputSigType(int32_t index, xsync_internal_signal::signal_type_t source) { |
|
|
|
uint32_t regadd = REG_ADD_OFF_TTLOUT1; |
|
|
|
xs_error_code_t ecode = kxs_ec_success; |
|
|
|
uint32_t readbak = 0; |
|
|
|
|
|
|
|
ecode = TTLOutputModule_getRegOff(index, regadd); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
return reg_write(regadd + 0, source, readbak, 10); |
|
|
|
} |
|
|
|
|
|
|
|
xs_error_code_t Xsync::TTLOutputModule_getInputSigType(int32_t index, xsync_internal_signal::signal_type_t &source) { |
|
|
|
uint32_t regadd = REG_ADD_OFF_TTLOUT1; |
|
|
|
xs_error_code_t ecode = kxs_ec_success; |
|
|
|
uint32_t readbak = 0; |
|
|
|
|
|
|
|
ecode = TTLOutputModule_getRegOff(index, regadd); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
ecode = reg_read(regadd + 0, readbak, 10); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
source = (xsync_internal_signal::signal_type_t)readbak; |
|
|
|
return ecode; |
|
|
|
} |
|
|
|
|
|
|
|
xs_error_code_t Xsync::TTLOutputModule_setOutputSigType(int32_t index, xsync_ttlout_module::output_signal_type_t output_type) { |
|
|
|
uint32_t regadd = REG_ADD_OFF_TTLOUT1; |
|
|
|
xs_error_code_t ecode = kxs_ec_success; |
|
|
|
uint32_t readbak = 0; |
|
|
|
|
|
|
|
ecode = TTLOutputModule_getRegOff(index, regadd); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
return reg_write(regadd + 1, output_type, readbak, 10); |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TTLOutputModule_getOutputSigType(int32_t index, xsync_ttlout_module::output_signal_type_t &output_type) { |
|
|
|
uint32_t regadd = REG_ADD_OFF_TTLOUT1; |
|
|
|
xs_error_code_t ecode = kxs_ec_success; |
|
|
|
uint32_t readbak = 0; |
|
|
|
|
|
|
|
ecode = TTLOutputModule_getRegOff(index, regadd); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
ecode = reg_read(regadd + 1, readbak, 10); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
output_type = (xsync_ttlout_module::output_signal_type_t)readbak; |
|
|
|
return ecode; |
|
|
|
} |
|
|
|
|
|
|
|
xs_error_code_t Xsync::TTLOutputModule_setTriggerModePulseWidth(int32_t index, uint32_t pulse_width_ms) { |
|
|
|
uint32_t regadd = REG_ADD_OFF_TTLOUT1; |
|
|
|
xs_error_code_t ecode = kxs_ec_success; |
|
|
|
uint32_t readbak = 0; |
|
|
|
|
|
|
|
ecode = TTLOutputModule_getRegOff(index, regadd); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
uint32_t pluse_width = pulse_width_ms * 1000; // 1MHZ计数
|
|
|
|
|
|
|
|
return reg_write(regadd + 3, pluse_width, readbak, 10); |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TTLOutputModule_getTriggerModePulseWidth(int32_t index, uint32_t &pulse_width_ms) { |
|
|
|
uint32_t regadd = REG_ADD_OFF_TTLOUT1; |
|
|
|
xs_error_code_t ecode = kxs_ec_success; |
|
|
|
uint32_t readbak = 0; |
|
|
|
|
|
|
|
ecode = TTLOutputModule_getRegOff(index, regadd); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
ecode = reg_read(regadd + 3, readbak, 10); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
pulse_width_ms = readbak / 1000; |
|
|
|
return ecode; |
|
|
|
} |
|
|
|
|
|
|
|
xs_error_code_t Xsync::TTLOutputModule_setTriggerModePulseDelay(int32_t index, uint32_t pulse_delay_ms) { |
|
|
|
uint32_t regadd = REG_ADD_OFF_TTLOUT1; |
|
|
|
xs_error_code_t ecode = kxs_ec_success; |
|
|
|
uint32_t readbak = 0; |
|
|
|
|
|
|
|
ecode = TTLOutputModule_getRegOff(index, regadd); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
uint32_t pulse_delay = pulse_delay_ms * 1000; // 1MHZ计数
|
|
|
|
|
|
|
|
return reg_write(regadd + 4, pulse_delay, readbak, 10); |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TTLOutputModule_getTriggerModePulseDelay(int32_t index, uint32_t &pulse_delay_ms) { |
|
|
|
uint32_t regadd = REG_ADD_OFF_TTLOUT1; |
|
|
|
xs_error_code_t ecode = kxs_ec_success; |
|
|
|
uint32_t readbak = 0; |
|
|
|
|
|
|
|
ecode = TTLOutputModule_getRegOff(index, regadd); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
ecode = reg_read(regadd + 4, readbak, 10); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
pulse_delay_ms = readbak / 1000; |
|
|
|
return ecode; |
|
|
|
} |