diff --git a/include/ixsync.hpp b/include/ixsync.hpp index 13ec4af..fdd08e7 100644 --- a/include/ixsync.hpp +++ b/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; /******************************************************************************* * 工具方法 * diff --git a/include/xsync_regs.hpp b/include/xsync_regs.hpp index 85430fa..91b98f3 100644 --- a/include/xsync_regs.hpp +++ b/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, diff --git a/include/xsync_v2_sig_type.hpp b/include/xsync_v2_sig_type.hpp index e92b116..2e351da 100644 --- a/include/xsync_v2_sig_type.hpp +++ b/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; diff --git a/src/xsync_v2.cpp b/src/xsync_v2.cpp index 042e575..dd92c07 100644 --- a/src/xsync_v2.cpp +++ b/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); diff --git a/src/xsync_v2_sig_type.cpp b/src/xsync_v2_sig_type.cpp index 3d6763c..fb29705 100644 --- a/src/xsync_v2_sig_type.cpp +++ b/src/xsync_v2_sig_type.cpp @@ -87,22 +87,27 @@ list GenlockFormatStrSet() { * Signal_Type * *******************************************************************************/ -static map 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 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) {