From 5d0eb6fcc626df90938927b50280699f90604bfb Mon Sep 17 00:00:00 2001 From: zhaohe Date: Thu, 11 Jan 2024 11:52:32 +0800 Subject: [PATCH] update --- i_xsync_udp.hpp | 4 +- xsync.cpp | 203 ++++++++++++++++++++++-------------------------------- xsync.hpp | 92 ++++++++++++------------- xsync_errcode.hpp | 4 +- 4 files changed, 129 insertions(+), 174 deletions(-) diff --git a/i_xsync_udp.hpp b/i_xsync_udp.hpp index f9d141b..47267a2 100644 --- a/i_xsync_udp.hpp +++ b/i_xsync_udp.hpp @@ -12,7 +12,7 @@ #include "xsync_errcode.hpp" #include "iflytop_xsync_protocol\iflytop_xsync_protocol.h" -namespace iflytop { +namespace xsync { using namespace std; class XsyncNetAdd { @@ -78,4 +78,4 @@ class I_XSUDPFactory { virtual shared_ptr createXSUDP() = 0; }; -} // namespace iflytop +} // namespace xsync diff --git a/xsync.cpp b/xsync.cpp index ab49b67..f6aeacc 100644 --- a/xsync.cpp +++ b/xsync.cpp @@ -1,4 +1,6 @@ #include "xsync.hpp" + +#include #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 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 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 TriggerSigTypeStrSet() { + list 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 OutputSigTypeStrSet() { + list 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; } diff --git a/xsync.hpp b/xsync.hpp index adf7cd6..b299091 100644 --- a/xsync.hpp +++ b/xsync.hpp @@ -15,7 +15,7 @@ #include "i_xsync_udp.hpp" #include "iflytop_xsync_protocol/iflytop_xsync_protocol.h" #include "xsync_errcode.hpp" -namespace iflytop { +namespace xsync { using namespace std; typedef enum { @@ -25,55 +25,49 @@ typedef enum { } xsync_net_state_t; /******************************************************************************* - * XSYNC内部信号 * - *******************************************************************************/ -namespace xsync_internal_signal { -typedef enum { - 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 // 内部工作状态信号 -} signal_type_t; - -string signal_type_to_str(signal_type_t type); -signal_type_t str_to_signal_type(string type); - -} // namespace xsync_internal_signal - -/******************************************************************************* * TTL输出模块相关枚举 * *******************************************************************************/ -namespace xsync_ttlout_module { +namespace ttlout_module { +typedef enum { + tri_logic0 = 0, // 逻辑0 + tri_logic1 = 1, // 逻辑1 + tri_ttlin1_module_ext = 2, // ttl1输入模块原始信号 + tri_ttlin1_module_divide = 3, // ttl1输入模块分频信号 + tri_ttlin2_module_ext = 4, // ttl2输入模块原始信号 + tri_ttlin2_module_divide = 5, // ttl2输入模块分频信号 + tri_ttlin3_module_ext = 6, // ttl3输入模块原始信号 + tri_ttlin3_module_divide = 7, // ttl3输入模块分频信号 + tri_ttlin4_module_ext = 8, // ttl4输入模块原始信号 + tri_ttlin4_module_divide = 9, // ttl4输入模块分频信号 + tri_internal_en_flag = 10, // 内部使能状态信号输出 + tri_genlock_frame_sync_ext = 11, // 外部genlock帧同步信号 + tri_genlock_frame_sync_internal = 12, // 内部genlock帧同步信号 + tri_timecode_frame_sync_ext = 13, // 外部timecode帧同步信号 + tri_timecode_frame_sync_internal = 14, // 内部timecode帧同步信号 + tri_timecode_serial_data_ext = 15, // 外部timecode串行数据输入 + tri_timecode_serial_data_internal = 16, // 内部timecode串行数据输入 + tri_internal_100hz = 31 // 100hz测试信号 +} TriggerSigType_t; + +string TriggerSigType2Str(TriggerSigType_t type); +TriggerSigType_t Str2TriggerSigType(string type); +list TriggerSigTypeStrSet(); typedef enum { - level0 = 0, // 0 - level1 = 1, // 1 - test_signal = 2, // 测试信号,信号为ID*1000HZ方波信号 - input_signal = 3, // 输入信号 - input_signal_mirror = 4, // 翻转后的输入信号 - trigger_mode_signal = 5, // 触发模式下的触发信号 - trigger_mode_signal_mirror = 6, // 触发模式下的触发信号翻转 -} output_signal_type_t; + ot_logic0 = 0, // 0 + ot_logic1 = 1, // 1 + ot_test_signal = 2, // 测试信号,信号为ID*1000HZ方波信号 + ot_input_signal = 3, // 输入信号 + ot_input_signal_mirror = 4, // 翻转后的输入信号 + ot_trigger_mode_signal = 5, // 触发模式下的触发信号 + ot_trigger_mode_signal_mirror = 6, // 触发模式下的触发信号翻转 +} OutputSigType_t; -string output_signal_type_to_str(output_signal_type_t type); -output_signal_type_t str_to_output_signal_type(string type); +string OutputSigType2Str(OutputSigType_t type); +OutputSigType_t Str2OutputSigType(string type); +list OutputSigTypeStrSet(); -} // namespace xsync_ttlout_module +} // namespace ttlout_module typedef struct { uint8_t hour; @@ -171,8 +165,8 @@ class Xsync { * @param source * @return xs_error_code_t */ - xs_error_code_t TTLOutputModule_setInputSigType(int32_t index, xsync_internal_signal::signal_type_t source); - xs_error_code_t TTLOutputModule_getInputSigType(int32_t index, xsync_internal_signal::signal_type_t &source); + xs_error_code_t TTLOutputModule_setInputSigType(int32_t index, ttlout_module::TriggerSigType_t source); + xs_error_code_t TTLOutputModule_getInputSigType(int32_t index, ttlout_module::TriggerSigType_t &source); /** * @brief 设置TTL输出模块的输出信号 @@ -181,8 +175,8 @@ class Xsync { * @param output_type * @return xs_error_code_t */ - xs_error_code_t TTLOutputModule_setOutputSigType(int32_t index, xsync_ttlout_module::output_signal_type_t output_type); - xs_error_code_t TTLOutputModule_getOutputSigType(int32_t index, xsync_ttlout_module::output_signal_type_t &output_type); + xs_error_code_t TTLOutputModule_setOutputSigType(int32_t index, ttlout_module::OutputSigType_t output_type); + xs_error_code_t TTLOutputModule_getOutputSigType(int32_t index, ttlout_module::OutputSigType_t &output_type); /** * @brief 配置触发模式下触发信号脉冲宽度 * @@ -216,4 +210,4 @@ class Xsync { xs_error_code_t TTLOutputModule_getRegOff(int32_t index, uint32_t ®add); }; -} // namespace iflytop +} // namespace xsync diff --git a/xsync_errcode.hpp b/xsync_errcode.hpp index 4b9c1a7..82a6945 100644 --- a/xsync_errcode.hpp +++ b/xsync_errcode.hpp @@ -9,6 +9,6 @@ #include #include #include -namespace iflytop { +namespace xsync { using namespace std; -} // namespace iflytop +} // namespace xsync