Browse Source

update

xsync_v2
zhaohe 2 years ago
parent
commit
5d0eb6fcc6
  1. 4
      i_xsync_udp.hpp
  2. 203
      xsync.cpp
  3. 92
      xsync.hpp
  4. 4
      xsync_errcode.hpp

4
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<I_XSUDP> createXSUDP() = 0;
};
} // namespace iflytop
} // namespace xsync

203
xsync.cpp

@ -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 &regadd
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;
}

92
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<string> 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<string> 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 &regadd);
};
} // namespace iflytop
} // namespace xsync

4
xsync_errcode.hpp

@ -9,6 +9,6 @@
#include <sstream>
#include <string>
#include <vector>
namespace iflytop {
namespace xsync {
using namespace std;
} // namespace iflytop
} // namespace xsync
Loading…
Cancel
Save