|
|
@ -249,6 +249,61 @@ XsyncTimecode_t Str2XsyncTimecode(string timecode) { |
|
|
|
return ret; |
|
|
|
} |
|
|
|
|
|
|
|
namespace timecode_output_module { |
|
|
|
static map<string, TriggerSigType_t> Str2TriggerSigTypeMap = { |
|
|
|
{"off", koff}, //
|
|
|
|
{"ext_timecode_sig", kext_timecode_sig}, |
|
|
|
{"internal_timecode_sig", kinternal_timecode_sig}, |
|
|
|
}; |
|
|
|
|
|
|
|
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; |
|
|
|
} |
|
|
|
|
|
|
|
static map<string, OutputSigLevelType_t> Str2OutputSigLevelTypeMap = { |
|
|
|
{"line", kline}, //
|
|
|
|
{"mic", kmic}, |
|
|
|
}; |
|
|
|
string OutputSigLevelType2Str(OutputSigLevelType_t type) { |
|
|
|
for (auto &item : Str2OutputSigLevelTypeMap) { |
|
|
|
if (item.second == type) return item.first; |
|
|
|
} |
|
|
|
return "unkown"; |
|
|
|
} |
|
|
|
OutputSigLevelType_t Str2OutputSigLevelType(string type) { |
|
|
|
auto it = Str2OutputSigLevelTypeMap.find(type); |
|
|
|
if (it != Str2OutputSigLevelTypeMap.end()) { |
|
|
|
return it->second; |
|
|
|
} |
|
|
|
return kline; |
|
|
|
} |
|
|
|
list<string> OutputSigLevelTypeStrSet() { |
|
|
|
list<string> ret; |
|
|
|
for (auto &item : Str2OutputSigLevelTypeMap) { |
|
|
|
ret.push_back(item.first); |
|
|
|
} |
|
|
|
return ret; |
|
|
|
} |
|
|
|
|
|
|
|
} // namespace timecode_output_module
|
|
|
|
|
|
|
|
} // namespace xsync
|
|
|
|
|
|
|
|
static XsyncTimecode_t timecode64ToXsyncTimeCode(Timecode64_t tc64) { |
|
|
@ -888,3 +943,63 @@ xs_error_code_t Xsync::SigGenerator_getTimecodeFormat(TimecodeFormat_t &format) |
|
|
|
format = (TimecodeFormat_t)readbak; |
|
|
|
return ecode; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TimecodeOutputModule_setTimecodeSrcSelect(timecode_output_module::TriggerSigType_t timecode_select) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
DO_XSYNC(reg_write(reg::ktimecode_out_timecode_select, timecode_select, readbak, 10)); |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TimecodeOutputModule_getTimecodeSrcSelect(timecode_output_module::TriggerSigType_t &timecode_select) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
DO_XSYNC(reg_read(reg::ktimecode_out_timecode_select, readbak, 10)); |
|
|
|
timecode_select = (timecode_output_module::TriggerSigType_t)readbak; |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TimecodeOutputModule_getTimecodeNow(XsyncTimecode_t &timecode_now) { |
|
|
|
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_out_timecode0, tc0, 10); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
ecode = reg_read(reg::ktimecode_out_timecode1, tc1, 10); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
|
|
|
|
Timecode64_t tc64; |
|
|
|
tc64.tc0 = tc0; |
|
|
|
tc64.tc1 = tc1; |
|
|
|
|
|
|
|
timecode_now = timecode64ToXsyncTimeCode(tc64); |
|
|
|
return ecode; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TimecodeOutputModule_getTimecodeFormat(TimecodeFormat_t &timecode_format) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
xs_error_code_t ecode = kxs_ec_success; |
|
|
|
ecode = reg_read(reg::ktimecode_out_timecode_format, readbak, 10); |
|
|
|
if (ecode != kxs_ec_success) return ecode; |
|
|
|
timecode_format = (TimecodeFormat_t)readbak; |
|
|
|
return ecode; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TimecodeOutputModule_setBncOutputLevel(timecode_output_module::OutputSigLevelType_t &level) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
DO_XSYNC(reg_write(reg::ktimecode_out_bnc_outut_level_select, level, readbak, 10)); |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TimecodeOutputModule_getBncOutputLevel(timecode_output_module::OutputSigLevelType_t &level) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
DO_XSYNC(reg_read(reg::ktimecode_out_bnc_outut_level_select, readbak, 10)); |
|
|
|
level = (timecode_output_module::OutputSigLevelType_t)readbak; |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TimecodeOutputModule_setHeadphoneOutputLevel(timecode_output_module::OutputSigLevelType_t &level) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
DO_XSYNC(reg_write(reg::ktimecode_out_headphone_outut_level_select, level, readbak, 10)); |
|
|
|
return kxs_ec_success; |
|
|
|
} |
|
|
|
xs_error_code_t Xsync::TimecodeOutputModule_getHeadphoneOutputLevel(timecode_output_module::OutputSigLevelType_t &level) { |
|
|
|
uint32_t readbak = 0; |
|
|
|
DO_XSYNC(reg_read(reg::ktimecode_out_headphone_outut_level_select, readbak, 10)); |
|
|
|
level = (timecode_output_module::OutputSigLevelType_t)readbak; |
|
|
|
return kxs_ec_success; |
|
|
|
} |