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.

146 lines
4.7 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. #pragma once
  2. #include <stdint.h>
  3. /**
  4. * @brief XSYNCЭ˿
  5. */
  6. #define IFLYTOP_XSYNC_SERVICE_PORT 19901
  7. #define IFLYTOP_XSYNC_TIMECODE_REPORT_FROM_PORT 19902
  8. #define IFLYTOP_XSYNC_TIMECODE_REPORT_TO_PORT 19903
  9. #define IFLYTOP_XSYNC_CAMERA_SYNC_PACKET_FROM_PORT 13013
  10. #define IFLYTOP_XSYNC_CAMERA_SYNC_PACKET_TO_PORT 13014
  11. /**
  12. * @brief
  13. * Э˵
  14. *
  15. * kxsync_packet_type_reg_read:
  16. * tx: regadd
  17. * rx: ecode,regdata
  18. *
  19. * kxsync_packet_type_reg_write
  20. * tx: regadd,regdata
  21. * rx: ecode,regdata
  22. *
  23. * kxsync_packet_type_reg_read_regs
  24. * tx: regstartadd,nreg
  25. * rx: ecode,regdatas
  26. *
  27. */
  28. typedef enum {
  29. kxsync_packet_type_none = 0,
  30. kxsync_packet_type_reg_read = 1,
  31. kxsync_packet_type_reg_write = 2,
  32. kxsync_packet_type_reg_read_regs = 3,
  33. kxsync_packet_type_timecode_report = 4,
  34. } xsync_protocol_cmd_t;
  35. typedef enum {
  36. kxsync_packet_type_cmd = 0,
  37. kxsync_packet_type_receipt = 1,
  38. kxsync_packet_type_report = 2,
  39. } xsync_protocol_packet_type_t;
  40. #pragma pack(1)
  41. typedef struct {
  42. uint16_t type;
  43. uint16_t index;
  44. uint16_t cmd;
  45. uint16_t ndata;
  46. uint32_t data[]; // first is always checksum
  47. } iflytop_xsync_packet_header_t;
  48. typedef struct {
  49. uint32_t timecode0;
  50. uint32_t timecode1;
  51. } iflytop_timecode_report_packet_t;
  52. #define XYSNC_REG_DEVICE_INFO_START_ADD 0
  53. #define XYSNC_REG_STM32_CONFIG_START_ADD 16
  54. #define XYSNC_REG_FPGA_REG_START 32
  55. typedef enum {
  56. /**
  57. * @brief
  58. * REG 0(16) ϢĴ
  59. */
  60. kxsync_reg_software_version = 0,
  61. kxsync_reg_manufacturer0 = 1,
  62. kxsync_reg_manufacturer1 = 2,
  63. kxsync_reg_product_type_id = 3,
  64. kxsync_reg_sn_id0 = 4,
  65. kxsync_reg_sn_id1 = 5,
  66. kxsync_reg_sn_id2 = 6,
  67. kxsync_reg_mac0 = 7,
  68. kxsync_reg_mac1 = 8,
  69. /**
  70. * @brief
  71. * REG 16(32) STM32üĴ0
  72. */
  73. kxsync_reg_stm32_obtaining_ip_mode = XYSNC_REG_STM32_CONFIG_START_ADD + 0,
  74. kxsync_reg_stm32_ip = XYSNC_REG_STM32_CONFIG_START_ADD + 1,
  75. kxsync_reg_stm32_gw = XYSNC_REG_STM32_CONFIG_START_ADD + 2,
  76. kxsync_reg_stm32_netmask = XYSNC_REG_STM32_CONFIG_START_ADD + 3,
  77. kxsync_reg_stm32_camera_sync_signal_count = XYSNC_REG_STM32_CONFIG_START_ADD + 4, // д������ֵ֮������
  78. kxsync_reg_stm32_config0 = XYSNC_REG_STM32_CONFIG_START_ADD + 5, // bit0: timecode report enable, bit1: camera sync report enable
  79. kxsync_reg_stm32_action0 = XYSNC_REG_STM32_CONFIG_START_ADD + 14, // action reg
  80. kxsync_reg_stm32_action_val0 = XYSNC_REG_STM32_CONFIG_START_ADD + 15, // action val reg
  81. /**
  82. * @brief
  83. * REG 48(32) FPGAüĴ0
  84. */
  85. kxsync_fpga_reg_test_reg0 = XYSNC_REG_FPGA_REG_START + 16 * 0 + 0,
  86. kxsync_fpga_reg_test_reg1 = XYSNC_REG_FPGA_REG_START + 16 * 0 + 1,
  87. kxsync_fpga_reg_test_reg2 = XYSNC_REG_FPGA_REG_START + 16 * 0 + 2,
  88. kxsync_fpga_reg_test_reg3 = XYSNC_REG_FPGA_REG_START + 16 * 0 + 3,
  89. kxsync_fpga_reg_test_reg4 = XYSNC_REG_FPGA_REG_START + 16 * 0 + 4,
  90. kxsync_fpga_reg_test_reg5 = XYSNC_REG_FPGA_REG_START + 16 * 0 + 5,
  91. kxsync_fpga_reg_test_reg6 = XYSNC_REG_FPGA_REG_START + 16 * 0 + 6,
  92. kxsync_fpga_reg_test_reg7 = XYSNC_REG_FPGA_REG_START + 16 * 0 + 7,
  93. kxsync_fpga_reg_test_reg8 = XYSNC_REG_FPGA_REG_START + 16 * 0 + 8,
  94. kxsync_fpga_reg_test_reg9 = XYSNC_REG_FPGA_REG_START + 16 * 0 + 9,
  95. kxsync_fpga_reg_test_rega = XYSNC_REG_FPGA_REG_START + 16 * 0 + 10,
  96. kxsync_fpga_reg_test_regb = XYSNC_REG_FPGA_REG_START + 16 * 0 + 11,
  97. kxsync_fpga_reg_test_regc = XYSNC_REG_FPGA_REG_START + 16 * 0 + 12,
  98. kxsync_fpga_reg_test_regd = XYSNC_REG_FPGA_REG_START + 16 * 0 + 13,
  99. kxsync_fpga_reg_test_rege = XYSNC_REG_FPGA_REG_START + 16 * 0 + 14,
  100. kxsync_fpga_reg_test_regf = XYSNC_REG_FPGA_REG_START + 16 * 0 + 15,
  101. } xsync_reg_add_t;
  102. #define KXSYNC_REG_STM32_CONFIG0_MASK_TIMECODE_REPORT_ENABLE 0x01
  103. #define KXSYNC_REG_STM32_CONFIG0_MASK_CAMERA_SYNC_REPORT_ENABLE 0x02
  104. typedef enum {
  105. xsync_stm32_action_none, //
  106. xsync_stm32_action_generator_new_mac, //
  107. xsync_stm32_action_factory_reset, //
  108. xsync_stm32_action_reboot, //
  109. xsync_stm32_action_storage_cfg, //
  110. } xsync_stm32_action_t;
  111. typedef enum {
  112. kxsync_device_type_none = 0,
  113. kxsync_device_type_xsync = 1,
  114. kxsync_device_type_puck_station = 2,
  115. kxsync_device_type_encoder = 3,
  116. } xsync_device_type_t;
  117. typedef enum { obtaining_ip_mode_type_static = 0, obtaining_ip_mode_type_dhcp = 1 } obtaining_ip_mode_t;
  118. static inline const char* obtaining_ip_mode_to_string(obtaining_ip_mode_t mode) {
  119. switch (mode) {
  120. case obtaining_ip_mode_type_static:
  121. return "static";
  122. case obtaining_ip_mode_type_dhcp:
  123. return "dhcp";
  124. default:
  125. return "unknown";
  126. }
  127. }
  128. #pragma pack()