Browse Source

update

master
zhaohe 1 year ago
parent
commit
0afab0a1fa
  1. 64
      include/ixsync.hpp
  2. 8
      include/xsync_regs.hpp
  3. 7
      include/xsync_v2_sig_type.hpp
  4. 289
      src/xsync_v2.cpp
  5. 37
      src/xsync_v2_sig_type.cpp

64
include/ixsync.hpp

@ -298,12 +298,14 @@ class IXsync {
virtual xs_error_code_t RecordSigGenerator_getExternalTTLTriggerSrc(InputInterface_t &ttlPortNum) = 0;
virtual xs_error_code_t RecordSigGenerator_setExternalTTLTriggerPolarity(uint32_t polarity) = 0;
virtual xs_error_code_t RecordSigGenerator_getExternalTTLTriggerPolarity(uint32_t &polarity) = 0;
virtual xs_error_code_t RecordSigGenerator_setRecordExposureTime(uint32_t us) = 0;
virtual xs_error_code_t RecordSigGenerator_getRecordExposureTime(uint32_t &us) = 0;
virtual xs_error_code_t RecordSigGenerator_setRecordExposureOffsetTime(uint32_t us) = 0;
virtual xs_error_code_t RecordSigGenerator_getRecordExposureOffsetTime(uint32_t &us) = 0;
virtual xs_error_code_t RecordSigGenerator_getRecordState(uint32_t &state) = 0;
virtual xs_error_code_t RecordSigGenerator_readTimecodeSnapshot(XsyncTimecode_t &timecode) = 0;
// virtual xs_error_code_t RecordSigGenerator_setRecordExposureTime(uint32_t us) = 0;
// virtual xs_error_code_t RecordSigGenerator_getRecordExposureTime(uint32_t &us) = 0;
// virtual xs_error_code_t RecordSigGenerator_setRecordExposureOffsetTime(uint32_t us) = 0;
// virtual xs_error_code_t RecordSigGenerator_getRecordExposureOffsetTime(uint32_t &us) = 0;
virtual xs_error_code_t RecordSigGenerator_getRecordState(uint32_t &state) = 0;
virtual xs_error_code_t RecordSigGenerator_readTimecodeSnapshot(XsyncTimecode_t &timecode) = 0;
/***********************************************************************************************
* *
@ -335,41 +337,21 @@ class IXsync {
*
*/
virtual xs_error_code_t TTLOutputModule1_setSrcSigType(SignalType_t source) = 0;
virtual xs_error_code_t TTLOutputModule1_getSrcSigType(SignalType_t &source) = 0;
virtual xs_error_code_t TTLOutputModule1_setFreqDivision(uint32_t div) = 0;
virtual xs_error_code_t TTLOutputModule1_getFreqDivision(uint32_t &div) = 0;
virtual xs_error_code_t TTLOutputModule1_setFreqMultiplication(uint32_t multi) = 0;
virtual xs_error_code_t TTLOutputModule1_getFreqMultiplication(uint32_t &multi) = 0;
virtual xs_error_code_t TTLOutputModule1_readInFreq(float &freq) = 0;
virtual xs_error_code_t TTLOutputModule1_readOutFreq(float &freq) = 0;
virtual xs_error_code_t TTLOutputModule2_setSrcSigType(SignalType_t source) = 0;
virtual xs_error_code_t TTLOutputModule2_getSrcSigType(SignalType_t &source) = 0;
virtual xs_error_code_t TTLOutputModule2_setFreqDivision(uint32_t div) = 0;
virtual xs_error_code_t TTLOutputModule2_getFreqDivision(uint32_t &div) = 0;
virtual xs_error_code_t TTLOutputModule2_setFreqMultiplication(uint32_t multi) = 0;
virtual xs_error_code_t TTLOutputModule2_getFreqMultiplication(uint32_t &multi) = 0;
virtual xs_error_code_t TTLOutputModule2_readInFreq(float &freq) = 0;
virtual xs_error_code_t TTLOutputModule2_readOutFreq(float &freq) = 0;
virtual xs_error_code_t TTLOutputModule3_setSrcSigType(SignalType_t source) = 0;
virtual xs_error_code_t TTLOutputModule3_getSrcSigType(SignalType_t &source) = 0;
virtual xs_error_code_t TTLOutputModule3_setFreqDivision(uint32_t div) = 0;
virtual xs_error_code_t TTLOutputModule3_getFreqDivision(uint32_t &div) = 0;
virtual xs_error_code_t TTLOutputModule3_setFreqMultiplication(uint32_t multi) = 0;
virtual xs_error_code_t TTLOutputModule3_getFreqMultiplication(uint32_t &multi) = 0;
virtual xs_error_code_t TTLOutputModule3_readInFreq(float &freq) = 0;
virtual xs_error_code_t TTLOutputModule3_readOutFreq(float &freq) = 0;
virtual xs_error_code_t TTLOutputModule4_setSrcSigType(SignalType_t source) = 0;
virtual xs_error_code_t TTLOutputModule4_getSrcSigType(SignalType_t &source) = 0;
virtual xs_error_code_t TTLOutputModule4_setFreqDivision(uint32_t div) = 0;
virtual xs_error_code_t TTLOutputModule4_getFreqDivision(uint32_t &div) = 0;
virtual xs_error_code_t TTLOutputModule4_setFreqMultiplication(uint32_t multi) = 0;
virtual xs_error_code_t TTLOutputModule4_getFreqMultiplication(uint32_t &multi) = 0;
virtual xs_error_code_t TTLOutputModule4_readInFreq(float &freq) = 0;
virtual xs_error_code_t TTLOutputModule4_readOutFreq(float &freq) = 0;
virtual xs_error_code_t TTLOutputModule_setSrcSigType(int index, SignalType_t source) = 0;
virtual xs_error_code_t TTLOutputModule_getSrcSigType(int index, SignalType_t &source) = 0;
virtual xs_error_code_t TTLOutputModule_setFreqDivision(int index, uint32_t div) = 0;
virtual xs_error_code_t TTLOutputModule_getFreqDivision(int index, uint32_t &div) = 0;
virtual xs_error_code_t TTLOutputModule_setFreqMultiplication(int index, uint32_t multi) = 0;
virtual xs_error_code_t TTLOutputModule_getFreqMultiplication(int index, uint32_t &multi) = 0;
virtual xs_error_code_t TTLOutputModule_readOutFreq(int index, float &freq) = 0;
virtual xs_error_code_t TTLOutputModule_setPolarity(int index, uint32_t polarity) = 0;
virtual xs_error_code_t TTLOutputModule_getPolarity(int index, uint32_t &polarity) = 0;
virtual xs_error_code_t TTLOutputModule_setTriggerEdge(int index, TriggerEdge_t edge) = 0;
virtual xs_error_code_t TTLOutputModule_getTriggerEdge(int index, TriggerEdge_t &edge) = 0;
virtual xs_error_code_t TTLOutputModule_setPluseWidth(int index, uint32_t us) = 0;
virtual xs_error_code_t TTLOutputModule_getPluseWidth(int index, uint32_t &us) = 0;
virtual xs_error_code_t TTLOutputModule_setOffsetTime(int index, uint32_t us) = 0;
virtual xs_error_code_t TTLOutputModule_getOffsetTime(int index, uint32_t &us) = 0;
/*******************************************************************************
* *

8
include/xsync_regs.hpp

@ -117,6 +117,8 @@ typedef enum {
kreg_ttlout1_forward_mode_polarity_ctrl = REGADDOFF__TTLOUT1 + 7,
kreg_ttlout1_placeholder0 = REGADDOFF__TTLOUT1 + 8,
kreg_ttlout1_freq_detect_bias = REGADDOFF__TTLOUT1 + 9,
kreg_ttlout1_pluse_width_ctrl = REGADDOFF__TTLOUT1 + 10,
kreg_ttlout1_pluse_offset_ctrl = REGADDOFF__TTLOUT1 + 11,
kreg_ttlout1_sig_in_freq_detect = REGADDOFF__TTLOUT1 + 0xE,
kreg_ttlout1_sig_out_freq_detect = REGADDOFF__TTLOUT1 + 0xF,
@ -130,6 +132,8 @@ typedef enum {
kreg_ttlout2_forward_mode_polarity_ctrl = REGADDOFF__TTLOUT2 + 7,
kreg_ttlout2_placeholder0 = REGADDOFF__TTLOUT2 + 8,
kreg_ttlout2_freq_detect_bias = REGADDOFF__TTLOUT2 + 9,
kreg_ttlout2_pluse_width_ctrl = REGADDOFF__TTLOUT2 + 10,
kreg_ttlout2_pluse_offset_ctrl = REGADDOFF__TTLOUT2 + 11,
kreg_ttlout2_sig_in_freq_detect = REGADDOFF__TTLOUT2 + 0xE,
kreg_ttlout2_sig_out_freq_detect = REGADDOFF__TTLOUT2 + 0xF,
@ -143,6 +147,8 @@ typedef enum {
kreg_ttlout3_forward_mode_polarity_ctrl = REGADDOFF__TTLOUT3 + 7,
kreg_ttlout3_placeholder0 = REGADDOFF__TTLOUT3 + 8,
kreg_ttlout3_freq_detect_bias = REGADDOFF__TTLOUT3 + 9,
kreg_ttlout3_pluse_width_ctrl = REGADDOFF__TTLOUT3 + 10,
kreg_ttlout3_pluse_offset_ctrl = REGADDOFF__TTLOUT3 + 11,
kreg_ttlout3_sig_in_freq_detect = REGADDOFF__TTLOUT3 + 0xE,
kreg_ttlout3_sig_out_freq_detect = REGADDOFF__TTLOUT3 + 0xF,
@ -156,6 +162,8 @@ typedef enum {
kreg_ttlout4_forward_mode_polarity_ctrl = REGADDOFF__TTLOUT4 + 7,
kreg_ttlout4_placeholder0 = REGADDOFF__TTLOUT4 + 8,
kreg_ttlout4_freq_detect_bias = REGADDOFF__TTLOUT4 + 9,
kreg_ttlout4_pluse_width_ctrl = REGADDOFF__TTLOUT4 + 10,
kreg_ttlout4_pluse_offset_ctrl = REGADDOFF__TTLOUT4 + 11,
kreg_ttlout4_sig_in_freq_detect = REGADDOFF__TTLOUT4 + 0xE,
kreg_ttlout4_sig_out_freq_detect = REGADDOFF__TTLOUT4 + 0xF,

7
include/xsync_v2_sig_type.hpp

@ -119,8 +119,11 @@ typedef enum {
/*******************************************************************************
* *
*******************************************************************************/
SIGNAL_BUSINESS_RECORD_SIG = 14, // 录像机触发信号
SIGNAL_BUSINESS_RECORD_EXPOSURE_SIG = 15, // 曝光触发信号
SIGNAL_BUSINESS_RECORD_SIG = 14, // 录像机触发信号-电平信号
SIGNAL_BUSINESS_RECORD_EXPOSURE_SIG = 15, // 曝光触发信号
SIGNAL_BUSINESS_RECORD_EN_RSING_EDGE = 16, // 录像机触发信号-上升沿信号
SIGNAL_BUSINESS_RECORD_EN_FALLING_EDGE = 17, // 录像机触发信号-下降沿信号
SIGNAL_BUSINESS_RECORD_EN_EDGE = 18, // 录像机触发信号-双边沿信号
} SignalType_t;

289
src/xsync_v2.cpp

@ -407,10 +407,6 @@ class Xsync : public IXsync {
virtual xs_error_code_t RecordSigGenerator_getExternalTTLTriggerSrc(InputInterface_t &ttlPortNum) override;
virtual xs_error_code_t RecordSigGenerator_setExternalTTLTriggerPolarity(uint32_t polarity) override;
virtual xs_error_code_t RecordSigGenerator_getExternalTTLTriggerPolarity(uint32_t &polarity) override;
virtual xs_error_code_t RecordSigGenerator_setRecordExposureTime(uint32_t us) override;
virtual xs_error_code_t RecordSigGenerator_getRecordExposureTime(uint32_t &us) override;
virtual xs_error_code_t RecordSigGenerator_setRecordExposureOffsetTime(uint32_t us) override;
virtual xs_error_code_t RecordSigGenerator_getRecordExposureOffsetTime(uint32_t &us) override;
virtual xs_error_code_t RecordSigGenerator_getRecordState(uint32_t &state) override;
virtual xs_error_code_t RecordSigGenerator_readTimecodeSnapshot(XsyncTimecode_t &timecode) override;
@ -419,41 +415,77 @@ class Xsync : public IXsync {
xs_error_code_t TimecodeOutputModule_setHeadphoneOutputLevel(int level); // 0:line,1:mi overridec
xs_error_code_t TimecodeOutputModule_getHeadphoneOutputLevel(int &level);
virtual xs_error_code_t TTLOutputModule1_setSrcSigType(SignalType_t source) override;
virtual xs_error_code_t TTLOutputModule1_getSrcSigType(SignalType_t &source) override;
virtual xs_error_code_t TTLOutputModule1_setFreqDivision(uint32_t div) override;
virtual xs_error_code_t TTLOutputModule1_getFreqDivision(uint32_t &div) override;
virtual xs_error_code_t TTLOutputModule1_setFreqMultiplication(uint32_t multi) override;
virtual xs_error_code_t TTLOutputModule1_getFreqMultiplication(uint32_t &multi) override;
virtual xs_error_code_t TTLOutputModule1_readInFreq(float &freq) override;
virtual xs_error_code_t TTLOutputModule1_readOutFreq(float &freq) override;
virtual xs_error_code_t TTLOutputModule2_setSrcSigType(SignalType_t source) override;
virtual xs_error_code_t TTLOutputModule2_getSrcSigType(SignalType_t &source) override;
virtual xs_error_code_t TTLOutputModule2_setFreqDivision(uint32_t div) override;
virtual xs_error_code_t TTLOutputModule2_getFreqDivision(uint32_t &div) override;
virtual xs_error_code_t TTLOutputModule2_setFreqMultiplication(uint32_t multi) override;
virtual xs_error_code_t TTLOutputModule2_getFreqMultiplication(uint32_t &multi) override;
virtual xs_error_code_t TTLOutputModule2_readInFreq(float &freq) override;
virtual xs_error_code_t TTLOutputModule2_readOutFreq(float &freq) override;
virtual xs_error_code_t TTLOutputModule3_setSrcSigType(SignalType_t source) override;
virtual xs_error_code_t TTLOutputModule3_getSrcSigType(SignalType_t &source) override;
virtual xs_error_code_t TTLOutputModule3_setFreqDivision(uint32_t div) override;
virtual xs_error_code_t TTLOutputModule3_getFreqDivision(uint32_t &div) override;
virtual xs_error_code_t TTLOutputModule3_setFreqMultiplication(uint32_t multi) override;
virtual xs_error_code_t TTLOutputModule3_getFreqMultiplication(uint32_t &multi) override;
virtual xs_error_code_t TTLOutputModule3_readInFreq(float &freq) override;
virtual xs_error_code_t TTLOutputModule3_readOutFreq(float &freq) override;
virtual xs_error_code_t TTLOutputModule4_setSrcSigType(SignalType_t source) override;
virtual xs_error_code_t TTLOutputModule4_getSrcSigType(SignalType_t &source) override;
virtual xs_error_code_t TTLOutputModule4_setFreqDivision(uint32_t div) override;
virtual xs_error_code_t TTLOutputModule4_getFreqDivision(uint32_t &div) override;
virtual xs_error_code_t TTLOutputModule4_setFreqMultiplication(uint32_t multi) override;
virtual xs_error_code_t TTLOutputModule4_getFreqMultiplication(uint32_t &multi) override;
virtual xs_error_code_t TTLOutputModule4_readInFreq(float &freq) override;
virtual xs_error_code_t TTLOutputModule4_readOutFreq(float &freq) override;
virtual xs_error_code_t TTLOutputModule_setSrcSigType(int index, SignalType_t source) {
if (index < 1 || index > 4) return kxs_ec_param_error;
if (source == SIGNAL_LOGIC0 || //
source == SIGNAL_LOGIC1 || //
source == SIGNAL_BUSINESS_RECORD_SIG) {
DO_XSYNC(reg_write(reg::kreg_ttlout1_signal_process_mode, 3, 10)); // 转发模式
} else {
DO_XSYNC(reg_write(reg::kreg_ttlout1_signal_process_mode, 2, 10)); // 分频倍频模式
}
REG_WRITE(reg::kreg_ttlout1_input_signal_select + (index - 1) * 16, source);
return kxs_ec_success;
}
virtual xs_error_code_t TTLOutputModule_getSrcSigType(int index, SignalType_t &source) {
if (index < 1 || index > 4) return kxs_ec_param_error;
uint32_t source_u32;
DO_XSYNC(reg_read(reg::kreg_ttlout1_input_signal_select + (index - 1) * 16, source_u32, 10));
source = (SignalType_t)source_u32;
}
virtual xs_error_code_t TTLOutputModule_setFreqDivision(int index, uint32_t div) {
if (index < 1 || index > 4) return kxs_ec_param_error;
REG_WRITE(reg::kreg_ttlout1_pllout_freq_division_ctrl + (index - 1) * 16, div);
}
virtual xs_error_code_t TTLOutputModule_getFreqDivision(int index, uint32_t &div) {
if (index < 1 || index > 4) return kxs_ec_param_error;
REG_READ(reg::kreg_ttlout1_pllout_freq_division_ctrl + (index - 1) * 16, div);
}
virtual xs_error_code_t TTLOutputModule_setFreqMultiplication(int index, uint32_t multi) {
if (index < 1 || index > 4) return kxs_ec_param_error;
REG_WRITE(reg::kreg_ttlout1_pllout_freq_multiplication_ctrl + (index - 1) * 16, multi);
}
virtual xs_error_code_t TTLOutputModule_getFreqMultiplication(int index, uint32_t &multi) {
if (index < 1 || index > 4) return kxs_ec_param_error;
REG_READ(reg::kreg_ttlout1_pllout_freq_multiplication_ctrl + (index - 1) * 16, multi);
}
virtual xs_error_code_t TTLOutputModule_readOutFreq(int index, float &freq) {
if (index < 1 || index > 4) return kxs_ec_param_error;
return readfreq(reg::kreg_ttlout1_sig_out_freq_detect + (index - 1) * 16, freq);
}
virtual xs_error_code_t TTLOutputModule_setPolarity(int index, uint32_t polarity) {
if (index < 1 || index > 4) return kxs_ec_param_error;
REG_WRITE(reg::kreg_ttlout1_pllout_polarity_ctrl + (index - 1) * 16, polarity);
}
virtual xs_error_code_t TTLOutputModule_getPolarity(int index, uint32_t &polarity) {
if (index < 1 || index > 4) return kxs_ec_param_error;
REG_READ(reg::kreg_ttlout1_pllout_polarity_ctrl + (index - 1) * 16, polarity);
}
virtual xs_error_code_t TTLOutputModule_setTriggerEdge(int index, TriggerEdge_t edge) {
if (index < 1 || index > 4) return kxs_ec_param_error;
REG_WRITE(reg::kreg_ttlout1_pllout_trigger_edge_select + (index - 1) * 16, edge);
}
virtual xs_error_code_t TTLOutputModule_getTriggerEdge(int index, TriggerEdge_t &edge) {
if (index < 1 || index > 4) return kxs_ec_param_error;
REG_READ(reg::kreg_ttlout1_pllout_trigger_edge_select + (index - 1) * 16, edge);
}
virtual xs_error_code_t TTLOutputModule_setPluseWidth(int index, uint32_t us) {
if (index < 1 || index > 4) return kxs_ec_param_error;
REG_WRITE(reg::kreg_ttlout1_pluse_width_ctrl + (index - 1) * 16, us);
}
virtual xs_error_code_t TTLOutputModule_getPluseWidth(int index, uint32_t &us) {
if (index < 1 || index > 4) return kxs_ec_param_error;
REG_READ(reg::kreg_ttlout1_pluse_width_ctrl + (index - 1) * 16, us);
}
virtual xs_error_code_t TTLOutputModule_setOffsetTime(int index, uint32_t us) {
if (index < 1 || index > 4) return kxs_ec_param_error;
REG_WRITE(reg::kreg_ttlout1_pluse_offset_ctrl + (index - 1) * 16, us);
}
virtual xs_error_code_t TTLOutputModule_getOffsetTime(int index, uint32_t &us) {
if (index < 1 || index > 4) return kxs_ec_param_error;
REG_READ(reg::kreg_ttlout1_pluse_offset_ctrl + (index - 1) * 16, us);
}
virtual xs_error_code_t Utils_readSigFreq(SignalType_t sig, float &freq) override {
if (sig == SIGNAL_LOGIC0) {
@ -808,157 +840,6 @@ xs_error_code_t Xsync::TTLInputModule3_detectFreq(float &freq) { return readfreq
xs_error_code_t Xsync::TTLInputModule4_detectFreq(float &freq) { return readfreq(reg::k_ttlin4_freq_detector_reg, freq); }
/*******************************************************************************
* TTLOutputModule *
*******************************************************************************/
// 0:固定输出低电平,1:固定输出高电平,2:分频倍频模式,3:转发模式,4:测试模式
xs_error_code_t Xsync::TTLOutputModule1_setSrcSigType(SignalType_t source) {
if (source != SIGNAL_LOGIC0 && //
source != SIGNAL_LOGIC1 && //
source != SIGNAL_TTLIN1 && //
source != SIGNAL_TTLIN2 && //
source != SIGNAL_TTLIN3 && //
source != SIGNAL_TTLIN4 && //
source != SIGNAL_SYS_CLK_OUTPUT && //
source != SIGNAL_SYS_GENLOCK_OUTPUT && //
source != SIGNAL_SYS_TIMECODE_FREQ_OUTPUT && //
source != SIGNAL_BUSINESS_RECORD_SIG && //
source != SIGNAL_BUSINESS_RECORD_EXPOSURE_SIG //
) {
return kxs_ec_param_error;
}
if (source == SIGNAL_TTLIN1 || //
source == SIGNAL_TTLIN2 || //
source == SIGNAL_TTLIN3 || //
source == SIGNAL_TTLIN4 || //
source == SIGNAL_SYS_CLK_OUTPUT || //
source == SIGNAL_SYS_GENLOCK_OUTPUT || //
source == SIGNAL_SYS_TIMECODE_FREQ_OUTPUT //
) {
DO_XSYNC(reg_write(reg::kreg_ttlout1_signal_process_mode, 2, 10)); // 分频倍频模式
} else {
DO_XSYNC(reg_write(reg::kreg_ttlout1_signal_process_mode, 3, 10)); // 转发模式
}
REG_WRITE(reg::kreg_ttlout1_input_signal_select, source);
}
xs_error_code_t Xsync::TTLOutputModule2_setSrcSigType(SignalType_t source) {
if (source != SIGNAL_LOGIC0 && //
source != SIGNAL_LOGIC1 && //
source != SIGNAL_TTLIN1 && //
source != SIGNAL_TTLIN2 && //
source != SIGNAL_TTLIN3 && //
source != SIGNAL_TTLIN4 && //
source != SIGNAL_SYS_CLK_OUTPUT && //
source != SIGNAL_SYS_GENLOCK_OUTPUT && //
source != SIGNAL_SYS_TIMECODE_FREQ_OUTPUT && //
source != SIGNAL_BUSINESS_RECORD_SIG && //
source != SIGNAL_BUSINESS_RECORD_EXPOSURE_SIG //
) {
return kxs_ec_param_error;
}
if (source == SIGNAL_TTLIN1 || //
source == SIGNAL_TTLIN2 || //
source == SIGNAL_TTLIN3 || //
source == SIGNAL_TTLIN4 || //
source == SIGNAL_SYS_CLK_OUTPUT || //
source == SIGNAL_SYS_GENLOCK_OUTPUT || //
source == SIGNAL_SYS_TIMECODE_FREQ_OUTPUT //
) {
DO_XSYNC(reg_write(reg::kreg_ttlout2_signal_process_mode, 2, 10)); // 分频倍频模式
} else {
DO_XSYNC(reg_write(reg::kreg_ttlout2_signal_process_mode, 3, 10)); // 转发模式
}
REG_WRITE(reg::kreg_ttlout2_input_signal_select, source);
}
xs_error_code_t Xsync::TTLOutputModule3_setSrcSigType(SignalType_t source) {
if (source != SIGNAL_LOGIC0 && //
source != SIGNAL_LOGIC1 && //
source != SIGNAL_TTLIN1 && //
source != SIGNAL_TTLIN2 && //
source != SIGNAL_TTLIN3 && //
source != SIGNAL_TTLIN4 && //
source != SIGNAL_SYS_CLK_OUTPUT && //
source != SIGNAL_SYS_GENLOCK_OUTPUT && //
source != SIGNAL_SYS_TIMECODE_FREQ_OUTPUT && //
source != SIGNAL_BUSINESS_RECORD_SIG && //
source != SIGNAL_BUSINESS_RECORD_EXPOSURE_SIG //
) {
return kxs_ec_param_error;
}
if (source == SIGNAL_TTLIN1 || //
source == SIGNAL_TTLIN2 || //
source == SIGNAL_TTLIN3 || //
source == SIGNAL_TTLIN4 || //
source == SIGNAL_SYS_CLK_OUTPUT || //
source == SIGNAL_SYS_GENLOCK_OUTPUT || //
source == SIGNAL_SYS_TIMECODE_FREQ_OUTPUT //
) {
DO_XSYNC(reg_write(reg::kreg_ttlout3_signal_process_mode, 2, 10)); // 分频倍频模式
} else {
DO_XSYNC(reg_write(reg::kreg_ttlout3_signal_process_mode, 3, 10)); // 转发模式
}
REG_WRITE(reg::kreg_ttlout3_input_signal_select, source);
}
xs_error_code_t Xsync::TTLOutputModule4_setSrcSigType(SignalType_t source) {
if (source != SIGNAL_LOGIC0 && //
source != SIGNAL_LOGIC1 && //
source != SIGNAL_TTLIN1 && //
source != SIGNAL_TTLIN2 && //
source != SIGNAL_TTLIN3 && //
source != SIGNAL_TTLIN4 && //
source != SIGNAL_SYS_CLK_OUTPUT && //
source != SIGNAL_SYS_GENLOCK_OUTPUT && //
source != SIGNAL_SYS_TIMECODE_FREQ_OUTPUT && //
source != SIGNAL_BUSINESS_RECORD_SIG && //
source != SIGNAL_BUSINESS_RECORD_EXPOSURE_SIG //
) {
return kxs_ec_param_error;
}
if (source == SIGNAL_TTLIN1 || source == SIGNAL_TTLIN2 || source == SIGNAL_TTLIN3 || source == SIGNAL_TTLIN4) {
DO_XSYNC(reg_write(reg::kreg_ttlout4_signal_process_mode, 2, 10)); // 分频倍频模式
} else {
DO_XSYNC(reg_write(reg::kreg_ttlout4_signal_process_mode, 3, 10)); // 转发模式
}
REG_WRITE(reg::kreg_ttlout4_input_signal_select, source);
}
xs_error_code_t Xsync::TTLOutputModule1_getSrcSigType(SignalType_t &source) { REG_READ(reg::kreg_ttlout1_input_signal_select, source); }
xs_error_code_t Xsync::TTLOutputModule2_getSrcSigType(SignalType_t &source) { REG_READ(reg::kreg_ttlout2_input_signal_select, source); }
xs_error_code_t Xsync::TTLOutputModule3_getSrcSigType(SignalType_t &source) { REG_READ(reg::kreg_ttlout3_input_signal_select, source); }
xs_error_code_t Xsync::TTLOutputModule4_getSrcSigType(SignalType_t &source) { REG_READ(reg::kreg_ttlout4_input_signal_select, source); }
xs_error_code_t Xsync::TTLOutputModule1_setFreqDivision(uint32_t div) { REG_WRITE(reg::kreg_ttlout1_pllout_freq_division_ctrl, div); }
xs_error_code_t Xsync::TTLOutputModule2_setFreqDivision(uint32_t div) { REG_WRITE(reg::kreg_ttlout2_pllout_freq_division_ctrl, div); }
xs_error_code_t Xsync::TTLOutputModule3_setFreqDivision(uint32_t div) { REG_WRITE(reg::kreg_ttlout3_pllout_freq_division_ctrl, div); }
xs_error_code_t Xsync::TTLOutputModule4_setFreqDivision(uint32_t div) { REG_WRITE(reg::kreg_ttlout4_pllout_freq_division_ctrl, div); }
xs_error_code_t Xsync::TTLOutputModule1_getFreqDivision(uint32_t &div) { REG_READ(reg::kreg_ttlout1_pllout_freq_division_ctrl, div); }
xs_error_code_t Xsync::TTLOutputModule2_getFreqDivision(uint32_t &div) { REG_READ(reg::kreg_ttlout2_pllout_freq_division_ctrl, div); }
xs_error_code_t Xsync::TTLOutputModule3_getFreqDivision(uint32_t &div) { REG_READ(reg::kreg_ttlout3_pllout_freq_division_ctrl, div); }
xs_error_code_t Xsync::TTLOutputModule4_getFreqDivision(uint32_t &div) { REG_READ(reg::kreg_ttlout4_pllout_freq_division_ctrl, div); }
xs_error_code_t Xsync::TTLOutputModule1_setFreqMultiplication(uint32_t multi) { REG_WRITE(reg::kreg_ttlout1_pllout_freq_multiplication_ctrl, multi); }
xs_error_code_t Xsync::TTLOutputModule2_setFreqMultiplication(uint32_t multi) { REG_WRITE(reg::kreg_ttlout2_pllout_freq_multiplication_ctrl, multi); }
xs_error_code_t Xsync::TTLOutputModule3_setFreqMultiplication(uint32_t multi) { REG_WRITE(reg::kreg_ttlout3_pllout_freq_multiplication_ctrl, multi); }
xs_error_code_t Xsync::TTLOutputModule4_setFreqMultiplication(uint32_t multi) { REG_WRITE(reg::kreg_ttlout4_pllout_freq_multiplication_ctrl, multi); }
xs_error_code_t Xsync::TTLOutputModule1_getFreqMultiplication(uint32_t &multi) { REG_READ(reg::kreg_ttlout1_pllout_freq_multiplication_ctrl, multi); }
xs_error_code_t Xsync::TTLOutputModule2_getFreqMultiplication(uint32_t &multi) { REG_READ(reg::kreg_ttlout2_pllout_freq_multiplication_ctrl, multi); }
xs_error_code_t Xsync::TTLOutputModule3_getFreqMultiplication(uint32_t &multi) { REG_READ(reg::kreg_ttlout3_pllout_freq_multiplication_ctrl, multi); }
xs_error_code_t Xsync::TTLOutputModule4_getFreqMultiplication(uint32_t &multi) { REG_READ(reg::kreg_ttlout4_pllout_freq_multiplication_ctrl, multi); }
xs_error_code_t Xsync::TTLOutputModule1_readInFreq(float &freq) { return readfreq(reg::kreg_ttlout1_sig_in_freq_detect, freq); }
xs_error_code_t Xsync::TTLOutputModule2_readInFreq(float &freq) { return readfreq(reg::kreg_ttlout2_sig_in_freq_detect, freq); }
xs_error_code_t Xsync::TTLOutputModule3_readInFreq(float &freq) { return readfreq(reg::kreg_ttlout3_sig_in_freq_detect, freq); }
xs_error_code_t Xsync::TTLOutputModule4_readInFreq(float &freq) { return readfreq(reg::kreg_ttlout4_sig_in_freq_detect, freq); }
xs_error_code_t Xsync::TTLOutputModule1_readOutFreq(float &freq) { return readfreq(reg::kreg_ttlout1_sig_out_freq_detect, freq); }
xs_error_code_t Xsync::TTLOutputModule2_readOutFreq(float &freq) { return readfreq(reg::kreg_ttlout2_sig_out_freq_detect, freq); }
xs_error_code_t Xsync::TTLOutputModule3_readOutFreq(float &freq) { return readfreq(reg::kreg_ttlout3_sig_out_freq_detect, freq); }
xs_error_code_t Xsync::TTLOutputModule4_readOutFreq(float &freq) { return readfreq(reg::kreg_ttlout4_sig_out_freq_detect, freq); }
/*******************************************************************************
* TimecodeInputModule *
*******************************************************************************/
#if 0
@ -1103,20 +984,20 @@ xs_error_code_t Xsync::RecordSigGenerator_setExternalTTLTriggerPolarity(uint32_t
xs_error_code_t Xsync::RecordSigGenerator_getExternalTTLTriggerPolarity(uint32_t &polarity) { //
return _reg_read(reg::record_sig_gen_ttlin_trigger_level, polarity);
}
xs_error_code_t Xsync::RecordSigGenerator_setRecordExposureTime(uint32_t us) { //
return reg_write(reg::record_sig_gen_exposure_time, us);
}
xs_error_code_t Xsync::RecordSigGenerator_getRecordExposureTime(uint32_t &us) {
auto ret = reg_read(reg::record_sig_gen_exposure_time, us);
// us = us / 10;1
return ret;
}
xs_error_code_t Xsync::RecordSigGenerator_setRecordExposureOffsetTime(uint32_t us) { return reg_write(reg::record_sig_gen_exposure_offset_time, us); }
xs_error_code_t Xsync::RecordSigGenerator_getRecordExposureOffsetTime(uint32_t &us) {
auto ret = reg_read(reg::record_sig_gen_exposure_offset_time, us);
// us = us / 10;
return ret;
}
// xs_error_code_t Xsync::RecordSigGenerator_setRecordExposureTime(uint32_t us) { //
// return reg_write(reg::record_sig_gen_exposure_time, us);
// }
// xs_error_code_t Xsync::RecordSigGenerator_getRecordExposureTime(uint32_t &us) {
// auto ret = reg_read(reg::record_sig_gen_exposure_time, us);
// // us = us / 10;1
// return ret;
// }
// xs_error_code_t Xsync::RecordSigGenerator_setRecordExposureOffsetTime(uint32_t us) { return reg_write(reg::record_sig_gen_exposure_offset_time, us); }
// xs_error_code_t Xsync::RecordSigGenerator_getRecordExposureOffsetTime(uint32_t &us) {
// auto ret = reg_read(reg::record_sig_gen_exposure_offset_time, us);
// // us = us / 10;
// return ret;
// }
xs_error_code_t Xsync::RecordSigGenerator_setTimecodeCtrlFlag(uint32_t autoStart, uint32_t autoStop) { //
uint32_t flag = (autoStart & 0x01) | ((autoStop & 0x01) << 1);
return reg_write(reg::record_sig_gen_timecode_control_flag, flag);

37
src/xsync_v2_sig_type.cpp

@ -87,22 +87,27 @@ list<string> GenlockFormatStrSet() {
* Signal_Type *
*******************************************************************************/
static map<string, SignalType_t> SignalTypeMap = {{"SIGNAL_LOGIC0", SIGNAL_LOGIC0},
{"SIGNAL_LOGIC1", SIGNAL_LOGIC1},
{"SIGNAL_TTLIN1", SIGNAL_TTLIN1},
{"SIGNAL_TTLIN2", SIGNAL_TTLIN2},
{"SIGNAL_TTLIN3", SIGNAL_TTLIN3},
{"SIGNAL_TTLIN4", SIGNAL_TTLIN4},
{"SIGNAL_EXT_GENLOCK_FREQ", SIGNAL_EXT_GENLOCK_FREQ},
{"SIGNAL_EXT_TIMECODE_FREQ", SIGNAL_EXT_TIMECODE_FREQ},
{"SIGNAL_INTERNAL_TIMECODE_FREQ", SIGNAL_INTERNAL_TIMECODE_FREQ},
{"SIGNAL_INTERNAL_GENLOCK_FREQ", SIGNAL_INTERNAL_GENLOCK_FREQ},
{"SIGNAL_INTERNAL_CLOCK_SIG", SIGNAL_INTERNAL_CLOCK_SIG},
{"SIGNAL_SYS_CLK_OUTPUT", SIGNAL_SYS_CLK_OUTPUT},
{"SIGNAL_SYS_GENLOCK_OUTPUT", SIGNAL_SYS_GENLOCK_OUTPUT},
{"SIGNAL_SYS_TIMECODE_FREQ_OUTPUT", SIGNAL_SYS_TIMECODE_FREQ_OUTPUT},
{"SIGNAL_BUSINESS_RECORD_SIG", SIGNAL_BUSINESS_RECORD_SIG},
{"SIGNAL_BUSINESS_RECORD_EXPOSURE_SIG", SIGNAL_BUSINESS_RECORD_EXPOSURE_SIG}};
static map<string, SignalType_t> SignalTypeMap = {
{"SIGNAL_LOGIC0", SIGNAL_LOGIC0},
{"SIGNAL_LOGIC1", SIGNAL_LOGIC1},
{"SIGNAL_TTLIN1", SIGNAL_TTLIN1},
{"SIGNAL_TTLIN2", SIGNAL_TTLIN2},
{"SIGNAL_TTLIN3", SIGNAL_TTLIN3},
{"SIGNAL_TTLIN4", SIGNAL_TTLIN4},
{"SIGNAL_EXT_GENLOCK_FREQ", SIGNAL_EXT_GENLOCK_FREQ},
{"SIGNAL_EXT_TIMECODE_FREQ", SIGNAL_EXT_TIMECODE_FREQ},
{"SIGNAL_INTERNAL_TIMECODE_FREQ", SIGNAL_INTERNAL_TIMECODE_FREQ},
{"SIGNAL_INTERNAL_GENLOCK_FREQ", SIGNAL_INTERNAL_GENLOCK_FREQ},
{"SIGNAL_INTERNAL_CLOCK_SIG", SIGNAL_INTERNAL_CLOCK_SIG},
{"SIGNAL_SYS_CLK_OUTPUT", SIGNAL_SYS_CLK_OUTPUT},
{"SIGNAL_SYS_GENLOCK_OUTPUT", SIGNAL_SYS_GENLOCK_OUTPUT},
{"SIGNAL_SYS_TIMECODE_FREQ_OUTPUT", SIGNAL_SYS_TIMECODE_FREQ_OUTPUT},
{"SIGNAL_BUSINESS_RECORD_SIG", SIGNAL_BUSINESS_RECORD_SIG},
{"SIGNAL_BUSINESS_RECORD_EXPOSURE_SIG", SIGNAL_BUSINESS_RECORD_EXPOSURE_SIG},
{"SIGNAL_BUSINESS_RECORD_EN_RSING_EDGE", SIGNAL_BUSINESS_RECORD_EN_RSING_EDGE},
{"SIGNAL_BUSINESS_RECORD_EN_FALLING_EDGE", SIGNAL_BUSINESS_RECORD_EN_FALLING_EDGE},
{"SIGNAL_BUSINESS_RECORD_EN_EDGE", SIGNAL_BUSINESS_RECORD_EN_EDGE},
};
string SignalType2Str(SignalType_t type) {
for (auto &item : SignalTypeMap) {

Loading…
Cancel
Save