main.h 67 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755
  1. /* USER CODE BEGIN Header */
  2. /**
  3. ******************************************************************************
  4. * @file : main.h
  5. * @brief : Header for main.c file.
  6. * This file contains the common defines of the application.
  7. ******************************************************************************
  8. * @attention
  9. *
  10. * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
  11. * All rights reserved.</center></h2>
  12. *
  13. * This software component is licensed by ST under Ultimate Liberty license
  14. * SLA0044, the "License"; You may not use this file except in compliance with
  15. * the License. You may obtain a copy of the License at:
  16. * www.st.com/SLA0044
  17. *
  18. ******************************************************************************
  19. */
  20. /* USER CODE END Header */
  21. /* Define to prevent recursive inclusion -------------------------------------*/
  22. #ifndef __MAIN_H
  23. #define __MAIN_H
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. /* Includes ------------------------------------------------------------------*/
  28. #include "stm32f4xx_hal.h"
  29. /* Private includes ----------------------------------------------------------*/
  30. /* USER CODE BEGIN Includes */
  31. #include <stdio.h>
  32. #include <stdlib.h>
  33. #include <stdarg.h>
  34. #include <string.h>
  35. #include "W25QXX.h"
  36. /* USER CODE END Includes */
  37. /* Exported types ------------------------------------------------------------*/
  38. /* USER CODE BEGIN ET */
  39. //******************************************************************
  40. //Type define / Macro / Utility
  41. #define HTK //Some utility
  42. #define DEBUG_FUNC //comment this line when going to build a FORMAL one
  43. //******************************************************************
  44. #ifdef DEBUG_FUNC
  45. //Print out debug message ON/OFF
  46. //#define DISABLE_PRINT_DEBUG_MSG //Disable print out debug message
  47. //#define DISABLE_PRINT_RTOS_MSG //Disable print out freeRTOS runtime message
  48. //#define ENABLE_PRINT_IMCP_MSG //Enable print out update port TX/RX frame message
  49. #ifdef ENABLE_PRINT_IMCP_MSG
  50. #define ENABLE_PRINT_IMCP_SPEC_MSG
  51. #define PRINT_IMCP_MSG_ONLY_ON_UPDATEPORT
  52. #endif //ENABLE_PRINT_IMCP_MSG
  53. #endif //DEBUG_FUNC
  54. //******************************************************************
  55. #ifdef DEBUG_FUNC
  56. //Debug Function
  57. //#define DISABLE_CCID_PROTECT
  58. //#define DISABLE_GROUND_FAULT_PROTECT //ALARM_GROUND_FAIL
  59. //#define DISABLE_OVP_PROTECT //for calibration and test
  60. //#define DISABLE_UVP_PROTECT //for calibration and test
  61. ////#define DISABLE_ALARM_CIRCUIT_SHORT
  62. //#define DISABLE_RELAY_WELDING_PROTECT //ALARM_RELAY_DRIVE_FUALT
  63. // //Threshold value wait to be modified
  64. //#define DEBUG_ALARM_GROUND_FAIL
  65. #endif //DEBUG_FUNC
  66. //******************************************************************
  67. //******************************************************************
  68. //FORMAL Function
  69. #define MODIFY_IMCP
  70. //---------------------------------------------------------------
  71. //---------------------------------------------------------------
  72. //---------------------------------------------------------------
  73. #define MODIFY_COLD_LOAD_PICKUP_DELAY
  74. #ifdef MODIFY_COLD_LOAD_PICKUP_DELAY
  75. #define COLD_LOAD_PICKUP_DELAY_TIME_MAX_RANGE_SEC (175)
  76. //#define COLD_LOAD_PICKUP_DELAY_TIME_MAX_RANGE_SEC (10)
  77. #endif
  78. //Prevent BUFFER OVERLOAD
  79. // @ PROTOCOL_MESSAGE_QUERY_MODEL_NAME
  80. // @ PROTOCOL_MESSAGE_QUERY_SN
  81. #define MODIFY_UNDEFINED_MODEL_NAME_AND_SN_ISSUE
  82. #define MODIFY_CONFIG_MODEL_NAME
  83. #define MODIFY_CONFIG_SN
  84. //---------------------------------------------------------------
  85. //---------------------------------------------------------------
  86. #define MODIFY_CP_TASK_CTRL_CP_PWM
  87. #define MODIFY_CP_TASK_CTRL_CP_PWM_BELOW_SIX
  88. //---------------------------------------------------------------
  89. #define MODIFY_CPTASK_HEAD
  90. //---------------------------------------------------------------
  91. //******************************************************************
  92. #define FUNC_FW_VER_TRACE
  93. #ifdef FUNC_FW_VER_TRACE
  94. #define FW_VER_TYPE_DEVELOP (0)
  95. #define FW_VER_TYPE_FORMAL (1)
  96. #define FW_VER_TYPE_TEST (2)
  97. //SPECIFY FIRMWARE VERSION
  98. //#define FW_VER_TYPE FW_VER_TYPE_DEVELOP
  99. //#define FW_VER_NUM (17) //D0.17
  100. #define FW_VER_TYPE FW_VER_TYPE_FORMAL
  101. //#define FW_VER_NUM (7000) //V0.07
  102. //#define FW_VER_NUM (8000) //V0.08 20210113
  103. //#define FW_VER_NUM (9000) //V0.09 20220415
  104. //#define FW_VER_NUM (10000) //V0.10 20220621
  105. //#define FW_VER_NUM (11000) //V0.11 20221128
  106. //#define FW_VER_NUM (12000) //V0.12 20230210
  107. //#define FW_VER_NUM (13000) //V0.13 20230301
  108. //#define FW_VER_NUM (14000) //V0.14 20240312
  109. //#define FW_VER_NUM (15000) //V0.15 20240321
  110. //#define FW_VER_NUM (16000) //V0.16 20240329
  111. //#define FW_VER_NUM (17000) //V0.17 20240521
  112. //#define FW_VER_NUM (18000) //V0.18 20240613
  113. //#define FW_VER_NUM (19000)
  114. //#define FW_VER_NUM (20000) //V0.20 20241018 EVT2 ATE
  115. //#define FW_VER_NUM (21000) //V0.21 20241028 EVT2 Burning
  116. #define FW_VER_NUM (22000) //V0.22 20241113
  117. //#define FW_VER_TYPE FW_VER_TYPE_TEST
  118. //#define FW_VER_NUM (7000) //T0.07
  119. ////#define FW_VER_NUM (107000) //T1.07 test for PHA
  120. //---------------------------------------------------------------
  121. #if (FW_VER_NUM >= 7000) //>= V0.07
  122. #define MODIFY_PROTOCOL_MESSAGE_CONFIG_RELAY_OUTPUT_CHECK_LEGACY_REQUEST
  123. #define MODIFY_PROTOCOL_MESSAGE_CONFIG_RELAY_OUTPUT_CHECK_ALARM_CODE
  124. #define MODIFY_AW_CP_TASK_CSU_0_1_CHARGING_MODE_STOP_WITHOUT_STATE_C
  125. #define MODIFY_CPTASK_CSU_0_1_CHARGE_MODE
  126. #define MODIFY_ADCTASK_CP_STATE_CHANGE
  127. #define MODIFY_ALARMTASK_CP_ERROR_RECOVER
  128. #define MODIFY_MCU_PWM_SET_VALUE_CP
  129. #define FUNC_DEBUG_MSG_SET_CHARGER_MODE
  130. #define FUNC_DEBUG_MSG_CP_STATE
  131. #define FUNC_CURRENT_CP_PWM_DATA
  132. #define FUNC_CHECK_REQ_AND_CP_WHEN_SET_CP_PWM
  133. //-----------------------------------------------
  134. //GB Model:
  135. //Handshake Mode: CP to D or E => Stop PWM
  136. //Charging Mode: CP to D or E => Stop PWM
  137. //Stop Mode: CP to D or E => Stop PWM
  138. #define FUNC_RULE_GB_202108
  139. #ifdef FUNC_RULE_GB_202108
  140. #define FUNC_BLOCK_CSU_CONFIG_CP_PWM_DUTY
  141. #define MODIFY_MODE_HANDSHAKE_STOP_PWM_WITHOUT_OK_STATE
  142. #define MODIFY_MODE_CHARGING_STOP_PWM_WITHOUT_OK_STATE
  143. #define MODIFY_MODE_STOP_STOP_PWM_WITHOUT_OK_STATE
  144. #endif //FUNC_RULE_GB_202108
  145. //-----------------------------------------------
  146. #define MODIFY_CORRECTION_CHECK
  147. //#define FUNC_CSU_CMD_DEBUG
  148. #define TRIM_CCID_SELFTEST
  149. #endif
  150. //---------------------------------------------------------------
  151. #if (FW_VER_NUM >= 8000) //>= V0.08
  152. #define FIX_FUNC_CHECK_REQ_AND_CP_WHEN_SET_CP_PWM //Fixed the problem that the basic model (without CSU) cannot output PWM
  153. #define MODIFY_CP_DETECTION_STATE_F //Modify the identifiable CP signal State F (-12V)
  154. #endif
  155. //---------------------------------------------------------------
  156. #if (FW_VER_NUM >= 9000) //>= V0.09
  157. #define FUNC_BUILD_DATE_TIME
  158. #define MODIFY_POWER_CONSUME_ACCU_TIMER
  159. #ifdef MODIFY_POWER_CONSUME_ACCU_TIMER
  160. #define POWER_CONSUME_ACCU_TIMEOUT_SPEC (10) //ms
  161. #endif
  162. #define MODIFY_MODE_STOP_TO_CHARGE_PROCESS
  163. //Modify from AX
  164. #define MODIFY_CP_STATE_F_SAMPLE_NUM_THRESHOLD
  165. #define CP_STATE_F_SAMPLE_NUM_THRESHOLD (830)
  166. #define FUNC_CSU_CMD_DEBUG
  167. #define FUNC_CP_VARIABLE_MAX_STATE_COUNTER
  168. #define FUNC_CP_VARIABLE_MAX_STATE_COUNTER_C_TO_D_SET_3_FOR_PASS_TERTEC_TEST
  169. #define FUNC_GET_TRIP_TIME
  170. //-----------------------------------------------
  171. //Testing !
  172. //#define FORCE_VER_WITH_T_PREFIX
  173. //#define DISABLE_CCID_PROTECT
  174. //Testing !
  175. #endif
  176. //---------------------------------------------------------------
  177. #if (FW_VER_NUM >= 10000) //>= V0.10
  178. ////#define FUNC_REPLACE_CORMEX_WITH_VAC_FOR_CNS_MODEL
  179. ////#define FUNC_AUTO_MODIFY_CCID_MODULE
  180. ////#define DISABLE_OS_ETH_TASK (USB Initial process included)
  181. #define FUNC_RS485_SLAVE //Function of perform a RS485 device (slave) used by master (ex: DC model) controller
  182. #define FUNC_FORCE_RUN_CSU_MODE_WITH_DC_MODELNAME //For DC Model CSU used via RS485
  183. #define MODIFY_DC_RS485_UPGRADE_ISSUE
  184. #define MODIFY_SET_CP_PWM_DUTY_WHEN_GET_NEW_VAL
  185. #define MODIFY_CP_NEG_JUDGMENT_PROCESS
  186. //-----------------------------------------------
  187. //Testing !
  188. //#define FORCE_VER_WITH_T_PREFIX
  189. //#define DISABLE_OCP_PROTECT
  190. //#define LOCAL_LINK_BLE
  191. //#define DISABLE_UVP_PROTECT
  192. //Testing !
  193. //-----------------------------------------------
  194. #endif
  195. //---------------------------------------------------------------
  196. #if (FW_VER_NUM >= 11000) //>= V0.11
  197. #define FUNC_BLOCK_CSU_CMD_SET_DUTY_WHEN_ALARM_CP_F_STATE
  198. //OCP Issue
  199. //#define MODIFY_OCP_MAGNIFICATION //RULE CE: fix OCP Magnification
  200. #define FUNC_OCP_WITH_PP
  201. #define MODIFY_OCP_PROC_WITH_MODELNAME_IDX_3_EURO_SPEC
  202. #define MODIFY_CCID_MODULE_CORMEX_RECOVER_AC_DC
  203. //-----------------------------------------------
  204. //Testing !
  205. //#define FORCE_VER_WITH_T_PREFIX
  206. //#define DISABLE_OCP_PROTECT
  207. //Testing !
  208. //-----------------------------------------------
  209. #endif
  210. //---------------------------------------------------------------
  211. #if (FW_VER_NUM >= 12000) //>= V0.12
  212. //Fix CE OCP specification
  213. //undefine MODIFY_OCP_MAGNIFICATION
  214. //#define FUNC_RELAXSPEC_GROUND_FAULT_PROTECT
  215. //-----------------------------------------------
  216. //Testing !
  217. //#define FORCE_VER_WITH_T_PREFIX
  218. //#define DISABLE_OCP_PROTECT
  219. //Testing !
  220. //-----------------------------------------------
  221. #endif
  222. //---------------------------------------------------------------
  223. #if (FW_VER_NUM >= 13000) //>= V0.13
  224. #define FUNC_ZERO_CURRENT_WHEN_OUTP_OFF
  225. #define FIX_OUTP_PWM_WHEN_ALARM_RECOVER_IN_4SEC
  226. #define FUNC_RELAY_OFF_WHEN_CSU_CMD_TIMEOUT
  227. #ifdef FUNC_RELAY_OFF_WHEN_CSU_CMD_TIMEOUT
  228. #define CSU_CMD_TIMEOUT_SEC (10)
  229. #endif
  230. #define FUNC_FLASH_UPDATE_CONFIG_BOTH_PRIMARY_AND_BACKUP
  231. #define FUNC_FLASH_RESTORE_CONFIG_WHEN_PRIMARY_LOSS
  232. #define FUNC_FLASH_CONFIG_APPEND_CRC
  233. #define FUNC_RELAY_OFF_WHEN_GET_TWICE_OFF_CMD
  234. #define FUNC_REQUEST_OFF_WHEN_GET_TWICE_OFF_CMD
  235. #define FUNC_REQUEST_OFF_WHEN_CSU_CMD_TIMEOUT
  236. #define FUNC_ADD_FW_VER_WITH_GUN_TYPE_NACS
  237. #define FUNC_ADD_FW_VER_WITH_NET_TYPE_WIFI_AND_4G
  238. #define FUNC_SHOW_CSU_CONFIG_LED_ACTION_INFO
  239. #define FUNC_BOOT_TICK
  240. #define FUNC_UPDATE_ROTARY_SWITCH_SETTING_AFTER_PARSE_MODELNAME
  241. #define FUNC_STM32_FLASH_INFO
  242. #define FUNC_STM32_FLASH_OPTION_BYTES
  243. #define MODIFY_UART_TX_LEN_FROM_U8_TO_U16
  244. #define FUNC_UART_IAP_TX_BUF_INIT_ZERO
  245. #define FUNC_ADD_AC_DC_LEAK_TIMER
  246. #define FUNC_TEMP_SENSOR_WITH_NEG_VALUE
  247. #define FUNC_SHOW_CORRECTION_DATA
  248. #define FUNC_SHOW_RELAY_INFO
  249. #define FUNC_MODIFY_LEAK_AC_DISPLAY
  250. #define MODIFY_AC_EVSE_STATUS_MAX_CHARGING_CURRENT_VARIABLE
  251. #define FUNC_MODIFY_CP_PWM_CTRL_20231225
  252. #define MODIFY_FUNC_CRMS_CAL
  253. #define MODIFY_FUNC_GFRMS_CAL
  254. #define MODIFY_FUNC_VRMS_CAL2
  255. #define MODIFY_PROTOCOL_MESSAGE_CONFIG_RELAY_OUTPUT_CHECK_CP_PWM
  256. //******************************* [AWeMP BEG]
  257. //CSU PROJECT: AWeMP
  258. //RFID(ttyS2), PollCharge: LineNo. 5075
  259. #define FUNC_EMPX10_CUSTOMIZE
  260. #ifdef FUNC_EMPX10_CUSTOMIZE
  261. #define FUNC_EMPX10_CUSTOMIZE_RS485_CLIENT_ADDRESS
  262. #define EMPX10_RS485_ADDR_CSU (0x00)
  263. #define EMPX10_RS485_ADDR_MIN (0x00)
  264. #define EMPX10_RS485_ADDR_MAX (0x09)
  265. #define EMPX10_RS485_ADDR_BROADCAST (0xFF)
  266. #define FUNC_EMPX10_CUSTOMIZE_CP_STATE_OPERATION
  267. #define FUNC_EMPX10_CUSTOMIZE_RUN_CSU_MODE
  268. #define FUNC_EMPX10_SET_FIXED_CURRENT_20A //240V * 20A = 4800W; 4.8kW * 10 = 48kW
  269. #ifdef FUNC_RELAY_OFF_WHEN_CSU_CMD_TIMEOUT
  270. #undef CSU_CMD_TIMEOUT_SEC
  271. #define CSU_CMD_TIMEOUT_SEC (100) //from 10 sec to 100 sec
  272. #endif
  273. //#define DEBUG_EMPX10_COMM
  274. #endif //FUNC_EMPX10_CUSTOMIZE
  275. //******************************* [AWeMP END]
  276. //-----------------------------------------------
  277. //Testing !
  278. //#define FORCE_VER_WITH_T_PREFIX
  279. //#define FUNC_DISABLE_SOME_ALARM_FOR_ATE_SITE_SAMPLE_TEST
  280. //#ifdef FUNC_DISABLE_SOME_ALARM_FOR_ATE_SITE_SAMPLE_TEST
  281. //#define FORCE_VER_WITH_F_PREFIX //F0.13 only test in facrory
  282. //#define DISABLE_CCID_PROTECT
  283. //#define DISABLE_GROUND_FAULT_PROTECT
  284. //#define DISABLE_OVP_PROTECT
  285. //#define DISABLE_UVP_PROTECT
  286. //#define DISABLE_OCP_PROTECT
  287. //#endif
  288. //#ifdef ENABLE_PRINT_IMCP_SPEC_MSG
  289. //#undef ENABLE_PRINT_IMCP_SPEC_MSG
  290. //#endif
  291. //
  292. //#ifdef PRINT_IMCP_MSG_ONLY_ON_UPDATEPORT
  293. //#undef PRINT_IMCP_MSG_ONLY_ON_UPDATEPORT
  294. //#endif
  295. //#define ENABLE_PRINT_IMCP_MSG
  296. //Testing !
  297. //-----------------------------------------------
  298. #endif
  299. //---------------------------------------------------------------
  300. #if (FW_VER_NUM >= 14000) //>= V0.14
  301. #define FUNC_SIMU_CHARGE_CURRENT_OUTPUT
  302. //-----------------------------------------------
  303. //Testing !
  304. //#define FORCE_VER_WITH_T_PREFIX
  305. //Testing !
  306. //-----------------------------------------------
  307. #endif
  308. //---------------------------------------------------------------
  309. #if (FW_VER_NUM >= 15000) //>= V0.15
  310. #define FUNC_EMPX10_SEAMUS_MODIFY
  311. #ifdef FUNC_EMPX10_SEAMUS_MODIFY
  312. //#define MODIFY_EMPX10_ALARM_SPEC_RELAY_LN
  313. #define DISABLE_CP_ALARM_PROTECT
  314. #define DISABLE_GROUND_FAULT_PROTECT
  315. #define DISABLE_HANDSHAKE_PROTECT
  316. #define DISABLE_COLD_LOAD_PICKUP
  317. #endif //FUNC_EMPX10_SEAMUS_MODIFY
  318. //-----------------------------------------------
  319. //Testing !
  320. //#define FORCE_VER_WITH_T_PREFIX
  321. //Testing !
  322. //-----------------------------------------------
  323. #endif
  324. //---------------------------------------------------------------
  325. #if (FW_VER_NUM >= 16000) //>= V0.16
  326. //////#define FUNC_EMPX10_SET_FIXED_CURRENT_20A //240V * 20A = 4800W; 4.8kW * 10 = 48kW
  327. #ifdef FUNC_EMPX10_SET_FIXED_CURRENT_20A
  328. #undef FUNC_EMPX10_SET_FIXED_CURRENT_20A
  329. #define FUNC_EMPX10_SET_FIXED_CURRENT_16A //200V * 16A = 3200W; 3.2kW * 10 = 32kW
  330. #endif
  331. #define FUNC_EMPX10_LED
  332. //-----------------------------------------------
  333. //Testing !
  334. //#define FORCE_VER_WITH_T_PREFIX
  335. //Testing !
  336. //-----------------------------------------------
  337. #endif
  338. //---------------------------------------------------------------
  339. #if (FW_VER_NUM >= 17000) //>= V0.17
  340. //#define FIX_EMPX10_LED_RX_NG_DATA
  341. #define FIX_RS485_UNKNOW_MSG
  342. //-----------------------------------------------
  343. //Testing !
  344. //#define FORCE_VER_WITH_T_PREFIX
  345. //#define DISABLE_UVP_PROTECT
  346. //Testing !
  347. //-----------------------------------------------
  348. #endif
  349. //---------------------------------------------------------------
  350. #if (FW_VER_NUM >= 18000) //>= V0.18
  351. #define FUNC_EMPX10_LED_ALARM_FIX_20240730
  352. //-----------------------------------------------
  353. //Testing !
  354. //#define FORCE_VER_WITH_T_PREFIX
  355. //#define DISABLE_UVP_PROTECT
  356. //#define FUNC_TEST_SIMU_LOAD_BUTTON
  357. //for eMP EE Test----------------------
  358. //#define FUNC_TEST_RELAY_ALWAYS_ON
  359. //#define DISABLE_RELAY_WELDING_PROTECT
  360. //-------------------------------------
  361. //Testing !
  362. //-----------------------------------------------
  363. #endif
  364. //---------------------------------------------------------------
  365. #if (FW_VER_NUM >= 20000) //>= V0.20
  366. #define FUNC_SWITCH_RELAY_WELDING_PROTECT //CCID/OCP
  367. #define FUNC_DISABLE_LED_CMD_CHECK
  368. #define FUNC_EMP_FAN_CTRL_USE_LOCKER_IO
  369. #ifdef FUNC_EMP_FAN_CTRL_USE_LOCKER_IO
  370. //#define OUT_Locker_Lock_Pin GPIO_PIN_11
  371. //#define OUT_Locker_Lock_GPIO_Port GPIOF
  372. #define SET_EMP_FAN(bON) (HAL_GPIO_WritePin(GPIOF, GPIO_PIN_11, (bON) ? GPIO_PIN_SET : GPIO_PIN_RESET))
  373. #define GET_EMP_FAN (HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_11) == GPIO_PIN_SET ? ON : OFF)
  374. #endif //FUNC_EMP_FAN_CTRL_USE_LOCKER_IO
  375. //-----------------------------------------------
  376. //Testing !
  377. //#define FORCE_VER_WITH_T_PREFIX
  378. //#define DISABLE_RELAY_WELDING_PROTECT
  379. //#define DISABLE_UVP_PROTECT
  380. //#define FUNC_TEST_SIMU_LOAD_BUTTON
  381. //Testing !
  382. //-----------------------------------------------
  383. #endif
  384. //---------------------------------------------------------------
  385. #if (FW_VER_NUM >= 21000) //>= V0.21
  386. //-----------------------------------------------
  387. //Testing !
  388. //#define FORCE_VER_WITH_T_PREFIX
  389. //#define DISABLE_RELAY_WELDING_PROTECT
  390. //#define DISABLE_OCP_PROTECT
  391. //#define DISABLE_CCID_PROTECT
  392. //#define DISABLE_UVP_PROTECT
  393. //#define FUNC_TEST_SIMU_LOAD_BUTTON
  394. //Testing !
  395. //-----------------------------------------------
  396. #endif
  397. //---------------------------------------------------------------
  398. #if (FW_VER_NUM >= 22000) //>= V0.22
  399. #define FUNC_RELAY_OFF_WHEN_CP_NOT_STATE_C
  400. #define FUNC_VERSION_USE_NEW_SPEC_20240926 //define FUNC_VERSION_FOR_LAB_CERTIFICATE_SPEC (xx.xx.A1) else (xx.xx.A0)
  401. #define MODIFY_FLASH_OPERATION_20241104
  402. #define FUNC_CALC_FLASH_CRC_IN_CRITICAL
  403. #define FUNC_RESET_CONNECTOR_PLUGIN_TIMES
  404. #define FUNC_SHOW_CSU_CONFIG_LED_BRIGHTNESS
  405. //-----------------------------------------------
  406. //Testing !
  407. #define FORCE_VER_WITH_T_PREFIX
  408. //#define DISABLE_RELAY_WELDING_PROTECT
  409. //#define DISABLE_OCP_PROTECT
  410. //#define DISABLE_CCID_PROTECT
  411. //#define DISABLE_UVP_PROTECT
  412. #define FUNC_TEST_SIMU_LOAD_BUTTON
  413. //Testing !
  414. //-----------------------------------------------
  415. #endif
  416. //---------------------------------------------------------------
  417. //---------------------------------------------------------------
  418. #endif //FUNC_FW_VER_TRACE
  419. //******************************************************************
  420. //Type define
  421. #ifdef HTK
  422. #define HTK_USE_XPRINT
  423. #ifdef HTK_USE_XPRINT
  424. #define XP(FMT, ARGS...) (printf(FMT, ##ARGS))
  425. #else
  426. #define XP(FMT, ARGS...)
  427. #endif
  428. //#define HTK_USE_XPRINT_TEST
  429. #ifdef HTK_USE_XPRINT_TEST
  430. #define XT(FMT, ARGS...) (printf(FMT, ##ARGS))
  431. #define XRowWidth(c, count) (HTK_PrintRow((c), (count)))
  432. #define XRowS(c) (HTK_PrintRow((c), (20)))
  433. #define XRowM(c) (HTK_PrintRow((c), (40)))
  434. #define XRowL(c) (HTK_PrintRow((c), (80)))
  435. #else
  436. #define XT(FMT, ARGS...)
  437. #define XRowWidth(c, count)
  438. #define XRowS(c)
  439. #define XRowM(c)
  440. #define XRowL(c)
  441. #endif
  442. typedef uint8_t byte;
  443. typedef int8_t sbyte;
  444. typedef int64_t s64;
  445. typedef int32_t s32;
  446. typedef int16_t s16;
  447. typedef int8_t s8;
  448. typedef const int64_t sc64;
  449. typedef const int32_t sc32;
  450. typedef const int16_t sc16;
  451. typedef const int8_t sc8;
  452. typedef __IO int64_t vs64;
  453. typedef __IO int32_t vs32;
  454. typedef __IO int16_t vs16;
  455. typedef __IO int8_t vs8;
  456. typedef __I int64_t vsc64;
  457. typedef __I int32_t vsc32;
  458. typedef __I int16_t vsc16;
  459. typedef __I int8_t vsc8;
  460. typedef uint64_t u64;
  461. typedef uint32_t u32;
  462. typedef uint16_t u16;
  463. typedef uint8_t u8;
  464. typedef const uint64_t uc64;
  465. typedef const uint32_t uc32;
  466. typedef const uint16_t uc16;
  467. typedef const uint8_t uc8;
  468. typedef __IO uint64_t vu64;
  469. typedef __IO uint32_t vu32;
  470. typedef __IO uint16_t vu16;
  471. typedef __IO uint8_t vu8;
  472. typedef __I uint64_t vuc64;
  473. typedef __I uint32_t vuc32;
  474. typedef __I uint16_t vuc16;
  475. typedef __I uint8_t vuc8;
  476. #define HTK_NULL 0
  477. #define HTK_UNUSED(X) (void)X /* To avoid gcc/g++ warnings */
  478. typedef u8 HTK_BOOL;
  479. #define HTK_TRUE 1
  480. #define HTK_FALSE 0
  481. #define HTK_ENABLE 1
  482. #define HTK_DISABLE 0
  483. #define BIT_FLAG_VAL(pos) (1U << (pos))
  484. #define BIT_SET(x, pos) ((x) |= BIT_FLAG_VAL(pos))
  485. #define BIT_CLEAR(x, pos) ((x) &= (~BIT_FLAG_VAL(pos)))
  486. #define BIT_TOGGLE_(x, pos) ((x) ^= BIT_FLAG_VAL(pos)
  487. #define BIT_CHECK(x, pos) ((x) & BIT_FLAG_VAL(pos))
  488. #define BIT_GET(x, pos) (((x) & BIT_FLAG_VAL(pos)) >> (pos))
  489. #define LOOP_SHIFT_U8(x, n) (((n) >= 0) ? (((x) << ( 8 - (n))) | ((x) >> (n))) : (((x) >> ( 8 - ((-1) * (n)))) | ((x) << ((-1) * (n)))))
  490. #define LOOP_SHIFT_U16(x, n) (((n) >= 0) ? (((x) << ( 16 - (n))) | ((x) >> (n))) : (((x) >> ( 16 - ((-1) * (n)))) | ((x) << ((-1) * (n)))))
  491. #define LOOP_SHIFT_U32(x, n) (((n) >= 0) ? (((x) << ( 32 - (n))) | ((x) >> (n))) : (((x) >> ( 32 - ((-1) * (n)))) | ((x) << ((-1) * (n)))))
  492. u8 GetBit1Num(u32 x);
  493. //Little-Endian
  494. #define HTK_U16_BYTE0(vU16) (*(((u8*)&(vU16)) + 0))
  495. #define HTK_U16_BYTE1(vU16) (*(((u8*)&(vU16)) + 1))
  496. #define HTK_U16_BYTE(vU16, n) (*(((u8*)&(vU16)) + (n)))
  497. #define HTK_U16(vU8) (*(((u16*)&(vU8)) + 0))
  498. #define HTK_U32_BYTE0(vU32) (*(((u8*)&(vU32)) + 0))
  499. #define HTK_U32_BYTE1(vU32) (*(((u8*)&(vU32)) + 1))
  500. #define HTK_U32_BYTE2(vU32) (*(((u8*)&(vU32)) + 2))
  501. #define HTK_U32_BYTE3(vU32) (*(((u8*)&(vU32)) + 3))
  502. #define HTK_U32_BYTE(vU32, n) (*(((u8*)&(vU32)) + (n)))
  503. #define HTK_U32(vU8) (*(((u32*)&(vU8)) + 0))
  504. #define HTK_U32_WORD0(vU32) (*(((u16*)&(vU32)) + 0))
  505. #define HTK_U32_WORD1(vU32) (*(((u16*)&(vU32)) + 1))
  506. #define HTK_U32_WORD(vU32, n) (*(((u16*)&(vU32)) + (n)))
  507. //#define HTK_U64_BYTE0(vU64) (*(((u8*)&(vU64)) + 0))
  508. //#define HTK_U64_BYTE1(vU64) (*(((u8*)&(vU64)) + 1))
  509. //#define HTK_U64_BYTE2(vU64) (*(((u8*)&(vU64)) + 2))
  510. //#define HTK_U64_BYTE3(vU64) (*(((u8*)&(vU64)) + 3))
  511. //#define HTK_U64_BYTE4(vU64) (*(((u8*)&(vU64)) + 4))
  512. //#define HTK_U64_BYTE5(vU64) (*(((u8*)&(vU64)) + 5))
  513. //#define HTK_U64_BYTE6(vU64) (*(((u8*)&(vU64)) + 6))
  514. //#define HTK_U64_BYTE7(vU64) (*(((u8*)&(vU64)) + 7))
  515. //#define HTK_U64_BYTEn(vU64, n) (*(((u8*)&(vU64)) + (n)))
  516. //
  517. //#define HTK_U64(vU8) (*(((u64*)&(vU8)) + 0))
  518. //Big-Endian
  519. #define HTK_U16_BE(vU8) ( \
  520. (HTK_U16_BYTE0(vU8) << 8) | \
  521. (HTK_U16_BYTE1(vU8) << 0) \
  522. )
  523. #define HTK_U32_BE(vU8) ( \
  524. (HTK_U32_BYTE0(vU8) << 24) | \
  525. (HTK_U32_BYTE1(vU8) << 16) | \
  526. (HTK_U32_BYTE2(vU8) << 8) | \
  527. (HTK_U32_BYTE3(vU8) << 0) \
  528. )
  529. #define HTK_GET_VAL_MAX(Val1, Val2) ((Val1) >= (Val2) ? (Val1) : (Val2))
  530. #define HTK_GET_VAL_MIN(Val1, Val2) ((Val1) <= (Val2) ? (Val1) : (Val2))
  531. #define HTK_GET_VAL(Bool, Val1, Val2) ((Bool) ? (Val1) : (Val2))
  532. #define HTK_IS_BETWEEN_MINMAX(v, MinVal, MaxVal) ((v) >= (MinVal) && (v) <= (MaxVal))
  533. #define HTK_IS_BETWEEN_MIDDIFF(v, MidVal, DiffVal) (HTK_IS_BETWEEN_MINMAX((v), ((MidVal) - (DiffVal)), ((MidVal) + (DiffVal))))
  534. #define HTK_ROUND_U16(x) (((u16)(x) + 0.5) > (x) ? ((u16)(x)) : ((u16)(x) + 1))
  535. #define HTK_ROUND_U32(x) (((u32)(x) + 0.5) > (x) ? ((u32)(x)) : ((u32)(x) + 1))
  536. #define HTK_ROUND_U64(x) (((u64)(x) + 0.5) > (x) ? ((u64)(x)) : ((u64)(x) + 1))
  537. #define HTK_ROUND_U32_3D(x) (HTK_ROUND_U32((x) * 1000))
  538. #define HTK_ROUND_U32_3D_TO_FLOAT(x) (((float)HTK_ROUND_U32_3D(x)) / 1000)
  539. #define GET_BOX_NUM(ItemNum, ItemNumInOneBox) ((ItemNum) % (ItemNumInOneBox) == 0 ? ((ItemNum) / (ItemNumInOneBox)) : ((ItemNum) / (ItemNumInOneBox)) + 1)
  540. #define MULTI_3D(x)
  541. #define FLOOR_3D(x) ((float)(((uint32_t)((x) * 1000)) / 1000))
  542. //#define HTK_ABS(x) (((x) > 0) ? (x) : ((-1) * (x)))
  543. #define HTK_ABS(x) (((x) >= 0) ? (x) : ((-1) * (x)))
  544. #define HTK_GetPosFromZero(x) (((x) >= 0) ? (x) : 0)
  545. #define HTK_GetNegFromZero(x) (((x) <= 0) ? (x) * (-1) : 0)
  546. #define HTK_U8_MAX (0xFF)
  547. #define HTK_U16_MAX (0xFFFF)
  548. #define HTK_U32_MAX (0xFFFFFFFF)
  549. #define HTK_U64_MAX (0xFFFFFFFFFFFFFFFF)
  550. #define BYTE_TO_BINARY_PATTERN "%c%c%c%c %c%c%c%c"
  551. #define BYTE_TO_BINARY(byte) \
  552. ((byte) & 0x80 ? '1' : '0'), \
  553. ((byte) & 0x40 ? '1' : '0'), \
  554. ((byte) & 0x20 ? '1' : '0'), \
  555. ((byte) & 0x10 ? '1' : '0'), \
  556. ((byte) & 0x08 ? '1' : '0'), \
  557. ((byte) & 0x04 ? '1' : '0'), \
  558. ((byte) & 0x02 ? '1' : '0'), \
  559. ((byte) & 0x01 ? '1' : '0')
  560. //Codes 0 through 31 and 127 (decimal) are unprintable control characters.
  561. //Code 32 (decimal) is a nonprinting spacing character. Codes 33 through 126 (decimal) are printable graphic characters.
  562. #define HTK_IS_DISP_CHAR(c) ((c) >= 32 && (c) <= 126 ? HTK_TRUE : HTK_FALSE)
  563. #define HTK_IS_CTRL_CHAR(c) (!HTK_IS_DISP_CHAR(c))
  564. //#define HTK_ELAPSEDTICKS_U32(BegTick, EndTick) ((EndTick) >= (BegTick) ? ((EndTick) - (BegTick)) : ((HTK_U32_MAX) - (BegTick) + (EndTick)))
  565. //#define HTK_IS_TIMEOUT_U32(BegTick, EndTick, MaxTick) (HTK_ELAPSEDTICKS_U32((BegTick), (EndTick)) > (MaxTick) ? HTK_TRUE : HTK_FALSE)
  566. HTK_BOOL HTK_IsInTime(u32 BegTick, u32 MaxTick);
  567. HTK_BOOL HTK_IsTimeout(u32 BegTick, u32 MaxTick);
  568. typedef struct _HTK_Timer
  569. {
  570. HTK_BOOL m_bStart: 1;
  571. HTK_BOOL m_bTimeout: 1;
  572. u32 m_BegTick;
  573. u32 m_MaxTick;
  574. }
  575. HTK_Timer, *PHTK_Timer;
  576. void HTK_Timer_Reset(PHTK_Timer p);
  577. void HTK_Timer_Start(PHTK_Timer p, u32 MaxTick);
  578. HTK_BOOL HTK_Timer_CheckTimeout(PHTK_Timer p);
  579. uint8_t HTK_CheckSum_Calulate(uint8_t* pBeg, uint32_t len);
  580. HTK_BOOL HTK_CheckSum_Update(uint8_t* pBeg, uint32_t len, uint8_t* pCheckSum);
  581. HTK_BOOL HTK_CheckSum_IsOK(uint8_t* pBeg, uint32_t len, uint8_t* pCheckSum);
  582. void HTK_ByteArray2HexStr(const u8* buf, const u16 BegIdx, const u16 len, char* OutStr, u16 nMaxBytesPerLine, HTK_BOOL bSpace);
  583. void HTK_ByteArray2HexStr_XP(const char* Title, const u8* buf, const u16 BegIdx, const u16 len);
  584. void HTK_ByteArray2HexStr_XT(const char* Title, const u8* buf, const u16 BegIdx, const u16 len);
  585. typedef struct _HTK_MallocHandle
  586. {
  587. s32 m_Total;
  588. s32 m_Allocated;
  589. s32 m_Reserved;
  590. }
  591. HTK_MallocHandle, PHTK_MallocHandle;
  592. void HTK_Malloc_Init(void);
  593. void* HTK_Malloc(s32 size);
  594. s32 HTK_Malloc_BlockTest(s32 BlockSize);
  595. #endif //HTK
  596. //******************************************************************
  597. #ifdef MODIFY_IMCP
  598. #define IMCP_FM_FRAMEID_IDX (0)
  599. #define IMCP_FM_SRCADDR_IDX (1)
  600. #define IMCP_FM_DSTADDR_IDX (2)
  601. #define IMCP_FM_MSGID_IDX (3)
  602. #define IMCP_FM_DATALEN_LSB_IDX (4) //4: LSB (DATALEN Value: N)
  603. #define IMCP_FM_DATALEN_MSB_IDX (5) //5: MSB
  604. #define IMCP_FM_DATA_BEG_IDX (6) //6~(6+N) = DATA(1)~DATA(N)
  605. //#define IMCP_FM_DATA_CHECKSUM_IDX (6 + N + 1) //Variable
  606. #define IMCP_FM_HEAD_LEN (IMCP_FM_DATALEN_MSB_IDX - IMCP_FM_FRAMEID_IDX + 1)
  607. #define IMCP_FM_TAIL_LEN (1) //CheckSum
  608. #endif //MODIFY_IMCP
  609. //******************************************************************
  610. #ifdef DISABLE_PRINT_DEBUG_MSG
  611. #define DEBUG_INFO(format, args...)
  612. #define DEBUG_WARN(format, args...)
  613. #define DEBUG_ERROR(format, args...)
  614. #else
  615. #define DEBUG_INFO(format, args...) (Charger.memory.EVSE_Config.data.item.isDispDebug?printf("[%04d-%02d-%02d %02d:%02d:%02d][%s:%d][Info] "format, Charger.memory.EVSE_Config.data.item.SystemDateTime.year, Charger.memory.EVSE_Config.data.item.SystemDateTime.month, Charger.memory.EVSE_Config.data.item.SystemDateTime.day, Charger.memory.EVSE_Config.data.item.SystemDateTime.hour, Charger.memory.EVSE_Config.data.item.SystemDateTime.min, Charger.memory.EVSE_Config.data.item.SystemDateTime.sec, __FUNCTION__, __LINE__, ##args):printf(""))
  616. #define DEBUG_WARN(format, args...) (Charger.memory.EVSE_Config.data.item.isDispDebug?printf("[%04d-%02d-%02d %02d:%02d:%02d][%s:%d][Warn] "format, Charger.memory.EVSE_Config.data.item.SystemDateTime.year, Charger.memory.EVSE_Config.data.item.SystemDateTime.month, Charger.memory.EVSE_Config.data.item.SystemDateTime.day, Charger.memory.EVSE_Config.data.item.SystemDateTime.hour, Charger.memory.EVSE_Config.data.item.SystemDateTime.min, Charger.memory.EVSE_Config.data.item.SystemDateTime.sec, __FUNCTION__, __LINE__, ##args):printf(""))
  617. #define DEBUG_ERROR(format, args...) (Charger.memory.EVSE_Config.data.item.isDispDebug?printf("[%04d-%02d-%02d %02d:%02d:%02d][%s:%d][Error] "format, Charger.memory.EVSE_Config.data.item.SystemDateTime.year, Charger.memory.EVSE_Config.data.item.SystemDateTime.month, Charger.memory.EVSE_Config.data.item.SystemDateTime.day, Charger.memory.EVSE_Config.data.item.SystemDateTime.hour, Charger.memory.EVSE_Config.data.item.SystemDateTime.min, Charger.memory.EVSE_Config.data.item.SystemDateTime.sec, __FUNCTION__, __LINE__, ##args):printf(""))
  618. #endif //DISABLE_PRINT_DEBUG_MSG
  619. //******************************************************************
  620. #define ARRAY_SIZE(A) (sizeof(A) / sizeof(A[0]))
  621. /* USER CODE END ET */
  622. /* Exported constants --------------------------------------------------------*/
  623. /* USER CODE BEGIN EC */
  624. #define OFF 0
  625. #define ON 1
  626. #define FAIL 0
  627. #define PASS 1
  628. #define NO 0
  629. #define YES 1
  630. #define true 1
  631. #define false 0
  632. #define DEBUG
  633. #define RTOS_STAT
  634. #define BYPASS
  635. #define W25Q16FV_BLOCK_SIZE 0x1000
  636. #define EVSE_CONNECTOR_TYPE "GBT_MODE3"
  637. #define EVSE_MODEL_CURRENT_RATING 32
  638. #define MCU_CONTROL_MODE_NO_CSU 0
  639. #define MCU_CONTROL_MODE_CSU 1
  640. //#define MCU_PASS_MODE 2 //Not used
  641. #define RFID_SN_TYPE_4BYTE 0
  642. #define RFID_SN_TYPE_7BYTE 1
  643. #define RFID_SN_TYPE_10BYTE 2
  644. #define RFID_SN_TYPE_14443B 3
  645. #define RFID_SN_TYPE_FELICA 4
  646. #define RFID_ENDIAN_LITTLE 0
  647. #define RFID_ENDIAN_BIG 1
  648. //AuthorisationMode
  649. #define AUTH_MODE_OCPP 0x00
  650. #define AUTH_MODE_FREE 0x01
  651. //OfflinePolicy
  652. #define RFID_USER_AUTH_LOCAL_LIST 0x00
  653. #define RFID_USER_AUTH_PH 0x01
  654. #define RFID_USER_AUTH_FREE 0x02
  655. #define RFID_USER_AUTH_NO_CHARGING 0x03
  656. #define MEM_ADDR_EVSE_CONFIG 0*W25Q16FV_BLOCK_SIZE
  657. #define MEM_ADDR_COLD_LOAD_PICKUP 1*W25Q16FV_BLOCK_SIZE
  658. #define MEM_ADDR_WHITE_LIST 2*W25Q16FV_BLOCK_SIZE
  659. #define MEM_ADDR_HIS_ALARM 3*W25Q16FV_BLOCK_SIZE
  660. #define MEM_ADDR_HIS_CHARGING 4*W25Q16FV_BLOCK_SIZE
  661. #define MEM_ADDR_BACKUP_EVSE_CONFIG 20*W25Q16FV_BLOCK_SIZE
  662. #define MEM_ADDR_BACKUP_COLD_LOAD_PICKUP 21*W25Q16FV_BLOCK_SIZE
  663. #define MEM_ADDR_BACKUP_WHITE_LIST 22*W25Q16FV_BLOCK_SIZE
  664. #define MEM_ADDR_BACKUP_HIS_ALARM 23*W25Q16FV_BLOCK_SIZE
  665. #define MEM_ADDR_BACKUP_HIS_CHARGING 24*W25Q16FV_BLOCK_SIZE
  666. #define MODE_INITIAL 0
  667. #define MODE_IDLE 1
  668. #define MODE_HANDSHAKE 2
  669. #define MODE_CHARGING 3
  670. #define MODE_STOP 4
  671. #define MODE_ALARM 5
  672. #define MODE_MAINTAIN 6
  673. #define MODE_DEBUG 99
  674. #define LED_MOTION_OFF 0
  675. #define LED_MOTION_ON 1
  676. #define LED_MOTION_BLINK 2
  677. #define LED_MOTION_BREATHE 3
  678. #define LED_ACTION_INIT 0
  679. #define LED_ACTION_IDLE 1
  680. #define LED_ACTION_AUTHED 2
  681. #define LED_ACTION_CONNECTED 3
  682. #define LED_ACTION_CHARGING 4
  683. #define LED_ACTION_STOP 5
  684. #define LED_ACTION_ALARM 6
  685. #define LED_ACTION_MAINTAIN 7
  686. #define LED_ACTION_RFID_PASS 8
  687. #define LED_ACTION_RFID_FAIL 9
  688. #define LED_ACTION_BLE_CONNECT 10
  689. #define LED_ACTION_BLE_DISABLE 11
  690. #define LED_ACTION_DEBUG 12
  691. #define LED_ACTION_ALL_OFF 13
  692. #define LED_RELAY_ON 14
  693. #define LED_RELAY_OFF 15
  694. #define LED_ACTION_HANDSHAKE_FAIL 16
  695. #define LED_ACTION_INTERNET_DISCONNECT 17
  696. #define LED_ACTION_RESTORE_SETTING 18
  697. #define LED_RFID_TIME 3000
  698. #define SPEAKER_NONE 0
  699. #define SPEAKER_LONG 1
  700. #define SPEAKER_SHORT 2
  701. #define SPEAKER_BLINK 3
  702. #define SPEAK_RESET_RFID_TIME LED_RFID_TIME-1000
  703. #define ALARM_OVER_VOLTAGE 0x000001
  704. #define ALARM_UNDER_VOLTAGE 0x000002
  705. #define ALARM_OVER_CURRENT 0x000004
  706. #define ALARM_OVER_TEMPERATURE 0x000008
  707. #define ALARM_GROUND_FAIL 0x000010
  708. #define ALARM_CP_ERROR 0x000020
  709. #define ALARM_CURRENT_LEAK_AC 0x000040
  710. #define ALARM_CURRENT_LEAK_DC 0x000080
  711. #define ALARM_MCU_TESTFAIL 0x000100
  712. #define ALARM_HANDSHAKE_TIMEOUT 0x000200
  713. #define ALARM_EMERGENCY_STOP 0x000400
  714. #define ALARM_RELAY_STATUS 0x000800
  715. #define ALARM_LEAK_MODULE_FAIL 0x001000
  716. #define ALARM_SHUTTER_FAULT 0x002000
  717. #define ALARM_LOCKER_FAULT 0x004000
  718. #define ALARM_POWER_DROP 0x008000
  719. #define ALARM_CIRCUIT_SHORT 0x010000
  720. #define ALARM_ROTATORY_SWITCH_FAULT 0x020000
  721. #define ALARM_RELAY_DRIVE_FUALT 0x040000
  722. #define ALARM_BLE_MODULE_BROKEN 0x080000
  723. #define END_STATUS_CODE_NORMAL 0x013600
  724. #define END_STATUS_CODE_TIMEUP 0x013601
  725. #define END_STATUS_CODE_DROP 0x012212
  726. #ifdef MODIFY_CP_TASK_CTRL_CP_PWM
  727. uint16_t GetCpPwmDuty(uint16_t Curr);
  728. #else
  729. #define PWM_DUTY_651(AMP) (uint16_t)((AMP/0.6)*10) // 6<=currewnt<=51 PWM duty resolution in 0.1
  730. #endif
  731. #define PWM_DUTY_FULL 1000 // Stop PWM duty resolution in 0.1
  732. #define PWM_DUTY_ZERO 0 // Zero PWM duty resolution in 0.1
  733. #define START_METHOD_NONE 0
  734. #define START_METHOD_CP 1
  735. #define START_METHOD_RFID 2
  736. #define START_METHOD_BLE 3
  737. #define RESERVATION_DISABLE 0
  738. #define RESERVATION_ONCE 1
  739. #define RESERVATION_ALWAYS 2
  740. #define ALARM_SPEC_POWER_DROP 7200 // unit 0.01V >> 240V * 30%
  741. #define ALARM_SPEC_OV 27500 // unit 0.01V
  742. #define ALARM_SPEC_UV 16000//16000 // unit 0.01V
  743. #define ALARM_SPEC_OUV_HYSTERESIS 1000 // unit 0.01V
  744. #define ALARM_SPEC_OT_1 90 // unit C
  745. #define ALARM_SPEC_OT_2 100 // unit C
  746. #define ALARM_SPEC_OT_HYSTERESIS 20
  747. #define ALARM_SPEC_GF 3100 //2.5V
  748. #define ALARM_SPEC_GF_HYSTERESIS 2110 //2.5V-"1.7V"=0.8V
  749. #ifdef MODIFY_EMPX10_ALARM_SPEC_RELAY_LN
  750. #define ALARM_SPEC_RELAY_LN_DRIVE_FAULT 100 // unit 0.01V
  751. #define ALARM_SPEC_RELAY_LN_WELDING 150//140 // unit 0.01V
  752. #else
  753. #define ALARM_SPEC_RELAY_LN_DRIVE_FAULT 140 // unit 0.01V
  754. #define ALARM_SPEC_RELAY_LN_WELDING 250//140 // unit 0.01V
  755. #endif
  756. #define ALARM_SPEC_RELAY_LN_HYSTERESIS 20
  757. #define ALARM_SPEC_RELAY_LL 80 //24 // unit 0.01V
  758. #define ALARM_SPEC_CURRENT_LEAK_HYSTERESIS 300
  759. #define ALARM_RETRY_COUNT 1
  760. #define ALARM_OC_RETRY_COUNT 4
  761. #define ALARM_LEAK_RETRY_COUNT 1
  762. #define ALARM_RETRY_INTERVAL_OC 60000 // 60000 ma >> 1min
  763. #define ALARM_RETRY_INTERVAL_LEAK 15000 // 900000 ms >> 15min
  764. #define ALARM_RETRY_INTERVAL_OT 15000 // 900000 ms >> 15min
  765. #define WHITE_LIST_TYPE_RFID 0x00
  766. #define WHITE_LIST_TYPE_BLE 0x01
  767. #define AM3352_REQ_PIN_DEBOUNCE 30
  768. #define BLE_LOGIN_ROLE_UNKOWN 0x00
  769. #define BLE_LOGIN_ROLE_ROOT 0x01
  770. #define BLE_LOGIN_ROLE_USER 0x02
  771. #define BLE_LOGIN_ROLE_VISITOR 0x03
  772. #define WIFI_LOGIN_ROLE_UNKOWN 0x00
  773. #define WIFI_LOGIN_ROLE_ROOT 0x01
  774. #define WIFI_LOGIN_ROLE_USER 0x02
  775. #define WIFI_LOGIN_ROLE_VISITOR 0x03
  776. #define MCU_DATA 0
  777. #define METER_DATA 1
  778. #define CORR_GROUP_ARRAY 3
  779. #define GROUNGING_SYSTEM_LL 0
  780. #define GROUNGING_SYSTEM_LN 1
  781. #define CCID_MODULE_CORMEX 0
  782. #define CCID_MODULE_VAC 1
  783. #define CCID_MODULE_UNKNOW 0xFF
  784. #ifdef FUNC_AUTO_MODIFY_CCID_MODULE
  785. #define CCID_MODULE_TYPE_STR ((Charger.CCID_Module_Type != CCID_MODULE_CORMEX && Charger.CCID_Module_Type != CCID_MODULE_VAC) ? "UNKNOW" : (Charger.CCID_Module_Type == CCID_MODULE_CORMEX ? "CORMEX" : "VAC"))
  786. #endif
  787. //#define LOCAL_LINK_BLE
  788. //#define LOCAL_LINK_WIFI
  789. #ifdef FUNC_TEMP_SENSOR_WITH_NEG_VALUE
  790. typedef struct TEMPERATURE
  791. {
  792. int16_t SystemAmbientTemp;
  793. int16_t CcsConnectorTemp;
  794. }Temperature;
  795. #else //FUNC_TEMP_SENSOR_WITH_NEG_VALUE
  796. typedef struct TEMPERATURE
  797. {
  798. uint8_t SystemAmbientTemp;
  799. uint8_t CcsConnectorTemp;
  800. }Temperature;
  801. #endif //FUNC_TEMP_SENSOR_WITH_NEG_VALUE
  802. typedef struct BLE_CONFIG
  803. {
  804. uint8_t puk[8];
  805. uint8_t idRoot[32];
  806. uint8_t isRegPuk:1;
  807. uint8_t isGenPin:1;
  808. }Ble_Config;
  809. typedef struct WIFI_CONFIG
  810. {
  811. uint8_t puk[8];
  812. uint8_t idRoot[32];
  813. uint8_t passwd[32];
  814. uint8_t isRegPuk:1;
  815. uint8_t isGenPin:1;
  816. }Wifi_Config;
  817. typedef struct TM
  818. {
  819. uint16_t year;
  820. uint8_t month;
  821. uint8_t day;
  822. uint8_t hour;
  823. uint8_t min;
  824. uint8_t sec;
  825. }DT;
  826. typedef struct COEFFICIENT
  827. {
  828. float gain_v[CORR_GROUP_ARRAY];
  829. float offset_v[CORR_GROUP_ARRAY];
  830. float gain_c[CORR_GROUP_ARRAY];
  831. float offset_c[CORR_GROUP_ARRAY];
  832. float gain_leak[CORR_GROUP_ARRAY];
  833. float offset_leak[CORR_GROUP_ARRAY];
  834. float gain_gmi[CORR_GROUP_ARRAY];
  835. float offset_gmi[CORR_GROUP_ARRAY];
  836. uint8_t offsetisPosOrNeg_v[CORR_GROUP_ARRAY];
  837. uint8_t offsetisPosOrNeg_c[CORR_GROUP_ARRAY];
  838. uint8_t offsetisPosOrNeg_leak[CORR_GROUP_ARRAY];
  839. uint8_t offsetisPosOrNeg_gmi[CORR_GROUP_ARRAY];
  840. }Coefficient;
  841. typedef struct ALARM_DEF
  842. {
  843. uint16_t fail;
  844. uint16_t restore ;
  845. uint8_t retry;
  846. uint8_t isOccurInCharging;
  847. uint8_t isLatch;
  848. }Alarm_Def;
  849. typedef struct COUNTER
  850. {
  851. Alarm_Def OV;
  852. Alarm_Def UV;
  853. Alarm_Def OC;
  854. Alarm_Def OT;
  855. Alarm_Def GF;
  856. Alarm_Def LEAK; // CORMEX
  857. Alarm_Def LEAK_AC ; // VAC
  858. Alarm_Def LEAK_DC ; // VAC
  859. Alarm_Def EMO;
  860. Alarm_Def RELAY;
  861. Alarm_Def RELAY_Drive_Fualt;
  862. Alarm_Def CP;
  863. Alarm_Def LEAK_MODULE;
  864. Alarm_Def AC_Drip;
  865. uint16_t RST_CFG;
  866. uint16_t WatchDogLeak ;
  867. }Counter;
  868. typedef struct LED
  869. {
  870. uint8_t motion; // LED motion command reference const declare
  871. }Led;
  872. typedef struct SPEAKER
  873. {
  874. uint8_t motion; // LED motion command reference const declare
  875. }Speaker;
  876. typedef struct CYCLE_INFO
  877. {
  878. DT startDateTime; // Charging start dqte timeinfo
  879. uint8_t userId[32]; // Start user ID
  880. uint32_t startTimeTick; // Time tick in million second which get from HAL_GetTick()
  881. uint32_t endTimeTick; // Same as startTimeTick
  882. uint32_t meterStart; // Cycle start meter read value;
  883. uint32_t Power_Consumption; // Charging total power(KWH) resolution is 0.01
  884. uint32_t Duration; // Charging duration unit: ms
  885. uint8_t StartType; // 0: CP detect 1: RFID 2: BLE 3: Backend
  886. }Cycle_Info;
  887. typedef struct RFID
  888. {
  889. uint8_t data_Sn[16]; // RFID serial number data
  890. uint8_t data_Block[16]; // RFID operation block data
  891. uint8_t currentCard[16]; // Current charging cycle start card number
  892. uint8_t nowCard[16]; // now card number
  893. uint8_t snType; // 0: 4 bytes 1: 7 bytes 2: 10 Bytes
  894. uint8_t targetBlock; // RFID read/write target block
  895. uint8_t key[6]; // RFID access key
  896. uint8_t keyType; // 0: Key-A 1: Key-B
  897. uint8_t cardType; // 1: 14443 2: 15693 3:felica
  898. uint8_t Charge_data_Sn[16]; // RFID serial number data
  899. struct
  900. {
  901. uint8_t reqBlockRead:1; // Read block data request flag
  902. uint8_t reqBlockWrite:1; // Write block data request flag
  903. uint8_t reqHalt:1; // Halt card request flag
  904. uint8_t reqStart:1; // RFID start charging cycle request flag
  905. uint8_t reqStop:1; // RFID stop charging cycle request flag
  906. uint8_t isBlockReadOK:1; // RFID block data read ok flag
  907. uint8_t isBlockWriteOK:1; // RFID block data write ok flag
  908. uint8_t isFelicaDelay:1; //
  909. }op_bits;
  910. }Rfid;
  911. typedef struct BLE
  912. {
  913. uint8_t initSeq; // BLE module initial sequence
  914. uint8_t peripheral_mac[13]; // BLE module mac address
  915. uint8_t loginRole; // BLE login role, 0: Unkown 1: Root 2: User 3: Visitor
  916. uint8_t loginId[32]; // BLE central login id
  917. uint8_t isRequestOn:1; // BLE start charging cycle request
  918. uint8_t isRequestOff:1; // BLE stop charging cycle request
  919. uint8_t isDataMode:1; // BLE module is in data mode
  920. }Ble;
  921. typedef struct WIFI
  922. {
  923. uint8_t initSeq; // WIFI module intiail sequence
  924. uint8_t module_mac[13]; // WIFI module mac address
  925. uint8_t loginRole; // WIFI login role, 0: Unkown 1: Root 2: User 3: Visitor
  926. uint8_t loginId[32]; // WIFI central login id
  927. uint8_t isRequestOn:1; // WIFI start charging cycle request
  928. uint8_t isRequestOff:1; // WIFI stop charging cycle request
  929. uint8_t isDataMode:1; // WIFI module is in data mode
  930. }Wifi;
  931. //edward 2019_08_28
  932. typedef struct AM3352
  933. {
  934. uint16_t RequestPinDebounceCnt; // CSU request action debounce counter
  935. uint8_t LedActionState; // CSU LED action state
  936. uint32_t LedAlarmState; // CSU LED alarm state
  937. uint8_t RotarySwitchState; // CSU rotary switch
  938. uint16_t BreatheLedAuthdFadeIn; //Authd breathe led fade in time
  939. uint16_t BreatheLedAuthdFadeOut; //Authd breathe led fade out time
  940. uint16_t BreatheLedConnectFadeIn; //Connect breathe led fade in time
  941. uint16_t BreatheLedConnectFadeOut; //Connect breathe led fade out time
  942. uint16_t BreatheLedChargeFadeIn; //Charge breathe led fade in time
  943. uint16_t BreatheLedChargeFadeOut; //Charge breathe led fade out time
  944. uint8_t isPWMOn:1; // CSU PWM action status, 0: Off 1: Off
  945. uint8_t isRequestOn:1; // CSU relay action request on
  946. uint8_t isRequestOff:1; // CSU relay action request off
  947. }Am3352;
  948. typedef struct RESERVATION
  949. {
  950. uint8_t mode; // Reservation mode, 0:Disable 1:Once 2:Always
  951. uint8_t hour; // Reservation hour
  952. uint8_t min; // Reservation minute
  953. }Reservation;
  954. #ifdef MODIFY_UNDEFINED_MODEL_NAME_AND_SN_ISSUE
  955. #define MODEL_NAME_LEN (64)
  956. #define SERIAL_NUM_LEN (64)
  957. #define SYSTEM_ID_LEN (MODEL_NAME_LEN + SERIAL_NUM_LEN)
  958. #endif
  959. typedef struct MEM
  960. {
  961. struct
  962. {
  963. union
  964. {
  965. uint8_t value[W25Q16FV_BLOCK_SIZE]; // 4096 byte
  966. #ifdef FUNC_FLASH_CONFIG_APPEND_CRC
  967. struct
  968. {
  969. uint8_t buf[W25Q16FV_BLOCK_SIZE - 4];
  970. uint32_t crc32;
  971. } verify;
  972. #endif
  973. struct
  974. {
  975. #ifdef MODIFY_UNDEFINED_MODEL_NAME_AND_SN_ISSUE
  976. char ModelName[MODEL_NAME_LEN]; // 32 Byte -> EVSE model name max 64 byte in ASCII
  977. char SerialNumber[SERIAL_NUM_LEN]; // 32 Byte -> EVSE serial number max 64 byte in ASCII
  978. char System_ID[SYSTEM_ID_LEN]; // 64 Byte -> Byte EVSE system ID max 128 bytes in ASCII
  979. #else
  980. char ModelName[64]; // 32 Byte -> EVSE model name max 64 byte in ASCII
  981. char SerialNumber[64]; // 32 Byte -> EVSE serial number max 64 byte in ASCII
  982. char System_ID[128]; // 64 Byte -> Byte EVSE system ID max 128 bytes in ASCII
  983. #endif
  984. DT SystemDateTime; // 7 Byte -> EVSE system dat & time info, sync from RTC
  985. uint8_t AuthMode; // 1 Byte -> 0: OCPP backend , 1: free mode
  986. uint8_t MCU_Control_Mode; // 0: without CSU 1: with CSU 2: by pass
  987. uint16_t MaxChargingEnergy; // 2 Byte -> 0: No limit Other: Limit max energy per cycle in KWH
  988. uint16_t MaxChargingCurrent; // 2 Byte -> 0: Rating value Other: Linit max current output per cycle
  989. uint16_t MaxChargingDuration; // 2 Byte -> 0: No limit Other: Limit max duration per cycle in minutes
  990. uint16_t Correction_VL1[4][2]; // 16 Byte -> Voltage L1 correction point data(adc & meter) [point][adc(0) & meter(1)]
  991. uint16_t Correction_VL2[2][2]; // 8 Byte -> Voltage L2 correction point data(adc & meter) [point][adc(0) & meter(1)]
  992. uint16_t Correction_VL3[2][2]; // 8 Byte -> Voltage L3 correction point data(adc & meter) [point][adc(0) & meter(1)]
  993. uint16_t Correction_CL1[4][2]; // 16 Byte -> Current L1 correction point data(adc & meter) [point][adc(0) & meter(1)]
  994. uint16_t Correction_CL2[2][2]; // 8 Byte -> Current L2 correction point data(adc & meter) [point][adc(0) & meter(1)]
  995. uint16_t Correction_CL3[2][2]; // 8 Byte -> Current L3 correction point data(adc & meter) [point][adc(0) & meter(1)]
  996. uint16_t Correction_Leak[4][2]; // 16 Byte -> Leak Current correction point data(adc & meter) [point][adc(0) & meter(1)]
  997. uint16_t Correction_GMI[4][2]; // 16 Byte -> GMI correction point data(adc & meter) [point][adc(0) & meter(1)]
  998. uint32_t Power_Consumption_Cumulative; // 4 Byte -> Power consumption keep data, resolution 0.0001 KWH (0.1W) // V*I*3600000ms = WH , 0.1W *10 = W
  999. uint32_t AcPlugInTimes; // 4 Byte -> Connector plug counter
  1000. uint8_t isRestoreFactory:1; // 1 Byte -> 0: No action 1: Trigger EVSE restore factory value
  1001. uint8_t RFID_SN_Endian:1; // 1 Byte -> 0: Little 1: Big
  1002. uint8_t isAuthEnable:1; // 1 Byte -> 0: User authorization disable 1: User authorizing enable
  1003. uint8_t isDispDebug:1; // 1 Byte -> 0: Non-display debug info 1: Display debug info
  1004. Reservation reservation; // 3 Byte -> EVSE reservation config
  1005. Ble_Config bleConfig; // 41 Byte -> BLE PUK & PIN config
  1006. Wifi_Config wifiConfig; // 73 Byte -> WIFI config
  1007. uint8_t OfflinePolicy; // 1 Byte -> 0: local list , 1: Phihong RFID tag , 2: free charging , 3: no charging
  1008. }item;
  1009. }data;
  1010. struct
  1011. {
  1012. uint8_t update:1; // Update ram content to external flash request
  1013. uint8_t clear:1; // Clear ram & external flash content request
  1014. uint8_t read:1; // Read external flash content to ram request
  1015. uint8_t backup:1; // Backup data to external flash request
  1016. uint8_t restore:1; // Restore backup data from external flash request
  1017. }op_bits;
  1018. }EVSE_Config;
  1019. struct
  1020. {
  1021. union
  1022. {
  1023. uint8_t value[W25Q16FV_BLOCK_SIZE];
  1024. struct
  1025. {
  1026. uint8_t isEnable:1; // Cold load pick up function is enable
  1027. DT DateTime; // Charging start date time info
  1028. uint8_t user[32]; // Start user account / card number / mac address
  1029. char PlugType[16]; // Plug type max 16 bytes in ASCII
  1030. uint32_t Duration; // Charging duration unit: ms
  1031. uint16_t powerSum; // Charging total power(KWH) resolution is 0.01
  1032. uint8_t startType; // 0: CP detect 1: RFID 2: BLE 3: Backend
  1033. }item;
  1034. }data;
  1035. struct
  1036. {
  1037. uint8_t update:1; // Update ram content to external flash request
  1038. uint8_t clear:1; // Clear ram & external flash content request
  1039. uint8_t read:1; // Read external flash content to ram request
  1040. uint8_t backup:1; // Backup data to external flash request
  1041. uint8_t restore:1; // Restore backup data from external flash request
  1042. }op_bits;
  1043. }coldLoadPickUp;
  1044. struct
  1045. {
  1046. union
  1047. {
  1048. uint8_t value[W25Q16FV_BLOCK_SIZE];
  1049. struct
  1050. {
  1051. uint8_t listType; // 0: RFID 1: BLE
  1052. uint8_t pin[6]; // Bonding pin code, max 6 digital in ASCII
  1053. uint8_t listID[32]; // list ID
  1054. uint8_t isReg; // PIN already registe flag 0: non-registe 1: registed
  1055. }item[W25Q16FV_BLOCK_SIZE>>6]; // Sector max record only 4096/64 = 64 records.
  1056. }data;
  1057. struct
  1058. {
  1059. uint8_t update:1; // Update ram content to external flash request
  1060. uint8_t clear:1; // Clear ram & external flash content request
  1061. uint8_t read:1; // Read external flash content to ram request
  1062. }op_bits;
  1063. }whiteList;
  1064. struct
  1065. {
  1066. union
  1067. {
  1068. uint8_t value[W25Q16FV_BLOCK_SIZE];
  1069. struct
  1070. {
  1071. DT DateTime; // Charging start date time info
  1072. uint32_t alarmCode; // Please refence code specification document
  1073. uint8_t mode; // EVSE last system mode before alarm occur
  1074. uint8_t isRecover; // 0: occur 1: recover
  1075. }item[W25Q16FV_BLOCK_SIZE>>4]; // Sector max record only 4096/16 = 256 records.
  1076. }data;
  1077. struct
  1078. {
  1079. uint8_t update:1; // Update ram content to external flash request
  1080. uint8_t clear:1; // Clear ram & external flash content request
  1081. uint8_t read:1; // Read external flash content to ram request
  1082. uint8_t backup:1; // Backup data to external flash request
  1083. uint8_t restore:1; // Restore backup data from external flash request
  1084. }op_bits;
  1085. }hisAlarm;
  1086. struct
  1087. {
  1088. union
  1089. {
  1090. uint8_t value[W25Q16FV_BLOCK_SIZE];
  1091. struct
  1092. {
  1093. DT DateTime; // Charging start date time info
  1094. uint8_t user[32]; // Start user account / card number / mac address
  1095. char PlugType[12]; // Plug type max 16 bytes in ASCII
  1096. uint32_t Duration; // Charging duration unit: ms
  1097. uint16_t powerSum; // Charging total power(KWH) resolution is 0.01
  1098. uint32_t stopStatusCode; // Charging stop reason as status code
  1099. uint8_t startType; // 0: CP detect 1: RFID 2: BLE 3: Backend
  1100. }item[W25Q16FV_BLOCK_SIZE>>6]; // Sector max record only 4096/64 = 64 records.
  1101. }data;
  1102. struct
  1103. {
  1104. uint8_t update:1; // Update ram content to external flash request
  1105. uint8_t clear:1; // Clear ram & external flash content request
  1106. uint8_t read:1; // Read external flash content to ram request
  1107. uint8_t backup:1; // Backup data to external flash request
  1108. uint8_t restore:1; // Restore backup data from external flash request
  1109. }op_bits;
  1110. }hisCharging;
  1111. }Mem;
  1112. typedef struct BUTTON
  1113. {
  1114. uint32_t count;
  1115. uint8_t display;
  1116. }button;
  1117. typedef struct ALARMSECP
  1118. {
  1119. uint16_t Current_LEAK_AC;
  1120. }AlarmSpec;
  1121. /* USER CODE END EC */
  1122. /* Exported macro ------------------------------------------------------------*/
  1123. /* USER CODE BEGIN EM */
  1124. /* USER CODE END EM */
  1125. /* Exported functions prototypes ---------------------------------------------*/
  1126. void Error_Handler(void);
  1127. /* USER CODE BEGIN EFP */
  1128. extern volatile unsigned long ulHighFrequencyTimerTicks;
  1129. extern void SystemClock_Config(void);
  1130. #ifdef MODIFY_CPTASK_HEAD
  1131. void Proc_CpTaskHead(HTK_BOOL bCSU);
  1132. #endif
  1133. /* USER CODE END EFP */
  1134. /* Private defines -----------------------------------------------------------*/
  1135. #define NoneUse_Pin1_GPIO_PE2_Pin GPIO_PIN_2
  1136. #define NoneUse_Pin1_GPIO_PE2_GPIO_Port GPIOE
  1137. #define OUT_BLE_RESET_Pin GPIO_PIN_3
  1138. #define OUT_BLE_RESET_GPIO_Port GPIOE
  1139. #define NoneUse_Pin3_GPIO_PE4_Pin GPIO_PIN_4
  1140. #define NoneUse_Pin3_GPIO_PE4_GPIO_Port GPIOE
  1141. #define TIM9_CH1_PWM_LED_R_Pin GPIO_PIN_5
  1142. #define TIM9_CH1_PWM_LED_R_GPIO_Port GPIOE
  1143. #define TIM9_CH2_PWM_LED_G_Pin GPIO_PIN_6
  1144. #define TIM9_CH2_PWM_LED_G_GPIO_Port GPIOE
  1145. #define OUT_PHY_Reset_Pin GPIO_PIN_13
  1146. #define OUT_PHY_Reset_GPIO_Port GPIOC
  1147. #define IN_MEM_Erase_Pin GPIO_PIN_2
  1148. #define IN_MEM_Erase_GPIO_Port GPIOF
  1149. #define ADC3_IN9_Voltage_L1_Pin GPIO_PIN_3
  1150. #define ADC3_IN9_Voltage_L1_GPIO_Port GPIOF
  1151. #define ADC3_IN14_1998_Pin GPIO_PIN_4
  1152. #define ADC3_IN14_1998_GPIO_Port GPIOF
  1153. #define ADC3_IN15_Temp_Pin GPIO_PIN_5
  1154. #define ADC3_IN15_Temp_GPIO_Port GPIOF
  1155. #define ADC3_IN4_GMI_VL1_Pin GPIO_PIN_6
  1156. #define ADC3_IN4_GMI_VL1_GPIO_Port GPIOF
  1157. #define NoneUse_Pin19_GPIO_PF7_Pin GPIO_PIN_7
  1158. #define NoneUse_Pin19_GPIO_PF7_GPIO_Port GPIOF
  1159. #define NoneUse_Pin20_GPIO_PF8_Pin GPIO_PIN_8
  1160. #define NoneUse_Pin20_GPIO_PF8_GPIO_Port GPIOF
  1161. #define ADC3_IN7_Current_L1_Pin GPIO_PIN_9
  1162. #define ADC3_IN7_Current_L1_GPIO_Port GPIOF
  1163. #define NoneUse_Pin22_GPIO_PF10_Pin GPIO_PIN_10
  1164. #define NoneUse_Pin22_GPIO_PF10_GPIO_Port GPIOF
  1165. #define NoneUse_Pin26_GPIO_PC0_Pin GPIO_PIN_0
  1166. #define NoneUse_Pin26_GPIO_PC0_GPIO_Port GPIOC
  1167. #define NoneUse_Pin27_GPIO_PC1_Pin GPIO_PIN_1
  1168. #define NoneUse_Pin27_GPIO_PC1_GPIO_Port GPIOC
  1169. #define NoneUse_Pin28_GPIO_PC2_Pin GPIO_PIN_2
  1170. #define NoneUse_Pin28_GPIO_PC2_GPIO_Port GPIOC
  1171. #define NoneUse_Pin29_GPIO_PC3_Pin GPIO_PIN_3
  1172. #define NoneUse_Pin29_GPIO_PC3_GPIO_Port GPIOC
  1173. #define NoneUse_Pin34_GPIO_PA0_Pin GPIO_PIN_0
  1174. #define NoneUse_Pin34_GPIO_PA0_GPIO_Port GPIOA
  1175. #define NoneUse_Pin35_GPIO_PA1_Pin GPIO_PIN_1
  1176. #define NoneUse_Pin35_GPIO_PA1_GPIO_Port GPIOA
  1177. #define NoneUse_Pin36_GPIO_PA2_Pin GPIO_PIN_2
  1178. #define NoneUse_Pin36_GPIO_PA2_GPIO_Port GPIOA
  1179. #define NoneUse_Pin37_GPIO_PA3_Pin GPIO_PIN_3
  1180. #define NoneUse_Pin37_GPIO_PA3_GPIO_Port GPIOA
  1181. #define ADC1_IN4_CP_Pin GPIO_PIN_4
  1182. #define ADC1_IN4_CP_GPIO_Port GPIOA
  1183. #define ADC2_IN5_Welding_Pin GPIO_PIN_5
  1184. #define ADC2_IN5_Welding_GPIO_Port GPIOA
  1185. #define ADC2_IN6_GF_Pin GPIO_PIN_6
  1186. #define ADC2_IN6_GF_GPIO_Port GPIOA
  1187. #define NoneUse_Pin43_GPIO_PA7_Pin GPIO_PIN_7
  1188. #define NoneUse_Pin43_GPIO_PA7_GPIO_Port GPIOA
  1189. #define NoneUse_Pin44_GPIO_PC4_Pin GPIO_PIN_4
  1190. #define NoneUse_Pin44_GPIO_PC4_GPIO_Port GPIOC
  1191. #define NoneUse_Pin45_GPIO_PC5_Pin GPIO_PIN_5
  1192. #define NoneUse_Pin45_GPIO_PC5_GPIO_Port GPIOC
  1193. #define NoneUse_Pin46_GPIO_PB0_Pin GPIO_PIN_0
  1194. #define NoneUse_Pin46_GPIO_PB0_GPIO_Port GPIOB
  1195. #define NoneUse_Pin47_GPIO_PB1_Pin GPIO_PIN_1
  1196. #define NoneUse_Pin47_GPIO_PB1_GPIO_Port GPIOB
  1197. #define NoneUse_Pin48_GPIO_PB2_Pin GPIO_PIN_2
  1198. #define NoneUse_Pin48_GPIO_PB2_GPIO_Port GPIOB
  1199. #define OUT_Locker_Lock_Pin GPIO_PIN_11
  1200. #define OUT_Locker_Lock_GPIO_Port GPIOF
  1201. #define IN_LOCK_Status_Pin GPIO_PIN_12
  1202. #define IN_LOCK_Status_GPIO_Port GPIOF
  1203. #define IN_CCS_HW_ID1_Pin GPIO_PIN_13
  1204. #define IN_CCS_HW_ID1_GPIO_Port GPIOF
  1205. #define IN_CCS_HW_ID2_Pin GPIO_PIN_14
  1206. #define IN_CCS_HW_ID2_GPIO_Port GPIOF
  1207. #define IN_CCS_I_O1_Pin GPIO_PIN_15
  1208. #define IN_CCS_I_O1_GPIO_Port GPIOF
  1209. #define IN_CCS_I_O2_Pin GPIO_PIN_0
  1210. #define IN_CCS_I_O2_GPIO_Port GPIOG
  1211. #define IN_GridType_Select_Pin GPIO_PIN_1
  1212. #define IN_GridType_Select_GPIO_Port GPIOG
  1213. #define IN_Grid_Groundding_Pin GPIO_PIN_7
  1214. #define IN_Grid_Groundding_GPIO_Port GPIOE
  1215. #define IN_AC_Current_Set4_Pin GPIO_PIN_8
  1216. #define IN_AC_Current_Set4_GPIO_Port GPIOE
  1217. #define IN_AC_Current_Set3_Pin GPIO_PIN_9
  1218. #define IN_AC_Current_Set3_GPIO_Port GPIOE
  1219. #define IN_AC_Current_Set2_Pin GPIO_PIN_10
  1220. #define IN_AC_Current_Set2_GPIO_Port GPIOE
  1221. #define IN_AC_Current_Set1_Pin GPIO_PIN_11
  1222. #define IN_AC_Current_Set1_GPIO_Port GPIOE
  1223. #define IN_CCS_Proximity_Pin GPIO_PIN_12
  1224. #define IN_CCS_Proximity_GPIO_Port GPIOE
  1225. #define NoneUse_Pin66_GPIO_PE13_Pin GPIO_PIN_13
  1226. #define NoneUse_Pin66_GPIO_PE13_GPIO_Port GPIOE
  1227. #define TIM1_CH4_PWM_CP_Pin GPIO_PIN_14
  1228. #define TIM1_CH4_PWM_CP_GPIO_Port GPIOE
  1229. #define OUT_SPI1_CS_Pin GPIO_PIN_15
  1230. #define OUT_SPI1_CS_GPIO_Port GPIOE
  1231. #define NoneUse_Pin69_GPIO_PB10_Pin GPIO_PIN_10
  1232. #define NoneUse_Pin69_GPIO_PB10_GPIO_Port GPIOB
  1233. #define NoneUse_Pin70_GPIO_PB11_Pin GPIO_PIN_11
  1234. #define NoneUse_Pin70_GPIO_PB11_GPIO_Port GPIOB
  1235. #define IN_GFCI_Reset_Pin GPIO_PIN_12
  1236. #define IN_GFCI_Reset_GPIO_Port GPIOB
  1237. #define NoneUse_Pin74_GPIO_PB13_Pin GPIO_PIN_13
  1238. #define NoneUse_Pin74_GPIO_PB13_GPIO_Port GPIOB
  1239. #define TIM12_CH1_PWM_GFCI_Test_Pin GPIO_PIN_14
  1240. #define TIM12_CH1_PWM_GFCI_Test_GPIO_Port GPIOB
  1241. #define OUT_Leak_Test_Pin GPIO_PIN_15
  1242. #define OUT_Leak_Test_GPIO_Port GPIOB
  1243. #define OUT_Speaker_Pin GPIO_PIN_10
  1244. #define OUT_Speaker_GPIO_Port GPIOD
  1245. #define IN_Emergency_Pin GPIO_PIN_11
  1246. #define IN_Emergency_GPIO_Port GPIOD
  1247. #define ICP_TIM4_CH1_LEAK_PWM_Pin GPIO_PIN_12
  1248. #define ICP_TIM4_CH1_LEAK_PWM_GPIO_Port GPIOD
  1249. #define NoneUse_Pin82_GPIO_PD13_Pin GPIO_PIN_13
  1250. #define NoneUse_Pin82_GPIO_PD13_GPIO_Port GPIOD
  1251. #define NoneUse_Pin85_GPIO_PD14_Pin GPIO_PIN_14
  1252. #define NoneUse_Pin85_GPIO_PD14_GPIO_Port GPIOD
  1253. #define NoneUse_Pin86_GPIO_PD15_Pin GPIO_PIN_15
  1254. #define NoneUse_Pin86_GPIO_PD15_GPIO_Port GPIOD
  1255. #define IN_BLE_DTR_Pin GPIO_PIN_2
  1256. #define IN_BLE_DTR_GPIO_Port GPIOG
  1257. #define OUT_BLE_DSR_Pin GPIO_PIN_3
  1258. #define OUT_BLE_DSR_GPIO_Port GPIOG
  1259. #define NoneUse_Pin89_GPIO_PG4_Pin GPIO_PIN_4
  1260. #define NoneUse_Pin89_GPIO_PG4_GPIO_Port GPIOG
  1261. #define NoneUse_Pin90_GPIO_PG5_Pin GPIO_PIN_5
  1262. #define NoneUse_Pin90_GPIO_PG5_GPIO_Port GPIOG
  1263. #define IN_RFID_ICC_Pin GPIO_PIN_6
  1264. #define IN_RFID_ICC_GPIO_Port GPIOG
  1265. #define NoneUse_Pin92_GPIO_PG7_Pin GPIO_PIN_7
  1266. #define NoneUse_Pin92_GPIO_PG7_GPIO_Port GPIOG
  1267. #define OUT_RFID_Reset_Pin GPIO_PIN_8
  1268. #define OUT_RFID_Reset_GPIO_Port GPIOG
  1269. #define IN_Leak_Error_Pin GPIO_PIN_6
  1270. #define IN_Leak_Error_GPIO_Port GPIOC
  1271. #define IN_Leak_AC_Pin GPIO_PIN_7
  1272. #define IN_Leak_AC_GPIO_Port GPIOC
  1273. #define IN_Leak_DC_Pin GPIO_PIN_8
  1274. #define IN_Leak_DC_GPIO_Port GPIOC
  1275. #define OUT_RelayDrv_L1_Pin GPIO_PIN_9
  1276. #define OUT_RelayDrv_L1_GPIO_Port GPIOC
  1277. #define OUT_RelayHold_L1_Pin GPIO_PIN_8
  1278. #define OUT_RelayHold_L1_GPIO_Port GPIOA
  1279. #define OUT_RelayDrv_L2_Pin GPIO_PIN_9
  1280. #define OUT_RelayDrv_L2_GPIO_Port GPIOA
  1281. #define OUT_RelayHold_L2_Pin GPIO_PIN_10
  1282. #define OUT_RelayHold_L2_GPIO_Port GPIOA
  1283. #define IN_1998_Pin GPIO_PIN_15
  1284. #define IN_1998_GPIO_Port GPIOA
  1285. #define OUT_1998_Pin GPIO_PIN_10
  1286. #define OUT_1998_GPIO_Port GPIOC
  1287. #define OUT_Meter_485_RE_Pin GPIO_PIN_11
  1288. #define OUT_Meter_485_RE_GPIO_Port GPIOC
  1289. #define NoneUse_Pin114_GPIO_PD0_Pin GPIO_PIN_0
  1290. #define NoneUse_Pin114_GPIO_PD0_GPIO_Port GPIOD
  1291. #define NoneUse_Pin115_GPIO_PD1_Pin GPIO_PIN_1
  1292. #define NoneUse_Pin115_GPIO_PD1_GPIO_Port GPIOD
  1293. #define OUT_USB_DriveBus_Pin GPIO_PIN_3
  1294. #define OUT_USB_DriveBus_GPIO_Port GPIOD
  1295. #define OUT_Meter_485_DE_Pin GPIO_PIN_4
  1296. #define OUT_Meter_485_DE_GPIO_Port GPIOD
  1297. #define IN_ACT_REQ_Pin GPIO_PIN_7
  1298. #define IN_ACT_REQ_GPIO_Port GPIOD
  1299. #define IN_USB_OC_Pin GPIO_PIN_10
  1300. #define IN_USB_OC_GPIO_Port GPIOG
  1301. #define NoneUse_Pin126_GPIO_PG11_Pin GPIO_PIN_11
  1302. #define NoneUse_Pin126_GPIO_PG11_GPIO_Port GPIOG
  1303. #define OUT_IPP_TRI_Pin GPIO_PIN_12
  1304. #define OUT_IPP_TRI_GPIO_Port GPIOG
  1305. #define NoneUse_Pin128_GPIO_PG13_Pin GPIO_PIN_13
  1306. #define NoneUse_Pin128_GPIO_PG13_GPIO_Port GPIOG
  1307. #define IN_Shutter_Status_Pin GPIO_PIN_15
  1308. #define IN_Shutter_Status_GPIO_Port GPIOG
  1309. #define TIM10_CH1_PWM_LED_B_Pin GPIO_PIN_8
  1310. #define TIM10_CH1_PWM_LED_B_GPIO_Port GPIOB
  1311. #define TIM11_CH1_PWM_LED_W_Pin GPIO_PIN_9
  1312. #define TIM11_CH1_PWM_LED_W_GPIO_Port GPIOB
  1313. #define OUT_StateE_Pin GPIO_PIN_0
  1314. #define OUT_StateE_GPIO_Port GPIOE
  1315. #define OUT_LED_Breathe_Pin GPIO_PIN_1
  1316. #define OUT_LED_Breathe_GPIO_Port GPIOE
  1317. /* USER CODE BEGIN Private defines */
  1318. extern struct EVSE
  1319. {
  1320. char Ver_FW[32]; // Firmware version max 32 byte in ASCII
  1321. char Ver_HW[32]; // Hardware version max 32 byte in ASCII
  1322. uint8_t Mode; // System mode
  1323. uint8_t Mode_Previous; // Previous system mode
  1324. uint8_t Mode_Before_Alarm; // System mode before enter alarm mode
  1325. uint32_t AC_DripisTure; // AC Drip is happen. 0:None 1:is happen AC Drip
  1326. uint32_t Alarm_Code; // System alarm code
  1327. uint32_t Alarm_LED; // System alarm LED
  1328. uint32_t Alarm_Code_Previous; // Previous system alarm code
  1329. uint8_t CP_State; // Control pilot state
  1330. uint16_t Voltage[3]; // EVSE input voltage resolution 0.01V
  1331. uint16_t Current[3]; // EVSE output current resolution 0.01A
  1332. uint16_t Leak_Current; // EVSE output leak current resolution mA
  1333. uint16_t Gmi_Voltage; // EVSE output Gmi_Voltage V
  1334. uint8_t maxRatingCurrent; // EVSE Max rating current resolution 1A
  1335. uint16_t MaxChargingCurrent_Previous; // EVSE previous current limit resolution 1A
  1336. uint8_t Relay_Action; // EVSE output relay action
  1337. uint8_t Relay_isOperationCompleted; // EVSE output relay action is Operation completed
  1338. uint8_t is_RFIDKeepCharger; // in ocpp mode no RFID.reqStop . CP C->B->C , charger can be charge
  1339. float GmiMagn100K ; // Gmi alarm 100k VAC*Magnification
  1340. float GmiMagn50K ; // Gmi alarm 50k VAC*Magnification
  1341. Temperature temperature; // EVSE temperature resolution 1 degree
  1342. Coefficient coefficient; // ADC corrention coefficient
  1343. Cycle_Info cycle_info; // Charging cycle info
  1344. Rfid rfid; // RFID related info
  1345. Ble ble; // BLE related info
  1346. Wifi wifi; // WIFI related info
  1347. Am3352 am3352; // CSU info
  1348. Led led_R; // LED red info
  1349. Led led_G; // LED green info
  1350. Led led_B; // LED blue info
  1351. Led led_W; // LED white info
  1352. Led led_Breathe; // LED breathe info
  1353. Speaker speaker; // Speaker info
  1354. Mem memory; // External flash memory info
  1355. Counter counter; // Alarm delay counter
  1356. AlarmSpec alarm_spec; // alarm spec data for modelname Decide , kaho 20200303 add
  1357. uint8_t Led_Mode; // set led mode >> idle , handshaking , charging , stop , alarm
  1358. uint8_t Led_temp_motion; // OFF : RFID led prompt OFF , ON :RFID LED prompt ON
  1359. uint8_t Led_Brightness[12];
  1360. uint16_t led_pwm_duty[4];
  1361. uint8_t GroundingSystem; // different grounding -> LL , LN
  1362. uint8_t GroundingDetect; // Ground Detect On-> 1, Off-> 0
  1363. uint8_t isSetStartTime; // 1 : need set Charger.cycle_info.startTimeTick , 0 : Useless Charger.cycle_info.startTimeTick
  1364. uint8_t CCID_Module_Type; // 0 : Cormex , 1 : VAC
  1365. uint8_t Test_LeakModuleisPass; // 0 : fail , 1 : success
  1366. uint8_t is_BLEKeepCharger; // in occp mode no ble.reqStop . CP C->B->C , charger can be charge
  1367. uint32_t Alarm_Code_before; // last time system alarm code
  1368. uint32_t OCP_Magnification; // EC satet use 1.25 , UL GB use 1.1
  1369. uint16_t isDebugEnable:1; // EVSE enable debug mode 0: Disable 1: Enable
  1370. uint16_t isAlarmSetPWM:1; // Alarm -> charger set pwm 0: PWM is never output 1: PWM is output
  1371. uint16_t isRotarySwitchError:1; // Rotary Switch set 9~E is Error 0: Error 1: OK
  1372. uint16_t isTestLeakModule:1; // 0: don't test leak module , 1: do test leak module
  1373. uint16_t isDebugModeCPtest:1; // in debug mode use CP Simulator simulate CP -> 0: CP test off , 1: CP tset on
  1374. uint16_t istoHandShakeMode:1; // for rfid MODE -> MODE_IDLE to MODE_HANDSHAKE flag
  1375. uint16_t isCP_in_B:1; // CP status had been in B mode
  1376. uint16_t CSUisRequest:1 ; // 1 : CSU is Request , 0 : Request No Request // when Charger.am3352.isRequestOn 1->0 PWM pull 100%
  1377. uint16_t ModelReadisOK:1 ; // 0 : NG , 1 : OK
  1378. uint16_t isBle_disable:1; //
  1379. uint16_t isUpgrading:1; //
  1380. uint16_t isSelfTesting:1; //
  1381. uint16_t CSUisReady:1; // CSU is reboot OK (init -> idle)
  1382. #ifdef FUNC_RS485_SLAVE
  1383. uint16_t m_bRS485SlaveForDCModel:1; // 0: Not for DC Model; 1: for DC Model
  1384. #endif
  1385. #ifdef FUNC_FORCE_RUN_CSU_MODE_WITH_DC_MODELNAME
  1386. uint16_t m_bModelNameDC:1; //0: Not DC ModelName; 1: DC ModelName
  1387. uint16_t m_bModelNameDCReadOK:1;
  1388. #endif
  1389. #ifdef MODIFY_OCP_PROC_WITH_MODELNAME_IDX_3_EURO_SPEC
  1390. uint16_t m_bModelNameWithEuroSpecOCP:1;
  1391. #endif
  1392. //#ifdef NEW_CP_SPEC
  1393. uint16_t m_bCpDetectModuleInitOK: 1; //0: CpDatectModule not init; 1: CpDatectModule init OK
  1394. //#endif
  1395. #ifdef FUNC_RULE_GB_202108
  1396. uint16_t m_bSafetyRegulationGB:1;
  1397. #endif
  1398. #ifdef FUNC_BLOCK_CSU_CONFIG_CP_PWM_DUTY
  1399. uint16_t m_bBlockCsuCpPwmDuty: 1;
  1400. #endif
  1401. #ifdef FUNC_BLOCK_CSU_CMD_SET_DUTY_WHEN_ALARM_CP_F_STATE
  1402. uint16_t m_bBlockCsuCpPwmDutyWhenAlarmCpF: 1;
  1403. #endif
  1404. #ifdef FUNC_SIMU_CHARGE_CURRENT_OUTPUT
  1405. uint16_t m_bEnableSimuChargeCurrent: 1;
  1406. #endif
  1407. #ifdef FUNC_SWITCH_RELAY_WELDING_PROTECT
  1408. uint16_t m_bDisableRelayWelding: 1;
  1409. uint16_t m_bDisableCCID: 1;
  1410. uint16_t m_bSetOCP_32A: 1;
  1411. #endif
  1412. #ifdef FUNC_RS485_SLAVE
  1413. uint8_t m_RS485SlaveAddr;
  1414. #endif
  1415. #ifdef FUNC_CURRENT_CP_PWM_DATA
  1416. uint16_t m_CP_CurPWM;
  1417. #endif
  1418. #ifdef FUNC_OCP_WITH_PP
  1419. uint16_t m_OCP_CurMaxCurr; //A
  1420. uint16_t m_OCP_BegThreshold; //Occur: 0.01A
  1421. uint16_t m_OCP_EndThreshold; //Recover: 0.01A
  1422. #endif
  1423. #ifdef MODIFY_AC_EVSE_STATUS_MAX_CHARGING_CURRENT_VARIABLE
  1424. uint16_t AC_MaxChargingCurrentOrDuty; //AC Only
  1425. #endif
  1426. #ifdef FUNC_GET_TRIP_TIME
  1427. uint32_t m_TripBeg;
  1428. uint32_t m_TripEnd;
  1429. #endif
  1430. #ifdef FUNC_AUTO_MODIFY_CCID_MODULE
  1431. HTK_BOOL m_bCCID_MustModify;
  1432. uint8_t m_CCID_ModuleTestOK;
  1433. #endif
  1434. #ifdef FUNC_RELAY_OFF_WHEN_CSU_CMD_TIMEOUT
  1435. u32 m_CSU_RxTick;
  1436. #endif
  1437. #ifdef FUNC_BOOT_TICK
  1438. uint32_t m_BootTick;
  1439. #endif
  1440. #ifdef FUNC_EMPX10_CUSTOMIZE_RS485_CLIENT_ADDRESS
  1441. u8 m_EMPX10_RS485_ClientAddr;
  1442. #endif
  1443. }Charger;
  1444. //---------------------------------------------------------------
  1445. #ifndef DISABLE_CCID_PROTECT
  1446. #define CCID_PROTECT
  1447. #endif
  1448. #ifndef DISABLE_OTP_PROTECT
  1449. #define OTP_PROTECT
  1450. #endif
  1451. #ifndef DISABLE_CP_ALARM_PROTECT
  1452. #define CP_ALARM_PROTECT
  1453. #endif
  1454. #ifndef DISABLE_GROUND_FAULT_PROTECT
  1455. #define GROUND_FAULT_PROTECT
  1456. #endif
  1457. #define EMC_BUTTON_PROTECT
  1458. #ifndef DISABLE_RELAY_WELDING_PROTECT
  1459. #define RELAY_WELDING_PROTECT
  1460. #endif
  1461. #ifndef DISABLE_OVP_PROTECT
  1462. #define OVP_PROTECT
  1463. #endif
  1464. #ifndef DISABLE_UVP_PROTECT
  1465. #define UVP_PROTECT
  1466. #endif
  1467. #ifndef DISABLE_OCP_PROTECT
  1468. #define OCP_PROTECT
  1469. #endif
  1470. #ifndef DISABLE_HANDSHAKE_PROTECT
  1471. #define HANDSHAKE_PROTECT
  1472. #endif
  1473. #define ROTATE_SWITCH_CHECK
  1474. #ifndef DISABLE_COLD_LOAD_PICKUP
  1475. #define COLD_LOAD_PICKUP
  1476. #endif
  1477. //---------------------------------------------------------------
  1478. /* USER CODE END Private defines */
  1479. #ifdef __cplusplus
  1480. }
  1481. #endif
  1482. #endif /* __MAIN_H */
  1483. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/