Browse Source

update

xsync_v2
zhaohe 2 years ago
parent
commit
a11e18e086
  1. 101
      xsync.cpp
  2. 71
      xsync.hpp

101
xsync.cpp

@ -1,5 +1,7 @@
#include "xsync.hpp"
#include <string.h>
#include <map>
#define ENABLE_LOG
#ifdef ENABLE_LOG
@ -83,13 +85,13 @@ static map<string, TriggerSigType_t> TriggerSigType2StrMap = {
{"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},
{"OutSigType_logic0", OutSigType_logic0}, //
{"OutSigType_logic1", OutSigType_logic1}, //
{"OutSigType_test_signal", OutSigType_test_signal}, //
{"OutSigType_input_signal", OutSigType_input_signal}, //
{"OutSigType_input_signal_mirror", OutSigType_input_signal_mirror}, //
{"OutSigType_trigger_mode_signal", OutSigType_trigger_mode_signal}, //
{"OutSigType_trigger_mode_signal_mirror", OutSigType_trigger_mode_signal_mirror},
};
string TriggerSigType2Str(TriggerSigType_t type) {
@ -116,7 +118,7 @@ OutputSigType_t Str2OutputSigType(string type) {
if (it != Str2TriggerSigTypeMap.end()) {
return it->second;
}
return ot_logic0;
return OutSigType_logic0;
}
list<string> TriggerSigTypeStrSet() {
@ -137,31 +139,31 @@ list<string> OutputSigTypeStrSet() {
} // namespace ttlout_module
namespace sig_generator_module {
static map<string, ContrlMode_t> Str2ContrlModeMap = {
{"manualTrigger", kContrlMode_manualTrigger}, //
{"extTimecodeTrigger", kContrlMode_externalTimecodeTrigger},
{"ttl1Trigger", kContrlMode_externalTTL1Trigger},
{"ttl2Trigger", kContrlMode_externalTTL2Trigger},
{"ttl3Trigger", kContrlMode_externalTTL3Trigger},
{"ttl4Trigger", kContrlMode_externalTTL4Trigger},
static map<string, ControlMode_t> Str2ControlModeMap = {
{"manualTrigger", kControlMode_manualTrigger}, //
{"extTimecodeTrigger", kControlMode_externalTimecodeTrigger},
{"ttl1Trigger", kControlMode_externalTTL1Trigger},
{"ttl2Trigger", kControlMode_externalTTL2Trigger},
{"ttl3Trigger", kControlMode_externalTTL3Trigger},
{"ttl4Trigger", kControlMode_externalTTL4Trigger},
};
string ContrlMode2Str(ContrlMode_t mode) {
for (auto &item : Str2ContrlModeMap) {
string ControlMode2Str(ControlMode_t mode) {
for (auto &item : Str2ControlModeMap) {
if (item.second == mode) return item.first;
}
return "unkown";
}
ContrlMode_t Str2ContrlMode(string mode) {
auto it = Str2ContrlModeMap.find(mode);
if (it != Str2ContrlModeMap.end()) {
ControlMode_t Str2ControlMode(string mode) {
auto it = Str2ControlModeMap.find(mode);
if (it != Str2ControlModeMap.end()) {
return it->second;
}
return kContrlMode_manualTrigger;
return kControlMode_manualTrigger;
}
list<string> ContrlModeStrSet() {
list<string> ControlModeStrSet() {
list<string> ret;
for (auto &item : Str2ContrlModeMap) {
for (auto &item : Str2ControlModeMap) {
ret.push_back(item.first);
}
return ret;
@ -234,6 +236,19 @@ list<string> TimecodeFormatStrSet() {
return ret;
}
string XsyncTimecodeToStr(XsyncTimecode_t timecode) {
char buf[32] = {0};
sprintf(buf, "%02d:%02d:%02d:%02d", timecode.hour, timecode.minute, timecode.second, timecode.frame);
return string(buf);
}
XsyncTimecode_t Str2XsyncTimecode(string timecode) {
XsyncTimecode_t ret;
char buf[128] = {0};
strncpy(buf, timecode.c_str(), 127);
sscanf(buf, "%02d:%02d:%02d:%02d", &ret.hour, &ret.minute, &ret.second, &ret.frame);
return ret;
}
} // namespace xsync
static XsyncTimecode_t timecode64ToXsyncTimeCode(Timecode64_t tc64) {
@ -760,24 +775,24 @@ xs_error_code_t Xsync::TTLOutputModule_getTriggerModePulseDelay(int32_t index, u
pulse_delay_ms = readbak / 1000;
return ecode;
}
xs_error_code_t Xsync::SigGenerator_setContrlMode(sig_generator_module::ContrlMode_t mode) {
xs_error_code_t Xsync::SigGenerator_setControlMode(sig_generator_module::ControlMode_t mode) {
uint32_t readbak = 0;
return reg_write(reg::kSigGenerator_ctl, mode, readbak, 100);
return reg_write(reg::kSigGenerator_ctl, mode, readbak, 10);
}
xs_error_code_t Xsync::SigGenerator_getContrlMode(sig_generator_module::ContrlMode_t &mode) {
xs_error_code_t Xsync::SigGenerator_getControlMode(sig_generator_module::ControlMode_t &mode) {
uint32_t readbak = 0;
auto ecode = reg_read(reg::kSigGenerator_ctl, readbak, 100);
auto ecode = reg_read(reg::kSigGenerator_ctl, readbak, 10);
if (ecode != kxs_ec_success) return ecode;
mode = (sig_generator_module::ContrlMode_t)readbak;
mode = (sig_generator_module::ControlMode_t)readbak;
return ecode;
}
xs_error_code_t Xsync::SigGenerator_manualStart() {
uint32_t readbak = 0;
return reg_write(reg::kSigGenerator_control_trigger_reg, 1, readbak, 100);
return reg_write(reg::kSigGenerator_control_trigger_reg, 1, readbak, 10);
}
xs_error_code_t Xsync::SigGenerator_manualStop() {
uint32_t readbak = 0;
return reg_write(reg::kSigGenerator_control_trigger_reg, 0, readbak, 100);
return reg_write(reg::kSigGenerator_control_trigger_reg, 0, readbak, 10);
}
xs_error_code_t Xsync::SigGenerator_setTimecode(XsyncTimecode_t timecode) {
uint32_t readbak = 0;
@ -785,9 +800,9 @@ xs_error_code_t Xsync::SigGenerator_setTimecode(XsyncTimecode_t timecode) {
Timecode64_t tc64 = timecodeTo64(timecode);
ecode = reg_write(reg::kSigGenerator_timecode0, tc64.tc0, readbak, 100);
ecode = reg_write(reg::kSigGenerator_timecode0, tc64.tc0, readbak, 10);
if (ecode != kxs_ec_success) return ecode;
ecode = reg_write(reg::kSigGenerator_timecode1, tc64.tc1, readbak, 100);
ecode = reg_write(reg::kSigGenerator_timecode1, tc64.tc1, readbak, 10);
if (ecode != kxs_ec_success) return ecode;
return ecode;
@ -799,9 +814,9 @@ xs_error_code_t Xsync::SigGenerator_getTimecode(XsyncTimecode_t &timecode) {
uint32_t tc0 = 0;
uint32_t tc1 = 0;
ecode = reg_read(reg::kSigGenerator_timecode0, tc0, 100);
ecode = reg_read(reg::kSigGenerator_timecode0, tc0, 10);
if (ecode != kxs_ec_success) return ecode;
ecode = reg_read(reg::kSigGenerator_timecode1, tc1, 100);
ecode = reg_read(reg::kSigGenerator_timecode1, tc1, 10);
if (ecode != kxs_ec_success) return ecode;
Timecode64_t tc64;
@ -817,9 +832,9 @@ xs_error_code_t Xsync::SigGenerator_setAutoStartTimecode(XsyncTimecode_t timecod
Timecode64_t tc64 = timecodeTo64(timecode);
ecode = reg_write(reg::kSigGenerator_timecode_start0, tc64.tc0, readbak, 100);
ecode = reg_write(reg::kSigGenerator_timecode_start0, tc64.tc0, readbak, 10);
if (ecode != kxs_ec_success) return ecode;
ecode = reg_write(reg::kSigGenerator_timecode_start1, tc64.tc1, readbak, 100);
ecode = reg_write(reg::kSigGenerator_timecode_start1, tc64.tc1, readbak, 10);
if (ecode != kxs_ec_success) return ecode;
return ecode;
@ -831,9 +846,9 @@ xs_error_code_t Xsync::SigGenerator_getAutoStartTimecode(XsyncTimecode_t &timeco
uint32_t tc0 = 0;
uint32_t tc1 = 0;
ecode = reg_read(reg::kSigGenerator_timecode_start0, tc0, 100);
ecode = reg_read(reg::kSigGenerator_timecode_start0, tc0, 10);
if (ecode != kxs_ec_success) return ecode;
ecode = reg_read(reg::kSigGenerator_timecode_start1, tc1, 100);
ecode = reg_read(reg::kSigGenerator_timecode_start1, tc1, 10);
if (ecode != kxs_ec_success) return ecode;
Timecode64_t tc64;
@ -845,7 +860,7 @@ xs_error_code_t Xsync::SigGenerator_getAutoStartTimecode(XsyncTimecode_t &timeco
}
xs_error_code_t Xsync::SigGenerator_getWorkState(uint32_t &work_state) {
uint32_t readbak = 0;
auto ecode = reg_read(reg::kSigGenerator_work_state, readbak, 100);
auto ecode = reg_read(reg::kSigGenerator_work_state, readbak, 10);
if (ecode != kxs_ec_success) return ecode;
work_state = readbak;
return ecode;
@ -853,22 +868,22 @@ xs_error_code_t Xsync::SigGenerator_getWorkState(uint32_t &work_state) {
xs_error_code_t Xsync::SigGenerator_setGenlockFormat(GenlockFormat_t format) {
uint32_t readbak = 0;
return reg_write(reg::kSigGenerator_genlock_format, format, readbak, 100);
return reg_write(reg::kSigGenerator_genlock_format, format, readbak, 10);
}
xs_error_code_t Xsync::SigGenerator_getGenlockFormat(GenlockFormat_t &format) {
uint32_t readbak = 0;
auto ecode = reg_read(reg::kSigGenerator_genlock_format, readbak, 100);
auto ecode = reg_read(reg::kSigGenerator_genlock_format, readbak, 10);
if (ecode != kxs_ec_success) return ecode;
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, 100);
return reg_write(reg::kSigGenerator_timecode_format, format, readbak, 10);
}
xs_error_code_t Xsync::SigGenerator_getTimecodeFormat(TimecodeFormat_t &format) {
uint32_t readbak = 0;
auto ecode = reg_read(reg::kSigGenerator_timecode_format, readbak, 100);
auto ecode = reg_read(reg::kSigGenerator_timecode_format, readbak, 10);
if (ecode != kxs_ec_success) return ecode;
format = (TimecodeFormat_t)readbak;
return ecode;

71
xsync.hpp

@ -46,6 +46,13 @@ typedef enum {
GENLOCK_FPS6000 = 8,
} GenlockFormat_t;
string GenlockFormatToStr(GenlockFormat_t fomrat);
string TimecodeFormatToStr(TimecodeFormat_t fomrat);
GenlockFormat_t Str2GenlockFormat(string format);
TimecodeFormat_t Str2TimecodeFormat(string format);
list<string> GenlockFormatStrSet();
list<string> TimecodeFormatStrSet();
typedef struct {
uint8_t hour;
uint8_t minute;
@ -53,6 +60,9 @@ typedef struct {
uint8_t frame;
} XsyncTimecode_t;
string XsyncTimecodeToStr(XsyncTimecode_t timecode);
XsyncTimecode_t Str2XsyncTimecode(string timecode);
typedef struct {
uint32_t tc0;
uint32_t tc1;
@ -95,13 +105,13 @@ TriggerSigType_t Str2TriggerSigType(string type);
list<string> TriggerSigTypeStrSet();
typedef enum {
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, // 触发模式下的触发信号翻转
OutSigType_logic0 = 0, // 0
OutSigType_logic1 = 1, // 1
OutSigType_test_signal = 2, // 测试信号,信号为ID*1000HZ方波信号
OutSigType_input_signal = 3, // 输入信号
OutSigType_input_signal_mirror = 4, // 翻转后的输入信号
OutSigType_trigger_mode_signal = 5, // 触发模式下的触发信号
OutSigType_trigger_mode_signal_mirror = 6, // 触发模式下的触发信号翻转
} OutputSigType_t;
string OutputSigType2Str(OutputSigType_t type);
@ -116,17 +126,17 @@ list<string> OutputSigTypeStrSet();
namespace sig_generator_module {
typedef enum {
kContrlMode_manualTrigger, // 0.手动,启动停止
kContrlMode_externalTimecodeTrigger, // 1.外部TIMECODE触发启动
kContrlMode_externalTTL1Trigger, // 2.外部TTL输入1_高电平触发,低电平停止
kContrlMode_externalTTL2Trigger, // 3.外部TTL输入2_高电平触发,低电平停止
kContrlMode_externalTTL3Trigger, // 4.外部TTL输入3_高电平触发,低电平停止
kContrlMode_externalTTL4Trigger, // 5.外部TTL输入4_高电平触发,低电平停止
} ContrlMode_t;
string ContrlMode2Str(ContrlMode_t mode);
ContrlMode_t Str2ContrlMode(string mode);
list<string> ContrlModeStrSet();
kControlMode_manualTrigger, // 0.手动,启动停止
kControlMode_externalTimecodeTrigger, // 1.外部TIMECODE触发启动
kControlMode_externalTTL1Trigger, // 2.外部TTL输入1_高电平触发,低电平停止
kControlMode_externalTTL2Trigger, // 3.外部TTL输入2_高电平触发,低电平停止
kControlMode_externalTTL3Trigger, // 4.外部TTL输入3_高电平触发,低电平停止
kControlMode_externalTTL4Trigger, // 5.外部TTL输入4_高电平触发,低电平停止
} ControlMode_t;
string ControlMode2Str(ControlMode_t mode);
ControlMode_t Str2ControlMode(string mode);
list<string> ControlModeStrSet();
} // namespace sig_generator_module
@ -213,14 +223,14 @@ class Xsync {
* @param mode
* @return xs_error_code_t
*/
xs_error_code_t SigGenerator_setContrlMode(sig_generator_module::ContrlMode_t mode);
xs_error_code_t SigGenerator_setControlMode(sig_generator_module::ControlMode_t mode);
/**
* @brief
*
* @param mode
* @return xs_error_code_t
*/
xs_error_code_t SigGenerator_getContrlMode(sig_generator_module::ContrlMode_t &mode);
xs_error_code_t SigGenerator_getControlMode(sig_generator_module::ControlMode_t &mode);
/**
* @brief
@ -272,11 +282,22 @@ class Xsync {
*/
xs_error_code_t SigGenerator_getWorkState(uint32_t &work_state);
private:
xs_error_code_t SigGenerator_setGenlockFormat(GenlockFormat_t format); // 不要使用这个方法,用Basic_setGenlockFormat
xs_error_code_t SigGenerator_getGenlockFormat(GenlockFormat_t &format); // 不要使用这个方法,用Basic_getGenlockFormat
xs_error_code_t SigGenerator_setTimecodeFormat(TimecodeFormat_t format); // 不要使用这个方法,用Basic_setTimecodeFormat
xs_error_code_t SigGenerator_getTimecodeFormat(TimecodeFormat_t &format); // 不要使用这个方法,用Basic_getTimecodeFormat
/**
* @brief genlock格式
*
* @param format
* @return xs_error_code_t
*/
xs_error_code_t SigGenerator_setGenlockFormat(GenlockFormat_t format); // 不建议使用这个方法,用Basic_setGenlockFormat
xs_error_code_t SigGenerator_getGenlockFormat(GenlockFormat_t &format); // 不建议使用这个方法,用Basic_getGenlockFormat
/**
* @brief timecode格式
*
* @param format
* @return xs_error_code_t
*/
xs_error_code_t SigGenerator_setTimecodeFormat(TimecodeFormat_t format); // 不建议使用这个方法,用Basic_setTimecodeFormat
xs_error_code_t SigGenerator_getTimecodeFormat(TimecodeFormat_t &format); // 不建议使用这个方法,用Basic_getTimecodeFormat
public:
/*******************************************************************************
* TTL输出模块控制 *

Loading…
Cancel
Save