main.h 143 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123
  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. #include "stm32f4xx_hal.h"
  30. #include "stm32f4xx_ll_usart.h"
  31. #include "stm32f4xx_ll_rcc.h"
  32. #include "stm32f4xx_ll_bus.h"
  33. #include "stm32f4xx_ll_cortex.h"
  34. #include "stm32f4xx_ll_system.h"
  35. #include "stm32f4xx_ll_utils.h"
  36. #include "stm32f4xx_ll_pwr.h"
  37. #include "stm32f4xx_ll_gpio.h"
  38. #include "stm32f4xx_ll_dma.h"
  39. #include "stm32f4xx_ll_exti.h"
  40. /* Private includes ----------------------------------------------------------*/
  41. /* USER CODE BEGIN Includes */
  42. #include <stdio.h>
  43. #include <stdlib.h>
  44. #include <stdarg.h>
  45. #include <string.h>
  46. #include "W25QXX.h"
  47. /* USER CODE END Includes */
  48. /* Exported types ------------------------------------------------------------*/
  49. /* USER CODE BEGIN ET */
  50. //******************************************************************
  51. //Type define / Macro / Utility
  52. #define HTK //Some utility
  53. #ifdef HTK
  54. #define HTK_USE_XPRINT
  55. #endif
  56. #define DEBUG_FUNC //comment this line when going to build a FORMAL one
  57. //******************************************************************
  58. #ifdef DEBUG_FUNC
  59. //Print out debug message ON/OFF
  60. //#define DISABLE_PRINT_DEBUG_MSG //Disable print out debug message
  61. //#define DISABLE_PRINT_RTOS_MSG //Disable print out freeRTOS runtime message
  62. //#define ENABLE_PRINT_IMCP_MSG //Enable print out update port TX/RX frame message
  63. #ifdef ENABLE_PRINT_IMCP_MSG
  64. #define ENABLE_PRINT_IMCP_SPEC_MSG
  65. #define PRINT_IMCP_MSG_ONLY_ON_UPDATEPORT
  66. #endif //ENABLE_PRINT_IMCP_MSG
  67. #endif //DEBUG_FUNC
  68. //******************************************************************
  69. #ifdef DEBUG_FUNC
  70. //Debug Function
  71. //#define DISABLE_CCID_PROTECT
  72. //#define DISABLE_GROUND_FAULT_PROTECT //ALARM_GROUND_FAIL
  73. //#define DISABLE_OVP_PROTECT //for calibration and test
  74. //#define DISABLE_UVP_PROTECT //for calibration and test
  75. //#define DISABLE_RELAY_WELDING_PROTECT //ALARM_RELAY_DRIVE_FUALT
  76. // //Threshold value wait to be modified
  77. //#define DEBUG_ALARM_GROUND_FAIL
  78. #endif //DEBUG_FUNC
  79. //******************************************************************
  80. //ONLY FOR CDFA TEST CONFIGURATION
  81. //#define FUNC_ONLY_FOR_CDFA_CONFIG
  82. #ifdef FUNC_ONLY_FOR_CDFA_CONFIG
  83. #define ROTATE_SWITCH_HARDCODE
  84. #ifdef ROTATE_SWITCH_HARDCODE
  85. #define HC_SW_ON (0)
  86. #define HC_SW_OFF (1)
  87. #define HC_ROTARY_SWITCH_SET_VAL (0x0B)
  88. #define HC_SWITCH_1_CONN_TYPE_VAL HC_SW_ON
  89. #define HC_SWITCH_2_GROUND_SYS HC_SW_ON
  90. #endif //ROTATE_SWITCH_HARDCODE
  91. #define DISABLE_GROUND_FAULT_PROTECT //ALARM_GROUND_FAIL
  92. #define DISABLE_RELAY_WELDING_PROTECT //ALARM_RELAY_DRIVE_FUALT
  93. //Threshold value wait to be modified
  94. #endif //FUNC_ONLY_FOR_CDFA_CONFIG
  95. //******************************************************************
  96. //ONLY FOR RD AC 110V TEST ENVIRONMENT (FAKE TO AC 220V)
  97. //#define FUNC_ONLY_FOR_RD_AC110V_CONFIG
  98. #ifdef FUNC_ONLY_FOR_RD_AC110V_CONFIG
  99. #define ROTATE_SWITCH_HARDCODE
  100. #ifdef ROTATE_SWITCH_HARDCODE
  101. #define HC_SW_ON (0)
  102. #define HC_SW_OFF (1)
  103. #define HC_ROTARY_SWITCH_SET_VAL (0x0B)
  104. #define HC_SWITCH_1_CONN_TYPE_VAL HC_SW_ON
  105. #define HC_SWITCH_2_GROUND_SYS HC_SW_ON
  106. #endif //ROTATE_SWITCH_HARDCODE
  107. #define DISABLE_GROUND_FAULT_PROTECT //ALARM_GROUND_FAIL
  108. #define DISABLE_RELAY_WELDING_PROTECT //ALARM_RELAY_DRIVE_FUALT
  109. //Threshold value wait to be modified
  110. #define TEST_ACXXX_FAKEDATA
  111. #ifdef TEST_ACXXX_FAKEDATA
  112. //#define TEST_AC110_FAKEDATA
  113. #define TEST_AC220_FAKEDATA
  114. #if (!defined(TEST_AC110_FAKEDATA) && !defined(TEST_AC220_FAKEDATA))
  115. #pragma message("====== !!! DEFINE ERROR! MUST DEFINE A TEST_ACXXX_FAKEDATA ITEM !!! ======")
  116. #endif
  117. #if (defined(TEST_AC110_FAKEDATA) && defined(TEST_AC220_FAKEDATA))
  118. #pragma message("====== !!! DEFINE ERROR! MUST DEFINE ONLY ONE TEST_ACXXX_FAKEDATA ITEM !!! ======")
  119. #endif
  120. #endif //TEST_ACXXX_FAKEDATA
  121. #endif //FUNC_ONLY_FOR_RD_AC110V_CONFIG
  122. //******************************************************************
  123. //FORMAL Function
  124. #define MODIFY_IMCP
  125. #define FUNC_METER_IC_ADE7858A //Function of Meter IC ADE7858A
  126. #define AC_PHASE_NUM_MAX (3)
  127. //---------------------------------------------------------------
  128. #ifdef FUNC_METER_IC_ADE7858A
  129. #define FUNC_REPLACE_ADC_WITH_METER_IC //Replace MCU ADC with Meter IC
  130. #define MODIFY_METER_IC_I2C_RX_TIMEOUT //Modify I2C RX Timeout to prevent block in
  131. //I2C_WaitOnFlagUntilTimeout()
  132. #define FUNC_RESET_METER_IC_I2C //When Fail in executing I2C HAL API, Reset the I2C
  133. #define METER_IC_INIT_RETRY_NUM_MAX (10)
  134. #define METER_IC_I2C_COMM_MAX_RETRY_NUM (5)
  135. #define METER_IC_I2C_COMM_HARD_RESET_SPEC (2)
  136. #define METER_IC_I2C_COMM_ADD_DELAY
  137. #define METER_IC_I2C_DISABLE_DMA
  138. #define FUNC_POWER_CONSUMPTION_BY_METER_IC //Use Meter IC to calculate total power consumption
  139. //#define METER_IC_TIMER_IDX_METER_POLLING_SPEC (500)
  140. #define METER_IC_TIMER_IDX_METER_POLLING_SPEC (300)
  141. #define METER_IC_TIMER_IDX_POWER_TIMEOUT_SPEC (1000 * 1) //1sec
  142. //#define METER_IC_POWER_CONSUMPTION_MIN_CURR (0.1) //A
  143. #define METER_IC_POWER_CONSUMPTION_MIN_CURR (0.5) //A
  144. #define METER_IC_POWER_CONSUMPTION_SAVE_PERIOD_SEC (180)
  145. #define METER_IC_POWER_CONSUMPTION_SAVE_MAX_COUNT (METER_IC_POWER_CONSUMPTION_SAVE_PERIOD_SEC * 1000 / METER_IC_TIMER_IDX_POWER_TIMEOUT_SPEC)
  146. #define FUNC_METER_IC_COMM_ALARM
  147. #ifdef FUNC_METER_IC_COMM_ALARM
  148. #define METER_IC_COMM_TIMEOUT (2000) //ms
  149. #endif
  150. #define METER_IC_USE_TASK_CRITICAL
  151. //#define DEBUG_METER_IC
  152. #define FUNC_INFO_METER_IC_RAW_DATA
  153. #define FUNC_METER_IC_POWER_FADEOUT
  154. #ifdef FUNC_METER_IC_POWER_FADEOUT
  155. #define METER_IC_POWER_FADEOUT_TIME (3000) //ms
  156. #endif
  157. #define FUNC_METER_IC_HISTORY //Save MeterIC calibration write history to flash (use hisCharging block)
  158. #ifdef FUNC_METER_IC_HISTORY
  159. //#define FUNC_METER_IC_HISTORY_DEBUG
  160. #define METER_IC_HISTORY_REC_NUM (256) //4096B / 16B = 256
  161. #define FUNC_METER_IC_HISTORY_IMCP_CMD
  162. #endif //FUNC_METER_IC_HISTORY
  163. #endif //FUNC_METER_IC_ADE7858A
  164. //---------------------------------------------------------------
  165. //MeterExt(PRO380-Mod)
  166. #define MODIFY_METER_EXT_PRO380_COMM_USE_PARITY_EVEN //PRO380-Mod Meter Factory Default
  167. #define MODIFY_METER_EXT_PRO380
  168. #ifdef MODIFY_METER_EXT_PRO380
  169. //#define METER_EXT_COMM_TIMEOUT (5000) //ms
  170. //#define METER_EXT_COMM_TIMEOUT (1000 * 10) //ms
  171. //#define METER_EXT_COMM_TIMEOUT (1000 * 15) //ms
  172. #define METER_EXT_COMM_TIMEOUT (1000 * 30) //ms
  173. #endif
  174. #define FUNC_AUTO_USE_EXT_METER
  175. //#define FUNC_FORCE_USE_METER_EXT_PRO380 //for Test Only
  176. //---------------------------------------------------------------
  177. #define FUNC_AUTO_IGNORE_AC_PHASE
  178. ////#define DISABLE_OLD_AW_MODEL_LEAK_MODULE_SELF_TEST_WITH_CSU
  179. //////AX Model: CSU Send CP PWM duty, so above block is not required
  180. #define MODIFY_COLD_LOAD_PICKUP_DELAY
  181. #ifdef MODIFY_COLD_LOAD_PICKUP_DELAY
  182. //#define COLD_LOAD_PICKUP_DELAY_TIME_MAX_RANGE_SEC (175)
  183. #define COLD_LOAD_PICKUP_DELAY_TIME_MAX_RANGE_SEC (10)
  184. #endif
  185. #define MODIFY_OCP_SPEC
  186. #define SCP_SPEC_VAL 10000 //100A
  187. #define MODIFY_ALARM_LEAKAGE_RECOVER
  188. //Prevent BUFFER OVERLOAD
  189. // @ PROTOCOL_MESSAGE_QUERY_MODEL_NAME
  190. // @ PROTOCOL_MESSAGE_QUERY_SN
  191. #define MODIFY_UNDEFINED_MODEL_NAME_AND_SN_ISSUE
  192. #define MODIFY_CONFIG_MODEL_NAME
  193. #define MODIFY_CONFIG_SN
  194. #define MODIFY_PROTOCOL_MESSAGE_QUERY_POWER_CONSUME_64_BIT //AX Model Only
  195. #define MODIFY_ADC_INIT_CLOCK_PRESCALER_SAME_WITH_AW
  196. #define MODIFY_ADC_INIT_ANALOG_WDG_ITMODE_SAME_WITH_AW
  197. //---------------------------------------------------------------
  198. #define FUNC_RS485_SLAVE //Function of perform a RS485 device (slave) used by master (ex: DC model) controller
  199. #ifdef FUNC_RS485_SLAVE
  200. #endif
  201. #define FUNC_FORCE_RUN_CSU_MODE_WITH_DC_MODELNAME //For DC Model CSU used via RS485
  202. //---------------------------------------------------------------
  203. #define MODIFY_CP_TASK_CTRL_CP_PWM
  204. #define MODIFY_CP_TASK_CTRL_CP_PWM_BELOW_SIX
  205. #define FUNC_DETECT_PP //Detect PP signal for socket connector model
  206. //key word:
  207. // user_pwm_setvalue(PWM_CH_CP
  208. // Charger.memory.EVSE_Config.data.item.MaxChargingCurrent
  209. // Charger.maxRatingCurrent
  210. // PROTOCOL_MESSAGE_CONFIG_MAX_CURRENT_PWM_DUTY
  211. // isRestoreFactory
  212. //---------------------------------------------------------------
  213. #define FUNC_OUTP_TYPE_E
  214. #ifdef FUNC_OUTP_TYPE_E
  215. //#define FUNC_USE_MODELNAME_TO_JUDGE_TYPEE_ENABLE
  216. //Comment above line. Because ModelName will not contain TypeE
  217. //information (Not a 2nd gun), so m_bEnableTypeE will always be TRUE (AX32)
  218. #define MODIFY_PROTOCOL_MESSAGE_CONFIG_RELAY_OUTPUT_CHECK_LEGACY_REQUEST
  219. #define MODIFY_CPTASK_HEAD
  220. #define MODIFY_CPTASK_TYPE_E
  221. #define MODIFY_CPTASK_TYPE_E_CSU_SE_RELAY_AUTO_OFF
  222. #define MODIFY_SOCKET_E_DETECT_PIN
  223. //#define DEBUG_OUTP_TYPE_E
  224. #endif //FUNC_OUTP_TYPE_E
  225. //---------------------------------------------------------------
  226. #define FUNC_ALARM_CP_NEG_ERROR
  227. //---------------------------------------------------------------
  228. //Fix MODE_ALARM => MODE_STOP => MODE_CHARGING (not output PWM but relay is ON)
  229. #define MODIFY_CPTASK_CSU_0_1_CHARGE_MODE
  230. #define MODIFY_ADCTASK_CP_STATE_CHANGE
  231. #define MODIFY_ALARMTASK_CP_ERROR_RECOVER
  232. #define MODIFY_MCU_PWM_SET_VALUE_CP
  233. #define FUNC_DEBUG_MSG_SET_CHARGER_MODE
  234. #define FUNC_DEBUG_MSG_CP_STATE
  235. //---------------------------------------------------------------
  236. #define FUNC_NEW_RELAY_MONITOR //New RelayWelding/DriveFault spec
  237. //---------------------------------------------------------------
  238. //#define FUNC_TRACE_MEM_HIS_ALARM
  239. //---------------------------------------------------------------
  240. //IWDG 32KHz / IWDG_PRESCALER_128 = 250Hz
  241. //Reload 3000 => 3000 / 250Hz = 12 sec
  242. //******************************************************************
  243. #define FUNC_FW_VER_TRACE
  244. #ifdef FUNC_FW_VER_TRACE
  245. //Version
  246. #define FW_VER_TYPE_DEVELOP (0) //D0.01
  247. #define FW_VER_TYPE_PVT (1) //B0.01
  248. #define FW_VER_TYPE_FORMAL (2) //V0.01
  249. #define FW_VER_TYPE_TEST (3) //T0.01
  250. ////#define FW_VER_TYPE FW_VER_TYPE_FORMAL
  251. ////#define FW_VER_NUM (131000) //V1.31
  252. //
  253. ////#define FW_VER_TYPE FW_VER_TYPE_TEST
  254. ////#define FW_VER_NUM (29000) //T0.29
  255. //SPECIFY FIRMWARE VERSION
  256. //#define FW_VER_TYPE FW_VER_TYPE_DEVELOP
  257. //#define FW_VER_NUM (17) //D0.17: 20210728
  258. //#define FW_VER_NUM (18) //D0.18: 20210729
  259. //#define FW_VER_NUM (19) //D0.19: 20210730
  260. //#define FW_VER_NUM (20) //D0.20: 20210803
  261. //#define FW_VER_NUM (21) //D0.21: 20210813
  262. //#define FW_VER_NUM (22) //D0.22: 20210823
  263. //#define FW_VER_NUM (23) //D0.23: 20210906
  264. //#define FW_VER_NUM (24) //D0.24: 20210908
  265. //#define FW_VER_NUM (25) //D0.25: 20210915
  266. //#define FW_VER_NUM (26) //D0.26: 20210924
  267. //#define FW_VER_NUM (27) //D0.27: 20210930
  268. //#define FW_VER_NUM (28) //D0.28: 20211007
  269. //#define FW_VER_NUM (29) //D0.29: 20211101
  270. //#define FW_VER_NUM (30) //D0.30: 20211122
  271. //#define FW_VER_TYPE FW_VER_TYPE_PVT
  272. //#define FW_VER_NUM (31) //B0.31: 20211206
  273. //#define FW_VER_NUM (32) //B0.32: 20211215
  274. //#define FW_VER_NUM (33) //V0.33/B0.33: 20220415
  275. //#define FW_VER_NUM (34) //V0.34/B0.34: 20230210
  276. //#define FW_VER_NUM (35) //V0.35/B0.35: 20230224
  277. //#define FW_VER_NUM (36) //V0.36/B0.36: 20230414 test
  278. //AW48 Version from here --------------------------------
  279. #define FW_VER_TYPE FW_VER_TYPE_DEVELOP
  280. //#define FW_VER_NUM (1000) //D0.01: 20230904
  281. //#define FW_VER_NUM (3000) //D0.02: 20231019
  282. //#define FW_VER_NUM (3000) //D0.03: 20231023
  283. //#define FW_VER_NUM (4000) //D0.04: 20231031 Test
  284. //#define FW_VER_NUM (10000) //D0.10: 20231108 (SBSFU from this version)
  285. //#define FW_VER_NUM (11000) //D0.11: 20231215
  286. #define FW_VER_NUM (14000) //D0.14: 20241112
  287. //---------------------------------------------------------------
  288. #if (FW_VER_NUM >= 17) //>= D0.17
  289. #define FUNC_ZEROING_WHEN_MEM_CLEARNED
  290. #define FUNC_METER_IC_VARIABLE_PARAM //AX32/48 have different resistance
  291. #endif
  292. //---------------------------------------------------------------
  293. #if (FW_VER_NUM >= 18) //>= D0.18
  294. //Modify KP, KE to KP_AX48/32 KE_AX48/32 in FUNC_METER_IC_VARIABLE_PARAM
  295. #endif
  296. //---------------------------------------------------------------
  297. #if (FW_VER_NUM >= 19) //>= D0.19
  298. #define FUNC_CHECK_MODELNAME_AX_PRIFIX
  299. #define FUNC_METER_IC_DEFAULT_CALI_VAL
  300. #define FUNC_METER_IC_CHECK_WHETHER_DEFAULT_CALI_VAL
  301. #endif
  302. //---------------------------------------------------------------
  303. #if (FW_VER_NUM >= 20) //>= D0.20
  304. #define MODIFY_PROTOCOL_MESSAGE_CONFIG_RELAY_OUTPUT_CHECK_ALARM_CODE
  305. #define MODIFY_AW_CP_TASK_CSU_0_1_CHARGING_MODE_STOP_WITHOUT_STATE_C
  306. #define FUNC_METER_IC_CALI_FLAG
  307. #endif
  308. //---------------------------------------------------------------
  309. #if (FW_VER_NUM >= 21) //>= D0.21
  310. #define FUNC_IDLE_UNTIL_READ_ALL_MEM
  311. #endif
  312. //---------------------------------------------------------------
  313. #if (FW_VER_NUM >= 22) //>= D0.22
  314. #define FUNC_VOLATILE_OPERATION
  315. #ifdef FUNC_VOLATILE_OPERATION
  316. #define VO_SIMU_CP
  317. #define VO_SIMU_PP
  318. #define VO_DISABLE_RELAY_WELDING
  319. #endif //FUNC_VOLATILE_OPERATION
  320. #define MODIFY_ALARM_CP_ERROR_RECOVER_USE_RESTORE
  321. #define MODIFY_ALARM_CP_NEG_ERROR_RECOVER_USE_RESTORE
  322. #define MODIFY_ALARM_GROUND_FAIL_RECOVER_USE_RESTORE
  323. #define FUNC_CURRENT_CP_PWM_DATA
  324. #endif
  325. //---------------------------------------------------------------
  326. #if (FW_VER_NUM >= 23) //>= D0.23
  327. #define FUNC_ROTARY_CURR_MAP
  328. #define FUNC_ROTARY_SLAVE_MODE
  329. #define MODIFY_LED_STATUS_202108
  330. #ifdef FUNC_VOLATILE_OPERATION
  331. #define VO_BLOCK_CSU_LED_ACTION_CMD
  332. #endif
  333. #define MODIFY_BREATHE_LED
  334. #ifdef MODIFY_BREATHE_LED
  335. #define BREATHE_LED_UP_SPEED (800)
  336. #define BREATHE_LED_DN_SPEED (2200)
  337. #endif
  338. //#define FUNC_SHOW_CSU_CONFIG_LED_ACTION_INFO
  339. #define MODIFY_LED_ALARM_LATCH
  340. #endif
  341. //---------------------------------------------------------------
  342. #if (FW_VER_NUM >= 24) //>= D0.24
  343. //-----------------------------------------------
  344. //GB Model:
  345. //Handshake Mode: CP to D or E => Stop PWM
  346. //Charging Mode: CP to D or E => Stop PWM
  347. //Stop Mode: CP to D or E => Stop PWM
  348. #define FUNC_RULE_GB_202108
  349. #ifdef FUNC_RULE_GB_202108
  350. #define FUNC_BLOCK_CSU_CONFIG_CP_PWM_DUTY
  351. #define MODIFY_MODE_HANDSHAKE_STOP_PWM_WITHOUT_OK_STATE
  352. #define MODIFY_MODE_CHARGING_STOP_PWM_WITHOUT_OK_STATE
  353. #define MODIFY_MODE_STOP_STOP_PWM_WITHOUT_OK_STATE
  354. #endif //FUNC_RULE_GB_202108
  355. //-----------------------------------------------
  356. #define MODIFY_CORRECTION_CHECK
  357. #define TRIM_CCID_SELFTEST
  358. //#define FUNC_CSU_CMD_DEBUG
  359. //#define DEBUG_RELAY_MONITOR_SHOW_INFO //DISABLE when test done *****
  360. //#define DISABLE_RELAY_WELDING_PROTECT //DISABLE when test done *****
  361. #endif
  362. //---------------------------------------------------------------
  363. #if (FW_VER_NUM >= 25) //>= D0.25
  364. #define MODIFY_AX32_ROTATE_SWITCH_TABLE_20210915
  365. #define FUNC_CHECK_REQ_AND_CP_WHEN_SET_CP_PWM
  366. #define FUNC_GUN_LOCK
  367. #ifdef FUNC_GUN_LOCK
  368. #define GUN_LOCK_ALARM
  369. #endif
  370. #endif
  371. //---------------------------------------------------------------
  372. #if (FW_VER_NUM >= 26) //>= D0.26
  373. #define FUNC_OCP_WITH_PP
  374. #endif
  375. //---------------------------------------------------------------
  376. #if (FW_VER_NUM >= 27) //>= D0.27
  377. //DIE_VERSION (MeterIC)
  378. #define FUNC_IDLE_UNTIL_INIT_METER_IC
  379. #ifdef FUNC_VOLATILE_OPERATION
  380. #define VO_GET_VO_CODE
  381. #define VO_SIMU_ACV
  382. #define VO_SIMU_NTC
  383. #define VO_SIMU_ALARMCODE
  384. #endif
  385. #endif
  386. //---------------------------------------------------------------
  387. #if (FW_VER_NUM >= 28) //>= D0.28
  388. //Charger.memory.EVSE_Config.data.item.PowerConsumptionCumulative_Total =
  389. // Modify FUNC_DEBUG_MSG_CP_STATE Position
  390. //#define FUNC_MODE_DEBUG_RELAY_ON_OFF_TEST_FOR_PHN_QE
  391. //#ifdef FUNC_MODE_DEBUG_RELAY_ON_OFF_TEST_FOR_PHN_QE
  392. //#define FUNC_MODE_DEBUG_RELAY_ON_OFF_DIFF_SEC
  393. //#define FUNC_MODE_DEBUG_RELAY_ON_SEC (4)
  394. //#define FUNC_MODE_DEBUG_RELAY_OFF_SEC (9)
  395. //#define FUNC_MODE_DEBUG_REC_RELAY_ON_TIMES
  396. //#endif
  397. //#define DISABLE_RELAY_WELDING_PROTECT //TEMP !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  398. //#define DISABLE_PRINT_DEBUG_MSG
  399. //#define DISABLE_PRINT_RTOS_MSG
  400. #define MODIFY_ADC_WELDING_CALCULATE_METHOD
  401. //#define DEBUG_RELAY_MONITOR_SHOW_INFO //DISABLE when test done *****
  402. #endif
  403. //---------------------------------------------------------------
  404. #if (FW_VER_NUM >= 29) //>= D0.29
  405. #define MODIFY_ALARM_DETECT_RELAY_WELDING_BLOCK
  406. #define FUNC_USE_RELAY_B_CONTACT //AX32 Regulation-EU Welding Detection (on New PCB & Relay)
  407. #ifdef FUNC_USE_RELAY_B_CONTACT
  408. ////#define DISABLE_USE_RELAY_B_CONTACT_WITH_DC_MODELNAME
  409. #endif
  410. //#define FUNC_CSU_CMD_DEBUG
  411. #endif
  412. //---------------------------------------------------------------
  413. #if (FW_VER_NUM >= 30) //>= D0.30
  414. #define MODIFY_LED_YELLOW_PARAMETER
  415. #ifdef MODIFY_LED_YELLOW_PARAMETER
  416. #define LED_YELLOW_R_VAL (1000)
  417. #define LED_YELLOW_G_VAL (500)
  418. #endif
  419. #define MODIFY_OTP_SPEC //AX48 (Test OK) AX32 (Test OK)
  420. #endif
  421. //---------------------------------------------------------------
  422. #if (FW_VER_NUM >= 31) //>= B0.31
  423. #define MODIFY_CP_DETECTION_STATE_F //Modify the identifiable CP signal State F (-12V)
  424. #endif
  425. //---------------------------------------------------------------
  426. #if (FW_VER_NUM >= 32) //>= B0.32(T0.32)
  427. #define MODIFY_DC_RS485_UPGRADE_ISSUE
  428. //#define MODIFY_OCP_MAGNIFICATION //RULE CE: fix OCP Magnification
  429. #define FUNC_CCS //CCS mode charging test with AUDI E-Tron
  430. #define FIX_FUNC_CHECK_REQ_AND_CP_WHEN_SET_CP_PWM //Fixed the problem that the basic model (without CSU) cannot output PWM
  431. #ifdef FUNC_CURRENT_CP_PWM_DATA
  432. #define FUNC_DISP_CURRENT_CP_PWM
  433. #endif
  434. #define DISABLE_METER_IC_IRQ_INTERRUPT
  435. #ifdef METER_IC_COMM_TIMEOUT
  436. #undef METER_IC_COMM_TIMEOUT
  437. #define METER_IC_COMM_TIMEOUT (5000) //ms
  438. #endif
  439. #ifdef METER_IC_USE_TASK_CRITICAL
  440. #undef METER_IC_USE_TASK_CRITICAL
  441. #endif
  442. #define MODIFY_PROTOCOL_MESSAGE_CONFIG_RELAY_OUTPUT_CHECK_MODE_CHARGING
  443. #define MODIFY_CP_STATE_F_SAMPLE_NUM_THRESHOLD
  444. #define CP_STATE_F_SAMPLE_NUM_THRESHOLD (830)
  445. #define FUNC_XP_PARSE_VERSION_INFO_FROM_MODELNAME
  446. #define FUNC_IGNORE_ILLEGAL_MODEL_NAME
  447. #define MODIFY_AC_EVSE_STATUS_MAX_CHARGING_CURRENT_VARIABLE
  448. #define FUNC_BUILD_DATE_TIME
  449. #define MODIFY_CPTASK_CSU_MODE_ALARM_GO_HANDSHAKE_WITH_NEW_CONDITION
  450. #define MODIFY_NO_CP_PWM_WHEN_SOCKET_E_IS_ON
  451. #define MODIFY_SOCKET_E_OCP_USE_MAX_CHARGING_CURRENT
  452. //Testing !
  453. //#define FORCE_VER_WITH_T_PREFIX //T0.32
  454. //#define FUNC_CSU_CMD_DEBUG
  455. //#define DISABLE_USE_RELAY_B_CONTACT_WITH_AX32_OLD_PCB //Only for old AX32 PCB !!!
  456. //Testing !
  457. #endif
  458. //---------------------------------------------------------------
  459. #if (FW_VER_NUM >= 33) //>= V0.33/B0.33/T0.33
  460. #define FUNC_AX32_TRIG_LEAKAGE
  461. #define FUNC_PTB_METER_WM3M4C
  462. #ifdef FUNC_PTB_METER_WM3M4C
  463. #define METER_WM3M4C_DEV_ADDR (0x21)
  464. //#define DEBUG_PTB_METER_WM3M4C
  465. //#define DEBUG_METER_RS485
  466. #endif
  467. #define FUNC_WAIT_METER_IC_INIT_OK
  468. #define RECODE_FUNC_METER_IC_TASK
  469. #define RECODE_FUNC_METER_TASK
  470. #ifdef RECODE_FUNC_METER_TASK
  471. #define RECODE_METER_PRO380
  472. #ifdef RECODE_METER_PRO380
  473. #define METER_PRO380_DEV_ADDR (0x01)
  474. #endif
  475. #endif //RECODE_FUNC_METER_TASK
  476. #define METER_IC_USE_TASK_CRITICAL
  477. #define MODIFY_METER_IC_TASK_PRIORITY
  478. #define MODIFY_UART_TX_LEN_FROM_U8_TO_U16
  479. #define MODIFY_CHECK_MALLOC_RESAULT
  480. #define MODIFY_CAL_MALLOC
  481. #define MODIFY_GUN_LOCK_SPEC_TIMES_TO_ALARM
  482. #ifdef MODIFY_GUN_LOCK_SPEC_TIMES_TO_ALARM
  483. #define GUN_LOCK_PULSE_MAX_TIMES (0x1000) //0xFFFF
  484. #define GUN_LOCK_PULSE_MAX_TIMES_CAUSE_ALARM (10)
  485. #endif
  486. ////#define DISABLE_OS_ETH_TASK (USB Initial process included)
  487. #define FUNC_ENABLE_TYPE_E_ONLY_IN_AX32
  488. #define MODIFY_OS_ADC_TASK_DEFINE_DATA
  489. #ifdef FUNC_VOLATILE_OPERATION
  490. #define VO_SIMU_ACA
  491. #endif
  492. #define FUNC_TASK_MONITOR
  493. #define MODIFY_SET_CP_PWM_DUTY_WHEN_GET_NEW_VAL
  494. #define MODIFY_CP_NEG_JUDGMENT_PROCESS
  495. #define FUNC_AX32_USE_AS_1P_MODEL
  496. ////#ifdef FUNC_AX32_USE_AS_1P_MODEL
  497. //////#define INPUT_VOLTAGE_WITHOUT_CONNECTION_MAX (2000) //unit: 0.01V (20V)
  498. ////#define INPUT_VOLTAGE_WITHOUT_CONNECTION_MAX (13000) //unit: 0.01V (130V)
  499. ////#endif
  500. //----------------------------------------------- [AX80]
  501. #define FUNC_AX80
  502. #ifdef FUNC_AX80
  503. #define FUNC_AX80_ADD_4_TEMP_SENEOR
  504. #ifdef FUNC_AX80_ADD_4_TEMP_SENEOR
  505. #define FUNC_AX80_NEW_TEMP_SENSOR_COMPENSATION
  506. #endif
  507. //#define FUNC_AX80_ADD_TILT_SENSOR
  508. #ifdef FUNC_AX80_ADD_TILT_SENSOR
  509. #define VO_DISABLE_DETECT_TILT_SENSOR
  510. #endif
  511. #endif //FUNC_AX80
  512. //----------------------------------------------- [From AW_P V0.09]
  513. #define FUNC_CP_VARIABLE_MAX_STATE_COUNTER
  514. #define FUNC_CP_VARIABLE_MAX_STATE_COUNTER_C_TO_D_SET_3_FOR_PASS_TERTEC_TEST
  515. #define FUNC_GET_TRIP_TIME
  516. //----------------------------------------------- [From AW_P V0.10]
  517. ////#define FUNC_REPLACE_CORMEX_WITH_VAC_FOR_CNS_MODEL
  518. ////#define FUNC_AUTO_MODIFY_CCID_MODULE
  519. #define FUNC_CSU_CMD_DEBUG
  520. #define TEST_FOR_ENERGY_STAR
  521. #ifdef TEST_FOR_ENERGY_STAR
  522. #ifdef BREATHE_LED_UP_SPEED
  523. #undef BREATHE_LED_UP_SPEED
  524. #define BREATHE_LED_UP_SPEED (2500) //(800)
  525. #endif
  526. #ifdef BREATHE_LED_DN_SPEED
  527. #undef BREATHE_LED_DN_SPEED
  528. #define BREATHE_LED_DN_SPEED (2500) //(2200)
  529. #endif
  530. #endif //TEST_FOR_ENERGY_STAR
  531. #define FUNC_BLOCK_CSU_CMD_SET_DUTY_WHEN_ALARM_CP_F_STATE
  532. #define MODIFY_OCP_PROC_WITH_MODELNAME_IDX_3_EURO_SPEC
  533. //#define FUNC_TEST_PRO380_INIT_DE_HIGH_1_SEC
  534. #define FUNC_TEST_PRO380_TIMEOUT_DE_HIGH_X_MS
  535. #ifdef FUNC_TEST_PRO380_TIMEOUT_DE_HIGH_X_MS
  536. #define TEST_PRO380_TIMEOUT_DE_HIGH_X_MS_PERIOD (1000) //(600)
  537. #endif
  538. #define FUNC_METER_IC_READ_PHASE_ANGLE
  539. #define AUTO_MODIFY_FW_VERSION_PREFIX_V_WHEN_GET_AX48_MODELNAME_WITH_CSU
  540. //-----------------------------------------------
  541. //Testing !
  542. //#define FORCE_VER_WITH_T_PREFIX //T0.33
  543. //#define DISABLE_USE_RELAY_B_CONTACT_WITH_AX32_OLD_PCB //Only for old AX32 PCB !!!
  544. //#define DISABLE_PRINT_DEBUG_MSG
  545. //#define DISABLE_PRINT_RTOS_MSG
  546. //#define TEST_METER_PRO380_AND_WM3M4C_AT_THE_SAME_TIME_USE_MODELNAME_IDX_3_X
  547. //#define TEST_RELAY_DRIVE_WITHOUT_HOLD
  548. //#define DISABLE_OVP_PROTECT
  549. //#define DISABLE_UVP_PROTECT
  550. //#define DISABLE_OCP_PROTECT
  551. //#define DISABLE_OTP_PROTECT
  552. //#define DISABLE_CCID_PROTECT
  553. //#define FUNC_MODE_DEBUG_RELAY_ON_OFF_TEST_FOR_PHN_QE
  554. //#ifdef FUNC_MODE_DEBUG_RELAY_ON_OFF_TEST_FOR_PHN_QE
  555. //#define FUNC_MODE_DEBUG_RELAY_ON_OFF_DIFF_SEC
  556. //#define FUNC_MODE_DEBUG_RELAY_ON_SEC (4)
  557. //#define FUNC_MODE_DEBUG_RELAY_OFF_SEC (9)
  558. //#define FUNC_MODE_DEBUG_REC_RELAY_ON_TIMES
  559. //#endif //FUNC_MODE_DEBUG_RELAY_ON_OFF_TEST_FOR_PHN_QE
  560. //Testing !
  561. //-----------------------------------------------
  562. #endif
  563. //---------------------------------------------------------------
  564. #if (FW_VER_NUM >= 34) //>= V0.34/B0.34/T0.34
  565. //Fix CE OCP specification
  566. //undefine MODIFY_OCP_MAGNIFICATION
  567. //-----------------------------------------------
  568. //Testing !
  569. //#define FORCE_VER_WITH_T_PREFIX //T0.34
  570. //#define KENNY_SAFETY_TEST_RELAY_ALWAYS_ON
  571. //#define DISABLE_GROUND_FAULT_PROTECT
  572. //Testing !
  573. //-----------------------------------------------
  574. #endif
  575. //---------------------------------------------------------------
  576. #if (FW_VER_NUM >= 35) //>= V0.35/B0.35/T0.35
  577. #define FIX_OUTP_PWM_WHEN_ALARM_RECOVER_IN_4SEC
  578. #define MODIFY_GOT_CSU_DUTY_CMD_PROCESS
  579. //Modify in FUNC_AX32_USE_AS_1P_MODEL
  580. ////#define MODIFY_AX32_RUN_3P_AND_1P_AFTER_GENERATION_CODE_5
  581. //-----------------------------------------------
  582. //Testing !
  583. //#define FORCE_VER_WITH_T_PREFIX //T0.35
  584. //#define FUNC_DISABLE_SOME_ALARM_FOR_ATE_SITE_SAMPLE_TEST
  585. //#ifdef FUNC_DISABLE_SOME_ALARM_FOR_ATE_SITE_SAMPLE_TEST
  586. //#define FORCE_VER_WITH_F_PREFIX //F0.35 only test in facrory
  587. //#define DISABLE_CCID_PROTECT
  588. //#define DISABLE_GROUND_FAULT_PROTECT
  589. //#define DISABLE_OVP_PROTECT
  590. //#define DISABLE_UVP_PROTECT
  591. //#define DISABLE_OCP_PROTECT
  592. //#endif
  593. //#define DISABLE_CCID_PROTECT
  594. //Testing !
  595. //-----------------------------------------------
  596. #endif
  597. //---------------------------------------------------------------
  598. #if (FW_VER_NUM >= 36) //>= V0.36/B0.36/T0.36
  599. #define FUNC_RELAY_OFF_WHEN_CSU_CMD_TIMEOUT
  600. #ifdef FUNC_RELAY_OFF_WHEN_CSU_CMD_TIMEOUT
  601. #define CSU_CMD_TIMEOUT_SEC (10)
  602. #endif
  603. #define FUNC_AT32
  604. //Modify in FUNC_AX32_USE_AS_1P_MODEL
  605. #define MODIFY_AX32_RUN_3P_OR_1P_AUTOMATIC_AFTER_GC5 //AFTER_GENERATION_CODE_5
  606. #define FUNC_RELAY_OFF_WHEN_GET_TWICE_OFF_CMD
  607. //#define FUNC_REQUEST_OFF_WHEN_GET_TWICE_OFF_CMD
  608. #define FUNC_REQUEST_OFF_WHEN_CSU_CMD_TIMEOUT
  609. #define FUNC_ADD_FW_VER_WITH_GUN_TYPE_NACS
  610. #define FUNC_ADD_FW_VER_WITH_NET_TYPE_WIFI_AND_4G
  611. #define FUNC_SHOW_CSU_CONFIG_LED_ACTION_INFO
  612. #define FUNC_BOOT_TICK
  613. #define FUNC_RESET_DATA_AFTER_WRITE_NEW_MODELNAME
  614. //Modify METER_EXT_COMM_TIMEOUT from 10s to 15s
  615. //#define FUNC_DEBUG_CONSOLE
  616. //-----------------------------------------------
  617. //Testing !
  618. //#define FORCE_VER_WITH_T_PREFIX //T0.36
  619. //#define FUNC_FORCE_USE_METER_EXT_PRO380
  620. //#define FUNC_DC_AUTO_RELAY_OFF
  621. //------------------------------
  622. ////#define REDUCE_RELAY_CUT_OFF_TIME_WHEN_CP_C_TO_A
  623. //#ifdef REDUCE_RELAY_CUT_OFF_TIME_WHEN_CP_C_TO_A
  624. //#ifdef HTK_USE_XPRINT
  625. //#undef HTK_USE_XPRINT
  626. //#endif
  627. //#define DISABLE_PRINT_DEBUG_MSG
  628. //#define DISABLE_PRINT_RTOS_MSG
  629. //#endif //REDUCE_RELAY_CUT_OFF_TIME_WHEN_CP_C_TO_A
  630. //------------------------------
  631. //#define FUNC_MODE_DEBUG_RELAY_ON_OFF_TEST_FOR_PHN_QE
  632. //#ifdef FUNC_MODE_DEBUG_RELAY_ON_OFF_TEST_FOR_PHN_QE
  633. //#define FUNC_MODE_DEBUG_RELAY_ON_OFF_DIFF_SEC
  634. //#define FUNC_MODE_DEBUG_RELAY_ON_SEC (4)
  635. //#define FUNC_MODE_DEBUG_RELAY_OFF_SEC (9)
  636. //#define FUNC_MODE_DEBUG_REC_RELAY_ON_TIMES
  637. //
  638. //#define FUNC_MODE_DEBUG_WITH_NORMAL_ALARM_DETECTE
  639. //#define FUNC_MODE_ALARM_TO_MODE_DEBUG
  640. //#endif //FUNC_MODE_DEBUG_RELAY_ON_OFF_TEST_FOR_PHN_QE
  641. //#define DISABLE_PRINT_DEBUG_MSG
  642. //#define DISABLE_PRINT_RTOS_MSG
  643. //#define DISABLE_OCP_PROTECT
  644. //#define DISABLE_OTP_PROTECT
  645. //#define DISABLE_CCID_PROTECT
  646. //#define TEST_GROUND_FAULT_PROTECT_TIME_TO_15_SEC
  647. //Testing !
  648. //-----------------------------------------------
  649. #endif
  650. //---------------------------------------------------------------
  651. //AW48 first version
  652. #if (FW_VER_NUM >= 1000) //>= D0.01
  653. #define AUTO_MODIFY_FW_VERSION_PREFIX_V_WHEN_GET_AX32_MODELNAME_WITH_CSU
  654. #define FUNC_UPDATE_ROTARY_SWITCH_SETTING_AFTER_PARSE_MODELNAME
  655. #define FUNC_FLASH_UPDATE_CONFIG_BOTH_PRIMARY_AND_BACKUP
  656. #define FUNC_FLASH_RESTORE_CONFIG_WHEN_PRIMARY_LOSS
  657. #define FUNC_FLASH_CONFIG_APPEND_CRC
  658. #define FUNC_STM32_FLASH_INFO
  659. #define FUNC_STM32_FLASH_OPTION_BYTES
  660. //Modify METER_EXT_COMM_TIMEOUT from 15s to 30s
  661. //*********************** [AW48 Beg]
  662. #define FUNC_AW48
  663. #ifdef FUNC_AW48
  664. #define FUNC_RS485_BLE_SW
  665. #define FUNC_LIN_EN_SW
  666. #define FUNC_LIN_CP
  667. #ifdef FUNC_LIN_CP
  668. #define FUNC_ENABLE_USART1_LIN_LL_LIB
  669. #define FUNC_LIN_MASTER
  670. //#define DEBUG_LIN_CP
  671. //#define FUNC_LINCP_DISPLAY
  672. #else //FUNC_LIN_CP
  673. #define FUNC_ENABLE_USART1_RFID
  674. #endif //FUNC_LIN_CP
  675. #if (defined(FUNC_ENABLE_USART1_RFID) && defined(FUNC_ENABLE_USART1_LIN_LL_LIB))
  676. #pragma message("====== !!! DEFINE ERROR! MUST DEFINE ONLY ONE FUNC_ENABLE_USART1_XXXXX ITEM !!! ======")
  677. #endif
  678. #define FUNC_EKM_OMNIMETER
  679. #ifdef FUNC_EKM_OMNIMETER
  680. #define FUNC_EKM_OMNIMETER_DISPLAY
  681. #endif
  682. //#define DEBUG_METER_RS485
  683. #define FUNC_AW48_ADD_6_TEMP_SENEOR
  684. #ifdef FUNC_AW48_ADD_6_TEMP_SENEOR
  685. #define FUNC_AW48_NEW_TEMP_SENSOR_COMPENSATION
  686. #endif
  687. #define MODIFY_AW48_OTP_SPEC_20231006_KENNY
  688. #define FUNC_WARNING_CODE
  689. //LED
  690. #define FUNC_AW48_NET_LED
  691. #define FUNC_AW48_EXT_LED
  692. #define FUNC_AW48_EXT_LED_BLINK_PERIOD_MORE_THAN_200MS
  693. #define AW48_EXTLED_BLINK_PERIOD (230) //ms
  694. #define MODIFY_AW48_LED_NOT_USE_YELLOW_AND_BREATHE
  695. #define FUNC_AW48_NO_SLEEP_MODE_LED
  696. #define FUNC_MODIFY_AW48_LED_ACTION_TERMINATED_COMPLETE
  697. //--------------------------------
  698. #define FUNC_AES256
  699. #define FUNC_ECDSA
  700. #define FUNC_CSU_SIGN_IN_VERIFY
  701. #define FUNC_CSU_UPGRADE_FW_VERIFY
  702. #define FUNC_CSU_VERIFY_USE_ECDSA
  703. #ifdef FUNC_CSU_VERIFY_USE_ECDSA
  704. #define FUNC_CSU_VERIFY_USE_ECDSA_CMOX_ECC_CURVE_SECP256R1
  705. #endif
  706. #define FUNC_ENABLE_CSU_SIGN_IN_WHEN_MCU_HAVE_NG_MODELNAME //SIGN-IN-OK ===> CSU Write ModelName to MCU
  707. #define FUNC_SALT_AND_BLEND
  708. #ifdef FUNC_SALT_AND_BLEND
  709. //#define FUNC_SALT_AND_BLEND_DEBUG
  710. #endif
  711. #define FUNC_VERIFY_TASK
  712. #define FUNC_CSU_PUBLIC_KEY_OPERATION
  713. //#define FUNC_SECURITY_DEBUG_INFO
  714. //--------------------------------
  715. //NG PCB
  716. #define RELAY_COMMON_GPIO
  717. //PinNo Tag AX80 AX48 AX32 AW32 AW48 (NG LAYOUT)
  718. //99 PC9 RELAY-DRV-L1 RELAY-DRV-L1 RELAY-DRV-L1 RELAY-DRV-L1 Hold-L2
  719. //100 PA8 Hold-L1 Hold-L1 Hold-L1 Hold-L1 RELAY-DRV-L2
  720. //101 PA9 RELAY-DRV-L2 RELAY-DRV-L2 RELAY-DRV-L2 RELAY-DRV-L2 Hold-L1
  721. //102 PA10 Hold-L2 Hold-L2 Hold-L2 Hold-L2 RELAY-DRV-L1
  722. //#define FIXHW_AW48_CSU_EXIST_DELAY_CHECK //Old CSU: Pull LO; New CSU Pull HI (need wait initial time to set LO)
  723. #endif //FUNC_AW48
  724. //*********************** [AW48 End]
  725. //-----------------------------------------------
  726. //Testing !
  727. //#define FORCE_VER_WITH_T_PREFIX //T0.01
  728. //#define DISABLE_OCP_PROTECT
  729. //#define DISABLE_OTP_PROTECT
  730. //#define DISABLE_CCID_PROTECT
  731. //Testing !
  732. //-----------------------------------------------
  733. #endif
  734. //---------------------------------------------------------------
  735. #if (FW_VER_NUM >= 2000) //>= D0.02
  736. //Skip this version
  737. //-----------------------------------------------
  738. //Testing !
  739. //#define FORCE_VER_WITH_T_PREFIX
  740. //Testing !
  741. //-----------------------------------------------
  742. #endif //(FW_VER_NUM >= 2000)
  743. //---------------------------------------------------------------
  744. #if (FW_VER_NUM >= 3000) //>= D0.03
  745. #ifdef MODIFY_CHECK_MALLOC_RESAULT
  746. #undef MODIFY_CHECK_MALLOC_RESAULT
  747. #endif
  748. #ifdef MODIFY_CAL_MALLOC
  749. #undef MODIFY_CAL_MALLOC
  750. #endif
  751. #define FUNC_UART_IAP_TX_BUF_INIT_ZERO
  752. #define FUNC_GUN_LOCK_TRIG_MODE
  753. #define FUNC_ADD_AC_DC_LEAK_TIMER
  754. //-----------------------------------------------
  755. //Testing !
  756. //#define FORCE_VER_WITH_T_PREFIX
  757. //Testing !
  758. //-----------------------------------------------
  759. #endif //(FW_VER_NUM >= 3000)
  760. //---------------------------------------------------------------
  761. #if (FW_VER_NUM >= 4000) //>= D0.04
  762. //-----------------------------------------------
  763. //Testing !
  764. //#define FORCE_VER_WITH_T_PREFIX
  765. //Testing !
  766. //-----------------------------------------------
  767. #endif //(FW_VER_NUM >= 4000)
  768. //---------------------------------------------------------------
  769. #if (FW_VER_NUM >= 5000) //>= D0.05
  770. #define FUNC_AW48_NEW_TEMP_SENSOR_COMPENSATION_20231214
  771. //-----------------------------------------------
  772. //Testing !
  773. //#define FORCE_VER_WITH_T_PREFIX
  774. //Testing !
  775. //-----------------------------------------------
  776. #endif //(FW_VER_NUM >= 5000)
  777. //---------------------------------------------------------------
  778. #if (FW_VER_NUM >= 6000) //>= D0.06
  779. #define FUNC_TEMP_SENSOR_WITH_NEG_VALUE
  780. #define FUNC_SHOW_CORRECTION_DATA
  781. #define FUNC_SHOW_RELAY_INFO
  782. #define FUNC_MODIFY_LEAK_AC_DISPLAY
  783. #define FUNC_MODIFY_CP_PWM_CTRL_20231225
  784. #ifdef FUNC_TASK_MONITOR
  785. #define FUNC_MODIFY_TASK_MONITOR_20231227
  786. #endif
  787. #define MODIFY_CHECK_MALLOC_RESAULT
  788. #define MODIFY_FUNC_CRMS_CAL
  789. #define MODIFY_FUNC_GFRMS_CAL
  790. #define MODIFY_FUNC_VRMS_CAL2
  791. #define MODIFY_PROTOCOL_MESSAGE_CONFIG_RELAY_OUTPUT_CHECK_CP_PWM
  792. //-----------------------------------------------
  793. //Testing !
  794. //#define FORCE_VER_WITH_T_PREFIX
  795. //Testing !
  796. //-----------------------------------------------
  797. #endif //(FW_VER_NUM >= 6000)
  798. //---------------------------------------------------------------
  799. #if (FW_VER_NUM >= 7000) //>= D0.07
  800. #define AW48_NEW_PCB_WITH_CORRECT_RELAY_PIN
  801. //-------
  802. #define FUNC_CUSTOMIZED_LED_MODE_FROM_CSU
  803. #define FUNC_QUERY_METER_IC_DIE_VERSION
  804. //#define FUNC_FORCE_QUERY_METER_IC_DIE_VERSION_2 //for CNS
  805. //------- [New AX48 NACS PCB with AW48 new HW feature]
  806. #define FUNC_AX48_NACS
  807. #ifdef FUNC_AX48_NACS
  808. #define FUNC_AX48_NACS_ADD_6_TEMP_SENEOR
  809. #ifdef FUNC_AX48_NACS_ADD_6_TEMP_SENEOR
  810. #define FUNC_AX48_NACS_NEW_TEMP_SENSOR_COMPENSATION
  811. #endif
  812. #define MODIFY_AX48_NACS_OTP_SPEC_20231006_KENNY
  813. #define FUNC_AX48_NACS_NEW_TEMP_SENSOR_COMPENSATION_20231214
  814. #define FUNC_DETECT_PP_NACS
  815. #endif //FUNC_AX48_NACS
  816. //------- [New AX48 NACS PCB with AW48 new HW feature]
  817. //------- [New AX80 NACS PCB with AW48 new HW feature]
  818. #define FUNC_AX80_NACS
  819. #ifdef FUNC_AX80_NACS
  820. //#define FUNC_AW48 //From AW48 Model
  821. //#define FUNC_AW48_ADD_6_TEMP_SENEOR //From AW48 Model
  822. #define FUNC_AX80_NACS_ADD_6_TEMP_SENEOR
  823. #ifdef FUNC_AX80_NACS_ADD_6_TEMP_SENEOR
  824. #define FUNC_AX80_NACS_NEW_TEMP_SENSOR_COMPENSATION
  825. #endif
  826. #define MODIFY_AX80_NACS_OTP_SPEC_20231006_KENNY
  827. #define FUNC_AX80_NACS_NEW_TEMP_SENSOR_COMPENSATION_20231214
  828. //#define FUNC_DETECT_PP_NACS
  829. #endif //FUNC_AX80_NACS
  830. //------- [New AX80 NACS PCB with AW48 new HW feature]
  831. //#define FUNC_DISABLE_USART2_TO_PASS_AW48_RF_TEST_20240116_DEKRA
  832. #define FUNC_SET_AT32_MODEL_SCP_SPEC_VAL_HIGHER_TO_AVOID_SCP_ALARM
  833. #define FUNC_ADD_TILT_SENSOR_MODEL
  834. #define FUNC_DISABLE_TILT_SENSOR_FOR_TEST
  835. //-----------------------------------------------
  836. //Testing !
  837. //#define FORCE_VER_WITH_T_PREFIX
  838. //#define FUNC_DISP_MCU_CLOCK_INFO
  839. //#define FUNC_TEST_SET_CSU_MOUNT_PIN_NOPULL //pin floating, abandoned
  840. //Testing !
  841. //-----------------------------------------------
  842. #endif //(FW_VER_NUM >= 7000)
  843. //---------------------------------------------------------------
  844. #if (FW_VER_NUM >= 8000) //>= D0.08
  845. #define MODIFY_AW48_WELDING_THRESHOLD_KENNY_20240418
  846. #define FUNC_AX48_NACS_NEW_TEMP_SENSOR_COMPENSATION_20240415
  847. #define FUNC_AX32_AUTO_PHASE_WITHOUT_GENERATION_CODE
  848. #define FUNC_SUPPORT_MODEL_AXYC
  849. #define FUNC_AXSJ_USE_NEW_NACS_PCB
  850. #define MODIFY_AW48_CCID_UL_SPEC_KENNY_20240401
  851. #define FUNC_AW48_KENNY_TEST_DOUBLE_GF_ADC_VAL
  852. //-----------------------------------------------
  853. //Testing !
  854. //#define FORCE_VER_WITH_T_PREFIX
  855. //Testing !
  856. //-----------------------------------------------
  857. #endif //(FW_VER_NUM >= 8000)
  858. //---------------------------------------------------------------
  859. #if (FW_VER_NUM >= 9000) //>= D0.09
  860. #define FUNC_AW48_NEW_TEMP_SENSOR_COMPENSATION_20240508
  861. //-----------------------------------------------
  862. //Testing !
  863. //#define FORCE_VER_WITH_T_PREFIX
  864. //Testing !
  865. //-----------------------------------------------
  866. #endif //(FW_VER_NUM >= 9000)
  867. //---------------------------------------------------------------
  868. #if (FW_VER_NUM >= 10000) //>= D0.10
  869. #define FUNC_USE_STM32_SBSFU
  870. #ifdef FUNC_USE_STM32_SBSFU
  871. #include "../../Linker_Common/EWARM/STM32_SBSFU_Define.h"
  872. #endif
  873. #define FUNC_TMP100
  874. #define FUNC_AX48_NACS_TEMP_SENSOR_WITHOUT_COMPENSATION_20240521
  875. #define DEBUG_SHOW_AX48_NACS_TEMP_SENSOR_ADC_COUNT
  876. #define FUNC_AX48_NACS_TEMP_SENSOR_COMPENSATION_AND_MODIFY_FORMULA_20240522 //Steven
  877. #define MODIFY_AX48_NACS_OTP_SPEC_20240522_STEVEN
  878. #define FUNC_AX48_NACS_TEMP_SENSOR_COMPENSATION_WITH_CURRENT_20240523 //Steven
  879. #define FUNC_AW48_TEMP_SENSOR_WITHOUT_COMPENSATION_20240521
  880. #define DEBUG_SHOW_AW48_TEMP_SENSOR_ADC_COUNT
  881. #define FUNC_AW48_TEMP_SENSOR_COMPENSATION_AND_MODIFY_FORMULA_20240522 //Steven
  882. #define MODIFY_AW48_OTP_SPEC_20240522_STEVEN
  883. #define FUNC_AW48_TEMP_SENSOR_COMPENSATION_WITH_CURRENT_20240523 //Steven
  884. #define FUNC_MODIFY_OTP_RECOVER_PROCESS
  885. #define FUNC_AW48_TEMP_SENSOR_COMPENSATION_WITH_CURRENT_20240729 //Jack
  886. #define MODIFY_AW48_OTP_SPEC_20240729_JACK
  887. #define MODIFY_AW48_OTP_SPEC_20240802_STEVEN //=> New Group4
  888. #define FUNC_TEMP_SET_MAXMIN_WHEN_OUT_OF_SPEC
  889. #define FUNC_GUN_TEMP_LATCH
  890. #define FUNC_UNPLUG_GUN_TO_RELEASE_TEMP_LATCH
  891. #define MODIFY_AW48_OTP_SPEC_20240809_JACK
  892. #define MODIFY_AW48_OTP_SPEC_20240814_KENNY
  893. #define MODIFY_AW48_OTP_SPEC_20240819_JACK
  894. #define MODIFY_AX48_NACS_OTP_SPEC_20240826_STEVEN //=> New Group4
  895. #define FUNC_AW48_TEMP_SENSOR_COMPENSATION_WITH_CURRENT_20241007
  896. #define MODIFY_AW48_OTP_SPEC_20241016_JACK
  897. #define ADD_AX_NACS_PCB_USE_GEN_CODE_3
  898. #define FUNC_AX80_NACS_TEMP_SENSOR_WITHOUT_COMPENSATION_20240903
  899. #define DEBUG_SHOW_AX80_NACS_TEMP_SENSOR_ADC_COUNT
  900. #define FUNC_AX80_NACS_TEMP_SENSOR_COMPENSATION_WITH_CURRENT_20240906 //Jack
  901. #define MODIFY_AX80_NACS_OTP_SPEC_20240911_JACK //=> New Group4
  902. #define AUTO_MODIFY_FW_VERSION_PREFIX_V_WHEN_GET_AX80_MODELNAME_WITH_CSU
  903. #define FUNC_SYSTEM_KEEP_INFO
  904. //-----------------------------------------------
  905. //Testing !
  906. //#define FORCE_VER_WITH_T_PREFIX
  907. //#define FUNC_VERSION_FOR_LAB_CERTIFICATE_SPEC
  908. //#define DISABLE_OTP_PROTECT
  909. //#define TEST_AW48_TEMP_SENSOR_COMPENSATION_WITH_CURRENT_20240523_REMOVE_COMPENSATION
  910. //#define DISABLE_UVP_PROTECT
  911. //#define FUNC_MODE_DEBUG_RELAY_ON_OFF_TEST_FOR_PHN_QE
  912. //#ifdef FUNC_MODE_DEBUG_RELAY_ON_OFF_TEST_FOR_PHN_QE
  913. //#define FUNC_MODE_DEBUG_RELAY_ON_OFF_DIFF_SEC
  914. //#define FUNC_MODE_DEBUG_RELAY_ON_SEC (4)
  915. //#define FUNC_MODE_DEBUG_RELAY_OFF_SEC (9)
  916. //#define FUNC_MODE_DEBUG_REC_RELAY_ON_TIMES
  917. //#endif
  918. //***************************************************************************
  919. //#define FUNC_AX80_ADD_TILT_SENSOR >>>> SHOULD BE COMMENT
  920. //***************************************************************************
  921. //Testing !
  922. //-----------------------------------------------
  923. #endif //(FW_VER_NUM >= 10000)
  924. //---------------------------------------------------------------
  925. #if (FW_VER_NUM >= 11000) //>= D0.11
  926. #define FUNC_VERSION_USE_NEW_SPEC_20240926 //define FUNC_VERSION_FOR_LAB_CERTIFICATE_SPEC (xx.xx.A1) else (xx.xx.A0)
  927. //-----------------------------------------------
  928. //Testing !
  929. //#define FORCE_VER_WITH_T_PREFIX
  930. //#define FUNC_VERSION_FOR_LAB_CERTIFICATE_SPEC
  931. //#define DISABLE_CCID_PROTECT
  932. //Testing !
  933. //-----------------------------------------------
  934. #endif //(FW_VER_NUM >= 11000)
  935. //---------------------------------------------------------------
  936. #if (FW_VER_NUM >= 12000) //>= D0.12
  937. //-----------------------------------------------
  938. //Testing !
  939. //#define FORCE_VER_WITH_T_PREFIX
  940. //Testing !
  941. //-----------------------------------------------
  942. #endif //(FW_VER_NUM >= 12000)
  943. //---------------------------------------------------------------
  944. #if (FW_VER_NUM >= 13000) //>= D0.13
  945. //-----------------------------------------------
  946. //Testing !
  947. //#define FORCE_VER_WITH_T_PREFIX
  948. //Testing !
  949. //-----------------------------------------------
  950. #endif //(FW_VER_NUM >= 13000)
  951. //---------------------------------------------------------------
  952. #if (FW_VER_NUM >= 14000) //>= D0.14
  953. #define MODIFY_FLASH_OPERATION_20241104
  954. #define FUNC_CALC_FLASH_CRC_IN_CRITICAL
  955. #define FUNC_RESET_CONNECTOR_PLUGIN_TIMES
  956. //-----------------------------------------------
  957. //Testing !
  958. #define FORCE_VER_WITH_T_PREFIX
  959. //Testing !
  960. //-----------------------------------------------
  961. #endif //(FW_VER_NUM >= 14000)
  962. //---------------------------------------------------------------
  963. //---------------------------------------------------------------
  964. //---------------------------------------------------------------
  965. //---------------------------------------------------------------
  966. //---------------------------------------------------------------
  967. #endif //FUNC_FW_VER_TRACE
  968. //******************************************************************
  969. //Type define
  970. #ifdef HTK
  971. #ifdef HTK_USE_XPRINT
  972. #define XP(FMT, ARGS...) (printf(FMT, ##ARGS))
  973. #else
  974. #define XP(FMT, ARGS...)
  975. #endif
  976. //#define HTK_USE_XPRINT_TEST
  977. #ifdef HTK_USE_XPRINT_TEST
  978. #define XT(FMT, ARGS...) (printf(FMT, ##ARGS))
  979. #define XRowWidth(c, count) (HTK_PrintRow((c), (count)))
  980. #define XRowS(c) (HTK_PrintRow((c), (20)))
  981. #define XRowM(c) (HTK_PrintRow((c), (40)))
  982. #define XRowL(c) (HTK_PrintRow((c), (80)))
  983. #else
  984. #define XT(FMT, ARGS...)
  985. #define XRowWidth(c, count)
  986. #define XRowS(c)
  987. #define XRowM(c)
  988. #define XRowL(c)
  989. #endif
  990. typedef uint8_t byte;
  991. typedef int8_t sbyte;
  992. typedef int64_t s64;
  993. typedef int32_t s32;
  994. typedef int16_t s16;
  995. typedef int8_t s8;
  996. typedef const int64_t sc64;
  997. typedef const int32_t sc32;
  998. typedef const int16_t sc16;
  999. typedef const int8_t sc8;
  1000. typedef __IO int64_t vs64;
  1001. typedef __IO int32_t vs32;
  1002. typedef __IO int16_t vs16;
  1003. typedef __IO int8_t vs8;
  1004. typedef __I int64_t vsc64;
  1005. typedef __I int32_t vsc32;
  1006. typedef __I int16_t vsc16;
  1007. typedef __I int8_t vsc8;
  1008. typedef uint64_t u64;
  1009. typedef uint32_t u32;
  1010. typedef uint16_t u16;
  1011. typedef uint8_t u8;
  1012. typedef const uint64_t uc64;
  1013. typedef const uint32_t uc32;
  1014. typedef const uint16_t uc16;
  1015. typedef const uint8_t uc8;
  1016. typedef __IO uint64_t vu64;
  1017. typedef __IO uint32_t vu32;
  1018. typedef __IO uint16_t vu16;
  1019. typedef __IO uint8_t vu8;
  1020. typedef __I uint64_t vuc64;
  1021. typedef __I uint32_t vuc32;
  1022. typedef __I uint16_t vuc16;
  1023. typedef __I uint8_t vuc8;
  1024. #define HTK_NULL 0
  1025. #define HTK_UNUSED(X) (void)X /* To avoid gcc/g++ warnings */
  1026. typedef u8 HTK_BOOL;
  1027. #define HTK_TRUE 1
  1028. #define HTK_FALSE 0
  1029. #define HTK_ENABLE 1
  1030. #define HTK_DISABLE 0
  1031. #define BIT_FLAG_VAL(pos) (1U << (pos))
  1032. #define BIT_SET(x, pos) ((x) |= BIT_FLAG_VAL(pos))
  1033. #define BIT_CLEAR(x, pos) ((x) &= (~BIT_FLAG_VAL(pos)))
  1034. #define BIT_TOGGLE_(x, pos) ((x) ^= BIT_FLAG_VAL(pos)
  1035. #define BIT_CHECK(x, pos) ((x) & BIT_FLAG_VAL(pos))
  1036. #define BIT_GET(x, pos) (((x) & BIT_FLAG_VAL(pos)) >> (pos))
  1037. #define LOOP_SHIFT_U8(x, n) (((n) >= 0) ? (((x) << ( 8 - (n))) | ((x) >> (n))) : (((x) >> ( 8 - ((-1) * (n)))) | ((x) << ((-1) * (n)))))
  1038. #define LOOP_SHIFT_U16(x, n) (((n) >= 0) ? (((x) << ( 16 - (n))) | ((x) >> (n))) : (((x) >> ( 16 - ((-1) * (n)))) | ((x) << ((-1) * (n)))))
  1039. #define LOOP_SHIFT_U32(x, n) (((n) >= 0) ? (((x) << ( 32 - (n))) | ((x) >> (n))) : (((x) >> ( 32 - ((-1) * (n)))) | ((x) << ((-1) * (n)))))
  1040. u8 GetBit1Num(u32 x);
  1041. //Little-Endian
  1042. #define HTK_U16_BYTE0(vU16) (*(((u8*)&(vU16)) + 0))
  1043. #define HTK_U16_BYTE1(vU16) (*(((u8*)&(vU16)) + 1))
  1044. #define HTK_U16_BYTE(vU16, n) (*(((u8*)&(vU16)) + (n)))
  1045. #define HTK_U16(vU8) (*(((u16*)&(vU8)) + 0))
  1046. #define HTK_U32_BYTE0(vU32) (*(((u8*)&(vU32)) + 0))
  1047. #define HTK_U32_BYTE1(vU32) (*(((u8*)&(vU32)) + 1))
  1048. #define HTK_U32_BYTE2(vU32) (*(((u8*)&(vU32)) + 2))
  1049. #define HTK_U32_BYTE3(vU32) (*(((u8*)&(vU32)) + 3))
  1050. #define HTK_U32_BYTE(vU32, n) (*(((u8*)&(vU32)) + (n)))
  1051. #define HTK_U32(vU8) (*(((u32*)&(vU8)) + 0))
  1052. #define HTK_U32_WORD0(vU32) (*(((u16*)&(vU32)) + 0))
  1053. #define HTK_U32_WORD1(vU32) (*(((u16*)&(vU32)) + 1))
  1054. #define HTK_U32_WORD(vU32, n) (*(((u16*)&(vU32)) + (n)))
  1055. //#define HTK_U64_BYTE0(vU64) (*(((u8*)&(vU64)) + 0))
  1056. //#define HTK_U64_BYTE1(vU64) (*(((u8*)&(vU64)) + 1))
  1057. //#define HTK_U64_BYTE2(vU64) (*(((u8*)&(vU64)) + 2))
  1058. //#define HTK_U64_BYTE3(vU64) (*(((u8*)&(vU64)) + 3))
  1059. //#define HTK_U64_BYTE4(vU64) (*(((u8*)&(vU64)) + 4))
  1060. //#define HTK_U64_BYTE5(vU64) (*(((u8*)&(vU64)) + 5))
  1061. //#define HTK_U64_BYTE6(vU64) (*(((u8*)&(vU64)) + 6))
  1062. //#define HTK_U64_BYTE7(vU64) (*(((u8*)&(vU64)) + 7))
  1063. //#define HTK_U64_BYTEn(vU64, n) (*(((u8*)&(vU64)) + (n)))
  1064. //
  1065. //#define HTK_U64(vU8) (*(((u64*)&(vU8)) + 0))
  1066. //Big-Endian
  1067. #define HTK_U16_BE(vU8) ( \
  1068. (HTK_U16_BYTE0(vU8) << 8) | \
  1069. (HTK_U16_BYTE1(vU8) << 0) \
  1070. )
  1071. #define HTK_U32_BE(vU8) ( \
  1072. (HTK_U32_BYTE0(vU8) << 24) | \
  1073. (HTK_U32_BYTE1(vU8) << 16) | \
  1074. (HTK_U32_BYTE2(vU8) << 8) | \
  1075. (HTK_U32_BYTE3(vU8) << 0) \
  1076. )
  1077. #define HTK_GET_VAL_MAX(Val1, Val2) ((Val1) >= (Val2) ? (Val1) : (Val2))
  1078. #define HTK_GET_VAL_MIN(Val1, Val2) ((Val1) <= (Val2) ? (Val1) : (Val2))
  1079. #define HTK_GET_VAL(Bool, Val1, Val2) ((Bool) ? (Val1) : (Val2))
  1080. #define HTK_IS_BETWEEN_MINMAX(v, MinVal, MaxVal) ((v) >= (MinVal) && (v) <= (MaxVal))
  1081. #define HTK_IS_BETWEEN_MIDDIFF(v, MidVal, DiffVal) (HTK_IS_BETWEEN_MINMAX((v), ((MidVal) - (DiffVal)), ((MidVal) + (DiffVal))))
  1082. #define HTK_ROUND_U16(x) (((u16)(x) + 0.5) > (x) ? ((u16)(x)) : ((u16)(x) + 1))
  1083. #define HTK_ROUND_U32(x) (((u32)(x) + 0.5) > (x) ? ((u32)(x)) : ((u32)(x) + 1))
  1084. #define HTK_ROUND_U64(x) (((u64)(x) + 0.5) > (x) ? ((u64)(x)) : ((u64)(x) + 1))
  1085. #define HTK_ROUND_U32_3D(x) (HTK_ROUND_U32((x) * 1000))
  1086. #define HTK_ROUND_U32_3D_TO_FLOAT(x) (((float)HTK_ROUND_U32_3D(x)) / 1000)
  1087. #define GET_BOX_NUM(ItemNum, ItemNumInOneBox) ((ItemNum) % (ItemNumInOneBox) == 0 ? ((ItemNum) / (ItemNumInOneBox)) : ((ItemNum) / (ItemNumInOneBox)) + 1)
  1088. #define MULTI_3D(x)
  1089. #define FLOOR_3D(x) ((float)(((uint32_t)((x) * 1000)) / 1000))
  1090. //#define HTK_ABS(x) (((x) > 0) ? (x) : ((-1) * (x)))
  1091. #define HTK_ABS(x) (((x) >= 0) ? (x) : ((-1) * (x)))
  1092. #define HTK_GetPosFromZero(x) (((x) >= 0) ? (x) : 0)
  1093. #define HTK_GetNegFromZero(x) (((x) <= 0) ? (x) * (-1) : 0)
  1094. #define HTK_U8_MAX (0xFF)
  1095. #define HTK_U16_MAX (0xFFFF)
  1096. #define HTK_U32_MAX (0xFFFFFFFF)
  1097. #define HTK_U64_MAX (0xFFFFFFFFFFFFFFFF)
  1098. #define BYTE_TO_BINARY_PATTERN "%c%c%c%c %c%c%c%c"
  1099. #define BYTE_TO_BINARY(byte) \
  1100. ((byte) & 0x80 ? '1' : '0'), \
  1101. ((byte) & 0x40 ? '1' : '0'), \
  1102. ((byte) & 0x20 ? '1' : '0'), \
  1103. ((byte) & 0x10 ? '1' : '0'), \
  1104. ((byte) & 0x08 ? '1' : '0'), \
  1105. ((byte) & 0x04 ? '1' : '0'), \
  1106. ((byte) & 0x02 ? '1' : '0'), \
  1107. ((byte) & 0x01 ? '1' : '0')
  1108. //Codes 0 through 31 and 127 (decimal) are unprintable control characters.
  1109. //Code 32 (decimal) is a nonprinting spacing character. Codes 33 through 126 (decimal) are printable graphic characters.
  1110. #define HTK_IS_DISP_CHAR(c) ((c) >= 32 && (c) <= 126 ? HTK_TRUE : HTK_FALSE)
  1111. #define HTK_IS_CTRL_CHAR(c) (!HTK_IS_DISP_CHAR(c))
  1112. //#define HTK_ELAPSEDTICKS_U32(BegTick, EndTick) ((EndTick) >= (BegTick) ? ((EndTick) - (BegTick)) : ((HTK_U32_MAX) - (BegTick) + (EndTick)))
  1113. //#define HTK_IS_TIMEOUT_U32(BegTick, EndTick, MaxTick) (HTK_ELAPSEDTICKS_U32((BegTick), (EndTick)) > (MaxTick) ? HTK_TRUE : HTK_FALSE)
  1114. HTK_BOOL HTK_IsInTime(u32 BegTick, u32 MaxTick);
  1115. HTK_BOOL HTK_IsTimeout(u32 BegTick, u32 MaxTick);
  1116. typedef struct _HTK_Timer
  1117. {
  1118. HTK_BOOL m_bStart: 1;
  1119. HTK_BOOL m_bTimeout: 1;
  1120. u32 m_BegTick;
  1121. u32 m_MaxTick;
  1122. }
  1123. HTK_Timer, *PHTK_Timer;
  1124. void HTK_Timer_Reset(PHTK_Timer p);
  1125. void HTK_Timer_Start(PHTK_Timer p, u32 MaxTick);
  1126. HTK_BOOL HTK_Timer_CheckTimeout(PHTK_Timer p);
  1127. uint8_t HTK_CheckSum_Calulate(uint8_t* pBeg, uint32_t len);
  1128. HTK_BOOL HTK_CheckSum_Update(uint8_t* pBeg, uint32_t len, uint8_t* pCheckSum);
  1129. HTK_BOOL HTK_CheckSum_IsOK(uint8_t* pBeg, uint32_t len, uint8_t* pCheckSum);
  1130. void HTK_ByteArray2HexStr(const u8* buf, const u16 BegIdx, const u16 len, char* OutStr, u16 nMaxBytesPerLine, HTK_BOOL bSpace);
  1131. void HTK_ByteArray2HexStr_XP(const char* Title, const u8* buf, const u16 BegIdx, const u16 len);
  1132. void HTK_ByteArray2HexStr_XT(const char* Title, const u8* buf, const u16 BegIdx, const u16 len);
  1133. HTK_BOOL HTK_HexStrToByteArray(byte* Dst, int DstLen, const char* Src, int SrcLen);
  1134. void HTK_FillChar(char* buf, char c, int count);
  1135. void HTK_PrintRow(char c, int count);
  1136. typedef struct _HTK_MallocHandle
  1137. {
  1138. s32 m_Total;
  1139. s32 m_Allocated;
  1140. s32 m_Reserved;
  1141. }
  1142. HTK_MallocHandle, PHTK_MallocHandle;
  1143. void HTK_Malloc_Init(void);
  1144. void* HTK_Malloc(s32 size);
  1145. void HTK_Free(void* p);
  1146. s32 HTK_Malloc_BlockTest(s32 BlockSize);
  1147. #ifdef FUNC_SALT_AND_BLEND
  1148. int Salt(u8* Mixture, int MixtureLen, u8* SaltMap, int SaltMapLen, u8* Data, int DataLen, u8 bRestore);
  1149. int Blend(u8* Dst, u8* Src, int Len, u8 ShiftType, u8 bRestore);
  1150. int DataEncryption(u8* Data, int DataLen, u8* EncryptedData, int EncryptedDataLen, u8 bDecryption);
  1151. #endif
  1152. #endif //HTK
  1153. //******************************************************************
  1154. #ifdef MODIFY_IMCP
  1155. #define IMCP_FM_FRAMEID_IDX (0)
  1156. #define IMCP_FM_SRCADDR_IDX (1)
  1157. #define IMCP_FM_DSTADDR_IDX (2)
  1158. #define IMCP_FM_MSGID_IDX (3)
  1159. #define IMCP_FM_DATALEN_LSB_IDX (4) //4: LSB (DATALEN Value: N)
  1160. #define IMCP_FM_DATALEN_MSB_IDX (5) //5: MSB
  1161. #define IMCP_FM_DATA_BEG_IDX (6) //6~(6+N) = DATA(1)~DATA(N)
  1162. //#define IMCP_FM_DATA_CHECKSUM_IDX (6 + N + 1) //Variable
  1163. #define IMCP_FM_HEAD_LEN (IMCP_FM_DATALEN_MSB_IDX - IMCP_FM_FRAMEID_IDX + 1)
  1164. #define IMCP_FM_TAIL_LEN (1) //CheckSum
  1165. #define IMCP_TX_LEN(DataLen) (IMCP_FM_HEAD_LEN + (DataLen) + IMCP_FM_TAIL_LEN)
  1166. #endif //MODIFY_IMCP
  1167. //******************************************************************
  1168. #ifdef DISABLE_PRINT_DEBUG_MSG
  1169. #define DEBUG_INFO(format, args...)
  1170. #define DEBUG_WARN(format, args...)
  1171. #define DEBUG_ERROR(format, args...)
  1172. #else
  1173. #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(""))
  1174. #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(""))
  1175. #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(""))
  1176. #endif //DISABLE_PRINT_DEBUG_MSG
  1177. //******************************************************************
  1178. #define ARRAY_SIZE(A) (sizeof(A) / sizeof(A[0]))
  1179. /* USER CODE END ET */
  1180. /* Exported constants --------------------------------------------------------*/
  1181. /* USER CODE BEGIN EC */
  1182. #define OFF 0
  1183. #define ON 1
  1184. #define FAIL 0
  1185. #define PASS 1
  1186. #define NO 0
  1187. #define YES 1
  1188. #define true 1
  1189. #define false 0
  1190. #define DEBUG
  1191. #define RTOS_STAT
  1192. #define BYPASS
  1193. #define W25Q16FV_BLOCK_SIZE 0x1000
  1194. #define EVSE_CONNECTOR_TYPE "GBT_MODE3"
  1195. ////#define EVSE_MODEL_CURRENT_RATING 48 //AX48
  1196. #define MCU_CONTROL_MODE_NO_CSU 0
  1197. #define MCU_CONTROL_MODE_CSU 1
  1198. //#define MCU_PASS_MODE 2 //Not used
  1199. #define RFID_SN_TYPE_4BYTE 0
  1200. #define RFID_SN_TYPE_7BYTE 1
  1201. #define RFID_SN_TYPE_10BYTE 2
  1202. #define RFID_SN_TYPE_14443B 3
  1203. #define RFID_SN_TYPE_FELICA 4
  1204. #define RFID_ENDIAN_LITTLE 0
  1205. #define RFID_ENDIAN_BIG 1
  1206. //AuthorisationMode
  1207. #define AUTH_MODE_OCPP 0x00
  1208. #define AUTH_MODE_FREE 0x01
  1209. //OfflinePolicy
  1210. #define RFID_USER_AUTH_LOCAL_LIST 0x00
  1211. #define RFID_USER_AUTH_PH 0x01
  1212. #define RFID_USER_AUTH_FREE 0x02
  1213. #define RFID_USER_AUTH_NO_CHARGING 0x03
  1214. #define MEM_ADDR_EVSE_CONFIG 0*W25Q16FV_BLOCK_SIZE
  1215. #define MEM_ADDR_COLD_LOAD_PICKUP 1*W25Q16FV_BLOCK_SIZE
  1216. #define MEM_ADDR_WHITE_LIST 2*W25Q16FV_BLOCK_SIZE
  1217. #define MEM_ADDR_HIS_ALARM 3*W25Q16FV_BLOCK_SIZE
  1218. #ifdef FUNC_METER_IC_HISTORY
  1219. #define MEM_ADDR_HIS_METERIC 4*W25Q16FV_BLOCK_SIZE
  1220. #else
  1221. #define MEM_ADDR_HIS_CHARGING 4*W25Q16FV_BLOCK_SIZE
  1222. #endif
  1223. #define MEM_ADDR_BACKUP_EVSE_CONFIG 20*W25Q16FV_BLOCK_SIZE
  1224. #define MEM_ADDR_BACKUP_COLD_LOAD_PICKUP 21*W25Q16FV_BLOCK_SIZE
  1225. #define MEM_ADDR_BACKUP_WHITE_LIST 22*W25Q16FV_BLOCK_SIZE
  1226. #define MEM_ADDR_BACKUP_HIS_ALARM 23*W25Q16FV_BLOCK_SIZE
  1227. #ifdef FUNC_METER_IC_HISTORY
  1228. #define MEM_ADDR_BACKUP_HIS_METERIC 24*W25Q16FV_BLOCK_SIZE
  1229. #else
  1230. #define MEM_ADDR_BACKUP_HIS_CHARGING 24*W25Q16FV_BLOCK_SIZE
  1231. #endif
  1232. #define MODE_INITIAL 0
  1233. #define MODE_IDLE 1
  1234. #define MODE_HANDSHAKE 2
  1235. #define MODE_CHARGING 3
  1236. #define MODE_STOP 4
  1237. #define MODE_ALARM 5
  1238. #define MODE_MAINTAIN 6
  1239. #define MODE_DEBUG 99
  1240. #define LED_MOTION_OFF 0
  1241. #define LED_MOTION_ON 1
  1242. #define LED_MOTION_BLINK 2
  1243. #define LED_MOTION_BREATHE 3
  1244. #define LED_ACTION_INIT 0
  1245. #define LED_ACTION_IDLE 1
  1246. #define LED_ACTION_AUTHED 2
  1247. #define LED_ACTION_CONNECTED 3
  1248. #define LED_ACTION_CHARGING 4
  1249. #define LED_ACTION_STOP 5
  1250. #define LED_ACTION_ALARM 6
  1251. #define LED_ACTION_MAINTAIN 7
  1252. #define LED_ACTION_RFID_PASS 8
  1253. #define LED_ACTION_RFID_FAIL 9
  1254. #define LED_ACTION_BLE_CONNECT 10
  1255. #define LED_ACTION_BLE_DISABLE 11
  1256. #define LED_ACTION_DEBUG 12
  1257. #define LED_ACTION_ALL_OFF 13
  1258. #define LED_RELAY_ON 14
  1259. #define LED_RELAY_OFF 15
  1260. #define LED_ACTION_HANDSHAKE_FAIL 16
  1261. #define LED_ACTION_INTERNET_DISCONNECT 17
  1262. #define LED_ACTION_RESTORE_SETTING 18
  1263. #ifdef MODIFY_LED_STATUS_202108
  1264. #define LED_ACTION_IDLE_BACKEND_CONNECTED 19
  1265. #define LED_ACTION_IDLE_BACKEND_CONNECTED_SLEEP 20
  1266. #define LED_ACTION_IDLE_BACKEND_DISCONNECTED 21
  1267. #define LED_ACTION_IDLE_BACKEND_DISCONNECTED_SLEEP 22
  1268. #define LED_ACTION_RESERVATION_MODE 23
  1269. #endif //MODIFY_LED_STATUS_202108
  1270. #ifdef FUNC_CUSTOMIZED_LED_MODE_FROM_CSU
  1271. #define LED_ACTION_CUSTOMIZED_MODE 0xA0
  1272. typedef enum _LED_USER_MODE
  1273. {
  1274. LED_USER_MODE_SOLID = 0xF1,
  1275. LED_USER_MODE_BLINK = 0xF2,
  1276. LED_USER_MODE_BREATH = 0xF3,
  1277. }
  1278. LED_USER_MODE;
  1279. typedef struct _LED_UserCfg
  1280. {
  1281. u8 m_Mode; //LED_USER_MODE
  1282. u8 m_AutoRepeat;
  1283. u8 m_Brightness; //0 ~ 100 (%)
  1284. //RGB from 0 ~ 1000
  1285. u16 m_R;
  1286. u16 m_G;
  1287. u16 m_B;
  1288. union
  1289. {
  1290. struct
  1291. {
  1292. u16 m_On_ms;
  1293. u16 m_Off_ms;
  1294. u16 m_Rest_ms;
  1295. u16 m_Count;
  1296. }
  1297. Blink;
  1298. struct
  1299. {
  1300. u16 m_Up_ms;
  1301. u16 m_Down_ms;
  1302. u16 m_R3;
  1303. u16 m_R4;
  1304. }
  1305. Breath;
  1306. };
  1307. }
  1308. LED_UserCfg, *PLED_UserCfg;
  1309. #endif //FUNC_CUSTOMIZED_LED_MODE_FROM_CSU
  1310. #define LED_RFID_TIME 3000
  1311. #define SPEAKER_NONE 0
  1312. #define SPEAKER_LONG 1
  1313. #define SPEAKER_SHORT 2
  1314. #define SPEAKER_BLINK 3
  1315. #define SPEAK_RESET_RFID_TIME LED_RFID_TIME-1000
  1316. #ifdef FUNC_AW48_NET_LED
  1317. #define NET_LED_ACTION_LTE_CONNECTING 1
  1318. #define NET_LED_ACTION_LTE_CONNECTED 2
  1319. #define NET_LED_ACTION_WIFI_CONNECTING 3
  1320. #define NET_LED_ACTION_WIFT_CONNECTED 4
  1321. #define NET_LED_ACTION_ETHERNET_CONNECTING 5
  1322. #define NET_LED_ACTION_ETHERNET_CONNECTED 6
  1323. #define NET_LED_ACTION_ALL_CONNECTING 7
  1324. #define NET_LED_ACTION_OFF 8
  1325. //(HIDE for NET_LED_ACTION_ALL_CONNECTING) --------
  1326. #define NET_LED_ACTION_LTE_CONNECTING_H 9
  1327. #define NET_LED_ACTION_WIFI_CONNECTING_H 10
  1328. #define NET_LED_ACTION_ETHERNET_CONNECTING_H 11
  1329. //-------------------------------------------------
  1330. #define NET_LED_ACTION_MIN NET_LED_ACTION_LTE_CONNECTING
  1331. #define NET_LED_ACTION_MAX NET_LED_ACTION_OFF
  1332. #endif //FUNC_AW48_NET_LED
  1333. #define ALARM_L1_OVER_VOLTAGE 0x00000001
  1334. #define ALARM_L1_UNDER_VOLTAGE 0x00000002
  1335. #define ALARM_L1_OVER_CURRENT 0x00000004
  1336. #define ALARM_OVER_TEMPERATURE 0x00000008
  1337. #define ALARM_GROUND_FAIL 0x00000010
  1338. #define ALARM_CP_ERROR 0x00000020
  1339. #define ALARM_CURRENT_LEAK_AC 0x00000040
  1340. #define ALARM_CURRENT_LEAK_DC 0x00000080
  1341. #define ALARM_MCU_TESTFAIL 0x00000100
  1342. #define ALARM_HANDSHAKE_TIMEOUT 0x00000200
  1343. #define ALARM_EMERGENCY_STOP 0x00000400
  1344. #define ALARM_RELAY_STATUS 0x00000800
  1345. #define ALARM_LEAK_MODULE_FAIL 0x00001000
  1346. #define ALARM_SHUTTER_FAULT 0x00002000
  1347. #define ALARM_LOCKER_FAULT 0x00004000
  1348. #define ALARM_POWER_DROP 0x00008000
  1349. #define ALARM_L1_CIRCUIT_SHORT 0x00010000
  1350. #define ALARM_ROTATORY_SWITCH_FAULT 0x00020000
  1351. #define ALARM_RELAY_DRIVE_FUALT 0x00040000
  1352. #define ALARM_BLE_MODULE_BROKEN 0x00080000
  1353. #define ALARM_L2_OVER_VOLTAGE 0x00100000
  1354. #define ALARM_L3_OVER_VOLTAGE 0x00200000
  1355. #define ALARM_L2_UNDER_VOLTAGE 0x00400000
  1356. #define ALARM_L3_UNDER_VOLTAGE 0x00800000
  1357. #define ALARM_L2_OVER_CURRENT 0x01000000
  1358. #define ALARM_L3_OVER_CURRENT 0x02000000
  1359. #define ALARM_L2_CIRCUIT_SHORT 0x04000000
  1360. #define ALARM_L3_CIRCUIT_SHORT 0x08000000
  1361. #define ALARM_METER_TIMEOUT 0x10000000
  1362. #ifdef FUNC_METER_IC_COMM_ALARM
  1363. #define ALARM_METER_IC_TIMEOUT 0x20000000
  1364. #endif
  1365. #ifdef FUNC_ALARM_CP_NEG_ERROR
  1366. #define ALARM_CP_NEG_ERROR 0x40000000
  1367. #endif
  1368. #ifdef FUNC_AX80_ADD_TILT_SENSOR
  1369. #define ALARM_TILT_SENSOR 0x80000000
  1370. #endif
  1371. #ifdef FUNC_WARNING_CODE
  1372. #define WARN_OMNIMETER_COMM_TIMEOUT BIT_FLAG_VAL(0)
  1373. #define WARN_RESERVED_01 BIT_FLAG_VAL(1)
  1374. #define WARN_RESERVED_02 BIT_FLAG_VAL(2)
  1375. #define WARN_RESERVED_03 BIT_FLAG_VAL(3)
  1376. #define WARN_RESERVED_04 BIT_FLAG_VAL(4)
  1377. #define WARN_RESERVED_05 BIT_FLAG_VAL(5)
  1378. #define WARN_RESERVED_06 BIT_FLAG_VAL(6)
  1379. #define WARN_RESERVED_07 BIT_FLAG_VAL(7)
  1380. #define WARN_RESERVED_08 BIT_FLAG_VAL(8)
  1381. #define WARN_RESERVED_09 BIT_FLAG_VAL(9)
  1382. #define WARN_RESERVED_10 BIT_FLAG_VAL(10)
  1383. #define WARN_RESERVED_11 BIT_FLAG_VAL(11)
  1384. #define WARN_RESERVED_12 BIT_FLAG_VAL(12)
  1385. #define WARN_RESERVED_13 BIT_FLAG_VAL(13)
  1386. #define WARN_RESERVED_14 BIT_FLAG_VAL(14)
  1387. #define WARN_RESERVED_15 BIT_FLAG_VAL(15)
  1388. #define WARN_RESERVED_16 BIT_FLAG_VAL(16)
  1389. #define WARN_RESERVED_17 BIT_FLAG_VAL(17)
  1390. #define WARN_RESERVED_18 BIT_FLAG_VAL(18)
  1391. #define WARN_RESERVED_19 BIT_FLAG_VAL(19)
  1392. #define WARN_RESERVED_20 BIT_FLAG_VAL(20)
  1393. #define WARN_RESERVED_21 BIT_FLAG_VAL(21)
  1394. #define WARN_RESERVED_22 BIT_FLAG_VAL(22)
  1395. #define WARN_RESERVED_23 BIT_FLAG_VAL(23)
  1396. #define WARN_RESERVED_24 BIT_FLAG_VAL(24)
  1397. #define WARN_RESERVED_25 BIT_FLAG_VAL(25)
  1398. #define WARN_RESERVED_26 BIT_FLAG_VAL(26)
  1399. #define WARN_RESERVED_27 BIT_FLAG_VAL(27)
  1400. #define WARN_RESERVED_28 BIT_FLAG_VAL(28)
  1401. #define WARN_RESERVED_29 BIT_FLAG_VAL(29)
  1402. #define WARN_RESERVED_30 BIT_FLAG_VAL(30)
  1403. #define WARN_RESERVED_31 BIT_FLAG_VAL(31)
  1404. #endif //FUNC_WARNING_CODE
  1405. #define END_STATUS_CODE_NORMAL 0x013600
  1406. #define END_STATUS_CODE_TIMEUP 0x013601
  1407. #define END_STATUS_CODE_DROP 0x012212
  1408. #ifdef MODIFY_CP_TASK_CTRL_CP_PWM
  1409. uint16_t GetCpPwmDuty(uint16_t Curr);
  1410. #else
  1411. #define PWM_DUTY_651(AMP) (uint16_t)((AMP/0.6)*10) // 6<=currewnt<=51 PWM duty resolution in 0.1
  1412. #endif
  1413. #define START_METHOD_NONE 0
  1414. #define START_METHOD_CP 1
  1415. #define START_METHOD_RFID 2
  1416. #define START_METHOD_BLE 3
  1417. #ifdef FUNC_OUTP_TYPE_E
  1418. #define START_METHOD_TYPEE 4
  1419. #endif
  1420. #define RESERVATION_DISABLE 0
  1421. #define RESERVATION_ONCE 1
  1422. #define RESERVATION_ALWAYS 2
  1423. #define ALARM_SPEC_POWER_DROP 7200 // unit 0.01V >> 240V * 30%
  1424. #ifdef TEST_ACXXX_FAKEDATA
  1425. #ifdef TEST_AC110_FAKEDATA
  1426. #define ALARM_SPEC_OV 14000 // unit 0.01V
  1427. #define ALARM_SPEC_UV 8000 // unit 0.01V
  1428. #endif
  1429. #ifdef TEST_AC220_FAKEDATA
  1430. #define ALARM_SPEC_OV 27500 // unit 0.01V
  1431. #define ALARM_SPEC_UV 16000 // unit 0.01V
  1432. #endif
  1433. #else //TEST_ACXXX_FAKEDATA
  1434. #define ALARM_SPEC_OV 27500 // unit 0.01V
  1435. #define ALARM_SPEC_UV 16000//16000 // unit 0.01V
  1436. #endif //TEST_ACXXX_FAKEDATA
  1437. #define ALARM_SPEC_OUV_HYSTERESIS 1000 // unit 0.01V
  1438. #ifdef MODIFY_OTP_SPEC
  1439. //AX48
  1440. #define ALARM_SPEC_OT_G1_1_AX48 75 // unit C
  1441. #define ALARM_SPEC_OT_G1_2_AX48 85 // unit C
  1442. #define ALARM_SPEC_OT_G1_HYSTERESIS_AX48 20 // unit C Recover 55 = (75-20)
  1443. //AX32
  1444. #define ALARM_SPEC_OT_G1_1_AX32 75 // unit C
  1445. #define ALARM_SPEC_OT_G1_2_AX32 85 // unit C
  1446. #define ALARM_SPEC_OT_G1_HYSTERESIS_AX32 20 // unit C Recover 55 = (75-20)
  1447. #ifdef FUNC_AT32
  1448. //AT32
  1449. #define ALARM_SPEC_OT_G1_1_AT32 75 // unit C
  1450. #define ALARM_SPEC_OT_G1_2_AT32 85 // unit C
  1451. #define ALARM_SPEC_OT_G1_HYSTERESIS_AT32 20 // unit C Recover 55 = (75-20)
  1452. #endif
  1453. #ifdef FUNC_AX80_ADD_4_TEMP_SENEOR
  1454. //AX80
  1455. #define ALARM_SPEC_OT_G1_1_AX80 75 // unit C
  1456. #define ALARM_SPEC_OT_G1_2_AX80 85 // unit C
  1457. #define ALARM_SPEC_OT_G1_HYSTERESIS_AX80 20 // unit C Recover 55 = (75-20)
  1458. #define ALARM_SPEC_OT_G2_1_AX80 110 // unit C
  1459. #define ALARM_SPEC_OT_G2_2_AX80 120 // unit C
  1460. #define ALARM_SPEC_OT_G2_HYSTERESIS_AX80 20 // unit C Recover 90 = (110-20)
  1461. #endif //FUNC_AX80_ADD_4_TEMP_SENEOR
  1462. #ifdef FUNC_AW48_ADD_6_TEMP_SENEOR
  1463. //AW48
  1464. #ifdef MODIFY_AW48_OTP_SPEC_20231006_KENNY
  1465. #ifdef MODIFY_AW48_OTP_SPEC_20240729_JACK
  1466. #ifdef MODIFY_AW48_OTP_SPEC_20240802_STEVEN
  1467. #ifdef MODIFY_AW48_OTP_SPEC_20240814_KENNY
  1468. #ifdef MODIFY_AW48_OTP_SPEC_20240819_JACK
  1469. #ifdef MODIFY_AW48_OTP_SPEC_20241016_JACK
  1470. #define ALARM_SPEC_OT_G1_1_AW48 (78) // unit C
  1471. #define ALARM_SPEC_OT_G1_2_AW48 (83) // unit C
  1472. #define ALARM_SPEC_OT_G1_HYSTERESIS_AW48 (20) // unit C Recover 59 = (79-20)
  1473. #else //MODIFY_AW48_OTP_SPEC_20241016_JACK
  1474. #define ALARM_SPEC_OT_G1_1_AW48 (76) // unit C
  1475. #define ALARM_SPEC_OT_G1_2_AW48 (86) // unit C
  1476. #define ALARM_SPEC_OT_G1_HYSTERESIS_AW48 (20) // unit C Recover 59 = (79-20)
  1477. #endif //MODIFY_AW48_OTP_SPEC_20241016_JACK
  1478. #else //MODIFY_AW48_OTP_SPEC_20240819_JACK
  1479. #define ALARM_SPEC_OT_G1_1_AW48 (80) // unit C
  1480. #define ALARM_SPEC_OT_G1_2_AW48 (90) // unit C
  1481. #define ALARM_SPEC_OT_G1_HYSTERESIS_AW48 (30) // unit C Recover 59 = (79-20)
  1482. #endif //MODIFY_AW48_OTP_SPEC_20240819_JACK
  1483. #else //MODIFY_AW48_OTP_SPEC_20240814_KENNY
  1484. #define ALARM_SPEC_OT_G1_1_AW48 (79) // unit C
  1485. #define ALARM_SPEC_OT_G1_2_AW48 (89) // unit C
  1486. #define ALARM_SPEC_OT_G1_HYSTERESIS_AW48 (20) // unit C Recover 59 = (79-20)
  1487. #endif //MODIFY_AW48_OTP_SPEC_20240814_KENNY
  1488. #else //MODIFY_AW48_OTP_SPEC_20240802_STEVEN
  1489. #define ALARM_SPEC_OT_G1_1_AW48 (80) // unit C
  1490. #define ALARM_SPEC_OT_G1_2_AW48 (90) // unit C
  1491. #define ALARM_SPEC_OT_G1_HYSTERESIS_AW48 (20) // unit C Recover 70 = (90-20)
  1492. #endif //MODIFY_AW48_OTP_SPEC_20240802_STEVEN
  1493. #else //MODIFY_AW48_OTP_SPEC_20240729_JACK
  1494. #define ALARM_SPEC_OT_G1_1_AW48 (75 + 15) // unit C
  1495. #define ALARM_SPEC_OT_G1_2_AW48 (85 + 15) // unit C
  1496. #define ALARM_SPEC_OT_G1_HYSTERESIS_AW48 (20) // unit C Recover 70 = (90-20)
  1497. #endif //MODIFY_AW48_OTP_SPEC_20240729_JACK
  1498. #else //MODIFY_AW48_OTP_SPEC_20231006_KENNY
  1499. #define ALARM_SPEC_OT_G1_1_AW48 75 // unit C
  1500. #define ALARM_SPEC_OT_G1_2_AW48 85 // unit C
  1501. #define ALARM_SPEC_OT_G1_HYSTERESIS_AW48 20 // unit C Recover 55 = (75-20)
  1502. #endif //MODIFY_AW48_OTP_SPEC_20231006_KENNY
  1503. #ifdef MODIFY_AW48_OTP_SPEC_20240522_STEVEN
  1504. #ifdef MODIFY_AW48_OTP_SPEC_20240729_JACK
  1505. #ifdef MODIFY_AW48_OTP_SPEC_20240802_STEVEN
  1506. #ifdef MODIFY_AW48_OTP_SPEC_20240809_JACK
  1507. #ifdef MODIFY_AW48_OTP_SPEC_20240814_KENNY
  1508. #ifdef MODIFY_AW48_OTP_SPEC_20240819_JACK
  1509. #ifdef MODIFY_AW48_OTP_SPEC_20241016_JACK
  1510. #define ALARM_SPEC_OT_G2_1_AW48 83 // unit C
  1511. #define ALARM_SPEC_OT_G2_2_AW48 88 // unit C
  1512. #define ALARM_SPEC_OT_G2_HYSTERESIS_AW48 20 // unit C Recover 70 = (90-20)
  1513. #define ALARM_SPEC_OT_G3_1_AW48 90 // unit C
  1514. #define ALARM_SPEC_OT_G3_2_AW48 95 // unit C
  1515. #define ALARM_SPEC_OT_G3_HYSTERESIS_AW48 25 // unit C Recover 75 = (95-20)
  1516. #define ALARM_SPEC_OT_G4_1_AW48 70 // unit C
  1517. #define ALARM_SPEC_OT_G4_2_AW48 80 // unit C
  1518. #define ALARM_SPEC_OT_G4_HYSTERESIS_AW48 20 // unit C Recover 50 = (70-20)
  1519. #else //MODIFY_AW48_OTP_SPEC_20241016_JACK
  1520. #define ALARM_SPEC_OT_G2_1_AW48 87 // unit C
  1521. #define ALARM_SPEC_OT_G2_2_AW48 97 // unit C
  1522. #define ALARM_SPEC_OT_G2_HYSTERESIS_AW48 30 // unit C Recover 70 = (90-20)
  1523. #define ALARM_SPEC_OT_G3_1_AW48 92 // unit C
  1524. #define ALARM_SPEC_OT_G3_2_AW48 102 // unit C
  1525. #define ALARM_SPEC_OT_G3_HYSTERESIS_AW48 30 // unit C Recover 75 = (95-20)
  1526. #define ALARM_SPEC_OT_G4_1_AW48 80 // unit C
  1527. #define ALARM_SPEC_OT_G4_2_AW48 90 // unit C
  1528. #define ALARM_SPEC_OT_G4_HYSTERESIS_AW48 20 // unit C Recover 50 = (70-20)
  1529. #endif //MODIFY_AW48_OTP_SPEC_20241016_JACK
  1530. #else //MODIFY_AW48_OTP_SPEC_20240819_JACK
  1531. #define ALARM_SPEC_OT_G2_1_AW48 90 // unit C
  1532. #define ALARM_SPEC_OT_G2_2_AW48 100 // unit C
  1533. #define ALARM_SPEC_OT_G2_HYSTERESIS_AW48 30 // unit C Recover 70 = (90-20)
  1534. #define ALARM_SPEC_OT_G3_1_AW48 100 // unit C
  1535. #define ALARM_SPEC_OT_G3_2_AW48 110 // unit C
  1536. #define ALARM_SPEC_OT_G3_HYSTERESIS_AW48 30 // unit C Recover 75 = (95-20)
  1537. #define ALARM_SPEC_OT_G4_1_AW48 70 // unit C
  1538. #define ALARM_SPEC_OT_G4_2_AW48 80 // unit C
  1539. #define ALARM_SPEC_OT_G4_HYSTERESIS_AW48 20 // unit C Recover 50 = (70-20)
  1540. #endif //MODIFY_AW48_OTP_SPEC_20240819_JACK
  1541. #else //MODIFY_AW48_OTP_SPEC_20240814_KENNY
  1542. #define ALARM_SPEC_OT_G2_1_AW48 90 // unit C
  1543. #define ALARM_SPEC_OT_G2_2_AW48 100 // unit C
  1544. #define ALARM_SPEC_OT_G2_HYSTERESIS_AW48 20 // unit C Recover 70 = (90-20)
  1545. #define ALARM_SPEC_OT_G3_1_AW48 100 // unit C
  1546. #define ALARM_SPEC_OT_G3_2_AW48 110 // unit C
  1547. #define ALARM_SPEC_OT_G3_HYSTERESIS_AW48 30 // unit C Recover 75 = (95-20)
  1548. #define ALARM_SPEC_OT_G4_1_AW48 70 // unit C
  1549. #define ALARM_SPEC_OT_G4_2_AW48 80 // unit C
  1550. #define ALARM_SPEC_OT_G4_HYSTERESIS_AW48 20 // unit C Recover 50 = (70-20)
  1551. #endif //MODIFY_AW48_OTP_SPEC_20240814_KENNY
  1552. #else //MODIFY_AW48_OTP_SPEC_20240809_JACK
  1553. #define ALARM_SPEC_OT_G2_1_AW48 90 // unit C
  1554. #define ALARM_SPEC_OT_G2_2_AW48 100 // unit C
  1555. #define ALARM_SPEC_OT_G2_HYSTERESIS_AW48 20 // unit C Recover 70 = (90-20)
  1556. #define ALARM_SPEC_OT_G3_1_AW48 95 // unit C
  1557. #define ALARM_SPEC_OT_G3_2_AW48 105 // unit C
  1558. #define ALARM_SPEC_OT_G3_HYSTERESIS_AW48 20 // unit C Recover 75 = (95-20)
  1559. #define ALARM_SPEC_OT_G4_1_AW48 70 // unit C
  1560. #define ALARM_SPEC_OT_G4_2_AW48 80 // unit C
  1561. #define ALARM_SPEC_OT_G4_HYSTERESIS_AW48 20 // unit C Recover 50 = (70-20)
  1562. #endif //MODIFY_AW48_OTP_SPEC_20240809_JACK
  1563. #else //MODIFY_AW48_OTP_SPEC_20240802_STEVEN
  1564. #define ALARM_SPEC_OT_G2_1_AW48 115 // unit C
  1565. #define ALARM_SPEC_OT_G2_2_AW48 125 // unit C
  1566. #define ALARM_SPEC_OT_G2_HYSTERESIS_AW48 20 // unit C Recover 50 = (70-20)
  1567. #define ALARM_SPEC_OT_G3_1_AW48 115 // unit C
  1568. #define ALARM_SPEC_OT_G3_2_AW48 125 // unit C
  1569. #define ALARM_SPEC_OT_G3_HYSTERESIS_AW48 20 // unit C Recover 75 = (95-20)
  1570. #endif //MODIFY_AW48_OTP_SPEC_20240802_STEVEN
  1571. #else //MODIFY_AW48_OTP_SPEC_20240729_JACK
  1572. #define ALARM_SPEC_OT_G2_1_AW48 70 // unit C
  1573. #define ALARM_SPEC_OT_G2_2_AW48 80 // unit C
  1574. #define ALARM_SPEC_OT_G2_HYSTERESIS_AW48 20 // unit C Recover 50 = (70-20)
  1575. #define ALARM_SPEC_OT_G3_1_AW48 95 // unit C
  1576. #define ALARM_SPEC_OT_G3_2_AW48 105 // unit C
  1577. #define ALARM_SPEC_OT_G3_HYSTERESIS_AW48 20 // unit C Recover 75 = (95-20)
  1578. #endif //MODIFY_AW48_OTP_SPEC_20240729_JACK
  1579. #else //MODIFY_AW48_OTP_SPEC_20240522_STEVEN
  1580. #define ALARM_SPEC_OT_G2_1_AW48 (100 + 15) // unit C
  1581. #define ALARM_SPEC_OT_G2_2_AW48 (110 + 15) // unit C
  1582. #define ALARM_SPEC_OT_G2_HYSTERESIS_AW48 20 // unit C Recover 90 = (110-20)
  1583. #endif //MODIFY_AW48_OTP_SPEC_20240522_STEVEN
  1584. #endif //FUNC_AW48_ADD_6_TEMP_SENEOR
  1585. #ifdef FUNC_AX48_NACS_ADD_6_TEMP_SENEOR
  1586. //AX48_NACS
  1587. #ifdef MODIFY_AX48_NACS_OTP_SPEC_20231006_KENNY
  1588. #define ALARM_SPEC_OT_G1_1_AX48_NACS (75 + 15) // unit C
  1589. #define ALARM_SPEC_OT_G1_2_AX48_NACS (85 + 15) // unit C
  1590. #define ALARM_SPEC_OT_G1_HYSTERESIS_AX48_NACS 20 // unit C Recover 70 = (90-20)
  1591. #else //MODIFY_AX48_NACS_OTP_SPEC_20231006_KENNY
  1592. #define ALARM_SPEC_OT_G1_1_AX48_NACS 75 // unit C
  1593. #define ALARM_SPEC_OT_G1_2_AX48_NACS 85 // unit C
  1594. #define ALARM_SPEC_OT_G1_HYSTERESIS_AX48_NACS 20 // unit C Recover 55 = (75-20)
  1595. #endif //MODIFY_AX48_NACS_OTP_SPEC_20231006_KENNY
  1596. #ifdef MODIFY_AX48_NACS_OTP_SPEC_20240522_STEVEN
  1597. #ifdef MODIFY_AX48_NACS_OTP_SPEC_20240826_STEVEN
  1598. #define ALARM_SPEC_OT_G2_1_AX48_NACS 85 // unit C
  1599. #define ALARM_SPEC_OT_G2_2_AX48_NACS 95 // unit C
  1600. #define ALARM_SPEC_OT_G2_HYSTERESIS_AX48_NACS 20 // unit C Recover 50 = (70-20)
  1601. #define ALARM_SPEC_OT_G3_1_AX48_NACS 95 // unit C
  1602. #define ALARM_SPEC_OT_G3_2_AX48_NACS 105 // unit C
  1603. #define ALARM_SPEC_OT_G3_HYSTERESIS_AX48_NACS 20 // unit C Recover 75 = (95-20)
  1604. #define ALARM_SPEC_OT_G4_1_AX48_NACS 70 // unit C
  1605. #define ALARM_SPEC_OT_G4_2_AX48_NACS 80 // unit C
  1606. #define ALARM_SPEC_OT_G4_HYSTERESIS_AX48_NACS 20 // unit C Recover 75 = (95-20)
  1607. #else //MODIFY_AX48_NACS_OTP_SPEC_20240826_STEVEN
  1608. #define ALARM_SPEC_OT_G2_1_AX48_NACS 70 // unit C
  1609. #define ALARM_SPEC_OT_G2_2_AX48_NACS 80 // unit C
  1610. #define ALARM_SPEC_OT_G2_HYSTERESIS_AX48_NACS 20 // unit C Recover 50 = (70-20)
  1611. #define ALARM_SPEC_OT_G3_1_AX48_NACS 95 // unit C
  1612. #define ALARM_SPEC_OT_G3_2_AX48_NACS 105 // unit C
  1613. #define ALARM_SPEC_OT_G3_HYSTERESIS_AX48_NACS 20 // unit C Recover 75 = (95-20)
  1614. #endif //MODIFY_AX48_NACS_OTP_SPEC_20240826_STEVEN
  1615. #else //MODIFY_AX48_NACS_OTP_SPEC_20240522_STEVEN
  1616. #define ALARM_SPEC_OT_G2_1_AX48_NACS (100 + 15) // unit C
  1617. #define ALARM_SPEC_OT_G2_2_AX48_NACS (110 + 15) // unit C
  1618. #define ALARM_SPEC_OT_G2_HYSTERESIS_AX48_NACS 20 // unit C Recover 90 = (110-20)
  1619. #endif //MODIFY_AX48_NACS_OTP_SPEC_20240522_STEVEN
  1620. #endif //FUNC_AX48_NACS_ADD_6_TEMP_SENEOR
  1621. //AX80_NACS
  1622. #ifdef FUNC_AX80_NACS_ADD_6_TEMP_SENEOR
  1623. #ifdef MODIFY_AX80_NACS_OTP_SPEC_20240911_JACK
  1624. #define ALARM_SPEC_OT_G1_1_AX80_NACS 90 // unit C
  1625. #define ALARM_SPEC_OT_G1_2_AX80_NACS 100 // unit C
  1626. #define ALARM_SPEC_OT_G1_HYSTERESIS_AX80_NACS 20 // unit C Recover 70 = (90-20)
  1627. #define ALARM_SPEC_OT_G2_1_AX80_NACS 90 // unit C
  1628. #define ALARM_SPEC_OT_G2_2_AX80_NACS 100 // unit C
  1629. #define ALARM_SPEC_OT_G2_HYSTERESIS_AX80_NACS 20 // unit C Recover 50 = (70-20)
  1630. #define ALARM_SPEC_OT_G3_1_AX80_NACS 95 // unit C
  1631. #define ALARM_SPEC_OT_G3_2_AX80_NACS 105 // unit C
  1632. #define ALARM_SPEC_OT_G3_HYSTERESIS_AX80_NACS 20 // unit C Recover 75 = (95-20)
  1633. #define ALARM_SPEC_OT_G4_1_AX80_NACS 70 // unit C
  1634. #define ALARM_SPEC_OT_G4_2_AX80_NACS 80 // unit C
  1635. #define ALARM_SPEC_OT_G4_HYSTERESIS_AX80_NACS 20 // unit C Recover 75 = (95-20)
  1636. #else //MODIFY_AX80_NACS_OTP_SPEC_20240911_JACK
  1637. #ifdef MODIFY_AX80_NACS_OTP_SPEC_20231006_KENNY
  1638. #define ALARM_SPEC_OT_G1_1_AX80_NACS (75 + 15) // unit C
  1639. #define ALARM_SPEC_OT_G1_2_AX80_NACS (85 + 15) // unit C
  1640. #define ALARM_SPEC_OT_G1_HYSTERESIS_AX80_NACS 20 // unit C Recover 70 = (90-20)
  1641. #else //MODIFY_AX80_NACS_OTP_SPEC_20231006_KENNY
  1642. #define ALARM_SPEC_OT_G1_1_AX80_NACS 75 // unit C
  1643. #define ALARM_SPEC_OT_G1_2_AX80_NACS 85 // unit C
  1644. #define ALARM_SPEC_OT_G1_HYSTERESIS_AX80_NACS 20 // unit C Recover 55 = (75-20)
  1645. #endif //MODIFY_AX80_NACS_OTP_SPEC_20231006_KENNY
  1646. #define ALARM_SPEC_OT_G2_1_AX80_NACS (100 + 15) // unit C
  1647. #define ALARM_SPEC_OT_G2_2_AX80_NACS (110 + 15) // unit C
  1648. #define ALARM_SPEC_OT_G2_HYSTERESIS_AX80_NACS 20 // unit C Recover 90 = (110-20)
  1649. #endif //MODIFY_AX80_NACS_OTP_SPEC_20240911_JACK
  1650. #endif //FUNC_AX80_NACS_ADD_6_TEMP_SENEOR
  1651. #else //MODIFY_OTP_SPEC
  1652. #define ALARM_SPEC_OT_1 90 // unit C
  1653. #define ALARM_SPEC_OT_2 100 // unit C
  1654. #define ALARM_SPEC_OT_HYSTERESIS 20 // unit C
  1655. #endif //MODIFY_OTP_SPEC
  1656. #define ALARM_SPEC_GF 3100 // 2.5V
  1657. #define ALARM_SPEC_GF_HYSTERESIS 2110 // 2.5V-"1.7V"=0.8V
  1658. #ifndef FUNC_NEW_RELAY_MONITOR
  1659. #define ALARM_SPEC_RELAY_LN_DRIVE_FAULT 140 // unit 0.01V
  1660. #define ALARM_SPEC_RELAY_LN_WELDING 250//140 // unit 0.01V
  1661. //#define ALARM_SPEC_RELAY_LN_HYSTERESIS 20 // unit 0.01V //Not Used
  1662. #define ALARM_SPEC_RELAY_LL 80 //24 // unit 0.01V
  1663. #endif //FUNC_NEW_RELAY_MONITOR
  1664. #define ALARM_SPEC_CURRENT_LEAK_HYSTERESIS 300 //
  1665. #define ALARM_SPEC_METER_TIMEOUT 10 // uint Counts
  1666. #define ALARM_RETRY_COUNT 1
  1667. #define ALARM_OC_RETRY_COUNT 4
  1668. #define ALARM_LEAK_RETRY_COUNT 1
  1669. #define ALARM_RETRY_INTERVAL_OC 60000 // 60000 ms >> 1min
  1670. #define ALARM_RETRY_INTERVAL_LEAK 15000 // 15000 ms >> 15sec
  1671. #define ALARM_RETRY_INTERVAL_OT 15000 // 15000 ms >> 15sec
  1672. #define WHITE_LIST_TYPE_RFID 0x00
  1673. #define WHITE_LIST_TYPE_BLE 0x01
  1674. #define AM3352_REQ_PIN_DEBOUNCE 30
  1675. #define BLE_LOGIN_ROLE_UNKOWN 0x00
  1676. #define BLE_LOGIN_ROLE_ROOT 0x01
  1677. #define BLE_LOGIN_ROLE_USER 0x02
  1678. #define BLE_LOGIN_ROLE_VISITOR 0x03
  1679. #define WIFI_LOGIN_ROLE_UNKOWN 0x00
  1680. #define WIFI_LOGIN_ROLE_ROOT 0x01
  1681. #define WIFI_LOGIN_ROLE_USER 0x02
  1682. #define WIFI_LOGIN_ROLE_VISITOR 0x03
  1683. #define MCU_DATA 0
  1684. #define METER_DATA 1
  1685. #define CORR_GROUP_ARRAY 3
  1686. #define GROUNGING_SYSTEM_LL 0
  1687. #define GROUNGING_SYSTEM_LN 1
  1688. #define CCID_MODULE_CORMEX 0
  1689. #define CCID_MODULE_VAC 1
  1690. #define CCID_MODULE_UNKNOW 0xFF
  1691. #ifdef FUNC_AUTO_MODIFY_CCID_MODULE
  1692. #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"))
  1693. #endif
  1694. //#define LOCAL_LINK_BLE
  1695. //#define LOCAL_LINK_WIFI
  1696. #ifdef FUNC_TEMP_SENSOR_WITH_NEG_VALUE
  1697. typedef struct TEMPERATURE
  1698. {
  1699. int16_t SystemAmbientTemp;
  1700. int16_t CcsConnectorTemp;
  1701. #ifdef FUNC_AX80_ADD_4_TEMP_SENEOR
  1702. #ifdef FUNC_AW48_ADD_6_TEMP_SENEOR
  1703. #ifdef FUNC_AX48_NACS_ADD_6_TEMP_SENEOR
  1704. #ifdef FUNC_AX80_NACS_ADD_6_TEMP_SENEOR
  1705. int16_t Group1_MaxTemp;
  1706. union
  1707. {
  1708. int16_t AX80_Relay1Temp;
  1709. int16_t AW48_T1_L1_IN;
  1710. int16_t AX48_NACS_T1_L1_IN;
  1711. int16_t AX80_NACS_T1_L1_IN;
  1712. };
  1713. union
  1714. {
  1715. int16_t AX80_Relay2Temp;
  1716. int16_t AW48_T2_L2_IN;
  1717. int16_t AX48_NACS_T2_L2_IN;
  1718. int16_t AX80_NACS_T2_L2_IN;
  1719. };
  1720. union
  1721. {
  1722. int16_t AX80_Input_L1_Temp;
  1723. int16_t AW48_T3_L1_OUT;
  1724. int16_t AX48_NACS_T3_L1_OUT;
  1725. int16_t AX80_NACS_T3_L1_OUT;
  1726. };
  1727. union
  1728. {
  1729. int16_t AX80_Input_N_L2_Temp;
  1730. int16_t AW48_T4_L2_OUT;
  1731. int16_t AX48_NACS_T4_L2_OUT;
  1732. int16_t AX80_NACS_T4_L2_OUT;
  1733. };
  1734. union
  1735. {
  1736. int16_t AW48_T5_L1_GUN;
  1737. int16_t AX48_NACS_T5_L1_GUN;
  1738. int16_t AX80_NACS_T5_L1_GUN;
  1739. };
  1740. union
  1741. {
  1742. int16_t AW48_T6_L2_GUN;
  1743. int16_t AX48_NACS_T6_L2_GUN;
  1744. int16_t AX80_NACS_T6_L2_GUN;
  1745. };
  1746. int16_t Group2_MaxTemp;
  1747. #ifdef MODIFY_AX48_NACS_OTP_SPEC_20240522_STEVEN
  1748. int16_t Group3_MaxTemp;
  1749. #endif
  1750. #ifdef MODIFY_AW48_OTP_SPEC_20240802_STEVEN
  1751. int16_t Group4_MaxTemp;
  1752. #endif
  1753. #else //FUNC_AX80_NACS_ADD_6_TEMP_SENEOR
  1754. int16_t Group1_MaxTemp;
  1755. union
  1756. {
  1757. int16_t AX80_Relay1Temp;
  1758. int16_t AW48_T1_L1_IN;
  1759. int16_t AX48_NACS_T1_L1_IN;
  1760. };
  1761. union
  1762. {
  1763. int16_t AX80_Relay2Temp;
  1764. int16_t AW48_T2_L2_IN;
  1765. int16_t AX48_NACS_T2_L2_IN;
  1766. };
  1767. union
  1768. {
  1769. int16_t AX80_Input_L1_Temp;
  1770. int16_t AW48_T3_L1_OUT;
  1771. int16_t AX48_NACS_T3_L1_OUT;
  1772. };
  1773. union
  1774. {
  1775. int16_t AX80_Input_N_L2_Temp;
  1776. int16_t AW48_T4_L2_OUT;
  1777. int16_t AX48_NACS_T4_L2_OUT;
  1778. };
  1779. union
  1780. {
  1781. int16_t AW48_T5_L1_GUN;
  1782. int16_t AX48_NACS_T5_L1_GUN;
  1783. };
  1784. union
  1785. {
  1786. int16_t AW48_T6_L2_GUN;
  1787. int16_t AX48_NACS_T6_L2_GUN;
  1788. };
  1789. int16_t Group2_MaxTemp;
  1790. #endif //FUNC_AX80_NACS_ADD_6_TEMP_SENEOR
  1791. #else //FUNC_AX48_NACS_ADD_6_TEMP_SENEOR
  1792. int16_t Group1_MaxTemp;
  1793. union
  1794. {
  1795. int16_t AX80_Relay1Temp;
  1796. int16_t AW48_T1_L1_IN;
  1797. };
  1798. union
  1799. {
  1800. int16_t AX80_Relay2Temp;
  1801. int16_t AW48_T2_L2_IN;
  1802. };
  1803. union
  1804. {
  1805. int16_t AX80_Input_L1_Temp;
  1806. int16_t AW48_T3_L1_OUT;
  1807. };
  1808. union
  1809. {
  1810. int16_t AX80_Input_N_L2_Temp;
  1811. int16_t AW48_T4_L2_OUT;
  1812. };
  1813. int16_t AW48_T5_L1_GUN;
  1814. int16_t AW48_T6_L2_GUN;
  1815. int16_t Group2_MaxTemp;
  1816. #endif //FUNC_AX48_NACS_ADD_6_TEMP_SENEOR
  1817. #else //FUNC_AW48_ADD_6_TEMP_SENEOR
  1818. int16_t Group1_MaxTemp;
  1819. int16_t AX80_Relay1Temp;
  1820. int16_t AX80_Relay2Temp;
  1821. int16_t AX80_Input_L1_Temp;
  1822. int16_t AX80_Input_N_L2_Temp;
  1823. int16_t Group2_MaxTemp;
  1824. #endif //FUNC_AW48_ADD_6_TEMP_SENEOR
  1825. #endif //FUNC_AX80_ADD_4_TEMP_SENEOR
  1826. }Temperature;
  1827. #else //FUNC_TEMP_SENSOR_WITH_NEG_VALUE
  1828. typedef struct TEMPERATURE
  1829. {
  1830. uint8_t SystemAmbientTemp;
  1831. uint8_t CcsConnectorTemp;
  1832. #ifdef FUNC_AX80_ADD_4_TEMP_SENEOR
  1833. #ifdef FUNC_AW48_ADD_6_TEMP_SENEOR
  1834. uint8_t Group1_MaxTemp;
  1835. union
  1836. {
  1837. uint8_t AX80_Relay1Temp;
  1838. uint8_t AW48_T1_L1_IN;
  1839. };
  1840. union
  1841. {
  1842. uint8_t AX80_Relay2Temp;
  1843. uint8_t AW48_T2_L2_IN;
  1844. };
  1845. union
  1846. {
  1847. uint8_t AX80_Input_L1_Temp;
  1848. uint8_t AW48_T3_L1_OUT;
  1849. };
  1850. union
  1851. {
  1852. uint8_t AX80_Input_N_L2_Temp;
  1853. uint8_t AW48_T4_L2_OUT;
  1854. };
  1855. uint8_t AW48_T5_L1_GUN;
  1856. uint8_t AW48_T6_L2_GUN;
  1857. uint8_t Group2_MaxTemp;
  1858. #else //FUNC_AW48_ADD_6_TEMP_SENEOR
  1859. uint8_t Group1_MaxTemp;
  1860. uint8_t AX80_Relay1Temp;
  1861. uint8_t AX80_Relay2Temp;
  1862. uint8_t AX80_Input_L1_Temp;
  1863. uint8_t AX80_Input_N_L2_Temp;
  1864. uint8_t Group2_MaxTemp;
  1865. #endif //FUNC_AW48_ADD_6_TEMP_SENEOR
  1866. #endif //FUNC_AX80_ADD_4_TEMP_SENEOR
  1867. }Temperature;
  1868. #endif //FUNC_TEMP_SENSOR_WITH_NEG_VALUE
  1869. typedef struct BLE_CONFIG
  1870. {
  1871. uint8_t puk[8];
  1872. uint8_t idRoot[32];
  1873. uint8_t isRegPuk:1;
  1874. uint8_t isGenPin:1;
  1875. }Ble_Config;
  1876. typedef struct WIFI_CONFIG
  1877. {
  1878. uint8_t puk[8];
  1879. uint8_t idRoot[32];
  1880. uint8_t passwd[32];
  1881. uint8_t isRegPuk:1;
  1882. uint8_t isGenPin:1;
  1883. }Wifi_Config;
  1884. typedef struct TM
  1885. {
  1886. uint16_t year;
  1887. uint8_t month;
  1888. uint8_t day;
  1889. uint8_t hour;
  1890. uint8_t min;
  1891. uint8_t sec;
  1892. }DT;
  1893. typedef struct COEFFICIENT
  1894. {
  1895. float gain_v[CORR_GROUP_ARRAY];
  1896. float offset_v[CORR_GROUP_ARRAY];
  1897. float gain_c[CORR_GROUP_ARRAY];
  1898. float offset_c[CORR_GROUP_ARRAY];
  1899. float gain_leak[CORR_GROUP_ARRAY];
  1900. float offset_leak[CORR_GROUP_ARRAY];
  1901. float gain_gmi[CORR_GROUP_ARRAY];
  1902. float offset_gmi[CORR_GROUP_ARRAY];
  1903. uint8_t offsetisPosOrNeg_v[CORR_GROUP_ARRAY]; //Hao: Not Used
  1904. uint8_t offsetisPosOrNeg_c[CORR_GROUP_ARRAY]; //Hao: Not Used
  1905. uint8_t offsetisPosOrNeg_leak[CORR_GROUP_ARRAY]; //Hao: Not Used
  1906. uint8_t offsetisPosOrNeg_gmi[CORR_GROUP_ARRAY]; //Hao: Used
  1907. }Coefficient;
  1908. typedef struct ALARM_DEF
  1909. {
  1910. uint16_t fail;
  1911. uint16_t restore;
  1912. uint8_t retry;
  1913. uint8_t isOccurInCharging;
  1914. uint8_t isLatch;
  1915. }Alarm_Def;
  1916. typedef struct COUNTER
  1917. {
  1918. Alarm_Def L1_OV;
  1919. Alarm_Def L2_OV;
  1920. Alarm_Def L3_OV;
  1921. Alarm_Def L1_UV;
  1922. Alarm_Def L2_UV;
  1923. Alarm_Def L3_UV;
  1924. Alarm_Def L1_OC;
  1925. Alarm_Def L2_OC;
  1926. Alarm_Def L3_OC;
  1927. Alarm_Def OT;
  1928. Alarm_Def GF;
  1929. Alarm_Def LEAK; // CORMEX
  1930. Alarm_Def LEAK_AC ; // VAC
  1931. Alarm_Def LEAK_DC ; // VAC
  1932. Alarm_Def EMO;
  1933. Alarm_Def RELAY;
  1934. Alarm_Def RELAY_Drive_Fualt;
  1935. Alarm_Def CP;
  1936. Alarm_Def LEAK_MODULE;
  1937. Alarm_Def AC_Drip;
  1938. Alarm_Def Meter_Timeout;
  1939. #ifdef FUNC_ALARM_CP_NEG_ERROR
  1940. Alarm_Def CP_Neg;
  1941. #endif
  1942. #ifdef FUNC_GUN_LOCK
  1943. Alarm_Def GunLock;
  1944. #endif
  1945. #ifdef FUNC_AX80_ADD_TILT_SENSOR
  1946. Alarm_Def TiltSensor;
  1947. #endif
  1948. uint16_t RST_CFG;
  1949. uint16_t WatchDogLeak;
  1950. }Counter;
  1951. typedef struct LED
  1952. {
  1953. uint8_t motion; // LED motion command reference const declare
  1954. }Led;
  1955. typedef struct SPEAKER
  1956. {
  1957. uint8_t motion; // LED motion command reference const declare
  1958. }Speaker;
  1959. typedef struct CYCLE_INFO
  1960. {
  1961. DT startDateTime; // Charging start dqte timeinfo
  1962. uint8_t userId[32]; // Start user ID
  1963. uint32_t startTimeTick; // Time tick in million second which get from HAL_GetTick()
  1964. uint32_t endTimeTick; // Same as startTimeTick
  1965. //uint32_t meterStart; // Cycle start meter read value;
  1966. uint64_t meterStart; // Cycle start meter read value;
  1967. uint32_t Power_Consumption; // Charging total power(KWH) resolution is 0.01
  1968. uint32_t Duration; // Charging duration unit: ms
  1969. uint8_t StartType; // 0: CP detect 1: RFID 2: BLE 3: Backend
  1970. }Cycle_Info;
  1971. typedef struct RFID
  1972. {
  1973. uint8_t data_Sn[16]; // RFID serial number data
  1974. uint8_t data_Block[16]; // RFID operation block data
  1975. uint8_t currentCard[16]; // Current charging cycle start card number
  1976. uint8_t nowCard[16]; // now card number
  1977. uint8_t snType; // 0: 4 bytes 1: 7 bytes 2: 10 Bytes
  1978. uint8_t targetBlock; // RFID read/write target block
  1979. uint8_t key[6]; // RFID access key
  1980. uint8_t keyType; // 0: Key-A 1: Key-B
  1981. uint8_t cardType; // 1: 14443 2: 15693 3:felica
  1982. uint8_t Charge_data_Sn[16]; // RFID serial number data
  1983. struct
  1984. {
  1985. uint8_t reqBlockRead:1; // Read block data request flag
  1986. uint8_t reqBlockWrite:1; // Write block data request flag
  1987. uint8_t reqHalt:1; // Halt card request flag
  1988. uint8_t reqStart:1; // RFID start charging cycle request flag
  1989. uint8_t reqStop:1; // RFID stop charging cycle request flag
  1990. uint8_t isBlockReadOK:1; // RFID block data read ok flag
  1991. uint8_t isBlockWriteOK:1; // RFID block data write ok flag
  1992. uint8_t isFelicaDelay:1; //
  1993. }op_bits;
  1994. }Rfid;
  1995. typedef struct BLE
  1996. {
  1997. uint8_t initSeq; // BLE module initial sequence
  1998. uint8_t peripheral_mac[13]; // BLE module mac address
  1999. uint8_t loginRole; // BLE login role, 0: Unkown 1: Root 2: User 3: Visitor
  2000. uint8_t loginId[32]; // BLE central login id
  2001. uint8_t isRequestOn:1; // BLE start charging cycle request
  2002. uint8_t isRequestOff:1; // BLE stop charging cycle request
  2003. uint8_t isDataMode:1; // BLE module is in data mode
  2004. }Ble;
  2005. typedef struct WIFI
  2006. {
  2007. uint8_t initSeq; // WIFI module intiail sequence
  2008. uint8_t module_mac[13]; // WIFI module mac address
  2009. uint8_t loginRole; // WIFI login role, 0: Unkown 1: Root 2: User 3: Visitor
  2010. uint8_t loginId[32]; // WIFI central login id
  2011. uint8_t isRequestOn:1; // WIFI start charging cycle request
  2012. uint8_t isRequestOff:1; // WIFI stop charging cycle request
  2013. uint8_t isDataMode:1; // WIFI module is in data mode
  2014. }Wifi;
  2015. #ifndef RECODE_METER_PRO380
  2016. typedef struct METER
  2017. {
  2018. 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
  2019. uint32_t L1_Voltage ;
  2020. uint32_t L2_Voltage ;
  2021. uint32_t L3_Voltage ;
  2022. uint32_t L1_Current ;
  2023. uint32_t L2_Current ;
  2024. uint32_t L3_Current ;
  2025. uint32_t Total_Active_Power;
  2026. uint32_t Frequency;
  2027. uint32_t Harmonic;
  2028. }Meter;
  2029. #ifdef MODIFY_METER_EXT_PRO380
  2030. typedef struct _MeterPRO380
  2031. {
  2032. float m_AE_T1_Total; //0x6002: T1 Total active energy (kWh)
  2033. float m_AE_T2_Total; //0x6004: T2 Total active energy (kWh)
  2034. union
  2035. {
  2036. float m_AE_Lx_Total[AC_PHASE_NUM_MAX];
  2037. struct
  2038. {
  2039. float m_AE_L1_Total; //0x6006: L1 Total active energy (kWh)
  2040. float m_AE_L2_Total; //0x6008: L1 Total active energy (kWh)
  2041. float m_AE_L3_Total; //0x600A: L1 Total active energy (kWh)
  2042. };
  2043. };
  2044. uint32_t m_LastUpdateTick;
  2045. }
  2046. MeterPRO380, *PMeterPRO380;
  2047. #endif //MODIFY_METER_EXT_PRO380
  2048. #endif //!RECODE_METER_PRO380
  2049. //edward 2019_08_28
  2050. typedef struct AM3352
  2051. {
  2052. uint16_t RequestPinDebounceCnt; // CSU request action debounce counter
  2053. uint8_t LedActionState; // CSU LED action state
  2054. #ifdef FUNC_AW48_NET_LED
  2055. uint8_t NetLedActionState; // CSU LED action state for connectivity status
  2056. uint8_t NetLedActionSubState;
  2057. #endif
  2058. uint32_t LedAlarmState; // CSU LED alarm state
  2059. uint8_t RotarySwitchState; // CSU rotary switch
  2060. uint16_t BreatheLedAuthdFadeIn; //Authd breathe led fade in time
  2061. uint16_t BreatheLedAuthdFadeOut; //Authd breathe led fade out time
  2062. uint16_t BreatheLedConnectFadeIn; //Connect breathe led fade in time
  2063. uint16_t BreatheLedConnectFadeOut; //Connect breathe led fade out time
  2064. uint16_t BreatheLedChargeFadeIn; //Charge breathe led fade in time
  2065. uint16_t BreatheLedChargeFadeOut; //Charge breathe led fade out time
  2066. uint8_t isPWMOn:1; // CSU PWM action status, 0: Off 1: Off
  2067. uint8_t isRequestOn:1; // CSU relay action request on
  2068. uint8_t isRequestOff:1; // CSU relay action request off
  2069. }Am3352;
  2070. typedef struct RESERVATION
  2071. {
  2072. uint8_t mode; // Reservation mode, 0:Disable 1:Once 2:Always
  2073. uint8_t hour; // Reservation hour
  2074. uint8_t min; // Reservation minute
  2075. }Reservation;
  2076. #ifdef FUNC_METER_IC_ADE7858A
  2077. #define METER_IC_MEAS_VALS_NUM (19)
  2078. typedef union _MeterIC_MeasVals
  2079. {
  2080. int32_t m_Data[METER_IC_MEAS_VALS_NUM];
  2081. struct
  2082. {
  2083. int32_t m_AVRMS; //Phase A voltage rms value
  2084. int32_t m_BVRMS; //Phase B voltage rms value
  2085. int32_t m_CVRMS; //Phase C voltage rms value
  2086. int32_t m_AIRMS; //Phase A current rms value
  2087. int32_t m_BIRMS; //Phase B current rms value
  2088. int32_t m_CIRMS; //Phase C current rms value
  2089. int32_t m_AVRMS_LRIP; //1.024 sec average of Phase A voltage rms value
  2090. int32_t m_BVRMS_LRIP; //1.024 sec average of Phase B voltage rms value
  2091. int32_t m_CVRMS_LRIP; //1.024 sec average of Phase C voltage rms value
  2092. int32_t m_AIRMS_LRIP; //1.024 sec average of Phase A current rms value
  2093. int32_t m_BIRMS_LRIP; //1.024 sec average of Phase B current rms value
  2094. int32_t m_CIRMS_LRIP; //1.024 sec average of Phase C current rms value
  2095. int32_t m_AWATT; //Instantaneous value of Phase A total active power
  2096. int32_t m_BWATT; //Instantaneous value of Phase B total active power
  2097. int32_t m_CWATT; //Instantaneous value of Phase C total active power
  2098. int32_t m_AWATTHR; //Phase A total active energy accumulation
  2099. int32_t m_BWATTHR; //Phase B total active energy accumulation
  2100. int32_t m_CWATTHR; //Phase C total active energy accumulation
  2101. int32_t m_Period; //Reserved
  2102. };
  2103. }
  2104. MeterIC_MeasVals, *PMeterIC_MeasVals;
  2105. typedef enum _MeterIC_CaliValType
  2106. {
  2107. //Read/Write Function
  2108. MICC_AVGAIN = 0x01,
  2109. MICC_BVGAIN = 0x02,
  2110. MICC_CVGAIN = 0x03,
  2111. MICC_AVRMSOS = 0x11,
  2112. MICC_BVRMSOS = 0x12,
  2113. MICC_CVRMSOS = 0x13,
  2114. MICC_AIGAIN = 0x21,
  2115. MICC_BIGAIN = 0x22,
  2116. MICC_CIGAIN = 0x23,
  2117. MICC_AIRMSOS = 0x31,
  2118. MICC_BIRMSOS = 0x32,
  2119. MICC_CIRMSOS = 0x33,
  2120. MICC_APHCAL = 0x41,
  2121. MICC_BPHCAL = 0x42,
  2122. MICC_CPHCAL = 0x43,
  2123. MICC_UNDEFINED = 0xFF,
  2124. #ifdef FUNC_QUERY_METER_IC_DIE_VERSION
  2125. MICC_GET_DIE_VERSION = 0x50,
  2126. #endif
  2127. //Read Function Test
  2128. #ifdef FUNC_METER_IC_CALI_FLAG
  2129. MICC_READ_METER_IC_CALI_FLAG = 0xB0,
  2130. #endif
  2131. //Write Function Test
  2132. MICC_RESET_POWER_CONSUMPTION_CUMULATIVE = 0xA0,
  2133. MICC_RESET_METER_IC_ALL_CALI_VAL_00 = 0xC0,
  2134. MICC_RESET_METER_IC_ALL_CALI_VAL_FF = 0xC1,
  2135. #ifdef FUNC_GUN_LOCK
  2136. MICC_SET_GUN_LOCK_STATUS = 0xD0,
  2137. #endif
  2138. #ifdef FUNC_VOLATILE_OPERATION
  2139. #ifdef VO_SIMU_ACV
  2140. MICC_SET_SIMU_ACV_VOLT = 0xE0,
  2141. #endif
  2142. #ifdef VO_SIMU_NTC
  2143. MICC_SET_SIMU_NTC_TEMP = 0xE1,
  2144. #endif
  2145. #ifdef VO_SIMU_ALARMCODE
  2146. MICC_SET_SIMU_ALARMCIDE_VAL = 0xE2,
  2147. #endif
  2148. #ifdef VO_SIMU_ACA
  2149. MICC_SET_SIMU_ACA_CURR = 0xE3,
  2150. #endif
  2151. #ifdef VO_GET_VO_CODE
  2152. MICC_GET_VO_CODE = 0xFB,
  2153. #endif
  2154. MICC_SET_VO_CODE = 0xFC,
  2155. #ifdef VO_SIMU_CP
  2156. MICC_SET_SIMU_CP_VOLT = 0xFD,
  2157. #endif
  2158. #ifdef VO_SIMU_PP
  2159. MICC_SET_SIMU_PP_CURR = 0xFE
  2160. #endif
  2161. #endif //FUNC_VOLATILE_OPERATION
  2162. }
  2163. MeterIC_CaliValType;
  2164. #define AUTHCODE_RESET_POWER_CONSUMPTION_CUMULATIVE (0x55667788)
  2165. #define AUTHCODE_RESET_METER_IC_ALL_CALI_VAL (0x11223344)
  2166. #define METER_IC_CALI_VALS_NUM (15)
  2167. #define METER_IC_CALI_ITEM_PHCAL_BEG_IDX (12)
  2168. #define METER_IC_CALI_ITEM_PHCAL_END_IDX (14)
  2169. typedef union _MeterIC_CaliVals
  2170. {
  2171. int32_t m_Data[METER_IC_CALI_VALS_NUM];
  2172. struct
  2173. {
  2174. //Voltage
  2175. int32_t m_AVGAIN; //0: Phase A voltage gain adjust
  2176. int32_t m_BVGAIN; //1: Phase B voltage gain adjust
  2177. int32_t m_CVGAIN; //2: Phase C voltage gain adjust
  2178. int32_t m_AVRMSOS; //3: Phase A voltage rms offset
  2179. int32_t m_BVRMSOS; //4: Phase B voltage rms offset
  2180. int32_t m_CVRMSOS; //5: Phase C voltage rms offset
  2181. //Current
  2182. int32_t m_AIGAIN; //6: Phase A current gain adjust
  2183. int32_t m_BIGAIN; //7: Phase B current gain adjust
  2184. int32_t m_CIGAIN; //8: Phase C current gain adjust
  2185. int32_t m_AIRMSOS; //9: Phase A current rms offset
  2186. int32_t m_BIRMSOS; //10: Phase B current rms offset
  2187. int32_t m_CIRMSOS; //11: Phase C current rms offset
  2188. //Phase
  2189. int32_t m_APHCAL; //12: Phase calibration of Phase A
  2190. int32_t m_BPHCAL; //13: Phase calibration of Phase B
  2191. int32_t m_CPHCAL; //14: Phase calibration of Phase C
  2192. };
  2193. }
  2194. MeterIC_CaliVals, *PMeterIC_CaliVals;
  2195. //Trig to write new calibration values to Meter IC
  2196. typedef union _MeterIC_TrigWriteCaliVals
  2197. {
  2198. uint32_t m_Data;
  2199. struct
  2200. {
  2201. //Voltage
  2202. uint32_t m_AVGAIN: 1; //Phase A voltage gain adjust
  2203. uint32_t m_BVGAIN: 1; //Phase B voltage gain adjust
  2204. uint32_t m_CVGAIN: 1; //Phase C voltage gain adjust
  2205. uint32_t m_AVRMSOS: 1; //Phase A voltage rms offset
  2206. uint32_t m_BVRMSOS: 1; //Phase B voltage rms offset
  2207. uint32_t m_CVRMSOS: 1; //Phase C voltage rms offset
  2208. //Current
  2209. uint32_t m_AIGAIN: 1; //Phase A current gain adjust
  2210. uint32_t m_BIGAIN: 1; //Phase B current gain adjust
  2211. uint32_t m_CIGAIN: 1; //Phase C current gain adjust
  2212. uint32_t m_AIRMSOS: 1; //Phase A current rms offset
  2213. uint32_t m_BIRMSOS: 1; //Phase B current rms offset
  2214. uint32_t m_CIRMSOS: 1; //Phase C current rms offset
  2215. //Phase
  2216. uint32_t m_APHCAL: 1; //Phase calibration of Phase A
  2217. uint32_t m_BPHCAL: 1; //Phase calibration of Phase B
  2218. uint32_t m_CPHCAL: 1; //Phase calibration of Phase C
  2219. uint32_t m_Reserved: (32 - 15);
  2220. };
  2221. }
  2222. MeterIC_TrigWriteCaliVals, *PMeterIC_TrigWriteCaliVals;
  2223. #ifdef FUNC_METER_IC_CALI_FLAG
  2224. //Flag of specific calibration value was write to flash
  2225. //(use to identify the device was calibrated or not)
  2226. typedef union _MeterIC_CaliFlag
  2227. {
  2228. uint32_t m_Data;
  2229. struct
  2230. {
  2231. //Voltage
  2232. uint32_t m_AVGAIN: 1; //Phase A voltage gain adjust
  2233. uint32_t m_BVGAIN: 1; //Phase B voltage gain adjust
  2234. uint32_t m_CVGAIN: 1; //Phase C voltage gain adjust
  2235. uint32_t m_AVRMSOS: 1; //Phase A voltage rms offset
  2236. uint32_t m_BVRMSOS: 1; //Phase B voltage rms offset
  2237. uint32_t m_CVRMSOS: 1; //Phase C voltage rms offset
  2238. //Current
  2239. uint32_t m_AIGAIN: 1; //Phase A current gain adjust
  2240. uint32_t m_BIGAIN: 1; //Phase B current gain adjust
  2241. uint32_t m_CIGAIN: 1; //Phase C current gain adjust
  2242. uint32_t m_AIRMSOS: 1; //Phase A current rms offset
  2243. uint32_t m_BIRMSOS: 1; //Phase B current rms offset
  2244. uint32_t m_CIRMSOS: 1; //Phase C current rms offset
  2245. //Phase
  2246. uint32_t m_APHCAL: 1; //Phase calibration of Phase A
  2247. uint32_t m_BPHCAL: 1; //Phase calibration of Phase B
  2248. uint32_t m_CPHCAL: 1; //Phase calibration of Phase C
  2249. uint32_t m_Reserved: (32 - 15);
  2250. };
  2251. }
  2252. MeterIC_CaliFlag, *PMeterIC_CaliFlag;
  2253. #endif //FUNC_METER_IC_CALI_FLAG
  2254. #ifdef FUNC_METER_IC_READ_PHASE_ANGLE
  2255. typedef enum _AC_PERIOD_MODE
  2256. {
  2257. AC_PERIOD_MODE_UNKNOW = 0,
  2258. AC_PERIOD_MODE_50HZ,
  2259. AC_PERIOD_MODE_60HZ,
  2260. AC_PERIOD_MODE_NUM
  2261. }
  2262. AC_PERIOD_MODE;
  2263. typedef enum _AC_LINE_PHASE_MODE
  2264. {
  2265. AC_PHASE_MODE_UNKNOW = 0,
  2266. AC_PHASE_MODE_1P, //1 Phase
  2267. AC_PHASE_MODE_240_120_120_SEQ_OK, //3 Phase
  2268. AC_PHASE_MODE_120_120_240_SEQ_NG, //3 Phase
  2269. AC_PHASE_MODE_360_360_360, //1P Simu 3P(L=>L1, L2, L3)
  2270. AC_PHASE_MODE_NUM
  2271. }
  2272. AC_PHASE_MODE;
  2273. typedef struct _MeterIC_ExtraInfo
  2274. {
  2275. int32_t m_AngleReg[3];
  2276. double m_AngleDegree[3];
  2277. int32_t m_MMODE;
  2278. int32_t m_COMPMODE;
  2279. AC_PERIOD_MODE m_AcPeriodMode;
  2280. AC_PHASE_MODE m_AcPhaseMode;
  2281. int32_t m_STATUS0;
  2282. int32_t m_STATUS1;
  2283. uint8_t m_bSEQERR: 1; //STATUS1 bit19
  2284. #ifdef FUNC_QUERY_METER_IC_DIE_VERSION
  2285. uint8_t m_DieVersion;
  2286. #endif
  2287. }
  2288. MeterIC_ExtraInfo, *PMeterIC_ExtraInfo;
  2289. #endif //FUNC_METER_IC_READ_PHASE_ANGLE
  2290. #endif //FUNC_METER_IC_ADE7858A
  2291. #ifdef MODIFY_UNDEFINED_MODEL_NAME_AND_SN_ISSUE
  2292. #define MODEL_NAME_LEN (64)
  2293. #define SERIAL_NUM_LEN (64)
  2294. #define SYSTEM_ID_LEN (MODEL_NAME_LEN + SERIAL_NUM_LEN)
  2295. #endif
  2296. typedef struct MEM
  2297. {
  2298. struct
  2299. {
  2300. union
  2301. {
  2302. uint8_t value[W25Q16FV_BLOCK_SIZE]; // 4096 byte
  2303. #ifdef FUNC_FLASH_CONFIG_APPEND_CRC
  2304. struct
  2305. {
  2306. uint8_t buf[W25Q16FV_BLOCK_SIZE - 4];
  2307. uint32_t crc32;
  2308. } verify;
  2309. #endif
  2310. struct
  2311. {
  2312. #ifdef MODIFY_UNDEFINED_MODEL_NAME_AND_SN_ISSUE
  2313. char ModelName[MODEL_NAME_LEN]; // 32 Byte -> EVSE model name max 64 byte in ASCII
  2314. char SerialNumber[SERIAL_NUM_LEN]; // 32 Byte -> EVSE serial number max 64 byte in ASCII
  2315. char System_ID[SYSTEM_ID_LEN]; // 64 Byte -> Byte EVSE system ID max 128 bytes in ASCII
  2316. #else
  2317. char ModelName[64]; // 32 Byte -> EVSE model name max 64 byte in ASCII
  2318. char SerialNumber[64]; // 32 Byte -> EVSE serial number max 64 byte in ASCII
  2319. char System_ID[128]; // 64 Byte -> Byte EVSE system ID max 128 bytes in ASCII
  2320. #endif
  2321. DT SystemDateTime; // 7 Byte -> EVSE system dat & time info, sync from RTC
  2322. uint8_t AuthMode; // 1 Byte -> 0: OCPP backend , 1: free mode
  2323. uint8_t MCU_Control_Mode; // 0: without CSU 1: with CSU 2: by pass
  2324. uint16_t MaxChargingEnergy; // 2 Byte -> 0: No limit Other: Limit max energy per cycle in KWH
  2325. uint16_t MaxChargingCurrent; // 2 Byte -> 0: Rating value Other: Linit max current output per cycle
  2326. uint16_t MaxChargingDuration; // 2 Byte -> 0: No limit Other: Limit max duration per cycle in minutes
  2327. uint16_t Correction_VL1[4][2]; // 16 Byte -> Voltage L1 correction point data(adc & meter) [point][adc(0) & meter(1)]
  2328. uint16_t Correction_VL2[4][2]; // 8 Byte -> Voltage L2 correction point data(adc & meter) [point][adc(0) & meter(1)]
  2329. uint16_t Correction_VL3[4][2]; // 8 Byte -> Voltage L3 correction point data(adc & meter) [point][adc(0) & meter(1)]
  2330. uint16_t Correction_CL1[4][2]; // 16 Byte -> Current L1 correction point data(adc & meter) [point][adc(0) & meter(1)]
  2331. uint16_t Correction_CL2[4][2]; // 8 Byte -> Current L2 correction point data(adc & meter) [point][adc(0) & meter(1)]
  2332. uint16_t Correction_CL3[4][2]; // 8 Byte -> Current L3 correction point data(adc & meter) [point][adc(0) & meter(1)]
  2333. uint16_t Correction_Leak[4][2]; // 16 Byte -> Leak Current correction point data(adc & meter) [point][adc(0) & meter(1)]
  2334. uint16_t Correction_GMI[4][2]; // 16 Byte -> GMI correction point data(adc & meter) [point][adc(0) & meter(1)]
  2335. #ifndef FUNC_POWER_CONSUMPTION_BY_METER_IC
  2336. // 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
  2337. #endif
  2338. uint32_t AcPlugInTimes; // 4 Byte -> Connector plug counter
  2339. uint8_t isRestoreFactory:1; // 1 Byte -> 0: No action 1: Trigger EVSE restore factory value
  2340. uint8_t RFID_SN_Endian:1; // 1 Byte -> 0: Little 1: Big
  2341. uint8_t isAuthEnable:1; // 1 Byte -> 0: User authorization disable 1: User authorizing enable
  2342. uint8_t isDispDebug:1; // 1 Byte -> 0: Non-display debug info 1: Display debug info
  2343. Reservation reservation; // 3 Byte -> EVSE reservation config
  2344. Ble_Config bleConfig; // 41 Byte -> BLE PUK & PIN config
  2345. Wifi_Config wifiConfig; // 73 Byte -> WIFI config
  2346. uint8_t OfflinePolicy; // 1 Byte -> 0: local list , 1: Phihong RFID tag , 2: free charging , 3: no charging
  2347. #ifndef FUNC_POWER_CONSUMPTION_BY_METER_IC
  2348. // uint32_t Power_Consumption_L1_Cumulative; // 4 Byte -> Power consumption keep data, resolution 0.0001 KWH (0.1W) // V*I*3600000ms = WH , 0.1W *10 = W
  2349. // uint32_t Power_Consumption_L2_Cumulative; // 4 Byte -> Power consumption keep data, resolution 0.0001 KWH (0.1W) // V*I*3600000ms = WH , 0.1W *10 = W
  2350. // uint32_t Power_Consumption_L3_Cumulative; // 4 Byte -> Power consumption keep data, resolution 0.0001 KWH (0.1W) // V*I*3600000ms = WH , 0.1W *10 = W
  2351. #else //FUNC_POWER_CONSUMPTION_BY_METER_IC
  2352. uint64_t PowerConsumptionCumulative_Total; // 8 Byte -> Power consumption keep data, resolution 0.0001 KWH (0.1W) // V*I*3600000ms = WH , 0.1W *10 = W
  2353. union
  2354. {
  2355. uint64_t PowerConsumptionCumulative_Lx[AC_PHASE_NUM_MAX]; //x: 0, 1, 2 => L1, L2, L3
  2356. struct
  2357. {
  2358. uint64_t PowerConsumptionCumulative_L1; // 8 Byte -> Power consumption keep data, resolution 0.0001 KWH (0.1W) // V*I*3600000ms = WH , 0.1W *10 = W
  2359. uint64_t PowerConsumptionCumulative_L2; // 8 Byte -> Power consumption keep data, resolution 0.0001 KWH (0.1W) // V*I*3600000ms = WH , 0.1W *10 = W
  2360. uint64_t PowerConsumptionCumulative_L3; // 8 Byte -> Power consumption keep data, resolution 0.0001 KWH (0.1W) // V*I*3600000ms = WH , 0.1W *10 = W
  2361. };
  2362. };
  2363. #endif //FUNC_POWER_CONSUMPTION_BY_METER_IC
  2364. #ifdef FUNC_METER_IC_ADE7858A
  2365. MeterIC_CaliVals m_MeterIC_CaliVals; //Meter IC - Calibration values
  2366. #ifdef FUNC_METER_IC_CALI_FLAG
  2367. MeterIC_CaliFlag m_MeterIC_CaliFlag; //Meter IC - Calibration flag
  2368. #endif //FUNC_METER_IC_CALI_FLAG
  2369. #endif //FUNC_METER_IC_ADE7858A
  2370. #ifdef FUNC_CSU_PUBLIC_KEY_OPERATION
  2371. #define CSU_PUBLIC_KEY_LEN (64)
  2372. uint8_t m_CsuPublicKey[CSU_PUBLIC_KEY_LEN]; //CSU set Public Key (ECDSA)
  2373. #endif
  2374. #ifdef FUNC_MODE_DEBUG_REC_RELAY_ON_TIMES
  2375. uint32_t m_ModeDebugRelayOnTimes; //For QE record RelayOn times
  2376. #endif
  2377. }item;
  2378. }data;
  2379. struct
  2380. {
  2381. uint8_t update:1; // Update ram content to external flash request
  2382. uint8_t clear:1; // Clear ram & external flash content request
  2383. uint8_t read:1; // Read external flash content to ram request
  2384. uint8_t backup:1; // Backup data to external flash request
  2385. uint8_t restore:1; // Restore backup data from external flash request
  2386. }op_bits;
  2387. }EVSE_Config;
  2388. struct
  2389. {
  2390. union
  2391. {
  2392. uint8_t value[W25Q16FV_BLOCK_SIZE];
  2393. struct
  2394. {
  2395. uint8_t isEnable:1; // Cold load pick up function is enable
  2396. DT DateTime; // Charging start date time info
  2397. uint8_t user[32]; // Start user account / card number / mac address
  2398. char PlugType[16]; // Plug type max 16 bytes in ASCII
  2399. uint32_t Duration; // Charging duration unit: ms
  2400. uint16_t powerSum; // Charging total power(KWH) resolution is 0.01
  2401. uint8_t startType; // 0: CP detect 1: RFID 2: BLE 3: Backend
  2402. }item;
  2403. }data;
  2404. struct
  2405. {
  2406. uint8_t update:1; // Update ram content to external flash request
  2407. uint8_t clear:1; // Clear ram & external flash content request
  2408. uint8_t read:1; // Read external flash content to ram request
  2409. uint8_t backup:1; // Backup data to external flash request
  2410. uint8_t restore:1; // Restore backup data from external flash request
  2411. }op_bits;
  2412. }coldLoadPickUp;
  2413. struct
  2414. {
  2415. union
  2416. {
  2417. uint8_t value[W25Q16FV_BLOCK_SIZE];
  2418. struct
  2419. {
  2420. uint8_t listType; // 0: RFID 1: BLE
  2421. uint8_t pin[6]; // Bonding pin code, max 6 digital in ASCII
  2422. uint8_t listID[32]; // list ID
  2423. uint8_t isReg; // PIN already registe flag 0: non-registe 1: registed
  2424. }item[W25Q16FV_BLOCK_SIZE>>6]; // Sector max record only 4096/64 = 64 records.
  2425. }data;
  2426. struct
  2427. {
  2428. uint8_t update:1; // Update ram content to external flash request
  2429. uint8_t clear:1; // Clear ram & external flash content request
  2430. uint8_t read:1; // Read external flash content to ram request
  2431. }op_bits;
  2432. }whiteList;
  2433. struct
  2434. {
  2435. union
  2436. {
  2437. uint8_t value[W25Q16FV_BLOCK_SIZE];
  2438. struct
  2439. {
  2440. DT DateTime; // Charging start date time info
  2441. uint32_t alarmCode; // Please refence code specification document
  2442. uint8_t mode; // EVSE last system mode before alarm occur
  2443. uint8_t isRecover; // 0: occur 1: recover
  2444. }item[W25Q16FV_BLOCK_SIZE>>4]; // Sector max record only 4096/16 = 256 records.
  2445. }data;
  2446. struct
  2447. {
  2448. uint8_t update:1; // Update ram content to external flash request
  2449. uint8_t clear:1; // Clear ram & external flash content request
  2450. uint8_t read:1; // Read external flash content to ram request
  2451. uint8_t backup:1; // Backup data to external flash request
  2452. uint8_t restore:1; // Restore backup data from external flash request
  2453. }op_bits;
  2454. }hisAlarm;
  2455. #ifdef FUNC_METER_IC_HISTORY
  2456. struct
  2457. {
  2458. union
  2459. {
  2460. uint8_t value[W25Q16FV_BLOCK_SIZE]; //4096
  2461. struct // Total (One Record) (16B)
  2462. {
  2463. DT DateTime; // Charging start date time info (8B)
  2464. int32_t m_CaliVal; // Calibration value (4B)
  2465. MeterIC_CaliValType m_CaliValType; // Caalibration value type (1B)
  2466. uint8_t m_Reserved[2]; // (2B)
  2467. uint8_t m_CheckSum; // (1B)
  2468. //}item[W25Q16FV_BLOCK_SIZE>>4]; // Sector max record only 4096/16 = 256 records.
  2469. }item[METER_IC_HISTORY_REC_NUM]; // Sector max record only 4096/16 = 256 records.
  2470. }data;
  2471. struct
  2472. {
  2473. uint8_t update:1; // Update ram content to external flash request
  2474. uint8_t clear:1; // Clear ram & external flash content request
  2475. uint8_t read:1; // Read external flash content to ram request
  2476. uint8_t backup:1; // Backup data to external flash request
  2477. uint8_t restore:1; // Restore backup data from external flash request
  2478. }op_bits;
  2479. }hisMeterIC;
  2480. #else //FUNC_METER_IC_HISTORY
  2481. struct
  2482. {
  2483. union
  2484. {
  2485. uint8_t value[W25Q16FV_BLOCK_SIZE];
  2486. struct
  2487. {
  2488. DT DateTime; // Charging start date time info
  2489. uint8_t user[32]; // Start user account / card number / mac address
  2490. char PlugType[12]; // Plug type max 16 bytes in ASCII
  2491. uint32_t Duration; // Charging duration unit: ms
  2492. //variable "stopStatusCode" should move to here for 4-byte align, prevent overflow! (Hao#20210614)
  2493. //uint32_t stopStatusCode; // Charging stop reason as status code
  2494. uint16_t powerSum; // Charging total power(KWH) resolution is 0.01
  2495. uint32_t stopStatusCode; // Charging stop reason as status code
  2496. uint8_t startType; // 0: CP detect 1: RFID 2: BLE 3: Backend
  2497. }item[W25Q16FV_BLOCK_SIZE>>6]; // Sector max record only 4096/64 = 64 records.
  2498. }data;
  2499. struct
  2500. {
  2501. uint8_t update:1; // Update ram content to external flash request
  2502. uint8_t clear:1; // Clear ram & external flash content request
  2503. uint8_t read:1; // Read external flash content to ram request
  2504. uint8_t backup:1; // Backup data to external flash request
  2505. uint8_t restore:1; // Restore backup data from external flash request
  2506. }op_bits;
  2507. }hisCharging;
  2508. #endif //FUNC_METER_IC_HISTORY
  2509. }Mem;
  2510. typedef struct BUTTON
  2511. {
  2512. uint32_t count;
  2513. uint8_t display;
  2514. }button;
  2515. typedef struct ALARMSECP
  2516. {
  2517. uint16_t Current_LEAK_AC;
  2518. #ifdef FUNC_NEW_RELAY_MONITOR
  2519. //DriveFault threshold formula: y = ax + b (V)
  2520. double Relay_LL_DriveFault_Slop; //a
  2521. double Relay_LL_DriveFault_Offs; //b
  2522. //Welding threshold formula: y = ax + b (V)
  2523. double Relay_LL_Welding_Slop; //a
  2524. double Relay_LL_Welding_Offs; //b
  2525. #endif
  2526. #ifdef MODIFY_OTP_SPEC
  2527. #ifdef FUNC_AX80_ADD_4_TEMP_SENEOR
  2528. uint8_t OT_G1_1; //protect
  2529. uint8_t OT_G1_2; //latch
  2530. uint8_t OT_G1_HYSTERESIS;
  2531. uint8_t OT_G2_1; //protect
  2532. uint8_t OT_G2_2; //latch
  2533. uint8_t OT_G2_HYSTERESIS;
  2534. #ifdef MODIFY_AX48_NACS_OTP_SPEC_20240522_STEVEN
  2535. uint8_t OT_G3_1; //protect
  2536. uint8_t OT_G3_2; //latch
  2537. uint8_t OT_G3_HYSTERESIS;
  2538. #endif
  2539. #ifdef MODIFY_AW48_OTP_SPEC_20240802_STEVEN
  2540. uint8_t OT_G4_1; //protect
  2541. uint8_t OT_G4_2; //latch
  2542. uint8_t OT_G4_HYSTERESIS;
  2543. #endif
  2544. #else //FUNC_AX80_ADD_4_TEMP_SENEOR
  2545. uint8_t OT_1; //protect
  2546. uint8_t OT_2; //latch
  2547. uint8_t OT_HYSTERESIS;
  2548. #endif //FUNC_AX80_ADD_4_TEMP_SENEOR
  2549. #endif //MODIFY_OTP_SPEC
  2550. }AlarmSpec;
  2551. /* USER CODE END EC */
  2552. /* Exported macro ------------------------------------------------------------*/
  2553. /* USER CODE BEGIN EM */
  2554. /* USER CODE END EM */
  2555. /* Exported functions prototypes ---------------------------------------------*/
  2556. void Error_Handler(void);
  2557. /* USER CODE BEGIN EFP */
  2558. extern volatile unsigned long ulHighFrequencyTimerTicks;
  2559. extern void SystemClock_Config(void);
  2560. //---------------------------------------------------------------
  2561. #ifdef FUNC_OUTP_TYPE_E
  2562. HTK_BOOL IsTypeEPlugIn(void);
  2563. #endif
  2564. #ifdef MODIFY_CPTASK_HEAD
  2565. void Proc_CpTaskHead(HTK_BOOL bCSU);
  2566. #endif
  2567. /* USER CODE END EFP */
  2568. /* Private defines -----------------------------------------------------------*/
  2569. #define OUT_MeterIC_Reset_Pin GPIO_PIN_2
  2570. #define OUT_MeterIC_Reset_GPIO_Port GPIOE
  2571. #define OUT_BLE_RESET_Pin GPIO_PIN_3
  2572. #define OUT_BLE_RESET_GPIO_Port GPIOE
  2573. #define IN_Tilt_ActOn_Pin GPIO_PIN_4
  2574. #define IN_Tilt_ActOn_GPIO_Port GPIOE
  2575. #define TIM9_CH1_PWM_LED_R_Pin GPIO_PIN_5
  2576. #define TIM9_CH1_PWM_LED_R_GPIO_Port GPIOE
  2577. #define TIM9_CH2_PWM_LED_G_Pin GPIO_PIN_6
  2578. #define TIM9_CH2_PWM_LED_G_GPIO_Port GPIOE
  2579. #define OUT_Tilt_DrvLeakage_Pin GPIO_PIN_13
  2580. #define OUT_Tilt_DrvLeakage_GPIO_Port GPIOC
  2581. #define I2C2_SDA_MeterIc_Pin GPIO_PIN_0
  2582. #define I2C2_SDA_MeterIc_GPIO_Port GPIOF
  2583. #define I2C2_SCL_MeterIc_Pin GPIO_PIN_1
  2584. #define I2C2_SCL_MeterIc_GPIO_Port GPIOF
  2585. #define IN_MEM_Erase_Pin GPIO_PIN_2
  2586. #define IN_MEM_Erase_GPIO_Port GPIOF
  2587. #define ADC3_IN9_Voltage_L1_Pin GPIO_PIN_3
  2588. #define ADC3_IN9_Voltage_L1_GPIO_Port GPIOF
  2589. #define ADC3_IN14_1998_Pin GPIO_PIN_4
  2590. #define ADC3_IN14_1998_GPIO_Port GPIOF
  2591. #define ADC3_IN15_Temp_Pin GPIO_PIN_5
  2592. #define ADC3_IN15_Temp_GPIO_Port GPIOF
  2593. #define ADC3_IN4_GMI_VL1_Pin GPIO_PIN_6
  2594. #define ADC3_IN4_GMI_VL1_GPIO_Port GPIOF
  2595. #define ADC3_IN5_Current_L2_Pin GPIO_PIN_7
  2596. #define ADC3_IN5_Current_L2_GPIO_Port GPIOF
  2597. #define ADC3_IN6_PP_GUN_DET_Pin GPIO_PIN_8
  2598. #define ADC3_IN6_PP_GUN_DET_GPIO_Port GPIOF
  2599. #define ADC3_IN7_Current_L1_Pin GPIO_PIN_9
  2600. #define ADC3_IN7_Current_L1_GPIO_Port GPIOF
  2601. #define ADC3_IN8_Voltage_L2_Pin GPIO_PIN_10
  2602. #define ADC3_IN8_Voltage_L2_GPIO_Port GPIOF
  2603. #define ADC3_IN10_Voltage_L3_Pin GPIO_PIN_0
  2604. #define ADC3_IN10_Voltage_L3_GPIO_Port GPIOC
  2605. #define ADC3_IN11_Current_L3_Pin GPIO_PIN_1
  2606. #define ADC3_IN11_Current_L3_GPIO_Port GPIOC
  2607. #define NoneUse_Pin28_GPIO_PC2_Pin GPIO_PIN_2
  2608. #define NoneUse_Pin28_GPIO_PC2_GPIO_Port GPIOC
  2609. #define OutpowerCtr_LED24V_Pin GPIO_PIN_3
  2610. #define OutpowerCtr_LED24V_GPIO_Port GPIOC
  2611. #define UART4_TX_meter_Pin GPIO_PIN_0
  2612. #define UART4_TX_meter_GPIO_Port GPIOA
  2613. #define UART4_RX_meter_Pin GPIO_PIN_1
  2614. #define UART4_RX_meter_GPIO_Port GPIOA
  2615. #define RS485_SW_Pin GPIO_PIN_2
  2616. #define RS485_SW_GPIO_Port GPIOA
  2617. #define BLE_SW_Pin GPIO_PIN_3
  2618. #define BLE_SW_GPIO_Port GPIOA
  2619. #define ADC1_IN4_CP_Pin GPIO_PIN_4
  2620. #define ADC1_IN4_CP_GPIO_Port GPIOA
  2621. #define ADC2_IN5_Welding_Pin GPIO_PIN_5
  2622. #define ADC2_IN5_Welding_GPIO_Port GPIOA
  2623. #define ADC2_IN6_GF_Pin GPIO_PIN_6
  2624. #define ADC2_IN6_GF_GPIO_Port GPIOA
  2625. #define NoneUse_Pin43_GPIO_PA7_Pin GPIO_PIN_7
  2626. #define NoneUse_Pin43_GPIO_PA7_GPIO_Port GPIOA
  2627. #define LED_R_Ctr_Pin GPIO_PIN_4
  2628. #define LED_R_Ctr_GPIO_Port GPIOC
  2629. #define LED_G_Ctr_Pin GPIO_PIN_5
  2630. #define LED_G_Ctr_GPIO_Port GPIOC
  2631. #define LED_B_Ctr_Pin GPIO_PIN_0
  2632. #define LED_B_Ctr_GPIO_Port GPIOB
  2633. #define M_LED_B1_Pin GPIO_PIN_1
  2634. #define M_LED_B1_GPIO_Port GPIOB
  2635. #define NoneUse_Pin48_GPIO_PB2_Pin GPIO_PIN_2
  2636. #define NoneUse_Pin48_GPIO_PB2_GPIO_Port GPIOB
  2637. #define OUT_LOCK_L_Pin GPIO_PIN_11
  2638. #define OUT_LOCK_L_GPIO_Port GPIOF
  2639. #define IN_LOCK_Status_Pin GPIO_PIN_12
  2640. #define IN_LOCK_Status_GPIO_Port GPIOF
  2641. #define OUT_UNLOCK_L_Pin GPIO_PIN_13
  2642. #define OUT_UNLOCK_L_GPIO_Port GPIOF
  2643. #define NoneUse_Pin54_GPIO_PF14_Pin GPIO_PIN_14
  2644. #define NoneUse_Pin54_GPIO_PF14_GPIO_Port GPIOF
  2645. #define NoneUse_Pin55_GPIO_PF15_Pin GPIO_PIN_15
  2646. #define NoneUse_Pin55_GPIO_PF15_GPIO_Port GPIOF
  2647. #define OUT_Tilt_Test_Pin GPIO_PIN_0
  2648. #define OUT_Tilt_Test_GPIO_Port GPIOG
  2649. #define IN_GridType_Select_Pin GPIO_PIN_1
  2650. #define IN_GridType_Select_GPIO_Port GPIOG
  2651. #define IN_Grid_Groundding_Pin GPIO_PIN_7
  2652. #define IN_Grid_Groundding_GPIO_Port GPIOE
  2653. #define IN_AC_Current_Set4_Pin GPIO_PIN_8
  2654. #define IN_AC_Current_Set4_GPIO_Port GPIOE
  2655. #define IN_AC_Current_Set3_Pin GPIO_PIN_9
  2656. #define IN_AC_Current_Set3_GPIO_Port GPIOE
  2657. #define IN_AC_Current_Set2_Pin GPIO_PIN_10
  2658. #define IN_AC_Current_Set2_GPIO_Port GPIOE
  2659. #define IN_AC_Current_Set1_Pin GPIO_PIN_11
  2660. #define IN_AC_Current_Set1_GPIO_Port GPIOE
  2661. #define NoneUse_Pin65_GPIO_PE12_Pin GPIO_PIN_12
  2662. #define NoneUse_Pin65_GPIO_PE12_GPIO_Port GPIOE
  2663. #define Meter_DIR_Pin GPIO_PIN_13
  2664. #define Meter_DIR_GPIO_Port GPIOE
  2665. #define TIM1_CH4_PWM_CP_Pin GPIO_PIN_14
  2666. #define TIM1_CH4_PWM_CP_GPIO_Port GPIOE
  2667. #define OUT_SPI1_CS_Pin GPIO_PIN_15
  2668. #define OUT_SPI1_CS_GPIO_Port GPIOE
  2669. #define NoneUse_Pin69_GPIO_PB10_Pin GPIO_PIN_10
  2670. #define NoneUse_Pin69_GPIO_PB10_GPIO_Port GPIOB
  2671. #define IN_Relay_b_Contact_Pin GPIO_PIN_11
  2672. #define IN_Relay_b_Contact_GPIO_Port GPIOB
  2673. #define IN_GFCI_Reset_Pin GPIO_PIN_12
  2674. #define IN_GFCI_Reset_GPIO_Port GPIOB
  2675. #define NoneUse_Pin74_GPIO_PB13_Pin GPIO_PIN_13
  2676. #define NoneUse_Pin74_GPIO_PB13_GPIO_Port GPIOB
  2677. #define TIM12_CH1_PWM_GFCI_Test_Pin GPIO_PIN_14
  2678. #define TIM12_CH1_PWM_GFCI_Test_GPIO_Port GPIOB
  2679. #define OUT_Leak_Test_Pin GPIO_PIN_15
  2680. #define OUT_Leak_Test_GPIO_Port GPIOB
  2681. #define OUT_Speaker_Pin GPIO_PIN_10
  2682. #define OUT_Speaker_GPIO_Port GPIOD
  2683. #define IN_Emergency_Pin GPIO_PIN_11
  2684. #define IN_Emergency_GPIO_Port GPIOD
  2685. #define ICP_TIM4_CH1_LEAK_PWM_Pin GPIO_PIN_12
  2686. #define ICP_TIM4_CH1_LEAK_PWM_GPIO_Port GPIOD
  2687. #define IN_BTN_ModeSw_Pin GPIO_PIN_13
  2688. #define IN_BTN_ModeSw_GPIO_Port GPIOD
  2689. #define IN_SocketE_Detect_Pin GPIO_PIN_14
  2690. #define IN_SocketE_Detect_GPIO_Port GPIOD
  2691. #define NoneUse_Pin86_GPIO_PD15_Pin GPIO_PIN_15
  2692. #define NoneUse_Pin86_GPIO_PD15_GPIO_Port GPIOD
  2693. #define IN_BLE_DTR_Pin GPIO_PIN_2
  2694. #define IN_BLE_DTR_GPIO_Port GPIOG
  2695. #define OUT_BLE_DSR_Pin GPIO_PIN_3
  2696. #define OUT_BLE_DSR_GPIO_Port GPIOG
  2697. #define OUT_SocketE_Drv_Pin GPIO_PIN_4
  2698. #define OUT_SocketE_Drv_GPIO_Port GPIOG
  2699. #define OUT_SocketE_Hold_Pin GPIO_PIN_5
  2700. #define OUT_SocketE_Hold_GPIO_Port GPIOG
  2701. #define IN_RFID_ICC_Pin GPIO_PIN_6
  2702. #define IN_RFID_ICC_GPIO_Port GPIOG
  2703. #define OUT_Meter_Power_Pin GPIO_PIN_7
  2704. #define OUT_Meter_Power_GPIO_Port GPIOG
  2705. #define OUT_RFID_Reset_Pin GPIO_PIN_8
  2706. #define OUT_RFID_Reset_GPIO_Port GPIOG
  2707. #define IN_Leak_Error_Pin GPIO_PIN_6
  2708. #define IN_Leak_Error_GPIO_Port GPIOC
  2709. #define IN_Leak_AC_Pin GPIO_PIN_7
  2710. #define IN_Leak_AC_GPIO_Port GPIOC
  2711. #define IN_Leak_DC_Pin GPIO_PIN_8
  2712. #define IN_Leak_DC_GPIO_Port GPIOC
  2713. #define OUT_RelayDrv_L1_Pin GPIO_PIN_9
  2714. #define OUT_RelayDrv_L1_GPIO_Port GPIOC
  2715. #define OUT_RelayHold_L1_Pin GPIO_PIN_8
  2716. #define OUT_RelayHold_L1_GPIO_Port GPIOA
  2717. #define OUT_RelayDrv_L2_Pin GPIO_PIN_9
  2718. #define OUT_RelayDrv_L2_GPIO_Port GPIOA
  2719. #define OUT_RelayHold_L2_Pin GPIO_PIN_10
  2720. #define OUT_RelayHold_L2_GPIO_Port GPIOA
  2721. #define IN_1998_Pin GPIO_PIN_15
  2722. #define IN_1998_GPIO_Port GPIOA
  2723. #define OUT_1998_Pin GPIO_PIN_10
  2724. #define OUT_1998_GPIO_Port GPIOC
  2725. #define OUT_Meter_485_RE_Pin GPIO_PIN_11
  2726. #define OUT_Meter_485_RE_GPIO_Port GPIOC
  2727. #define NoneUse_Pin114_GPIO_PD0_Pin GPIO_PIN_0
  2728. #define NoneUse_Pin114_GPIO_PD0_GPIO_Port GPIOD
  2729. #define NoneUse_Pin115_GPIO_PD1_Pin GPIO_PIN_1
  2730. #define NoneUse_Pin115_GPIO_PD1_GPIO_Port GPIOD
  2731. #define OUT_USB_DriveBus_Pin GPIO_PIN_3
  2732. #define OUT_USB_DriveBus_GPIO_Port GPIOD
  2733. #define OUT_Meter_485_DE_Pin GPIO_PIN_4
  2734. #define OUT_Meter_485_DE_GPIO_Port GPIOD
  2735. #define IN_CCS_Proximity_Pin GPIO_PIN_7
  2736. #define IN_CCS_Proximity_GPIO_Port GPIOD
  2737. #define IN_USB_OC_Pin GPIO_PIN_10
  2738. #define IN_USB_OC_GPIO_Port GPIOG
  2739. #define NoneUse_Pin126_GPIO_PG11_Pin GPIO_PIN_11
  2740. #define NoneUse_Pin126_GPIO_PG11_GPIO_Port GPIOG
  2741. #define OUT_TrigLeakage_Pin GPIO_PIN_12
  2742. #define OUT_TrigLeakage_GPIO_Port GPIOG
  2743. #define NoneUse_Pin128_GPIO_PG13_Pin GPIO_PIN_13
  2744. #define NoneUse_Pin128_GPIO_PG13_GPIO_Port GPIOG
  2745. #define LIN_PWM_SW_Pin GPIO_PIN_15
  2746. #define LIN_PWM_SW_GPIO_Port GPIOG
  2747. #define TIM10_CH1_PWM_LED_B_Pin GPIO_PIN_8
  2748. #define TIM10_CH1_PWM_LED_B_GPIO_Port GPIOB
  2749. #define M_LED_G1_Pin GPIO_PIN_9
  2750. #define M_LED_G1_GPIO_Port GPIOB
  2751. #define OUT_StateE_Pin GPIO_PIN_0
  2752. #define OUT_StateE_GPIO_Port GPIOE
  2753. #define OUT_LED_Breathe_Pin GPIO_PIN_1
  2754. #define OUT_LED_Breathe_GPIO_Port GPIOE
  2755. /* USER CODE BEGIN Private defines */
  2756. //---------------------------------------------------------------
  2757. #ifdef FUNC_OUTP_TYPE_E
  2758. typedef enum _EOutpMode
  2759. {
  2760. OUTPMODE_NONE = 0,
  2761. OUTPMODE_CPGUN,
  2762. OUTPMODE_TYPEE
  2763. }
  2764. EOutpMode;
  2765. #endif
  2766. #ifdef FUNC_GUN_LOCK
  2767. typedef enum _GL_MODE
  2768. {
  2769. GL_MODE_UNLOCK = 0,
  2770. GL_MODE_LOCK
  2771. }
  2772. GL_MODE;
  2773. #endif
  2774. #ifdef FUNC_GUN_LOCK_TRIG_MODE
  2775. typedef enum _GL_TRIG_MODE
  2776. {
  2777. GL_TRIG_MODE_UNKNOW = 0,
  2778. GL_TRIG_MODE_RELAY,
  2779. GL_TRIG_MODE_REQUEST
  2780. }
  2781. GL_TRIG_MODE;
  2782. #endif
  2783. //---------------------------------------------------------------
  2784. #ifdef FUNC_VOLATILE_OPERATION
  2785. typedef union _VolatileOperationCode
  2786. {
  2787. uint32_t m_Value;
  2788. struct
  2789. {
  2790. #ifdef VO_SIMU_CP
  2791. uint32_t m_EnableSimuCP: 1;
  2792. #endif
  2793. #ifdef VO_SIMU_PP
  2794. uint32_t m_EnableSimuPP: 1;
  2795. #endif
  2796. #ifdef VO_DISABLE_RELAY_WELDING
  2797. uint32_t m_DisableRelayWelding: 1; //0: Enabled; 1: Disabled //Simulate 3P with 1P on AX32 will cause DriveFault
  2798. #endif
  2799. #ifdef VO_BLOCK_CSU_LED_ACTION_CMD
  2800. uint32_t m_EnableBlockCsuLedCmd: 1;
  2801. #endif
  2802. #ifdef VO_SIMU_ACV
  2803. uint32_t m_EnableSimuACV: 1;
  2804. #endif
  2805. #ifdef VO_SIMU_NTC
  2806. uint32_t m_EnableSimuNTC: 1;
  2807. #endif
  2808. #ifdef VO_SIMU_ALARMCODE
  2809. uint32_t m_EnableSimuAlarmCode: 1;
  2810. #endif
  2811. #ifdef VO_SIMU_ACA
  2812. uint32_t m_EnableSimuACA: 1;
  2813. #endif
  2814. #ifdef VO_DISABLE_DETECT_TILT_SENSOR
  2815. uint32_t m_DisableDetectTiltSensor: 1;
  2816. #endif
  2817. //uint32_t m_Reserved: (32 - 1);
  2818. };
  2819. }
  2820. VolatileOperationCode, *PVolatileOperationCode;
  2821. #ifdef VO_SIMU_CP
  2822. typedef union _SimuCP
  2823. {
  2824. uint32_t m_Value;
  2825. struct
  2826. {
  2827. uint16_t m_VoltPos; //mV(+)
  2828. uint16_t m_VoltNeg; //mV(-)
  2829. };
  2830. }
  2831. SimuCP, *PSimuCP;
  2832. #endif //VO_SIMU_CP
  2833. typedef struct _SimuData
  2834. {
  2835. #ifdef VO_SIMU_CP
  2836. SimuCP m_CP;
  2837. #endif
  2838. #ifdef VO_SIMU_PP
  2839. uint16_t m_PPCurr; //A
  2840. #endif
  2841. #ifdef VO_SIMU_ACV
  2842. uint16_t m_AcvVolt; //0.01 V
  2843. #endif
  2844. #ifdef VO_SIMU_NTC
  2845. #ifdef FUNC_TEMP_SENSOR_WITH_NEG_VALUE
  2846. int16_t m_NtcTemp; //1 degree celsius
  2847. #else
  2848. uint8_t m_NtcTemp; //1 degree celsius
  2849. #endif
  2850. #endif //VO_SIMU_NTC
  2851. #ifdef VO_SIMU_ALARMCODE
  2852. uint32_t m_AlarmCode;
  2853. #endif
  2854. #ifdef VO_SIMU_ACA
  2855. uint16_t m_AcaCurr; //0.01 A
  2856. #endif
  2857. }
  2858. SimuData, *PSimuData;
  2859. #endif //FUNC_VOLATILE_OPERATION
  2860. //---------------------------------------------------------------
  2861. #ifdef FUNC_DETECT_PP
  2862. typedef struct _PPInfo
  2863. {
  2864. uint16_t m_PreCurr;
  2865. uint16_t m_CurCurr; //Current capability of the cable assembly
  2866. uint8_t m_StatusID; //used for PROTOCOL_MESSAGE_QUERY_EVSE_STATE
  2867. //Byte 11 PP status: 0x00(Unknow), 0x01(16A => 13A), 0x02(20A), 0x03(32A), 0x04(63A)
  2868. }
  2869. PPInfo, *PPPInfo;
  2870. #endif
  2871. //---------------------------------------------------------------
  2872. #ifdef FUNC_PTB_METER_WM3M4C
  2873. struct _WM3M4C;
  2874. typedef struct _WM3M4C WM3M4C, *PWM3M4C;
  2875. #endif
  2876. #ifdef RECODE_METER_PRO380
  2877. struct _PRO380;
  2878. typedef struct _PRO380 PRO380, *PPRO380;
  2879. #endif
  2880. #ifdef FUNC_TASK_MONITOR
  2881. typedef struct _TaskADCInfo
  2882. {
  2883. union
  2884. {
  2885. uint32_t m_ADCx_Counter[6];
  2886. struct
  2887. {
  2888. uint32_t m_ADC1_Counter[2];
  2889. uint32_t m_ADC2_Counter[2];
  2890. uint32_t m_ADC3_Counter[2];
  2891. };
  2892. };
  2893. uint8_t m_ContinueResetCounter;
  2894. uint16_t m_TotalResetCounter;
  2895. }
  2896. TaskADCInfo, *PTaskADCInfo;
  2897. typedef struct _TaskMonitor
  2898. {
  2899. TaskADCInfo m_ADC;
  2900. }
  2901. TaskMonitor, *PTaskMonitor;
  2902. #endif
  2903. //#ifdef FUNC_LIN_CP
  2904. struct _LinCP;
  2905. typedef struct _LinCP LinCP, *PLinCP;
  2906. //#endif
  2907. //#ifdef FUNC_EKM_OMNIMETER
  2908. struct _EKM_Omnimeter;
  2909. typedef struct _EKM_Omnimeter EKM_Omnimeter, *PEKM_Omnimeter;
  2910. //#endif
  2911. //---------------------------------------------------------------
  2912. extern struct EVSE
  2913. {
  2914. char Ver_FW[32]; // Firmware version max 32 byte in ASCII
  2915. char Ver_HW[32]; // Hardware version max 32 byte in ASCII
  2916. uint8_t Mode; // System mode
  2917. uint8_t Mode_Previous; // Previous system mode
  2918. uint8_t Mode_Before_Alarm; // System mode before enter alarm mode
  2919. uint32_t AC_DripisTure; // AC Drip is happen. 0:None 1:is happen AC Drip
  2920. uint32_t Alarm_Code; // System alarm code
  2921. uint32_t Alarm_LED; // System alarm LED
  2922. uint32_t Alarm_Code_Previous; // Previous system alarm code
  2923. uint8_t CP_State; // Control pilot state
  2924. uint16_t Voltage[3]; // EVSE input voltage resolution 0.01V
  2925. uint16_t Current[3]; // EVSE output current resolution 0.01A
  2926. uint16_t Leak_Current; // EVSE output leak current resolution mA
  2927. uint16_t Gmi_Voltage; // EVSE output Gmi_Voltage V
  2928. //uint8_t maxRatingCurrent; // EVSE Max rating current resolution 1A
  2929. uint16_t maxRatingCurrent; // EVSE Max rating current resolution 1A
  2930. uint16_t MaxChargingCurrent_Previous; // EVSE previous current limit resolution 1A
  2931. uint8_t Relay_Action; // EVSE output relay action
  2932. uint8_t Relay_isOperationCompleted; // EVSE output relay action is Operation completed
  2933. #ifdef FUNC_OUTP_TYPE_E
  2934. uint8_t SE_Relay_Action; // EVSE SocketE output relay action
  2935. uint8_t SE_Relay_isOperationCompleted; // EVSE SocketE output relay action is Operation completed
  2936. #endif
  2937. uint8_t is_RFIDKeepCharger; // in ocpp mode no RFID.reqStop . CP C->B->C , charger can be charge
  2938. float GmiMagn100K ; // Gmi alarm 100k VAC*Magnification
  2939. float GmiMagn50K ; // Gmi alarm 50k VAC*Magnification
  2940. Temperature temperature; // EVSE temperature resolution 1 degree
  2941. Coefficient coefficient; // ADC corrention coefficient
  2942. Cycle_Info cycle_info; // Charging cycle info
  2943. Rfid rfid; // RFID related info
  2944. Ble ble; // BLE related info
  2945. Wifi wifi; // WIFI related info
  2946. Am3352 am3352; // CSU info
  2947. Led led_R; // LED red info
  2948. Led led_G; // LED green info
  2949. Led led_B; // LED blue info
  2950. Led led_W; // LED white info
  2951. Led led_Breathe; // LED breathe info
  2952. Speaker speaker; // Speaker info
  2953. Mem memory; // External flash memory info
  2954. Counter counter; // Alarm delay counter
  2955. AlarmSpec alarm_spec; // Alarm spec data for modelname Decide , kaho 20200303 add
  2956. uint8_t Led_Mode; // set led mode >> idle , handshaking , charging , stop , alarm
  2957. uint8_t Led_temp_motion; // OFF : RFID led prompt OFF , ON :RFID LED prompt ON
  2958. uint8_t Led_Brightness[12];
  2959. uint16_t led_pwm_duty[4];
  2960. uint8_t GroundingSystem; // different grounding -> LL , LN
  2961. uint8_t GroundingDetect; // Ground Detect On-> 1, Off-> 0
  2962. uint8_t isSetStartTime; // 1 : need set Charger.cycle_info.startTimeTick , 0 : Useless Charger.cycle_info.startTimeTick
  2963. uint8_t CCID_Module_Type; // 0 : Cormex , 1 : VAC
  2964. uint8_t Test_LeakModuleisPass; // 0 : fail , 1 : success
  2965. uint8_t is_BLEKeepCharger; // in occp mode no ble.reqStop . CP C->B->C , charger can be charge
  2966. uint32_t Alarm_Code_before; // last time system alarm code
  2967. uint32_t OCP_Magnification; // EC satet use 1.25 , UL GB use 1.1
  2968. #ifndef RECODE_METER_PRO380
  2969. Meter meter ; // PRO380 meter use .
  2970. #ifdef MODIFY_METER_EXT_PRO380
  2971. MeterPRO380 m_MeterPRO380; // Meter PRO380-Mod
  2972. #endif
  2973. #endif //!RECODE_METER_PRO380
  2974. uint16_t isDebugEnable:1; // EVSE enable debug mode 0: Disable 1: Enable
  2975. uint16_t isAlarmSetPWM:1; // Alarm -> charger set pwm 0: PWM is never output 1: PWM is output
  2976. uint16_t isRotarySwitchError:1; // Rotary Switch set 9~E is Error 0: Error 1: OK
  2977. uint16_t isTestLeakModule:1; // 0: don't test leak module , 1: do test leak module
  2978. uint16_t isDebugModeCPtest:1; // in debug mode use CP Simulator simulate CP -> 0: CP test off , 1: CP tset on
  2979. uint16_t istoHandShakeMode:1; // for rfid MODE -> MODE_IDLE to MODE_HANDSHAKE flag
  2980. uint16_t isCP_in_B:1; // CP status had been in B mode
  2981. uint16_t CSUisRequest:1 ; // 1 : CSU is Request , 0 : Request No Request // when Charger.am3352.isRequestOn 1->0 PWM pull 100%
  2982. uint16_t ModelReadisOK:1 ; // 0 : NG , 1 : OK
  2983. uint16_t CSUisReady:1; // 0 : Init not ready , 1 : Init ready
  2984. uint16_t isOnSocketE:1; // 0 : Not run in socket-E mode, 1 : Run in socket-E mode
  2985. #ifdef FUNC_AUTO_IGNORE_AC_PHASE
  2986. //uint16_t m_bCheckPhaseL23:1; // 0 : 1 phase model; 1: 3 phase model
  2987. uint16_t m_b3PhaseModel:1; // 0 : 1 phase model; 1: 3 phase model
  2988. #ifdef FUNC_AX32_USE_AS_1P_MODEL
  2989. uint16_t m_b3PhaseModelButUse1PhaseOnly:1;
  2990. #endif
  2991. #endif //FUNC_AUTO_IGNORE_AC_PHASE
  2992. #ifdef FUNC_AUTO_USE_EXT_METER
  2993. uint16_t m_bUseExtMeter_PRO380:1; // 0: Not use external meter; 1: use external meter (PRO380)
  2994. #ifdef FUNC_PTB_METER_WM3M4C
  2995. uint16_t m_bUseExtMeter_WM3M4C:1; // 0: Not use external meter; 1: use external meter (WM3M4C)
  2996. #endif
  2997. #ifdef FUNC_EKM_OMNIMETER
  2998. uint16_t m_bUseExtMeter_OMNIMETER:1; // 0: Not use external meter; 1: use external meter (OMNIMETER)
  2999. #endif
  3000. #endif //FUNC_AUTO_USE_EXT_METER
  3001. #ifdef FUNC_DETECT_PP
  3002. uint16_t m_bDetectPP:1; // 0: Not Detect; 1: Detect
  3003. #endif
  3004. #ifdef FUNC_DETECT_PP_NACS
  3005. uint16_t m_bDetectPP_NACS:1; // 0: Not Detect; 1: Detect
  3006. #endif
  3007. #ifdef FUNC_GUN_LOCK
  3008. uint16_t m_bUseGunLock:1; // 0: without GunLock function; 1: with GunLock function
  3009. #endif
  3010. #ifdef FUNC_RS485_SLAVE
  3011. uint16_t m_bRS485SlaveForDCModel:1; // 0: Not for DC Model; 1: for DC Model
  3012. #endif
  3013. #ifdef FUNC_FORCE_RUN_CSU_MODE_WITH_DC_MODELNAME
  3014. uint16_t m_bModelNameDC:1; //0: Not DC ModelName; 1: DC ModelName
  3015. uint16_t m_bModelNameDCReadOK:1;
  3016. #endif
  3017. #ifdef MODIFY_OCP_PROC_WITH_MODELNAME_IDX_3_EURO_SPEC
  3018. uint16_t m_bModelNameWithEuroSpecOCP:1;
  3019. #endif
  3020. #ifdef FUNC_OUTP_TYPE_E
  3021. uint16_t m_bEnableTypeE:1; // 0: Disable Type E; 1: Enable Type E
  3022. #endif
  3023. //#ifdef NEW_CP_SPEC
  3024. uint16_t m_bCpDetectModuleInitOK: 1; //0: CpDatectModule not init; 1: CpDatectModule init OK
  3025. //#endif
  3026. #ifdef FUNC_CHECK_MODELNAME_AX_PRIFIX
  3027. uint16_t m_bModelNameAX: 1; //0: ModelName is not "AX~"; 1: ModelName is "AX~";
  3028. #endif
  3029. #ifdef FUNC_AX80
  3030. uint16_t m_bModelNameAX80_1P: 1; //1P 0: ModelName is not "AX??191"; 1: ModelName is "AX??191";
  3031. uint16_t m_bModelNameAX48_1P: 1; //1P
  3032. uint16_t m_bModelNameAX32_3P: 1; //3P
  3033. #ifdef FUNC_AXSJ_USE_NEW_NACS_PCB
  3034. uint16_t m_bModelNameAXSJ;
  3035. uint16_t m_bModelNameAXSJ_AX48_NACS_1P: 1; //AXSJ960001 (AX48 NACS PCB)
  3036. uint16_t m_bModelNameAXSJ_AX80_NACS_1P: 1; //AXSJxxxxxx (AX80 NACS PCB) reserved
  3037. #endif
  3038. #ifdef FUNC_AX48_NACS
  3039. uint16_t m_bModelNameAX48_NACS_1P: 1; //1P
  3040. #endif
  3041. #ifdef FUNC_AX80_NACS
  3042. uint16_t m_bModelNameAX80_NACS_1P: 1; //1P
  3043. #endif
  3044. #ifdef FUNC_AW48
  3045. uint16_t m_bModelNameAW48_1P: 1; //1P
  3046. #endif
  3047. #endif //FUNC_AX80
  3048. #ifdef FUNC_AT32
  3049. uint16_t m_bModelNameAT: 1; //0: ModelName is not "AT~"; 1: ModelName is "AT~";
  3050. uint16_t m_bModelNameAT32_3P: 1; //3P
  3051. #endif
  3052. #ifdef FUNC_METER_IC_CHECK_WHETHER_DEFAULT_CALI_VAL
  3053. uint16_t m_bMeterIC_CaliValIsDefault: 1; //0: Not default values; 1: Default values
  3054. #endif
  3055. #ifdef FUNC_IDLE_UNTIL_READ_ALL_MEM
  3056. uint16_t m_bReadAllMemory: 1; //0: Not read all memory data; 1: Read all memory data
  3057. #endif
  3058. #ifdef FUNC_IDLE_UNTIL_INIT_METER_IC
  3059. uint16_t m_bInitMeterIC: 1;
  3060. #endif
  3061. #ifdef FUNC_ROTARY_SLAVE_MODE
  3062. uint16_t m_bRotarySlaveMode: 1; //0: Not Rotary slave mode; 1: Rotary slave mode
  3063. #endif
  3064. #ifdef FUNC_RULE_GB_202108
  3065. uint16_t m_bSafetyRegulationGB:1;
  3066. #endif
  3067. #ifdef FUNC_BLOCK_CSU_CONFIG_CP_PWM_DUTY
  3068. uint16_t m_bBlockCsuCpPwmDuty: 1;
  3069. #endif
  3070. #ifdef FUNC_BLOCK_CSU_CMD_SET_DUTY_WHEN_ALARM_CP_F_STATE
  3071. uint16_t m_bBlockCsuCpPwmDutyWhenAlarmCpF: 1;
  3072. #endif
  3073. #ifdef FUNC_GUN_LOCK
  3074. uint16_t m_bTrigGunLock: 1;
  3075. uint16_t m_bTrigGunUnlock: 1;
  3076. #endif
  3077. #ifdef FUNC_AX32_TRIG_LEAKAGE
  3078. uint16_t m_bTrigLeakage: 1;
  3079. #endif
  3080. #ifdef FUNC_AX80_ADD_TILT_SENSOR
  3081. uint16_t m_bTILT_TrigLeakage: 1;
  3082. #endif
  3083. #ifdef FUNC_ADD_TILT_SENSOR_MODEL
  3084. uint16_t m_bUseTiltSensor: 1;
  3085. #ifdef FUNC_DISABLE_TILT_SENSOR_FOR_TEST
  3086. uint16_t m_bDisableTiltSensorForTest: 1;
  3087. #endif
  3088. #endif //FUNC_ADD_TILT_SENSOR_MODEL
  3089. #ifdef FUNC_USE_RELAY_B_CONTACT
  3090. uint16_t m_bUseRelayBContact: 1;
  3091. #endif
  3092. #ifdef FUNC_CCS
  3093. uint16_t m_bRunCCS: 1;
  3094. uint16_t m_bGotCsuCpDutyCmd: 1; //Rx 6~48A or 5%(m_bRunCCS = 1)
  3095. #ifdef MODIFY_GOT_CSU_DUTY_CMD_PROCESS
  3096. uint16_t m_bPassGotCsuCpDutyCmd: 1;
  3097. #endif
  3098. #endif //FUNC_CCS
  3099. #ifdef TEST_FOR_ENERGY_STAR
  3100. uint16_t m_bLedSleepModeForceMinBrightness: 1;
  3101. #endif
  3102. #ifdef FUNC_TMP100
  3103. uint16_t m_bUseTMP100: 1;
  3104. #endif
  3105. #ifdef FUNC_DEBUG_CONSOLE
  3106. uint16_t m_bDisableDebugInfo: 1;
  3107. #endif
  3108. #ifdef FUNC_LIN_CP
  3109. uint16_t m_bUseLinCP: 1;
  3110. #endif
  3111. #ifdef FUNC_CSU_SIGN_IN_VERIFY
  3112. uint16_t m_bCsuSignInMustVerify: 1;
  3113. uint16_t m_bCsuSignInVerifyOK: 1;
  3114. uint16_t m_bRunCsuSignInVerify: 1;
  3115. #endif
  3116. #ifdef FUNC_CSU_UPGRADE_FW_VERIFY
  3117. uint16_t m_bCsuUpgradeFwMustVerify: 1;
  3118. uint16_t m_bCsuUpgradeFwVerifyOK: 1;
  3119. uint16_t m_bRunCsuUpgradeFwVerify: 1;
  3120. #endif
  3121. #ifdef FUNC_METER_IC_ADE7858A
  3122. MeterIC_MeasVals m_MeterIC_MeasVals; //Meter IC - Measurement values
  3123. MeterIC_TrigWriteCaliVals m_MeterIC_TrigWriteCaliVals; //Meter IC - Trigger to write calibration values
  3124. #ifdef FUNC_METER_IC_COMM_ALARM
  3125. uint32_t m_MeterIC_LastUpdateTick;
  3126. #endif
  3127. #ifdef FUNC_TMP100
  3128. float m_TMP100_cTemp;
  3129. uint32_t m_TMP100_LastUpdateTick;
  3130. #endif
  3131. #ifdef FUNC_METER_IC_READ_PHASE_ANGLE
  3132. MeterIC_ExtraInfo m_MeterIcEx;
  3133. #endif
  3134. #endif //FUNC_METER_IC_ADE7858A
  3135. #ifdef FUNC_RS485_SLAVE
  3136. uint8_t m_RS485SlaveAddr;
  3137. #endif
  3138. #ifdef FUNC_DETECT_PP
  3139. PPInfo m_PPInfo;
  3140. #endif
  3141. #ifdef FUNC_OUTP_TYPE_E
  3142. EOutpMode m_OutpMode;
  3143. #endif
  3144. #ifdef FUNC_VOLATILE_OPERATION
  3145. VolatileOperationCode m_VOCode;
  3146. SimuData m_SimuData;
  3147. #endif
  3148. #ifdef FUNC_CURRENT_CP_PWM_DATA
  3149. uint16_t m_CP_CurPWM;
  3150. #endif
  3151. #ifdef FUNC_OCP_WITH_PP
  3152. uint16_t m_OCP_CurMaxCurr; //A
  3153. uint16_t m_OCP_BegThreshold; //Occur: 0.01A
  3154. uint16_t m_OCP_EndThreshold; //Recover: 0.01A
  3155. #endif
  3156. #ifdef MODIFY_AC_EVSE_STATUS_MAX_CHARGING_CURRENT_VARIABLE
  3157. uint16_t AC_MaxChargingCurrentOrDuty; //AC Only
  3158. #endif
  3159. #ifdef FUNC_AX32_TRIG_LEAKAGE
  3160. uint32_t AlarmRelayWeldingOccurTick;
  3161. #endif
  3162. #ifdef FUNC_AX80_ADD_TILT_SENSOR
  3163. uint32_t AlarmTiltSensorOccurTick;
  3164. #endif
  3165. #ifdef FUNC_PTB_METER_WM3M4C
  3166. PWM3M4C m_pWM3M4C;
  3167. #endif
  3168. #ifdef RECODE_METER_PRO380
  3169. PPRO380 m_pPRO380;
  3170. #endif
  3171. #ifdef FUNC_GET_TRIP_TIME
  3172. uint32_t m_TripBeg;
  3173. uint32_t m_TripEnd;
  3174. #endif
  3175. #ifdef FUNC_AUTO_MODIFY_CCID_MODULE
  3176. HTK_BOOL m_bCCID_MustModify;
  3177. uint8_t m_CCID_ModuleTestOK;
  3178. #endif
  3179. #ifdef MODIFY_GUN_LOCK_SPEC_TIMES_TO_ALARM
  3180. uint16_t m_GunLock_Counter;
  3181. uint16_t m_GunUnlock_Counter;
  3182. #endif
  3183. #ifdef FUNC_TASK_MONITOR
  3184. TaskMonitor m_TaskMonitor;
  3185. #endif
  3186. #ifdef FUNC_RELAY_OFF_WHEN_CSU_CMD_TIMEOUT
  3187. u32 m_CSU_RxTick;
  3188. #endif
  3189. #ifdef FUNC_BOOT_TICK
  3190. uint32_t m_BootTick;
  3191. #endif
  3192. #ifdef FUNC_LIN_CP
  3193. PLinCP m_pLinCP;
  3194. #endif
  3195. #ifdef FUNC_EKM_OMNIMETER
  3196. PEKM_Omnimeter m_pEKM_Omnimeter;
  3197. #endif
  3198. #ifdef FUNC_WARNING_CODE
  3199. uint32_t Warning_Code; // System warning code
  3200. #endif
  3201. #ifdef FUNC_AW48_NET_LED
  3202. Led LedNet_G;
  3203. Led LedNet_B;
  3204. #endif
  3205. #ifdef RELAY_COMMON_GPIO
  3206. u8 m_RelayMode; //0: AX48, AX32, AT32; 1: AW48
  3207. #endif
  3208. #ifdef FUNC_VERIFY_TASK
  3209. #ifdef FUNC_CSU_VERIFY_USE_ECDSA
  3210. #define VERIFY_TASK_RXBUF_LEN (64 * 3)
  3211. #else
  3212. #define VERIFY_TASK_RXBUF_LEN (64)
  3213. #endif
  3214. u8 m_VerifyTaskRxBuf[VERIFY_TASK_RXBUF_LEN];
  3215. u8 m_VerifyTaskRxBufDataLen;
  3216. #endif
  3217. #ifdef FUNC_RESET_DATA_AFTER_WRITE_NEW_MODELNAME
  3218. u8 m_bTrigToClearAlarmCode;
  3219. u8 m_bTrigToRefreshMeterIcCaliVal;
  3220. #endif
  3221. #ifdef FUNC_GUN_LOCK_TRIG_MODE
  3222. GL_TRIG_MODE m_GunLockTrigMode;
  3223. u32 m_GunLockRequestMode_LockDelayTick;
  3224. #endif
  3225. }Charger;
  3226. #ifdef FUNC_SYSTEM_KEEP_INFO
  3227. typedef struct _SystemKeepInfo
  3228. {
  3229. union
  3230. {
  3231. u8 m_Buf[16];
  3232. struct
  3233. {
  3234. u8 m_BootCount;
  3235. u8 m_CsuIsRequestOn; //Charger.am3352.isRequestOn
  3236. u16 m_CpPwmVal; //user_pwm_setvalue(PWM_CH_CP
  3237. };
  3238. };
  3239. u32 m_CRC32;
  3240. HTK_BOOL m_bUsed;
  3241. }
  3242. SystemKeepInfo, *PSystemKeepInfo;
  3243. __no_init __root extern SystemKeepInfo g_SystemKeepInfo;
  3244. void SystemKeepInfo_Display(PSystemKeepInfo p);
  3245. void SystemKeepInfo_Update(PSystemKeepInfo p);
  3246. HTK_BOOL SystemKeepInfo_Check(PSystemKeepInfo p);
  3247. #endif //FUNC_SYSTEM_KEEP_INFO
  3248. //---------------------------------------------------------------
  3249. #ifndef DISABLE_CCID_PROTECT
  3250. #define CCID_PROTECT
  3251. #endif
  3252. #ifndef DISABLE_OTP_PROTECT
  3253. #define OTP_PROTECT
  3254. #endif
  3255. #define CP_ALARM_PROTECT
  3256. #ifndef DISABLE_GROUND_FAULT_PROTECT
  3257. #define GROUND_FAULT_PROTECT
  3258. #endif
  3259. #define EMC_BUTTON_PROTECT
  3260. #ifndef DISABLE_RELAY_WELDING_PROTECT
  3261. #define RELAY_WELDING_PROTECT
  3262. #endif
  3263. #ifndef DISABLE_OVP_PROTECT
  3264. #define OVP_PROTECT
  3265. #endif
  3266. #ifndef DISABLE_UVP_PROTECT
  3267. #define UVP_PROTECT
  3268. #endif
  3269. #ifndef DISABLE_OCP_PROTECT
  3270. #define OCP_PROTECT
  3271. #endif
  3272. #define HANDSHAKE_PROTECT
  3273. #define ROTATE_SWITCH_CHECK
  3274. #define COLD_LOAD_PICKUP
  3275. #define METER_TIMEOUT_CHECK
  3276. //---------------------------------------------------------------
  3277. #ifdef FUNC_AW48_EXT_LED
  3278. #define EXTLED_SET_POWER(bON) HAL_GPIO_WritePin(OutpowerCtr_LED24V_GPIO_Port, OutpowerCtr_LED24V_Pin, (bON) ? GPIO_PIN_SET : GPIO_PIN_RESET)
  3279. #define EXTLED_SET_R(bON) HAL_GPIO_WritePin(LED_R_Ctr_GPIO_Port, LED_R_Ctr_Pin, (bON) ? GPIO_PIN_SET : GPIO_PIN_RESET)
  3280. #define EXTLED_SET_G(bON) HAL_GPIO_WritePin(LED_G_Ctr_GPIO_Port, LED_G_Ctr_Pin, (bON) ? GPIO_PIN_SET : GPIO_PIN_RESET)
  3281. #define EXTLED_SET_B(bON) HAL_GPIO_WritePin(LED_B_Ctr_GPIO_Port, LED_B_Ctr_Pin, (bON) ? GPIO_PIN_SET : GPIO_PIN_RESET)
  3282. #define EXTLED_SET_ALL(bON) EXTLED_SET_R(bON); EXTLED_SET_G(bON); EXTLED_SET_B(bON)
  3283. #endif
  3284. #ifdef FUNC_AW48_NET_LED
  3285. #define NETLED_SET_G(bON) HAL_GPIO_WritePin(M_LED_G1_GPIO_Port, M_LED_G1_Pin, (bON) ? GPIO_PIN_SET : GPIO_PIN_RESET)
  3286. #define NETLED_SET_B(bON) HAL_GPIO_WritePin(M_LED_B1_GPIO_Port, M_LED_B1_Pin, (bON) ? GPIO_PIN_SET : GPIO_PIN_RESET)
  3287. #define NETLED_SET_ALL(bON) NETLED_SET_G(bON); NETLED_SET_B(bON)
  3288. #endif
  3289. #define IS_CSU_MOUNTED (HAL_GPIO_ReadPin(IN_CCS_Proximity_GPIO_Port, IN_CCS_Proximity_Pin) == GPIO_PIN_RESET)
  3290. //---------------------------------------------------------------
  3291. #ifdef RELAY_COMMON_GPIO
  3292. //AX48, AX32, AT32:
  3293. //RELAY_MODE = 0
  3294. #define M0_RelayDrv_L1_Pin GPIO_PIN_9
  3295. #define M0_RelayDrv_L1_GPIO_Port GPIOC
  3296. #define M0_RelayHold_L1_Pin GPIO_PIN_8
  3297. #define M0_RelayHold_L1_GPIO_Port GPIOA
  3298. #define M0_RelayDrv_L2_Pin GPIO_PIN_9
  3299. #define M0_RelayDrv_L2_GPIO_Port GPIOA
  3300. #define M0_RelayHold_L2_Pin GPIO_PIN_10
  3301. #define M0_RelayHold_L2_GPIO_Port GPIOA
  3302. //AW48:
  3303. //RELAY_MODE = 1
  3304. #define M1_RelayDrv_L1_Pin GPIO_PIN_10
  3305. #define M1_RelayDrv_L1_GPIO_Port GPIOA
  3306. #define M1_RelayHold_L1_Pin GPIO_PIN_9
  3307. #define M1_RelayHold_L1_GPIO_Port GPIOA
  3308. #define M1_RelayDrv_L2_Pin GPIO_PIN_8
  3309. #define M1_RelayDrv_L2_GPIO_Port GPIOA
  3310. #define M1_RelayHold_L2_Pin GPIO_PIN_9
  3311. #define M1_RelayHold_L2_GPIO_Port GPIOC
  3312. #define RELAY_MODE (Charger.m_RelayMode)
  3313. #define M0_RELAY1_SET_DRIV(bON) HAL_GPIO_WritePin(M0_RelayDrv_L1_GPIO_Port, M0_RelayDrv_L1_Pin, (bON) ? GPIO_PIN_SET : GPIO_PIN_RESET)
  3314. #define M0_RELAY1_SET_HOLD(bON) HAL_GPIO_WritePin(M0_RelayHold_L1_GPIO_Port, M0_RelayHold_L1_Pin, (bON) ? GPIO_PIN_SET : GPIO_PIN_RESET)
  3315. #define M0_RELAY2_SET_DRIV(bON) HAL_GPIO_WritePin(M0_RelayDrv_L2_GPIO_Port, M0_RelayDrv_L2_Pin, (bON) ? GPIO_PIN_SET : GPIO_PIN_RESET)
  3316. #define M0_RELAY2_SET_HOLD(bON) HAL_GPIO_WritePin(M0_RelayHold_L2_GPIO_Port, M0_RelayHold_L2_Pin, (bON) ? GPIO_PIN_SET : GPIO_PIN_RESET)
  3317. #define M1_RELAY1_SET_DRIV(bON) HAL_GPIO_WritePin(M1_RelayDrv_L1_GPIO_Port, M1_RelayDrv_L1_Pin, (bON) ? GPIO_PIN_SET : GPIO_PIN_RESET)
  3318. #define M1_RELAY1_SET_HOLD(bON) HAL_GPIO_WritePin(M1_RelayHold_L1_GPIO_Port, M1_RelayHold_L1_Pin, (bON) ? GPIO_PIN_SET : GPIO_PIN_RESET)
  3319. #define M1_RELAY2_SET_DRIV(bON) HAL_GPIO_WritePin(M1_RelayDrv_L2_GPIO_Port, M1_RelayDrv_L2_Pin, (bON) ? GPIO_PIN_SET : GPIO_PIN_RESET)
  3320. #define M1_RELAY2_SET_HOLD(bON) HAL_GPIO_WritePin(M1_RelayHold_L2_GPIO_Port, M1_RelayHold_L2_Pin, (bON) ? GPIO_PIN_SET : GPIO_PIN_RESET)
  3321. #define RELAY1_SET_DRIV(bON) ((RELAY_MODE) == 1 ? M1_RELAY1_SET_DRIV(bON) : M0_RELAY1_SET_DRIV(bON))
  3322. #define RELAY1_SET_HOLD(bON) ((RELAY_MODE) == 1 ? M1_RELAY1_SET_HOLD(bON) : M0_RELAY1_SET_HOLD(bON))
  3323. #define RELAY2_SET_DRIV(bON) ((RELAY_MODE) == 1 ? M1_RELAY2_SET_DRIV(bON) : M0_RELAY2_SET_DRIV(bON))
  3324. #define RELAY2_SET_HOLD(bON) ((RELAY_MODE) == 1 ? M1_RELAY2_SET_HOLD(bON) : M0_RELAY2_SET_HOLD(bON))
  3325. #define M0_RELAY1_GET_DRIV HAL_GPIO_ReadPin(M0_RelayDrv_L1_GPIO_Port, M0_RelayDrv_L1_Pin)
  3326. #define M0_RELAY1_GET_HOLD HAL_GPIO_ReadPin(M0_RelayHold_L1_GPIO_Port, M0_RelayHold_L1_Pin)
  3327. #define M0_RELAY2_GET_DRIV HAL_GPIO_ReadPin(M0_RelayDrv_L2_GPIO_Port, M0_RelayDrv_L2_Pin)
  3328. #define M0_RELAY2_GET_HOLD HAL_GPIO_ReadPin(M0_RelayHold_L2_GPIO_Port, M0_RelayHold_L2_Pin)
  3329. #define M1_RELAY1_GET_DRIV HAL_GPIO_ReadPin(M1_RelayDrv_L1_GPIO_Port, M1_RelayDrv_L1_Pin)
  3330. #define M1_RELAY1_GET_HOLD HAL_GPIO_ReadPin(M1_RelayHold_L1_GPIO_Port, M1_RelayHold_L1_Pin)
  3331. #define M1_RELAY2_GET_DRIV HAL_GPIO_ReadPin(M1_RelayDrv_L2_GPIO_Port, M1_RelayDrv_L2_Pin)
  3332. #define M1_RELAY2_GET_HOLD HAL_GPIO_ReadPin(M1_RelayHold_L2_GPIO_Port, M1_RelayHold_L2_Pin)
  3333. #define RELAY1_GET_DRIV ((RELAY_MODE) == 1 ? M1_RELAY1_GET_DRIV : M0_RELAY1_GET_DRIV)
  3334. #define RELAY1_GET_HOLD ((RELAY_MODE) == 1 ? M1_RELAY1_GET_HOLD : M0_RELAY1_GET_HOLD)
  3335. #define RELAY2_GET_DRIV ((RELAY_MODE) == 1 ? M1_RELAY2_GET_DRIV : M0_RELAY2_GET_DRIV)
  3336. #define RELAY2_GET_HOLD ((RELAY_MODE) == 1 ? M1_RELAY2_GET_HOLD : M0_RELAY2_GET_HOLD)
  3337. #endif //RELAY_COMMON_GPIO
  3338. //---------------------------------------------------------------
  3339. #define RELAY_SE_SET_DRIV(bON) HAL_GPIO_WritePin(OUT_SocketE_Drv_GPIO_Port, OUT_SocketE_Drv_Pin, (bON) ? GPIO_PIN_SET : GPIO_PIN_RESET)
  3340. #define RELAY_SE_SET_HOLD(bON) HAL_GPIO_WritePin(OUT_SocketE_Hold_GPIO_Port, OUT_SocketE_Hold_Pin, (bON) ? GPIO_PIN_SET : GPIO_PIN_RESET)
  3341. #define RELAY_SE_GET_DRIV HAL_GPIO_ReadPin(OUT_SocketE_Drv_GPIO_Port, OUT_SocketE_Drv_Pin)
  3342. #define RELAY_SE_GET_HOLD HAL_GPIO_ReadPin(OUT_SocketE_Hold_GPIO_Port, OUT_SocketE_Hold_Pin)
  3343. //---------------------------------------------------------------
  3344. /* USER CODE END Private defines */
  3345. #ifdef __cplusplus
  3346. }
  3347. #endif
  3348. #endif /* __MAIN_H */
  3349. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/