|
|
@ -333,6 +333,34 @@ list<string> TriggerSigTypeStrSet() { |
|
|
|
|
|
|
|
} // namespace camera_sync_packet_generator_module
|
|
|
|
|
|
|
|
namespace timecode_input_module { |
|
|
|
|
|
|
|
static map<string, TriggerSigType_t> Str2TriggerSigTypeMap = { |
|
|
|
{"off", koff}, //
|
|
|
|
{"bnc_timecode", kbnc_timecode}, |
|
|
|
{"headphone_timecode", kheadphone_timecode}, |
|
|
|
}; |
|
|
|
string TriggerSigType2Str(TriggerSigType_t type) { |
|
|
|
for (auto &item : Str2TriggerSigTypeMap) { |
|
|
|
if (item.second == type) return item.first; |
|
|
|
} |
|
|
|
return "unkown"; |
|
|
|
} |
|
|
|
TriggerSigType_t Str2TriggerSigType(string type) { |
|
|
|
auto it = Str2TriggerSigTypeMap.find(type); |
|
|
|
if (it != Str2TriggerSigTypeMap.end()) { |
|
|
|
return it->second; |
|
|
|
} |
|
|
|
return koff; |
|
|
|
} |
|
|
|
list<string> TriggerSigTypeStrSet() { |
|
|
|
list<string> ret; |
|
|
|
for (auto &item : Str2TriggerSigTypeMap) { |
|
|
|
ret.push_back(item.first); |
|
|
|
} |
|
|
|
return ret; |
|
|
|
} |
|
|
|
} // namespace timecode_input_module
|
|
|
|
} // namespace xsync
|
|
|
|
|
|
|
|
static XsyncTimecode_t timecode64ToXsyncTimeCode(Timecode64_t tc64) { |
|
|
@ -677,6 +705,7 @@ xs_error_code_t Xsync::Basic_getGenlockFormat(GenlockFormat_t &format) { |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::Basic_setTimecodeFormat(TimecodeFormat_t format) { |
|
|
|
DO_XSYNC(SigGenerator_setTimecodeFormat(format)); |
|
|
|
DO_XSYNC(TimecodeInputModule_setTimecodeFormat(format)); |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::Basic_getTimecodeFormat(TimecodeFormat_t &format) { |
|
|
@ -1068,3 +1097,127 @@ xs_error_code_t Xsync::CameraSyncPacketGeneratorModule_clearPacketIndex() { |
|
|
|
DO_XSYNC(reg_write(reg::kstm32_camera_sync_signal_count, 0, readbak, 10)); |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TimecodeInputModule_setSrcSelect(timecode_input_module::TriggerSigType_t timecode_select) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
DO_XSYNC(reg_write(reg::ktimecode_in_timecode_sig_selt, timecode_select, readbak, 10)); |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TimecodeInputModule_getSrcSelect(timecode_input_module::TriggerSigType_t timecode_select) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
DO_XSYNC(reg_read(reg::ktimecode_in_timecode_sig_selt, readbak, 10)); |
|
|
|
timecode_select = (timecode_input_module::TriggerSigType_t)readbak; |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TimecodeInputModule_setTimecodeFormat(TimecodeFormat_t format) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
DO_XSYNC(reg_write(reg::ktimecode_in_timecode_format, format, readbak, 10)); |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TimecodeInputModule_getTimecodeFormat(TimecodeFormat_t &format) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
DO_XSYNC(reg_read(reg::ktimecode_in_timecode_format, readbak, 10)); |
|
|
|
format = (TimecodeFormat_t)readbak; |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TimecodeInputModule_getTimecode(XsyncTimecode_t& timecode) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
xs_error_code_t ecode = kxs_ec_success; |
|
|
|
|
|
|
|
uint32_t tc0 = 0; |
|
|
|
uint32_t tc1 = 0; |
|
|
|
|
|
|
|
ecode = reg_read(reg::ktimecode_in_timecode0, tc0, 10); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
ecode = reg_read(reg::ktimecode_in_timecode1, tc1, 10); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
Timecode64_t tc64; |
|
|
|
tc64.tc0 = tc0; |
|
|
|
tc64.tc1 = tc1; |
|
|
|
|
|
|
|
timecode = timecode64ToXsyncTimeCode(tc64); |
|
|
|
|
|
|
|
return ecode; |
|
|
|
} |
|
|
|
|
|
|
|
xs_error_code_t Xsync::TTLInputModule_setEn(int32_t index, bool en) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
DO_XSYNC(reg_read(reg::kttlin_en, readbak, 10)); |
|
|
|
if (en) { |
|
|
|
readbak |= (1 << index); |
|
|
|
} else { |
|
|
|
readbak &= ~(1 << index); |
|
|
|
} |
|
|
|
DO_XSYNC(reg_write(reg::kttlin_en, readbak, readbak, 10)); |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TTLInputModule_getEn(int32_t index, bool &en) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
DO_XSYNC(reg_read(reg::kttlin_en, readbak, 10)); |
|
|
|
en = (readbak & (1 << index)) != 0; |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
|
|
|
|
xs_error_code_t Xsync::TTLInputModule_setFilterFactor(int32_t index, uint32_t factor) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
if (index == 1) { |
|
|
|
DO_XSYNC(reg_write(reg::kttlin1_filter_factor, factor, readbak, 10)); |
|
|
|
} else if (index == 2) { |
|
|
|
DO_XSYNC(reg_write(reg::kttlin2_filter_factor, factor, readbak, 10)); |
|
|
|
} else if (index == 3) { |
|
|
|
DO_XSYNC(reg_write(reg::kttlin3_filter_factor, factor, readbak, 10)); |
|
|
|
} else if (index == 4) { |
|
|
|
DO_XSYNC(reg_write(reg::kttlin4_filter_factor, factor, readbak, 10)); |
|
|
|
} else { |
|
|
|
return kxs_ec_param_error; |
|
|
|
} |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TTLInputModule_getFilterFactor(int32_t index, uint32_t &factor) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
if (index == 1) { |
|
|
|
DO_XSYNC(reg_read(reg::kttlin1_filter_factor, readbak, 10)); |
|
|
|
} else if (index == 2) { |
|
|
|
DO_XSYNC(reg_read(reg::kttlin2_filter_factor, readbak, 10)); |
|
|
|
} else if (index == 3) { |
|
|
|
DO_XSYNC(reg_read(reg::kttlin3_filter_factor, readbak, 10)); |
|
|
|
} else if (index == 4) { |
|
|
|
DO_XSYNC(reg_read(reg::kttlin4_filter_factor, readbak, 10)); |
|
|
|
} else { |
|
|
|
return kxs_ec_param_error; |
|
|
|
} |
|
|
|
factor = readbak; |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
|
|
|
|
xs_error_code_t Xsync::TTLInputModule_setDivideFactor(int32_t index, uint32_t factor) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
if (index == 1) { |
|
|
|
DO_XSYNC(reg_write(reg::kttlin1_devide_factor, factor, readbak, 10)); |
|
|
|
} else if (index == 2) { |
|
|
|
DO_XSYNC(reg_write(reg::kttlin2_devide_factor, factor, readbak, 10)); |
|
|
|
} else if (index == 3) { |
|
|
|
DO_XSYNC(reg_write(reg::kttlin3_devide_factor, factor, readbak, 10)); |
|
|
|
} else if (index == 4) { |
|
|
|
DO_XSYNC(reg_write(reg::kttlin4_devide_factor, factor, readbak, 10)); |
|
|
|
} else { |
|
|
|
return kxs_ec_param_error; |
|
|
|
} |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TTLInputModule_getDivideFactor(int32_t index, uint32_t &factor) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
if (index == 1) { |
|
|
|
DO_XSYNC(reg_read(reg::kttlin1_devide_factor, readbak, 10)); |
|
|
|
} else if (index == 2) { |
|
|
|
DO_XSYNC(reg_read(reg::kttlin2_devide_factor, readbak, 10)); |
|
|
|
} else if (index == 3) { |
|
|
|
DO_XSYNC(reg_read(reg::kttlin3_devide_factor, readbak, 10)); |
|
|
|
} else if (index == 4) { |
|
|
|
DO_XSYNC(reg_read(reg::kttlin4_devide_factor, readbak, 10)); |
|
|
|
} else { |
|
|
|
return kxs_ec_param_error; |
|
|
|
} |
|
|
|
factor = readbak; |
|
|
|
return kxs_ec_success; |
|
|
|
} |