diff --git a/.gitmodules b/.gitmodules
index 4ce6195..e1f7f6e 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,9 +1,9 @@
-[submodule "zaf_protocol"]
- path = zaf_protocol
- url = zwsd@192.168.1.3:p_camera_light_source_timing_controller/zaf_protocol.git
[submodule "zsdk"]
path = zsdk
url = zwsd@192.168.1.3:p_transmit_disinfection_v2/disinfection_stm32_sdk.git
[submodule "iflytop_canbus_protocol"]
path = iflytop_canbus_protocol
url = zwsd@192.168.1.3:p_transmit_disinfection_v2/disinfection_iflytop_can_protocol.git
+[submodule "transmit_disinfection_protocol_v1"]
+ path = transmit_disinfection_protocol_v1
+ url = zwsd@192.168.1.3:p_transmit_disinfection/transmit_disinfection_protocol_v1.git
\ No newline at end of file
diff --git a/.metadata/.ide.log b/.metadata/.ide.log
new file mode 100644
index 0000000..41aa57a
--- /dev/null
+++ b/.metadata/.ide.log
@@ -0,0 +1,201 @@
+2024-05-15 10:48:10,095 [INFO] Activator:176 -
+
+
+2024-05-15 10:48:10,096 [INFO] Activator:177 - !SESSION log4j initialized
+2024-05-15 10:48:14,194 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT]
+2024-05-15 10:54:03,245 [INFO] ApplicationProperties:184 - Using Application install path: C:\ST\STM32CubeIDE_1.15.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.11.0.202403141607
+2024-05-15 10:54:03,258 [INFO] DbMcusXml:78 - Set database path to: C:\ST\STM32CubeIDE_1.15.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.11.0.202403141607\\db\/mcu/
+2024-05-15 10:54:03,258 [INFO] ApiDb:274 - Set plugin database path to: C:\ST\STM32CubeIDE_1.15.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.11.0.202403141607\\db\/plugins/boardmanager/
+2024-05-15 10:54:03,270 [WARN] ApiDb:259 - Overriding images path with different value: => C:\ST\STM32CubeIDE_1.15.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.11.0.202403141607\\db\/plugins/mcufinder/images/
+2024-05-15 10:54:03,277 [INFO] ApiDb:250 - Set database path to: C:\Users\h_zha\.stmcufinder\plugins\mcufinder//mcu/
+2024-05-15 10:54:03,278 [INFO] DbMcusAds:125 - Set database path to: C:\Users\h_zha\.stmcufinder\plugins\mcufinder//mcu/
+2024-05-15 10:54:03,288 [INFO] CrossReferenceDbSqlite:203 - Set database path to: C:\Users\h_zha\.stmcufinder\plugins\mcufinder//mcu/cs/
+2024-05-15 10:54:03,348 [INFO] RulesReader:64 - Compatibility file has been processed (297 Rules)
+2024-05-15 10:54:03,397 [INFO] DbMcusXml:78 - Set database path to: C:\ST\STM32CubeIDE_1.15.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.11.0.202403141607\\db\/mcu/
+2024-05-15 10:54:03,397 [INFO] ApiDb:274 - Set plugin database path to: C:\ST\STM32CubeIDE_1.15.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.11.0.202403141607\\db\/plugins/boardmanager/
+2024-05-15 10:54:03,397 [INFO] ApiDb:261 - Set plugin images path to: C:\ST\STM32CubeIDE_1.15.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.11.0.202403141607\\db\/plugins/mcufinder/images/
+2024-05-15 10:54:03,397 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\h_zha\.stmcufinder\plugins\mcufinder/ => C:\Users\h_zha\.stmcufinder\plugins\mcufinder
+2024-05-15 10:54:03,398 [INFO] ApiDb:250 - Set database path to: C:\Users\h_zha\.stmcufinder\plugins\mcufinder//mcu/
+2024-05-15 10:54:03,398 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\h_zha\.stmcufinder\plugins\mcufinder/ => C:\Users\h_zha\.stmcufinder\plugins\mcufinder
+2024-05-15 10:54:03,398 [INFO] DbMcusAds:125 - Set database path to: C:\Users\h_zha\.stmcufinder\plugins\mcufinder//mcu/
+2024-05-15 10:54:03,398 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\h_zha\.stmcufinder\plugins\mcufinder/ => C:\Users\h_zha\.stmcufinder\plugins\mcufinder
+2024-05-15 10:54:03,398 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\h_zha\.stmcufinder\plugins\mcufinder/ => C:\Users\h_zha\.stmcufinder\plugins\mcufinder
+2024-05-15 10:54:03,398 [INFO] CrossReferenceDbSqlite:203 - Set database path to: C:\Users\h_zha\.stmcufinder\plugins\mcufinder//mcu/cs/
+2024-05-15 10:54:03,435 [INFO] MainPanel:264 - HeapMemory: 268435456
+2024-05-15 10:54:03,469 [INFO] DbMcusXml:78 - Set database path to: C:\ST\STM32CubeIDE_1.15.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.11.0.202403141607\\db\/mcu/
+2024-05-15 10:54:03,469 [INFO] ApiDb:274 - Set plugin database path to: C:\ST\STM32CubeIDE_1.15.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.11.0.202403141607\\db\/plugins/boardmanager/
+2024-05-15 10:54:03,469 [INFO] ApiDb:261 - Set plugin images path to: C:\ST\STM32CubeIDE_1.15.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.11.0.202403141607\\db\/plugins/mcufinder/images/
+2024-05-15 10:54:03,469 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\h_zha\.stmcufinder\plugins\mcufinder/ => C:\Users\h_zha\.stmcufinder\plugins\mcufinder
+2024-05-15 10:54:03,469 [INFO] ApiDb:250 - Set database path to: C:\Users\h_zha\.stmcufinder\plugins\mcufinder//mcu/
+2024-05-15 10:54:03,469 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\h_zha\.stmcufinder\plugins\mcufinder/ => C:\Users\h_zha\.stmcufinder\plugins\mcufinder
+2024-05-15 10:54:03,469 [INFO] DbMcusAds:125 - Set database path to: C:\Users\h_zha\.stmcufinder\plugins\mcufinder//mcu/
+2024-05-15 10:54:03,469 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\h_zha\.stmcufinder\plugins\mcufinder/ => C:\Users\h_zha\.stmcufinder\plugins\mcufinder
+2024-05-15 10:54:03,469 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\h_zha\.stmcufinder\plugins\mcufinder/ => C:\Users\h_zha\.stmcufinder\plugins\mcufinder
+2024-05-15 10:54:03,469 [INFO] CrossReferenceDbSqlite:203 - Set database path to: C:\Users\h_zha\.stmcufinder\plugins\mcufinder//mcu/cs/
+2024-05-15 10:54:03,479 [INFO] ApplicationProperties:184 - Using Application install path: C:\ST\STM32CubeIDE_1.15.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.11.0.202403141607
+2024-05-15 10:54:03,480 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ]
+2024-05-15 10:54:03,481 [INFO] PluginManage:310 - Check plugin analytics
+2024-05-15 10:54:03,584 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses: STM32CubeMX.6.7.0
+2024-05-15 10:54:03,584 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses:
+2024-05-15 10:54:03,584 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses: FW.F4.1.27.0,FW.F4.1.28.0
+2024-05-15 10:54:03,586 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1)
+2024-05-15 10:54:03,586 [INFO] PluginManage:310 - Check plugin cadmodel
+2024-05-15 10:54:03,596 [INFO] CADModel:105 - Init CAD model plugin
+2024-05-15 10:54:03,597 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5)
+2024-05-15 10:54:03,597 [INFO] PluginManage:310 - Check plugin clock
+2024-05-15 10:54:03,610 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2)
+2024-05-15 10:54:03,610 [INFO] PluginManage:310 - Check plugin ddr
+2024-05-15 10:54:03,613 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6)
+2024-05-15 10:54:03,613 [INFO] PluginManage:310 - Check plugin filemanager
+2024-05-15 10:54:03,747 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10)
+2024-05-15 10:54:03,747 [INFO] PluginManage:310 - Check plugin ipmanager
+2024-05-15 10:54:03,752 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5)
+2024-05-15 10:54:03,752 [INFO] PluginManage:310 - Check plugin lpbam
+2024-05-15 10:54:03,765 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0)
+2024-05-15 10:54:03,765 [INFO] PluginManage:310 - Check plugin memorymap
+2024-05-15 10:54:03,779 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4)
+2024-05-15 10:54:03,779 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration
+2024-05-15 10:54:03,790 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1)
+2024-05-15 10:54:03,790 [INFO] PluginManage:310 - Check plugin pinoutconfig
+2024-05-15 10:54:03,843 [WARN] SupportedApi:132 - Cannot load RTOS API schema: s4s-elt-must-match.1: The content of 'definitions' must match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*)). A problem was found starting at: attribute.
+2024-05-15 10:54:03,911 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0)
+2024-05-15 10:54:03,911 [INFO] PluginManage:310 - Check plugin power
+2024-05-15 10:54:03,922 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4)
+2024-05-15 10:54:03,922 [INFO] PluginManage:310 - Check plugin projectmanager
+2024-05-15 10:54:03,932 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:3)
+2024-05-15 10:54:03,933 [INFO] PluginManage:310 - Check plugin thirdparty
+2024-05-15 10:54:04,040 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1)
+2024-05-15 10:54:04,040 [INFO] PluginManage:310 - Check plugin tools
+2024-05-15 10:54:04,040 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check]
+2024-05-15 10:54:04,041 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check]
+2024-05-15 10:54:04,042 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15]
+2024-05-15 10:54:04,043 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7)
+2024-05-15 10:54:04,043 [INFO] PluginManage:310 - Check plugin tutovideos
+2024-05-15 10:54:04,150 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1)
+2024-05-15 10:54:04,150 [INFO] PluginManage:310 - Check plugin updater
+2024-05-15 10:54:04,157 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12)
+2024-05-15 10:54:04,157 [INFO] PluginManage:310 - Check plugin userauth
+2024-05-15 10:54:04,161 [INFO] UserAuth:114 - Init User Auth plugin
+2024-05-15 10:54:04,161 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14)
+2024-05-15 10:54:04,161 [INFO] PluginManage:283 - PluginManage : Loaded plugins [17]
+2024-05-15 10:54:04,303 [INFO] PinOutPanel:1561 - setPackage(No Configuration,No Configuration)
+2024-05-15 10:54:04,365 [INFO] CADModel:165 - CPN selected for project level
+2024-05-15 10:54:04,365 [INFO] CADModel:114 - Register for checkConnection events
+2024-05-15 10:54:04,384 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,384 [INFO] PluginManager:220 - loadIPPluginJar : add adc
+2024-05-15 10:54:04,407 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,407 [INFO] PluginManager:220 - loadIPPluginJar : add aes
+2024-05-15 10:54:04,430 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,430 [INFO] PluginManager:220 - loadIPPluginJar : add can
+2024-05-15 10:54:04,442 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,442 [INFO] PluginManager:220 - loadIPPluginJar : add comp
+2024-05-15 10:54:04,459 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,459 [INFO] PluginManager:220 - loadIPPluginJar : add cryp
+2024-05-15 10:54:04,474 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,475 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm
+2024-05-15 10:54:04,484 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,484 [INFO] PluginManager:220 - loadIPPluginJar : add dma
+2024-05-15 10:54:04,506 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,506 [INFO] PluginManager:220 - loadIPPluginJar : add dma3
+2024-05-15 10:54:04,530 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,530 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager
+2024-05-15 10:54:04,531 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,531 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs
+2024-05-15 10:54:04,557 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,567 [INFO] PluginManager:220 - loadIPPluginJar : add fmc
+2024-05-15 10:54:04,576 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,576 [INFO] PluginManager:220 - loadIPPluginJar : add freertos
+2024-05-15 10:54:04,587 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,588 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin
+2024-05-15 10:54:04,632 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,632 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu
+2024-05-15 10:54:04,699 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,699 [INFO] PluginManager:220 - loadIPPluginJar : add gic
+2024-05-15 10:54:04,708 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,708 [INFO] PluginManager:220 - loadIPPluginJar : add gpio
+2024-05-15 10:54:04,755 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,755 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc
+2024-05-15 10:54:04,757 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,757 [INFO] PluginManager:220 - loadIPPluginJar : add hash
+2024-05-15 10:54:04,784 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,784 [INFO] PluginManager:220 - loadIPPluginJar : add i2c
+2024-05-15 10:54:04,804 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,804 [INFO] PluginManager:220 - loadIPPluginJar : add i2s
+2024-05-15 10:54:04,825 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,825 [INFO] PluginManager:220 - loadIPPluginJar : add i3c
+2024-05-15 10:54:04,880 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,881 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr
+2024-05-15 10:54:04,928 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,929 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist
+2024-05-15 10:54:04,947 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,947 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan
+2024-05-15 10:54:04,966 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,966 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc
+2024-05-15 10:54:04,974 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,974 [INFO] PluginManager:220 - loadIPPluginJar : add mdma
+2024-05-15 10:54:04,981 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:04,981 [INFO] PluginManager:220 - loadIPPluginJar : add nvic
+2024-05-15 10:54:05,000 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:05,000 [INFO] PluginManager:220 - loadIPPluginJar : add opamp
+2024-05-15 10:54:05,034 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:05,034 [INFO] PluginManager:220 - loadIPPluginJar : add openamp
+2024-05-15 10:54:05,056 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:05,057 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm
+2024-05-15 10:54:05,065 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:05,066 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings
+2024-05-15 10:54:05,068 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:05,068 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi
+2024-05-15 10:54:05,075 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:05,075 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility
+2024-05-15 10:54:05,102 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:05,102 [INFO] PluginManager:220 - loadIPPluginJar : add sai
+2024-05-15 10:54:05,122 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:05,122 [INFO] PluginManager:220 - loadIPPluginJar : add spi
+2024-05-15 10:54:05,158 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:05,158 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan
+2024-05-15 10:54:05,170 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:05,170 [INFO] PluginManager:220 - loadIPPluginJar : add tim
+2024-05-15 10:54:05,208 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:05,209 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing
+2024-05-15 10:54:05,222 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:05,222 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb
+2024-05-15 10:54:05,224 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:05,224 [INFO] PluginManager:220 - loadIPPluginJar : add ts
+2024-05-15 10:54:05,226 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:05,226 [INFO] PluginManager:220 - loadIPPluginJar : add tsc
+2024-05-15 10:54:05,227 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:05,227 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd
+2024-05-15 10:54:05,260 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:05,260 [INFO] PluginManager:220 - loadIPPluginJar : add usart
+2024-05-15 10:54:05,293 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2024-05-15 10:54:05,293 [INFO] PluginManager:220 - loadIPPluginJar : add usbx
+2024-05-15 10:54:05,402 [INFO] CADModel:165 - CPN selected for project level
+2024-05-15 10:54:05,402 [INFO] CADModel:114 - Register for checkConnection events
+2024-05-15 10:54:05,402 [FATAL] Updater:308 - Updater called before beeing initialized
+2024-05-15 10:54:05,402 [ERROR] CADModel:125 - Updater not yet initialized, retry later
+2024-05-15 10:54:05,476 [INFO] CADModel:165 - CPN selected for project level
+2024-05-15 10:54:05,476 [INFO] CADModel:114 - Register for checkConnection events
+2024-05-15 10:54:05,476 [FATAL] Updater:308 - Updater called before beeing initialized
+2024-05-15 10:54:05,476 [ERROR] CADModel:125 - Updater not yet initialized, retry later
+2024-05-15 10:54:05,478 [FATAL] Updater:308 - Updater called before beeing initialized
+2024-05-15 10:54:05,539 [FATAL] Updater:308 - Updater called before beeing initialized
+2024-05-15 10:54:05,542 [INFO] DbMcusAds:53 - JSON generation date=Wed Nov 29 18:52:27 CST 2023 (1701255147349)
+2024-05-15 10:54:05,542 [FATAL] Updater:308 - Updater called before beeing initialized
+2024-05-15 10:54:05,585 [WARN] DetailPanel:346 - Failed to get advertising image, set to default
+2024-05-15 10:54:05,641 [FATAL] Updater:308 - Updater called before beeing initialized
+2024-05-15 10:54:05,642 [FATAL] Updater:308 - Updater called before beeing initialized
+2024-05-15 10:54:05,642 [FATAL] Updater:308 - Updater called before beeing initialized
+2024-05-15 10:54:05,642 [WARN] DetailPanel:346 - Failed to get advertising image, set to default
+2024-05-15 10:54:05,642 [FATAL] Updater:308 - Updater called before beeing initialized
+2024-05-15 10:54:05,679 [ERROR] Updater:1120 - MainUpdater not yet initialized. External WinMGr cannot be set.
+2024-05-15 10:54:05,681 [INFO] Updater:1056 - Updater Version found : 6.11.0
+2024-05-15 10:54:05,693 [INFO] ApplicationProperties:184 - Using Application install path: C:\ST\STM32CubeIDE_1.15.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.11.0.202403141607
+2024-05-15 10:54:05,980 [INFO] MainUpdater:2873 - connection check result : 10
+2024-05-15 10:54:05,980 [INFO] MainUpdater:290 - Updater Check For Update Now.
+2024-05-15 10:54:05,980 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.110
+2024-05-15 10:54:05,990 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated)
+2024-05-15 10:54:05,990 [INFO] UserAuth:179 - activating auth plugin
+2024-05-15 10:54:05,992 [INFO] UserAuth:415 - Internet connection configuration mode: 1
+2024-05-15 10:54:06,020 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder
+2024-05-15 10:54:06,150 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread
+2024-05-15 10:54:07,199 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT]
diff --git a/.metadata/.lock b/.metadata/.lock
new file mode 100644
index 0000000..e69de29
diff --git a/.metadata/.log b/.metadata/.log
new file mode 100644
index 0000000..c5254eb
--- /dev/null
+++ b/.metadata/.log
@@ -0,0 +1,19 @@
+!SESSION 2024-05-15 10:47:05.049 -----------------------------------------------
+eclipse.buildId=Version 1.15.0
+java.version=17.0.8.1
+java.vendor=Eclipse Adoptium
+BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=zh_CN
+Framework arguments: D:\workspace\p_transmit_disinfection\h2o2_ext_sensor_pv1\.project
+Command-line arguments: -os win32 -ws win32 -arch x86_64 D:\workspace\p_transmit_disinfection\h2o2_ext_sensor_pv1\.project
+
+!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2024-05-15 10:48:09.936
+!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late.
+
+!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2024-05-15 10:48:09.952
+!MESSAGE Log4j2 initialized with config file D:\workspace\p_transmit_disinfection\h2o2_ext_sensor_pv1\.metadata\.log4j2.xml
+
+!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2024-05-15 10:48:15.098
+!MESSAGE Started RMI Server, listening on port 41337
+
+!ENTRY org.eclipse.core.jobs 2 2 2024-05-15 10:54:07.166
+!MESSAGE Job found still running after platform shutdown. Jobs should be canceled by the plugin that scheduled them during shutdown: org.eclipse.ui.internal.Workbench$39
diff --git a/.metadata/.log4j2.xml b/.metadata/.log4j2.xml
new file mode 100644
index 0000000..3cec6a5
--- /dev/null
+++ b/.metadata/.log4j2.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.metadata/.plugins/com.st.stm32cube.ide.mcu.informationcenter/2.2.200.202403111931 b/.metadata/.plugins/com.st.stm32cube.ide.mcu.informationcenter/2.2.200.202403111931
new file mode 100644
index 0000000..e69de29
diff --git a/.metadata/.plugins/org.eclipse.cdt.core/.log b/.metadata/.plugins/org.eclipse.cdt.core/.log
new file mode 100644
index 0000000..35d9241
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.cdt.core/.log
@@ -0,0 +1 @@
+*** SESSION 5月 15, 2024 10:48:06.567 -------------------------------------------
diff --git a/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c b/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c
@@ -0,0 +1 @@
+
diff --git a/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp b/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp
@@ -0,0 +1 @@
+
diff --git a/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml
new file mode 100644
index 0000000..1cb58a4
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml
@@ -0,0 +1,5 @@
+
+
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version
new file mode 100644
index 0000000..25cb955
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version
new file mode 100644
index 0000000..6b2aaa7
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree b/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree
new file mode 100644
index 0000000..14482a9
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree differ
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources
new file mode 100644
index 0000000..557232e
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources differ
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.ide.mcu.ide.oss.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.ide.mcu.ide.oss.prefs
new file mode 100644
index 0000000..3a4957f
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.ide.mcu.ide.oss.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+project_presentation/setHierarchicalMode=false
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs
new file mode 100644
index 0000000..223c6da
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.cdt.debug.core.cDebug.default_source_containers=\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs
new file mode 100644
index 0000000..5e2da66
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+spelling_locale_initialized=true
+useAnnotationsPrefPage=true
+useQuickDiffPrefPage=true
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..dffc6b5
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+version=1
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs
new file mode 100644
index 0000000..dd78b8d
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs
@@ -0,0 +1,5 @@
+//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.applicationLaunchType=org.eclipse.cdt.dsf.gdb.launch.localCLaunch,debug,;org.eclipse.cdt.cdi.launch.localCLaunch,run,;
+//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.attachLaunchType=org.eclipse.cdt.dsf.gdb.launch.attachCLaunch,debug,;
+//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.postmortemLaunchType=org.eclipse.cdt.dsf.gdb.launch.coreCLaunch,debug,;
+//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.remoteApplicationLaunchType=org.eclipse.rse.remotecdt.dsf.debug,debug,;
+eclipse.preferences.version=1
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs
new file mode 100644
index 0000000..98d8634
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=\r\n\r\n
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
new file mode 100644
index 0000000..f2708ea
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+platformState=1714049040582
+quickStart=false
+tipsAndTricks=true
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.navigator.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.navigator.prefs
new file mode 100644
index 0000000..af564f1
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.navigator.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.ui.navigator.ProjectExplorer.filterActivation=\:org.eclipse.ui.navigator.resources.filters.startsWithDot\:org.eclipse.cdt.ui.navigator.filters.AnonymousStructFilter\:org.eclipse.cdt.ui.navigator.filters.AbsentTranslationUnitFilter\:org.eclipse.ui.navigator.resources.nested.HideTopLevelProjectIfNested\:org.eclipse.ui.navigator.resources.nested.HideFolderWhenProjectIsShownAsNested\:org.eclipse.cdt.ui.navigator.filters.ForwardDeclarationFilter\:
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs
new file mode 100644
index 0000000..08076f2
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+showIntro=false
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs
new file mode 100644
index 0000000..748f68e
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs
@@ -0,0 +1,9 @@
+//org.eclipse.ui.commands/state/com.st.stm32cube.ide.mcu.buildanalyzer.showstate/org.eclipse.ui.commands.radioState=human
+//org.eclipse.ui.commands/state/org.eclipse.ui.navigator.resources.nested.changeProjectPresentation/org.eclipse.ui.commands.radioState=false
+eclipse.preferences.version=1
+org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_BG_END=255,255,255
+org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_BG_START=255,255,255
+org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_TEXT_COLOR=16,16,16
+org.eclipse.ui.workbench.ACTIVE_TAB_BG_END=255,255,255
+org.eclipse.ui.workbench.ACTIVE_TAB_BG_START=255,255,255
+org.eclipse.ui.workbench.INACTIVE_TAB_BG_START=242,242,242
diff --git a/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
new file mode 100644
index 0000000..b0439c4
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
@@ -0,0 +1,1949 @@
+
+
+
+ activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration
+
+
+
+
+
+
+
+ topLevel
+
+
+ Minimized
+ MinimizedByZoom
+
+
+ persp.actionSet:com.st.stm32cube.ide.mcu.informationcenter.actionSet3
+ persp.actionSet:org.eclipse.ui.cheatsheets.actionSet
+ persp.actionSet:org.eclipse.search.searchActionSet
+ persp.actionSet:org.eclipse.text.quicksearch.actionSet
+ persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation
+ persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation
+ persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo
+ persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet
+ persp.actionSet:org.eclipse.ui.actionSet.keyBindings
+ persp.actionSet:org.eclipse.ui.actionSet.openFiles
+ persp.actionSet:org.eclipse.cdt.ui.SearchActionSet
+ persp.actionSet:org.eclipse.cdt.ui.CElementCreationActionSet
+ persp.actionSet:org.eclipse.ui.NavigateActionSet
+ persp.viewSC:org.eclipse.ui.console.ConsoleView
+ persp.viewSC:org.eclipse.search.ui.views.SearchView
+ persp.viewSC:org.eclipse.ui.views.ContentOutline
+ persp.viewSC:org.eclipse.ui.views.ProblemView
+ persp.viewSC:org.eclipse.cdt.ui.CView
+ persp.viewSC:org.eclipse.ui.views.PropertySheet
+ persp.viewSC:org.eclipse.ui.views.TaskList
+ persp.newWizSC:org.eclipse.cdt.ui.wizards.ConvertToMakeWizard
+ persp.newWizSC:org.eclipse.cdt.ui.wizards.NewMakeFromExisting
+ persp.newWizSC:org.eclipse.cdt.ui.wizard.project
+ persp.newWizSC:org.eclipse.cdt.ui.wizards.NewSourceFolderCreationWizard
+ persp.newWizSC:org.eclipse.cdt.ui.wizards.NewFolderCreationWizard
+ persp.newWizSC:org.eclipse.cdt.ui.wizards.NewSourceFileCreationWizard
+ persp.newWizSC:org.eclipse.cdt.ui.wizards.NewHeaderFileCreationWizard
+ persp.newWizSC:org.eclipse.cdt.ui.wizards.NewFileCreationWizard
+ persp.newWizSC:org.eclipse.cdt.ui.wizards.NewClassCreationWizard
+ persp.perspSC:org.eclipse.debug.ui.DebugPerspective
+ persp.perspSC:org.eclipse.team.ui.TeamSynchronizingPerspective
+ persp.actionSet:org.eclipse.debug.ui.launchActionSet
+ persp.actionSet:org.eclipse.cdt.ui.buildConfigActionSet
+ persp.actionSet:org.eclipse.cdt.ui.NavigationActionSet
+ persp.actionSet:org.eclipse.cdt.ui.OpenActionSet
+ persp.actionSet:org.eclipse.cdt.ui.CodingActionSet
+ persp.actionSet:org.eclipse.ui.edit.text.actionSet.presentation
+ persp.showIn:org.eclipse.cdt.ui.includeBrowser
+ persp.showIn:org.eclipse.cdt.ui.CView
+ persp.showIn:org.eclipse.ui.navigator.ProjectExplorer
+ persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer
+ persp.viewSC:org.eclipse.cdt.ui.includeBrowser
+ persp.actionSet:org.eclipse.debug.ui.breakpointActionSet
+ persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectwizard
+ persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectfromiocwizard
+ persp.viewSC:org.eclipse.cdt.make.ui.views.MakeView
+ persp.actionSet:org.eclipse.cdt.make.ui.makeTargetActionSet
+ persp.showIn:org.eclipse.cdt.codan.internal.ui.views.ProblemDetails
+ persp.viewSC:org.eclipse.cdt.codan.internal.ui.views.ProblemDetails
+ persp.viewSC:com.st.stm32cube.ide.mcu.buildanalyzer.view
+ persp.viewSC:com.st.stm32cube.ide.mcu.stackanalyzer.stackanalyzer.view
+ persp.newWizSC:com.st.stm32cube.ide.cmake.newwizard
+ persp.viewSC:com.st.stm32cube.ide.mcu.cyclomaticcomplexity.view
+ persp.viewSC:com.st.stm32cube.ide.mcu.sfrview
+
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:C/C++
+
+
+ View
+ categoryTag:General
+
+
+
+
+
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:Make
+
+
+
+
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:C/C++
+
+
+ View
+ categoryTag:C/C++
+
+
+ View
+ categoryTag:C/C++
+
+
+
+
+
+
+
+
+ active
+ Maximized
+
+ View
+ categoryTag:Help
+
+
+ View
+ categoryTag:General
+
+
+ View
+ categoryTag:Help
+
+
+
+
+
+
+ View
+ categoryTag:Help
+
+
+
+
+
+ View
+ categoryTag:General
+ active
+ activeOnClose
+
+ ViewMenu
+ menuContribution:menu
+
+
+
+
+
+
+ View
+ categoryTag:Help
+
+
+
+ org.eclipse.e4.primaryDataStack
+ EditorStack
+
+
+
+
+
+
+ View
+ categoryTag:General
+
+ ViewMenu
+ menuContribution:menu
+
+
+
+
+
+
+ View
+ categoryTag:C/C++
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+
+ View
+ categoryTag:General
+
+ ViewMenu
+ menuContribution:menu
+
+
+
+
+
+
+
+ View
+ categoryTag:General
+
+ ViewMenu
+ menuContribution:menu
+
+
+
+
+
+
+
+ View
+ categoryTag:General
+
+ ViewMenu
+ menuContribution:menu
+
+
+
+
+
+
+
+ View
+ categoryTag:General
+
+ ViewMenu
+ menuContribution:menu
+
+
+
+
+
+
+
+ View
+ categoryTag:General
+
+ ViewMenu
+ menuContribution:menu
+
+
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+
+ View
+ categoryTag:Make
+
+ ViewMenu
+ menuContribution:menu
+
+
+
+
+
+
+
+ View
+ categoryTag:C/C++
+
+ ViewMenu
+ menuContribution:menu
+
+
+
+
+
+
+
+ View
+ categoryTag:C/C++
+
+ ViewMenu
+ menuContribution:menu
+
+
+
+
+
+
+
+ View
+ categoryTag:C/C++
+
+ ViewMenu
+ menuContribution:menu
+
+
+
+
+
+ toolbarSeparator
+
+
+
+ Draggable
+
+
+
+ toolbarSeparator
+
+
+
+ Draggable
+
+
+
+
+ toolbarSeparator
+
+
+
+ Draggable
+
+
+ Draggable
+
+
+ Draggable
+
+
+ Draggable
+
+
+ toolbarSeparator
+
+
+
+ Draggable
+
+
+
+ toolbarSeparator
+
+
+
+ toolbarSeparator
+
+
+
+ Draggable
+
+
+ stretch
+ SHOW_RESTORE_MENU
+
+
+ Draggable
+ HIDEABLE
+ SHOW_RESTORE_MENU
+
+
+
+
+ stretch
+
+
+ Draggable
+
+
+ Draggable
+
+
+
+
+ TrimStack
+ Draggable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ platform:win32
+
+
+
+
+
+
+
+
+ locale:zh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ locale:zh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ locale:zh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ locale:zh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ platform:win32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Editor
+ removeOnHide
+
+
+
+
+ View
+ categoryTag:Device Configuration Tool
+
+
+
+
+ View
+ categoryTag:C/C++
+
+
+
+
+ View
+ categoryTag:C/C++
+
+
+
+
+ View
+ categoryTag:SWV
+
+
+
+
+ View
+ categoryTag:SWV
+
+
+
+
+ View
+ categoryTag:SWV
+
+
+
+
+ View
+ categoryTag:SWV
+
+
+
+
+ View
+ categoryTag:SWV
+
+
+
+
+ View
+ categoryTag:SWV
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:FreeRTOS
+
+
+
+
+ View
+ categoryTag:FreeRTOS
+
+
+
+
+ View
+ categoryTag:FreeRTOS
+
+
+
+
+ View
+ categoryTag:FreeRTOS
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:C/C++
+
+
+
+
+ View
+ categoryTag:Other
+
+
+
+
+ View
+ categoryTag:ThreadX
+
+
+
+
+ View
+ categoryTag:ThreadX
+
+
+
+
+ View
+ categoryTag:ThreadX
+
+
+
+
+ View
+ categoryTag:ThreadX
+
+
+
+
+ View
+ categoryTag:ThreadX
+
+
+
+
+ View
+ categoryTag:ThreadX
+
+
+
+
+ View
+ categoryTag:ThreadX
+
+
+
+
+ View
+ categoryTag:ThreadX
+
+
+
+
+ View
+ categoryTag:C/C++
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Make
+
+
+
+
+ View
+ categoryTag:C/C++
+
+
+
+
+ View
+ categoryTag:C/C++
+
+
+
+
+ View
+ categoryTag:C/C++
+
+
+
+
+ View
+ categoryTag:C/C++
+
+
+
+
+ View
+ categoryTag:C/C++
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Debug
+
+
+ View
+ categoryTag:Debug
+
+
+
+
+ View
+ categoryTag:Help
+
+
+
+
+ View
+ categoryTag:Connections
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:Version Control (Team)
+
+
+
+
+ View
+ categoryTag:Version Control (Team)
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:Help
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+
+ View
+ categoryTag:General
+
+
+
+ glue
+ move_after:PerspectiveSpacer
+ SHOW_RESTORE_MENU
+
+
+ move_after:Spacer Glue
+ HIDEABLE
+ SHOW_RESTORE_MENU
+
+
+ glue
+ move_after:SearchField
+ SHOW_RESTORE_MENU
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml
new file mode 100644
index 0000000..35be43f
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml
new file mode 100644
index 0000000..22b5ded
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.metadata/version.ini b/.metadata/version.ini
new file mode 100644
index 0000000..5e5c738
--- /dev/null
+++ b/.metadata/version.ini
@@ -0,0 +1,3 @@
+#Wed May 15 10:47:37 CST 2024
+org.eclipse.core.runtime=2
+org.eclipse.platform=4.30.0.v20231201-0110
diff --git a/.project b/.project
index e56292f..c32fce0 100644
--- a/.project
+++ b/.project
@@ -1,6 +1,6 @@
- h2o2_ext_sensor
+ h2o2_ext_sensor_pv1
diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
index eda5a3c..7845a34 100644
--- a/.settings/language.settings.xml
+++ b/.settings/language.settings.xml
@@ -5,7 +5,7 @@
-
+
@@ -16,7 +16,7 @@
-
+
diff --git a/README.md b/README.md
index 0405d4f..dac9c46 100644
--- a/README.md
+++ b/README.md
@@ -7,5 +7,5 @@
V2:
完成需求
-h2o2_ext_sensor
+h2o2_ext_sensor_pv1
```
\ No newline at end of file
diff --git a/h2o2_ext_sensor Debug.launch b/h2o2_ext_sensor_pv1 Debug.launch
similarity index 95%
rename from h2o2_ext_sensor Debug.launch
rename to h2o2_ext_sensor_pv1 Debug.launch
index 997ba1e..0405f75 100644
--- a/h2o2_ext_sensor Debug.launch
+++ b/h2o2_ext_sensor_pv1 Debug.launch
@@ -12,7 +12,7 @@
-
+
@@ -32,7 +32,7 @@
-
+
@@ -67,13 +67,13 @@
-
-
+
+
-
+
diff --git a/h2o2_ext_sensor.cfg b/h2o2_ext_sensor_pv1.cfg
similarity index 100%
rename from h2o2_ext_sensor.cfg
rename to h2o2_ext_sensor_pv1.cfg
diff --git a/h2o2_ext_sensor.ioc b/h2o2_ext_sensor_pv1.ioc
similarity index 99%
rename from h2o2_ext_sensor.ioc
rename to h2o2_ext_sensor_pv1.ioc
index 271a74a..4d96ec8 100644
--- a/h2o2_ext_sensor.ioc
+++ b/h2o2_ext_sensor_pv1.ioc
@@ -230,8 +230,8 @@ ProjectManager.MultiThreaded=true
ProjectManager.NoMain=false
ProjectManager.PreviousToolchain=STM32CubeIDE
ProjectManager.ProjectBuild=false
-ProjectManager.ProjectFileName=h2o2_ext_sensor.ioc
-ProjectManager.ProjectName=h2o2_ext_sensor
+ProjectManager.ProjectFileName=h2o2_ext_sensor_pv1.ioc
+ProjectManager.ProjectName=h2o2_ext_sensor_pv1
ProjectManager.ProjectStructure=
ProjectManager.RegisterCallBack=
ProjectManager.StackSize=0x2000
diff --git a/h2o2_ext_sensor.launch b/h2o2_ext_sensor_pv1.launch
similarity index 100%
rename from h2o2_ext_sensor.launch
rename to h2o2_ext_sensor_pv1.launch
diff --git a/transmit_disinfection_protocol_v1 b/transmit_disinfection_protocol_v1
new file mode 160000
index 0000000..a3bc27c
--- /dev/null
+++ b/transmit_disinfection_protocol_v1
@@ -0,0 +1 @@
+Subproject commit a3bc27ca9ca6c3d636d4a924c5d8bc9f7f4b5fc8
diff --git a/usrc/base/device_info.cpp b/usrc/base/device_info.cpp
index c4722eb..ae04f73 100644
--- a/usrc/base/device_info.cpp
+++ b/usrc/base/device_info.cpp
@@ -1,6 +1,6 @@
#include "device_info.hpp"
-#include "iflytop_canbus_protocol/iflytop_canbus_protocol.hpp"
+#include "project_configs.h"
#include "zsdk/zsdk.hpp"
using namespace iflytop;
@@ -17,6 +17,6 @@ uint16_t deviceInfo_getBoardId() {
}
uint16_t deviceInfo_getProjectId() { return PROJECT_ID; }
uint16_t deviceInfo_getBoardType() { return BOARD_TYPE; }
-uint16_t deviceInfo_getProtocolVersion() { return PROTOCOL_VERSION; }
+uint16_t deviceInfo_getProtocolVersion() { return 0; }
uint16_t deviceInfo_getSoftwareVersion() { return SOFTWARE_VERSION; }
uint16_t deviceInfo_getHardwareVersion() { return HARDWARE_VERSION; }
diff --git a/usrc/base/hardware.cpp b/usrc/base/hardware.cpp
index 4f26d7e..5864fc6 100644
--- a/usrc/base/hardware.cpp
+++ b/usrc/base/hardware.cpp
@@ -3,6 +3,8 @@
#include "adc.h"
#include "tim.h"
#include "zsdk/zcanreceiver/zcanreceiver.hpp"
+#include "zsdk/zcanreceiver_old/zcanreceiver.hpp"
+
#define TAG "HARD"
using namespace iflytop;
@@ -148,7 +150,7 @@ int32_t Hardware::h2o2_sensor_read_sub_ic_reg(int32_t add, uint16_t* val, size_t
return 0;
}
#endif
- return kerr_subdevice_offline;
+ return -1; // TODO 添加错误码
}
int32_t Hardware::h2o2_sensor_data(report_h2o2_data_t* readdata) {
#ifdef H2O2_SENSOR_TYPE_HMP110
diff --git a/usrc/base/hardware.hpp b/usrc/base/hardware.hpp
index 29ceb81..0e16198 100644
--- a/usrc/base/hardware.hpp
+++ b/usrc/base/hardware.hpp
@@ -12,6 +12,8 @@
#include "zsdk/zadc.hpp"
#include "zsdk/zsdk.hpp"
+#include "transmit_disinfection_protocol_v1/transmit_disinfection_protocol_v1.hpp"
+
void hardware_init();
namespace iflytop {
diff --git a/usrc/main.cpp b/usrc/main.cpp
index 6572338..9a20143 100644
--- a/usrc/main.cpp
+++ b/usrc/main.cpp
@@ -6,6 +6,7 @@
#include "iwdg.h"
#include "protocol_impl/protocol_impl_service.hpp"
#include "zsdk/zcanreceiver/zcanreceiver.hpp"
+#include "zsdk/zcanreceiver_old/zcanreceiver.hpp"
#include "zsdk/zsdk.hpp"
#define TAG "main"
diff --git a/usrc/project_configs.h b/usrc/project_configs.h
index 4eca88e..1f27745 100644
--- a/usrc/project_configs.h
+++ b/usrc/project_configs.h
@@ -1,5 +1,4 @@
#pragma once
-#include "iflytop_canbus_protocol/iflytop_canbus_protocol.hpp"
/***********************************************************************************************************************
* SDK_CONFIG *
@@ -20,15 +19,17 @@
*/
#define SOFTWARE_VERSION 1 // 软件版本
#define HARDWARE_VERSION 1 // 硬件版本
-#define PROJECT "h2o2_ext_sensor" // 工程名称
+#define PROJECT "h2o2_ext_sensor_pv1" // 工程名称
#define SN_HEADER "SN" // SN号前缀
-#define PROJECT_ID kh2o2_ext_sensor // 项目ID
-#define BOARD_TYPE kBoardType_H2O2Sensor // 板子类型
+#define PROJECT_ID 0 // 项目ID
+#define BOARD_TYPE 0 // 板子类型
#define DEBUG_UART huart1 // 调试串口
#define DEBUG_LIGHT_GPIO PE2 // 调试指示灯
// #define H2O2_SENSOR_TYPE_HPP272
#define H2O2_SENSOR_TYPE_HMP110
-#define DEVICE_ID_START (kFixBoardId_H2O2SensorStart) // 设备ID
-#define DEVICE_ID_OFF_PIN PE8 // 设备ID偏移引脚
\ No newline at end of file
+#define DEVICE_ID_START (100) // 设备ID
+#define DEVICE_ID_OFF_PIN PE8 // 设备ID偏移引脚
+
+#define ENABLE_OLD_CAN_PROTOCOL
\ No newline at end of file
diff --git a/usrc/protocol_impl/basic/fn_mgr.cpp b/usrc/protocol_impl/basic/fn_mgr.cpp
index d73a580..ba35989 100644
--- a/usrc/protocol_impl/basic/fn_mgr.cpp
+++ b/usrc/protocol_impl/basic/fn_mgr.cpp
@@ -20,7 +20,7 @@ void fn_map_reg(uint16_t function_id, protocol_impl_func_t fn) {
bool fn_map_process(uint16_t function_id, uint8_t from, uint8_t to, uint8_t* rawpacket, size_t len) {
for (int i = 0; i < fn_map_size; i++) {
if (fn_map[i].function_id == function_id) {
- fn_map[i].fn(from, to, (zcanbus_packet_t*)rawpacket, len);
+ fn_map[i].fn(from, to, (uint8_t*)rawpacket, len);
return true;
}
}
diff --git a/usrc/protocol_impl/basic/fn_mgr.hpp b/usrc/protocol_impl/basic/fn_mgr.hpp
index 1b16dd6..157a989 100644
--- a/usrc/protocol_impl/basic/fn_mgr.hpp
+++ b/usrc/protocol_impl/basic/fn_mgr.hpp
@@ -8,19 +8,6 @@
* MARCO *
***********************************************************************************************************************/
-#define CHECK_PARAM_LEN(_paramNum, expectNum) \
- if (_paramNum != expectNum) { \
- zcanbus_send_errorack(packet, kerr_invalid_param_num); \
- return; \
- }
-
-#define CHECK_MOTOR_INDEX(_subindex) \
- if (_subindex > Hardware::ins().motorNum()) { \
- zcanbus_send_errorack(packet, kerr_invalid_param); \
- return; \
- }
-#define GET_PARAM(buff, off) ((((int32_t*)(buff))[off]))
-#define PARAM_LEN() ((len - sizeof(zcanbus_packet_t)) / 4)
#define ZCLEAR_BIT(val, bit) (val &= ~(1 << bit))
#define ZSET_BIT(val, bit) (val |= (1 << bit))
@@ -29,7 +16,7 @@
* FUNC *
***********************************************************************************************************************/
-typedef void(*protocol_impl_func_t)(uint8_t from, uint8_t to, zcanbus_packet_t* rawpacket, size_t len);
+typedef void(*protocol_impl_func_t)(uint8_t from, uint8_t to, uint8_t* rawpacket, size_t len);
void fn_map_reg(uint16_t function_id, protocol_impl_func_t funtion);
bool fn_map_process(uint16_t function_id, uint8_t from, uint8_t to, uint8_t* rawpacket, size_t len);
diff --git a/usrc/protocol_impl/function_impl/afunction_impl.hpp b/usrc/protocol_impl/function_impl/afunction_impl.hpp
index 4231fd5..9600eec 100644
--- a/usrc/protocol_impl/function_impl/afunction_impl.hpp
+++ b/usrc/protocol_impl/function_impl/afunction_impl.hpp
@@ -9,19 +9,6 @@
#include "base/hardware.hpp"
#include "zsdk/modbus/modbus_block_host.hpp"
#include "zsdk/zcanreceiver/zcanreceiver.hpp"
-
-/***********************************************************************************************************************
- * basic_fn *
- ***********************************************************************************************************************/
-
-void basic_fn_init();
-void fn_cmd_read_board_info(uint8_t from, uint8_t to, zcanbus_packet_t* packet, size_t len);
-void fn_cmd_read_sysinfo(uint8_t from, uint8_t to, zcanbus_packet_t* packet, size_t len);
-void fn_cmd_read_taskinfo(uint8_t from, uint8_t to, zcanbus_packet_t* packet, size_t len);
-void fn_cmd_heart_ping(uint8_t from, uint8_t to, zcanbus_packet_t* packet, size_t len);
-void fn_cmd_clear_reset_flag(uint8_t from, uint8_t to, zcanbus_packet_t* packet, size_t len);
+#include "zsdk/zcanreceiver_old/zcanreceiver.hpp"
void h2o2_fn_impl_init();
-void fn_cmd_h2o2_sensor_read_calibration_date(uint8_t from, uint8_t to, zcanbus_packet_t* packet, size_t len);
-void fn_cmd_h2o2_sensor_read_sub_ic_errorcode(uint8_t from, uint8_t to, zcanbus_packet_t* packet, size_t len);
-void fn_cmd_h2o2_sensor_read_sub_ic_reg(uint8_t from, uint8_t to, zcanbus_packet_t* packet, size_t len);
diff --git a/usrc/protocol_impl/function_impl/basic_fn.cpp b/usrc/protocol_impl/function_impl/basic_fn.cpp
deleted file mode 100644
index cd31bce..0000000
--- a/usrc/protocol_impl/function_impl/basic_fn.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-
-#include "afunction_impl.hpp"
-using namespace iflytop;
-
-static uint8_t m_boardflag; // 0: 重启标志
-
-/**
- * @brief 读取板子信息
- *
- * @param from
- * @param to
- * @param packet
- * @param len
- */
-void fn_cmd_read_board_info(uint8_t from, uint8_t to, zcanbus_packet_t* packet, size_t len) {
- static ack_read_board_info_data_t ack;
- ack.boardType = deviceInfo_getBoardType();
- ack.projectId = deviceInfo_getProjectId();
- ack.protcol_version = deviceInfo_getProtocolVersion();
- ack.software_version = deviceInfo_getSoftwareVersion();
- ack.hardware_version = deviceInfo_getHardwareVersion();
-
- zcanbus_send_ack(packet, (uint8_t*)&ack, sizeof(ack));
-}
-/**
- * @brief 读取系统信息
- *
- * @param from
- * @param to
- * @param packet
- * @param len
- */
-void fn_cmd_read_sysinfo(uint8_t from, uint8_t to, zcanbus_packet_t* packet, size_t len) {
- static ack_sysinfo_t ack;
- ack.free_heap_size = SysMgr::ins()->osGetMinimumEverFreeHeapSize();
- ack.total_heap_size = SysMgr::ins()->osGetTotalHeapSize();
- ack.taskNum = SysMgr::ins()->getTaskNum();
- ack.sysHasRun = SysMgr::ins()->osGetSysRunTime() / 1000;
- zcanbus_send_ack(packet, (uint8_t*)&ack, sizeof(ack));
-}
-/**
- * @brief 读取线程信息
- *
- * @param from
- * @param to
- * @param packet
- * @param len
- */
-void fn_cmd_read_taskinfo(uint8_t from, uint8_t to, zcanbus_packet_t* packet, size_t len) {
- static ask_taskinfo_t ack;
- int32_t taskoff = GET_PARAM(packet->params, 0);
- osThreadId taskId = SysMgr::ins()->osGetId(taskoff);
- SysMgr::ins()->osTaskName(taskId, (char*)ack.taskName, sizeof(ack.taskName));
- SysMgr::ins()->osTaskStackRemainingSize(taskId, &ack.stackRemindSize);
- SysMgr::ins()->osTaskPriority(taskId, &ack.priority);
- SysMgr::ins()->osTaskGetState(taskId, (char*)&ack.state);
-
- zcanbus_send_ack(packet, (uint8_t*)&ack, sizeof(ack));
-}
-/**
- * @brief PING
- *
- * @param from
- * @param to
- * @param packet
- * @param len
- */
-void fn_cmd_heart_ping(uint8_t from, uint8_t to, zcanbus_packet_t* packet, size_t len) {
- static report_heatpacket_data_t heatpacket;
- heatpacket.boardType = deviceInfo_getBoardType();
- heatpacket.heartIndex = GET_PARAM(packet->params, 0);
- heatpacket.flag = m_boardflag;
- zcanbus_send_report(kreport_heatpacket_pong, (uint8_t*)&heatpacket, sizeof(heatpacket), 30);
-}
-/**
- * @brief 清除板子复位标志位
- *
- * @param from
- * @param to
- * @param packet
- * @param len
- */
-void fn_cmd_clear_reset_flag(uint8_t from, uint8_t to, zcanbus_packet_t* packet, size_t len) {
- ZCLEAR_BIT(m_boardflag, 0);
- zcanbus_send_ack(packet, NULL, 0);
-}
-
-void basic_fn_init() {
- m_boardflag = 0x00;
- ZSET_BIT(m_boardflag, 0);
-}
\ No newline at end of file
diff --git a/usrc/protocol_impl/function_impl/h2o2_fn_impl.cpp b/usrc/protocol_impl/function_impl/h2o2_fn_impl.cpp
index 04d72cc..56fe3cb 100644
--- a/usrc/protocol_impl/function_impl/h2o2_fn_impl.cpp
+++ b/usrc/protocol_impl/function_impl/h2o2_fn_impl.cpp
@@ -1,45 +1,18 @@
#include "afunction_impl.hpp"
+#include "base/device_info.hpp"
using namespace iflytop;
#define TAG "PROTO-H2O2"
static osTimerId PacketReportTimerId;
-
+using namespace iflytop;
+using namespace zcr;
static void onPacketReportTimer(void const* argument) {
static report_h2o2_data_t data;
memset(&data, 0, sizeof(data));
Hardware::ins().h2o2_sensor_data(&data);
- zcanbus_send_report(kreport_h2o2_sensor_data, (uint8_t*)&data, sizeof(data), 30);
-}
-
-void fn_cmd_h2o2_sensor_read_calibration_date(uint8_t from, uint8_t to, zcanbus_packet_t* packet, size_t len) {
- CHECK_PARAM_LEN(PARAM_LEN(), 0);
- int32_t data[3];
- Hardware::ins().h2o2_sensor_read_calibration_date(&data[0], &data[1], &data[2]);
- zcanbus_send_ack(packet, (uint8_t*)&data, sizeof(data));
-}
-void fn_cmd_h2o2_sensor_read_sub_ic_errorcode(uint8_t from, uint8_t to, zcanbus_packet_t* packet, size_t len) {
- CHECK_PARAM_LEN(PARAM_LEN(), 0);
- int32_t ecode = Hardware::ins().h2o2_sensor_read_sub_ic_errorcode();
- zcanbus_send_ack(packet, (uint8_t*)&ecode, sizeof(ecode));
-}
-void fn_cmd_h2o2_sensor_read_sub_ic_reg(uint8_t from, uint8_t to, zcanbus_packet_t* packet, size_t len) {
- CHECK_PARAM_LEN(PARAM_LEN(), 2);
- int32_t addr = GET_PARAM(packet->params, 0);
- int32_t regNum = GET_PARAM(packet->params, 1);
- if (regNum > 10) regNum = 10; // 最多读10个寄存器
- static uint16_t data[10];
- memset(data, 0, sizeof(data));
-
- int32_t ret = Hardware::ins().h2o2_sensor_read_sub_ic_reg(addr, data, regNum);
- if (ret != 0) {
- zcanbus_send_errorack(packet, ret);
- return;
- }
- for (size_t i = 0; i < regNum; i++) {
- printf("data[%d] = %d\n", i, data[i]);
- }
- zcanbus_send_ack(packet, (uint8_t*)&data, regNum * 2);
+ data.sensorid = deviceInfo_getBoardId();
+ ZCanReceiver::ins()->sendReport(kreport_h2o2_sensor_data, 0, (uint8_t*)&data, sizeof(data));
}
void h2o2_fn_impl_init() {
diff --git a/usrc/protocol_impl/protocol_impl_service.cpp b/usrc/protocol_impl/protocol_impl_service.cpp
index 20578e8..f1d04a9 100644
--- a/usrc/protocol_impl/protocol_impl_service.cpp
+++ b/usrc/protocol_impl/protocol_impl_service.cpp
@@ -14,7 +14,7 @@ static osThreadId DeviceStateMonitorThreadId;
static void onPacketRxThreadStart(void const* argument) {
while (true) {
- zcanbus_schedule();
+ ZCanReceiver::ins()->loop();
osDelay(1);
}
}
@@ -25,56 +25,26 @@ static void onDeviceStateMonitorThreadStart(void const* argument) {
if (Hardware::ins().h2o2_sensor_read_sub_ic_errorcode() != 0) {
Hardware::ins().setAlarmLight(kerror);
} else {
- if (zcanbus_is_connected()) {
- Hardware::ins().setAlarmLight(kconnected);
- } else {
- Hardware::ins().setAlarmLight(kdisconnected);
- }
+ Hardware::ins().setAlarmLight(kconnected);
}
}
}
-static void zcanbus_on_rx(uint8_t from, uint8_t to, uint8_t* rawpacket, size_t len) { //
- zcanbus_packet_t* packet = (zcanbus_packet_t*)rawpacket;
- ZLOGI(TAG, "process packet from %d to %d, function_id %d, len %d", from, to, packet->function_id, len);
- bool processed = fn_map_process(packet->function_id, from, to, rawpacket, len);
- if (!processed) {
- zcanbus_send_errorack(packet, kerr_function_not_support);
- }
- ZLOGI(TAG, "process end");
-}
-
-static void zcanbus_on_connected(bool connected) {
- if (connected) {
- ZLOGI(TAG, "connected to host");
- } else {
- ZLOGI(TAG, "disconnected from host");
- }
+static void zcanbus_on_rx(CanPacketRxBuffer* rxbuf, uint8_t* packet, size_t len) { //
+ transmit_disinfection_protocol_header_t* header = (transmit_disinfection_protocol_header_t*)packet;
}
void protocol_impl_service_init() { //
Hardware::ins().init();
ForceReportFlagMgr::ins()->init();
- zcanbus_init(deviceInfo_getBoardId());
- zcanbus_reglistener(zcanbus_on_rx);
- zcanbus_reg_on_connected_listener(zcanbus_on_connected);
+ ZCanReceiver::CFG* cfg = ZCanReceiver::ins()->createCFG(deviceInfo_getBoardId());
+ ZCanReceiver::ins()->init(cfg);
+ ZCanReceiver::ins()->registerListener(zcanbus_on_rx);
- {
- basic_fn_init();
- fn_map_reg(kcmd_read_board_info, fn_cmd_read_board_info);
- fn_map_reg(kcmd_read_sysinfo, fn_cmd_read_sysinfo);
- fn_map_reg(kcmd_read_taskinfo, fn_cmd_read_taskinfo);
- fn_map_reg(kcmd_heart_ping, fn_cmd_heart_ping);
- fn_map_reg(kcmd_clear_reset_flag, fn_cmd_clear_reset_flag);
- }
+ {}
- {
- h2o2_fn_impl_init();
- fn_map_reg(kcmd_h2o2_sensor_read_calibration_date, fn_cmd_h2o2_sensor_read_calibration_date);
- fn_map_reg(kcmd_h2o2_sensor_read_sub_ic_errorcode, fn_cmd_h2o2_sensor_read_sub_ic_errorcode);
- fn_map_reg(kcmd_h2o2_sensor_read_sub_ic_reg, fn_cmd_h2o2_sensor_read_sub_ic_reg);
- }
+ { h2o2_fn_impl_init(); }
osThreadDef(PacketRxThread, onPacketRxThreadStart, osPriorityNormal, 0, 1024);
PacketRxThreadId = osThreadCreate(osThread(PacketRxThread), NULL);
diff --git a/zsdk b/zsdk
index 8c15904..2d0aea4 160000
--- a/zsdk
+++ b/zsdk
@@ -1 +1 @@
-Subproject commit 8c159045effb6a83b4dc8316f9370eeae192150c
+Subproject commit 2d0aea4bda82668626ba11d42658eb2f36f48119