You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

333 lines
17 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. #pragma once
  2. #include <fstream>
  3. #include <functional>
  4. #include <iostream>
  5. #include <list>
  6. #include <map>
  7. #include <memory>
  8. #include <mutex>
  9. #include <set>
  10. #include <sstream>
  11. #include <string>
  12. #include <vector>
  13. #include "xsync_errcode.hpp"
  14. #include "xsync_v2_sig_type.hpp"
  15. namespace xsync {
  16. using namespace std;
  17. typedef function<void(XsyncTimecode_t *timecode_msg)> xsync_on_timecode_msg_t;
  18. typedef function<void(uint32_t recordSig, XsyncTimecode_t *timecode_msg)> xsync_on_record_sig_change_msg_t;
  19. typedef function<void(xysnc_camera_sync_data_t *timecode_msg)> xsync_on_camera_sync_msg_t;
  20. class IXsync {
  21. public:
  22. virtual ~IXsync() {}
  23. public:
  24. /***********************************************************************************************
  25. * *
  26. ***********************************************************************************************/
  27. virtual xs_error_code_t changeXsyncIp(string xsync_ip) = 0;
  28. virtual bool ping() = 0;
  29. virtual void registerOnTimecodeMsgCallback(xsync_on_timecode_msg_t cb) = 0;
  30. virtual void registerOnCameraSyncMsgCallback(xsync_on_camera_sync_msg_t cb) = 0;
  31. virtual void registerOnRecordSigChangeMsgCallback(xsync_on_record_sig_change_msg_t cb) = 0;
  32. virtual xs_error_code_t generatorNewMac() = 0;
  33. virtual xs_error_code_t factoryReset() = 0;
  34. virtual xs_error_code_t reboot() = 0;
  35. virtual xs_error_code_t changeNetworkConfig(string ip, string mask, string gateway) = 0;
  36. virtual xs_error_code_t readSn(string &sn) = 0;
  37. virtual xs_error_code_t readMac(string &mac) = 0;
  38. public:
  39. virtual xs_error_code_t reg_write(uint32_t regadd, uint32_t regvalue, uint32_t &regbackvalue, int32_t overtime_ms = 100) = 0;
  40. virtual xs_error_code_t reg_read(uint32_t regadd, uint32_t &regvalue, int32_t overtime_ms = 100) = 0;
  41. public:
  42. /***********************************************************************************************
  43. * *
  44. ***********************************************************************************************/
  45. /**
  46. * @brief
  47. *
  48. * : 33
  49. * TTLInputModule1_XXXXX: TTL1_IN
  50. * TTLInputModule2_XXXXX: TTL2_IN
  51. * TTLInputModule3_XXXXX: TTL3_IN
  52. * TTLInputModule4_XXXXX:
  53. *
  54. * ExternalTimecode_XXXXX : BNC时码输入口
  55. *
  56. * ExternalGenlock_XXXXX : GENLOCK输入口
  57. *
  58. *
  59. *
  60. *
  61. * 使:
  62. * 使使
  63. *
  64. * ExternalTimecode_setSource
  65. * :
  66. * :
  67. * INPUT_IF_TIMECODE_BNC
  68. * INPUT_IF_TIMECODE_HEADPHONE
  69. *
  70. *
  71. * ExternalTimecode_setFormat
  72. * :
  73. * :
  74. * TIMECODE_FPS2398
  75. * TIMECODE_FPS2400
  76. * TIMECODE_FPS2500
  77. * TIMECODE_FPS2997
  78. * TIMECODE_FPS2997Drop
  79. * TIMECODE_FPS3000
  80. *
  81. *
  82. * TTLInputModuleX_detectFreq
  83. * :TTL输入频率
  84. *
  85. * ExternalGenlock_detectFreq
  86. * :GENLOCK信号频率
  87. *
  88. */
  89. virtual xs_error_code_t ExternalTimecode_setSource(InputInterface_t src) = 0;
  90. virtual xs_error_code_t ExternalTimecode_getSource(InputInterface_t &timecode_select) = 0;
  91. virtual xs_error_code_t ExternalTimecode_setFormat(TimecodeFormat_t format) = 0;
  92. virtual xs_error_code_t ExternalTimecode_getFormat(TimecodeFormat_t &format) = 0;
  93. virtual xs_error_code_t ExternalTimecode_readCode(XsyncTimecode_t &timecode) = 0;
  94. virtual xs_error_code_t TTLInputModule1_detectFreq(float &freq) = 0;
  95. virtual xs_error_code_t TTLInputModule2_detectFreq(float &freq) = 0;
  96. virtual xs_error_code_t TTLInputModule3_detectFreq(float &freq) = 0;
  97. virtual xs_error_code_t TTLInputModule4_detectFreq(float &freq) = 0;
  98. virtual xs_error_code_t ExternalGenlock_detectFreq(float &freq) = 0;
  99. /***********************************************************************************************
  100. * *
  101. ***********************************************************************************************/
  102. /**
  103. * @brief
  104. *
  105. * : 7
  106. * InternalTimecode_XXXXX :
  107. * InternalGenlock_XXXXX :
  108. * InternalClock_XXXXX :
  109. *
  110. * SysTimecode_XXXXX :
  111. * SysGenlock_XXXXX :
  112. * SysClock_XXXXX :
  113. *
  114. *
  115. *
  116. * :
  117. * Xsync系统中一共有三个比较重要概念GenlockGenlock
  118. * GenlockGenlockGenlock
  119. * Genlock
  120. *
  121. *
  122. * ---|1
  123. * ---|0 ---->
  124. *
  125. *
  126. * Genlock ---|1
  127. * Genlock ---|0 ----> Genlock
  128. *
  129. *
  130. * ---|
  131. * Genlock ---|
  132. * ---| ---->
  133. * TTL输入信号 ---|
  134. * ---|
  135. *
  136. *
  137. * :
  138. * 1. GenlockAPI进行修改
  139. * 2. GenlockGenlock
  140. * 3. 沿
  141. *
  142. *
  143. */
  144. virtual xs_error_code_t InternalTimecode_setFormat(TimecodeFormat_t format) = 0;
  145. virtual xs_error_code_t InternalTimecode_getFormat(TimecodeFormat_t &format) = 0;
  146. virtual xs_error_code_t InternalTimecode_setCode(XsyncTimecode_t timecode) = 0;
  147. virtual xs_error_code_t InternalTimecode_getCode(XsyncTimecode_t &timecode) = 0;
  148. virtual xs_error_code_t InternalGenlock_setFormat(GenlockFormat_t format) = 0;
  149. virtual xs_error_code_t InternalGenlock_getFormat(GenlockFormat_t &format) = 0;
  150. virtual xs_error_code_t InternalClock_setFreq(float freq) = 0;
  151. virtual xs_error_code_t InternalClock_getFreq(float &freq) = 0;
  152. virtual xs_error_code_t SysTimecode_setSource(uint32_t sig) = 0;
  153. virtual xs_error_code_t SysTimecode_getSource(uint32_t &sig) = 0;
  154. virtual xs_error_code_t SysTimecode_readFormat(TimecodeFormat_t &format) = 0;
  155. virtual xs_error_code_t SysTimecode_readCode(XsyncTimecode_t &timecode) = 0;
  156. virtual xs_error_code_t SysGenlock_setSrc(uint32_t source) = 0;
  157. virtual xs_error_code_t SysGenlock_getSrc(uint32_t &source) = 0;
  158. virtual xs_error_code_t SysGenlock_readFreq(float &freq) = 0;
  159. virtual xs_error_code_t SysClock_setSrc(SignalType_t sig) = 0;
  160. virtual xs_error_code_t SysClock_getSrc(SignalType_t &sig) = 0;
  161. virtual xs_error_code_t SysClock_setTriggerEdge(TriggerEdge_t edge) = 0;
  162. virtual xs_error_code_t SysClock_getTriggerEdge(TriggerEdge_t &edge) = 0;
  163. virtual xs_error_code_t SysClock_setFreqDivision(uint32_t div) = 0;
  164. virtual xs_error_code_t SysClock_geFreqtDivision(uint32_t &div) = 0;
  165. virtual xs_error_code_t SysClock_setFreqMultiplication(uint32_t muti) = 0;
  166. virtual xs_error_code_t SysClock_getFreqMultiplication(uint32_t &muti) = 0;
  167. virtual xs_error_code_t SysClock_readOutSigFreq(float &freq) = 0;
  168. virtual xs_error_code_t SysClock_readInSigFreq(float &freq) = 0;
  169. /***********************************************************************************************
  170. * *
  171. ***********************************************************************************************/
  172. /**
  173. * @brief
  174. *
  175. * :
  176. * 使
  177. * TimeCode启动TTL触发启动三种方式RecordSigGenerator_setContrlMode可以设置
  178. *
  179. * :
  180. *
  181. * RecordSigGenerator_setContrlMode将模式配置成CONTROLMODE_MANUAL_TRIGGER
  182. *
  183. * RecordSigGenerator_manualStart
  184. * RecordSigGenerator_manualStop
  185. *
  186. *
  187. * Timecode控制:
  188. *
  189. * Timecode控制启动RecordSigGenerator_setContrlMode将模式配置成CONTROLMODE_TIMECODE_TRIGGER
  190. * RecordSigGenerator_setTimecodeCtrlFlag方法使Timecode自动控制
  191. * 使Timecode自动控制停止
  192. * RecordSigGenerator_setAutoStartTimecode :
  193. * RecordSigGenerator_setAutoStopTimecode :
  194. * RecordSigGenerator_setTimecodeCtrlFlag :使使
  195. *
  196. * TTL控制:
  197. *
  198. * TTL触发启动RecordSigGenerator_setContrlMode将模式配置成CONTROLMODE_EXTERNALTTL_TRIGGER
  199. *
  200. * RecordSigGenerator_setExternalTTLTriggerSrc : TTL触发源INPUT_IF_TTL1->INPUT_IF_TTL4
  201. * RecordSigGenerator_setExternalTTLTriggerPolarity : (0:1:)
  202. *
  203. *
  204. *
  205. * RecordSigGenerator_setRecordExposureTime
  206. * RecordSigGenerator_setRecordExposureOffsetTime
  207. *
  208. *
  209. */
  210. virtual xs_error_code_t RecordSigGenerator_setContrlMode(ControlMode_t mode) = 0;
  211. virtual xs_error_code_t RecordSigGenerator_getContrlMode(ControlMode_t &mode) = 0;
  212. virtual xs_error_code_t RecordSigGenerator_manualStart() = 0;
  213. virtual xs_error_code_t RecordSigGenerator_manualStop() = 0;
  214. virtual xs_error_code_t RecordSigGenerator_setAutoStartTimecode(XsyncTimecode_t timecode) = 0;
  215. virtual xs_error_code_t RecordSigGenerator_setAutoStopTimecode(XsyncTimecode_t timecode) = 0;
  216. virtual xs_error_code_t RecordSigGenerator_getAutoStartTimecode(XsyncTimecode_t &timecode) = 0;
  217. virtual xs_error_code_t RecordSigGenerator_getAutoStopTimecode(XsyncTimecode_t &timecode) = 0;
  218. virtual xs_error_code_t RecordSigGenerator_setTimecodeCtrlFlag(uint32_t autoStart, uint32_t autoStop) = 0;
  219. virtual xs_error_code_t RecordSigGenerator_getTimecodeCtrlFlag(uint32_t &autoStart, uint32_t &autoStop) = 0;
  220. virtual xs_error_code_t RecordSigGenerator_setExternalTTLTriggerSrc(InputInterface_t ttlPortNum) = 0;
  221. virtual xs_error_code_t RecordSigGenerator_getExternalTTLTriggerSrc(InputInterface_t &ttlPortNum) = 0;
  222. virtual xs_error_code_t RecordSigGenerator_setExternalTTLTriggerPolarity(uint32_t polarity) = 0;
  223. virtual xs_error_code_t RecordSigGenerator_getExternalTTLTriggerPolarity(uint32_t &polarity) = 0;
  224. virtual xs_error_code_t RecordSigGenerator_setRecordExposureTime(uint32_t us) = 0;
  225. virtual xs_error_code_t RecordSigGenerator_getRecordExposureTime(uint32_t &us) = 0;
  226. virtual xs_error_code_t RecordSigGenerator_setRecordExposureOffsetTime(uint32_t us) = 0;
  227. virtual xs_error_code_t RecordSigGenerator_getRecordExposureOffsetTime(uint32_t &us) = 0;
  228. virtual xs_error_code_t RecordSigGenerator_getRecordState(uint32_t &state) = 0;
  229. virtual xs_error_code_t RecordSigGenerator_readTimecodeSnapshot(XsyncTimecode_t &timecode) = 0;
  230. /***********************************************************************************************
  231. * *
  232. ***********************************************************************************************/
  233. /**
  234. * @brief 4TTLTimecodeGenlockTTL输出()
  235. *
  236. *
  237. * TTL输出组件
  238. * :
  239. * SIGNAL_LOGIC0
  240. * SIGNAL_LOGIC1
  241. * SIGNAL_TTLIN1
  242. * SIGNAL_TTLIN2
  243. * SIGNAL_TTLIN3
  244. * SIGNAL_TTLIN4
  245. * SIGNAL_SYS_CLK_OUTPUT
  246. * SIGNAL_SYS_GENLOCK_OUTPUT
  247. * SIGNAL_SYS_TIMECODE_FREQ_OUTPUT
  248. * SIGNAL_BUSINESS_RECORD_SIG
  249. * SIGNAL_BUSINESS_RECORD_EXPOSURE_SIG
  250. *
  251. * :
  252. * SIGNAL_BUSINESS_RECORD_SIG SIGNAL_BUSINESS_RECORD_EXPOSURE_SIG
  253. * 012
  254. * 012
  255. *
  256. *
  257. */
  258. virtual xs_error_code_t TTLOutputModule1_setSrcSigType(SignalType_t source) = 0;
  259. virtual xs_error_code_t TTLOutputModule1_getSrcSigType(SignalType_t &source) = 0;
  260. virtual xs_error_code_t TTLOutputModule1_setFreqDivision(uint32_t div) = 0;
  261. virtual xs_error_code_t TTLOutputModule1_getFreqDivision(uint32_t &div) = 0;
  262. virtual xs_error_code_t TTLOutputModule1_setFreqMultiplication(uint32_t multi) = 0;
  263. virtual xs_error_code_t TTLOutputModule1_getFreqMultiplication(uint32_t &multi) = 0;
  264. virtual xs_error_code_t TTLOutputModule1_readInFreq(float &freq) = 0;
  265. virtual xs_error_code_t TTLOutputModule1_readOutFreq(float &freq) = 0;
  266. virtual xs_error_code_t TTLOutputModule2_setSrcSigType(SignalType_t source) = 0;
  267. virtual xs_error_code_t TTLOutputModule2_getSrcSigType(SignalType_t &source) = 0;
  268. virtual xs_error_code_t TTLOutputModule2_setFreqDivision(uint32_t div) = 0;
  269. virtual xs_error_code_t TTLOutputModule2_getFreqDivision(uint32_t &div) = 0;
  270. virtual xs_error_code_t TTLOutputModule2_setFreqMultiplication(uint32_t multi) = 0;
  271. virtual xs_error_code_t TTLOutputModule2_getFreqMultiplication(uint32_t &multi) = 0;
  272. virtual xs_error_code_t TTLOutputModule2_readInFreq(float &freq) = 0;
  273. virtual xs_error_code_t TTLOutputModule2_readOutFreq(float &freq) = 0;
  274. virtual xs_error_code_t TTLOutputModule3_setSrcSigType(SignalType_t source) = 0;
  275. virtual xs_error_code_t TTLOutputModule3_getSrcSigType(SignalType_t &source) = 0;
  276. virtual xs_error_code_t TTLOutputModule3_setFreqDivision(uint32_t div) = 0;
  277. virtual xs_error_code_t TTLOutputModule3_getFreqDivision(uint32_t &div) = 0;
  278. virtual xs_error_code_t TTLOutputModule3_setFreqMultiplication(uint32_t multi) = 0;
  279. virtual xs_error_code_t TTLOutputModule3_getFreqMultiplication(uint32_t &multi) = 0;
  280. virtual xs_error_code_t TTLOutputModule3_readInFreq(float &freq) = 0;
  281. virtual xs_error_code_t TTLOutputModule3_readOutFreq(float &freq) = 0;
  282. virtual xs_error_code_t TTLOutputModule4_setSrcSigType(SignalType_t source) = 0;
  283. virtual xs_error_code_t TTLOutputModule4_getSrcSigType(SignalType_t &source) = 0;
  284. virtual xs_error_code_t TTLOutputModule4_setFreqDivision(uint32_t div) = 0;
  285. virtual xs_error_code_t TTLOutputModule4_getFreqDivision(uint32_t &div) = 0;
  286. virtual xs_error_code_t TTLOutputModule4_setFreqMultiplication(uint32_t multi) = 0;
  287. virtual xs_error_code_t TTLOutputModule4_getFreqMultiplication(uint32_t &multi) = 0;
  288. virtual xs_error_code_t TTLOutputModule4_readInFreq(float &freq) = 0;
  289. virtual xs_error_code_t TTLOutputModule4_readOutFreq(float &freq) = 0;
  290. };
  291. } // namespace xsync