test.h 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. /*
  2. * Copyright (c) 2006-2021, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2024-05-30 RuoFeng the first version
  9. */
  10. #ifndef APPLICATIONS_TEST_H_
  11. #define APPLICATIONS_TEST_H_
  12. /*********************↓ define ↓************************/
  13. #define ecodesize sizeof(Record)
  14. #define MAX_e_code_NUM (LOG_AREA_SIZE / ecodesize) // 异常码最大保存值 这个板子给的空间太小 存个20吧
  15. /*********************↑ define ↑************************/
  16. /**
  17. *
  18. *
  19. *
  20. *
  21. * */
  22. /*********************↓ include ↓************************/
  23. #include "stdio.h"
  24. #include "string.h"
  25. /*********************↑ include ↑************************/
  26. /**
  27. *
  28. *
  29. *
  30. *
  31. * */
  32. /*********************↓ extern ↓************************/
  33. /*********************↑ extern ↑************************/
  34. /**
  35. *
  36. *
  37. *
  38. *
  39. * */
  40. /********************↓ declaration ↓***********************/
  41. typedef struct
  42. {
  43. uint32_t Time_Stampe; // 时间戳
  44. uint16_t code; // 异常码
  45. uint16_t para; // 附带参数
  46. uint32_t num; // 序号
  47. char detail[52]; // 内容
  48. } Record;
  49. typedef enum
  50. {
  51. e_reboot = 1,
  52. e_current_0,
  53. e_fan_err,
  54. e_limit_tape_err,
  55. e_limit_up_err,
  56. e_limit_down_err,
  57. e_ResetRunStaManual,
  58. e_jump_collA,
  59. e_jump_collB,
  60. e_set_rs_RESET, // 0-流程中 1-手动指令 2-异常工作状态
  61. e_set_rs_COLL_A, // 0-流程中
  62. e_set_rs_COLL_B, // 0-流程中 1-过期跳过 2-coll校验失败
  63. e_set_rs_Tape_Move, // 0-流程中 1-过期跳过 2-coll校验失败
  64. e_set_rs_Press_Tape, // 0-流程中 1-coll校验失败
  65. e_set_rs_Take_Photo, // 0-流程中
  66. e_cam_offline, // 对焦拍照时相机未连接 1-流程中 2-手动测试
  67. e_StepUp_Fail, // 步进上行超时
  68. e_StepDown_Fail, // 步进下行超时
  69. e_AutoTest,
  70. /*** 一键测试
  71. * 0-开始
  72. * */
  73. e_TestLed,
  74. e_TapeTest, // 0-开始 1-手动退出 2-执行完毕退出
  75. e_TakePhoto, // 执行一次
  76. e_Collect, // 0-开始 1-结束
  77. e_Traplamp, // 0-开始 1-结束
  78. e_SwitchDown, // 0-开始 1-结束
  79. e_TestFB, // 0-开始 1-结束
  80. e_ReWorkDay, // 今日结束
  81. e_Reboot, // 10秒前设备开机
  82. e_clearecode, // ecode空间回收
  83. e_getin_luxwork, // 光控工作开始
  84. e_getout_luxwork, // 光控工作结束
  85. e_exit_luxwork, // 光控工作退出
  86. e_update, // 升级相关
  87. e_cam_timeout, // 图像传输超时
  88. e_rtu_net_fail, // rtu网络错误
  89. e_work_time_err, // Work Time Setdef
  90. e_manual_mode, // 手动触发模式
  91. e_demo_mode, // 演示模式
  92. e_CMD_list, // 指令操作记录
  93. e_rain_tig, // 雨控触发记录
  94. e_rtc_fail, // 时间异常
  95. e_rtu_fail, // rtu无法正常通信
  96. e_CNT_RESET, // 清空胶带计数
  97. e_Hk_Take_io, // 记录拍照
  98. e_work_mode_pkg, // 记录工作包
  99. e_typeMAX
  100. } ecode_list;
  101. /*********** 测试相关参数 ************/
  102. typedef enum
  103. {
  104. tt_auto = 0,
  105. tt_takephoto,
  106. tt_collect,
  107. tt_Traplamp,
  108. tt_fb_test,
  109. tt_switchled,
  110. tt_scm,
  111. tt_typemax
  112. } JD_Test_Type;
  113. typedef struct
  114. {
  115. uint8_t autotest;
  116. uint8_t collect_test;
  117. uint8_t takephoto_test;
  118. uint8_t traplamp_test;
  119. uint8_t switchled_test;
  120. uint8_t FBtest;
  121. uint8_t scm_test;
  122. } JD_Test_Sta;
  123. typedef enum // 传输该按钮的活动状态
  124. {
  125. tig_OFF = 0, // 触发状态为失效
  126. tig_ON // 触发状态为生效
  127. } ts_def;
  128. typedef enum // 传输该按钮的活动状态
  129. {
  130. rs_normal = 0,
  131. rs_force
  132. } rs_def;
  133. typedef struct
  134. {
  135. ts_def autotest_t;
  136. ts_def collect_t;
  137. ts_def takephoto_t;
  138. ts_def traplamp_t;
  139. ts_def switchled_t;
  140. ts_def fb_test_t;
  141. ts_def scm_test_t;
  142. } Reflash_test_sta;
  143. typedef enum // 拍照测试的类型
  144. {
  145. jt_auto = 0,
  146. jt_aftake,
  147. jt_takenow,
  148. jt_typemax
  149. } bjt_def;
  150. typedef enum // 步进电机运动的类型
  151. {
  152. cm_upstart = 0,
  153. cm_upstop,
  154. cm_downstart,
  155. cm_downstop,
  156. cm_typemax
  157. } cm_def;
  158. typedef enum
  159. {
  160. le_limit_tape = 0,
  161. le_limit_up,
  162. le_limlt_dowm,
  163. le_typemax
  164. } le_def;
  165. typedef struct
  166. {
  167. RTC_DateTypeDef *date;
  168. RTC_TimeTypeDef *time;
  169. uint8_t code;
  170. uint8_t para;
  171. uint8_t a;
  172. uint8_t b;
  173. } se_modle;
  174. /*********** 测试相关参数 ************/
  175. void HMI_WRITE_Force(char *fmt, ...);
  176. void Recode_e_code(ecode_list code, uint16_t para , char *detail);
  177. Res_def JD_Check_Test_Sta(JD_Test_Type type);
  178. void Check_TestFree(void);
  179. char *makeJson_Config_BDH(char *deviceId);
  180. void Report_Limit_Error(le_def type);
  181. uint32_t tm_to_timestamp(void);
  182. /********************↑ declaration ↑***********************/
  183. /**
  184. *
  185. *
  186. *
  187. *
  188. * */
  189. /*********************↓ global variables ↓************************/
  190. /*********************↑ global variables ↑************************/
  191. /**
  192. *
  193. *
  194. *
  195. *
  196. * */
  197. /********************* 250313 BSP_RTC ********************/
  198. #define Reg_Read_Fail 0x7FFF
  199. typedef enum //取被写入的RTC寄存器位置
  200. {
  201. RayTigCnt_DR2 = 2, // RTC_BKP_DR2
  202. PhotoBase_DR8 = 8, // RTC_BKP_DR8 拍照基点低16位(F1备份寄存器为16位)
  203. PhotoBase_DR9 = 9, // RTC_BKP_DR9 拍照基点高16位
  204. PhotoBase_DR10 = 10, // RTC_BKP_DR10 拍照基点有效性魔数(最后写, 作提交标记)
  205. // RTC_Reg_4_5 , // RTC_BKP_DR3
  206. // RTC_Reg_CRC , // RTC_BKP_DR4
  207. } BKP_Reg_Num;
  208. typedef enum //用于定位读写RTC备份寄存器时指定位置
  209. {
  210. Reg_Low = 0, //取 低 8 位
  211. Reg_Middle , //取 8 -16 位
  212. Reg_High , //取 16-24 位
  213. Reg_Very_High , //取 24-32 位
  214. Reg_Low_16 , //取 低16 位
  215. Reg_High_16 , //取 高16 位
  216. Reg_All , //取 32 位
  217. } BKP_Reg_Pos;
  218. uint16_t RTC_GET_TigVal(void);
  219. void RTC_SET_TigVal(uint16_t val);
  220. uint16_t Get_REMAIN(void); // 剩余量% (由已拍张数换算)
  221. /* RTC备份寄存器读写: F1每寄存器16位; Reg_High_16/Reg_All 未实现, 只用 Reg_Low_16 */
  222. uint32_t BSP_Read_RTC_Reg(BKP_Reg_Num reg_num, BKP_Reg_Pos type);
  223. uint8_t BSP_Write_RTC_Reg(BKP_Reg_Num reg_num, BKP_Reg_Pos type, uint32_t w_data);
  224. #define TRUE 1U
  225. #define FALSE 0U
  226. /********************* 250313 BSP_RTC ********************/
  227. #endif /* APPLICATIONS_TEST_H_ */