|
|
@ -1,4 +1,6 @@ |
|
|
|
#include "xsync.hpp"
|
|
|
|
|
|
|
|
#include <map>
|
|
|
|
#define ENABLE_LOG
|
|
|
|
#ifdef ENABLE_LOG
|
|
|
|
#include "../src/logger.hpp"
|
|
|
@ -6,7 +8,8 @@ |
|
|
|
|
|
|
|
#define TAG "XSYNC"
|
|
|
|
|
|
|
|
using namespace iflytop; |
|
|
|
using namespace xsync; |
|
|
|
using namespace std; |
|
|
|
|
|
|
|
static uint32_t ipToUint32(const std::string &ipAddress, bool &suc) { |
|
|
|
uint32_t result = 0; |
|
|
@ -37,126 +40,84 @@ 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"; |
|
|
|
|
|
|
|
namespace xsync { |
|
|
|
namespace ttlout_module { |
|
|
|
|
|
|
|
static map<string, TriggerSigType_t> TriggerSigType2StrMap = { |
|
|
|
{"logic0", tri_logic0}, |
|
|
|
{"logic1", tri_logic1}, |
|
|
|
{"ttlin1_module_ext", tri_ttlin1_module_ext}, |
|
|
|
{"ttlin1_module_divide", tri_ttlin1_module_divide}, |
|
|
|
{"ttlin2_module_ext", tri_ttlin2_module_ext}, |
|
|
|
{"ttlin2_module_divide", tri_ttlin2_module_divide}, |
|
|
|
{"ttlin3_module_ext", tri_ttlin3_module_ext}, |
|
|
|
{"ttlin3_module_divide", tri_ttlin3_module_divide}, |
|
|
|
{"ttlin4_module_ext", tri_ttlin4_module_ext}, |
|
|
|
{"ttlin4_module_divide", tri_ttlin4_module_divide}, |
|
|
|
{"internal_en_flag", tri_internal_en_flag}, |
|
|
|
{"genlock_frame_sync_ext", tri_genlock_frame_sync_ext}, |
|
|
|
{"genlock_frame_sync_internal", tri_genlock_frame_sync_internal}, |
|
|
|
{"timecode_frame_sync_ext", tri_timecode_frame_sync_ext}, |
|
|
|
{"timecode_frame_sync_internal", tri_timecode_frame_sync_internal}, |
|
|
|
{"timecode_serial_data_ext", tri_timecode_serial_data_ext}, |
|
|
|
{"timecode_serial_data_internal", tri_timecode_serial_data_internal}, |
|
|
|
{"internal_100hz", tri_internal_100hz}, |
|
|
|
}; |
|
|
|
static map<string, OutputSigType_t> Str2TriggerSigTypeMap = { |
|
|
|
{"ot_logic0", ot_logic0}, //
|
|
|
|
{"ot_logic1", ot_logic1}, //
|
|
|
|
{"ot_test_signal", ot_test_signal}, //
|
|
|
|
{"ot_input_signal", ot_input_signal}, //
|
|
|
|
{"ot_input_signal_mirror", ot_input_signal_mirror}, //
|
|
|
|
{"ot_trigger_mode_signal", ot_trigger_mode_signal}, //
|
|
|
|
{"ot_trigger_mode_signal_mirror", ot_trigger_mode_signal_mirror}, |
|
|
|
}; |
|
|
|
|
|
|
|
string TriggerSigType2Str(TriggerSigType_t type) { |
|
|
|
for (auto &item : TriggerSigType2StrMap) { |
|
|
|
if (item.second == type) return item.first; |
|
|
|
} |
|
|
|
return "unknow"; |
|
|
|
return "unkown"; |
|
|
|
} |
|
|
|
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; |
|
|
|
TriggerSigType_t Str2TriggerSigType(string type) { |
|
|
|
auto it = TriggerSigType2StrMap.find(type); |
|
|
|
if (it != TriggerSigType2StrMap.end()) { |
|
|
|
return it->second; |
|
|
|
} |
|
|
|
return tri_logic0; |
|
|
|
} |
|
|
|
} // 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"; |
|
|
|
string OutputSigType2Str(OutputSigType_t type) { |
|
|
|
for (auto &item : Str2TriggerSigTypeMap) { |
|
|
|
if (item.second == type) return item.first; |
|
|
|
} |
|
|
|
return "unkown"; |
|
|
|
} |
|
|
|
OutputSigType_t Str2OutputSigType(string type) { |
|
|
|
auto it = Str2TriggerSigTypeMap.find(type); |
|
|
|
if (it != Str2TriggerSigTypeMap.end()) { |
|
|
|
return it->second; |
|
|
|
} |
|
|
|
return ot_logic0; |
|
|
|
} |
|
|
|
|
|
|
|
list<string> TriggerSigTypeStrSet() { |
|
|
|
list<string> ret; |
|
|
|
for (auto &item : TriggerSigType2StrMap) { |
|
|
|
ret.push_back(item.first); |
|
|
|
} |
|
|
|
return "unknow"; |
|
|
|
return ret; |
|
|
|
} |
|
|
|
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; |
|
|
|
list<string> OutputSigTypeStrSet() { |
|
|
|
list<string> ret; |
|
|
|
for (auto &item : Str2TriggerSigTypeMap) { |
|
|
|
ret.push_back(item.first); |
|
|
|
} |
|
|
|
return ret; |
|
|
|
} |
|
|
|
} // namespace xsync_ttlout_module
|
|
|
|
} // namespace iflytop
|
|
|
|
|
|
|
|
} // namespace ttlout_module
|
|
|
|
} // namespace xsync
|
|
|
|
|
|
|
|
Xsync::Xsync(/* args */) {} |
|
|
|
|
|
|
@ -501,7 +462,7 @@ xs_error_code_t Xsync::TTLOutputModule_getRegOff(int32_t index, uint32_t ®add |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
|
|
|
|
xs_error_code_t Xsync::TTLOutputModule_setInputSigType(int32_t index, xsync_internal_signal::signal_type_t source) { |
|
|
|
xs_error_code_t Xsync::TTLOutputModule_setInputSigType(int32_t index, ttlout_module::TriggerSigType_t source) { |
|
|
|
uint32_t regadd = REG_ADD_OFF_TTLOUT1; |
|
|
|
xs_error_code_t ecode = kxs_ec_success; |
|
|
|
uint32_t readbak = 0; |
|
|
@ -512,7 +473,7 @@ xs_error_code_t Xsync::TTLOutputModule_setInputSigType(int32_t index, xsync_inte |
|
|
|
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) { |
|
|
|
xs_error_code_t Xsync::TTLOutputModule_getInputSigType(int32_t index, ttlout_module::TriggerSigType_t &source) { |
|
|
|
uint32_t regadd = REG_ADD_OFF_TTLOUT1; |
|
|
|
xs_error_code_t ecode = kxs_ec_success; |
|
|
|
uint32_t readbak = 0; |
|
|
@ -523,11 +484,11 @@ xs_error_code_t Xsync::TTLOutputModule_getInputSigType(int32_t index, xsync_inte |
|
|
|
ecode = reg_read(regadd + 0, readbak, 10); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
source = (xsync_internal_signal::signal_type_t)readbak; |
|
|
|
source = (ttlout_module::TriggerSigType_t)readbak; |
|
|
|
return ecode; |
|
|
|
} |
|
|
|
|
|
|
|
xs_error_code_t Xsync::TTLOutputModule_setOutputSigType(int32_t index, xsync_ttlout_module::output_signal_type_t output_type) { |
|
|
|
xs_error_code_t Xsync::TTLOutputModule_setOutputSigType(int32_t index, ttlout_module::OutputSigType_t output_type) { |
|
|
|
uint32_t regadd = REG_ADD_OFF_TTLOUT1; |
|
|
|
xs_error_code_t ecode = kxs_ec_success; |
|
|
|
uint32_t readbak = 0; |
|
|
@ -537,7 +498,7 @@ xs_error_code_t Xsync::TTLOutputModule_setOutputSigType(int32_t index, xsync_ttl |
|
|
|
|
|
|
|
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) { |
|
|
|
xs_error_code_t Xsync::TTLOutputModule_getOutputSigType(int32_t index, ttlout_module::OutputSigType_t &output_type) { |
|
|
|
uint32_t regadd = REG_ADD_OFF_TTLOUT1; |
|
|
|
xs_error_code_t ecode = kxs_ec_success; |
|
|
|
uint32_t readbak = 0; |
|
|
@ -548,7 +509,7 @@ xs_error_code_t Xsync::TTLOutputModule_getOutputSigType(int32_t index, xsync_ttl |
|
|
|
ecode = reg_read(regadd + 1, readbak, 10); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
output_type = (xsync_ttlout_module::output_signal_type_t)readbak; |
|
|
|
output_type = (ttlout_module::OutputSigType_t)readbak; |
|
|
|
return ecode; |
|
|
|
} |
|
|
|
|
|
|
|