diff --git a/firmware/numpad/.metadata/.ide.log b/firmware/numpad/.metadata/.ide.log
index c3cc29e3..862aef7f 100644
--- a/firmware/numpad/.metadata/.ide.log
+++ b/firmware/numpad/.metadata/.ide.log
@@ -1,2018 +1,1777 @@
-2025-08-19 20:04:56,569 [INFO] Activator:176 -
+2025-08-21 19:51:02,994 [INFO] Activator:176 -
-2025-08-19 20:04:56,569 [INFO] Activator:177 - !SESSION log4j initialized
-2025-08-19 20:04:57,942 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT]
-2025-08-19 20:04:59,110 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
-2025-08-19 20:04:59,119 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
-2025-08-19 20:04:59,119 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
-2025-08-19 20:04:59,120 [WARN] ApiDb:259 - Overriding images path with different value: => /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
-2025-08-19 20:04:59,121 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:04:59,122 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:04:59,123 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
-2025-08-19 20:04:59,177 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
-2025-08-19 20:04:59,206 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
-2025-08-19 20:04:59,206 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
-2025-08-19 20:04:59,206 [INFO] ApiDb:261 - Set plugin images path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
-2025-08-19 20:04:59,206 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:04:59,206 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:04:59,207 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:04:59,207 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:04:59,207 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:04:59,207 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:04:59,207 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
-2025-08-19 20:04:59,237 [INFO] MainPanel:274 - HeapMemory: 268435456
-2025-08-19 20:04:59,332 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
-2025-08-19 20:04:59,332 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
-2025-08-19 20:04:59,332 [INFO] ApiDb:261 - Set plugin images path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
-2025-08-19 20:04:59,332 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:04:59,332 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:04:59,332 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:04:59,332 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:04:59,332 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:04:59,332 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:04:59,332 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
-2025-08-19 20:04:59,342 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
-2025-08-19 20:04:59,344 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ]
-2025-08-19 20:04:59,344 [INFO] PluginManage:310 - Check plugin analytics
-2025-08-19 20:04:59,414 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses:
-2025-08-19 20:04:59,414 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses:
-2025-08-19 20:04:59,414 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses:
-2025-08-19 20:04:59,416 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1)
-2025-08-19 20:04:59,416 [INFO] PluginManage:310 - Check plugin cadmodel
-2025-08-19 20:04:59,418 [INFO] CADModel:105 - Init CAD model plugin
-2025-08-19 20:04:59,418 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5)
-2025-08-19 20:04:59,418 [INFO] PluginManage:310 - Check plugin clock
-2025-08-19 20:04:59,422 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2)
-2025-08-19 20:04:59,423 [INFO] PluginManage:310 - Check plugin ddr
-2025-08-19 20:04:59,423 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6)
-2025-08-19 20:04:59,423 [INFO] PluginManage:310 - Check plugin filemanager
-2025-08-19 20:04:59,528 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10)
-2025-08-19 20:04:59,528 [INFO] PluginManage:310 - Check plugin ipmanager
-2025-08-19 20:04:59,532 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5)
-2025-08-19 20:04:59,532 [INFO] PluginManage:310 - Check plugin lpbam
-2025-08-19 20:04:59,537 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0)
-2025-08-19 20:04:59,538 [INFO] PluginManage:310 - Check plugin memorymap
-2025-08-19 20:04:59,543 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4)
-2025-08-19 20:04:59,543 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration
-2025-08-19 20:04:59,547 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1)
-2025-08-19 20:04:59,547 [INFO] PluginManage:310 - Check plugin pinoutconfig
-2025-08-19 20:04:59,585 [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.
-2025-08-19 20:04:59,641 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0)
-2025-08-19 20:04:59,641 [INFO] PluginManage:310 - Check plugin power
-2025-08-19 20:04:59,645 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4)
-2025-08-19 20:04:59,645 [INFO] PluginManage:310 - Check plugin projectmanager
-2025-08-19 20:04:59,653 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:4)
-2025-08-19 20:04:59,653 [INFO] PluginManage:310 - Check plugin rif
-2025-08-19 20:04:59,657 [INFO] PluginManage:359 - Loaded plugin rif (category:base,tabindex:3)
-2025-08-19 20:04:59,657 [INFO] PluginManage:310 - Check plugin thirdparty
-2025-08-19 20:04:59,715 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1)
-2025-08-19 20:04:59,715 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check]
-2025-08-19 20:04:59,715 [INFO] PluginManage:310 - Check plugin tools
-2025-08-19 20:04:59,715 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check]
-2025-08-19 20:04:59,715 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15]
-2025-08-19 20:04:59,716 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7)
-2025-08-19 20:04:59,716 [INFO] PluginManage:310 - Check plugin tutovideos
-2025-08-19 20:04:59,812 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1)
-2025-08-19 20:04:59,812 [INFO] PluginManage:310 - Check plugin updater
-2025-08-19 20:04:59,826 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12)
-2025-08-19 20:04:59,826 [INFO] PluginManage:310 - Check plugin userauth
-2025-08-19 20:04:59,828 [INFO] UserAuth:118 - Init User Auth plugin
-2025-08-19 20:04:59,828 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14)
-2025-08-19 20:04:59,828 [INFO] PluginManage:283 - PluginManage : Loaded plugins [18]
-2025-08-19 20:04:59,908 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration)
-2025-08-19 20:04:59,939 [INFO] CADModel:165 - CPN selected for project level
-2025-08-19 20:04:59,939 [INFO] CADModel:114 - Register for checkConnection events
-2025-08-19 20:04:59,947 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,947 [INFO] PluginManager:220 - loadIPPluginJar : add adc
-2025-08-19 20:04:59,949 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,949 [INFO] PluginManager:220 - loadIPPluginJar : add aes
-2025-08-19 20:04:59,949 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,950 [INFO] PluginManager:220 - loadIPPluginJar : add can
-2025-08-19 20:04:59,950 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,950 [INFO] PluginManager:220 - loadIPPluginJar : add comp
-2025-08-19 20:04:59,951 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,951 [INFO] PluginManager:220 - loadIPPluginJar : add cryp
-2025-08-19 20:04:59,952 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,952 [INFO] PluginManager:220 - loadIPPluginJar : add ddr_ctrl_phy
-2025-08-19 20:04:59,953 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,953 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm
-2025-08-19 20:04:59,956 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,956 [INFO] PluginManager:220 - loadIPPluginJar : add dma
-2025-08-19 20:04:59,957 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,957 [INFO] PluginManager:220 - loadIPPluginJar : add dma3
-2025-08-19 20:04:59,957 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,958 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager
-2025-08-19 20:04:59,958 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,958 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs
-2025-08-19 20:04:59,959 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,960 [INFO] PluginManager:220 - loadIPPluginJar : add fmc
-2025-08-19 20:04:59,962 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,962 [INFO] PluginManager:220 - loadIPPluginJar : add freertos
-2025-08-19 20:04:59,962 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,962 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin
-2025-08-19 20:04:59,963 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,963 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu
-2025-08-19 20:04:59,965 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,965 [INFO] PluginManager:220 - loadIPPluginJar : add gic
-2025-08-19 20:04:59,966 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,966 [INFO] PluginManager:220 - loadIPPluginJar : add gpio
-2025-08-19 20:04:59,967 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,967 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc
-2025-08-19 20:04:59,968 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,968 [INFO] PluginManager:220 - loadIPPluginJar : add hash
-2025-08-19 20:04:59,968 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,968 [INFO] PluginManager:220 - loadIPPluginJar : add i2c
-2025-08-19 20:04:59,969 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,969 [INFO] PluginManager:220 - loadIPPluginJar : add i2s
-2025-08-19 20:04:59,970 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,970 [INFO] PluginManager:220 - loadIPPluginJar : add i3c
-2025-08-19 20:04:59,971 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,972 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr
-2025-08-19 20:04:59,974 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,975 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist
-2025-08-19 20:04:59,976 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,976 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan
-2025-08-19 20:04:59,976 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,976 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc
-2025-08-19 20:04:59,978 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,979 [INFO] PluginManager:220 - loadIPPluginJar : add mdma
-2025-08-19 20:04:59,980 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,980 [INFO] PluginManager:220 - loadIPPluginJar : add nvic
-2025-08-19 20:04:59,981 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,981 [INFO] PluginManager:220 - loadIPPluginJar : add opamp
-2025-08-19 20:04:59,982 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,982 [INFO] PluginManager:220 - loadIPPluginJar : add openamp
-2025-08-19 20:04:59,983 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,983 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm
-2025-08-19 20:04:59,985 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,986 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings
-2025-08-19 20:04:59,986 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,986 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi
-2025-08-19 20:04:59,987 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,987 [INFO] PluginManager:220 - loadIPPluginJar : add radio
-2025-08-19 20:04:59,988 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,988 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility
-2025-08-19 20:04:59,989 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,989 [INFO] PluginManager:220 - loadIPPluginJar : add sai
-2025-08-19 20:04:59,990 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,990 [INFO] PluginManager:220 - loadIPPluginJar : add spi
-2025-08-19 20:04:59,992 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,992 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan
-2025-08-19 20:04:59,993 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,993 [INFO] PluginManager:220 - loadIPPluginJar : add tim
-2025-08-19 20:04:59,994 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,994 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing
-2025-08-19 20:04:59,995 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,995 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb
-2025-08-19 20:04:59,995 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,995 [INFO] PluginManager:220 - loadIPPluginJar : add ts
-2025-08-19 20:04:59,996 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,996 [INFO] PluginManager:220 - loadIPPluginJar : add tsc
-2025-08-19 20:04:59,996 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,996 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd
-2025-08-19 20:04:59,997 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,997 [INFO] PluginManager:220 - loadIPPluginJar : add usart
-2025-08-19 20:04:59,998 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:04:59,998 [INFO] PluginManager:220 - loadIPPluginJar : add usbx
-2025-08-19 20:05:00,086 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:05:00,098 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
-2025-08-19 20:05:00,104 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
-2025-08-19 20:05:00,108 [INFO] CADModel:165 - CPN selected for project level
-2025-08-19 20:05:00,108 [INFO] CADModel:114 - Register for checkConnection events
-2025-08-19 20:05:00,108 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:05:00,108 [ERROR] CADModel:125 - Updater not yet initialized, retry later
-2025-08-19 20:05:00,162 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:05:00,163 [INFO] CADModel:165 - CPN selected for project level
-2025-08-19 20:05:00,163 [INFO] CADModel:114 - Register for checkConnection events
-2025-08-19 20:05:00,163 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:05:00,163 [ERROR] CADModel:125 - Updater not yet initialized, retry later
-2025-08-19 20:05:00,165 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:05:00,202 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:05:00,204 [INFO] DbMcusAds:53 - JSON generation date=Tue Jul 08 01:14:23 PDT 2025 (1751962463582)
-2025-08-19 20:05:00,204 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:05:00,220 [WARN] DetailPanel:346 - Failed to get advertising image, set to default
-2025-08-19 20:05:00,263 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:05:00,264 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:05:00,264 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:05:00,264 [WARN] DetailPanel:346 - Failed to get advertising image, set to default
-2025-08-19 20:05:00,265 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:05:00,284 [ERROR] Updater:1198 - MainUpdater not yet initialized. External WinMGr cannot be set.
-2025-08-19 20:05:00,285 [INFO] Updater:1134 - Updater Version found : 6.15.0
-2025-08-19 20:05:00,294 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
-2025-08-19 20:05:00,304 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] Aug 19, 2025 8:05:00 PM java.util.prefs.FileSystemPreferences$2 run
-2025-08-19 20:05:00,304 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] INFO: Created system preferences directory in java.home.
-2025-08-19 20:05:00,304 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT]
-2025-08-19 20:05:00,313 [INFO] MainUpdater:525 - Copy updater definitions from MX database
-2025-08-19 20:05:00,463 [INFO] MainUpdater:2872 - connection check result : 10
-2025-08-19 20:05:00,463 [INFO] MainUpdater:3604 - Updater definition file requires update
-2025-08-19 20:05:00,464 [INFO] MainUpdater:289 - Updater Check For Update Now.
-2025-08-19 20:05:00,464 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150
-2025-08-19 20:05:00,467 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated)
-2025-08-19 20:05:00,467 [INFO] UserAuth:171 - activating auth plugin
-2025-08-19 20:05:00,469 [INFO] UserAuth:487 - Internet connection configuration mode: 1
-2025-08-19 20:05:00,475 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder
-2025-08-19 20:05:00,545 [INFO] ServerAccessManage:452 - Complete download http(s) 200
-2025-08-19 20:05:00,546 [INFO] ServerAccessManage:509 - Download File updaters.zip
-2025-08-19 20:05:00,853 [INFO] FileExtend:248 - Unzip File : updaters.zip
-2025-08-19 20:05:00,853 [INFO] FileExtend:263 - Standard Zip Deflate
-2025-08-19 20:05:01,021 [INFO] ServerAccessManage:452 - Complete download http(s) 200
-2025-08-19 20:05:01,021 [INFO] ServerAccessManage:509 - Download File PacksControlFlags.xml
-2025-08-19 20:05:01,085 [INFO] ServerAccessManage:452 - Complete download http(s) 200
-2025-08-19 20:05:01,085 [INFO] ServerAccessManage:509 - Download File cubemx.pidx
-2025-08-19 20:05:01,174 [INFO] LoadServerUpdatesThread:375 - End of LoadServerUpdate Thread
-2025-08-19 20:05:01,327 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread
-2025-08-19 20:05:02,407 [INFO] WebApp:169 - Instantiating new browser for Auth
-2025-08-19 20:05:02,706 [INFO] WebApp:463 - Apply proxy settings
-2025-08-19 20:05:02,706 [INFO] WebApp:548 - Chromium requires no authentication
-2025-08-19 20:05:02,710 [INFO] WebApp:491 - Direct internet connection detected
-2025-08-19 20:05:02,723 [INFO] WebApp:900 - Register for checkConnection events
-2025-08-19 20:05:02,723 [INFO] WebApp:463 - Apply proxy settings
-2025-08-19 20:05:02,723 [INFO] WebApp:548 - Chromium requires no authentication
-2025-08-19 20:05:02,723 [INFO] WebApp:491 - Direct internet connection detected
-2025-08-19 20:05:02,806 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENVWB1.1.4.0
-2025-08-19 20:05:02,812 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-ASTRA1.2.0.2
-2025-08-19 20:05:02,816 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SMBUS.2.1.0
-2025-08-19 20:05:02,819 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST60.1.0.0
-2025-08-19 20:05:02,822 [INFO] WebApp:225 - Starting web application
-2025-08-19 20:05:02,822 [INFO] WebApp:593 - Web application path used /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient1/index.html
-2025-08-19 20:05:02,842 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F7.1.1.0
-2025-08-19 20:05:02,867 [WARN] PackLoader:240 - Cannot read IP mode file for Infineon.AIROC-Wi-Fi-Bluetooth-STM32.1.7.1
-2025-08-19 20:05:02,886 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7.3.4.0
-2025-08-19 20:05:02,895 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DISPLAY.3.0.0
-2025-08-19 20:05:02,905 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC10.1.0.0
-2025-08-19 20:05:02,914 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.0.0
-2025-08-19 20:05:02,921 [WARN] PackLoader:240 - Cannot read IP mode file for emotas.I-CUBE-CANOPEN.1.3.0
-2025-08-19 20:05:02,924 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:05:02,932 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:05:02,932 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:05:02,933 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:05:02,938 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.1.0
-2025-08-19 20:05:02,944 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-SMARTAG2.1.2.0
-2025-08-19 20:05:02,947 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-FLIGHT1.5.1.0
-2025-08-19 20:05:02,951 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:05:02,952 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:05:02,952 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:05:02,953 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:05:02,953 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:05:02,956 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WL.2.0.0
-2025-08-19 20:05:02,960 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENV1.5.0.0
-2025-08-19 20:05:02,965 [WARN] PackLoader:240 - Cannot read IP mode file for WES.I-CUBE-Cesium.1.3.0
-2025-08-19 20:05:02,969 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE2.3.3.0
-2025-08-19 20:05:02,974 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC9.1.0.0
-2025-08-19 20:05:02,985 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSL.5.8.0
-2025-08-19 20:05:02,989 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE1.7.1.0
-2025-08-19 20:05:02,992 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfMQTT.1.19.2
-2025-08-19 20:05:02,996 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-EEPRMA1.5.2.0
-2025-08-19 20:05:02,999 [INFO] WebApp:191 - Connection restablished
-2025-08-19 20:05:03,000 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.1.0
-2025-08-19 20:05:03,011 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G0.1.1.0
-2025-08-19 20:05:03,019 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SAFEA1.1.2.2
-2025-08-19 20:05:03,025 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC4.3.0.0
-2025-08-19 20:05:03,032 [WARN] PackLoader:240 - Cannot read IP mode file for EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1
-2025-08-19 20:05:03,036 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-WB05N.2.0.0
-2025-08-19 20:05:03,042 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfTPM.3.8.0
-2025-08-19 20:05:03,046 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TCPP.4.2.0
-2025-08-19 20:05:03,049 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-SIGFOX1.3.2.0
-2025-08-19 20:05:03,053 [WARN] PackLoader:240 - Cannot read IP mode file for ITTIA_DB.I-CUBE-ITTIADB.8.9.0
-2025-08-19 20:05:03,059 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST67W61.1.0.0
-2025-08-19 20:05:03,062 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.2.0
-2025-08-19 20:05:03,082 [WARN] PackLoader:240 - Cannot read IP mode file for SEGGER.I-CUBE-embOS.1.3.1
-2025-08-19 20:05:03,111 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0
-2025-08-19 20:05:03,156 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-MEMS1.11.3.0
-2025-08-19 20:05:03,252 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-PM33A1.1.0.0
-2025-08-19 20:05:03,267 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F4.1.1.0
-2025-08-19 20:05:03,272 [WARN] PackLoader:240 - Cannot read IP mode file for Avnet-IotConnect.X-CUBE-IoTC-DA16k-PMOD.1.0.0
-2025-08-19 20:05:03,276 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ISPU.2.1.0
-2025-08-19 20:05:03,282 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC12.1.0.0
-2025-08-19 20:05:03,293 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L5.2.0.0
-2025-08-19 20:05:03,299 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC6.3.1.0
-2025-08-19 20:05:03,323 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-FREERTOS.1.3.1
-2025-08-19 20:05:03,328 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STAIOTCFT.1.0.0
-2025-08-19 20:05:03,332 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DPower.1.3.0
-2025-08-19 20:05:03,347 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:05:03,348 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L4.2.0.0
-2025-08-19 20:05:03,349 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:05:03,349 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:05:03,350 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:05:03,356 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SFXS2LP1.4.0.0
-2025-08-19 20:05:03,364 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.1.0
-2025-08-19 20:05:03,378 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:05:03,378 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:05:03,380 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WB.2.0.0
-2025-08-19 20:05:03,380 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:05:03,380 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:05:03,381 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:05:03,381 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:05:03,381 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:05:03,385 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-GNSS1.7.0.1
-2025-08-19 20:05:03,390 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOUCHGFX.4.25.0
-2025-08-19 20:05:03,394 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.0.0
-2025-08-19 20:05:03,405 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SUBG2.5.0.0
-2025-08-19 20:05:03,421 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7RS.1.1.0
-2025-08-19 20:05:03,426 [WARN] PackLoader:240 - Cannot read IP mode file for Cesanta.I-CUBE-Mongoose.7.13.0
-2025-08-19 20:05:03,438 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G4.2.0.0
-2025-08-19 20:05:03,442 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSH.1.4.20
-2025-08-19 20:05:03,446 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC7.2.0.0
-2025-08-19 20:05:03,456 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-IPS.3.1.0
-2025-08-19 20:05:03,462 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALS.1.0.2
-2025-08-19 20:05:03,465 [WARN] PackLoader:240 - Cannot read IP mode file for portGmbH.I-Cube-SoM-uGOAL.1.1.0
-2025-08-19 20:05:03,472 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOF1.3.4.3
-2025-08-19 20:05:03,480 [INFO] ThirdParty:978 - Integrity check success = true
-2025-08-19 20:05:03,480 [INFO] IntegrityCheckThread:100 - exiting critical section [integrity check]
-2025-08-19 20:05:03,480 [INFO] IntegrityCheckThread:103 - End integrity checks thread
-2025-08-19 20:05:10,703 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated)
-2025-08-19 20:05:10,704 [INFO] MainUpdater:2872 - connection check result : 10
-2025-08-19 20:05:10,858 [INFO] ApiDb:581 - Connected to CubeFinder SQLite database (/home/kymkim/.stmcufinder/plugins/mcufinder/mcu/cube-finder-db.db)
-2025-08-19 20:05:10,905 [INFO] ApiDb:668 - CubeFinder database Data Model version=2.1
-2025-08-19 20:05:10,905 [INFO] ApiDb:669 - CubeFinder database Configuration version=3.0.39
-2025-08-19 20:05:10,905 [INFO] ApiDb:670 - CubeFinder database generation date=2025-07-24 (1753349077)
-2025-08-19 20:05:10,905 [INFO] ApiDb:671 - CubeFinder database FW Pack versions=[FP-ATR-ASTRA1_V2.0.0, FP-SNS-FLIGHT1_V5.1.0, FP-SNS-MOTENV1_V5.0.0, FP-SNS-MOTENVWB1_V1.4.0, FP-SNS-SMARTAG2_V1.2.0, FP-SNS-STBOX1_V2.0.0, STM32Cube_FW_C0_V1.4.0, STM32Cube_FW_F4_V1.28.2, STM32Cube_FW_F7_V1.17.3, STM32Cube_FW_G0_V1.6.2, STM32Cube_FW_G4_V1.6.1, STM32Cube_FW_H5_V1.5.0, STM32Cube_FW_H7RS_V1.2.0, STM32Cube_FW_H7_V1.12.1, STM32Cube_FW_L0_V1.12.2, STM32Cube_FW_L4_V1.18.1, STM32Cube_FW_L5_V1.5.1, STM32Cube_FW_N6_V1.2.0, STM32Cube_FW_U0_V1.3.0, STM32Cube_FW_U3_V1.2.0, STM32Cube_FW_U5_V1.8.0, STM32Cube_FW_WB0_V1.3.0, STM32Cube_FW_WBA_V1.7.0, STM32Cube_FW_WB_V1.23.0, STM32Cube_FW_WL3_V1.2.0, STM32Cube_FW_WL_V1.3.1, X-CUBE-ALGOBUILD_V1.4.0, X-CUBE-ALS_V1.0.2, X-CUBE-AZRTOS-F4_V1.1.0, X-CUBE-AZRTOS-F7_V1.1.0, X-CUBE-AZRTOS-G0_V1.1.0, X-CUBE-AZRTOS-G4_V2.0.0, X-CUBE-AZRTOS-H7RS_V1.1.0, X-CUBE-AZRTOS-H7_V3.4.0, X-CUBE-AZRTOS-L4_V2.0.0, X-CUBE-AZRTOS-L5_V2.0.0, X-CUBE-AZRTOS-WB_V2.0.0, X-CUBE-AZRTOS-WL_V2.0.0, X-CUBE-BLE1_V7.1.0, X-CUBE-BLE2_V3.3.0, X-CUBE-BLEMGR_V4.1.0, X-CUBE-EEPRMA1_V5.2.0, X-CUBE-FREERTOS_V1.3.1, X-CUBE-GNSS1_V6.0.0, X-CUBE-MEMS1_V11.3.0, X-CUBE-NFC4_V3.0.0, X-CUBE-NFC7_V2.0.0, X-CUBE-SFXS2LP1_V4.0.0, X-CUBE-ST67W61_V1.0.0, X-CUBE-SUBG2_V5.0.0, X-CUBE-TOF1_V3.4.3]
-2025-08-19 20:05:12,346 [INFO] ApiDb:240 - Found 880 in-development CPN: [B-G473E-ZEST1S, B-WB1M-WPAN1, B-WBA5M-WPAN, B-WL5M-SUBG1, NUCLEO-C031C6, NUCLEO-C051C8, NUCLEO-C071RB, NUCLEO-C092RC, NUCLEO-H503RB, NUCLEO-H533RE, NUCLEO-H563ZI, NUCLEO-H7S3L8, NUCLEO-N657X0-Q, NUCLEO-U031R8, NUCLEO-U083RC, NUCLEO-U385RG-Q, NUCLEO-U545RE-Q, NUCLEO-U5A5ZJ-Q, NUCLEO-WB05KZ, NUCLEO-WB07CC, NUCLEO-WB09KE, NUCLEO-WBA52CG, NUCLEO-WBA55CG, NUCLEO-WL33CC1, NUCLEO-WL33CC2, STEVAL-PROTEUS1, STEVAL-SMARTAG2, STEVAL-STWINBX1, STM320518-EVAL, STM32C0116-DK, STM32C011D6Y3TR, STM32C011D6Y6TR, STM32C011F4P3, STM32C011F4P6, STM32C011F4U3, STM32C011F4U6TR, STM32C011F6P3, STM32C011F6P6, STM32C011F6U3, STM32C011F6U6TR, STM32C011J4M3, STM32C011J4M6, STM32C011J6M3, STM32C011J6M6, STM32C0316-DK, STM32C031C4T3, STM32C031C4T6, STM32C031C4U3, STM32C031C4U6, STM32C031C6T3, STM32C031C6T6, STM32C031C6U3, STM32C031C6U6, STM32C031F4P3, STM32C031F4P6, STM32C031F6P3, STM32C031F6P6, STM32C031G4U3, STM32C031G4U6, STM32C031G6U3, STM32C031G6U6, STM32C031K4T3, STM32C031K4T6, STM32C031K4U3, STM32C031K4U6, STM32C031K6T3, STM32C031K6T6, STM32C031K6U3, STM32C031K6U6, STM32C051C6T6, STM32C051C6U6, STM32C051C8T6, STM32C051C8U6, STM32C051D8Y6TR, STM32C051F6P6, STM32C051F8P6, STM32C051G6U6, STM32C051G8U6, STM32C051K6T6, STM32C051K6U6, STM32C051K8T6, STM32C071C8T6, STM32C071C8T6N, STM32C071C8U6, STM32C071C8U6N, STM32C071CBT6, STM32C071CBT6N, STM32C071CBU6, STM32C071CBU6N, STM32C071F8P6, STM32C071F8P6N, STM32C071FBP6, STM32C071FBP6N, STM32C071FBY6TR, STM32C071G8U6, STM32C071G8U6N, STM32C071GBU6, STM32C071GBU6N, STM32C071K8T6, STM32C071K8T6N, STM32C071K8U6, STM32C071K8U6N, STM32C071KBT6, STM32C071KBT6N, STM32C071KBU6, STM32C071KBU6N, STM32C071R8T6, STM32C071R8T6N, STM32C071RBI6N, STM32C071RBT6, STM32C071RBT6N, STM32C091CBT6, STM32C091CBU6, STM32C091CCT6, STM32C091CCU6, STM32C091ECY6TR, STM32C091FBP6, STM32C091FCP6, STM32C091GBU6, STM32C091GCU6, STM32C091KBT6, STM32C091KBU6, STM32C091KCT6, STM32C091KCU6, STM32C091RBT6, STM32C091RCI6, STM32C091RCT6, STM32C092CBT6, STM32C092CBU6, STM32C092CCT6, STM32C092CCU6, STM32C092ECY6TR, STM32C092FBP6, STM32C092FCP6, STM32C092GBU6, STM32C092GCU6, STM32C092KBT6, STM32C092KBU6, STM32C092KCT6, STM32C092KCU6, STM32C092RBT6, STM32C092RCI6, STM32C092RCT6, STM32G071K8TXN, STM32G071K8UXN, STM32G081GBU6N, STM32G081KBT6N, STM32G081KBUXN, STM32G0B1CCT6N, STM32G0B1KCT6, STM32G0B1NEY6TR, STM32G0B1RCT6N, STM32G0C1CCT6, STM32G0C1CCT6N, STM32G0C1CCU6N, STM32G0C1CET6N, STM32G0C1CEU6N, STM32G0C1KCT6, STM32G0C1NEY6TR, STM32G0C1RCI6N, STM32G0C1RCT6N, STM32G0C1REI6N, STM32G0C1RET6N, STM32G0C1VCI6, STM32G0C1VEI6, STM32G411C6T3, STM32G411C6T6, STM32G411C6U3, STM32G411C6U6, STM32G411C8T3, STM32G411C8T6, STM32G411C8U3, STM32G411C8U6, STM32G411CBT3, STM32G411CBT6, STM32G411CBU3, STM32G411CBU6, STM32G411K6T3, STM32G411K6T6, STM32G411K6U3, STM32G411K6U6, STM32G411K8T3, STM32G411K8T6, STM32G411K8U3, STM32G411K8U6, STM32G411KBT3, STM32G411KBT6, STM32G411KBU3, STM32G411KBU6, STM32G411M6T3, STM32G411M6T6, STM32G411M8T3, STM32G411M8T6, STM32G411MBT3, STM32G411MBT6, STM32G411R6T3, STM32G411R6T6, STM32G411R8T3, STM32G411R8T6, STM32G411RBT3, STM32G411RBT6, STM32G414CBT3, STM32G414CBT6, STM32G414CBU3, STM32G414CBU6, STM32G414CCT3, STM32G414CCT6, STM32G414CCU3, STM32G414CCU6, STM32G414MBT3, STM32G414MBT6, STM32G414MCT3, STM32G414MCT6, STM32G414RBT3, STM32G414RBT6, STM32G414RCT3, STM32G414RCT6, STM32G414VBT3, STM32G414VBT6, STM32G414VCT3, STM32G414VCT6, STM32G431CBT3Z, STM32G431RBT3Z, STM32G471CCT6, STM32G471CCU6, STM32G471CET3, STM32G471CET6, STM32G471CEU3, STM32G471CEU6, STM32G471MCT6, STM32G471MET3, STM32G471MET6, STM32G471MEY6TR, STM32G471QCT6, STM32G471QET3, STM32G471RCT6, STM32G471RET3, STM32G471RET6, STM32G471VCH6, STM32G471VCI6, STM32G471VCT6, STM32G471VEH3, STM32G471VEH6, STM32G471VEI3, STM32G471VEI6, STM32G471VET3, STM32G471VET6, STM32G473QET3Z, STM32G473RET3Z, STM32G474CCT6, STM32G491RET3Z, STM32H503CBT6, STM32H503CBU6, STM32H503EBY6TR, STM32H503KBU6, STM32H503RBT6, STM32H523CCT6, STM32H523CCU6, STM32H523CET6, STM32H523CEU6, STM32H523HEY6TR, STM32H523RCT6, STM32H523RET6, STM32H523VCI6, STM32H523VCT6, STM32H523VEI6, STM32H523VET6, STM32H523ZCJ6, STM32H523ZCT6, STM32H523ZEJ6, STM32H523ZET6, STM32H533CET6, STM32H533CEU6, STM32H533HEY6TR, STM32H533RET6, STM32H533VEI6, STM32H533VET6, STM32H533ZEJ6, STM32H533ZET6, STM32H562AGI6, STM32H562AII6, STM32H562IGK6, STM32H562IGT6, STM32H562IIK6, STM32H562IIT6, STM32H562RGT6, STM32H562RGV6, STM32H562RIT6, STM32H562RIV6, STM32H562VGT6, STM32H562VIT6, STM32H562ZGT6, STM32H562ZIT6, STM32H563AGI6, STM32H563AII3Q, STM32H563AII6, STM32H563IGK6, STM32H563IGT6, STM32H563IIK3Q, STM32H563IIK6, STM32H563IIT3Q, STM32H563IIT6, STM32H563MIY3QTR, STM32H563RGT6, STM32H563RGV6, STM32H563RIT6, STM32H563RIV6, STM32H563VGT6, STM32H563VIT3Q, STM32H563VIT6, STM32H563ZGT6, STM32H563ZIT3Q, STM32H563ZIT6, STM32H573AII3Q, STM32H573AII6, STM32H573I-DK, STM32H573IIK3Q, STM32H573IIK6, STM32H573IIT3Q, STM32H573IIT6, STM32H573MIY3QTR, STM32H573RIT6, STM32H573RIV6, STM32H573VIT3Q, STM32H573VIT6, STM32H573ZIT3Q, STM32H573ZIT6, STM32H7R3A8I6, STM32H7R3I8K6, STM32H7R3I8T6, STM32H7R3L8H6, STM32H7R3L8H6H, STM32H7R3R8V6, STM32H7R3V8H6, STM32H7R3V8T6, STM32H7R3V8Y6TR, STM32H7R3Z8J6, STM32H7R3Z8T6, STM32H7R7A8I6, STM32H7R7I8K6, STM32H7R7I8T6, STM32H7R7L8H6, STM32H7R7L8H6H, STM32H7R7Z8J6, STM32H7S3A8I6, STM32H7S3I8K6, STM32H7S3I8T6, STM32H7S3L8H6, STM32H7S3L8H6H, STM32H7S3R8V6, STM32H7S3V8H6, STM32H7S3V8T6, STM32H7S3V8Y6TR, STM32H7S3Z8J6, STM32H7S3Z8T6, STM32H7S78-DK, STM32H7S7A8I6, STM32H7S7I8K6, STM32H7S7I8T6, STM32H7S7L8H6, STM32H7S7L8H6H, STM32H7S7Z8J6, STM32L4R5QGI6STR, STM32MP131AAE3, STM32MP131AAF3, STM32MP131AAG3, STM32MP131CAE3, STM32MP131CAF3, STM32MP131CAG3, STM32MP131DAE7, STM32MP131DAF7, STM32MP131DAG7, STM32MP131FAE7, STM32MP131FAF7, STM32MP131FAG7, STM32MP133AAE3, STM32MP133AAF3, STM32MP133AAG3, STM32MP133CAE3, STM32MP133CAF3, STM32MP133CAG3, STM32MP133DAE7, STM32MP133DAF7, STM32MP133DAG7, STM32MP133FAE7, STM32MP133FAF7, STM32MP133FAG7, STM32MP135AAE3, STM32MP135AAF3, STM32MP135AAG3, STM32MP135CAE3, STM32MP135CAF3, STM32MP135CAG3, STM32MP135DAE7, STM32MP135DAF7, STM32MP135DAG7, STM32MP135F-DK, STM32MP135FAE7, STM32MP135FAF7, STM32MP135FAF7T, STM32MP135FAF7U, STM32MP135FAG7, STM32MP211AAL3, STM32MP211AAM3, STM32MP211AAN3, STM32MP211AAO3, STM32MP211CAL3, STM32MP211CAM3, STM32MP211CAN3, STM32MP211CAO3, STM32MP211DAL3, STM32MP211DAM3, STM32MP211DAN3, STM32MP211DAO3, STM32MP211FAL3, STM32MP211FAM3, STM32MP211FAN3, STM32MP211FAO3, STM32MP213AAL3, STM32MP213AAM3, STM32MP213AAN3, STM32MP213AAO3, STM32MP213CAL3, STM32MP213CAM3, STM32MP213CAN3, STM32MP213CAO3, STM32MP213DAL3, STM32MP213DAM3, STM32MP213DAN3, STM32MP213DAO3, STM32MP213FAL3, STM32MP213FAM3, STM32MP213FAN3, STM32MP213FAO3, STM32MP215AAL3, STM32MP215AAM3, STM32MP215AAN3, STM32MP215AAO3, STM32MP215CAL3, STM32MP215CAM3, STM32MP215CAN3, STM32MP215CAO3, STM32MP215DAL3, STM32MP215DAM3, STM32MP215DAN3, STM32MP215DAO3, STM32MP215F-DK, STM32MP215FAL3, STM32MP215FAM3, STM32MP215FAN3, STM32MP215FAO3, STM32MP231AAJ3, STM32MP231AAK3, STM32MP231AAL3, STM32MP231CAJ3, STM32MP231CAK3, STM32MP231CAL3, STM32MP231DAJ3, STM32MP231DAK3, STM32MP231DAL3, STM32MP231FAJ3, STM32MP231FAK3, STM32MP231FAL3, STM32MP233AAJ3, STM32MP233AAK3, STM32MP233AAL3, STM32MP233CAJ3, STM32MP233CAK3, STM32MP233CAL3, STM32MP233DAJ3, STM32MP233DAK3, STM32MP233DAL3, STM32MP233FAJ3, STM32MP233FAK3, STM32MP233FAL3, STM32MP235AAJ3, STM32MP235AAK3, STM32MP235AAL3, STM32MP235CAJ3, STM32MP235CAK3, STM32MP235CAL3, STM32MP235DAJ3, STM32MP235DAK3, STM32MP235DAL3, STM32MP235FAJ3, STM32MP235FAK3, STM32MP235FAL3, STM32MP251AAI3, STM32MP251AAK3, STM32MP251AAL3, STM32MP251CAI3, STM32MP251CAK3, STM32MP251CAL3, STM32MP251DAI3, STM32MP251DAK3, STM32MP251DAL3, STM32MP251FAI3, STM32MP251FAK3, STM32MP251FAL3, STM32MP253AAI3, STM32MP253AAK3, STM32MP253AAL3, STM32MP253CAI3, STM32MP253CAK3, STM32MP253CAL3, STM32MP253DAI3, STM32MP253DAK3, STM32MP253DAL3, STM32MP253FAI3, STM32MP253FAK3, STM32MP253FAL3, STM32MP255AAI3, STM32MP255AAK3, STM32MP255AAL3, STM32MP255CAI3, STM32MP255CAK3, STM32MP255CAL3, STM32MP255DAI3, STM32MP255DAK3, STM32MP255DAL3, STM32MP255FAI3, STM32MP255FAK3, STM32MP255FAL3, STM32MP257AAI3, STM32MP257AAK3, STM32MP257AAL3, STM32MP257CAI3, STM32MP257CAK3, STM32MP257CAL3, STM32MP257DAI3, STM32MP257DAK3, STM32MP257DAL3, STM32MP257F-DK, STM32MP257F-EV1, STM32MP257FAI3, STM32MP257FAK3, STM32MP257FAL3, STM32N645A0H3Q, STM32N645B0H3Q, STM32N645I0H3Q, STM32N645L0H3Q, STM32N645X0H3Q, STM32N645Z0H3Q, STM32N647A0H3Q, STM32N647B0H3Q, STM32N647I0H3Q, STM32N647L0H3Q, STM32N647X0H3Q, STM32N647Z0H3Q, STM32N655A0H3Q, STM32N655B0H3Q, STM32N655I0H3Q, STM32N655L0H3Q, STM32N655X0H3Q, STM32N655Z0H3Q, STM32N6570-DK, STM32N657A0H3Q, STM32N657B0H3Q, STM32N657I0H3Q, STM32N657L0H3Q, STM32N657X0H3Q, STM32N657Z0H3Q, STM32U031C6T6, STM32U031C6U6, STM32U031C8T6, STM32U031C8U6, STM32U031F4P6, STM32U031F6P6, STM32U031F8P6, STM32U031G6Y6TR, STM32U031G8Y6TR, STM32U031K4U6, STM32U031K6U6, STM32U031K8U6, STM32U031R6I6, STM32U031R6T6, STM32U031R8I6, STM32U031R8T6, STM32U073C8T6, STM32U073C8U6, STM32U073CBT6, STM32U073CBU6, STM32U073CCT6, STM32U073CCU6, STM32U073H8Y6TR, STM32U073HBY6TR, STM32U073HCY6TR, STM32U073K8U6, STM32U073KBU6, STM32U073KCU6, STM32U073M8I6, STM32U073M8T6, STM32U073MBI6, STM32U073MBT6, STM32U073MCI6, STM32U073MCT6, STM32U073R8I6, STM32U073R8T6, STM32U073RBI6, STM32U073RBT6, STM32U073RCI6, STM32U073RCT6, STM32U083C-DK, STM32U083CCT6, STM32U083CCU6, STM32U083HCY6TR, STM32U083KCU6, STM32U083MCI6, STM32U083MCT6, STM32U083RCI6, STM32U083RCT6, STM32U375CET6, STM32U375CET6Q, STM32U375CEU6, STM32U375CEU6Q, STM32U375CEY6QTR, STM32U375CGT6, STM32U375CGT6Q, STM32U375CGU6, STM32U375CGU6Q, STM32U375CGY6QTR, STM32U375KEU6, STM32U375KGU6, STM32U375REI6, STM32U375REI6Q, STM32U375RET6, STM32U375RET6Q, STM32U375REY6GTR, STM32U375REY6QTR, STM32U375RGI6, STM32U375RGI6Q, STM32U375RGT6, STM32U375RGT6Q, STM32U375RGY6GTR, STM32U375RGY6QTR, STM32U375VEI6, STM32U375VEI6Q, STM32U375VET6, STM32U375VET6Q, STM32U375VGI6, STM32U375VGI6Q, STM32U375VGT6, STM32U375VGT6Q, STM32U385CGT6, STM32U385CGT6Q, STM32U385CGU6, STM32U385CGU6Q, STM32U385CGY6QTR, STM32U385KGU6, STM32U385RGI6, STM32U385RGI6Q, STM32U385RGT6, STM32U385RGT6Q, STM32U385RGY6GTR, STM32U385RGY6QTR, STM32U385VGI6, STM32U385VGI6Q, STM32U385VGT6, STM32U385VGT6Q, STM32U535CBT6, STM32U535CBT6Q, STM32U535CBU6, STM32U535CBU6Q, STM32U535CCT6, STM32U535CCT6Q, STM32U535CCU6, STM32U535CCU6Q, STM32U535CET6, STM32U535CET6Q, STM32U535CEU6, STM32U535CEU6Q, STM32U535JEY6QTR, STM32U535NCY6QTR, STM32U535NEY6QTR, STM32U535RBI6, STM32U535RBI6Q, STM32U535RBT6, STM32U535RBT6Q, STM32U535RCI6, STM32U535RCI6Q, STM32U535RCT6, STM32U535RCT6Q, STM32U535REI6, STM32U535REI6Q, STM32U535RET6, STM32U535RET6Q, STM32U535VCI6, STM32U535VCI6Q, STM32U535VCT6, STM32U535VCT6Q, STM32U535VEI6, STM32U535VEI6Q, STM32U535VET6, STM32U535VET6Q, STM32U545CET6, STM32U545CET6Q, STM32U545CEU6, STM32U545CEU6Q, STM32U545JEY6QTR, STM32U545NEY6QTR, STM32U545REI6, STM32U545REI6Q, STM32U545RET6, STM32U545RET6Q, STM32U545VEI6, STM32U545VEI6Q, STM32U545VET6, STM32U545VET6Q, STM32U595AIH6, STM32U595AIH6Q, STM32U595AJH6, STM32U595AJH6Q, STM32U595QII6, STM32U595QII6Q, STM32U595QJI6, STM32U595QJI6Q, STM32U595RIT6, STM32U595RIT6Q, STM32U595RJT6, STM32U595RJT6Q, STM32U595VIT6, STM32U595VIT6Q, STM32U595VJT6, STM32U595VJT6Q, STM32U595ZIT6, STM32U595ZIT6Q, STM32U595ZIY6QTR, STM32U595ZJT6, STM32U595ZJT6Q, STM32U595ZJY6QTR, STM32U599BJY6QTR, STM32U599NIH6Q, STM32U599NJH6Q, STM32U599VIT6Q, STM32U599VJT6, STM32U599VJT6Q, STM32U599ZIT6Q, STM32U599ZIY6QTR, STM32U599ZJT6Q, STM32U599ZJY6QTR, STM32U5A5AJH6, STM32U5A5AJH6Q, STM32U5A5QII3Q , STM32U5A5QJI6, STM32U5A5QJI6Q, STM32U5A5RJT6, STM32U5A5RJT6Q, STM32U5A5VJT6, STM32U5A5VJT6Q, STM32U5A5ZJT6, STM32U5A5ZJT6Q, STM32U5A5ZJY6QTR, STM32U5A9BJY6QTR, STM32U5A9J-DK, STM32U5A9NJH6Q, STM32U5A9VJT6Q, STM32U5A9ZJT6Q, STM32U5A9ZJY6QTR, STM32U5F7VIT6, STM32U5F7VIT6Q, STM32U5F7VJT6, STM32U5F7VJT6Q, STM32U5F9BJY6QTR, STM32U5F9NJH6Q, STM32U5F9VIT6Q, STM32U5F9VJT6Q, STM32U5F9ZIJ6QTR, STM32U5F9ZIT6Q, STM32U5F9ZJJ6QTR, STM32U5F9ZJT6Q, STM32U5G7VJT6, STM32U5G7VJT6Q, STM32U5G9BJY6QTR, STM32U5G9J-DK1, STM32U5G9J-DK2, STM32U5G9NJH6Q, STM32U5G9VJT6Q, STM32U5G9ZJJ6QTR, STM32U5G9ZJT6Q, STM32WB05KZV6TR, STM32WB05KZV7TR, STM32WB05TZF6TR, STM32WB05TZF7TR, STM32WB06CCF6TR, STM32WB06CCF7TR, STM32WB06CCV6TR, STM32WB06CCV7TR, STM32WB06KCV6TR, STM32WB06KCV7TR, STM32WB07CCF6TR, STM32WB07CCF7TR, STM32WB07CCV6TR, STM32WB07CCV7TR, STM32WB07KCV6TR, STM32WB07KCV7TR, STM32WB09KEV6TR, STM32WB09KEV7TR, STM32WB09TEF6TR, STM32WB09TEF7TR, STM32WB1MMCH6, STM32WBA50KGU6, STM32WBA50KGU6TR, STM32WBA52CEU6, STM32WBA52CEU6TR, STM32WBA52CEU7, STM32WBA52CEU7TR, STM32WBA52CGU6, STM32WBA52CGU6TR, STM32WBA52CGU6U, STM32WBA52CGU7, STM32WBA52CGU7TR, STM32WBA52KEU6, STM32WBA52KEU6TR, STM32WBA52KGU6, STM32WBA52KGU6TR, STM32WBA54CEU6, STM32WBA54CEU6TR, STM32WBA54CEU7, STM32WBA54CEU7TR, STM32WBA54CGU6, STM32WBA54CGU6TR, STM32WBA54CGU7, STM32WBA54CGU7TR, STM32WBA54KEU6, STM32WBA54KEU6TR, STM32WBA54KEU7, STM32WBA54KEU7TR, STM32WBA54KGU6, STM32WBA54KGU6TR, STM32WBA54KGU7, STM32WBA54KGU7TR, STM32WBA55CEU6, STM32WBA55CEU6TR, STM32WBA55CEU7, STM32WBA55CEU7TR, STM32WBA55CGU6, STM32WBA55CGU6TR, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CGU7TR, STM32WBA55G-DK1, STM32WBA55HEF6, STM32WBA55HEF7, STM32WBA55HGF6, STM32WBA55HGF7, STM32WBA55UEI6, STM32WBA55UEI6TR, STM32WBA55UEI7, STM32WBA55UEI7TR, STM32WBA55UGI6, STM32WBA55UGI6TR, STM32WBA55UGI7, STM32WBA55UGI7TR, STM32WBA5MMGH6TR, STM32WBA62MGF6, STM32WBA62MIF6, STM32WBA65MGF7, STM32WBA65MIF6, STM32WBA65MIF7, STM32WL30K8V6, STM32WL30KBV6, STM32WL31C8V6, STM32WL31CBV6, STM32WL31K8V6, STM32WL31KBV6, STM32WL33C8V6, STM32WL33C8V6X, STM32WL33CBV6, STM32WL33CBV6X, STM32WL33CCV6, STM32WL33CCV6A, STM32WL33CCV6X, STM32WL33K8V7, STM32WL33K8V7X, STM32WL33KBV7 , STM32WL33KBV7X, STM32WL33KCV7, STM32WL33KCV7X, STM32WL5MOCH6, STM32WL5MOCH6TR]
-2025-08-19 20:05:12,349 [INFO] DbMcus:218 - Found 4801 MCUs, 4801 are supported
-2025-08-19 20:05:12,349 [INFO] ApiDb:414 - User favorites file not found: /home/kymkim/.stm32cubeide/favorites.mcus.txt
-2025-08-19 20:05:12,349 [INFO] DbMcus:224 - Set 0 / 0 favorites MCUs
-2025-08-19 20:05:12,573 [INFO] ApiDb:668 - CubeFinder database Data Model version=2.1
-2025-08-19 20:05:12,574 [INFO] ApiDb:669 - CubeFinder database Configuration version=3.0.39
-2025-08-19 20:05:12,574 [INFO] ApiDb:670 - CubeFinder database generation date=2025-07-24 (1753349077)
-2025-08-19 20:05:12,574 [INFO] ApiDb:671 - CubeFinder database FW Pack versions=[FP-ATR-ASTRA1_V2.0.0, FP-SNS-FLIGHT1_V5.1.0, FP-SNS-MOTENV1_V5.0.0, FP-SNS-MOTENVWB1_V1.4.0, FP-SNS-SMARTAG2_V1.2.0, FP-SNS-STBOX1_V2.0.0, STM32Cube_FW_C0_V1.4.0, STM32Cube_FW_F4_V1.28.2, STM32Cube_FW_F7_V1.17.3, STM32Cube_FW_G0_V1.6.2, STM32Cube_FW_G4_V1.6.1, STM32Cube_FW_H5_V1.5.0, STM32Cube_FW_H7RS_V1.2.0, STM32Cube_FW_H7_V1.12.1, STM32Cube_FW_L0_V1.12.2, STM32Cube_FW_L4_V1.18.1, STM32Cube_FW_L5_V1.5.1, STM32Cube_FW_N6_V1.2.0, STM32Cube_FW_U0_V1.3.0, STM32Cube_FW_U3_V1.2.0, STM32Cube_FW_U5_V1.8.0, STM32Cube_FW_WB0_V1.3.0, STM32Cube_FW_WBA_V1.7.0, STM32Cube_FW_WB_V1.23.0, STM32Cube_FW_WL3_V1.2.0, STM32Cube_FW_WL_V1.3.1, X-CUBE-ALGOBUILD_V1.4.0, X-CUBE-ALS_V1.0.2, X-CUBE-AZRTOS-F4_V1.1.0, X-CUBE-AZRTOS-F7_V1.1.0, X-CUBE-AZRTOS-G0_V1.1.0, X-CUBE-AZRTOS-G4_V2.0.0, X-CUBE-AZRTOS-H7RS_V1.1.0, X-CUBE-AZRTOS-H7_V3.4.0, X-CUBE-AZRTOS-L4_V2.0.0, X-CUBE-AZRTOS-L5_V2.0.0, X-CUBE-AZRTOS-WB_V2.0.0, X-CUBE-AZRTOS-WL_V2.0.0, X-CUBE-BLE1_V7.1.0, X-CUBE-BLE2_V3.3.0, X-CUBE-BLEMGR_V4.1.0, X-CUBE-EEPRMA1_V5.2.0, X-CUBE-FREERTOS_V1.3.1, X-CUBE-GNSS1_V6.0.0, X-CUBE-MEMS1_V11.3.0, X-CUBE-NFC4_V3.0.0, X-CUBE-NFC7_V2.0.0, X-CUBE-SFXS2LP1_V4.0.0, X-CUBE-ST67W61_V1.0.0, X-CUBE-SUBG2_V5.0.0, X-CUBE-TOF1_V3.4.3]
-2025-08-19 20:05:12,599 [INFO] DbBoardsSqlite:226 - include board P-NUCLEO-WB55-NUCLEO as a kit item of type 'Nucleo-64'
-2025-08-19 20:05:12,599 [INFO] DbBoardsSqlite:226 - include board P-NUCLEO-WB55-USBDONGLE as a kit item of type 'Nucleo USB Dongle'
-2025-08-19 20:05:12,600 [INFO] DbBoardsSqlite:226 - include board STEVAL-IDP005V1 as a kit item of type 'Evaluation Board'
-2025-08-19 20:05:12,600 [INFO] DbBoardsSqlite:226 - include board STEVAL-IDP005V2 as a kit item of type 'Evaluation Board'
-2025-08-19 20:05:12,626 [INFO] ApiDb:240 - Found 880 in-development CPN: [B-G473E-ZEST1S, B-WB1M-WPAN1, B-WBA5M-WPAN, B-WL5M-SUBG1, NUCLEO-C031C6, NUCLEO-C051C8, NUCLEO-C071RB, NUCLEO-C092RC, NUCLEO-H503RB, NUCLEO-H533RE, NUCLEO-H563ZI, NUCLEO-H7S3L8, NUCLEO-N657X0-Q, NUCLEO-U031R8, NUCLEO-U083RC, NUCLEO-U385RG-Q, NUCLEO-U545RE-Q, NUCLEO-U5A5ZJ-Q, NUCLEO-WB05KZ, NUCLEO-WB07CC, NUCLEO-WB09KE, NUCLEO-WBA52CG, NUCLEO-WBA55CG, NUCLEO-WL33CC1, NUCLEO-WL33CC2, STEVAL-PROTEUS1, STEVAL-SMARTAG2, STEVAL-STWINBX1, STM320518-EVAL, STM32C0116-DK, STM32C011D6Y3TR, STM32C011D6Y6TR, STM32C011F4P3, STM32C011F4P6, STM32C011F4U3, STM32C011F4U6TR, STM32C011F6P3, STM32C011F6P6, STM32C011F6U3, STM32C011F6U6TR, STM32C011J4M3, STM32C011J4M6, STM32C011J6M3, STM32C011J6M6, STM32C0316-DK, STM32C031C4T3, STM32C031C4T6, STM32C031C4U3, STM32C031C4U6, STM32C031C6T3, STM32C031C6T6, STM32C031C6U3, STM32C031C6U6, STM32C031F4P3, STM32C031F4P6, STM32C031F6P3, STM32C031F6P6, STM32C031G4U3, STM32C031G4U6, STM32C031G6U3, STM32C031G6U6, STM32C031K4T3, STM32C031K4T6, STM32C031K4U3, STM32C031K4U6, STM32C031K6T3, STM32C031K6T6, STM32C031K6U3, STM32C031K6U6, STM32C051C6T6, STM32C051C6U6, STM32C051C8T6, STM32C051C8U6, STM32C051D8Y6TR, STM32C051F6P6, STM32C051F8P6, STM32C051G6U6, STM32C051G8U6, STM32C051K6T6, STM32C051K6U6, STM32C051K8T6, STM32C071C8T6, STM32C071C8T6N, STM32C071C8U6, STM32C071C8U6N, STM32C071CBT6, STM32C071CBT6N, STM32C071CBU6, STM32C071CBU6N, STM32C071F8P6, STM32C071F8P6N, STM32C071FBP6, STM32C071FBP6N, STM32C071FBY6TR, STM32C071G8U6, STM32C071G8U6N, STM32C071GBU6, STM32C071GBU6N, STM32C071K8T6, STM32C071K8T6N, STM32C071K8U6, STM32C071K8U6N, STM32C071KBT6, STM32C071KBT6N, STM32C071KBU6, STM32C071KBU6N, STM32C071R8T6, STM32C071R8T6N, STM32C071RBI6N, STM32C071RBT6, STM32C071RBT6N, STM32C091CBT6, STM32C091CBU6, STM32C091CCT6, STM32C091CCU6, STM32C091ECY6TR, STM32C091FBP6, STM32C091FCP6, STM32C091GBU6, STM32C091GCU6, STM32C091KBT6, STM32C091KBU6, STM32C091KCT6, STM32C091KCU6, STM32C091RBT6, STM32C091RCI6, STM32C091RCT6, STM32C092CBT6, STM32C092CBU6, STM32C092CCT6, STM32C092CCU6, STM32C092ECY6TR, STM32C092FBP6, STM32C092FCP6, STM32C092GBU6, STM32C092GCU6, STM32C092KBT6, STM32C092KBU6, STM32C092KCT6, STM32C092KCU6, STM32C092RBT6, STM32C092RCI6, STM32C092RCT6, STM32G071K8TXN, STM32G071K8UXN, STM32G081GBU6N, STM32G081KBT6N, STM32G081KBUXN, STM32G0B1CCT6N, STM32G0B1KCT6, STM32G0B1NEY6TR, STM32G0B1RCT6N, STM32G0C1CCT6, STM32G0C1CCT6N, STM32G0C1CCU6N, STM32G0C1CET6N, STM32G0C1CEU6N, STM32G0C1KCT6, STM32G0C1NEY6TR, STM32G0C1RCI6N, STM32G0C1RCT6N, STM32G0C1REI6N, STM32G0C1RET6N, STM32G0C1VCI6, STM32G0C1VEI6, STM32G411C6T3, STM32G411C6T6, STM32G411C6U3, STM32G411C6U6, STM32G411C8T3, STM32G411C8T6, STM32G411C8U3, STM32G411C8U6, STM32G411CBT3, STM32G411CBT6, STM32G411CBU3, STM32G411CBU6, STM32G411K6T3, STM32G411K6T6, STM32G411K6U3, STM32G411K6U6, STM32G411K8T3, STM32G411K8T6, STM32G411K8U3, STM32G411K8U6, STM32G411KBT3, STM32G411KBT6, STM32G411KBU3, STM32G411KBU6, STM32G411M6T3, STM32G411M6T6, STM32G411M8T3, STM32G411M8T6, STM32G411MBT3, STM32G411MBT6, STM32G411R6T3, STM32G411R6T6, STM32G411R8T3, STM32G411R8T6, STM32G411RBT3, STM32G411RBT6, STM32G414CBT3, STM32G414CBT6, STM32G414CBU3, STM32G414CBU6, STM32G414CCT3, STM32G414CCT6, STM32G414CCU3, STM32G414CCU6, STM32G414MBT3, STM32G414MBT6, STM32G414MCT3, STM32G414MCT6, STM32G414RBT3, STM32G414RBT6, STM32G414RCT3, STM32G414RCT6, STM32G414VBT3, STM32G414VBT6, STM32G414VCT3, STM32G414VCT6, STM32G431CBT3Z, STM32G431RBT3Z, STM32G471CCT6, STM32G471CCU6, STM32G471CET3, STM32G471CET6, STM32G471CEU3, STM32G471CEU6, STM32G471MCT6, STM32G471MET3, STM32G471MET6, STM32G471MEY6TR, STM32G471QCT6, STM32G471QET3, STM32G471RCT6, STM32G471RET3, STM32G471RET6, STM32G471VCH6, STM32G471VCI6, STM32G471VCT6, STM32G471VEH3, STM32G471VEH6, STM32G471VEI3, STM32G471VEI6, STM32G471VET3, STM32G471VET6, STM32G473QET3Z, STM32G473RET3Z, STM32G474CCT6, STM32G491RET3Z, STM32H503CBT6, STM32H503CBU6, STM32H503EBY6TR, STM32H503KBU6, STM32H503RBT6, STM32H523CCT6, STM32H523CCU6, STM32H523CET6, STM32H523CEU6, STM32H523HEY6TR, STM32H523RCT6, STM32H523RET6, STM32H523VCI6, STM32H523VCT6, STM32H523VEI6, STM32H523VET6, STM32H523ZCJ6, STM32H523ZCT6, STM32H523ZEJ6, STM32H523ZET6, STM32H533CET6, STM32H533CEU6, STM32H533HEY6TR, STM32H533RET6, STM32H533VEI6, STM32H533VET6, STM32H533ZEJ6, STM32H533ZET6, STM32H562AGI6, STM32H562AII6, STM32H562IGK6, STM32H562IGT6, STM32H562IIK6, STM32H562IIT6, STM32H562RGT6, STM32H562RGV6, STM32H562RIT6, STM32H562RIV6, STM32H562VGT6, STM32H562VIT6, STM32H562ZGT6, STM32H562ZIT6, STM32H563AGI6, STM32H563AII3Q, STM32H563AII6, STM32H563IGK6, STM32H563IGT6, STM32H563IIK3Q, STM32H563IIK6, STM32H563IIT3Q, STM32H563IIT6, STM32H563MIY3QTR, STM32H563RGT6, STM32H563RGV6, STM32H563RIT6, STM32H563RIV6, STM32H563VGT6, STM32H563VIT3Q, STM32H563VIT6, STM32H563ZGT6, STM32H563ZIT3Q, STM32H563ZIT6, STM32H573AII3Q, STM32H573AII6, STM32H573I-DK, STM32H573IIK3Q, STM32H573IIK6, STM32H573IIT3Q, STM32H573IIT6, STM32H573MIY3QTR, STM32H573RIT6, STM32H573RIV6, STM32H573VIT3Q, STM32H573VIT6, STM32H573ZIT3Q, STM32H573ZIT6, STM32H7R3A8I6, STM32H7R3I8K6, STM32H7R3I8T6, STM32H7R3L8H6, STM32H7R3L8H6H, STM32H7R3R8V6, STM32H7R3V8H6, STM32H7R3V8T6, STM32H7R3V8Y6TR, STM32H7R3Z8J6, STM32H7R3Z8T6, STM32H7R7A8I6, STM32H7R7I8K6, STM32H7R7I8T6, STM32H7R7L8H6, STM32H7R7L8H6H, STM32H7R7Z8J6, STM32H7S3A8I6, STM32H7S3I8K6, STM32H7S3I8T6, STM32H7S3L8H6, STM32H7S3L8H6H, STM32H7S3R8V6, STM32H7S3V8H6, STM32H7S3V8T6, STM32H7S3V8Y6TR, STM32H7S3Z8J6, STM32H7S3Z8T6, STM32H7S78-DK, STM32H7S7A8I6, STM32H7S7I8K6, STM32H7S7I8T6, STM32H7S7L8H6, STM32H7S7L8H6H, STM32H7S7Z8J6, STM32L4R5QGI6STR, STM32MP131AAE3, STM32MP131AAF3, STM32MP131AAG3, STM32MP131CAE3, STM32MP131CAF3, STM32MP131CAG3, STM32MP131DAE7, STM32MP131DAF7, STM32MP131DAG7, STM32MP131FAE7, STM32MP131FAF7, STM32MP131FAG7, STM32MP133AAE3, STM32MP133AAF3, STM32MP133AAG3, STM32MP133CAE3, STM32MP133CAF3, STM32MP133CAG3, STM32MP133DAE7, STM32MP133DAF7, STM32MP133DAG7, STM32MP133FAE7, STM32MP133FAF7, STM32MP133FAG7, STM32MP135AAE3, STM32MP135AAF3, STM32MP135AAG3, STM32MP135CAE3, STM32MP135CAF3, STM32MP135CAG3, STM32MP135DAE7, STM32MP135DAF7, STM32MP135DAG7, STM32MP135F-DK, STM32MP135FAE7, STM32MP135FAF7, STM32MP135FAF7T, STM32MP135FAF7U, STM32MP135FAG7, STM32MP211AAL3, STM32MP211AAM3, STM32MP211AAN3, STM32MP211AAO3, STM32MP211CAL3, STM32MP211CAM3, STM32MP211CAN3, STM32MP211CAO3, STM32MP211DAL3, STM32MP211DAM3, STM32MP211DAN3, STM32MP211DAO3, STM32MP211FAL3, STM32MP211FAM3, STM32MP211FAN3, STM32MP211FAO3, STM32MP213AAL3, STM32MP213AAM3, STM32MP213AAN3, STM32MP213AAO3, STM32MP213CAL3, STM32MP213CAM3, STM32MP213CAN3, STM32MP213CAO3, STM32MP213DAL3, STM32MP213DAM3, STM32MP213DAN3, STM32MP213DAO3, STM32MP213FAL3, STM32MP213FAM3, STM32MP213FAN3, STM32MP213FAO3, STM32MP215AAL3, STM32MP215AAM3, STM32MP215AAN3, STM32MP215AAO3, STM32MP215CAL3, STM32MP215CAM3, STM32MP215CAN3, STM32MP215CAO3, STM32MP215DAL3, STM32MP215DAM3, STM32MP215DAN3, STM32MP215DAO3, STM32MP215F-DK, STM32MP215FAL3, STM32MP215FAM3, STM32MP215FAN3, STM32MP215FAO3, STM32MP231AAJ3, STM32MP231AAK3, STM32MP231AAL3, STM32MP231CAJ3, STM32MP231CAK3, STM32MP231CAL3, STM32MP231DAJ3, STM32MP231DAK3, STM32MP231DAL3, STM32MP231FAJ3, STM32MP231FAK3, STM32MP231FAL3, STM32MP233AAJ3, STM32MP233AAK3, STM32MP233AAL3, STM32MP233CAJ3, STM32MP233CAK3, STM32MP233CAL3, STM32MP233DAJ3, STM32MP233DAK3, STM32MP233DAL3, STM32MP233FAJ3, STM32MP233FAK3, STM32MP233FAL3, STM32MP235AAJ3, STM32MP235AAK3, STM32MP235AAL3, STM32MP235CAJ3, STM32MP235CAK3, STM32MP235CAL3, STM32MP235DAJ3, STM32MP235DAK3, STM32MP235DAL3, STM32MP235FAJ3, STM32MP235FAK3, STM32MP235FAL3, STM32MP251AAI3, STM32MP251AAK3, STM32MP251AAL3, STM32MP251CAI3, STM32MP251CAK3, STM32MP251CAL3, STM32MP251DAI3, STM32MP251DAK3, STM32MP251DAL3, STM32MP251FAI3, STM32MP251FAK3, STM32MP251FAL3, STM32MP253AAI3, STM32MP253AAK3, STM32MP253AAL3, STM32MP253CAI3, STM32MP253CAK3, STM32MP253CAL3, STM32MP253DAI3, STM32MP253DAK3, STM32MP253DAL3, STM32MP253FAI3, STM32MP253FAK3, STM32MP253FAL3, STM32MP255AAI3, STM32MP255AAK3, STM32MP255AAL3, STM32MP255CAI3, STM32MP255CAK3, STM32MP255CAL3, STM32MP255DAI3, STM32MP255DAK3, STM32MP255DAL3, STM32MP255FAI3, STM32MP255FAK3, STM32MP255FAL3, STM32MP257AAI3, STM32MP257AAK3, STM32MP257AAL3, STM32MP257CAI3, STM32MP257CAK3, STM32MP257CAL3, STM32MP257DAI3, STM32MP257DAK3, STM32MP257DAL3, STM32MP257F-DK, STM32MP257F-EV1, STM32MP257FAI3, STM32MP257FAK3, STM32MP257FAL3, STM32N645A0H3Q, STM32N645B0H3Q, STM32N645I0H3Q, STM32N645L0H3Q, STM32N645X0H3Q, STM32N645Z0H3Q, STM32N647A0H3Q, STM32N647B0H3Q, STM32N647I0H3Q, STM32N647L0H3Q, STM32N647X0H3Q, STM32N647Z0H3Q, STM32N655A0H3Q, STM32N655B0H3Q, STM32N655I0H3Q, STM32N655L0H3Q, STM32N655X0H3Q, STM32N655Z0H3Q, STM32N6570-DK, STM32N657A0H3Q, STM32N657B0H3Q, STM32N657I0H3Q, STM32N657L0H3Q, STM32N657X0H3Q, STM32N657Z0H3Q, STM32U031C6T6, STM32U031C6U6, STM32U031C8T6, STM32U031C8U6, STM32U031F4P6, STM32U031F6P6, STM32U031F8P6, STM32U031G6Y6TR, STM32U031G8Y6TR, STM32U031K4U6, STM32U031K6U6, STM32U031K8U6, STM32U031R6I6, STM32U031R6T6, STM32U031R8I6, STM32U031R8T6, STM32U073C8T6, STM32U073C8U6, STM32U073CBT6, STM32U073CBU6, STM32U073CCT6, STM32U073CCU6, STM32U073H8Y6TR, STM32U073HBY6TR, STM32U073HCY6TR, STM32U073K8U6, STM32U073KBU6, STM32U073KCU6, STM32U073M8I6, STM32U073M8T6, STM32U073MBI6, STM32U073MBT6, STM32U073MCI6, STM32U073MCT6, STM32U073R8I6, STM32U073R8T6, STM32U073RBI6, STM32U073RBT6, STM32U073RCI6, STM32U073RCT6, STM32U083C-DK, STM32U083CCT6, STM32U083CCU6, STM32U083HCY6TR, STM32U083KCU6, STM32U083MCI6, STM32U083MCT6, STM32U083RCI6, STM32U083RCT6, STM32U375CET6, STM32U375CET6Q, STM32U375CEU6, STM32U375CEU6Q, STM32U375CEY6QTR, STM32U375CGT6, STM32U375CGT6Q, STM32U375CGU6, STM32U375CGU6Q, STM32U375CGY6QTR, STM32U375KEU6, STM32U375KGU6, STM32U375REI6, STM32U375REI6Q, STM32U375RET6, STM32U375RET6Q, STM32U375REY6GTR, STM32U375REY6QTR, STM32U375RGI6, STM32U375RGI6Q, STM32U375RGT6, STM32U375RGT6Q, STM32U375RGY6GTR, STM32U375RGY6QTR, STM32U375VEI6, STM32U375VEI6Q, STM32U375VET6, STM32U375VET6Q, STM32U375VGI6, STM32U375VGI6Q, STM32U375VGT6, STM32U375VGT6Q, STM32U385CGT6, STM32U385CGT6Q, STM32U385CGU6, STM32U385CGU6Q, STM32U385CGY6QTR, STM32U385KGU6, STM32U385RGI6, STM32U385RGI6Q, STM32U385RGT6, STM32U385RGT6Q, STM32U385RGY6GTR, STM32U385RGY6QTR, STM32U385VGI6, STM32U385VGI6Q, STM32U385VGT6, STM32U385VGT6Q, STM32U535CBT6, STM32U535CBT6Q, STM32U535CBU6, STM32U535CBU6Q, STM32U535CCT6, STM32U535CCT6Q, STM32U535CCU6, STM32U535CCU6Q, STM32U535CET6, STM32U535CET6Q, STM32U535CEU6, STM32U535CEU6Q, STM32U535JEY6QTR, STM32U535NCY6QTR, STM32U535NEY6QTR, STM32U535RBI6, STM32U535RBI6Q, STM32U535RBT6, STM32U535RBT6Q, STM32U535RCI6, STM32U535RCI6Q, STM32U535RCT6, STM32U535RCT6Q, STM32U535REI6, STM32U535REI6Q, STM32U535RET6, STM32U535RET6Q, STM32U535VCI6, STM32U535VCI6Q, STM32U535VCT6, STM32U535VCT6Q, STM32U535VEI6, STM32U535VEI6Q, STM32U535VET6, STM32U535VET6Q, STM32U545CET6, STM32U545CET6Q, STM32U545CEU6, STM32U545CEU6Q, STM32U545JEY6QTR, STM32U545NEY6QTR, STM32U545REI6, STM32U545REI6Q, STM32U545RET6, STM32U545RET6Q, STM32U545VEI6, STM32U545VEI6Q, STM32U545VET6, STM32U545VET6Q, STM32U595AIH6, STM32U595AIH6Q, STM32U595AJH6, STM32U595AJH6Q, STM32U595QII6, STM32U595QII6Q, STM32U595QJI6, STM32U595QJI6Q, STM32U595RIT6, STM32U595RIT6Q, STM32U595RJT6, STM32U595RJT6Q, STM32U595VIT6, STM32U595VIT6Q, STM32U595VJT6, STM32U595VJT6Q, STM32U595ZIT6, STM32U595ZIT6Q, STM32U595ZIY6QTR, STM32U595ZJT6, STM32U595ZJT6Q, STM32U595ZJY6QTR, STM32U599BJY6QTR, STM32U599NIH6Q, STM32U599NJH6Q, STM32U599VIT6Q, STM32U599VJT6, STM32U599VJT6Q, STM32U599ZIT6Q, STM32U599ZIY6QTR, STM32U599ZJT6Q, STM32U599ZJY6QTR, STM32U5A5AJH6, STM32U5A5AJH6Q, STM32U5A5QII3Q , STM32U5A5QJI6, STM32U5A5QJI6Q, STM32U5A5RJT6, STM32U5A5RJT6Q, STM32U5A5VJT6, STM32U5A5VJT6Q, STM32U5A5ZJT6, STM32U5A5ZJT6Q, STM32U5A5ZJY6QTR, STM32U5A9BJY6QTR, STM32U5A9J-DK, STM32U5A9NJH6Q, STM32U5A9VJT6Q, STM32U5A9ZJT6Q, STM32U5A9ZJY6QTR, STM32U5F7VIT6, STM32U5F7VIT6Q, STM32U5F7VJT6, STM32U5F7VJT6Q, STM32U5F9BJY6QTR, STM32U5F9NJH6Q, STM32U5F9VIT6Q, STM32U5F9VJT6Q, STM32U5F9ZIJ6QTR, STM32U5F9ZIT6Q, STM32U5F9ZJJ6QTR, STM32U5F9ZJT6Q, STM32U5G7VJT6, STM32U5G7VJT6Q, STM32U5G9BJY6QTR, STM32U5G9J-DK1, STM32U5G9J-DK2, STM32U5G9NJH6Q, STM32U5G9VJT6Q, STM32U5G9ZJJ6QTR, STM32U5G9ZJT6Q, STM32WB05KZV6TR, STM32WB05KZV7TR, STM32WB05TZF6TR, STM32WB05TZF7TR, STM32WB06CCF6TR, STM32WB06CCF7TR, STM32WB06CCV6TR, STM32WB06CCV7TR, STM32WB06KCV6TR, STM32WB06KCV7TR, STM32WB07CCF6TR, STM32WB07CCF7TR, STM32WB07CCV6TR, STM32WB07CCV7TR, STM32WB07KCV6TR, STM32WB07KCV7TR, STM32WB09KEV6TR, STM32WB09KEV7TR, STM32WB09TEF6TR, STM32WB09TEF7TR, STM32WB1MMCH6, STM32WBA50KGU6, STM32WBA50KGU6TR, STM32WBA52CEU6, STM32WBA52CEU6TR, STM32WBA52CEU7, STM32WBA52CEU7TR, STM32WBA52CGU6, STM32WBA52CGU6TR, STM32WBA52CGU6U, STM32WBA52CGU7, STM32WBA52CGU7TR, STM32WBA52KEU6, STM32WBA52KEU6TR, STM32WBA52KGU6, STM32WBA52KGU6TR, STM32WBA54CEU6, STM32WBA54CEU6TR, STM32WBA54CEU7, STM32WBA54CEU7TR, STM32WBA54CGU6, STM32WBA54CGU6TR, STM32WBA54CGU7, STM32WBA54CGU7TR, STM32WBA54KEU6, STM32WBA54KEU6TR, STM32WBA54KEU7, STM32WBA54KEU7TR, STM32WBA54KGU6, STM32WBA54KGU6TR, STM32WBA54KGU7, STM32WBA54KGU7TR, STM32WBA55CEU6, STM32WBA55CEU6TR, STM32WBA55CEU7, STM32WBA55CEU7TR, STM32WBA55CGU6, STM32WBA55CGU6TR, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CGU7TR, STM32WBA55G-DK1, STM32WBA55HEF6, STM32WBA55HEF7, STM32WBA55HGF6, STM32WBA55HGF7, STM32WBA55UEI6, STM32WBA55UEI6TR, STM32WBA55UEI7, STM32WBA55UEI7TR, STM32WBA55UGI6, STM32WBA55UGI6TR, STM32WBA55UGI7, STM32WBA55UGI7TR, STM32WBA5MMGH6TR, STM32WBA62MGF6, STM32WBA62MIF6, STM32WBA65MGF7, STM32WBA65MIF6, STM32WBA65MIF7, STM32WL30K8V6, STM32WL30KBV6, STM32WL31C8V6, STM32WL31CBV6, STM32WL31K8V6, STM32WL31KBV6, STM32WL33C8V6, STM32WL33C8V6X, STM32WL33CBV6, STM32WL33CBV6X, STM32WL33CCV6, STM32WL33CCV6A, STM32WL33CCV6X, STM32WL33K8V7, STM32WL33K8V7X, STM32WL33KBV7 , STM32WL33KBV7X, STM32WL33KCV7, STM32WL33KCV7X, STM32WL5MOCH6, STM32WL5MOCH6TR]
-2025-08-19 20:05:12,673 [INFO] BoardInfo:889 - No configuration file found for board P-NUCLEO-WB55
-2025-08-19 20:05:12,674 [INFO] DbBoards:161 - Kit is not supported: P-NUCLEO-WB55
-2025-08-19 20:05:12,675 [INFO] BoardInfo:889 - No configuration file found for board STEVAL-BFA001V1B
-2025-08-19 20:05:12,675 [INFO] DbBoards:161 - Kit is not supported: STEVAL-BFA001V1B
-2025-08-19 20:05:12,676 [INFO] BoardInfo:889 - No configuration file found for board STEVAL-BFA001V2B
-2025-08-19 20:05:12,683 [INFO] DbBoards:161 - Kit is not supported: STEVAL-BFA001V2B
-2025-08-19 20:05:12,741 [INFO] DbBoards:168 - Found 212 boards, 209 are supported
-2025-08-19 20:05:12,741 [INFO] DbBoards:169 - Found 212 boards, 43 of them is supported for Bsp
-2025-08-19 20:05:12,743 [INFO] ApiDb:414 - User favorites file not found: /home/kymkim/.stm32cubeide/favorites.boards.txt
-2025-08-19 20:05:12,743 [INFO] DbBoards:198 - Set 0 / 0 favorites Boards
-2025-08-19 20:05:12,743 [INFO] McuFinderGlobals:76 - Set McuFinderConnectedMode to true
-2025-08-19 20:05:12,746 [INFO] MultiScanPanel:200 - Auto-refresh data requested => check proxy status ongoing
-2025-08-19 20:05:12,747 [INFO] FinderPluginLoader:96 - Searching for filters in installed packs
-2025-08-19 20:05:13,395 [INFO] LoadUrlFilesThread:185 - End of LoadServerUrlFiles without Thread
-2025-08-19 20:05:13,445 [INFO] DetailPanel:341 - Set advertising image to /home/kymkim/STM32Cube/Repository//en.2400x1350px.jpeg
-2025-08-19 20:05:42,135 [INFO] MainUpdater:2872 - connection check result : 10
-2025-08-19 20:05:42,135 [INFO] MainUpdater:2872 - connection check result : 10
-2025-08-19 20:05:42,141 [INFO] MicroXplorer:468 - Change Database Path :
-2025-08-19 20:05:42,141 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150
-2025-08-19 20:05:42,143 [WARN] ThirdParty:871 - waiting for thirdparty lock release [close project]
-2025-08-19 20:05:42,143 [INFO] ThirdParty:873 - entering critical section [close project]
-2025-08-19 20:05:42,144 [INFO] ThirdParty:883 - exiting critical section [close project]
-2025-08-19 20:05:42,145 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration)
-2025-08-19 20:05:42,146 [INFO] UtilMem:75 - Begin LoadConfig() Used Memory: 619097504 Bytes (715128832)
-2025-08-19 20:05:53,090 [INFO] ServerAccessManage:452 - Complete download http(s) 200
-2025-08-19 20:05:53,091 [INFO] ServerAccessManage:509 - Download File stm32cube_db_v60130.zip
-2025-08-19 20:05:55,410 [INFO] FileExtend:248 - Unzip File : stm32cube_db_v60130.zip
-2025-08-19 20:05:55,410 [INFO] FileExtend:263 - Standard Zip Deflate
-2025-08-19 20:05:56,895 [INFO] LoadServerPackagesThread:196 - End of LoadServerPackages Thread
-2025-08-19 20:05:57,086 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread
-2025-08-19 20:06:10,142 [INFO] MainUpdater:2872 - connection check result : 10
-2025-08-19 20:06:10,227 [INFO] McuFinderGlobals:76 - Set McuFinderConnectedMode to true
-2025-08-19 20:06:10,228 [INFO] MultiScanPanel:200 - Auto-refresh data requested => check proxy status ongoing
-2025-08-19 20:06:10,228 [INFO] FinderPluginLoader:96 - Searching for filters in installed packs
-2025-08-19 20:06:11,460 [INFO] LoadUrlFilesThread:185 - End of LoadServerUrlFiles without Thread
-2025-08-19 20:06:11,461 [INFO] DetailPanel:341 - Set advertising image to /home/kymkim/STM32Cube/Repository//en.2400x1350px.jpeg
-2025-08-19 20:06:20,216 [INFO] McuFinderGlobals:76 - Set McuFinderConnectedMode to true
-2025-08-19 20:06:20,446 [INFO] ApiDb:448 - Save user favorites file /home/kymkim/.stm32cubeide/favorites.mcus.txt: 0 item(s)
-2025-08-19 20:06:20,447 [INFO] ApiDb:452 - User favorites MCUs=[]
-2025-08-19 20:06:23,177 [INFO] MainUpdater:2872 - connection check result : 10
-2025-08-19 20:06:23,255 [INFO] McuFinderGlobals:76 - Set McuFinderConnectedMode to true
-2025-08-19 20:06:23,256 [INFO] MultiScanPanel:200 - Auto-refresh data requested => check proxy status ongoing
-2025-08-19 20:06:23,257 [INFO] FinderPluginLoader:96 - Searching for filters in installed packs
-2025-08-19 20:06:23,565 [INFO] LoadUrlFilesThread:185 - End of LoadServerUrlFiles without Thread
-2025-08-19 20:06:23,565 [INFO] DetailPanel:341 - Set advertising image to /home/kymkim/STM32Cube/Repository//en.2400x1350px.jpeg
-2025-08-19 20:07:40,541 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated)
-2025-08-19 20:07:40,542 [INFO] UserAuth:171 - activating auth plugin
-2025-08-19 20:07:40,544 [INFO] UserAuth:487 - Internet connection configuration mode: 1
-2025-08-19 20:09:26,112 [INFO] WebApp:652 - userauth.ini deleted or not created
-2025-08-19 20:09:29,443 [INFO] MainUpdater:2872 - connection check result : 10
-2025-08-19 20:09:29,520 [INFO] McuFinderGlobals:76 - Set McuFinderConnectedMode to true
-2025-08-19 20:09:29,521 [INFO] MultiScanPanel:200 - Auto-refresh data requested => check proxy status ongoing
-2025-08-19 20:09:29,521 [INFO] FinderPluginLoader:96 - Searching for filters in installed packs
-2025-08-19 20:09:29,798 [INFO] LoadUrlFilesThread:185 - End of LoadServerUrlFiles without Thread
-2025-08-19 20:09:29,799 [INFO] DetailPanel:341 - Set advertising image to /home/kymkim/STM32Cube/Repository//en.2400x1350px.jpeg
-2025-08-19 20:09:38,545 [INFO] MainUpdater:2872 - connection check result : 10
-2025-08-19 20:09:38,545 [INFO] MainUpdater:2872 - connection check result : 10
-2025-08-19 20:09:38,549 [INFO] MicroXplorer:468 - Change Database Path :
-2025-08-19 20:09:38,549 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150
-2025-08-19 20:09:38,549 [WARN] ThirdParty:871 - waiting for thirdparty lock release [close project]
-2025-08-19 20:09:38,549 [INFO] ThirdParty:873 - entering critical section [close project]
-2025-08-19 20:09:38,550 [INFO] ThirdParty:883 - exiting critical section [close project]
-2025-08-19 20:09:38,550 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration)
-2025-08-19 20:09:38,550 [INFO] UtilMem:75 - Begin LoadConfig() Used Memory: 893472568 Bytes (1073741824)
-2025-08-19 20:09:38,554 [INFO] MicroXplorer:468 - Change Database Path : /home/kymkim/.stm32cubemx/databases/DB.6.0.130/db/
-2025-08-19 20:09:38,554 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.130
-2025-08-19 20:09:40,416 [INFO] OpenFileManager:355 - Change cursor
-2025-08-19 20:09:40,436 [INFO] Mcu:2029 - Initializing MCU STM32F446R(C-E)Tx STM32F446RETx STM32F446RET6
-2025-08-19 20:09:41,099 [INFO] Context:786 - Trying to add GPIOservice into a context which must be forbidden
-2025-08-19 20:09:41,362 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) Pin32 (VP_RIF_VS_RIF1) cannot be retrieved for this MCU
-2025-08-19 20:09:41,417 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS, mode=CMSIS_V1, owner=FREERTOS
-2025-08-19 20:09:41,417 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS2, mode=CMSIS_V2, owner=FREERTOS
-2025-08-19 20:09:41,418 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V1, owner=FREERTOS
-2025-08-19 20:09:41,418 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V2, owner=FREERTOS
-2025-08-19 20:09:41,418 [WARN] ModelIntegratedComponent:184 - Missing modes for component STMicroelectronics:FreeRTOS:0.0.1:STMicroelectronics:RTOS:FreeRTOS:Core:::10.2.0:
-2025-08-19 20:09:41,435 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,435 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,435 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,435 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,436 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,437 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,437 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,437 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,437 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,437 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
-2025-08-19 20:09:41,437 [WARN] ModelPack:524 - Component already loaded: STMicroelectronics:HAL Drivers:0.0.0:STMicroelectronics:Device:STMicro_Driver:XSPI:HAL::0.0.1:HAL_XSPI
-2025-08-19 20:09:41,505 [INFO] ThirdPartyModel:298 - Start build external matchings
-2025-08-19 20:09:41,797 [INFO] ThirdPartyModel:316 - End build external matchings
-2025-08-19 20:09:41,809 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Invalid parameter (FamilyName)
-2025-08-19 20:09:41,812 [WARN] IP:2250 - DEVICE_SERIAL0_HID_FS not found: check if there is a RefParameter without a condition.
-2025-08-19 20:09:41,812 [WARN] IP:2250 - DEVICE_SERIAL1_HID_FS not found: check if there is a RefParameter without a condition.
-2025-08-19 20:09:41,812 [WARN] IP:2250 - DEVICE_SERIAL2_HID_FS not found: check if there is a RefParameter without a condition.
-2025-08-19 20:09:41,927 [INFO] UtilMem:75 - End LoadConfig() Used Memory: 964505152 Bytes (1073741824)
-2025-08-19 20:09:42,003 [WARN] ThirdParty:833 - waiting for thirdparty lock release [change project]
-2025-08-19 20:09:42,004 [INFO] ThirdParty:835 - entering critical section [change project]
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-PM33A1 1.0.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USBPD 4.1
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC9 1.0.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSL 5.8.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 2.0.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENVWB1 1.4.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F4 1.1.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics LIBJPEG 8.0.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-ASTRA1 2.0.2
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE1 7.1.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Avnet-IotConnect X-CUBE-IoTC-DA16k-PMOD 1.0.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SMBUS 2.1.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfMQTT 1.19.2
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 3.0.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ISPU 2.1.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-EEPRMA1 5.2.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.1.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WB 2.0.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST60 1.0.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-GNSS1 7.0.1
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC12 1.0.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F7 1.1.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L5 2.0.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOUCHGFX 4.25.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 2.0.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC6 3.1.0
-2025-08-19 20:09:42,004 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.1.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.0.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FreeRTOS 0.0.1
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G0 1.1.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SAFEA1 1.2.2
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC4 3.0.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SUBG2 5.0.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7RS 1.1.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics STM32_WPAN 1.0.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :EmbeddedOffice I-CUBE-FS-RTOS 1.0.1
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.0.3
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Cesanta I-CUBE-Mongoose 7.13.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 1.0.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Infineon AIROC-Wi-Fi-Bluetooth-STM32 1.7.1
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G4 2.0.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-WB05N 2.0.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.1.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.3.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfTPM 3.8.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7 3.4.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DISPLAY 3.0.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSH 1.4.20
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC7 2.0.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TCPP 4.2.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-SIGFOX1 3.2.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC10 1.0.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.0.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-FREERTOS 1.3.1
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics HAL Drivers 0.0.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.16.2
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-IPS 3.1.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALS 1.0.2
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :emotas I-CUBE-CANOPEN 1.3.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.14.1
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :ITTIA_DB I-CUBE-ITTIADB 8.9.0
-2025-08-19 20:09:42,005 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :portGmbH I-Cube-SoM-uGOAL 1.1.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :quantropi X-CUBE-qispace-sdk-base 2.0.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST67W61 1.0.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.1.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.2.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STAIOTCFT 1.0.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 1.0.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-SMARTAG2 1.2.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-FLIGHT1 5.1.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WL 2.0.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :SEGGER I-CUBE-embOS 1.3.1
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALGOBUILD 1.4.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DPower 1.3.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-MEMS1 11.3.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENV1 5.0.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 1.0.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L4 2.0.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 0.0.2
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :WES I-CUBE-Cesium 1.3.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.1.2
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SFXS2LP1 4.0.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE2 3.3.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOF1 3.4.3
-2025-08-19 20:09:42,006 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.2.0
-2025-08-19 20:09:42,006 [INFO] ThirdParty:841 - exiting critical section [change project]
-2025-08-19 20:09:42,193 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration)
-2025-08-19 20:09:42,194 [INFO] PinOutPanel:1589 - setPackage(STM32F446RETx,LQFP64)
-2025-08-19 20:09:42,499 [INFO] UtilMem:75 - Before build in PCC Used Memory: 770595528 Bytes (1073741824)
-2025-08-19 20:09:42,787 [INFO] UtilMem:75 - After build in PCC Used Memory: 902164856 Bytes (1073741824)
-2025-08-19 20:09:42,824 [INFO] ApiDbMcu:532 - Load IP Config File for USB_DEVICE
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,843 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,844 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,844 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,844 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,844 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,844 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,844 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,844 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,844 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,844 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,844 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,844 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,844 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,845 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,845 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,845 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,845 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,845 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,845 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,845 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,845 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,845 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,845 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,846 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,846 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,846 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,846 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,846 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,846 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,846 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,846 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,846 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,847 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,847 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,847 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,847 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,847 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,847 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,847 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,848 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,848 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,848 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:09:42,851 [INFO] ApiDbMcu:532 - Load IP Config File for PDM2PCM
-2025-08-19 20:09:42,854 [WARN] IP:2250 - I2C_Coeff_DF not found: check if there is a RefParameter without a condition.
-2025-08-19 20:09:42,854 [WARN] IP:2250 - Analog_Filter not found: check if there is a RefParameter without a condition.
-2025-08-19 20:09:42,939 [INFO] CADModel:165 - CPN selected for project levelSTM32F446RET6
-2025-08-19 20:09:42,939 [INFO] CADModel:114 - Register for checkConnection events
-2025-08-19 20:09:42,976 [INFO] OpenFileManager:386 - Restore cursor
-2025-08-19 20:09:43,053 [WARN] IP:2250 - DEVICE_SERIAL0_HID_FS not found: check if there is a RefParameter without a condition.
-2025-08-19 20:09:43,053 [WARN] IP:2250 - DEVICE_SERIAL1_HID_FS not found: check if there is a RefParameter without a condition.
-2025-08-19 20:09:43,053 [WARN] IP:2250 - DEVICE_SERIAL2_HID_FS not found: check if there is a RefParameter without a condition.
-2025-08-19 20:09:43,054 [WARN] IP:2250 - DEVICE_SERIAL0_HID_FS not found: check if there is a RefParameter without a condition.
-2025-08-19 20:09:43,054 [WARN] IP:2250 - DEVICE_SERIAL1_HID_FS not found: check if there is a RefParameter without a condition.
-2025-08-19 20:09:43,054 [WARN] IP:2250 - DEVICE_SERIAL2_HID_FS not found: check if there is a RefParameter without a condition.
-2025-08-19 20:09:43,105 [WARN] IP:2250 - I2C_Coeff_DF not found: check if there is a RefParameter without a condition.
-2025-08-19 20:09:43,105 [WARN] IP:2250 - Analog_Filter not found: check if there is a RefParameter without a condition.
-2025-08-19 20:09:43,105 [WARN] IP:2250 - I2C_Coeff_DF not found: check if there is a RefParameter without a condition.
-2025-08-19 20:09:43,105 [WARN] IP:2250 - Analog_Filter not found: check if there is a RefParameter without a condition.
-2025-08-19 20:09:43,270 [INFO] UtilMem:75 - End SaveConfig() Used Memory: 877813584 Bytes (1073741824)
-2025-08-19 20:09:44,027 [INFO] ServerAccessManage:452 - Complete download http(s) 200
-2025-08-19 20:09:44,027 [INFO] ServerAccessManage:509 - Download File stm32cube_fw_f4_v1280.zip
-2025-08-19 20:10:05,267 [INFO] AnalyticsPlugin:368 - Accepted License(s): [FW.F4.1.28.0]
-2025-08-19 20:10:05,268 [INFO] FileExtend:248 - Unzip File : stm32cube_fw_f4_v1280.zip
-2025-08-19 20:10:05,268 [INFO] FileExtend:263 - Standard Zip Deflate
-2025-08-19 20:10:11,603 [INFO] ServerAccessManage:452 - Complete download http(s) 200
-2025-08-19 20:10:11,603 [INFO] ServerAccessManage:509 - Download File stm32cube_fw_f4_v1282.zip
-2025-08-19 20:10:19,818 [INFO] FileExtend:248 - Unzip File : stm32cube_fw_f4_v1282.zip
-2025-08-19 20:10:19,818 [INFO] FileExtend:263 - Standard Zip Deflate
-2025-08-19 20:10:28,304 [INFO] LoadServerPackagesThread:196 - End of LoadServerPackages Thread
-2025-08-19 20:10:28,441 [INFO] ThirdPartyModel:298 - Start build external matchings
-2025-08-19 20:10:28,446 [INFO] UtilMem:75 - End SaveConfig() Used Memory: 1060891592 Bytes (1073741824)
-2025-08-19 20:10:28,641 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USB_DEVICE
-2025-08-19 20:10:28,641 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: SYS
-2025-08-19 20:10:28,641 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: RCC
-2025-08-19 20:10:28,641 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: I2C
-2025-08-19 20:10:28,641 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USB_OTG_FS
-2025-08-19 20:10:28,641 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: NVIC
-2025-08-19 20:10:28,641 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USART
-2025-08-19 20:10:28,641 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USART
-2025-08-19 20:10:28,641 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USART
-2025-08-19 20:10:28,641 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USART
-2025-08-19 20:10:28,642 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: GPIO
-2025-08-19 20:10:28,642 [INFO] CodeGenerator:892 - code generatio: config db path: /home/kymkim/.stm32cubemx/databases/DB.6.0.130/db/
-2025-08-19 20:10:28,647 [WARN] IP:2250 - I2C_Coeff_DF not found: check if there is a RefParameter without a condition.
-2025-08-19 20:10:28,647 [WARN] IP:2250 - Analog_Filter not found: check if there is a RefParameter without a condition.
-2025-08-19 20:10:28,662 [WARN] IP:2250 - DEVICE_SERIAL0_HID_FS not found: check if there is a RefParameter without a condition.
-2025-08-19 20:10:28,662 [WARN] IP:2250 - DEVICE_SERIAL1_HID_FS not found: check if there is a RefParameter without a condition.
-2025-08-19 20:10:28,662 [WARN] IP:2250 - DEVICE_SERIAL2_HID_FS not found: check if there is a RefParameter without a condition.
-2025-08-19 20:10:28,724 [INFO] ThirdPartyModel:316 - End build external matchings
-2025-08-19 20:10:28,731 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread
-2025-08-19 20:10:28,753 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/license.tmp_save
-2025-08-19 20:10:28,924 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/license.tmp
-2025-08-19 20:10:28,959 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/gpio.tmp_save
-2025-08-19 20:10:29,044 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/gpio.tmp
-2025-08-19 20:10:29,093 [WARN] IPConfigManager:3238 - Warning: the RefConfig PWREx_EnableUSBVoltageDetector is not available in your config.xml file
-2025-08-19 20:10:29,099 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_vars.tmp_save
-2025-08-19 20:10:29,163 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_vars.tmp
-2025-08-19 20:10:29,164 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_inc.tmp_save
-2025-08-19 20:10:29,204 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_inc.tmp
-2025-08-19 20:10:29,206 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_HalInit.tmp_save
-2025-08-19 20:10:29,255 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_HalInit.tmp
-2025-08-19 20:10:29,255 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_Msp.tmp_save
-2025-08-19 20:10:29,307 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_Msp.tmp
-2025-08-19 20:10:29,448 [INFO] Middleware:1452 - No code input for Bsp Dependency
-2025-08-19 20:10:29,461 [INFO] Middleware:1452 - No code input for Bsp Dependency
-2025-08-19 20:10:29,463 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usb_device.c_save
-2025-08-19 20:10:29,522 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usb_device.c
-2025-08-19 20:10:29,523 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usb_device.h_save
-2025-08-19 20:10:29,561 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usb_device.h
-2025-08-19 20:10:29,562 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/Target/usbd_conf.h_save
-2025-08-19 20:10:29,600 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/Target/usbd_conf.h
-2025-08-19 20:10:29,602 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/Target/usbd_conf.c_save
-2025-08-19 20:10:29,644 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/Target/usbd_conf.c
-2025-08-19 20:10:29,645 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usbd_desc.h_save
-2025-08-19 20:10:29,680 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usbd_desc.h
-2025-08-19 20:10:29,681 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usbd_desc.c_save
-2025-08-19 20:10:29,720 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usbd_desc.c
-2025-08-19 20:10:29,725 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/stm32f4xx_it.c_save
-2025-08-19 20:10:29,780 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/stm32f4xx_it.c
-2025-08-19 20:10:29,781 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/stm32f4xx_it.h_save
-2025-08-19 20:10:29,818 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/stm32f4xx_it.h
-2025-08-19 20:10:29,826 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/stm32f4xx_hal_msp.c_save
-2025-08-19 20:10:29,889 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/stm32f4xx_hal_msp.c
-2025-08-19 20:10:29,890 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/system.tmp_save
-2025-08-19 20:10:29,927 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/system.tmp
-2025-08-19 20:10:29,929 [INFO] CodeEngine:321 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/stm32f4xx_hal_conf.h_save
-2025-08-19 20:10:29,973 [INFO] CodeEngine:345 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/stm32f4xx_hal_conf.h
-2025-08-19 20:10:29,989 [WARN] IPConfigManager:3238 - Warning: the RefConfig PLL2P_FOR_MCO is not available in your config.xml file
-2025-08-19 20:10:29,996 [INFO] ApiDbMcu:532 - Load IP Config File for I2C1
-2025-08-19 20:10:29,998 [INFO] ApiDbMcu:532 - Load IP Config File for USART1
-2025-08-19 20:10:29,999 [INFO] ApiDbMcu:532 - Load IP Config File for USART2
-2025-08-19 20:10:30,000 [INFO] ApiDbMcu:532 - Load IP Config File for USART3
-2025-08-19 20:10:30,001 [INFO] ApiDbMcu:532 - Load IP Config File for USART6
-2025-08-19 20:10:30,003 [INFO] ApiDbMcu:532 - Load IP Config File for RCC
-2025-08-19 20:10:30,006 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/main.h_save
-2025-08-19 20:10:30,055 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/main.h
-2025-08-19 20:10:30,056 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/main.c_save
-2025-08-19 20:10:30,123 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/main.c
-2025-08-19 20:10:30,265 [INFO] ProjectBuilder:3606 - Time for Copy HAL[1] : 15mS.
-2025-08-19 20:10:30,269 [INFO] ProjectBuilder:5216 - Project Generator version: 4.7.0-B52
-2025-08-19 20:10:30,325 [INFO] ConfigFileManager:1595 - The Die is : DIE421
-2025-08-19 20:10:30,327 [INFO] ApiDbMcu:532 - Load IP Config File for FATFS
-2025-08-19 20:10:30,329 [INFO] ApiDbMcu:532 - Load IP Config File for FREERTOS
-2025-08-19 20:10:30,330 [INFO] ApiDbMcu:532 - Load IP Config File for LIBJPEG
-2025-08-19 20:10:30,332 [INFO] ApiDbMcu:532 - Load IP Config File for MBEDTLS
-2025-08-19 20:10:30,333 [INFO] ApiDbMcu:532 - Load IP Config File for USB_HOST
-2025-08-19 20:10:30,548 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT]
-2025-08-19 20:10:31,798 [INFO] ProjectBuilder:5496 - Time for Generating toolchain IDE Files: 1529mS.
-2025-08-19 20:10:31,799 [INFO] ProjectBuilder:3463 - Time for Copy CMSIS : 1mS.
-2025-08-19 20:10:31,799 [INFO] ProjectBuilder:3463 - Time for Copy CMSIS : 0mS.
-2025-08-19 20:10:32,114 [INFO] McuFinderGlobals:76 - Set McuFinderConnectedMode to true
-2025-08-19 20:10:32,167 [INFO] ApiDb:448 - Save user favorites file /home/kymkim/.stm32cubeide/favorites.mcus.txt: 0 item(s)
-2025-08-19 20:10:32,167 [INFO] ApiDb:452 - User favorites MCUs=[]
-2025-08-19 20:13:30,896 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] Exception in thread "AWT-EventQueue-0" org.eclipse.swt.SWTException: Device is disposed
-2025-08-19 20:13:30,896 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at org.eclipse.swt.SWT.error(SWT.java:4922)
-2025-08-19 20:13:30,896 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at org.eclipse.swt.SWT.error(SWT.java:4837)
-2025-08-19 20:13:30,896 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at org.eclipse.swt.SWT.error(SWT.java:4808)
-2025-08-19 20:13:30,896 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at org.eclipse.swt.widgets.Display.error(Display.java:1551)
-2025-08-19 20:13:30,896 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at org.eclipse.swt.widgets.Display.asyncExec(Display.java:920)
-2025-08-19 20:13:30,897 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at com.st.stm32cube.common.mx.oss.core.awtswtbridge.AwtEnvironment$2.run(AwtEnvironment.java:168)
-2025-08-19 20:13:30,897 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
-2025-08-19 20:13:30,897 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
-2025-08-19 20:13:30,897 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
-2025-08-19 20:13:30,897 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
-2025-08-19 20:13:30,897 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
-2025-08-19 20:13:30,897 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
-2025-08-19 20:13:30,897 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
-2025-08-19 20:13:30,897 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
-2025-08-19 20:13:30,897 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
-2025-08-19 20:13:30,897 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
-2025-08-19 20:13:30,898 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
-2025-08-19 20:13:30,898 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
-2025-08-19 20:13:30,898 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
-2025-08-19 20:13:30,918 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] Exception in thread "AWT-EventQueue-0" org.eclipse.swt.SWTException: Device is disposed
-2025-08-19 20:13:30,919 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at org.eclipse.swt.SWT.error(SWT.java:4922)
-2025-08-19 20:13:30,919 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at org.eclipse.swt.SWT.error(SWT.java:4837)
-2025-08-19 20:13:30,919 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at org.eclipse.swt.SWT.error(SWT.java:4808)
-2025-08-19 20:13:30,919 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at org.eclipse.swt.widgets.Display.error(Display.java:1551)
-2025-08-19 20:13:30,919 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at org.eclipse.swt.widgets.Display.asyncExec(Display.java:920)
-2025-08-19 20:13:30,919 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at com.st.stm32cube.common.mx.oss.core.awtswtbridge.AwtEnvironment$2.run(AwtEnvironment.java:168)
-2025-08-19 20:13:30,919 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
-2025-08-19 20:13:30,919 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
-2025-08-19 20:13:30,919 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
-2025-08-19 20:13:30,919 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
-2025-08-19 20:13:30,919 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
-2025-08-19 20:13:30,919 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
-2025-08-19 20:13:30,919 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
-2025-08-19 20:13:30,919 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
-2025-08-19 20:13:30,919 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
-2025-08-19 20:13:30,919 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
-2025-08-19 20:13:30,920 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
-2025-08-19 20:13:30,920 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
-2025-08-19 20:13:30,920 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
-2025-08-19 20:13:30,963 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT]
-2025-08-19 20:13:30,964 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT]
-2025-08-19 20:13:36,172 [INFO] Activator:176 -
+2025-08-21 19:51:02,995 [INFO] Activator:177 - !SESSION log4j initialized
+2025-08-21 19:51:04,348 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT]
+2025-08-21 19:51:05,247 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
+2025-08-21 19:51:05,255 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
+2025-08-21 19:51:05,255 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
+2025-08-21 19:51:05,255 [WARN] ApiDb:259 - Overriding images path with different value: => /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
+2025-08-21 19:51:05,257 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
+2025-08-21 19:51:05,257 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
+2025-08-21 19:51:05,258 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
+2025-08-21 19:51:05,318 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
+2025-08-21 19:51:05,356 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
+2025-08-21 19:51:05,356 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
+2025-08-21 19:51:05,357 [INFO] ApiDb:261 - Set plugin images path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
+2025-08-21 19:51:05,357 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
+2025-08-21 19:51:05,357 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
+2025-08-21 19:51:05,357 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
+2025-08-21 19:51:05,357 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
+2025-08-21 19:51:05,357 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
+2025-08-21 19:51:05,357 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
+2025-08-21 19:51:05,357 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
+2025-08-21 19:51:05,394 [INFO] MainPanel:274 - HeapMemory: 268435456
+2025-08-21 19:51:05,458 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
+2025-08-21 19:51:05,458 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
+2025-08-21 19:51:05,458 [INFO] ApiDb:261 - Set plugin images path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
+2025-08-21 19:51:05,458 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
+2025-08-21 19:51:05,458 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
+2025-08-21 19:51:05,458 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
+2025-08-21 19:51:05,458 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
+2025-08-21 19:51:05,458 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
+2025-08-21 19:51:05,458 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
+2025-08-21 19:51:05,458 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
+2025-08-21 19:51:05,468 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
+2025-08-21 19:51:05,469 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ]
+2025-08-21 19:51:05,470 [INFO] PluginManage:310 - Check plugin analytics
+2025-08-21 19:51:05,560 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses:
+2025-08-21 19:51:05,560 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses:
+2025-08-21 19:51:05,560 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses: FW.F4.1.28.0
+2025-08-21 19:51:05,561 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1)
+2025-08-21 19:51:05,561 [INFO] PluginManage:310 - Check plugin cadmodel
+2025-08-21 19:51:05,563 [INFO] CADModel:105 - Init CAD model plugin
+2025-08-21 19:51:05,563 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5)
+2025-08-21 19:51:05,563 [INFO] PluginManage:310 - Check plugin clock
+2025-08-21 19:51:05,567 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2)
+2025-08-21 19:51:05,567 [INFO] PluginManage:310 - Check plugin ddr
+2025-08-21 19:51:05,567 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6)
+2025-08-21 19:51:05,568 [INFO] PluginManage:310 - Check plugin filemanager
+2025-08-21 19:51:05,683 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10)
+2025-08-21 19:51:05,683 [INFO] PluginManage:310 - Check plugin ipmanager
+2025-08-21 19:51:05,687 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5)
+2025-08-21 19:51:05,687 [INFO] PluginManage:310 - Check plugin lpbam
+2025-08-21 19:51:05,698 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0)
+2025-08-21 19:51:05,699 [INFO] PluginManage:310 - Check plugin memorymap
+2025-08-21 19:51:05,707 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4)
+2025-08-21 19:51:05,707 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration
+2025-08-21 19:51:05,712 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1)
+2025-08-21 19:51:05,712 [INFO] PluginManage:310 - Check plugin pinoutconfig
+2025-08-21 19:51:05,757 [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.
+2025-08-21 19:51:05,836 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0)
+2025-08-21 19:51:05,836 [INFO] PluginManage:310 - Check plugin power
+2025-08-21 19:51:05,840 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4)
+2025-08-21 19:51:05,840 [INFO] PluginManage:310 - Check plugin projectmanager
+2025-08-21 19:51:05,850 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:4)
+2025-08-21 19:51:05,851 [INFO] PluginManage:310 - Check plugin rif
+2025-08-21 19:51:05,856 [INFO] PluginManage:359 - Loaded plugin rif (category:base,tabindex:3)
+2025-08-21 19:51:05,856 [INFO] PluginManage:310 - Check plugin thirdparty
+2025-08-21 19:51:05,926 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1)
+2025-08-21 19:51:05,926 [INFO] PluginManage:310 - Check plugin tools
+2025-08-21 19:51:05,926 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check]
+2025-08-21 19:51:05,926 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check]
+2025-08-21 19:51:05,926 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15]
+2025-08-21 19:51:05,927 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7)
+2025-08-21 19:51:05,927 [INFO] PluginManage:310 - Check plugin tutovideos
+2025-08-21 19:51:06,032 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1)
+2025-08-21 19:51:06,033 [INFO] PluginManage:310 - Check plugin updater
+2025-08-21 19:51:06,051 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12)
+2025-08-21 19:51:06,051 [INFO] PluginManage:310 - Check plugin userauth
+2025-08-21 19:51:06,055 [INFO] UserAuth:118 - Init User Auth plugin
+2025-08-21 19:51:06,056 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14)
+2025-08-21 19:51:06,057 [INFO] PluginManage:283 - PluginManage : Loaded plugins [18]
+2025-08-21 19:51:06,166 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration)
+2025-08-21 19:51:06,204 [INFO] CADModel:165 - CPN selected for project level
+2025-08-21 19:51:06,204 [INFO] CADModel:114 - Register for checkConnection events
+2025-08-21 19:51:06,212 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,212 [INFO] PluginManager:220 - loadIPPluginJar : add adc
+2025-08-21 19:51:06,213 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,213 [INFO] PluginManager:220 - loadIPPluginJar : add aes
+2025-08-21 19:51:06,214 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,214 [INFO] PluginManager:220 - loadIPPluginJar : add can
+2025-08-21 19:51:06,215 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,215 [INFO] PluginManager:220 - loadIPPluginJar : add comp
+2025-08-21 19:51:06,215 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,215 [INFO] PluginManager:220 - loadIPPluginJar : add cryp
+2025-08-21 19:51:06,217 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,217 [INFO] PluginManager:220 - loadIPPluginJar : add ddr_ctrl_phy
+2025-08-21 19:51:06,217 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,218 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm
+2025-08-21 19:51:06,221 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,222 [INFO] PluginManager:220 - loadIPPluginJar : add dma
+2025-08-21 19:51:06,222 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,222 [INFO] PluginManager:220 - loadIPPluginJar : add dma3
+2025-08-21 19:51:06,223 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,223 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager
+2025-08-21 19:51:06,224 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,224 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs
+2025-08-21 19:51:06,226 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,226 [INFO] PluginManager:220 - loadIPPluginJar : add fmc
+2025-08-21 19:51:06,229 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,229 [INFO] PluginManager:220 - loadIPPluginJar : add freertos
+2025-08-21 19:51:06,230 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,230 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin
+2025-08-21 19:51:06,231 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,231 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu
+2025-08-21 19:51:06,233 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,233 [INFO] PluginManager:220 - loadIPPluginJar : add gic
+2025-08-21 19:51:06,235 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,235 [INFO] PluginManager:220 - loadIPPluginJar : add gpio
+2025-08-21 19:51:06,236 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,236 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc
+2025-08-21 19:51:06,237 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,237 [INFO] PluginManager:220 - loadIPPluginJar : add hash
+2025-08-21 19:51:06,238 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,238 [INFO] PluginManager:220 - loadIPPluginJar : add i2c
+2025-08-21 19:51:06,239 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,239 [INFO] PluginManager:220 - loadIPPluginJar : add i2s
+2025-08-21 19:51:06,240 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,240 [INFO] PluginManager:220 - loadIPPluginJar : add i3c
+2025-08-21 19:51:06,241 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,242 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr
+2025-08-21 19:51:06,246 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,246 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist
+2025-08-21 19:51:06,247 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,247 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan
+2025-08-21 19:51:06,248 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,248 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc
+2025-08-21 19:51:06,251 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,251 [INFO] PluginManager:220 - loadIPPluginJar : add mdma
+2025-08-21 19:51:06,252 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,252 [INFO] PluginManager:220 - loadIPPluginJar : add nvic
+2025-08-21 19:51:06,253 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,254 [INFO] PluginManager:220 - loadIPPluginJar : add opamp
+2025-08-21 19:51:06,255 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,255 [INFO] PluginManager:220 - loadIPPluginJar : add openamp
+2025-08-21 19:51:06,256 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,256 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm
+2025-08-21 19:51:06,259 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,260 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings
+2025-08-21 19:51:06,260 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,260 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi
+2025-08-21 19:51:06,261 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,261 [INFO] PluginManager:220 - loadIPPluginJar : add radio
+2025-08-21 19:51:06,263 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,263 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility
+2025-08-21 19:51:06,264 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,264 [INFO] PluginManager:220 - loadIPPluginJar : add sai
+2025-08-21 19:51:06,265 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,265 [INFO] PluginManager:220 - loadIPPluginJar : add spi
+2025-08-21 19:51:06,267 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,268 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan
+2025-08-21 19:51:06,268 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,268 [INFO] PluginManager:220 - loadIPPluginJar : add tim
+2025-08-21 19:51:06,270 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,270 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing
+2025-08-21 19:51:06,271 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,271 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb
+2025-08-21 19:51:06,272 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,272 [INFO] PluginManager:220 - loadIPPluginJar : add ts
+2025-08-21 19:51:06,272 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,272 [INFO] PluginManager:220 - loadIPPluginJar : add tsc
+2025-08-21 19:51:06,273 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,273 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd
+2025-08-21 19:51:06,274 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,274 [INFO] PluginManager:220 - loadIPPluginJar : add usart
+2025-08-21 19:51:06,275 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:51:06,275 [INFO] PluginManager:220 - loadIPPluginJar : add usbx
+2025-08-21 19:51:06,367 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 19:51:06,385 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
+2025-08-21 19:51:06,397 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
+2025-08-21 19:51:06,405 [INFO] CADModel:165 - CPN selected for project level
+2025-08-21 19:51:06,405 [INFO] CADModel:114 - Register for checkConnection events
+2025-08-21 19:51:06,405 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 19:51:06,405 [ERROR] CADModel:125 - Updater not yet initialized, retry later
+2025-08-21 19:51:06,481 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 19:51:06,482 [INFO] CADModel:165 - CPN selected for project level
+2025-08-21 19:51:06,482 [INFO] CADModel:114 - Register for checkConnection events
+2025-08-21 19:51:06,482 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 19:51:06,482 [ERROR] CADModel:125 - Updater not yet initialized, retry later
+2025-08-21 19:51:06,484 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 19:51:06,541 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 19:51:06,543 [INFO] DbMcusAds:53 - JSON generation date=Tue Jul 08 01:14:23 PDT 2025 (1751962463582)
+2025-08-21 19:51:06,543 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 19:51:06,565 [WARN] DetailPanel:346 - Failed to get advertising image, set to default
+2025-08-21 19:51:06,615 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 19:51:06,617 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 19:51:06,617 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 19:51:06,617 [WARN] DetailPanel:346 - Failed to get advertising image, set to default
+2025-08-21 19:51:06,619 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 19:51:06,652 [ERROR] Updater:1198 - MainUpdater not yet initialized. External WinMGr cannot be set.
+2025-08-21 19:51:06,653 [INFO] Updater:1134 - Updater Version found : 6.15.0
+2025-08-21 19:51:06,672 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
+2025-08-21 19:51:06,910 [INFO] MainUpdater:2872 - connection check result : 10
+2025-08-21 19:51:06,911 [INFO] MainUpdater:289 - Updater Check For Update Now.
+2025-08-21 19:51:06,911 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150
+2025-08-21 19:51:06,914 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated)
+2025-08-21 19:51:06,915 [INFO] UserAuth:171 - activating auth plugin
+2025-08-21 19:51:06,916 [INFO] UserAuth:487 - Internet connection configuration mode: 1
+2025-08-21 19:51:06,925 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder
+2025-08-21 19:51:07,061 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread
+2025-08-21 19:51:07,414 [INFO] WebApp:169 - Instantiating new browser for Auth
+2025-08-21 19:51:07,742 [INFO] WebApp:463 - Apply proxy settings
+2025-08-21 19:51:07,743 [INFO] WebApp:548 - Chromium requires no authentication
+2025-08-21 19:51:07,747 [INFO] WebApp:491 - Direct internet connection detected
+2025-08-21 19:51:07,756 [INFO] WebApp:900 - Register for checkConnection events
+2025-08-21 19:51:07,756 [INFO] WebApp:463 - Apply proxy settings
+2025-08-21 19:51:07,756 [INFO] WebApp:548 - Chromium requires no authentication
+2025-08-21 19:51:07,756 [INFO] WebApp:491 - Direct internet connection detected
+2025-08-21 19:51:07,824 [INFO] WebApp:225 - Starting web application
+2025-08-21 19:51:07,824 [INFO] WebApp:593 - Web application path used /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient1/index.html
+2025-08-21 19:51:07,984 [INFO] WebApp:191 - Connection restablished
+2025-08-21 19:51:09,022 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENVWB1.1.4.0
+2025-08-21 19:51:09,027 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-ASTRA1.2.0.2
+2025-08-21 19:51:09,031 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SMBUS.2.1.0
+2025-08-21 19:51:09,035 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST60.1.0.0
+2025-08-21 19:51:09,055 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F7.1.1.0
+2025-08-21 19:51:09,077 [WARN] PackLoader:240 - Cannot read IP mode file for Infineon.AIROC-Wi-Fi-Bluetooth-STM32.1.7.1
+2025-08-21 19:51:09,095 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7.3.4.0
+2025-08-21 19:51:09,104 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DISPLAY.3.0.0
+2025-08-21 19:51:09,113 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC10.1.0.0
+2025-08-21 19:51:09,122 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.0.0
+2025-08-21 19:51:09,127 [WARN] PackLoader:240 - Cannot read IP mode file for emotas.I-CUBE-CANOPEN.1.3.0
+2025-08-21 19:51:09,129 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : Cortex-A Device cause : null
+2025-08-21 19:51:09,137 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
+2025-08-21 19:51:09,137 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
+2025-08-21 19:51:09,137 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
+2025-08-21 19:51:09,141 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.1.0
+2025-08-21 19:51:09,144 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-SMARTAG2.1.2.0
+2025-08-21 19:51:09,146 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-FLIGHT1.5.1.0
+2025-08-21 19:51:09,151 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
+2025-08-21 19:51:09,151 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
+2025-08-21 19:51:09,151 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
+2025-08-21 19:51:09,152 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
+2025-08-21 19:51:09,152 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
+2025-08-21 19:51:09,154 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WL.2.0.0
+2025-08-21 19:51:09,158 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENV1.5.0.0
+2025-08-21 19:51:09,163 [WARN] PackLoader:240 - Cannot read IP mode file for WES.I-CUBE-Cesium.1.3.0
+2025-08-21 19:51:09,167 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE2.3.3.0
+2025-08-21 19:51:09,170 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC9.1.0.0
+2025-08-21 19:51:09,173 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSL.5.8.0
+2025-08-21 19:51:09,175 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE1.7.1.0
+2025-08-21 19:51:09,178 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfMQTT.1.19.2
+2025-08-21 19:51:09,188 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-EEPRMA1.5.2.0
+2025-08-21 19:51:09,191 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.1.0
+2025-08-21 19:51:09,198 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G0.1.1.0
+2025-08-21 19:51:09,203 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SAFEA1.1.2.2
+2025-08-21 19:51:09,206 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC4.3.0.0
+2025-08-21 19:51:09,211 [WARN] PackLoader:240 - Cannot read IP mode file for EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1
+2025-08-21 19:51:09,214 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-WB05N.2.0.0
+2025-08-21 19:51:09,216 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfTPM.3.8.0
+2025-08-21 19:51:09,220 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TCPP.4.2.0
+2025-08-21 19:51:09,223 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-SIGFOX1.3.2.0
+2025-08-21 19:51:09,226 [WARN] PackLoader:240 - Cannot read IP mode file for ITTIA_DB.I-CUBE-ITTIADB.8.9.0
+2025-08-21 19:51:09,229 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST67W61.1.0.0
+2025-08-21 19:51:09,231 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.2.0
+2025-08-21 19:51:09,244 [WARN] PackLoader:240 - Cannot read IP mode file for SEGGER.I-CUBE-embOS.1.3.1
+2025-08-21 19:51:09,263 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0
+2025-08-21 19:51:09,285 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-MEMS1.11.3.0
+2025-08-21 19:51:09,370 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-PM33A1.1.0.0
+2025-08-21 19:51:09,378 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F4.1.1.0
+2025-08-21 19:51:09,381 [WARN] PackLoader:240 - Cannot read IP mode file for Avnet-IotConnect.X-CUBE-IoTC-DA16k-PMOD.1.0.0
+2025-08-21 19:51:09,383 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ISPU.2.1.0
+2025-08-21 19:51:09,386 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC12.1.0.0
+2025-08-21 19:51:09,394 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L5.2.0.0
+2025-08-21 19:51:09,398 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC6.3.1.0
+2025-08-21 19:51:09,402 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-FREERTOS.1.3.1
+2025-08-21 19:51:09,405 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STAIOTCFT.1.0.0
+2025-08-21 19:51:09,407 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DPower.1.3.0
+2025-08-21 19:51:09,415 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : LAN8742 Phy interface Condition cause : null
+2025-08-21 19:51:09,415 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L4.2.0.0
+2025-08-21 19:51:09,416 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
+2025-08-21 19:51:09,416 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
+2025-08-21 19:51:09,417 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
+2025-08-21 19:51:09,420 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SFXS2LP1.4.0.0
+2025-08-21 19:51:09,425 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.1.0
+2025-08-21 19:51:09,437 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
+2025-08-21 19:51:09,438 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
+2025-08-21 19:51:09,439 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WB.2.0.0
+2025-08-21 19:51:09,439 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
+2025-08-21 19:51:09,440 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
+2025-08-21 19:51:09,440 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
+2025-08-21 19:51:09,440 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
+2025-08-21 19:51:09,440 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
+2025-08-21 19:51:09,444 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-GNSS1.7.0.1
+2025-08-21 19:51:09,447 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOUCHGFX.4.25.0
+2025-08-21 19:51:09,450 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.0.0
+2025-08-21 19:51:09,457 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SUBG2.5.0.0
+2025-08-21 19:51:09,470 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7RS.1.1.0
+2025-08-21 19:51:09,472 [WARN] PackLoader:240 - Cannot read IP mode file for Cesanta.I-CUBE-Mongoose.7.13.0
+2025-08-21 19:51:09,478 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G4.2.0.0
+2025-08-21 19:51:09,481 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSH.1.4.20
+2025-08-21 19:51:09,483 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC7.2.0.0
+2025-08-21 19:51:09,488 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-IPS.3.1.0
+2025-08-21 19:51:09,493 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALS.1.0.2
+2025-08-21 19:51:09,496 [WARN] PackLoader:240 - Cannot read IP mode file for portGmbH.I-Cube-SoM-uGOAL.1.1.0
+2025-08-21 19:51:09,500 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOF1.3.4.3
+2025-08-21 19:51:09,506 [INFO] ThirdParty:978 - Integrity check success = true
+2025-08-21 19:51:09,507 [INFO] IntegrityCheckThread:100 - exiting critical section [integrity check]
+2025-08-21 19:51:09,507 [INFO] IntegrityCheckThread:103 - End integrity checks thread
+2025-08-21 19:52:23,740 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated)
+2025-08-21 19:52:28,737 [INFO] MainUpdater:2872 - connection check result : 10
+2025-08-21 19:52:28,738 [INFO] MainUpdater:2872 - connection check result : 10
+2025-08-21 19:52:28,761 [INFO] MicroXplorer:468 - Change Database Path :
+2025-08-21 19:52:28,761 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150
+2025-08-21 19:52:28,766 [WARN] ThirdParty:871 - waiting for thirdparty lock release [close project]
+2025-08-21 19:52:28,766 [INFO] ThirdParty:873 - entering critical section [close project]
+2025-08-21 19:52:28,767 [INFO] ThirdParty:883 - exiting critical section [close project]
+2025-08-21 19:52:28,770 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration)
+2025-08-21 19:52:28,772 [INFO] UtilMem:75 - Begin LoadConfig() Used Memory: 783663096 Bytes (877658112)
+2025-08-21 19:52:28,782 [INFO] MicroXplorer:468 - Change Database Path : /home/kymkim/.stm32cubemx/databases/DB.6.0.130/db/
+2025-08-21 19:52:28,783 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.130
+2025-08-21 19:52:30,306 [INFO] MicroXplorer:468 - Change Database Path :
+2025-08-21 19:52:30,306 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150
+2025-08-21 19:52:30,306 [INFO] OpenFileManager:355 - Change cursor
+2025-08-21 19:52:30,348 [INFO] Mcu:2029 - Initializing MCU STM32F446R(C-E)Tx STM32F446RETx STM32F446RET6
+2025-08-21 19:52:31,118 [INFO] Context:786 - Trying to add GPIOservice into a context which must be forbidden
+2025-08-21 19:52:31,432 [INFO] Rule:233 - rule Adapt Old IOC before rework replace old CORTEX_M33/CORTEX_M55 attributes by the new one. is applicable
+2025-08-21 19:52:31,432 [INFO] Rule:233 - rule Rename parametre of RCC RCC_APBDBG_DIV2 to RCC_TIMPRES_DIV2 is applicable
+2025-08-21 19:52:31,432 [INFO] Rule:233 - rule Rename DIE493 pin PA10 [PA12] -> PA10 is applicable
+2025-08-21 19:52:31,432 [INFO] Rule:233 - rule Rename DIE493 pin PA9 [PA11] -> PA9 is applicable
+2025-08-21 19:52:31,432 [INFO] Rule:233 - rule Rename DIE492 PartNumber CPN STM32WBA5MJGHx -> STM32WBA5MMGHx is applicable
+2025-08-21 19:52:31,432 [INFO] Rule:233 - rule Rename DIE492 PartNumber Name STM32WBA5MJGHx -> STM32WBA5MMGHx is applicable
+2025-08-21 19:52:31,432 [INFO] Rule:233 - rule Rename DIE492 PartNumber UserName STM32WBA5MJGHx -> STM32WBA5MMGHx is applicable
+2025-08-21 19:52:31,432 [INFO] Rule:233 - rule Rename DIE492 PartNumber DeviceId STM32WBA5MJGHx -> STM32WBA5MMGHx is applicable
+2025-08-21 19:52:31,432 [INFO] Rule:233 - rule Adapt Old IOC CSI. is applicable
+2025-08-21 19:52:31,432 [INFO] Rule:233 - rule Adapt Old IOC DCMIPP. is applicable
+2025-08-21 19:52:31,433 [INFO] Rule:233 - rule Adapt Old IOC DCMIPP Mode Parallel. is applicable
+2025-08-21 19:52:31,433 [INFO] Rule:233 - rule Adapt Old IOC LTDC. is applicable
+2025-08-21 19:52:31,433 [INFO] Rule:233 - rule Rename STM32MP2 RIF Peripheral LTDC RIF.RISUP.LTDC_L0L1.Privilege -> RIF.RISUP.LTDC_L1L2.Privilege is applicable
+2025-08-21 19:52:31,433 [INFO] Rule:233 - rule Rename STM32MP2 RIF Peripheral LTDC RIF.RISUP.LTDC_L0L1.Privilege -> RIF.RISUP.LTDC_L1L2.Privilege is applicable
+2025-08-21 19:52:31,433 [INFO] Rule:233 - rule Rename STM32MP2 RIF Peripheral LTDC RIF.RISUP.LTDC_L0L1.Lock -> RIF.RISUP.LTDC_L1L2.Lock is applicable
+2025-08-21 19:52:31,433 [INFO] Rule:233 - rule Rename STM32MP2 RIF Peripheral LTDC RIF.RISUP.LTDC_L2.Lock -> RIF.RISUP.LTDC_L3.Lock is applicable
+2025-08-21 19:52:31,433 [INFO] Rule:233 - rule Adapt the old IOC example for updating the SYS when it is misconfigured. is applicable
+2025-08-21 19:52:31,433 [INFO] Rule:233 - rule Rename STM32C09 Mcu.Package LQFP64 -> LQFP48 is applicable
+2025-08-21 19:52:31,433 [INFO] Rule:233 - rule Adapt the old IOC example for updating the SYS when it is misconfigured. is applicable
+2025-08-21 19:52:31,433 [INFO] Rule:233 - rule Adapt the old IOC example for updating the SYS when it is misconfigured. is applicable
+2025-08-21 19:52:31,435 [INFO] DbConfProperties:307 - Apply Compatibility (4/20 Rules)
+2025-08-21 19:52:31,463 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) Pin32 (VP_RIF_VS_RIF1) cannot be retrieved for this MCU
+2025-08-21 19:52:31,530 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS, mode=CMSIS_V1, owner=FREERTOS
+2025-08-21 19:52:31,531 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS2, mode=CMSIS_V2, owner=FREERTOS
+2025-08-21 19:52:31,531 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V1, owner=FREERTOS
+2025-08-21 19:52:31,531 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V2, owner=FREERTOS
+2025-08-21 19:52:31,531 [WARN] ModelIntegratedComponent:184 - Missing modes for component STMicroelectronics:FreeRTOS:0.0.1:STMicroelectronics:RTOS:FreeRTOS:Core:::10.2.0:
+2025-08-21 19:52:31,550 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,551 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,552 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,552 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,552 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,552 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,552 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,552 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,552 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,552 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,552 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,552 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,552 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,552 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,552 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,552 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,552 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:52:31,553 [WARN] ModelPack:524 - Component already loaded: STMicroelectronics:HAL Drivers:0.0.0:STMicroelectronics:Device:STMicro_Driver:XSPI:HAL::0.0.1:HAL_XSPI
+2025-08-21 19:52:31,618 [INFO] ThirdPartyModel:298 - Start build external matchings
+2025-08-21 19:52:31,816 [INFO] ThirdPartyModel:316 - End build external matchings
+2025-08-21 19:52:31,830 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Invalid parameter (FamilyName)
+2025-08-21 19:52:31,834 [WARN] IP:2250 - DEVICE_SERIAL0_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:52:31,834 [WARN] IP:2250 - DEVICE_SERIAL1_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:52:31,834 [WARN] IP:2250 - DEVICE_SERIAL2_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:52:32,014 [INFO] ApiDb:581 - Connected to CubeFinder SQLite database (/home/kymkim/.stmcufinder/plugins/mcufinder/mcu/cube-finder-db.db)
+2025-08-21 19:52:32,058 [INFO] ApiDb:668 - CubeFinder database Data Model version=2.1
+2025-08-21 19:52:32,058 [INFO] ApiDb:669 - CubeFinder database Configuration version=3.0.39
+2025-08-21 19:52:32,058 [INFO] ApiDb:670 - CubeFinder database generation date=2025-07-24 (1753349077)
+2025-08-21 19:52:32,058 [INFO] ApiDb:671 - CubeFinder database FW Pack versions=[FP-ATR-ASTRA1_V2.0.0, FP-SNS-FLIGHT1_V5.1.0, FP-SNS-MOTENV1_V5.0.0, FP-SNS-MOTENVWB1_V1.4.0, FP-SNS-SMARTAG2_V1.2.0, FP-SNS-STBOX1_V2.0.0, STM32Cube_FW_C0_V1.4.0, STM32Cube_FW_F4_V1.28.2, STM32Cube_FW_F7_V1.17.3, STM32Cube_FW_G0_V1.6.2, STM32Cube_FW_G4_V1.6.1, STM32Cube_FW_H5_V1.5.0, STM32Cube_FW_H7RS_V1.2.0, STM32Cube_FW_H7_V1.12.1, STM32Cube_FW_L0_V1.12.2, STM32Cube_FW_L4_V1.18.1, STM32Cube_FW_L5_V1.5.1, STM32Cube_FW_N6_V1.2.0, STM32Cube_FW_U0_V1.3.0, STM32Cube_FW_U3_V1.2.0, STM32Cube_FW_U5_V1.8.0, STM32Cube_FW_WB0_V1.3.0, STM32Cube_FW_WBA_V1.7.0, STM32Cube_FW_WB_V1.23.0, STM32Cube_FW_WL3_V1.2.0, STM32Cube_FW_WL_V1.3.1, X-CUBE-ALGOBUILD_V1.4.0, X-CUBE-ALS_V1.0.2, X-CUBE-AZRTOS-F4_V1.1.0, X-CUBE-AZRTOS-F7_V1.1.0, X-CUBE-AZRTOS-G0_V1.1.0, X-CUBE-AZRTOS-G4_V2.0.0, X-CUBE-AZRTOS-H7RS_V1.1.0, X-CUBE-AZRTOS-H7_V3.4.0, X-CUBE-AZRTOS-L4_V2.0.0, X-CUBE-AZRTOS-L5_V2.0.0, X-CUBE-AZRTOS-WB_V2.0.0, X-CUBE-AZRTOS-WL_V2.0.0, X-CUBE-BLE1_V7.1.0, X-CUBE-BLE2_V3.3.0, X-CUBE-BLEMGR_V4.1.0, X-CUBE-EEPRMA1_V5.2.0, X-CUBE-FREERTOS_V1.3.1, X-CUBE-GNSS1_V6.0.0, X-CUBE-MEMS1_V11.3.0, X-CUBE-NFC4_V3.0.0, X-CUBE-NFC7_V2.0.0, X-CUBE-SFXS2LP1_V4.0.0, X-CUBE-ST67W61_V1.0.0, X-CUBE-SUBG2_V5.0.0, X-CUBE-TOF1_V3.4.3]
+2025-08-21 19:52:32,117 [INFO] DbBoardsSqlite:226 - include board P-NUCLEO-WB55-NUCLEO as a kit item of type 'Nucleo-64'
+2025-08-21 19:52:32,117 [INFO] DbBoardsSqlite:226 - include board P-NUCLEO-WB55-USBDONGLE as a kit item of type 'Nucleo USB Dongle'
+2025-08-21 19:52:32,118 [INFO] DbBoardsSqlite:226 - include board STEVAL-IDP005V1 as a kit item of type 'Evaluation Board'
+2025-08-21 19:52:32,118 [INFO] DbBoardsSqlite:226 - include board STEVAL-IDP005V2 as a kit item of type 'Evaluation Board'
+2025-08-21 19:52:32,186 [INFO] ApiDb:240 - Found 880 in-development CPN: [B-G473E-ZEST1S, B-WB1M-WPAN1, B-WBA5M-WPAN, B-WL5M-SUBG1, NUCLEO-C031C6, NUCLEO-C051C8, NUCLEO-C071RB, NUCLEO-C092RC, NUCLEO-H503RB, NUCLEO-H533RE, NUCLEO-H563ZI, NUCLEO-H7S3L8, NUCLEO-N657X0-Q, NUCLEO-U031R8, NUCLEO-U083RC, NUCLEO-U385RG-Q, NUCLEO-U545RE-Q, NUCLEO-U5A5ZJ-Q, NUCLEO-WB05KZ, NUCLEO-WB07CC, NUCLEO-WB09KE, NUCLEO-WBA52CG, NUCLEO-WBA55CG, NUCLEO-WL33CC1, NUCLEO-WL33CC2, STEVAL-PROTEUS1, STEVAL-SMARTAG2, STEVAL-STWINBX1, STM320518-EVAL, STM32C0116-DK, STM32C011D6Y3TR, STM32C011D6Y6TR, STM32C011F4P3, STM32C011F4P6, STM32C011F4U3, STM32C011F4U6TR, STM32C011F6P3, STM32C011F6P6, STM32C011F6U3, STM32C011F6U6TR, STM32C011J4M3, STM32C011J4M6, STM32C011J6M3, STM32C011J6M6, STM32C0316-DK, STM32C031C4T3, STM32C031C4T6, STM32C031C4U3, STM32C031C4U6, STM32C031C6T3, STM32C031C6T6, STM32C031C6U3, STM32C031C6U6, STM32C031F4P3, STM32C031F4P6, STM32C031F6P3, STM32C031F6P6, STM32C031G4U3, STM32C031G4U6, STM32C031G6U3, STM32C031G6U6, STM32C031K4T3, STM32C031K4T6, STM32C031K4U3, STM32C031K4U6, STM32C031K6T3, STM32C031K6T6, STM32C031K6U3, STM32C031K6U6, STM32C051C6T6, STM32C051C6U6, STM32C051C8T6, STM32C051C8U6, STM32C051D8Y6TR, STM32C051F6P6, STM32C051F8P6, STM32C051G6U6, STM32C051G8U6, STM32C051K6T6, STM32C051K6U6, STM32C051K8T6, STM32C071C8T6, STM32C071C8T6N, STM32C071C8U6, STM32C071C8U6N, STM32C071CBT6, STM32C071CBT6N, STM32C071CBU6, STM32C071CBU6N, STM32C071F8P6, STM32C071F8P6N, STM32C071FBP6, STM32C071FBP6N, STM32C071FBY6TR, STM32C071G8U6, STM32C071G8U6N, STM32C071GBU6, STM32C071GBU6N, STM32C071K8T6, STM32C071K8T6N, STM32C071K8U6, STM32C071K8U6N, STM32C071KBT6, STM32C071KBT6N, STM32C071KBU6, STM32C071KBU6N, STM32C071R8T6, STM32C071R8T6N, STM32C071RBI6N, STM32C071RBT6, STM32C071RBT6N, STM32C091CBT6, STM32C091CBU6, STM32C091CCT6, STM32C091CCU6, STM32C091ECY6TR, STM32C091FBP6, STM32C091FCP6, STM32C091GBU6, STM32C091GCU6, STM32C091KBT6, STM32C091KBU6, STM32C091KCT6, STM32C091KCU6, STM32C091RBT6, STM32C091RCI6, STM32C091RCT6, STM32C092CBT6, STM32C092CBU6, STM32C092CCT6, STM32C092CCU6, STM32C092ECY6TR, STM32C092FBP6, STM32C092FCP6, STM32C092GBU6, STM32C092GCU6, STM32C092KBT6, STM32C092KBU6, STM32C092KCT6, STM32C092KCU6, STM32C092RBT6, STM32C092RCI6, STM32C092RCT6, STM32G071K8TXN, STM32G071K8UXN, STM32G081GBU6N, STM32G081KBT6N, STM32G081KBUXN, STM32G0B1CCT6N, STM32G0B1KCT6, STM32G0B1NEY6TR, STM32G0B1RCT6N, STM32G0C1CCT6, STM32G0C1CCT6N, STM32G0C1CCU6N, STM32G0C1CET6N, STM32G0C1CEU6N, STM32G0C1KCT6, STM32G0C1NEY6TR, STM32G0C1RCI6N, STM32G0C1RCT6N, STM32G0C1REI6N, STM32G0C1RET6N, STM32G0C1VCI6, STM32G0C1VEI6, STM32G411C6T3, STM32G411C6T6, STM32G411C6U3, STM32G411C6U6, STM32G411C8T3, STM32G411C8T6, STM32G411C8U3, STM32G411C8U6, STM32G411CBT3, STM32G411CBT6, STM32G411CBU3, STM32G411CBU6, STM32G411K6T3, STM32G411K6T6, STM32G411K6U3, STM32G411K6U6, STM32G411K8T3, STM32G411K8T6, STM32G411K8U3, STM32G411K8U6, STM32G411KBT3, STM32G411KBT6, STM32G411KBU3, STM32G411KBU6, STM32G411M6T3, STM32G411M6T6, STM32G411M8T3, STM32G411M8T6, STM32G411MBT3, STM32G411MBT6, STM32G411R6T3, STM32G411R6T6, STM32G411R8T3, STM32G411R8T6, STM32G411RBT3, STM32G411RBT6, STM32G414CBT3, STM32G414CBT6, STM32G414CBU3, STM32G414CBU6, STM32G414CCT3, STM32G414CCT6, STM32G414CCU3, STM32G414CCU6, STM32G414MBT3, STM32G414MBT6, STM32G414MCT3, STM32G414MCT6, STM32G414RBT3, STM32G414RBT6, STM32G414RCT3, STM32G414RCT6, STM32G414VBT3, STM32G414VBT6, STM32G414VCT3, STM32G414VCT6, STM32G431CBT3Z, STM32G431RBT3Z, STM32G471CCT6, STM32G471CCU6, STM32G471CET3, STM32G471CET6, STM32G471CEU3, STM32G471CEU6, STM32G471MCT6, STM32G471MET3, STM32G471MET6, STM32G471MEY6TR, STM32G471QCT6, STM32G471QET3, STM32G471RCT6, STM32G471RET3, STM32G471RET6, STM32G471VCH6, STM32G471VCI6, STM32G471VCT6, STM32G471VEH3, STM32G471VEH6, STM32G471VEI3, STM32G471VEI6, STM32G471VET3, STM32G471VET6, STM32G473QET3Z, STM32G473RET3Z, STM32G474CCT6, STM32G491RET3Z, STM32H503CBT6, STM32H503CBU6, STM32H503EBY6TR, STM32H503KBU6, STM32H503RBT6, STM32H523CCT6, STM32H523CCU6, STM32H523CET6, STM32H523CEU6, STM32H523HEY6TR, STM32H523RCT6, STM32H523RET6, STM32H523VCI6, STM32H523VCT6, STM32H523VEI6, STM32H523VET6, STM32H523ZCJ6, STM32H523ZCT6, STM32H523ZEJ6, STM32H523ZET6, STM32H533CET6, STM32H533CEU6, STM32H533HEY6TR, STM32H533RET6, STM32H533VEI6, STM32H533VET6, STM32H533ZEJ6, STM32H533ZET6, STM32H562AGI6, STM32H562AII6, STM32H562IGK6, STM32H562IGT6, STM32H562IIK6, STM32H562IIT6, STM32H562RGT6, STM32H562RGV6, STM32H562RIT6, STM32H562RIV6, STM32H562VGT6, STM32H562VIT6, STM32H562ZGT6, STM32H562ZIT6, STM32H563AGI6, STM32H563AII3Q, STM32H563AII6, STM32H563IGK6, STM32H563IGT6, STM32H563IIK3Q, STM32H563IIK6, STM32H563IIT3Q, STM32H563IIT6, STM32H563MIY3QTR, STM32H563RGT6, STM32H563RGV6, STM32H563RIT6, STM32H563RIV6, STM32H563VGT6, STM32H563VIT3Q, STM32H563VIT6, STM32H563ZGT6, STM32H563ZIT3Q, STM32H563ZIT6, STM32H573AII3Q, STM32H573AII6, STM32H573I-DK, STM32H573IIK3Q, STM32H573IIK6, STM32H573IIT3Q, STM32H573IIT6, STM32H573MIY3QTR, STM32H573RIT6, STM32H573RIV6, STM32H573VIT3Q, STM32H573VIT6, STM32H573ZIT3Q, STM32H573ZIT6, STM32H7R3A8I6, STM32H7R3I8K6, STM32H7R3I8T6, STM32H7R3L8H6, STM32H7R3L8H6H, STM32H7R3R8V6, STM32H7R3V8H6, STM32H7R3V8T6, STM32H7R3V8Y6TR, STM32H7R3Z8J6, STM32H7R3Z8T6, STM32H7R7A8I6, STM32H7R7I8K6, STM32H7R7I8T6, STM32H7R7L8H6, STM32H7R7L8H6H, STM32H7R7Z8J6, STM32H7S3A8I6, STM32H7S3I8K6, STM32H7S3I8T6, STM32H7S3L8H6, STM32H7S3L8H6H, STM32H7S3R8V6, STM32H7S3V8H6, STM32H7S3V8T6, STM32H7S3V8Y6TR, STM32H7S3Z8J6, STM32H7S3Z8T6, STM32H7S78-DK, STM32H7S7A8I6, STM32H7S7I8K6, STM32H7S7I8T6, STM32H7S7L8H6, STM32H7S7L8H6H, STM32H7S7Z8J6, STM32L4R5QGI6STR, STM32MP131AAE3, STM32MP131AAF3, STM32MP131AAG3, STM32MP131CAE3, STM32MP131CAF3, STM32MP131CAG3, STM32MP131DAE7, STM32MP131DAF7, STM32MP131DAG7, STM32MP131FAE7, STM32MP131FAF7, STM32MP131FAG7, STM32MP133AAE3, STM32MP133AAF3, STM32MP133AAG3, STM32MP133CAE3, STM32MP133CAF3, STM32MP133CAG3, STM32MP133DAE7, STM32MP133DAF7, STM32MP133DAG7, STM32MP133FAE7, STM32MP133FAF7, STM32MP133FAG7, STM32MP135AAE3, STM32MP135AAF3, STM32MP135AAG3, STM32MP135CAE3, STM32MP135CAF3, STM32MP135CAG3, STM32MP135DAE7, STM32MP135DAF7, STM32MP135DAG7, STM32MP135F-DK, STM32MP135FAE7, STM32MP135FAF7, STM32MP135FAF7T, STM32MP135FAF7U, STM32MP135FAG7, STM32MP211AAL3, STM32MP211AAM3, STM32MP211AAN3, STM32MP211AAO3, STM32MP211CAL3, STM32MP211CAM3, STM32MP211CAN3, STM32MP211CAO3, STM32MP211DAL3, STM32MP211DAM3, STM32MP211DAN3, STM32MP211DAO3, STM32MP211FAL3, STM32MP211FAM3, STM32MP211FAN3, STM32MP211FAO3, STM32MP213AAL3, STM32MP213AAM3, STM32MP213AAN3, STM32MP213AAO3, STM32MP213CAL3, STM32MP213CAM3, STM32MP213CAN3, STM32MP213CAO3, STM32MP213DAL3, STM32MP213DAM3, STM32MP213DAN3, STM32MP213DAO3, STM32MP213FAL3, STM32MP213FAM3, STM32MP213FAN3, STM32MP213FAO3, STM32MP215AAL3, STM32MP215AAM3, STM32MP215AAN3, STM32MP215AAO3, STM32MP215CAL3, STM32MP215CAM3, STM32MP215CAN3, STM32MP215CAO3, STM32MP215DAL3, STM32MP215DAM3, STM32MP215DAN3, STM32MP215DAO3, STM32MP215F-DK, STM32MP215FAL3, STM32MP215FAM3, STM32MP215FAN3, STM32MP215FAO3, STM32MP231AAJ3, STM32MP231AAK3, STM32MP231AAL3, STM32MP231CAJ3, STM32MP231CAK3, STM32MP231CAL3, STM32MP231DAJ3, STM32MP231DAK3, STM32MP231DAL3, STM32MP231FAJ3, STM32MP231FAK3, STM32MP231FAL3, STM32MP233AAJ3, STM32MP233AAK3, STM32MP233AAL3, STM32MP233CAJ3, STM32MP233CAK3, STM32MP233CAL3, STM32MP233DAJ3, STM32MP233DAK3, STM32MP233DAL3, STM32MP233FAJ3, STM32MP233FAK3, STM32MP233FAL3, STM32MP235AAJ3, STM32MP235AAK3, STM32MP235AAL3, STM32MP235CAJ3, STM32MP235CAK3, STM32MP235CAL3, STM32MP235DAJ3, STM32MP235DAK3, STM32MP235DAL3, STM32MP235FAJ3, STM32MP235FAK3, STM32MP235FAL3, STM32MP251AAI3, STM32MP251AAK3, STM32MP251AAL3, STM32MP251CAI3, STM32MP251CAK3, STM32MP251CAL3, STM32MP251DAI3, STM32MP251DAK3, STM32MP251DAL3, STM32MP251FAI3, STM32MP251FAK3, STM32MP251FAL3, STM32MP253AAI3, STM32MP253AAK3, STM32MP253AAL3, STM32MP253CAI3, STM32MP253CAK3, STM32MP253CAL3, STM32MP253DAI3, STM32MP253DAK3, STM32MP253DAL3, STM32MP253FAI3, STM32MP253FAK3, STM32MP253FAL3, STM32MP255AAI3, STM32MP255AAK3, STM32MP255AAL3, STM32MP255CAI3, STM32MP255CAK3, STM32MP255CAL3, STM32MP255DAI3, STM32MP255DAK3, STM32MP255DAL3, STM32MP255FAI3, STM32MP255FAK3, STM32MP255FAL3, STM32MP257AAI3, STM32MP257AAK3, STM32MP257AAL3, STM32MP257CAI3, STM32MP257CAK3, STM32MP257CAL3, STM32MP257DAI3, STM32MP257DAK3, STM32MP257DAL3, STM32MP257F-DK, STM32MP257F-EV1, STM32MP257FAI3, STM32MP257FAK3, STM32MP257FAL3, STM32N645A0H3Q, STM32N645B0H3Q, STM32N645I0H3Q, STM32N645L0H3Q, STM32N645X0H3Q, STM32N645Z0H3Q, STM32N647A0H3Q, STM32N647B0H3Q, STM32N647I0H3Q, STM32N647L0H3Q, STM32N647X0H3Q, STM32N647Z0H3Q, STM32N655A0H3Q, STM32N655B0H3Q, STM32N655I0H3Q, STM32N655L0H3Q, STM32N655X0H3Q, STM32N655Z0H3Q, STM32N6570-DK, STM32N657A0H3Q, STM32N657B0H3Q, STM32N657I0H3Q, STM32N657L0H3Q, STM32N657X0H3Q, STM32N657Z0H3Q, STM32U031C6T6, STM32U031C6U6, STM32U031C8T6, STM32U031C8U6, STM32U031F4P6, STM32U031F6P6, STM32U031F8P6, STM32U031G6Y6TR, STM32U031G8Y6TR, STM32U031K4U6, STM32U031K6U6, STM32U031K8U6, STM32U031R6I6, STM32U031R6T6, STM32U031R8I6, STM32U031R8T6, STM32U073C8T6, STM32U073C8U6, STM32U073CBT6, STM32U073CBU6, STM32U073CCT6, STM32U073CCU6, STM32U073H8Y6TR, STM32U073HBY6TR, STM32U073HCY6TR, STM32U073K8U6, STM32U073KBU6, STM32U073KCU6, STM32U073M8I6, STM32U073M8T6, STM32U073MBI6, STM32U073MBT6, STM32U073MCI6, STM32U073MCT6, STM32U073R8I6, STM32U073R8T6, STM32U073RBI6, STM32U073RBT6, STM32U073RCI6, STM32U073RCT6, STM32U083C-DK, STM32U083CCT6, STM32U083CCU6, STM32U083HCY6TR, STM32U083KCU6, STM32U083MCI6, STM32U083MCT6, STM32U083RCI6, STM32U083RCT6, STM32U375CET6, STM32U375CET6Q, STM32U375CEU6, STM32U375CEU6Q, STM32U375CEY6QTR, STM32U375CGT6, STM32U375CGT6Q, STM32U375CGU6, STM32U375CGU6Q, STM32U375CGY6QTR, STM32U375KEU6, STM32U375KGU6, STM32U375REI6, STM32U375REI6Q, STM32U375RET6, STM32U375RET6Q, STM32U375REY6GTR, STM32U375REY6QTR, STM32U375RGI6, STM32U375RGI6Q, STM32U375RGT6, STM32U375RGT6Q, STM32U375RGY6GTR, STM32U375RGY6QTR, STM32U375VEI6, STM32U375VEI6Q, STM32U375VET6, STM32U375VET6Q, STM32U375VGI6, STM32U375VGI6Q, STM32U375VGT6, STM32U375VGT6Q, STM32U385CGT6, STM32U385CGT6Q, STM32U385CGU6, STM32U385CGU6Q, STM32U385CGY6QTR, STM32U385KGU6, STM32U385RGI6, STM32U385RGI6Q, STM32U385RGT6, STM32U385RGT6Q, STM32U385RGY6GTR, STM32U385RGY6QTR, STM32U385VGI6, STM32U385VGI6Q, STM32U385VGT6, STM32U385VGT6Q, STM32U535CBT6, STM32U535CBT6Q, STM32U535CBU6, STM32U535CBU6Q, STM32U535CCT6, STM32U535CCT6Q, STM32U535CCU6, STM32U535CCU6Q, STM32U535CET6, STM32U535CET6Q, STM32U535CEU6, STM32U535CEU6Q, STM32U535JEY6QTR, STM32U535NCY6QTR, STM32U535NEY6QTR, STM32U535RBI6, STM32U535RBI6Q, STM32U535RBT6, STM32U535RBT6Q, STM32U535RCI6, STM32U535RCI6Q, STM32U535RCT6, STM32U535RCT6Q, STM32U535REI6, STM32U535REI6Q, STM32U535RET6, STM32U535RET6Q, STM32U535VCI6, STM32U535VCI6Q, STM32U535VCT6, STM32U535VCT6Q, STM32U535VEI6, STM32U535VEI6Q, STM32U535VET6, STM32U535VET6Q, STM32U545CET6, STM32U545CET6Q, STM32U545CEU6, STM32U545CEU6Q, STM32U545JEY6QTR, STM32U545NEY6QTR, STM32U545REI6, STM32U545REI6Q, STM32U545RET6, STM32U545RET6Q, STM32U545VEI6, STM32U545VEI6Q, STM32U545VET6, STM32U545VET6Q, STM32U595AIH6, STM32U595AIH6Q, STM32U595AJH6, STM32U595AJH6Q, STM32U595QII6, STM32U595QII6Q, STM32U595QJI6, STM32U595QJI6Q, STM32U595RIT6, STM32U595RIT6Q, STM32U595RJT6, STM32U595RJT6Q, STM32U595VIT6, STM32U595VIT6Q, STM32U595VJT6, STM32U595VJT6Q, STM32U595ZIT6, STM32U595ZIT6Q, STM32U595ZIY6QTR, STM32U595ZJT6, STM32U595ZJT6Q, STM32U595ZJY6QTR, STM32U599BJY6QTR, STM32U599NIH6Q, STM32U599NJH6Q, STM32U599VIT6Q, STM32U599VJT6, STM32U599VJT6Q, STM32U599ZIT6Q, STM32U599ZIY6QTR, STM32U599ZJT6Q, STM32U599ZJY6QTR, STM32U5A5AJH6, STM32U5A5AJH6Q, STM32U5A5QII3Q , STM32U5A5QJI6, STM32U5A5QJI6Q, STM32U5A5RJT6, STM32U5A5RJT6Q, STM32U5A5VJT6, STM32U5A5VJT6Q, STM32U5A5ZJT6, STM32U5A5ZJT6Q, STM32U5A5ZJY6QTR, STM32U5A9BJY6QTR, STM32U5A9J-DK, STM32U5A9NJH6Q, STM32U5A9VJT6Q, STM32U5A9ZJT6Q, STM32U5A9ZJY6QTR, STM32U5F7VIT6, STM32U5F7VIT6Q, STM32U5F7VJT6, STM32U5F7VJT6Q, STM32U5F9BJY6QTR, STM32U5F9NJH6Q, STM32U5F9VIT6Q, STM32U5F9VJT6Q, STM32U5F9ZIJ6QTR, STM32U5F9ZIT6Q, STM32U5F9ZJJ6QTR, STM32U5F9ZJT6Q, STM32U5G7VJT6, STM32U5G7VJT6Q, STM32U5G9BJY6QTR, STM32U5G9J-DK1, STM32U5G9J-DK2, STM32U5G9NJH6Q, STM32U5G9VJT6Q, STM32U5G9ZJJ6QTR, STM32U5G9ZJT6Q, STM32WB05KZV6TR, STM32WB05KZV7TR, STM32WB05TZF6TR, STM32WB05TZF7TR, STM32WB06CCF6TR, STM32WB06CCF7TR, STM32WB06CCV6TR, STM32WB06CCV7TR, STM32WB06KCV6TR, STM32WB06KCV7TR, STM32WB07CCF6TR, STM32WB07CCF7TR, STM32WB07CCV6TR, STM32WB07CCV7TR, STM32WB07KCV6TR, STM32WB07KCV7TR, STM32WB09KEV6TR, STM32WB09KEV7TR, STM32WB09TEF6TR, STM32WB09TEF7TR, STM32WB1MMCH6, STM32WBA50KGU6, STM32WBA50KGU6TR, STM32WBA52CEU6, STM32WBA52CEU6TR, STM32WBA52CEU7, STM32WBA52CEU7TR, STM32WBA52CGU6, STM32WBA52CGU6TR, STM32WBA52CGU6U, STM32WBA52CGU7, STM32WBA52CGU7TR, STM32WBA52KEU6, STM32WBA52KEU6TR, STM32WBA52KGU6, STM32WBA52KGU6TR, STM32WBA54CEU6, STM32WBA54CEU6TR, STM32WBA54CEU7, STM32WBA54CEU7TR, STM32WBA54CGU6, STM32WBA54CGU6TR, STM32WBA54CGU7, STM32WBA54CGU7TR, STM32WBA54KEU6, STM32WBA54KEU6TR, STM32WBA54KEU7, STM32WBA54KEU7TR, STM32WBA54KGU6, STM32WBA54KGU6TR, STM32WBA54KGU7, STM32WBA54KGU7TR, STM32WBA55CEU6, STM32WBA55CEU6TR, STM32WBA55CEU7, STM32WBA55CEU7TR, STM32WBA55CGU6, STM32WBA55CGU6TR, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CGU7TR, STM32WBA55G-DK1, STM32WBA55HEF6, STM32WBA55HEF7, STM32WBA55HGF6, STM32WBA55HGF7, STM32WBA55UEI6, STM32WBA55UEI6TR, STM32WBA55UEI7, STM32WBA55UEI7TR, STM32WBA55UGI6, STM32WBA55UGI6TR, STM32WBA55UGI7, STM32WBA55UGI7TR, STM32WBA5MMGH6TR, STM32WBA62MGF6, STM32WBA62MIF6, STM32WBA65MGF7, STM32WBA65MIF6, STM32WBA65MIF7, STM32WL30K8V6, STM32WL30KBV6, STM32WL31C8V6, STM32WL31CBV6, STM32WL31K8V6, STM32WL31KBV6, STM32WL33C8V6, STM32WL33C8V6X, STM32WL33CBV6, STM32WL33CBV6X, STM32WL33CCV6, STM32WL33CCV6A, STM32WL33CCV6X, STM32WL33K8V7, STM32WL33K8V7X, STM32WL33KBV7 , STM32WL33KBV7X, STM32WL33KCV7, STM32WL33KCV7X, STM32WL5MOCH6, STM32WL5MOCH6TR]
+2025-08-21 19:52:32,240 [INFO] BoardInfo:889 - No configuration file found for board P-NUCLEO-WB55
+2025-08-21 19:52:32,240 [INFO] DbBoards:161 - Kit is not supported: P-NUCLEO-WB55
+2025-08-21 19:52:32,242 [INFO] BoardInfo:889 - No configuration file found for board STEVAL-BFA001V1B
+2025-08-21 19:52:32,242 [INFO] DbBoards:161 - Kit is not supported: STEVAL-BFA001V1B
+2025-08-21 19:52:32,242 [INFO] BoardInfo:889 - No configuration file found for board STEVAL-BFA001V2B
+2025-08-21 19:52:32,243 [INFO] DbBoards:161 - Kit is not supported: STEVAL-BFA001V2B
+2025-08-21 19:52:32,297 [INFO] DbBoards:168 - Found 212 boards, 209 are supported
+2025-08-21 19:52:32,297 [INFO] DbBoards:169 - Found 212 boards, 43 of them is supported for Bsp
+2025-08-21 19:52:32,300 [INFO] ApiDb:668 - CubeFinder database Data Model version=2.1
+2025-08-21 19:52:32,300 [INFO] ApiDb:669 - CubeFinder database Configuration version=3.0.39
+2025-08-21 19:52:32,300 [INFO] ApiDb:670 - CubeFinder database generation date=2025-07-24 (1753349077)
+2025-08-21 19:52:32,300 [INFO] ApiDb:671 - CubeFinder database FW Pack versions=[FP-ATR-ASTRA1_V2.0.0, FP-SNS-FLIGHT1_V5.1.0, FP-SNS-MOTENV1_V5.0.0, FP-SNS-MOTENVWB1_V1.4.0, FP-SNS-SMARTAG2_V1.2.0, FP-SNS-STBOX1_V2.0.0, STM32Cube_FW_C0_V1.4.0, STM32Cube_FW_F4_V1.28.2, STM32Cube_FW_F7_V1.17.3, STM32Cube_FW_G0_V1.6.2, STM32Cube_FW_G4_V1.6.1, STM32Cube_FW_H5_V1.5.0, STM32Cube_FW_H7RS_V1.2.0, STM32Cube_FW_H7_V1.12.1, STM32Cube_FW_L0_V1.12.2, STM32Cube_FW_L4_V1.18.1, STM32Cube_FW_L5_V1.5.1, STM32Cube_FW_N6_V1.2.0, STM32Cube_FW_U0_V1.3.0, STM32Cube_FW_U3_V1.2.0, STM32Cube_FW_U5_V1.8.0, STM32Cube_FW_WB0_V1.3.0, STM32Cube_FW_WBA_V1.7.0, STM32Cube_FW_WB_V1.23.0, STM32Cube_FW_WL3_V1.2.0, STM32Cube_FW_WL_V1.3.1, X-CUBE-ALGOBUILD_V1.4.0, X-CUBE-ALS_V1.0.2, X-CUBE-AZRTOS-F4_V1.1.0, X-CUBE-AZRTOS-F7_V1.1.0, X-CUBE-AZRTOS-G0_V1.1.0, X-CUBE-AZRTOS-G4_V2.0.0, X-CUBE-AZRTOS-H7RS_V1.1.0, X-CUBE-AZRTOS-H7_V3.4.0, X-CUBE-AZRTOS-L4_V2.0.0, X-CUBE-AZRTOS-L5_V2.0.0, X-CUBE-AZRTOS-WB_V2.0.0, X-CUBE-AZRTOS-WL_V2.0.0, X-CUBE-BLE1_V7.1.0, X-CUBE-BLE2_V3.3.0, X-CUBE-BLEMGR_V4.1.0, X-CUBE-EEPRMA1_V5.2.0, X-CUBE-FREERTOS_V1.3.1, X-CUBE-GNSS1_V6.0.0, X-CUBE-MEMS1_V11.3.0, X-CUBE-NFC4_V3.0.0, X-CUBE-NFC7_V2.0.0, X-CUBE-SFXS2LP1_V4.0.0, X-CUBE-ST67W61_V1.0.0, X-CUBE-SUBG2_V5.0.0, X-CUBE-TOF1_V3.4.3]
+2025-08-21 19:52:33,912 [INFO] ApiDb:240 - Found 880 in-development CPN: [B-G473E-ZEST1S, B-WB1M-WPAN1, B-WBA5M-WPAN, B-WL5M-SUBG1, NUCLEO-C031C6, NUCLEO-C051C8, NUCLEO-C071RB, NUCLEO-C092RC, NUCLEO-H503RB, NUCLEO-H533RE, NUCLEO-H563ZI, NUCLEO-H7S3L8, NUCLEO-N657X0-Q, NUCLEO-U031R8, NUCLEO-U083RC, NUCLEO-U385RG-Q, NUCLEO-U545RE-Q, NUCLEO-U5A5ZJ-Q, NUCLEO-WB05KZ, NUCLEO-WB07CC, NUCLEO-WB09KE, NUCLEO-WBA52CG, NUCLEO-WBA55CG, NUCLEO-WL33CC1, NUCLEO-WL33CC2, STEVAL-PROTEUS1, STEVAL-SMARTAG2, STEVAL-STWINBX1, STM320518-EVAL, STM32C0116-DK, STM32C011D6Y3TR, STM32C011D6Y6TR, STM32C011F4P3, STM32C011F4P6, STM32C011F4U3, STM32C011F4U6TR, STM32C011F6P3, STM32C011F6P6, STM32C011F6U3, STM32C011F6U6TR, STM32C011J4M3, STM32C011J4M6, STM32C011J6M3, STM32C011J6M6, STM32C0316-DK, STM32C031C4T3, STM32C031C4T6, STM32C031C4U3, STM32C031C4U6, STM32C031C6T3, STM32C031C6T6, STM32C031C6U3, STM32C031C6U6, STM32C031F4P3, STM32C031F4P6, STM32C031F6P3, STM32C031F6P6, STM32C031G4U3, STM32C031G4U6, STM32C031G6U3, STM32C031G6U6, STM32C031K4T3, STM32C031K4T6, STM32C031K4U3, STM32C031K4U6, STM32C031K6T3, STM32C031K6T6, STM32C031K6U3, STM32C031K6U6, STM32C051C6T6, STM32C051C6U6, STM32C051C8T6, STM32C051C8U6, STM32C051D8Y6TR, STM32C051F6P6, STM32C051F8P6, STM32C051G6U6, STM32C051G8U6, STM32C051K6T6, STM32C051K6U6, STM32C051K8T6, STM32C071C8T6, STM32C071C8T6N, STM32C071C8U6, STM32C071C8U6N, STM32C071CBT6, STM32C071CBT6N, STM32C071CBU6, STM32C071CBU6N, STM32C071F8P6, STM32C071F8P6N, STM32C071FBP6, STM32C071FBP6N, STM32C071FBY6TR, STM32C071G8U6, STM32C071G8U6N, STM32C071GBU6, STM32C071GBU6N, STM32C071K8T6, STM32C071K8T6N, STM32C071K8U6, STM32C071K8U6N, STM32C071KBT6, STM32C071KBT6N, STM32C071KBU6, STM32C071KBU6N, STM32C071R8T6, STM32C071R8T6N, STM32C071RBI6N, STM32C071RBT6, STM32C071RBT6N, STM32C091CBT6, STM32C091CBU6, STM32C091CCT6, STM32C091CCU6, STM32C091ECY6TR, STM32C091FBP6, STM32C091FCP6, STM32C091GBU6, STM32C091GCU6, STM32C091KBT6, STM32C091KBU6, STM32C091KCT6, STM32C091KCU6, STM32C091RBT6, STM32C091RCI6, STM32C091RCT6, STM32C092CBT6, STM32C092CBU6, STM32C092CCT6, STM32C092CCU6, STM32C092ECY6TR, STM32C092FBP6, STM32C092FCP6, STM32C092GBU6, STM32C092GCU6, STM32C092KBT6, STM32C092KBU6, STM32C092KCT6, STM32C092KCU6, STM32C092RBT6, STM32C092RCI6, STM32C092RCT6, STM32G071K8TXN, STM32G071K8UXN, STM32G081GBU6N, STM32G081KBT6N, STM32G081KBUXN, STM32G0B1CCT6N, STM32G0B1KCT6, STM32G0B1NEY6TR, STM32G0B1RCT6N, STM32G0C1CCT6, STM32G0C1CCT6N, STM32G0C1CCU6N, STM32G0C1CET6N, STM32G0C1CEU6N, STM32G0C1KCT6, STM32G0C1NEY6TR, STM32G0C1RCI6N, STM32G0C1RCT6N, STM32G0C1REI6N, STM32G0C1RET6N, STM32G0C1VCI6, STM32G0C1VEI6, STM32G411C6T3, STM32G411C6T6, STM32G411C6U3, STM32G411C6U6, STM32G411C8T3, STM32G411C8T6, STM32G411C8U3, STM32G411C8U6, STM32G411CBT3, STM32G411CBT6, STM32G411CBU3, STM32G411CBU6, STM32G411K6T3, STM32G411K6T6, STM32G411K6U3, STM32G411K6U6, STM32G411K8T3, STM32G411K8T6, STM32G411K8U3, STM32G411K8U6, STM32G411KBT3, STM32G411KBT6, STM32G411KBU3, STM32G411KBU6, STM32G411M6T3, STM32G411M6T6, STM32G411M8T3, STM32G411M8T6, STM32G411MBT3, STM32G411MBT6, STM32G411R6T3, STM32G411R6T6, STM32G411R8T3, STM32G411R8T6, STM32G411RBT3, STM32G411RBT6, STM32G414CBT3, STM32G414CBT6, STM32G414CBU3, STM32G414CBU6, STM32G414CCT3, STM32G414CCT6, STM32G414CCU3, STM32G414CCU6, STM32G414MBT3, STM32G414MBT6, STM32G414MCT3, STM32G414MCT6, STM32G414RBT3, STM32G414RBT6, STM32G414RCT3, STM32G414RCT6, STM32G414VBT3, STM32G414VBT6, STM32G414VCT3, STM32G414VCT6, STM32G431CBT3Z, STM32G431RBT3Z, STM32G471CCT6, STM32G471CCU6, STM32G471CET3, STM32G471CET6, STM32G471CEU3, STM32G471CEU6, STM32G471MCT6, STM32G471MET3, STM32G471MET6, STM32G471MEY6TR, STM32G471QCT6, STM32G471QET3, STM32G471RCT6, STM32G471RET3, STM32G471RET6, STM32G471VCH6, STM32G471VCI6, STM32G471VCT6, STM32G471VEH3, STM32G471VEH6, STM32G471VEI3, STM32G471VEI6, STM32G471VET3, STM32G471VET6, STM32G473QET3Z, STM32G473RET3Z, STM32G474CCT6, STM32G491RET3Z, STM32H503CBT6, STM32H503CBU6, STM32H503EBY6TR, STM32H503KBU6, STM32H503RBT6, STM32H523CCT6, STM32H523CCU6, STM32H523CET6, STM32H523CEU6, STM32H523HEY6TR, STM32H523RCT6, STM32H523RET6, STM32H523VCI6, STM32H523VCT6, STM32H523VEI6, STM32H523VET6, STM32H523ZCJ6, STM32H523ZCT6, STM32H523ZEJ6, STM32H523ZET6, STM32H533CET6, STM32H533CEU6, STM32H533HEY6TR, STM32H533RET6, STM32H533VEI6, STM32H533VET6, STM32H533ZEJ6, STM32H533ZET6, STM32H562AGI6, STM32H562AII6, STM32H562IGK6, STM32H562IGT6, STM32H562IIK6, STM32H562IIT6, STM32H562RGT6, STM32H562RGV6, STM32H562RIT6, STM32H562RIV6, STM32H562VGT6, STM32H562VIT6, STM32H562ZGT6, STM32H562ZIT6, STM32H563AGI6, STM32H563AII3Q, STM32H563AII6, STM32H563IGK6, STM32H563IGT6, STM32H563IIK3Q, STM32H563IIK6, STM32H563IIT3Q, STM32H563IIT6, STM32H563MIY3QTR, STM32H563RGT6, STM32H563RGV6, STM32H563RIT6, STM32H563RIV6, STM32H563VGT6, STM32H563VIT3Q, STM32H563VIT6, STM32H563ZGT6, STM32H563ZIT3Q, STM32H563ZIT6, STM32H573AII3Q, STM32H573AII6, STM32H573I-DK, STM32H573IIK3Q, STM32H573IIK6, STM32H573IIT3Q, STM32H573IIT6, STM32H573MIY3QTR, STM32H573RIT6, STM32H573RIV6, STM32H573VIT3Q, STM32H573VIT6, STM32H573ZIT3Q, STM32H573ZIT6, STM32H7R3A8I6, STM32H7R3I8K6, STM32H7R3I8T6, STM32H7R3L8H6, STM32H7R3L8H6H, STM32H7R3R8V6, STM32H7R3V8H6, STM32H7R3V8T6, STM32H7R3V8Y6TR, STM32H7R3Z8J6, STM32H7R3Z8T6, STM32H7R7A8I6, STM32H7R7I8K6, STM32H7R7I8T6, STM32H7R7L8H6, STM32H7R7L8H6H, STM32H7R7Z8J6, STM32H7S3A8I6, STM32H7S3I8K6, STM32H7S3I8T6, STM32H7S3L8H6, STM32H7S3L8H6H, STM32H7S3R8V6, STM32H7S3V8H6, STM32H7S3V8T6, STM32H7S3V8Y6TR, STM32H7S3Z8J6, STM32H7S3Z8T6, STM32H7S78-DK, STM32H7S7A8I6, STM32H7S7I8K6, STM32H7S7I8T6, STM32H7S7L8H6, STM32H7S7L8H6H, STM32H7S7Z8J6, STM32L4R5QGI6STR, STM32MP131AAE3, STM32MP131AAF3, STM32MP131AAG3, STM32MP131CAE3, STM32MP131CAF3, STM32MP131CAG3, STM32MP131DAE7, STM32MP131DAF7, STM32MP131DAG7, STM32MP131FAE7, STM32MP131FAF7, STM32MP131FAG7, STM32MP133AAE3, STM32MP133AAF3, STM32MP133AAG3, STM32MP133CAE3, STM32MP133CAF3, STM32MP133CAG3, STM32MP133DAE7, STM32MP133DAF7, STM32MP133DAG7, STM32MP133FAE7, STM32MP133FAF7, STM32MP133FAG7, STM32MP135AAE3, STM32MP135AAF3, STM32MP135AAG3, STM32MP135CAE3, STM32MP135CAF3, STM32MP135CAG3, STM32MP135DAE7, STM32MP135DAF7, STM32MP135DAG7, STM32MP135F-DK, STM32MP135FAE7, STM32MP135FAF7, STM32MP135FAF7T, STM32MP135FAF7U, STM32MP135FAG7, STM32MP211AAL3, STM32MP211AAM3, STM32MP211AAN3, STM32MP211AAO3, STM32MP211CAL3, STM32MP211CAM3, STM32MP211CAN3, STM32MP211CAO3, STM32MP211DAL3, STM32MP211DAM3, STM32MP211DAN3, STM32MP211DAO3, STM32MP211FAL3, STM32MP211FAM3, STM32MP211FAN3, STM32MP211FAO3, STM32MP213AAL3, STM32MP213AAM3, STM32MP213AAN3, STM32MP213AAO3, STM32MP213CAL3, STM32MP213CAM3, STM32MP213CAN3, STM32MP213CAO3, STM32MP213DAL3, STM32MP213DAM3, STM32MP213DAN3, STM32MP213DAO3, STM32MP213FAL3, STM32MP213FAM3, STM32MP213FAN3, STM32MP213FAO3, STM32MP215AAL3, STM32MP215AAM3, STM32MP215AAN3, STM32MP215AAO3, STM32MP215CAL3, STM32MP215CAM3, STM32MP215CAN3, STM32MP215CAO3, STM32MP215DAL3, STM32MP215DAM3, STM32MP215DAN3, STM32MP215DAO3, STM32MP215F-DK, STM32MP215FAL3, STM32MP215FAM3, STM32MP215FAN3, STM32MP215FAO3, STM32MP231AAJ3, STM32MP231AAK3, STM32MP231AAL3, STM32MP231CAJ3, STM32MP231CAK3, STM32MP231CAL3, STM32MP231DAJ3, STM32MP231DAK3, STM32MP231DAL3, STM32MP231FAJ3, STM32MP231FAK3, STM32MP231FAL3, STM32MP233AAJ3, STM32MP233AAK3, STM32MP233AAL3, STM32MP233CAJ3, STM32MP233CAK3, STM32MP233CAL3, STM32MP233DAJ3, STM32MP233DAK3, STM32MP233DAL3, STM32MP233FAJ3, STM32MP233FAK3, STM32MP233FAL3, STM32MP235AAJ3, STM32MP235AAK3, STM32MP235AAL3, STM32MP235CAJ3, STM32MP235CAK3, STM32MP235CAL3, STM32MP235DAJ3, STM32MP235DAK3, STM32MP235DAL3, STM32MP235FAJ3, STM32MP235FAK3, STM32MP235FAL3, STM32MP251AAI3, STM32MP251AAK3, STM32MP251AAL3, STM32MP251CAI3, STM32MP251CAK3, STM32MP251CAL3, STM32MP251DAI3, STM32MP251DAK3, STM32MP251DAL3, STM32MP251FAI3, STM32MP251FAK3, STM32MP251FAL3, STM32MP253AAI3, STM32MP253AAK3, STM32MP253AAL3, STM32MP253CAI3, STM32MP253CAK3, STM32MP253CAL3, STM32MP253DAI3, STM32MP253DAK3, STM32MP253DAL3, STM32MP253FAI3, STM32MP253FAK3, STM32MP253FAL3, STM32MP255AAI3, STM32MP255AAK3, STM32MP255AAL3, STM32MP255CAI3, STM32MP255CAK3, STM32MP255CAL3, STM32MP255DAI3, STM32MP255DAK3, STM32MP255DAL3, STM32MP255FAI3, STM32MP255FAK3, STM32MP255FAL3, STM32MP257AAI3, STM32MP257AAK3, STM32MP257AAL3, STM32MP257CAI3, STM32MP257CAK3, STM32MP257CAL3, STM32MP257DAI3, STM32MP257DAK3, STM32MP257DAL3, STM32MP257F-DK, STM32MP257F-EV1, STM32MP257FAI3, STM32MP257FAK3, STM32MP257FAL3, STM32N645A0H3Q, STM32N645B0H3Q, STM32N645I0H3Q, STM32N645L0H3Q, STM32N645X0H3Q, STM32N645Z0H3Q, STM32N647A0H3Q, STM32N647B0H3Q, STM32N647I0H3Q, STM32N647L0H3Q, STM32N647X0H3Q, STM32N647Z0H3Q, STM32N655A0H3Q, STM32N655B0H3Q, STM32N655I0H3Q, STM32N655L0H3Q, STM32N655X0H3Q, STM32N655Z0H3Q, STM32N6570-DK, STM32N657A0H3Q, STM32N657B0H3Q, STM32N657I0H3Q, STM32N657L0H3Q, STM32N657X0H3Q, STM32N657Z0H3Q, STM32U031C6T6, STM32U031C6U6, STM32U031C8T6, STM32U031C8U6, STM32U031F4P6, STM32U031F6P6, STM32U031F8P6, STM32U031G6Y6TR, STM32U031G8Y6TR, STM32U031K4U6, STM32U031K6U6, STM32U031K8U6, STM32U031R6I6, STM32U031R6T6, STM32U031R8I6, STM32U031R8T6, STM32U073C8T6, STM32U073C8U6, STM32U073CBT6, STM32U073CBU6, STM32U073CCT6, STM32U073CCU6, STM32U073H8Y6TR, STM32U073HBY6TR, STM32U073HCY6TR, STM32U073K8U6, STM32U073KBU6, STM32U073KCU6, STM32U073M8I6, STM32U073M8T6, STM32U073MBI6, STM32U073MBT6, STM32U073MCI6, STM32U073MCT6, STM32U073R8I6, STM32U073R8T6, STM32U073RBI6, STM32U073RBT6, STM32U073RCI6, STM32U073RCT6, STM32U083C-DK, STM32U083CCT6, STM32U083CCU6, STM32U083HCY6TR, STM32U083KCU6, STM32U083MCI6, STM32U083MCT6, STM32U083RCI6, STM32U083RCT6, STM32U375CET6, STM32U375CET6Q, STM32U375CEU6, STM32U375CEU6Q, STM32U375CEY6QTR, STM32U375CGT6, STM32U375CGT6Q, STM32U375CGU6, STM32U375CGU6Q, STM32U375CGY6QTR, STM32U375KEU6, STM32U375KGU6, STM32U375REI6, STM32U375REI6Q, STM32U375RET6, STM32U375RET6Q, STM32U375REY6GTR, STM32U375REY6QTR, STM32U375RGI6, STM32U375RGI6Q, STM32U375RGT6, STM32U375RGT6Q, STM32U375RGY6GTR, STM32U375RGY6QTR, STM32U375VEI6, STM32U375VEI6Q, STM32U375VET6, STM32U375VET6Q, STM32U375VGI6, STM32U375VGI6Q, STM32U375VGT6, STM32U375VGT6Q, STM32U385CGT6, STM32U385CGT6Q, STM32U385CGU6, STM32U385CGU6Q, STM32U385CGY6QTR, STM32U385KGU6, STM32U385RGI6, STM32U385RGI6Q, STM32U385RGT6, STM32U385RGT6Q, STM32U385RGY6GTR, STM32U385RGY6QTR, STM32U385VGI6, STM32U385VGI6Q, STM32U385VGT6, STM32U385VGT6Q, STM32U535CBT6, STM32U535CBT6Q, STM32U535CBU6, STM32U535CBU6Q, STM32U535CCT6, STM32U535CCT6Q, STM32U535CCU6, STM32U535CCU6Q, STM32U535CET6, STM32U535CET6Q, STM32U535CEU6, STM32U535CEU6Q, STM32U535JEY6QTR, STM32U535NCY6QTR, STM32U535NEY6QTR, STM32U535RBI6, STM32U535RBI6Q, STM32U535RBT6, STM32U535RBT6Q, STM32U535RCI6, STM32U535RCI6Q, STM32U535RCT6, STM32U535RCT6Q, STM32U535REI6, STM32U535REI6Q, STM32U535RET6, STM32U535RET6Q, STM32U535VCI6, STM32U535VCI6Q, STM32U535VCT6, STM32U535VCT6Q, STM32U535VEI6, STM32U535VEI6Q, STM32U535VET6, STM32U535VET6Q, STM32U545CET6, STM32U545CET6Q, STM32U545CEU6, STM32U545CEU6Q, STM32U545JEY6QTR, STM32U545NEY6QTR, STM32U545REI6, STM32U545REI6Q, STM32U545RET6, STM32U545RET6Q, STM32U545VEI6, STM32U545VEI6Q, STM32U545VET6, STM32U545VET6Q, STM32U595AIH6, STM32U595AIH6Q, STM32U595AJH6, STM32U595AJH6Q, STM32U595QII6, STM32U595QII6Q, STM32U595QJI6, STM32U595QJI6Q, STM32U595RIT6, STM32U595RIT6Q, STM32U595RJT6, STM32U595RJT6Q, STM32U595VIT6, STM32U595VIT6Q, STM32U595VJT6, STM32U595VJT6Q, STM32U595ZIT6, STM32U595ZIT6Q, STM32U595ZIY6QTR, STM32U595ZJT6, STM32U595ZJT6Q, STM32U595ZJY6QTR, STM32U599BJY6QTR, STM32U599NIH6Q, STM32U599NJH6Q, STM32U599VIT6Q, STM32U599VJT6, STM32U599VJT6Q, STM32U599ZIT6Q, STM32U599ZIY6QTR, STM32U599ZJT6Q, STM32U599ZJY6QTR, STM32U5A5AJH6, STM32U5A5AJH6Q, STM32U5A5QII3Q , STM32U5A5QJI6, STM32U5A5QJI6Q, STM32U5A5RJT6, STM32U5A5RJT6Q, STM32U5A5VJT6, STM32U5A5VJT6Q, STM32U5A5ZJT6, STM32U5A5ZJT6Q, STM32U5A5ZJY6QTR, STM32U5A9BJY6QTR, STM32U5A9J-DK, STM32U5A9NJH6Q, STM32U5A9VJT6Q, STM32U5A9ZJT6Q, STM32U5A9ZJY6QTR, STM32U5F7VIT6, STM32U5F7VIT6Q, STM32U5F7VJT6, STM32U5F7VJT6Q, STM32U5F9BJY6QTR, STM32U5F9NJH6Q, STM32U5F9VIT6Q, STM32U5F9VJT6Q, STM32U5F9ZIJ6QTR, STM32U5F9ZIT6Q, STM32U5F9ZJJ6QTR, STM32U5F9ZJT6Q, STM32U5G7VJT6, STM32U5G7VJT6Q, STM32U5G9BJY6QTR, STM32U5G9J-DK1, STM32U5G9J-DK2, STM32U5G9NJH6Q, STM32U5G9VJT6Q, STM32U5G9ZJJ6QTR, STM32U5G9ZJT6Q, STM32WB05KZV6TR, STM32WB05KZV7TR, STM32WB05TZF6TR, STM32WB05TZF7TR, STM32WB06CCF6TR, STM32WB06CCF7TR, STM32WB06CCV6TR, STM32WB06CCV7TR, STM32WB06KCV6TR, STM32WB06KCV7TR, STM32WB07CCF6TR, STM32WB07CCF7TR, STM32WB07CCV6TR, STM32WB07CCV7TR, STM32WB07KCV6TR, STM32WB07KCV7TR, STM32WB09KEV6TR, STM32WB09KEV7TR, STM32WB09TEF6TR, STM32WB09TEF7TR, STM32WB1MMCH6, STM32WBA50KGU6, STM32WBA50KGU6TR, STM32WBA52CEU6, STM32WBA52CEU6TR, STM32WBA52CEU7, STM32WBA52CEU7TR, STM32WBA52CGU6, STM32WBA52CGU6TR, STM32WBA52CGU6U, STM32WBA52CGU7, STM32WBA52CGU7TR, STM32WBA52KEU6, STM32WBA52KEU6TR, STM32WBA52KGU6, STM32WBA52KGU6TR, STM32WBA54CEU6, STM32WBA54CEU6TR, STM32WBA54CEU7, STM32WBA54CEU7TR, STM32WBA54CGU6, STM32WBA54CGU6TR, STM32WBA54CGU7, STM32WBA54CGU7TR, STM32WBA54KEU6, STM32WBA54KEU6TR, STM32WBA54KEU7, STM32WBA54KEU7TR, STM32WBA54KGU6, STM32WBA54KGU6TR, STM32WBA54KGU7, STM32WBA54KGU7TR, STM32WBA55CEU6, STM32WBA55CEU6TR, STM32WBA55CEU7, STM32WBA55CEU7TR, STM32WBA55CGU6, STM32WBA55CGU6TR, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CGU7TR, STM32WBA55G-DK1, STM32WBA55HEF6, STM32WBA55HEF7, STM32WBA55HGF6, STM32WBA55HGF7, STM32WBA55UEI6, STM32WBA55UEI6TR, STM32WBA55UEI7, STM32WBA55UEI7TR, STM32WBA55UGI6, STM32WBA55UGI6TR, STM32WBA55UGI7, STM32WBA55UGI7TR, STM32WBA5MMGH6TR, STM32WBA62MGF6, STM32WBA62MIF6, STM32WBA65MGF7, STM32WBA65MIF6, STM32WBA65MIF7, STM32WL30K8V6, STM32WL30KBV6, STM32WL31C8V6, STM32WL31CBV6, STM32WL31K8V6, STM32WL31KBV6, STM32WL33C8V6, STM32WL33C8V6X, STM32WL33CBV6, STM32WL33CBV6X, STM32WL33CCV6, STM32WL33CCV6A, STM32WL33CCV6X, STM32WL33K8V7, STM32WL33K8V7X, STM32WL33KBV7 , STM32WL33KBV7X, STM32WL33KCV7, STM32WL33KCV7X, STM32WL5MOCH6, STM32WL5MOCH6TR]
+2025-08-21 19:52:33,917 [INFO] DbMcus:218 - Found 4801 MCUs, 4801 are supported
+2025-08-21 19:52:33,917 [INFO] ApiDb:423 - Load user favorites file /home/kymkim/.stm32cubeide/favorites.mcus.txt: 0 item(s)
+2025-08-21 19:52:33,917 [INFO] ApiDb:427 - User favorites MCUs=[]
+2025-08-21 19:52:33,917 [INFO] DbMcus:224 - Set 0 / 0 favorites MCUs
+2025-08-21 19:52:34,157 [INFO] ApiDb:414 - User favorites file not found: /home/kymkim/.stm32cubeide/favorites.boards.txt
+2025-08-21 19:52:34,157 [INFO] DbBoards:198 - Set 0 / 0 favorites Boards
+2025-08-21 19:52:34,200 [INFO] UtilMem:75 - End LoadConfig() Used Memory: 668320064 Bytes (1073741824)
+2025-08-21 19:52:34,277 [WARN] ThirdParty:833 - waiting for thirdparty lock release [change project]
+2025-08-21 19:52:34,277 [INFO] ThirdParty:835 - entering critical section [change project]
+2025-08-21 19:52:34,277 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-PM33A1 1.0.0
+2025-08-21 19:52:34,277 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USBPD 4.1
+2025-08-21 19:52:34,277 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC9 1.0.0
+2025-08-21 19:52:34,277 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSL 5.8.0
+2025-08-21 19:52:34,277 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 2.0.0
+2025-08-21 19:52:34,277 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENVWB1 1.4.0
+2025-08-21 19:52:34,277 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F4 1.1.0
+2025-08-21 19:52:34,277 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics LIBJPEG 8.0.0
+2025-08-21 19:52:34,277 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-ASTRA1 2.0.2
+2025-08-21 19:52:34,277 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE1 7.1.0
+2025-08-21 19:52:34,277 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Avnet-IotConnect X-CUBE-IoTC-DA16k-PMOD 1.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SMBUS 2.1.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfMQTT 1.19.2
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 3.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ISPU 2.1.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-EEPRMA1 5.2.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.1.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WB 2.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST60 1.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-GNSS1 7.0.1
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC12 1.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F7 1.1.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L5 2.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOUCHGFX 4.25.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 2.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC6 3.1.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.1.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FreeRTOS 0.0.1
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G0 1.1.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SAFEA1 1.2.2
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC4 3.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SUBG2 5.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7RS 1.1.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics STM32_WPAN 1.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :EmbeddedOffice I-CUBE-FS-RTOS 1.0.1
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.0.3
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Cesanta I-CUBE-Mongoose 7.13.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 1.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Infineon AIROC-Wi-Fi-Bluetooth-STM32 1.7.1
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G4 2.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-WB05N 2.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.1.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.3.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfTPM 3.8.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7 3.4.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DISPLAY 3.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSH 1.4.20
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC7 2.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TCPP 4.2.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-SIGFOX1 3.2.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC10 1.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-FREERTOS 1.3.1
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics HAL Drivers 0.0.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.16.2
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-IPS 3.1.0
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALS 1.0.2
+2025-08-21 19:52:34,278 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :emotas I-CUBE-CANOPEN 1.3.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.14.1
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :ITTIA_DB I-CUBE-ITTIADB 8.9.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :portGmbH I-Cube-SoM-uGOAL 1.1.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :quantropi X-CUBE-qispace-sdk-base 2.0.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST67W61 1.0.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.1.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.2.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STAIOTCFT 1.0.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 1.0.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-SMARTAG2 1.2.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-FLIGHT1 5.1.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WL 2.0.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :SEGGER I-CUBE-embOS 1.3.1
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALGOBUILD 1.4.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DPower 1.3.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-MEMS1 11.3.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENV1 5.0.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 1.0.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L4 2.0.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 0.0.2
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :WES I-CUBE-Cesium 1.3.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.1.2
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SFXS2LP1 4.0.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE2 3.3.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOF1 3.4.3
+2025-08-21 19:52:34,279 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.2.0
+2025-08-21 19:52:34,279 [INFO] ThirdParty:841 - exiting critical section [change project]
+2025-08-21 19:52:34,560 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration)
+2025-08-21 19:52:34,561 [INFO] PinOutPanel:1589 - setPackage(STM32F446RETx,LQFP64)
+2025-08-21 19:52:34,874 [INFO] UtilMem:75 - Before build in PCC Used Memory: 618598000 Bytes (1073741824)
+2025-08-21 19:52:35,277 [INFO] UtilMem:75 - After build in PCC Used Memory: 762638424 Bytes (1073741824)
+2025-08-21 19:52:35,312 [INFO] ApiDbMcu:532 - Load IP Config File for USB_DEVICE
+2025-08-21 19:52:35,328 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,328 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,328 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,328 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,329 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,329 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,329 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,329 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,329 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,330 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,330 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,330 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,330 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,330 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,330 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,330 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,330 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,331 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,331 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,331 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,331 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,331 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,331 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,331 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,331 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,331 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,332 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,332 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,332 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,332 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,332 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,332 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,332 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,332 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,332 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,332 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,332 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,333 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,333 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,333 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,333 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,333 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,333 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,333 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,333 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,333 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,333 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,334 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,334 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,334 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,334 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,334 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,334 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,334 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,334 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,335 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,335 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,335 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,335 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,335 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:52:35,339 [INFO] ApiDbMcu:532 - Load IP Config File for PDM2PCM
+2025-08-21 19:52:35,343 [WARN] IP:2250 - I2C_Coeff_DF not found: check if there is a RefParameter without a condition.
+2025-08-21 19:52:35,343 [WARN] IP:2250 - Analog_Filter not found: check if there is a RefParameter without a condition.
+2025-08-21 19:52:35,428 [INFO] CADModel:165 - CPN selected for project levelSTM32F446RET6
+2025-08-21 19:52:35,428 [INFO] CADModel:114 - Register for checkConnection events
+2025-08-21 19:52:35,466 [INFO] OpenFileManager:386 - Restore cursor
+2025-08-21 19:52:35,549 [WARN] IP:2250 - DEVICE_SERIAL0_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:52:35,549 [WARN] IP:2250 - DEVICE_SERIAL1_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:52:35,549 [WARN] IP:2250 - DEVICE_SERIAL2_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:52:35,550 [WARN] IP:2250 - DEVICE_SERIAL0_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:52:35,550 [WARN] IP:2250 - DEVICE_SERIAL1_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:52:35,550 [WARN] IP:2250 - DEVICE_SERIAL2_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:52:35,602 [WARN] IP:2250 - I2C_Coeff_DF not found: check if there is a RefParameter without a condition.
+2025-08-21 19:52:35,602 [WARN] IP:2250 - Analog_Filter not found: check if there is a RefParameter without a condition.
+2025-08-21 19:52:35,602 [WARN] IP:2250 - I2C_Coeff_DF not found: check if there is a RefParameter without a condition.
+2025-08-21 19:52:35,602 [WARN] IP:2250 - Analog_Filter not found: check if there is a RefParameter without a condition.
+2025-08-21 19:52:45,828 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,733x537,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:52:49,887 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:52:52,307 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:53:28,974 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,733x537,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:54:53,556 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,733x537,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:55:09,837 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,733x537,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:55:12,191 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:55:30,882 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:55:52,499 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,735x576,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:55:54,803 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:55:55,266 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:56:13,208 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,735x576,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:56:16,773 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,735x576,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:56:18,021 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:56:20,310 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:56:21,046 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:56:21,077 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:56:21,931 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:56:22,783 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:56:22,814 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:56:23,595 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:56:24,404 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:56:51,835 [INFO] MainUpdater:2872 - connection check result : 10
+2025-08-21 19:56:51,835 [INFO] MainUpdater:2872 - connection check result : 10
+2025-08-21 19:56:52,153 [INFO] MicroXplorer:468 - Change Database Path :
+2025-08-21 19:56:52,153 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150
+2025-08-21 19:56:52,157 [ERROR] ProjectManagerView:395 -
+java.lang.NullPointerException: Cannot invoke "javax.swing.JTextField.getText()" because the return value of "java.util.List.get(int)" is null
+ at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab$9.caretUpdate(ProjectChoiceTab.java:2706) ~[filemanager.jar:?]
+ at javax.swing.text.JTextComponent.fireCaretUpdate(JTextComponent.java:408) ~[?:?]
+ at javax.swing.text.JTextComponent$MutableCaretEvent.fire(JTextComponent.java:4484) ~[?:?]
+ at javax.swing.text.JTextComponent$MutableCaretEvent.stateChanged(JTextComponent.java:4506) ~[?:?]
+ at javax.swing.text.DefaultCaret.fireStateChanged(DefaultCaret.java:857) ~[?:?]
+ at javax.swing.text.DefaultCaret.changeCaretPosition(DefaultCaret.java:1343) ~[?:?]
+ at javax.swing.text.DefaultCaret.handleSetDot(DefaultCaret.java:1242) ~[?:?]
+ at javax.swing.text.DefaultCaret.setDot(DefaultCaret.java:1223) ~[?:?]
+ at javax.swing.text.DefaultCaret$Handler.insertUpdate(DefaultCaret.java:1819) ~[?:?]
+ at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:227) ~[?:?]
+ at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:781) ~[?:?]
+ at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:740) ~[?:?]
+ at javax.swing.text.PlainDocument.insertString(PlainDocument.java:131) ~[?:?]
+ at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:699) ~[?:?]
+ at javax.swing.text.JTextComponent.setText(JTextComponent.java:1725) ~[?:?]
+ at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.createHeapStackFields(ProjectChoiceTab.java:993) ~[filemanager.jar:?]
+ at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.buildLinkSettingsPanel(ProjectChoiceTab.java:3813) ~[filemanager.jar:?]
+ at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.defineWindowsFields(ProjectChoiceTab.java:1987) ~[filemanager.jar:?]
+ at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.updateSettings(ProjectChoiceTab.java:558) ~[filemanager.jar:?]
+ at com.st.microxplorer.plugins.projectmanager.gui.ProjectSettingsPanel.UpdateDialog(ProjectSettingsPanel.java:247) ~[filemanager.jar:?]
+ at com.st.microxplorer.plugins.projectmanager.ProjectManagerView.propertyChange(ProjectManagerView.java:392) ~[filemanager.jar:?]
+ at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343) ~[?:?]
+ at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:335) ~[?:?]
+ at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:268) ~[?:?]
+ at com.st.microxplorer.util.MXPropertyChangeSupport.firePropertyChange(MXPropertyChangeSupport.java:54) ~[STM32CubeMX.jar:?]
+ at com.st.microxplorer.mxsystem.MxSystem.closeConfig(MxSystem.java:899) ~[STM32CubeMX.jar:?]
+ at com.st.microxplorer.maingui.MainPanel.closeConfig(MainPanel.java:792) ~[STM32CubeMX.jar:?]
+ at com.st.microxplorer.plugins.filemanager.engine.OpenFileManager.loadConfigurationFile(OpenFileManager.java:288) ~[filemanager.jar:?]
+ at com.st.microxplorer.plugins.filemanager.engine.MainFileManager.userLoadConfig(MainFileManager.java:364) ~[filemanager.jar:?]
+ at com.st.microxplorer.plugins.filemanager.engine.MainFileManager.userLoadConfig(MainFileManager.java:342) ~[filemanager.jar:?]
+ at com.st.microxplorer.plugins.filemanager.FileManagerView.getSpecificTask(FileManagerView.java:264) ~[filemanager.jar:?]
+ at com.st.stm32cube.common.mx.editor.CubeMxEditor.getMxTabbedPaneInstance(CubeMxEditor.java:1198) ~[com.st.stm32cube.common.mx_6.15.0.202507011659/:?]
+ at com.st.stm32cube.common.mx.editor.CubeMxEditor$12$1.createSwingComponent(CubeMxEditor.java:1068) ~[com.st.stm32cube.common.mx_6.15.0.202507011659/:?]
+ at com.st.stm32cube.common.mx.oss.core.awtswtbridge.EmbeddedSwingComposite.doComponentCreation(EmbeddedSwingComposite.java:492) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?]
+ at com.st.stm32cube.common.mx.oss.core.awtswtbridge.EmbeddedSwingComposite$4.run(EmbeddedSwingComposite.java:291) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?]
+ at com.st.stm32cube.common.mx.oss.core.awtswtbridge.AwtEnvironment$2.run(AwtEnvironment.java:166) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?]
+ at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) ~[?:?]
+ at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) ~[?:?]
+ at java.awt.EventQueue$4.run(EventQueue.java:720) ~[?:?]
+ at java.awt.EventQueue$4.run(EventQueue.java:714) ~[?:?]
+ at java.security.AccessController.doPrivileged(AccessController.java:400) ~[?:?]
+ at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) ~[?:?]
+ at java.awt.EventQueue.dispatchEvent(EventQueue.java:742) ~[?:?]
+ at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) ~[?:?]
+ at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) ~[?:?]
+ at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) ~[?:?]
+ at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) ~[?:?]
+ at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) ~[?:?]
+ at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) ~[?:?]
+2025-08-21 19:56:52,160 [WARN] ThirdParty:871 - waiting for thirdparty lock release [close project]
+2025-08-21 19:56:52,161 [INFO] ThirdParty:873 - entering critical section [close project]
+2025-08-21 19:56:52,161 [INFO] ThirdParty:883 - exiting critical section [close project]
+2025-08-21 19:56:52,161 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration)
+2025-08-21 19:56:52,165 [WARN] IpParametersView:155 - Warning: This peripheral hasn't parameters
+2025-08-21 19:56:52,167 [WARN] MainPanel:289 -
Warning: This peripheral has no parameters to be configured
+2025-08-21 19:56:52,170 [INFO] UtilMem:75 - Begin LoadConfig() Used Memory: 854073576 Bytes (1073741824)
+2025-08-21 19:56:52,172 [INFO] MicroXplorer:468 - Change Database Path : /home/kymkim/.stm32cubemx/databases/DB.6.0.130/db/
+2025-08-21 19:56:52,172 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.130
+2025-08-21 19:56:55,063 [INFO] MicroXplorer:468 - Change Database Path :
+2025-08-21 19:56:55,064 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150
+2025-08-21 19:56:55,064 [INFO] OpenFileManager:355 - Change cursor
+2025-08-21 19:56:55,071 [INFO] Mcu:2029 - Initializing MCU STM32F446R(C-E)Tx STM32F446RETx STM32F446RET6
+2025-08-21 19:56:55,576 [INFO] Context:786 - Trying to add GPIOservice into a context which must be forbidden
+2025-08-21 19:56:55,971 [INFO] Rule:233 - rule Adapt Old IOC before rework replace old CORTEX_M33/CORTEX_M55 attributes by the new one. is applicable
+2025-08-21 19:56:55,971 [INFO] Rule:233 - rule Rename parametre of RCC RCC_APBDBG_DIV2 to RCC_TIMPRES_DIV2 is applicable
+2025-08-21 19:56:55,971 [INFO] Rule:233 - rule Rename DIE493 pin PA10 [PA12] -> PA10 is applicable
+2025-08-21 19:56:55,971 [INFO] Rule:233 - rule Rename DIE493 pin PA9 [PA11] -> PA9 is applicable
+2025-08-21 19:56:55,972 [INFO] Rule:233 - rule Rename DIE492 PartNumber CPN STM32WBA5MJGHx -> STM32WBA5MMGHx is applicable
+2025-08-21 19:56:55,972 [INFO] Rule:233 - rule Rename DIE492 PartNumber Name STM32WBA5MJGHx -> STM32WBA5MMGHx is applicable
+2025-08-21 19:56:55,972 [INFO] Rule:233 - rule Rename DIE492 PartNumber UserName STM32WBA5MJGHx -> STM32WBA5MMGHx is applicable
+2025-08-21 19:56:55,972 [INFO] Rule:233 - rule Rename DIE492 PartNumber DeviceId STM32WBA5MJGHx -> STM32WBA5MMGHx is applicable
+2025-08-21 19:56:55,972 [INFO] Rule:233 - rule Adapt Old IOC CSI. is applicable
+2025-08-21 19:56:55,972 [INFO] Rule:233 - rule Adapt Old IOC DCMIPP. is applicable
+2025-08-21 19:56:55,972 [INFO] Rule:233 - rule Adapt Old IOC DCMIPP Mode Parallel. is applicable
+2025-08-21 19:56:55,972 [INFO] Rule:233 - rule Adapt Old IOC LTDC. is applicable
+2025-08-21 19:56:55,972 [INFO] Rule:233 - rule Rename STM32MP2 RIF Peripheral LTDC RIF.RISUP.LTDC_L0L1.Privilege -> RIF.RISUP.LTDC_L1L2.Privilege is applicable
+2025-08-21 19:56:55,972 [INFO] Rule:233 - rule Rename STM32MP2 RIF Peripheral LTDC RIF.RISUP.LTDC_L0L1.Privilege -> RIF.RISUP.LTDC_L1L2.Privilege is applicable
+2025-08-21 19:56:55,972 [INFO] Rule:233 - rule Rename STM32MP2 RIF Peripheral LTDC RIF.RISUP.LTDC_L0L1.Lock -> RIF.RISUP.LTDC_L1L2.Lock is applicable
+2025-08-21 19:56:55,973 [INFO] Rule:233 - rule Rename STM32MP2 RIF Peripheral LTDC RIF.RISUP.LTDC_L2.Lock -> RIF.RISUP.LTDC_L3.Lock is applicable
+2025-08-21 19:56:55,973 [INFO] Rule:233 - rule Adapt the old IOC example for updating the SYS when it is misconfigured. is applicable
+2025-08-21 19:56:55,973 [INFO] Rule:233 - rule Rename STM32C09 Mcu.Package LQFP64 -> LQFP48 is applicable
+2025-08-21 19:56:55,973 [INFO] Rule:233 - rule Adapt the old IOC example for updating the SYS when it is misconfigured. is applicable
+2025-08-21 19:56:55,973 [INFO] Rule:233 - rule Adapt the old IOC example for updating the SYS when it is misconfigured. is applicable
+2025-08-21 19:56:55,975 [INFO] DbConfProperties:307 - Apply Compatibility (4/20 Rules)
+2025-08-21 19:56:55,986 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) Pin32 (VP_RIF_VS_RIF1) cannot be retrieved for this MCU
+2025-08-21 19:56:56,016 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS, mode=CMSIS_V1, owner=FREERTOS
+2025-08-21 19:56:56,016 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS2, mode=CMSIS_V2, owner=FREERTOS
+2025-08-21 19:56:56,016 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V1, owner=FREERTOS
+2025-08-21 19:56:56,016 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V2, owner=FREERTOS
+2025-08-21 19:56:56,016 [WARN] ModelIntegratedComponent:184 - Missing modes for component STMicroelectronics:FreeRTOS:0.0.1:STMicroelectronics:RTOS:FreeRTOS:Core:::10.2.0:
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelIntegratedComponent:63 - No mode defined for component null
+2025-08-21 19:56:56,029 [WARN] ModelPack:524 - Component already loaded: STMicroelectronics:HAL Drivers:0.0.0:STMicroelectronics:Device:STMicro_Driver:XSPI:HAL::0.0.1:HAL_XSPI
+2025-08-21 19:56:56,085 [INFO] ThirdPartyModel:298 - Start build external matchings
+2025-08-21 19:56:56,261 [INFO] ThirdPartyModel:316 - End build external matchings
+2025-08-21 19:56:56,268 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Invalid parameter (FamilyName)
+2025-08-21 19:56:56,269 [WARN] IP:2250 - DEVICE_SERIAL0_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:56:56,269 [WARN] IP:2250 - DEVICE_SERIAL1_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:56:56,269 [WARN] IP:2250 - DEVICE_SERIAL2_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:56:56,362 [INFO] UtilMem:75 - End LoadConfig() Used Memory: 624042056 Bytes (1073741824)
+2025-08-21 19:56:56,366 [WARN] ThirdParty:833 - waiting for thirdparty lock release [change project]
+2025-08-21 19:56:56,366 [INFO] ThirdParty:835 - entering critical section [change project]
+2025-08-21 19:56:56,366 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-PM33A1 1.0.0
+2025-08-21 19:56:56,366 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USBPD 4.1
+2025-08-21 19:56:56,366 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC9 1.0.0
+2025-08-21 19:56:56,366 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSL 5.8.0
+2025-08-21 19:56:56,366 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 2.0.0
+2025-08-21 19:56:56,366 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENVWB1 1.4.0
+2025-08-21 19:56:56,366 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F4 1.1.0
+2025-08-21 19:56:56,366 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics LIBJPEG 8.0.0
+2025-08-21 19:56:56,366 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-ASTRA1 2.0.2
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE1 7.1.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Avnet-IotConnect X-CUBE-IoTC-DA16k-PMOD 1.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SMBUS 2.1.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfMQTT 1.19.2
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 3.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ISPU 2.1.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-EEPRMA1 5.2.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.1.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WB 2.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST60 1.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-GNSS1 7.0.1
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC12 1.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F7 1.1.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L5 2.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOUCHGFX 4.25.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 2.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC6 3.1.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.1.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FreeRTOS 0.0.1
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G0 1.1.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SAFEA1 1.2.2
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC4 3.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SUBG2 5.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7RS 1.1.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics STM32_WPAN 1.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :EmbeddedOffice I-CUBE-FS-RTOS 1.0.1
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.0.3
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Cesanta I-CUBE-Mongoose 7.13.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 1.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Infineon AIROC-Wi-Fi-Bluetooth-STM32 1.7.1
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G4 2.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-WB05N 2.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.1.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.3.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfTPM 3.8.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7 3.4.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DISPLAY 3.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSH 1.4.20
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC7 2.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TCPP 4.2.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-SIGFOX1 3.2.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC10 1.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-FREERTOS 1.3.1
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics HAL Drivers 0.0.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.16.2
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-IPS 3.1.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALS 1.0.2
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :emotas I-CUBE-CANOPEN 1.3.0
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.14.1
+2025-08-21 19:56:56,367 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :ITTIA_DB I-CUBE-ITTIADB 8.9.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :portGmbH I-Cube-SoM-uGOAL 1.1.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :quantropi X-CUBE-qispace-sdk-base 2.0.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST67W61 1.0.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.1.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.2.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STAIOTCFT 1.0.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 1.0.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-SMARTAG2 1.2.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-FLIGHT1 5.1.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WL 2.0.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :SEGGER I-CUBE-embOS 1.3.1
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALGOBUILD 1.4.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DPower 1.3.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-MEMS1 11.3.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENV1 5.0.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 1.0.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L4 2.0.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 0.0.2
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :WES I-CUBE-Cesium 1.3.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.1.2
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SFXS2LP1 4.0.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE2 3.3.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOF1 3.4.3
+2025-08-21 19:56:56,368 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.2.0
+2025-08-21 19:56:56,368 [INFO] ThirdParty:841 - exiting critical section [change project]
+2025-08-21 19:56:56,467 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration)
+2025-08-21 19:56:56,468 [INFO] PinOutPanel:1589 - setPackage(STM32F446RETx,LQFP64)
+2025-08-21 19:56:56,583 [INFO] UtilMem:75 - Before build in PCC Used Memory: 805144984 Bytes (1073741824)
+2025-08-21 19:56:56,693 [INFO] UtilMem:75 - After build in PCC Used Memory: 855476632 Bytes (1073741824)
+2025-08-21 19:56:56,699 [INFO] ApiDbMcu:532 - Load IP Config File for USB_DEVICE
+2025-08-21 19:56:56,711 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,711 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,711 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,711 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,711 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,711 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,711 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,711 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,711 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,711 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,711 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,711 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,711 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,711 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,711 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,712 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,712 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,712 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,712 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,712 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,712 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,712 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,712 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,712 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,712 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,712 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,712 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,712 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,712 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,712 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,713 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,713 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,713 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,713 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,713 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,713 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,713 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,713 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,713 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,713 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,713 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,714 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,714 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,714 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,714 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,714 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,714 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,714 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,714 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,714 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,715 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,715 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,715 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,715 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,715 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,715 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,716 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,716 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,716 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,716 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 19:56:56,718 [INFO] ApiDbMcu:532 - Load IP Config File for PDM2PCM
+2025-08-21 19:56:56,718 [WARN] IP:2250 - I2C_Coeff_DF not found: check if there is a RefParameter without a condition.
+2025-08-21 19:56:56,718 [WARN] IP:2250 - Analog_Filter not found: check if there is a RefParameter without a condition.
+2025-08-21 19:56:56,749 [INFO] CADModel:165 - CPN selected for project levelSTM32F446RET6
+2025-08-21 19:56:56,749 [INFO] CADModel:114 - Register for checkConnection events
+2025-08-21 19:56:56,785 [INFO] OpenFileManager:386 - Restore cursor
+2025-08-21 19:56:56,858 [WARN] IP:2250 - DEVICE_SERIAL0_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:56:56,858 [WARN] IP:2250 - DEVICE_SERIAL1_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:56:56,858 [WARN] IP:2250 - DEVICE_SERIAL2_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:56:56,858 [WARN] IP:2250 - DEVICE_SERIAL0_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:56:56,858 [WARN] IP:2250 - DEVICE_SERIAL1_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:56:56,858 [WARN] IP:2250 - DEVICE_SERIAL2_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:56:56,884 [WARN] IP:2250 - I2C_Coeff_DF not found: check if there is a RefParameter without a condition.
+2025-08-21 19:56:56,884 [WARN] IP:2250 - Analog_Filter not found: check if there is a RefParameter without a condition.
+2025-08-21 19:56:56,884 [WARN] IP:2250 - I2C_Coeff_DF not found: check if there is a RefParameter without a condition.
+2025-08-21 19:56:56,885 [WARN] IP:2250 - Analog_Filter not found: check if there is a RefParameter without a condition.
+2025-08-21 19:57:08,774 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:57:16,781 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:57:23,644 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:57:28,906 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:57:34,050 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:57:39,247 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:57:45,077 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:57:48,356 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:58:24,006 [INFO] UtilMem:75 - End SaveConfig() Used Memory: 616856512 Bytes (1073741824)
+2025-08-21 19:58:27,791 [INFO] UtilMem:75 - End SaveConfig() Used Memory: 735869888 Bytes (1073741824)
+2025-08-21 19:58:28,041 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USB_DEVICE
+2025-08-21 19:58:28,041 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: SYS
+2025-08-21 19:58:28,041 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: RCC
+2025-08-21 19:58:28,041 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: I2C
+2025-08-21 19:58:28,041 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USB_OTG_FS
+2025-08-21 19:58:28,041 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: NVIC
+2025-08-21 19:58:28,041 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USART
+2025-08-21 19:58:28,041 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USART
+2025-08-21 19:58:28,041 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USART
+2025-08-21 19:58:28,041 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USART
+2025-08-21 19:58:28,041 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: DMA
+2025-08-21 19:58:28,042 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: GPIO
+2025-08-21 19:58:28,042 [INFO] CodeGenerator:892 - code generatio: config db path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db/
+2025-08-21 19:58:28,046 [WARN] IP:2250 - I2C_Coeff_DF not found: check if there is a RefParameter without a condition.
+2025-08-21 19:58:28,046 [WARN] IP:2250 - Analog_Filter not found: check if there is a RefParameter without a condition.
+2025-08-21 19:58:28,058 [WARN] IP:2250 - DEVICE_SERIAL0_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:58:28,058 [WARN] IP:2250 - DEVICE_SERIAL1_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:58:28,058 [WARN] IP:2250 - DEVICE_SERIAL2_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:58:28,125 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/license.tmp_save
+2025-08-21 19:58:28,350 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/license.tmp
+2025-08-21 19:58:28,393 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/gpio.tmp_save
+2025-08-21 19:58:28,499 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/gpio.tmp
+2025-08-21 19:58:28,569 [WARN] IPConfigManager:3238 - Warning: the RefConfig PWREx_EnableUSBVoltageDetector is not available in your config.xml file
+2025-08-21 19:58:28,572 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_vars.tmp_save
+2025-08-21 19:58:28,631 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_vars.tmp
+2025-08-21 19:58:28,632 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_inc.tmp_save
+2025-08-21 19:58:28,673 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_inc.tmp
+2025-08-21 19:58:28,674 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_HalInit.tmp_save
+2025-08-21 19:58:28,729 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_HalInit.tmp
+2025-08-21 19:58:28,730 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_Msp.tmp_save
+2025-08-21 19:58:28,799 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_Msp.tmp
+2025-08-21 19:58:29,893 [INFO] Middleware:1452 - No code input for Bsp Dependency
+2025-08-21 19:58:30,039 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/dma.tmp_save
+2025-08-21 19:58:30,082 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/dma.tmp
+2025-08-21 19:58:30,083 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/dma_GV.tmp_save
+2025-08-21 19:58:30,117 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/dma_GV.tmp
+2025-08-21 19:58:30,132 [INFO] Middleware:1452 - No code input for Bsp Dependency
+2025-08-21 19:58:30,135 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usb_device.c_save
+2025-08-21 19:58:30,182 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usb_device.c
+2025-08-21 19:58:30,182 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usb_device.h_save
+2025-08-21 19:58:30,224 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usb_device.h
+2025-08-21 19:58:30,225 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/Target/usbd_conf.h_save
+2025-08-21 19:58:30,268 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/Target/usbd_conf.h
+2025-08-21 19:58:30,269 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/Target/usbd_conf.c_save
+2025-08-21 19:58:30,314 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/Target/usbd_conf.c
+2025-08-21 19:58:30,315 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usbd_desc.h_save
+2025-08-21 19:58:30,352 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usbd_desc.h
+2025-08-21 19:58:30,353 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usbd_desc.c_save
+2025-08-21 19:58:30,394 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usbd_desc.c
+2025-08-21 19:58:30,400 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/stm32f4xx_it.c_save
+2025-08-21 19:58:30,469 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/stm32f4xx_it.c
+2025-08-21 19:58:30,470 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/stm32f4xx_it.h_save
+2025-08-21 19:58:30,511 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/stm32f4xx_it.h
+2025-08-21 19:58:30,518 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/stm32f4xx_hal_msp.c_save
+2025-08-21 19:58:30,607 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/stm32f4xx_hal_msp.c
+2025-08-21 19:58:30,609 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/system.tmp_save
+2025-08-21 19:58:30,650 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/system.tmp
+2025-08-21 19:58:30,654 [INFO] CodeEngine:321 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/stm32f4xx_hal_conf.h_save
+2025-08-21 19:58:30,702 [INFO] CodeEngine:345 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/stm32f4xx_hal_conf.h
+2025-08-21 19:58:30,717 [WARN] IPConfigManager:3238 - Warning: the RefConfig PLL2P_FOR_MCO is not available in your config.xml file
+2025-08-21 19:58:30,724 [INFO] ApiDbMcu:532 - Load IP Config File for I2C1
+2025-08-21 19:58:30,726 [INFO] ApiDbMcu:532 - Load IP Config File for USART1
+2025-08-21 19:58:30,727 [INFO] ApiDbMcu:532 - Load IP Config File for USART2
+2025-08-21 19:58:30,729 [INFO] ApiDbMcu:532 - Load IP Config File for USART3
+2025-08-21 19:58:30,730 [INFO] ApiDbMcu:532 - Load IP Config File for USART6
+2025-08-21 19:58:30,733 [INFO] ApiDbMcu:532 - Load IP Config File for RCC
+2025-08-21 19:58:30,737 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/main.h_save
+2025-08-21 19:58:30,790 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/main.h
+2025-08-21 19:58:30,791 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/main.c_save
+2025-08-21 19:58:30,878 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/main.c
+2025-08-21 19:58:31,050 [INFO] ProjectBuilder:3606 - Time for Copy HAL[1] : 30mS.
+2025-08-21 19:58:31,054 [INFO] ProjectBuilder:5216 - Project Generator version: 4.7.0-B52
+2025-08-21 19:58:31,111 [INFO] ConfigFileManager:1595 - The Die is : DIE421
+2025-08-21 19:58:31,115 [INFO] ApiDbMcu:532 - Load IP Config File for FATFS
+2025-08-21 19:58:31,118 [INFO] ApiDbMcu:532 - Load IP Config File for FREERTOS
+2025-08-21 19:58:31,119 [INFO] ApiDbMcu:532 - Load IP Config File for LIBJPEG
+2025-08-21 19:58:31,123 [INFO] ApiDbMcu:532 - Load IP Config File for MBEDTLS
+2025-08-21 19:58:31,125 [INFO] ApiDbMcu:532 - Load IP Config File for USB_HOST
+2025-08-21 19:58:31,379 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT]
+2025-08-21 19:58:31,863 [INFO] ProjectBuilder:5496 - Time for Generating toolchain IDE Files: 809mS.
+2025-08-21 19:58:31,864 [INFO] ProjectBuilder:3463 - Time for Copy CMSIS : 1mS.
+2025-08-21 19:58:31,864 [INFO] ProjectBuilder:3463 - Time for Copy CMSIS : 0mS.
+2025-08-21 19:58:34,572 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,731x537,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:58:38,738 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:58:40,117 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:58:41,200 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:58:42,496 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:58:44,009 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:58:47,080 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:58:48,099 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:58:48,967 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:58:49,604 [INFO] NvicIntPanel:101 - NVIC parent = com.st.microxplorer.plugins.ip.nvic.MultiNvicIntPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+2025-08-21 19:58:51,582 [INFO] UtilMem:75 - End SaveConfig() Used Memory: 410555136 Bytes (1073741824)
+2025-08-21 19:58:51,939 [INFO] UtilMem:75 - End SaveConfig() Used Memory: 514364160 Bytes (1073741824)
+2025-08-21 19:58:52,075 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USB_DEVICE
+2025-08-21 19:58:52,076 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: SYS
+2025-08-21 19:58:52,076 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: RCC
+2025-08-21 19:58:52,076 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: I2C
+2025-08-21 19:58:52,076 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USB_OTG_FS
+2025-08-21 19:58:52,076 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: NVIC
+2025-08-21 19:58:52,076 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USART
+2025-08-21 19:58:52,076 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USART
+2025-08-21 19:58:52,076 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USART
+2025-08-21 19:58:52,076 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USART
+2025-08-21 19:58:52,076 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: DMA
+2025-08-21 19:58:52,076 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: GPIO
+2025-08-21 19:58:52,076 [INFO] CodeGenerator:892 - code generatio: config db path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db/
+2025-08-21 19:58:52,078 [WARN] IP:2250 - I2C_Coeff_DF not found: check if there is a RefParameter without a condition.
+2025-08-21 19:58:52,078 [WARN] IP:2250 - Analog_Filter not found: check if there is a RefParameter without a condition.
+2025-08-21 19:58:52,092 [INFO] Argument:325 - Argument : hdmavalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:327 - sub Args:
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : Instancevalue: DMA2_Stream2
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : Instancevalue: DMA2_Stream2
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : Initvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:327 - sub Args:
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : Channelvalue: DMA_CHANNEL_4
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : Channelvalue: DMA_CHANNEL_4
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : Directionvalue: DMA_PERIPH_TO_MEMORY
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : Directionvalue: DMA_PERIPH_TO_MEMORY
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : PeriphIncvalue: DMA_PINC_DISABLE
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : PeriphIncvalue: DMA_PINC_DISABLE
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : MemIncvalue: DMA_MINC_ENABLE
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : MemIncvalue: DMA_MINC_ENABLE
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : PeriphDataAlignmentvalue: DMA_PDATAALIGN_BYTE
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : PeriphDataAlignmentvalue: DMA_PDATAALIGN_BYTE
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : MemDataAlignmentvalue: DMA_MDATAALIGN_BYTE
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : MemDataAlignmentvalue: DMA_MDATAALIGN_BYTE
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : Modevalue: DMA_NORMAL
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : Modevalue: DMA_NORMAL
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : Priorityvalue: DMA_PRIORITY_LOW
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : Priorityvalue: DMA_PRIORITY_LOW
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : FIFOModevalue: DMA_FIFOMODE_DISABLE
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : FIFOModevalue: DMA_FIFOMODE_DISABLE
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : FIFOThresholdvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : FIFOThresholdvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : MemBurstvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : MemBurstvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : PeriphBurstvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : PeriphBurstvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : Lockvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : Lockvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : Statevalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : Statevalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : Parentvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : Parentvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : XferCpltCallbackvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : XferCpltCallbackvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : XferHalfCpltCallbackvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : XferHalfCpltCallbackvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : XferM1CpltCallbackvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : XferM1CpltCallbackvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : XferErrorCallbackvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : XferErrorCallbackvalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : ErrorCodevalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:335 - Argument : ErrorCodevalue: null
+2025-08-21 19:58:52,093 [INFO] Argument:325 - Argument : hdmavalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:327 - sub Args:
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : Instancevalue: DMA2_Stream7
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : Instancevalue: DMA2_Stream7
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : Initvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:327 - sub Args:
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : Channelvalue: DMA_CHANNEL_4
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : Channelvalue: DMA_CHANNEL_4
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : Directionvalue: DMA_MEMORY_TO_PERIPH
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : Directionvalue: DMA_MEMORY_TO_PERIPH
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : PeriphIncvalue: DMA_PINC_DISABLE
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : PeriphIncvalue: DMA_PINC_DISABLE
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : MemIncvalue: DMA_MINC_ENABLE
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : MemIncvalue: DMA_MINC_ENABLE
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : PeriphDataAlignmentvalue: DMA_PDATAALIGN_BYTE
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : PeriphDataAlignmentvalue: DMA_PDATAALIGN_BYTE
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : MemDataAlignmentvalue: DMA_MDATAALIGN_BYTE
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : MemDataAlignmentvalue: DMA_MDATAALIGN_BYTE
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : Modevalue: DMA_NORMAL
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : Modevalue: DMA_NORMAL
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : Priorityvalue: DMA_PRIORITY_LOW
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : Priorityvalue: DMA_PRIORITY_LOW
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : FIFOModevalue: DMA_FIFOMODE_DISABLE
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : FIFOModevalue: DMA_FIFOMODE_DISABLE
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : FIFOThresholdvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : FIFOThresholdvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : MemBurstvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : MemBurstvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : PeriphBurstvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : PeriphBurstvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : Lockvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : Lockvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : Statevalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : Statevalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : Parentvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : Parentvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : XferCpltCallbackvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : XferCpltCallbackvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : XferHalfCpltCallbackvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : XferHalfCpltCallbackvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : XferM1CpltCallbackvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : XferM1CpltCallbackvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : XferErrorCallbackvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : XferErrorCallbackvalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:325 - Argument : ErrorCodevalue: null
+2025-08-21 19:58:52,094 [INFO] Argument:335 - Argument : ErrorCodevalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : hdmavalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:327 - sub Args:
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : Instancevalue: DMA1_Stream5
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : Instancevalue: DMA1_Stream5
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : Initvalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:327 - sub Args:
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : Channelvalue: DMA_CHANNEL_4
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : Channelvalue: DMA_CHANNEL_4
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : Directionvalue: DMA_PERIPH_TO_MEMORY
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : Directionvalue: DMA_PERIPH_TO_MEMORY
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : PeriphIncvalue: DMA_PINC_DISABLE
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : PeriphIncvalue: DMA_PINC_DISABLE
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : MemIncvalue: DMA_MINC_ENABLE
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : MemIncvalue: DMA_MINC_ENABLE
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : PeriphDataAlignmentvalue: DMA_PDATAALIGN_BYTE
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : PeriphDataAlignmentvalue: DMA_PDATAALIGN_BYTE
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : MemDataAlignmentvalue: DMA_MDATAALIGN_BYTE
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : MemDataAlignmentvalue: DMA_MDATAALIGN_BYTE
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : Modevalue: DMA_NORMAL
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : Modevalue: DMA_NORMAL
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : Priorityvalue: DMA_PRIORITY_LOW
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : Priorityvalue: DMA_PRIORITY_LOW
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : FIFOModevalue: DMA_FIFOMODE_DISABLE
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : FIFOModevalue: DMA_FIFOMODE_DISABLE
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : FIFOThresholdvalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : FIFOThresholdvalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : MemBurstvalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : MemBurstvalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : PeriphBurstvalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : PeriphBurstvalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : Lockvalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : Lockvalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : Statevalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : Statevalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : Parentvalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : Parentvalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : XferCpltCallbackvalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : XferCpltCallbackvalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : XferHalfCpltCallbackvalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:335 - Argument : XferHalfCpltCallbackvalue: null
+2025-08-21 19:58:52,095 [INFO] Argument:325 - Argument : XferM1CpltCallbackvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : XferM1CpltCallbackvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : XferErrorCallbackvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : XferErrorCallbackvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : ErrorCodevalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : ErrorCodevalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : hdmavalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:327 - sub Args:
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : Instancevalue: DMA1_Stream6
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : Instancevalue: DMA1_Stream6
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : Initvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:327 - sub Args:
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : Channelvalue: DMA_CHANNEL_4
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : Channelvalue: DMA_CHANNEL_4
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : Directionvalue: DMA_MEMORY_TO_PERIPH
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : Directionvalue: DMA_MEMORY_TO_PERIPH
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : PeriphIncvalue: DMA_PINC_DISABLE
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : PeriphIncvalue: DMA_PINC_DISABLE
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : MemIncvalue: DMA_MINC_ENABLE
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : MemIncvalue: DMA_MINC_ENABLE
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : PeriphDataAlignmentvalue: DMA_PDATAALIGN_BYTE
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : PeriphDataAlignmentvalue: DMA_PDATAALIGN_BYTE
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : MemDataAlignmentvalue: DMA_MDATAALIGN_BYTE
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : MemDataAlignmentvalue: DMA_MDATAALIGN_BYTE
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : Modevalue: DMA_NORMAL
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : Modevalue: DMA_NORMAL
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : Priorityvalue: DMA_PRIORITY_LOW
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : Priorityvalue: DMA_PRIORITY_LOW
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : FIFOModevalue: DMA_FIFOMODE_DISABLE
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : FIFOModevalue: DMA_FIFOMODE_DISABLE
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : FIFOThresholdvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : FIFOThresholdvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : MemBurstvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : MemBurstvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : PeriphBurstvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : PeriphBurstvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : Lockvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : Lockvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : Statevalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : Statevalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : Parentvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : Parentvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : XferCpltCallbackvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : XferCpltCallbackvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : XferHalfCpltCallbackvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : XferHalfCpltCallbackvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : XferM1CpltCallbackvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : XferM1CpltCallbackvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : XferErrorCallbackvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : XferErrorCallbackvalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:325 - Argument : ErrorCodevalue: null
+2025-08-21 19:58:52,096 [INFO] Argument:335 - Argument : ErrorCodevalue: null
+2025-08-21 19:58:52,097 [INFO] Argument:325 - Argument : hdmavalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:327 - sub Args:
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : Instancevalue: DMA1_Stream1
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : Instancevalue: DMA1_Stream1
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : Initvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:327 - sub Args:
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : Channelvalue: DMA_CHANNEL_4
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : Channelvalue: DMA_CHANNEL_4
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : Directionvalue: DMA_PERIPH_TO_MEMORY
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : Directionvalue: DMA_PERIPH_TO_MEMORY
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : PeriphIncvalue: DMA_PINC_DISABLE
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : PeriphIncvalue: DMA_PINC_DISABLE
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : MemIncvalue: DMA_MINC_ENABLE
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : MemIncvalue: DMA_MINC_ENABLE
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : PeriphDataAlignmentvalue: DMA_PDATAALIGN_BYTE
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : PeriphDataAlignmentvalue: DMA_PDATAALIGN_BYTE
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : MemDataAlignmentvalue: DMA_MDATAALIGN_BYTE
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : MemDataAlignmentvalue: DMA_MDATAALIGN_BYTE
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : Modevalue: DMA_NORMAL
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : Modevalue: DMA_NORMAL
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : Priorityvalue: DMA_PRIORITY_LOW
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : Priorityvalue: DMA_PRIORITY_LOW
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : FIFOModevalue: DMA_FIFOMODE_DISABLE
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : FIFOModevalue: DMA_FIFOMODE_DISABLE
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : FIFOThresholdvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : FIFOThresholdvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : MemBurstvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : MemBurstvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : PeriphBurstvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : PeriphBurstvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : Lockvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : Lockvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : Statevalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : Statevalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : Parentvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : Parentvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : XferCpltCallbackvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : XferCpltCallbackvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : XferHalfCpltCallbackvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : XferHalfCpltCallbackvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : XferM1CpltCallbackvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : XferM1CpltCallbackvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : XferErrorCallbackvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : XferErrorCallbackvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : ErrorCodevalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : ErrorCodevalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : hdmavalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:327 - sub Args:
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : Instancevalue: DMA1_Stream3
+2025-08-21 19:58:52,098 [INFO] Argument:335 - Argument : Instancevalue: DMA1_Stream3
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : Initvalue: null
+2025-08-21 19:58:52,098 [INFO] Argument:327 - sub Args:
+2025-08-21 19:58:52,098 [INFO] Argument:325 - Argument : Channelvalue: DMA_CHANNEL_4
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : Channelvalue: DMA_CHANNEL_4
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : Directionvalue: DMA_MEMORY_TO_PERIPH
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : Directionvalue: DMA_MEMORY_TO_PERIPH
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : PeriphIncvalue: DMA_PINC_DISABLE
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : PeriphIncvalue: DMA_PINC_DISABLE
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : MemIncvalue: DMA_MINC_ENABLE
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : MemIncvalue: DMA_MINC_ENABLE
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : PeriphDataAlignmentvalue: DMA_PDATAALIGN_BYTE
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : PeriphDataAlignmentvalue: DMA_PDATAALIGN_BYTE
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : MemDataAlignmentvalue: DMA_MDATAALIGN_BYTE
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : MemDataAlignmentvalue: DMA_MDATAALIGN_BYTE
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : Modevalue: DMA_NORMAL
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : Modevalue: DMA_NORMAL
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : Priorityvalue: DMA_PRIORITY_LOW
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : Priorityvalue: DMA_PRIORITY_LOW
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : FIFOModevalue: DMA_FIFOMODE_DISABLE
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : FIFOModevalue: DMA_FIFOMODE_DISABLE
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : FIFOThresholdvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : FIFOThresholdvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : MemBurstvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : MemBurstvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : PeriphBurstvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : PeriphBurstvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : Lockvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : Lockvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : Statevalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : Statevalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : Parentvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : Parentvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : XferCpltCallbackvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : XferCpltCallbackvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : XferHalfCpltCallbackvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : XferHalfCpltCallbackvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : XferM1CpltCallbackvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : XferM1CpltCallbackvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : XferErrorCallbackvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : XferErrorCallbackvalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:325 - Argument : ErrorCodevalue: null
+2025-08-21 19:58:52,099 [INFO] Argument:335 - Argument : ErrorCodevalue: null
+2025-08-21 19:58:52,100 [INFO] Argument:325 - Argument : hdmavalue: null
+2025-08-21 19:58:52,100 [INFO] Argument:327 - sub Args:
+2025-08-21 19:58:52,100 [INFO] Argument:325 - Argument : Instancevalue: DMA2_Stream1
+2025-08-21 19:58:52,100 [INFO] Argument:335 - Argument : Instancevalue: DMA2_Stream1
+2025-08-21 19:58:52,100 [INFO] Argument:325 - Argument : Initvalue: null
+2025-08-21 19:58:52,100 [INFO] Argument:327 - sub Args:
+2025-08-21 19:58:52,100 [INFO] Argument:325 - Argument : Channelvalue: DMA_CHANNEL_5
+2025-08-21 19:58:52,100 [INFO] Argument:335 - Argument : Channelvalue: DMA_CHANNEL_5
+2025-08-21 19:58:52,100 [INFO] Argument:325 - Argument : Directionvalue: DMA_PERIPH_TO_MEMORY
+2025-08-21 19:58:52,100 [INFO] Argument:335 - Argument : Directionvalue: DMA_PERIPH_TO_MEMORY
+2025-08-21 19:58:52,100 [INFO] Argument:325 - Argument : PeriphIncvalue: DMA_PINC_DISABLE
+2025-08-21 19:58:52,100 [INFO] Argument:335 - Argument : PeriphIncvalue: DMA_PINC_DISABLE
+2025-08-21 19:58:52,100 [INFO] Argument:325 - Argument : MemIncvalue: DMA_MINC_ENABLE
+2025-08-21 19:58:52,100 [INFO] Argument:335 - Argument : MemIncvalue: DMA_MINC_ENABLE
+2025-08-21 19:58:52,100 [INFO] Argument:325 - Argument : PeriphDataAlignmentvalue: DMA_PDATAALIGN_BYTE
+2025-08-21 19:58:52,100 [INFO] Argument:335 - Argument : PeriphDataAlignmentvalue: DMA_PDATAALIGN_BYTE
+2025-08-21 19:58:52,100 [INFO] Argument:325 - Argument : MemDataAlignmentvalue: DMA_MDATAALIGN_BYTE
+2025-08-21 19:58:52,100 [INFO] Argument:335 - Argument : MemDataAlignmentvalue: DMA_MDATAALIGN_BYTE
+2025-08-21 19:58:52,100 [INFO] Argument:325 - Argument : Modevalue: DMA_NORMAL
+2025-08-21 19:58:52,100 [INFO] Argument:335 - Argument : Modevalue: DMA_NORMAL
+2025-08-21 19:58:52,100 [INFO] Argument:325 - Argument : Priorityvalue: DMA_PRIORITY_LOW
+2025-08-21 19:58:52,100 [INFO] Argument:335 - Argument : Priorityvalue: DMA_PRIORITY_LOW
+2025-08-21 19:58:52,100 [INFO] Argument:325 - Argument : FIFOModevalue: DMA_FIFOMODE_DISABLE
+2025-08-21 19:58:52,100 [INFO] Argument:335 - Argument : FIFOModevalue: DMA_FIFOMODE_DISABLE
+2025-08-21 19:58:52,100 [INFO] Argument:325 - Argument : FIFOThresholdvalue: null
+2025-08-21 19:58:52,100 [INFO] Argument:335 - Argument : FIFOThresholdvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : MemBurstvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : MemBurstvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : PeriphBurstvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : PeriphBurstvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : Lockvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : Lockvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : Statevalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : Statevalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : Parentvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : Parentvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : XferCpltCallbackvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : XferCpltCallbackvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : XferHalfCpltCallbackvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : XferHalfCpltCallbackvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : XferM1CpltCallbackvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : XferM1CpltCallbackvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : XferErrorCallbackvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : XferErrorCallbackvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : ErrorCodevalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : ErrorCodevalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : hdmavalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:327 - sub Args:
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : Instancevalue: DMA2_Stream6
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : Instancevalue: DMA2_Stream6
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : Initvalue: null
+2025-08-21 19:58:52,101 [INFO] Argument:327 - sub Args:
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : Channelvalue: DMA_CHANNEL_5
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : Channelvalue: DMA_CHANNEL_5
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : Directionvalue: DMA_MEMORY_TO_PERIPH
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : Directionvalue: DMA_MEMORY_TO_PERIPH
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : PeriphIncvalue: DMA_PINC_DISABLE
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : PeriphIncvalue: DMA_PINC_DISABLE
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : MemIncvalue: DMA_MINC_ENABLE
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : MemIncvalue: DMA_MINC_ENABLE
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : PeriphDataAlignmentvalue: DMA_PDATAALIGN_BYTE
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : PeriphDataAlignmentvalue: DMA_PDATAALIGN_BYTE
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : MemDataAlignmentvalue: DMA_MDATAALIGN_BYTE
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : MemDataAlignmentvalue: DMA_MDATAALIGN_BYTE
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : Modevalue: DMA_NORMAL
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : Modevalue: DMA_NORMAL
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : Priorityvalue: DMA_PRIORITY_LOW
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : Priorityvalue: DMA_PRIORITY_LOW
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : FIFOModevalue: DMA_FIFOMODE_DISABLE
+2025-08-21 19:58:52,101 [INFO] Argument:335 - Argument : FIFOModevalue: DMA_FIFOMODE_DISABLE
+2025-08-21 19:58:52,101 [INFO] Argument:325 - Argument : FIFOThresholdvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:335 - Argument : FIFOThresholdvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:325 - Argument : MemBurstvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:335 - Argument : MemBurstvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:325 - Argument : PeriphBurstvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:335 - Argument : PeriphBurstvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:325 - Argument : Lockvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:335 - Argument : Lockvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:325 - Argument : Statevalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:335 - Argument : Statevalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:325 - Argument : Parentvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:335 - Argument : Parentvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:325 - Argument : XferCpltCallbackvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:335 - Argument : XferCpltCallbackvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:325 - Argument : XferHalfCpltCallbackvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:335 - Argument : XferHalfCpltCallbackvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:325 - Argument : XferM1CpltCallbackvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:335 - Argument : XferM1CpltCallbackvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:325 - Argument : XferErrorCallbackvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:335 - Argument : XferErrorCallbackvalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:325 - Argument : ErrorCodevalue: null
+2025-08-21 19:58:52,102 [INFO] Argument:335 - Argument : ErrorCodevalue: null
+2025-08-21 19:58:52,103 [WARN] IP:2250 - DEVICE_SERIAL0_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:58:52,103 [WARN] IP:2250 - DEVICE_SERIAL1_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:58:52,103 [WARN] IP:2250 - DEVICE_SERIAL2_HID_FS not found: check if there is a RefParameter without a condition.
+2025-08-21 19:58:52,160 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/license.tmp_save
+2025-08-21 19:58:52,208 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/license.tmp
+2025-08-21 19:58:52,221 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/gpio.tmp_save
+2025-08-21 19:58:52,269 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/gpio.tmp
+2025-08-21 19:58:52,295 [WARN] IPConfigManager:3238 - Warning: the RefConfig PWREx_EnableUSBVoltageDetector is not available in your config.xml file
+2025-08-21 19:58:52,297 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_vars.tmp_save
+2025-08-21 19:58:52,337 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_vars.tmp
+2025-08-21 19:58:52,338 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_inc.tmp_save
+2025-08-21 19:58:52,377 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_inc.tmp
+2025-08-21 19:58:52,378 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_HalInit.tmp_save
+2025-08-21 19:58:52,424 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_HalInit.tmp
+2025-08-21 19:58:52,425 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_Msp.tmp_save
+2025-08-21 19:58:52,478 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/usb_otg_fs_Msp.tmp
+2025-08-21 19:58:53,425 [INFO] Middleware:1452 - No code input for Bsp Dependency
+2025-08-21 19:58:53,564 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/dma.tmp_save
+2025-08-21 19:58:53,607 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/dma.tmp
+2025-08-21 19:58:53,608 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/dma_GV.tmp_save
+2025-08-21 19:58:53,642 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/dma_GV.tmp
+2025-08-21 19:58:53,668 [INFO] Middleware:1452 - No code input for Bsp Dependency
+2025-08-21 19:58:53,671 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usb_device.c_save
+2025-08-21 19:58:53,730 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usb_device.c
+2025-08-21 19:58:53,732 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usb_device.h_save
+2025-08-21 19:58:53,782 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usb_device.h
+2025-08-21 19:58:53,784 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/Target/usbd_conf.h_save
+2025-08-21 19:58:53,825 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/Target/usbd_conf.h
+2025-08-21 19:58:53,826 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/Target/usbd_conf.c_save
+2025-08-21 19:58:53,867 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/Target/usbd_conf.c
+2025-08-21 19:58:53,868 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usbd_desc.h_save
+2025-08-21 19:58:53,903 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usbd_desc.h
+2025-08-21 19:58:53,904 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usbd_desc.c_save
+2025-08-21 19:58:53,942 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/USB_DEVICE/App/usbd_desc.c
+2025-08-21 19:58:53,949 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/stm32f4xx_it.c_save
+2025-08-21 19:58:54,003 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/stm32f4xx_it.c
+2025-08-21 19:58:54,004 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/stm32f4xx_it.h_save
+2025-08-21 19:58:54,043 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/stm32f4xx_it.h
+2025-08-21 19:58:54,050 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/stm32f4xx_hal_msp.c_save
+2025-08-21 19:58:54,118 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/stm32f4xx_hal_msp.c
+2025-08-21 19:58:54,119 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/system.tmp_save
+2025-08-21 19:58:54,155 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/MXTmpFiles/system.tmp
+2025-08-21 19:58:54,157 [INFO] CodeEngine:321 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/stm32f4xx_hal_conf.h_save
+2025-08-21 19:58:54,202 [INFO] CodeEngine:345 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/stm32f4xx_hal_conf.h
+2025-08-21 19:58:54,210 [WARN] IPConfigManager:3238 - Warning: the RefConfig PLL2P_FOR_MCO is not available in your config.xml file
+2025-08-21 19:58:54,214 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/main.h_save
+2025-08-21 19:58:54,255 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Inc/main.h
+2025-08-21 19:58:54,256 [INFO] CodeEngine:265 - oldGeneratedFile, /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/main.c_save
+2025-08-21 19:58:54,314 [INFO] CodeEngine:289 - Generated code: /home/kymkim/Projects/modular-kbd/firmware/numpad/numpad/Core/Src/main.c
+2025-08-21 19:58:54,437 [INFO] ProjectBuilder:3606 - Time for Copy HAL[1] : 16mS.
+2025-08-21 19:58:54,439 [INFO] ProjectBuilder:5216 - Project Generator version: 4.7.0-B52
+2025-08-21 19:58:54,485 [INFO] ConfigFileManager:1595 - The Die is : DIE421
+2025-08-21 19:58:54,900 [INFO] ProjectBuilder:5496 - Time for Generating toolchain IDE Files: 461mS.
+2025-08-21 19:58:54,900 [INFO] ProjectBuilder:3463 - Time for Copy CMSIS : 0mS.
+2025-08-21 19:58:54,901 [INFO] ProjectBuilder:3463 - Time for Copy CMSIS : 0mS.
+2025-08-21 20:48:37,727 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT]
+2025-08-21 20:48:48,982 [INFO] Activator:176 -
-2025-08-19 20:13:36,173 [INFO] Activator:177 - !SESSION log4j initialized
-2025-08-19 20:13:38,461 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT]
-2025-08-19 20:13:38,747 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
-2025-08-19 20:13:38,758 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
-2025-08-19 20:13:38,758 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
-2025-08-19 20:13:38,758 [WARN] ApiDb:259 - Overriding images path with different value: => /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
-2025-08-19 20:13:38,760 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:13:38,760 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:13:38,761 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
-2025-08-19 20:13:38,824 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
-2025-08-19 20:13:38,857 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
-2025-08-19 20:13:38,857 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
-2025-08-19 20:13:38,857 [INFO] ApiDb:261 - Set plugin images path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
-2025-08-19 20:13:38,857 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:13:38,858 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:13:38,858 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:13:38,858 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:13:38,858 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:13:38,858 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:13:38,858 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
-2025-08-19 20:13:38,893 [INFO] MainPanel:274 - HeapMemory: 268435456
-2025-08-19 20:13:38,947 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
-2025-08-19 20:13:38,947 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
-2025-08-19 20:13:38,947 [INFO] ApiDb:261 - Set plugin images path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
-2025-08-19 20:13:38,947 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:13:38,947 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:13:38,947 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:13:38,947 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:13:38,947 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:13:38,947 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:13:38,948 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
-2025-08-19 20:13:38,956 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
-2025-08-19 20:13:38,957 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ]
-2025-08-19 20:13:38,957 [INFO] PluginManage:310 - Check plugin analytics
-2025-08-19 20:13:39,030 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses:
-2025-08-19 20:13:39,030 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses:
-2025-08-19 20:13:39,030 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses: FW.F4.1.28.0
-2025-08-19 20:13:39,031 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1)
-2025-08-19 20:13:39,031 [INFO] PluginManage:310 - Check plugin cadmodel
-2025-08-19 20:13:39,034 [INFO] CADModel:105 - Init CAD model plugin
-2025-08-19 20:13:39,034 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5)
-2025-08-19 20:13:39,034 [INFO] PluginManage:310 - Check plugin clock
-2025-08-19 20:13:39,038 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2)
-2025-08-19 20:13:39,038 [INFO] PluginManage:310 - Check plugin ddr
-2025-08-19 20:13:39,039 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6)
-2025-08-19 20:13:39,039 [INFO] PluginManage:310 - Check plugin filemanager
-2025-08-19 20:13:39,112 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10)
-2025-08-19 20:13:39,112 [INFO] PluginManage:310 - Check plugin ipmanager
-2025-08-19 20:13:39,114 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5)
-2025-08-19 20:13:39,114 [INFO] PluginManage:310 - Check plugin lpbam
-2025-08-19 20:13:39,119 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0)
-2025-08-19 20:13:39,119 [INFO] PluginManage:310 - Check plugin memorymap
-2025-08-19 20:13:39,125 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4)
-2025-08-19 20:13:39,126 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration
-2025-08-19 20:13:39,131 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1)
-2025-08-19 20:13:39,131 [INFO] PluginManage:310 - Check plugin pinoutconfig
-2025-08-19 20:13:39,179 [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.
-2025-08-19 20:13:39,237 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0)
-2025-08-19 20:13:39,237 [INFO] PluginManage:310 - Check plugin power
-2025-08-19 20:13:39,241 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4)
-2025-08-19 20:13:39,241 [INFO] PluginManage:310 - Check plugin projectmanager
-2025-08-19 20:13:39,251 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:4)
-2025-08-19 20:13:39,251 [INFO] PluginManage:310 - Check plugin rif
-2025-08-19 20:13:39,256 [INFO] PluginManage:359 - Loaded plugin rif (category:base,tabindex:3)
-2025-08-19 20:13:39,256 [INFO] PluginManage:310 - Check plugin thirdparty
-2025-08-19 20:13:39,315 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1)
-2025-08-19 20:13:39,315 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check]
-2025-08-19 20:13:39,315 [INFO] PluginManage:310 - Check plugin tools
-2025-08-19 20:13:39,315 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check]
-2025-08-19 20:13:39,315 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15]
-2025-08-19 20:13:39,317 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7)
-2025-08-19 20:13:39,317 [INFO] PluginManage:310 - Check plugin tutovideos
-2025-08-19 20:13:39,419 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1)
-2025-08-19 20:13:39,419 [INFO] PluginManage:310 - Check plugin updater
-2025-08-19 20:13:39,433 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12)
-2025-08-19 20:13:39,433 [INFO] PluginManage:310 - Check plugin userauth
-2025-08-19 20:13:39,435 [INFO] UserAuth:118 - Init User Auth plugin
-2025-08-19 20:13:39,436 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14)
-2025-08-19 20:13:39,436 [INFO] PluginManage:283 - PluginManage : Loaded plugins [18]
-2025-08-19 20:13:39,530 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration)
-2025-08-19 20:13:39,565 [INFO] CADModel:165 - CPN selected for project level
-2025-08-19 20:13:39,565 [INFO] CADModel:114 - Register for checkConnection events
-2025-08-19 20:13:39,576 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,577 [INFO] PluginManager:220 - loadIPPluginJar : add adc
-2025-08-19 20:13:39,578 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,578 [INFO] PluginManager:220 - loadIPPluginJar : add aes
-2025-08-19 20:13:39,579 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,579 [INFO] PluginManager:220 - loadIPPluginJar : add can
-2025-08-19 20:13:39,580 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,580 [INFO] PluginManager:220 - loadIPPluginJar : add comp
-2025-08-19 20:13:39,580 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,580 [INFO] PluginManager:220 - loadIPPluginJar : add cryp
-2025-08-19 20:13:39,582 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,582 [INFO] PluginManager:220 - loadIPPluginJar : add ddr_ctrl_phy
-2025-08-19 20:13:39,583 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,583 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm
-2025-08-19 20:13:39,587 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,587 [INFO] PluginManager:220 - loadIPPluginJar : add dma
-2025-08-19 20:13:39,588 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,588 [INFO] PluginManager:220 - loadIPPluginJar : add dma3
-2025-08-19 20:13:39,589 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,589 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager
-2025-08-19 20:13:39,589 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,589 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs
-2025-08-19 20:13:39,591 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,591 [INFO] PluginManager:220 - loadIPPluginJar : add fmc
-2025-08-19 20:13:39,594 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,594 [INFO] PluginManager:220 - loadIPPluginJar : add freertos
-2025-08-19 20:13:39,595 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,595 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin
-2025-08-19 20:13:39,596 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,596 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu
-2025-08-19 20:13:39,598 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,598 [INFO] PluginManager:220 - loadIPPluginJar : add gic
-2025-08-19 20:13:39,601 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,601 [INFO] PluginManager:220 - loadIPPluginJar : add gpio
-2025-08-19 20:13:39,603 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,603 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc
-2025-08-19 20:13:39,604 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,604 [INFO] PluginManager:220 - loadIPPluginJar : add hash
-2025-08-19 20:13:39,605 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,605 [INFO] PluginManager:220 - loadIPPluginJar : add i2c
-2025-08-19 20:13:39,606 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,606 [INFO] PluginManager:220 - loadIPPluginJar : add i2s
-2025-08-19 20:13:39,607 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,607 [INFO] PluginManager:220 - loadIPPluginJar : add i3c
-2025-08-19 20:13:39,609 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,609 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr
-2025-08-19 20:13:39,612 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,612 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist
-2025-08-19 20:13:39,614 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,614 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan
-2025-08-19 20:13:39,614 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,614 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc
-2025-08-19 20:13:39,618 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,618 [INFO] PluginManager:220 - loadIPPluginJar : add mdma
-2025-08-19 20:13:39,619 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,619 [INFO] PluginManager:220 - loadIPPluginJar : add nvic
-2025-08-19 20:13:39,620 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,620 [INFO] PluginManager:220 - loadIPPluginJar : add opamp
-2025-08-19 20:13:39,621 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,621 [INFO] PluginManager:220 - loadIPPluginJar : add openamp
-2025-08-19 20:13:39,622 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,622 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm
-2025-08-19 20:13:39,624 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,625 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings
-2025-08-19 20:13:39,626 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,626 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi
-2025-08-19 20:13:39,626 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,627 [INFO] PluginManager:220 - loadIPPluginJar : add radio
-2025-08-19 20:13:39,628 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,628 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility
-2025-08-19 20:13:39,629 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,629 [INFO] PluginManager:220 - loadIPPluginJar : add sai
-2025-08-19 20:13:39,630 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,630 [INFO] PluginManager:220 - loadIPPluginJar : add spi
-2025-08-19 20:13:39,634 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,634 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan
-2025-08-19 20:13:39,634 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,634 [INFO] PluginManager:220 - loadIPPluginJar : add tim
-2025-08-19 20:13:39,635 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,635 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing
-2025-08-19 20:13:39,636 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,636 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb
-2025-08-19 20:13:39,637 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,637 [INFO] PluginManager:220 - loadIPPluginJar : add ts
-2025-08-19 20:13:39,637 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,637 [INFO] PluginManager:220 - loadIPPluginJar : add tsc
-2025-08-19 20:13:39,638 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,638 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd
-2025-08-19 20:13:39,639 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,639 [INFO] PluginManager:220 - loadIPPluginJar : add usart
-2025-08-19 20:13:39,640 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:13:39,640 [INFO] PluginManager:220 - loadIPPluginJar : add usbx
-2025-08-19 20:13:39,728 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:13:39,746 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
-2025-08-19 20:13:39,753 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
-2025-08-19 20:13:39,758 [INFO] CADModel:165 - CPN selected for project level
-2025-08-19 20:13:39,758 [INFO] CADModel:114 - Register for checkConnection events
-2025-08-19 20:13:39,758 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:13:39,758 [ERROR] CADModel:125 - Updater not yet initialized, retry later
-2025-08-19 20:13:39,823 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:13:39,823 [INFO] CADModel:165 - CPN selected for project level
-2025-08-19 20:13:39,824 [INFO] CADModel:114 - Register for checkConnection events
-2025-08-19 20:13:39,824 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:13:39,824 [ERROR] CADModel:125 - Updater not yet initialized, retry later
-2025-08-19 20:13:39,825 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:13:39,865 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:13:39,868 [INFO] DbMcusAds:53 - JSON generation date=Tue Jul 08 01:14:23 PDT 2025 (1751962463582)
-2025-08-19 20:13:39,868 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:13:39,885 [WARN] DetailPanel:346 - Failed to get advertising image, set to default
-2025-08-19 20:13:39,925 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:13:39,926 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:13:39,926 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:13:39,926 [WARN] DetailPanel:346 - Failed to get advertising image, set to default
-2025-08-19 20:13:39,927 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:13:39,943 [ERROR] Updater:1198 - MainUpdater not yet initialized. External WinMGr cannot be set.
-2025-08-19 20:13:39,944 [INFO] Updater:1134 - Updater Version found : 6.15.0
-2025-08-19 20:13:39,954 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
-2025-08-19 20:13:40,152 [INFO] MainUpdater:2872 - connection check result : 10
-2025-08-19 20:13:40,153 [INFO] MainUpdater:289 - Updater Check For Update Now.
-2025-08-19 20:13:40,153 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150
-2025-08-19 20:13:40,157 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated)
-2025-08-19 20:13:40,157 [INFO] UserAuth:171 - activating auth plugin
-2025-08-19 20:13:40,158 [INFO] UserAuth:487 - Internet connection configuration mode: 1
-2025-08-19 20:13:40,170 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder
-2025-08-19 20:13:40,302 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread
-2025-08-19 20:13:40,495 [INFO] WebApp:169 - Instantiating new browser for Auth
-2025-08-19 20:13:40,796 [INFO] WebApp:463 - Apply proxy settings
-2025-08-19 20:13:40,796 [INFO] WebApp:548 - Chromium requires no authentication
-2025-08-19 20:13:40,800 [INFO] WebApp:491 - Direct internet connection detected
-2025-08-19 20:13:40,811 [INFO] WebApp:900 - Register for checkConnection events
-2025-08-19 20:13:40,811 [INFO] WebApp:463 - Apply proxy settings
-2025-08-19 20:13:40,811 [INFO] WebApp:548 - Chromium requires no authentication
-2025-08-19 20:13:40,811 [INFO] WebApp:491 - Direct internet connection detected
-2025-08-19 20:13:40,883 [INFO] WebApp:225 - Starting web application
-2025-08-19 20:13:40,883 [INFO] WebApp:593 - Web application path used /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient1/index.html
-2025-08-19 20:13:41,044 [INFO] WebApp:191 - Connection restablished
-2025-08-19 20:13:42,390 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENVWB1.1.4.0
-2025-08-19 20:13:42,395 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-ASTRA1.2.0.2
-2025-08-19 20:13:42,398 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SMBUS.2.1.0
-2025-08-19 20:13:42,400 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST60.1.0.0
-2025-08-19 20:13:42,413 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F7.1.1.0
-2025-08-19 20:13:42,434 [WARN] PackLoader:240 - Cannot read IP mode file for Infineon.AIROC-Wi-Fi-Bluetooth-STM32.1.7.1
-2025-08-19 20:13:42,450 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7.3.4.0
-2025-08-19 20:13:42,458 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DISPLAY.3.0.0
-2025-08-19 20:13:42,478 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC10.1.0.0
-2025-08-19 20:13:42,485 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.0.0
-2025-08-19 20:13:42,489 [WARN] PackLoader:240 - Cannot read IP mode file for emotas.I-CUBE-CANOPEN.1.3.0
-2025-08-19 20:13:42,492 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:13:42,500 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:13:42,500 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:13:42,500 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:13:42,504 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.1.0
-2025-08-19 20:13:42,507 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-SMARTAG2.1.2.0
-2025-08-19 20:13:42,510 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-FLIGHT1.5.1.0
-2025-08-19 20:13:42,514 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:13:42,514 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:13:42,515 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:13:42,515 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:13:42,515 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:13:42,517 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WL.2.0.0
-2025-08-19 20:13:42,520 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENV1.5.0.0
-2025-08-19 20:13:42,524 [WARN] PackLoader:240 - Cannot read IP mode file for WES.I-CUBE-Cesium.1.3.0
-2025-08-19 20:13:42,527 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE2.3.3.0
-2025-08-19 20:13:42,530 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC9.1.0.0
-2025-08-19 20:13:42,532 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSL.5.8.0
-2025-08-19 20:13:42,534 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE1.7.1.0
-2025-08-19 20:13:42,536 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfMQTT.1.19.2
-2025-08-19 20:13:42,539 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-EEPRMA1.5.2.0
-2025-08-19 20:13:42,542 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.1.0
-2025-08-19 20:13:42,548 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G0.1.1.0
-2025-08-19 20:13:42,551 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SAFEA1.1.2.2
-2025-08-19 20:13:42,555 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC4.3.0.0
-2025-08-19 20:13:42,560 [WARN] PackLoader:240 - Cannot read IP mode file for EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1
-2025-08-19 20:13:42,564 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-WB05N.2.0.0
-2025-08-19 20:13:42,567 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfTPM.3.8.0
-2025-08-19 20:13:42,570 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TCPP.4.2.0
-2025-08-19 20:13:42,573 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-SIGFOX1.3.2.0
-2025-08-19 20:13:42,576 [WARN] PackLoader:240 - Cannot read IP mode file for ITTIA_DB.I-CUBE-ITTIADB.8.9.0
-2025-08-19 20:13:42,579 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST67W61.1.0.0
-2025-08-19 20:13:42,581 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.2.0
-2025-08-19 20:13:42,595 [WARN] PackLoader:240 - Cannot read IP mode file for SEGGER.I-CUBE-embOS.1.3.1
-2025-08-19 20:13:42,612 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0
-2025-08-19 20:13:42,631 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-MEMS1.11.3.0
-2025-08-19 20:13:42,691 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-PM33A1.1.0.0
-2025-08-19 20:13:42,698 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F4.1.1.0
-2025-08-19 20:13:42,700 [WARN] PackLoader:240 - Cannot read IP mode file for Avnet-IotConnect.X-CUBE-IoTC-DA16k-PMOD.1.0.0
-2025-08-19 20:13:42,702 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ISPU.2.1.0
-2025-08-19 20:13:42,704 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC12.1.0.0
-2025-08-19 20:13:42,712 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L5.2.0.0
-2025-08-19 20:13:42,717 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC6.3.1.0
-2025-08-19 20:13:42,721 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-FREERTOS.1.3.1
-2025-08-19 20:13:42,724 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STAIOTCFT.1.0.0
-2025-08-19 20:13:42,727 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DPower.1.3.0
-2025-08-19 20:13:42,736 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:13:42,737 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L4.2.0.0
-2025-08-19 20:13:42,737 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:13:42,738 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:13:42,738 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:13:42,742 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SFXS2LP1.4.0.0
-2025-08-19 20:13:42,748 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.1.0
-2025-08-19 20:13:42,756 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:13:42,757 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:13:42,758 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WB.2.0.0
-2025-08-19 20:13:42,758 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:13:42,758 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:13:42,758 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:13:42,759 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:13:42,759 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:13:42,762 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-GNSS1.7.0.1
-2025-08-19 20:13:42,764 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOUCHGFX.4.25.0
-2025-08-19 20:13:42,768 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.0.0
-2025-08-19 20:13:42,774 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SUBG2.5.0.0
-2025-08-19 20:13:42,786 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7RS.1.1.0
-2025-08-19 20:13:42,789 [WARN] PackLoader:240 - Cannot read IP mode file for Cesanta.I-CUBE-Mongoose.7.13.0
-2025-08-19 20:13:42,799 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G4.2.0.0
-2025-08-19 20:13:42,803 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSH.1.4.20
-2025-08-19 20:13:42,806 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC7.2.0.0
-2025-08-19 20:13:42,813 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-IPS.3.1.0
-2025-08-19 20:13:42,823 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALS.1.0.2
-2025-08-19 20:13:42,827 [WARN] PackLoader:240 - Cannot read IP mode file for portGmbH.I-Cube-SoM-uGOAL.1.1.0
-2025-08-19 20:13:42,845 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOF1.3.4.3
-2025-08-19 20:13:42,855 [INFO] ThirdParty:978 - Integrity check success = true
-2025-08-19 20:13:42,855 [INFO] IntegrityCheckThread:100 - exiting critical section [integrity check]
-2025-08-19 20:13:42,855 [INFO] IntegrityCheckThread:103 - End integrity checks thread
-2025-08-19 20:15:13,625 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT]
-2025-08-19 20:15:28,595 [INFO] Activator:176 -
-
-
-2025-08-19 20:15:28,596 [INFO] Activator:177 - !SESSION log4j initialized
-2025-08-19 20:15:30,938 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT]
-2025-08-19 20:15:31,220 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
-2025-08-19 20:15:31,231 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
-2025-08-19 20:15:31,231 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
-2025-08-19 20:15:31,232 [WARN] ApiDb:259 - Overriding images path with different value: => /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
-2025-08-19 20:15:31,234 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:15:31,234 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:15:31,235 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
-2025-08-19 20:15:31,300 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
-2025-08-19 20:15:31,334 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
-2025-08-19 20:15:31,334 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
-2025-08-19 20:15:31,334 [INFO] ApiDb:261 - Set plugin images path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
-2025-08-19 20:15:31,334 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:15:31,334 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:15:31,334 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:15:31,334 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:15:31,334 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:15:31,334 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:15:31,334 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
-2025-08-19 20:15:31,369 [INFO] MainPanel:274 - HeapMemory: 268435456
-2025-08-19 20:15:31,434 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
-2025-08-19 20:15:31,435 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
-2025-08-19 20:15:31,435 [INFO] ApiDb:261 - Set plugin images path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
-2025-08-19 20:15:31,435 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:15:31,435 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:15:31,435 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:15:31,435 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:15:31,435 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:15:31,435 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:15:31,435 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
-2025-08-19 20:15:31,444 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
-2025-08-19 20:15:31,445 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ]
-2025-08-19 20:15:31,445 [INFO] PluginManage:310 - Check plugin analytics
-2025-08-19 20:15:31,523 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses:
-2025-08-19 20:15:31,523 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses:
-2025-08-19 20:15:31,523 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses: FW.F4.1.28.0
-2025-08-19 20:15:31,525 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1)
-2025-08-19 20:15:31,525 [INFO] PluginManage:310 - Check plugin cadmodel
-2025-08-19 20:15:31,532 [INFO] CADModel:105 - Init CAD model plugin
-2025-08-19 20:15:31,533 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5)
-2025-08-19 20:15:31,533 [INFO] PluginManage:310 - Check plugin clock
-2025-08-19 20:15:31,537 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2)
-2025-08-19 20:15:31,537 [INFO] PluginManage:310 - Check plugin ddr
-2025-08-19 20:15:31,538 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6)
-2025-08-19 20:15:31,538 [INFO] PluginManage:310 - Check plugin filemanager
-2025-08-19 20:15:31,614 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10)
-2025-08-19 20:15:31,614 [INFO] PluginManage:310 - Check plugin ipmanager
-2025-08-19 20:15:31,616 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5)
-2025-08-19 20:15:31,616 [INFO] PluginManage:310 - Check plugin lpbam
-2025-08-19 20:15:31,620 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0)
-2025-08-19 20:15:31,620 [INFO] PluginManage:310 - Check plugin memorymap
-2025-08-19 20:15:31,626 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4)
-2025-08-19 20:15:31,626 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration
-2025-08-19 20:15:31,630 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1)
-2025-08-19 20:15:31,630 [INFO] PluginManage:310 - Check plugin pinoutconfig
-2025-08-19 20:15:31,670 [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.
-2025-08-19 20:15:31,736 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0)
-2025-08-19 20:15:31,737 [INFO] PluginManage:310 - Check plugin power
-2025-08-19 20:15:31,742 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4)
-2025-08-19 20:15:31,742 [INFO] PluginManage:310 - Check plugin projectmanager
-2025-08-19 20:15:31,751 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:4)
-2025-08-19 20:15:31,752 [INFO] PluginManage:310 - Check plugin rif
-2025-08-19 20:15:31,757 [INFO] PluginManage:359 - Loaded plugin rif (category:base,tabindex:3)
-2025-08-19 20:15:31,757 [INFO] PluginManage:310 - Check plugin thirdparty
-2025-08-19 20:15:31,826 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1)
-2025-08-19 20:15:31,826 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check]
-2025-08-19 20:15:31,826 [INFO] PluginManage:310 - Check plugin tools
-2025-08-19 20:15:31,826 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check]
-2025-08-19 20:15:31,827 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15]
-2025-08-19 20:15:31,828 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7)
-2025-08-19 20:15:31,828 [INFO] PluginManage:310 - Check plugin tutovideos
-2025-08-19 20:15:31,932 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1)
-2025-08-19 20:15:31,932 [INFO] PluginManage:310 - Check plugin updater
-2025-08-19 20:15:31,947 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12)
-2025-08-19 20:15:31,947 [INFO] PluginManage:310 - Check plugin userauth
-2025-08-19 20:15:31,949 [INFO] UserAuth:118 - Init User Auth plugin
-2025-08-19 20:15:31,950 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14)
-2025-08-19 20:15:31,950 [INFO] PluginManage:283 - PluginManage : Loaded plugins [18]
-2025-08-19 20:15:32,052 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration)
-2025-08-19 20:15:32,090 [INFO] CADModel:165 - CPN selected for project level
-2025-08-19 20:15:32,090 [INFO] CADModel:114 - Register for checkConnection events
-2025-08-19 20:15:32,099 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,100 [INFO] PluginManager:220 - loadIPPluginJar : add adc
-2025-08-19 20:15:32,100 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,101 [INFO] PluginManager:220 - loadIPPluginJar : add aes
-2025-08-19 20:15:32,102 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,102 [INFO] PluginManager:220 - loadIPPluginJar : add can
-2025-08-19 20:15:32,102 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,102 [INFO] PluginManager:220 - loadIPPluginJar : add comp
-2025-08-19 20:15:32,103 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,103 [INFO] PluginManager:220 - loadIPPluginJar : add cryp
-2025-08-19 20:15:32,104 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,104 [INFO] PluginManager:220 - loadIPPluginJar : add ddr_ctrl_phy
-2025-08-19 20:15:32,105 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,105 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm
-2025-08-19 20:15:32,108 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,108 [INFO] PluginManager:220 - loadIPPluginJar : add dma
-2025-08-19 20:15:32,109 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,109 [INFO] PluginManager:220 - loadIPPluginJar : add dma3
-2025-08-19 20:15:32,111 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,111 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager
-2025-08-19 20:15:32,111 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,111 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs
-2025-08-19 20:15:32,114 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,114 [INFO] PluginManager:220 - loadIPPluginJar : add fmc
-2025-08-19 20:15:32,117 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,117 [INFO] PluginManager:220 - loadIPPluginJar : add freertos
-2025-08-19 20:15:32,118 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,118 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin
-2025-08-19 20:15:32,118 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,118 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu
-2025-08-19 20:15:32,121 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,121 [INFO] PluginManager:220 - loadIPPluginJar : add gic
-2025-08-19 20:15:32,123 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,123 [INFO] PluginManager:220 - loadIPPluginJar : add gpio
-2025-08-19 20:15:32,124 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,124 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc
-2025-08-19 20:15:32,125 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,125 [INFO] PluginManager:220 - loadIPPluginJar : add hash
-2025-08-19 20:15:32,126 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,126 [INFO] PluginManager:220 - loadIPPluginJar : add i2c
-2025-08-19 20:15:32,126 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,126 [INFO] PluginManager:220 - loadIPPluginJar : add i2s
-2025-08-19 20:15:32,128 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,128 [INFO] PluginManager:220 - loadIPPluginJar : add i3c
-2025-08-19 20:15:32,130 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,130 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr
-2025-08-19 20:15:32,133 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,134 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist
-2025-08-19 20:15:32,135 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,135 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan
-2025-08-19 20:15:32,135 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,135 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc
-2025-08-19 20:15:32,138 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,138 [INFO] PluginManager:220 - loadIPPluginJar : add mdma
-2025-08-19 20:15:32,140 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,140 [INFO] PluginManager:220 - loadIPPluginJar : add nvic
-2025-08-19 20:15:32,141 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,141 [INFO] PluginManager:220 - loadIPPluginJar : add opamp
-2025-08-19 20:15:32,142 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,142 [INFO] PluginManager:220 - loadIPPluginJar : add openamp
-2025-08-19 20:15:32,143 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,143 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm
-2025-08-19 20:15:32,146 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,147 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings
-2025-08-19 20:15:32,148 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,148 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi
-2025-08-19 20:15:32,149 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,149 [INFO] PluginManager:220 - loadIPPluginJar : add radio
-2025-08-19 20:15:32,150 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,150 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility
-2025-08-19 20:15:32,152 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,152 [INFO] PluginManager:220 - loadIPPluginJar : add sai
-2025-08-19 20:15:32,152 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,152 [INFO] PluginManager:220 - loadIPPluginJar : add spi
-2025-08-19 20:15:32,156 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,156 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan
-2025-08-19 20:15:32,156 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,157 [INFO] PluginManager:220 - loadIPPluginJar : add tim
-2025-08-19 20:15:32,158 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,158 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing
-2025-08-19 20:15:32,159 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,159 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb
-2025-08-19 20:15:32,160 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,160 [INFO] PluginManager:220 - loadIPPluginJar : add ts
-2025-08-19 20:15:32,161 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,161 [INFO] PluginManager:220 - loadIPPluginJar : add tsc
-2025-08-19 20:15:32,162 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,162 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd
-2025-08-19 20:15:32,163 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,163 [INFO] PluginManager:220 - loadIPPluginJar : add usart
-2025-08-19 20:15:32,165 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:15:32,165 [INFO] PluginManager:220 - loadIPPluginJar : add usbx
-2025-08-19 20:15:32,253 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:15:32,270 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
-2025-08-19 20:15:32,275 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
-2025-08-19 20:15:32,280 [INFO] CADModel:165 - CPN selected for project level
-2025-08-19 20:15:32,280 [INFO] CADModel:114 - Register for checkConnection events
-2025-08-19 20:15:32,280 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:15:32,280 [ERROR] CADModel:125 - Updater not yet initialized, retry later
-2025-08-19 20:15:32,355 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:15:32,356 [INFO] CADModel:165 - CPN selected for project level
-2025-08-19 20:15:32,356 [INFO] CADModel:114 - Register for checkConnection events
-2025-08-19 20:15:32,356 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:15:32,356 [ERROR] CADModel:125 - Updater not yet initialized, retry later
-2025-08-19 20:15:32,358 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:15:32,409 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:15:32,411 [INFO] DbMcusAds:53 - JSON generation date=Tue Jul 08 01:14:23 PDT 2025 (1751962463582)
-2025-08-19 20:15:32,411 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:15:32,429 [WARN] DetailPanel:346 - Failed to get advertising image, set to default
-2025-08-19 20:15:32,469 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:15:32,471 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:15:32,471 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:15:32,471 [WARN] DetailPanel:346 - Failed to get advertising image, set to default
-2025-08-19 20:15:32,471 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:15:32,486 [ERROR] Updater:1198 - MainUpdater not yet initialized. External WinMGr cannot be set.
-2025-08-19 20:15:32,486 [INFO] Updater:1134 - Updater Version found : 6.15.0
-2025-08-19 20:15:32,496 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
-2025-08-19 20:15:32,509 [INFO] MainUpdater:525 - Copy updater definitions from MX database
-2025-08-19 20:15:32,676 [INFO] MainUpdater:2872 - connection check result : 10
-2025-08-19 20:15:32,676 [INFO] MainUpdater:3604 - Updater definition file requires update
-2025-08-19 20:15:32,677 [INFO] MainUpdater:289 - Updater Check For Update Now.
-2025-08-19 20:15:32,677 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150
-2025-08-19 20:15:32,682 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated)
-2025-08-19 20:15:32,682 [INFO] UserAuth:171 - activating auth plugin
-2025-08-19 20:15:32,683 [INFO] UserAuth:487 - Internet connection configuration mode: 1
-2025-08-19 20:15:32,691 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder
-2025-08-19 20:15:32,702 [INFO] ServerAccessManage:452 - Complete download http(s) 200
-2025-08-19 20:15:32,703 [INFO] ServerAccessManage:509 - Download File updaters.zip
-2025-08-19 20:15:32,782 [INFO] FileExtend:248 - Unzip File : updaters.zip
-2025-08-19 20:15:32,783 [INFO] FileExtend:263 - Standard Zip Deflate
-2025-08-19 20:15:32,900 [INFO] ServerAccessManage:452 - Complete download http(s) 200
-2025-08-19 20:15:32,901 [INFO] ServerAccessManage:509 - Download File PacksControlFlags.xml
-2025-08-19 20:15:32,943 [INFO] ServerAccessManage:452 - Complete download http(s) 200
-2025-08-19 20:15:32,943 [INFO] ServerAccessManage:509 - Download File cubemx.pidx
-2025-08-19 20:15:32,992 [INFO] LoadServerUpdatesThread:375 - End of LoadServerUpdate Thread
-2025-08-19 20:15:33,097 [INFO] WebApp:169 - Instantiating new browser for Auth
-2025-08-19 20:15:33,140 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread
-2025-08-19 20:15:33,407 [INFO] WebApp:463 - Apply proxy settings
-2025-08-19 20:15:33,408 [INFO] WebApp:548 - Chromium requires no authentication
-2025-08-19 20:15:33,412 [INFO] WebApp:491 - Direct internet connection detected
-2025-08-19 20:15:33,422 [INFO] WebApp:900 - Register for checkConnection events
-2025-08-19 20:15:33,422 [INFO] WebApp:463 - Apply proxy settings
-2025-08-19 20:15:33,422 [INFO] WebApp:548 - Chromium requires no authentication
-2025-08-19 20:15:33,423 [INFO] WebApp:491 - Direct internet connection detected
-2025-08-19 20:15:33,486 [INFO] WebApp:225 - Starting web application
-2025-08-19 20:15:33,486 [INFO] WebApp:593 - Web application path used /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient1/index.html
-2025-08-19 20:15:33,656 [INFO] WebApp:191 - Connection restablished
-2025-08-19 20:15:34,896 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENVWB1.1.4.0
-2025-08-19 20:15:34,900 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-ASTRA1.2.0.2
-2025-08-19 20:15:34,904 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SMBUS.2.1.0
-2025-08-19 20:15:34,906 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST60.1.0.0
-2025-08-19 20:15:34,921 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F7.1.1.0
-2025-08-19 20:15:34,938 [WARN] PackLoader:240 - Cannot read IP mode file for Infineon.AIROC-Wi-Fi-Bluetooth-STM32.1.7.1
-2025-08-19 20:15:34,952 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7.3.4.0
-2025-08-19 20:15:34,957 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DISPLAY.3.0.0
-2025-08-19 20:15:34,964 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC10.1.0.0
-2025-08-19 20:15:34,970 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.0.0
-2025-08-19 20:15:34,974 [WARN] PackLoader:240 - Cannot read IP mode file for emotas.I-CUBE-CANOPEN.1.3.0
-2025-08-19 20:15:34,976 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:15:34,982 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:15:34,982 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:15:34,982 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:15:34,985 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.1.0
-2025-08-19 20:15:34,988 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-SMARTAG2.1.2.0
-2025-08-19 20:15:34,990 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-FLIGHT1.5.1.0
-2025-08-19 20:15:34,993 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:15:34,994 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:15:34,994 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:15:34,994 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:15:34,995 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:15:34,997 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WL.2.0.0
-2025-08-19 20:15:34,999 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENV1.5.0.0
-2025-08-19 20:15:35,004 [WARN] PackLoader:240 - Cannot read IP mode file for WES.I-CUBE-Cesium.1.3.0
-2025-08-19 20:15:35,006 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE2.3.3.0
-2025-08-19 20:15:35,008 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC9.1.0.0
-2025-08-19 20:15:35,011 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSL.5.8.0
-2025-08-19 20:15:35,013 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE1.7.1.0
-2025-08-19 20:15:35,015 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfMQTT.1.19.2
-2025-08-19 20:15:35,018 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-EEPRMA1.5.2.0
-2025-08-19 20:15:35,021 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.1.0
-2025-08-19 20:15:35,026 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G0.1.1.0
-2025-08-19 20:15:35,030 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SAFEA1.1.2.2
-2025-08-19 20:15:35,033 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC4.3.0.0
-2025-08-19 20:15:35,037 [WARN] PackLoader:240 - Cannot read IP mode file for EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1
-2025-08-19 20:15:35,039 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-WB05N.2.0.0
-2025-08-19 20:15:35,041 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfTPM.3.8.0
-2025-08-19 20:15:35,043 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TCPP.4.2.0
-2025-08-19 20:15:35,046 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-SIGFOX1.3.2.0
-2025-08-19 20:15:35,048 [WARN] PackLoader:240 - Cannot read IP mode file for ITTIA_DB.I-CUBE-ITTIADB.8.9.0
-2025-08-19 20:15:35,052 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST67W61.1.0.0
-2025-08-19 20:15:35,054 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.2.0
-2025-08-19 20:15:35,064 [WARN] PackLoader:240 - Cannot read IP mode file for SEGGER.I-CUBE-embOS.1.3.1
-2025-08-19 20:15:35,082 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0
-2025-08-19 20:15:35,101 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-MEMS1.11.3.0
-2025-08-19 20:15:35,158 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-PM33A1.1.0.0
-2025-08-19 20:15:35,165 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F4.1.1.0
-2025-08-19 20:15:35,169 [WARN] PackLoader:240 - Cannot read IP mode file for Avnet-IotConnect.X-CUBE-IoTC-DA16k-PMOD.1.0.0
-2025-08-19 20:15:35,171 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ISPU.2.1.0
-2025-08-19 20:15:35,174 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC12.1.0.0
-2025-08-19 20:15:35,180 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L5.2.0.0
-2025-08-19 20:15:35,186 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC6.3.1.0
-2025-08-19 20:15:35,189 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-FREERTOS.1.3.1
-2025-08-19 20:15:35,191 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STAIOTCFT.1.0.0
-2025-08-19 20:15:35,194 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DPower.1.3.0
-2025-08-19 20:15:35,206 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:15:35,206 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L4.2.0.0
-2025-08-19 20:15:35,207 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:15:35,207 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:15:35,207 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:15:35,210 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SFXS2LP1.4.0.0
-2025-08-19 20:15:35,214 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.1.0
-2025-08-19 20:15:35,221 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:15:35,221 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:15:35,222 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WB.2.0.0
-2025-08-19 20:15:35,222 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:15:35,222 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:15:35,222 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:15:35,222 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:15:35,222 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:15:35,225 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-GNSS1.7.0.1
-2025-08-19 20:15:35,227 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOUCHGFX.4.25.0
-2025-08-19 20:15:35,229 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.0.0
-2025-08-19 20:15:35,235 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SUBG2.5.0.0
-2025-08-19 20:15:35,242 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7RS.1.1.0
-2025-08-19 20:15:35,245 [WARN] PackLoader:240 - Cannot read IP mode file for Cesanta.I-CUBE-Mongoose.7.13.0
-2025-08-19 20:15:35,250 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G4.2.0.0
-2025-08-19 20:15:35,253 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSH.1.4.20
-2025-08-19 20:15:35,254 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC7.2.0.0
-2025-08-19 20:15:35,258 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-IPS.3.1.0
-2025-08-19 20:15:35,262 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALS.1.0.2
-2025-08-19 20:15:35,265 [WARN] PackLoader:240 - Cannot read IP mode file for portGmbH.I-Cube-SoM-uGOAL.1.1.0
-2025-08-19 20:15:35,270 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOF1.3.4.3
-2025-08-19 20:15:35,275 [INFO] ThirdParty:978 - Integrity check success = true
-2025-08-19 20:15:35,275 [INFO] IntegrityCheckThread:100 - exiting critical section [integrity check]
-2025-08-19 20:15:35,275 [INFO] IntegrityCheckThread:103 - End integrity checks thread
-2025-08-19 20:17:16,993 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT]
-2025-08-19 20:17:21,004 [INFO] Activator:176 -
-
-
-2025-08-19 20:17:21,007 [INFO] Activator:177 - !SESSION log4j initialized
-2025-08-19 20:17:23,436 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT]
-2025-08-19 20:17:23,685 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
-2025-08-19 20:17:23,695 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
-2025-08-19 20:17:23,695 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
-2025-08-19 20:17:23,695 [WARN] ApiDb:259 - Overriding images path with different value: => /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
-2025-08-19 20:17:23,697 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:17:23,697 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:17:23,698 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
-2025-08-19 20:17:23,758 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
-2025-08-19 20:17:23,792 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
-2025-08-19 20:17:23,793 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
-2025-08-19 20:17:23,793 [INFO] ApiDb:261 - Set plugin images path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
-2025-08-19 20:17:23,793 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:17:23,793 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:17:23,793 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:17:23,793 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:17:23,793 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:17:23,793 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:17:23,793 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
-2025-08-19 20:17:23,830 [INFO] MainPanel:274 - HeapMemory: 268435456
-2025-08-19 20:17:23,891 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
-2025-08-19 20:17:23,891 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
-2025-08-19 20:17:23,891 [INFO] ApiDb:261 - Set plugin images path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
-2025-08-19 20:17:23,891 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:17:23,891 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:17:23,891 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:17:23,891 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:17:23,891 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:17:23,891 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:17:23,892 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
-2025-08-19 20:17:23,900 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
-2025-08-19 20:17:23,901 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ]
-2025-08-19 20:17:23,902 [INFO] PluginManage:310 - Check plugin analytics
-2025-08-19 20:17:23,972 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses:
-2025-08-19 20:17:23,973 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses:
-2025-08-19 20:17:23,973 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses: FW.F4.1.28.0
-2025-08-19 20:17:23,974 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1)
-2025-08-19 20:17:23,974 [INFO] PluginManage:310 - Check plugin cadmodel
-2025-08-19 20:17:23,980 [INFO] CADModel:105 - Init CAD model plugin
-2025-08-19 20:17:23,980 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5)
-2025-08-19 20:17:23,980 [INFO] PluginManage:310 - Check plugin clock
-2025-08-19 20:17:23,985 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2)
-2025-08-19 20:17:23,985 [INFO] PluginManage:310 - Check plugin ddr
-2025-08-19 20:17:23,986 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6)
-2025-08-19 20:17:23,987 [INFO] PluginManage:310 - Check plugin filemanager
-2025-08-19 20:17:24,072 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10)
-2025-08-19 20:17:24,072 [INFO] PluginManage:310 - Check plugin ipmanager
-2025-08-19 20:17:24,076 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5)
-2025-08-19 20:17:24,076 [INFO] PluginManage:310 - Check plugin lpbam
-2025-08-19 20:17:24,082 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0)
-2025-08-19 20:17:24,082 [INFO] PluginManage:310 - Check plugin memorymap
-2025-08-19 20:17:24,088 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4)
-2025-08-19 20:17:24,088 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration
-2025-08-19 20:17:24,091 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1)
-2025-08-19 20:17:24,091 [INFO] PluginManage:310 - Check plugin pinoutconfig
-2025-08-19 20:17:24,132 [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.
-2025-08-19 20:17:24,197 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0)
-2025-08-19 20:17:24,197 [INFO] PluginManage:310 - Check plugin power
-2025-08-19 20:17:24,201 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4)
-2025-08-19 20:17:24,201 [INFO] PluginManage:310 - Check plugin projectmanager
-2025-08-19 20:17:24,211 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:4)
-2025-08-19 20:17:24,211 [INFO] PluginManage:310 - Check plugin rif
-2025-08-19 20:17:24,217 [INFO] PluginManage:359 - Loaded plugin rif (category:base,tabindex:3)
-2025-08-19 20:17:24,217 [INFO] PluginManage:310 - Check plugin thirdparty
-2025-08-19 20:17:24,276 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1)
-2025-08-19 20:17:24,276 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check]
-2025-08-19 20:17:24,276 [INFO] PluginManage:310 - Check plugin tools
-2025-08-19 20:17:24,276 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check]
-2025-08-19 20:17:24,276 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15]
-2025-08-19 20:17:24,277 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7)
-2025-08-19 20:17:24,278 [INFO] PluginManage:310 - Check plugin tutovideos
-2025-08-19 20:17:24,401 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1)
-2025-08-19 20:17:24,401 [INFO] PluginManage:310 - Check plugin updater
-2025-08-19 20:17:24,417 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12)
-2025-08-19 20:17:24,417 [INFO] PluginManage:310 - Check plugin userauth
-2025-08-19 20:17:24,419 [INFO] UserAuth:118 - Init User Auth plugin
-2025-08-19 20:17:24,420 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14)
-2025-08-19 20:17:24,420 [INFO] PluginManage:283 - PluginManage : Loaded plugins [18]
-2025-08-19 20:17:24,516 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration)
-2025-08-19 20:17:24,549 [INFO] CADModel:165 - CPN selected for project level
-2025-08-19 20:17:24,549 [INFO] CADModel:114 - Register for checkConnection events
-2025-08-19 20:17:24,558 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,558 [INFO] PluginManager:220 - loadIPPluginJar : add adc
-2025-08-19 20:17:24,559 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,559 [INFO] PluginManager:220 - loadIPPluginJar : add aes
-2025-08-19 20:17:24,560 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,560 [INFO] PluginManager:220 - loadIPPluginJar : add can
-2025-08-19 20:17:24,560 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,560 [INFO] PluginManager:220 - loadIPPluginJar : add comp
-2025-08-19 20:17:24,561 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,561 [INFO] PluginManager:220 - loadIPPluginJar : add cryp
-2025-08-19 20:17:24,562 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,562 [INFO] PluginManager:220 - loadIPPluginJar : add ddr_ctrl_phy
-2025-08-19 20:17:24,563 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,563 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm
-2025-08-19 20:17:24,565 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,565 [INFO] PluginManager:220 - loadIPPluginJar : add dma
-2025-08-19 20:17:24,566 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,566 [INFO] PluginManager:220 - loadIPPluginJar : add dma3
-2025-08-19 20:17:24,567 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,567 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager
-2025-08-19 20:17:24,567 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,567 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs
-2025-08-19 20:17:24,569 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,569 [INFO] PluginManager:220 - loadIPPluginJar : add fmc
-2025-08-19 20:17:24,572 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,572 [INFO] PluginManager:220 - loadIPPluginJar : add freertos
-2025-08-19 20:17:24,572 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,572 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin
-2025-08-19 20:17:24,573 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,573 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu
-2025-08-19 20:17:24,575 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,575 [INFO] PluginManager:220 - loadIPPluginJar : add gic
-2025-08-19 20:17:24,577 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,577 [INFO] PluginManager:220 - loadIPPluginJar : add gpio
-2025-08-19 20:17:24,579 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,579 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc
-2025-08-19 20:17:24,580 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,580 [INFO] PluginManager:220 - loadIPPluginJar : add hash
-2025-08-19 20:17:24,581 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,581 [INFO] PluginManager:220 - loadIPPluginJar : add i2c
-2025-08-19 20:17:24,582 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,582 [INFO] PluginManager:220 - loadIPPluginJar : add i2s
-2025-08-19 20:17:24,583 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,583 [INFO] PluginManager:220 - loadIPPluginJar : add i3c
-2025-08-19 20:17:24,585 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,585 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr
-2025-08-19 20:17:24,589 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,590 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist
-2025-08-19 20:17:24,592 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,592 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan
-2025-08-19 20:17:24,592 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,592 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc
-2025-08-19 20:17:24,597 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,597 [INFO] PluginManager:220 - loadIPPluginJar : add mdma
-2025-08-19 20:17:24,599 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,599 [INFO] PluginManager:220 - loadIPPluginJar : add nvic
-2025-08-19 20:17:24,601 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,601 [INFO] PluginManager:220 - loadIPPluginJar : add opamp
-2025-08-19 20:17:24,602 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,602 [INFO] PluginManager:220 - loadIPPluginJar : add openamp
-2025-08-19 20:17:24,603 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,603 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm
-2025-08-19 20:17:24,607 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,609 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings
-2025-08-19 20:17:24,610 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,610 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi
-2025-08-19 20:17:24,611 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,611 [INFO] PluginManager:220 - loadIPPluginJar : add radio
-2025-08-19 20:17:24,612 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,612 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility
-2025-08-19 20:17:24,613 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,613 [INFO] PluginManager:220 - loadIPPluginJar : add sai
-2025-08-19 20:17:24,614 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,614 [INFO] PluginManager:220 - loadIPPluginJar : add spi
-2025-08-19 20:17:24,618 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,618 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan
-2025-08-19 20:17:24,619 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,619 [INFO] PluginManager:220 - loadIPPluginJar : add tim
-2025-08-19 20:17:24,620 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,621 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing
-2025-08-19 20:17:24,622 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,622 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb
-2025-08-19 20:17:24,623 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,623 [INFO] PluginManager:220 - loadIPPluginJar : add ts
-2025-08-19 20:17:24,624 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,624 [INFO] PluginManager:220 - loadIPPluginJar : add tsc
-2025-08-19 20:17:24,624 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,624 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd
-2025-08-19 20:17:24,625 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,626 [INFO] PluginManager:220 - loadIPPluginJar : add usart
-2025-08-19 20:17:24,627 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:17:24,627 [INFO] PluginManager:220 - loadIPPluginJar : add usbx
-2025-08-19 20:17:24,719 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:17:24,735 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
-2025-08-19 20:17:24,741 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
-2025-08-19 20:17:24,745 [INFO] CADModel:165 - CPN selected for project level
-2025-08-19 20:17:24,745 [INFO] CADModel:114 - Register for checkConnection events
-2025-08-19 20:17:24,745 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:17:24,745 [ERROR] CADModel:125 - Updater not yet initialized, retry later
-2025-08-19 20:17:24,815 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:17:24,816 [INFO] CADModel:165 - CPN selected for project level
-2025-08-19 20:17:24,816 [INFO] CADModel:114 - Register for checkConnection events
-2025-08-19 20:17:24,816 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:17:24,816 [ERROR] CADModel:125 - Updater not yet initialized, retry later
-2025-08-19 20:17:24,818 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:17:24,859 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:17:24,861 [INFO] DbMcusAds:53 - JSON generation date=Tue Jul 08 01:14:23 PDT 2025 (1751962463582)
-2025-08-19 20:17:24,862 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:17:24,881 [WARN] DetailPanel:346 - Failed to get advertising image, set to default
-2025-08-19 20:17:24,920 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:17:24,921 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:17:24,921 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:17:24,921 [WARN] DetailPanel:346 - Failed to get advertising image, set to default
-2025-08-19 20:17:24,922 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:17:24,944 [ERROR] Updater:1198 - MainUpdater not yet initialized. External WinMGr cannot be set.
-2025-08-19 20:17:24,945 [INFO] Updater:1134 - Updater Version found : 6.15.0
-2025-08-19 20:17:24,955 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
-2025-08-19 20:17:25,301 [INFO] MainUpdater:2872 - connection check result : 10
-2025-08-19 20:17:25,302 [INFO] MainUpdater:289 - Updater Check For Update Now.
-2025-08-19 20:17:25,302 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150
-2025-08-19 20:17:25,304 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated)
-2025-08-19 20:17:25,305 [INFO] UserAuth:171 - activating auth plugin
-2025-08-19 20:17:25,307 [INFO] UserAuth:487 - Internet connection configuration mode: 1
-2025-08-19 20:17:25,318 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder
-2025-08-19 20:17:25,447 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread
-2025-08-19 20:17:25,646 [INFO] WebApp:169 - Instantiating new browser for Auth
-2025-08-19 20:17:25,964 [INFO] WebApp:463 - Apply proxy settings
-2025-08-19 20:17:25,964 [INFO] WebApp:548 - Chromium requires no authentication
-2025-08-19 20:17:25,968 [INFO] WebApp:491 - Direct internet connection detected
-2025-08-19 20:17:25,977 [INFO] WebApp:900 - Register for checkConnection events
-2025-08-19 20:17:25,978 [INFO] WebApp:463 - Apply proxy settings
-2025-08-19 20:17:25,978 [INFO] WebApp:548 - Chromium requires no authentication
-2025-08-19 20:17:25,978 [INFO] WebApp:491 - Direct internet connection detected
-2025-08-19 20:17:26,041 [INFO] WebApp:225 - Starting web application
-2025-08-19 20:17:26,041 [INFO] WebApp:593 - Web application path used /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient1/index.html
-2025-08-19 20:17:26,405 [INFO] WebApp:191 - Connection restablished
-2025-08-19 20:17:27,366 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENVWB1.1.4.0
-2025-08-19 20:17:27,369 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-ASTRA1.2.0.2
-2025-08-19 20:17:27,373 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SMBUS.2.1.0
-2025-08-19 20:17:27,375 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST60.1.0.0
-2025-08-19 20:17:27,388 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F7.1.1.0
-2025-08-19 20:17:27,402 [WARN] PackLoader:240 - Cannot read IP mode file for Infineon.AIROC-Wi-Fi-Bluetooth-STM32.1.7.1
-2025-08-19 20:17:27,417 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7.3.4.0
-2025-08-19 20:17:27,422 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DISPLAY.3.0.0
-2025-08-19 20:17:27,427 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC10.1.0.0
-2025-08-19 20:17:27,432 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.0.0
-2025-08-19 20:17:27,436 [WARN] PackLoader:240 - Cannot read IP mode file for emotas.I-CUBE-CANOPEN.1.3.0
-2025-08-19 20:17:27,437 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:17:27,444 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:17:27,444 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:17:27,444 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:17:27,447 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.1.0
-2025-08-19 20:17:27,450 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-SMARTAG2.1.2.0
-2025-08-19 20:17:27,451 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-FLIGHT1.5.1.0
-2025-08-19 20:17:27,455 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:17:27,455 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:17:27,456 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:17:27,456 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:17:27,456 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:17:27,457 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WL.2.0.0
-2025-08-19 20:17:27,459 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENV1.5.0.0
-2025-08-19 20:17:27,463 [WARN] PackLoader:240 - Cannot read IP mode file for WES.I-CUBE-Cesium.1.3.0
-2025-08-19 20:17:27,465 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE2.3.3.0
-2025-08-19 20:17:27,467 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC9.1.0.0
-2025-08-19 20:17:27,470 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSL.5.8.0
-2025-08-19 20:17:27,472 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE1.7.1.0
-2025-08-19 20:17:27,473 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfMQTT.1.19.2
-2025-08-19 20:17:27,475 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-EEPRMA1.5.2.0
-2025-08-19 20:17:27,477 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.1.0
-2025-08-19 20:17:27,486 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G0.1.1.0
-2025-08-19 20:17:27,490 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SAFEA1.1.2.2
-2025-08-19 20:17:27,492 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC4.3.0.0
-2025-08-19 20:17:27,495 [WARN] PackLoader:240 - Cannot read IP mode file for EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1
-2025-08-19 20:17:27,498 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-WB05N.2.0.0
-2025-08-19 20:17:27,500 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfTPM.3.8.0
-2025-08-19 20:17:27,502 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TCPP.4.2.0
-2025-08-19 20:17:27,505 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-SIGFOX1.3.2.0
-2025-08-19 20:17:27,507 [WARN] PackLoader:240 - Cannot read IP mode file for ITTIA_DB.I-CUBE-ITTIADB.8.9.0
-2025-08-19 20:17:27,509 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST67W61.1.0.0
-2025-08-19 20:17:27,512 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.2.0
-2025-08-19 20:17:27,522 [WARN] PackLoader:240 - Cannot read IP mode file for SEGGER.I-CUBE-embOS.1.3.1
-2025-08-19 20:17:27,537 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0
-2025-08-19 20:17:27,559 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-MEMS1.11.3.0
-2025-08-19 20:17:27,605 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-PM33A1.1.0.0
-2025-08-19 20:17:27,611 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F4.1.1.0
-2025-08-19 20:17:27,614 [WARN] PackLoader:240 - Cannot read IP mode file for Avnet-IotConnect.X-CUBE-IoTC-DA16k-PMOD.1.0.0
-2025-08-19 20:17:27,615 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ISPU.2.1.0
-2025-08-19 20:17:27,617 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC12.1.0.0
-2025-08-19 20:17:27,623 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L5.2.0.0
-2025-08-19 20:17:27,627 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC6.3.1.0
-2025-08-19 20:17:27,630 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-FREERTOS.1.3.1
-2025-08-19 20:17:27,633 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STAIOTCFT.1.0.0
-2025-08-19 20:17:27,636 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DPower.1.3.0
-2025-08-19 20:17:27,650 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:17:27,651 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L4.2.0.0
-2025-08-19 20:17:27,652 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:17:27,652 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:17:27,653 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:17:27,658 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SFXS2LP1.4.0.0
-2025-08-19 20:17:27,666 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.1.0
-2025-08-19 20:17:27,675 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:17:27,675 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:17:27,677 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WB.2.0.0
-2025-08-19 20:17:27,678 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:17:27,678 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:17:27,678 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:17:27,679 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:17:27,679 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:17:27,683 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-GNSS1.7.0.1
-2025-08-19 20:17:27,686 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOUCHGFX.4.25.0
-2025-08-19 20:17:27,702 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.0.0
-2025-08-19 20:17:27,710 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SUBG2.5.0.0
-2025-08-19 20:17:27,719 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7RS.1.1.0
-2025-08-19 20:17:27,723 [WARN] PackLoader:240 - Cannot read IP mode file for Cesanta.I-CUBE-Mongoose.7.13.0
-2025-08-19 20:17:27,729 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G4.2.0.0
-2025-08-19 20:17:27,731 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSH.1.4.20
-2025-08-19 20:17:27,733 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC7.2.0.0
-2025-08-19 20:17:27,738 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-IPS.3.1.0
-2025-08-19 20:17:27,745 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALS.1.0.2
-2025-08-19 20:17:27,747 [WARN] PackLoader:240 - Cannot read IP mode file for portGmbH.I-Cube-SoM-uGOAL.1.1.0
-2025-08-19 20:17:27,751 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOF1.3.4.3
-2025-08-19 20:17:27,756 [INFO] ThirdParty:978 - Integrity check success = true
-2025-08-19 20:17:27,757 [INFO] IntegrityCheckThread:100 - exiting critical section [integrity check]
-2025-08-19 20:17:27,757 [INFO] IntegrityCheckThread:103 - End integrity checks thread
-2025-08-19 20:18:38,509 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT]
-2025-08-19 20:18:48,742 [INFO] Activator:176 -
-
-
-2025-08-19 20:18:48,743 [INFO] Activator:177 - !SESSION log4j initialized
-2025-08-19 20:18:51,208 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT]
-2025-08-19 20:18:51,492 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
-2025-08-19 20:18:51,504 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
-2025-08-19 20:18:51,504 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
-2025-08-19 20:18:51,504 [WARN] ApiDb:259 - Overriding images path with different value: => /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
-2025-08-19 20:18:51,506 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:18:51,507 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:18:51,508 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
-2025-08-19 20:18:51,576 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
-2025-08-19 20:18:51,607 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
-2025-08-19 20:18:51,607 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
-2025-08-19 20:18:51,607 [INFO] ApiDb:261 - Set plugin images path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
-2025-08-19 20:18:51,607 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:18:51,607 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:18:51,607 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:18:51,607 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:18:51,607 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:18:51,607 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:18:51,607 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
-2025-08-19 20:18:51,638 [INFO] MainPanel:274 - HeapMemory: 268435456
-2025-08-19 20:18:51,699 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
-2025-08-19 20:18:51,699 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
-2025-08-19 20:18:51,700 [INFO] ApiDb:261 - Set plugin images path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
-2025-08-19 20:18:51,700 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:18:51,700 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:18:51,700 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:18:51,700 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
-2025-08-19 20:18:51,700 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:18:51,700 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
-2025-08-19 20:18:51,700 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
-2025-08-19 20:18:51,707 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
-2025-08-19 20:18:51,708 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ]
-2025-08-19 20:18:51,708 [INFO] PluginManage:310 - Check plugin analytics
-2025-08-19 20:18:51,795 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses:
-2025-08-19 20:18:51,795 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses:
-2025-08-19 20:18:51,795 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses: FW.F4.1.28.0
-2025-08-19 20:18:51,797 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1)
-2025-08-19 20:18:51,797 [INFO] PluginManage:310 - Check plugin cadmodel
-2025-08-19 20:18:51,799 [INFO] CADModel:105 - Init CAD model plugin
-2025-08-19 20:18:51,799 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5)
-2025-08-19 20:18:51,799 [INFO] PluginManage:310 - Check plugin clock
-2025-08-19 20:18:51,804 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2)
-2025-08-19 20:18:51,804 [INFO] PluginManage:310 - Check plugin ddr
-2025-08-19 20:18:51,805 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6)
-2025-08-19 20:18:51,805 [INFO] PluginManage:310 - Check plugin filemanager
-2025-08-19 20:18:51,889 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10)
-2025-08-19 20:18:51,889 [INFO] PluginManage:310 - Check plugin ipmanager
-2025-08-19 20:18:51,892 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5)
-2025-08-19 20:18:51,892 [INFO] PluginManage:310 - Check plugin lpbam
-2025-08-19 20:18:51,897 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0)
-2025-08-19 20:18:51,897 [INFO] PluginManage:310 - Check plugin memorymap
-2025-08-19 20:18:51,904 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4)
-2025-08-19 20:18:51,905 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration
-2025-08-19 20:18:51,909 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1)
-2025-08-19 20:18:51,909 [INFO] PluginManage:310 - Check plugin pinoutconfig
-2025-08-19 20:18:51,950 [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.
-2025-08-19 20:18:52,009 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0)
-2025-08-19 20:18:52,009 [INFO] PluginManage:310 - Check plugin power
-2025-08-19 20:18:52,014 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4)
-2025-08-19 20:18:52,014 [INFO] PluginManage:310 - Check plugin projectmanager
-2025-08-19 20:18:52,024 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:4)
-2025-08-19 20:18:52,024 [INFO] PluginManage:310 - Check plugin rif
-2025-08-19 20:18:52,030 [INFO] PluginManage:359 - Loaded plugin rif (category:base,tabindex:3)
-2025-08-19 20:18:52,030 [INFO] PluginManage:310 - Check plugin thirdparty
-2025-08-19 20:18:52,090 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1)
-2025-08-19 20:18:52,090 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check]
-2025-08-19 20:18:52,091 [INFO] PluginManage:310 - Check plugin tools
-2025-08-19 20:18:52,091 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check]
-2025-08-19 20:18:52,091 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15]
-2025-08-19 20:18:52,092 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7)
-2025-08-19 20:18:52,092 [INFO] PluginManage:310 - Check plugin tutovideos
-2025-08-19 20:18:52,204 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1)
-2025-08-19 20:18:52,204 [INFO] PluginManage:310 - Check plugin updater
-2025-08-19 20:18:52,216 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12)
-2025-08-19 20:18:52,216 [INFO] PluginManage:310 - Check plugin userauth
-2025-08-19 20:18:52,219 [INFO] UserAuth:118 - Init User Auth plugin
-2025-08-19 20:18:52,220 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14)
-2025-08-19 20:18:52,221 [INFO] PluginManage:283 - PluginManage : Loaded plugins [18]
-2025-08-19 20:18:52,320 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration)
-2025-08-19 20:18:52,358 [INFO] CADModel:165 - CPN selected for project level
-2025-08-19 20:18:52,358 [INFO] CADModel:114 - Register for checkConnection events
-2025-08-19 20:18:52,370 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,370 [INFO] PluginManager:220 - loadIPPluginJar : add adc
-2025-08-19 20:18:52,372 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,372 [INFO] PluginManager:220 - loadIPPluginJar : add aes
-2025-08-19 20:18:52,373 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,373 [INFO] PluginManager:220 - loadIPPluginJar : add can
-2025-08-19 20:18:52,374 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,374 [INFO] PluginManager:220 - loadIPPluginJar : add comp
-2025-08-19 20:18:52,375 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,375 [INFO] PluginManager:220 - loadIPPluginJar : add cryp
-2025-08-19 20:18:52,376 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,376 [INFO] PluginManager:220 - loadIPPluginJar : add ddr_ctrl_phy
-2025-08-19 20:18:52,377 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,377 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm
-2025-08-19 20:18:52,381 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,381 [INFO] PluginManager:220 - loadIPPluginJar : add dma
-2025-08-19 20:18:52,382 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,382 [INFO] PluginManager:220 - loadIPPluginJar : add dma3
-2025-08-19 20:18:52,383 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,383 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager
-2025-08-19 20:18:52,384 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,384 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs
-2025-08-19 20:18:52,387 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,387 [INFO] PluginManager:220 - loadIPPluginJar : add fmc
-2025-08-19 20:18:52,389 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,390 [INFO] PluginManager:220 - loadIPPluginJar : add freertos
-2025-08-19 20:18:52,390 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,390 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin
-2025-08-19 20:18:52,391 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,391 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu
-2025-08-19 20:18:52,394 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,394 [INFO] PluginManager:220 - loadIPPluginJar : add gic
-2025-08-19 20:18:52,396 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,396 [INFO] PluginManager:220 - loadIPPluginJar : add gpio
-2025-08-19 20:18:52,397 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,397 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc
-2025-08-19 20:18:52,398 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,398 [INFO] PluginManager:220 - loadIPPluginJar : add hash
-2025-08-19 20:18:52,399 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,399 [INFO] PluginManager:220 - loadIPPluginJar : add i2c
-2025-08-19 20:18:52,400 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,400 [INFO] PluginManager:220 - loadIPPluginJar : add i2s
-2025-08-19 20:18:52,401 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,401 [INFO] PluginManager:220 - loadIPPluginJar : add i3c
-2025-08-19 20:18:52,404 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,404 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr
-2025-08-19 20:18:52,408 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,408 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist
-2025-08-19 20:18:52,410 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,410 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan
-2025-08-19 20:18:52,411 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,411 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc
-2025-08-19 20:18:52,414 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,414 [INFO] PluginManager:220 - loadIPPluginJar : add mdma
-2025-08-19 20:18:52,416 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,416 [INFO] PluginManager:220 - loadIPPluginJar : add nvic
-2025-08-19 20:18:52,417 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,417 [INFO] PluginManager:220 - loadIPPluginJar : add opamp
-2025-08-19 20:18:52,418 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,418 [INFO] PluginManager:220 - loadIPPluginJar : add openamp
-2025-08-19 20:18:52,420 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,420 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm
-2025-08-19 20:18:52,422 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,424 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings
-2025-08-19 20:18:52,424 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,424 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi
-2025-08-19 20:18:52,425 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,425 [INFO] PluginManager:220 - loadIPPluginJar : add radio
-2025-08-19 20:18:52,426 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,426 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility
-2025-08-19 20:18:52,427 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,427 [INFO] PluginManager:220 - loadIPPluginJar : add sai
-2025-08-19 20:18:52,428 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,428 [INFO] PluginManager:220 - loadIPPluginJar : add spi
-2025-08-19 20:18:52,431 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,431 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan
-2025-08-19 20:18:52,432 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,432 [INFO] PluginManager:220 - loadIPPluginJar : add tim
-2025-08-19 20:18:52,433 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,433 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing
-2025-08-19 20:18:52,434 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,434 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb
-2025-08-19 20:18:52,436 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,436 [INFO] PluginManager:220 - loadIPPluginJar : add ts
-2025-08-19 20:18:52,436 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,437 [INFO] PluginManager:220 - loadIPPluginJar : add tsc
-2025-08-19 20:18:52,438 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,438 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd
-2025-08-19 20:18:52,439 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,439 [INFO] PluginManager:220 - loadIPPluginJar : add usart
-2025-08-19 20:18:52,440 [INFO] IPUIPlugin:80 - create IPUIPlugin
-2025-08-19 20:18:52,440 [INFO] PluginManager:220 - loadIPPluginJar : add usbx
-2025-08-19 20:18:52,528 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:18:52,546 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
-2025-08-19 20:18:52,556 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
-2025-08-19 20:18:52,561 [INFO] CADModel:165 - CPN selected for project level
-2025-08-19 20:18:52,561 [INFO] CADModel:114 - Register for checkConnection events
-2025-08-19 20:18:52,561 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:18:52,561 [ERROR] CADModel:125 - Updater not yet initialized, retry later
-2025-08-19 20:18:52,633 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:18:52,635 [INFO] CADModel:165 - CPN selected for project level
-2025-08-19 20:18:52,635 [INFO] CADModel:114 - Register for checkConnection events
-2025-08-19 20:18:52,635 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:18:52,635 [ERROR] CADModel:125 - Updater not yet initialized, retry later
-2025-08-19 20:18:52,638 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:18:52,699 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:18:52,701 [INFO] DbMcusAds:53 - JSON generation date=Tue Jul 08 01:14:23 PDT 2025 (1751962463582)
-2025-08-19 20:18:52,702 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:18:52,722 [WARN] DetailPanel:346 - Failed to get advertising image, set to default
-2025-08-19 20:18:52,762 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:18:52,763 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:18:52,764 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:18:52,764 [WARN] DetailPanel:346 - Failed to get advertising image, set to default
-2025-08-19 20:18:52,764 [FATAL] Updater:351 - Updater called before beeing initialized
-2025-08-19 20:18:52,780 [ERROR] Updater:1198 - MainUpdater not yet initialized. External WinMGr cannot be set.
-2025-08-19 20:18:52,781 [INFO] Updater:1134 - Updater Version found : 6.15.0
-2025-08-19 20:18:52,789 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
-2025-08-19 20:18:52,961 [INFO] MainUpdater:2872 - connection check result : 10
-2025-08-19 20:18:52,962 [INFO] MainUpdater:289 - Updater Check For Update Now.
-2025-08-19 20:18:52,962 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150
-2025-08-19 20:18:52,965 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated)
-2025-08-19 20:18:52,965 [INFO] UserAuth:171 - activating auth plugin
-2025-08-19 20:18:52,967 [INFO] UserAuth:487 - Internet connection configuration mode: 1
-2025-08-19 20:18:52,976 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder
-2025-08-19 20:18:53,107 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread
-2025-08-19 20:18:53,307 [INFO] WebApp:169 - Instantiating new browser for Auth
-2025-08-19 20:18:53,612 [INFO] WebApp:463 - Apply proxy settings
-2025-08-19 20:18:53,613 [INFO] WebApp:548 - Chromium requires no authentication
-2025-08-19 20:18:53,617 [INFO] WebApp:491 - Direct internet connection detected
-2025-08-19 20:18:53,626 [INFO] WebApp:900 - Register for checkConnection events
-2025-08-19 20:18:53,626 [INFO] WebApp:463 - Apply proxy settings
-2025-08-19 20:18:53,626 [INFO] WebApp:548 - Chromium requires no authentication
-2025-08-19 20:18:53,627 [INFO] WebApp:491 - Direct internet connection detected
-2025-08-19 20:18:53,684 [INFO] WebApp:225 - Starting web application
-2025-08-19 20:18:53,684 [INFO] WebApp:593 - Web application path used /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient1/index.html
-2025-08-19 20:18:53,835 [INFO] WebApp:191 - Connection restablished
-2025-08-19 20:18:55,161 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENVWB1.1.4.0
-2025-08-19 20:18:55,165 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-ASTRA1.2.0.2
-2025-08-19 20:18:55,169 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SMBUS.2.1.0
-2025-08-19 20:18:55,171 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST60.1.0.0
-2025-08-19 20:18:55,185 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F7.1.1.0
-2025-08-19 20:18:55,199 [WARN] PackLoader:240 - Cannot read IP mode file for Infineon.AIROC-Wi-Fi-Bluetooth-STM32.1.7.1
-2025-08-19 20:18:55,222 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7.3.4.0
-2025-08-19 20:18:55,230 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DISPLAY.3.0.0
-2025-08-19 20:18:55,238 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC10.1.0.0
-2025-08-19 20:18:55,246 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.0.0
-2025-08-19 20:18:55,251 [WARN] PackLoader:240 - Cannot read IP mode file for emotas.I-CUBE-CANOPEN.1.3.0
-2025-08-19 20:18:55,253 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:18:55,261 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:18:55,261 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:18:55,261 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
-2025-08-19 20:18:55,264 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.1.0
-2025-08-19 20:18:55,266 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-SMARTAG2.1.2.0
-2025-08-19 20:18:55,268 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-FLIGHT1.5.1.0
-2025-08-19 20:18:55,272 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:18:55,272 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:18:55,272 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:18:55,272 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:18:55,273 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
-2025-08-19 20:18:55,274 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WL.2.0.0
-2025-08-19 20:18:55,277 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENV1.5.0.0
-2025-08-19 20:18:55,280 [WARN] PackLoader:240 - Cannot read IP mode file for WES.I-CUBE-Cesium.1.3.0
-2025-08-19 20:18:55,282 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE2.3.3.0
-2025-08-19 20:18:55,284 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC9.1.0.0
-2025-08-19 20:18:55,287 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSL.5.8.0
-2025-08-19 20:18:55,289 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE1.7.1.0
-2025-08-19 20:18:55,292 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfMQTT.1.19.2
-2025-08-19 20:18:55,294 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-EEPRMA1.5.2.0
-2025-08-19 20:18:55,296 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.1.0
-2025-08-19 20:18:55,301 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G0.1.1.0
-2025-08-19 20:18:55,305 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SAFEA1.1.2.2
-2025-08-19 20:18:55,308 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC4.3.0.0
-2025-08-19 20:18:55,312 [WARN] PackLoader:240 - Cannot read IP mode file for EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1
-2025-08-19 20:18:55,314 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-WB05N.2.0.0
-2025-08-19 20:18:55,316 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfTPM.3.8.0
-2025-08-19 20:18:55,319 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TCPP.4.2.0
-2025-08-19 20:18:55,322 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-SIGFOX1.3.2.0
-2025-08-19 20:18:55,324 [WARN] PackLoader:240 - Cannot read IP mode file for ITTIA_DB.I-CUBE-ITTIADB.8.9.0
-2025-08-19 20:18:55,327 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST67W61.1.0.0
-2025-08-19 20:18:55,329 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.2.0
-2025-08-19 20:18:55,343 [WARN] PackLoader:240 - Cannot read IP mode file for SEGGER.I-CUBE-embOS.1.3.1
-2025-08-19 20:18:55,364 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0
-2025-08-19 20:18:55,398 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-MEMS1.11.3.0
-2025-08-19 20:18:55,467 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-PM33A1.1.0.0
-2025-08-19 20:18:55,473 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F4.1.1.0
-2025-08-19 20:18:55,475 [WARN] PackLoader:240 - Cannot read IP mode file for Avnet-IotConnect.X-CUBE-IoTC-DA16k-PMOD.1.0.0
-2025-08-19 20:18:55,477 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ISPU.2.1.0
-2025-08-19 20:18:55,480 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC12.1.0.0
-2025-08-19 20:18:55,486 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L5.2.0.0
-2025-08-19 20:18:55,490 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC6.3.1.0
-2025-08-19 20:18:55,493 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-FREERTOS.1.3.1
-2025-08-19 20:18:55,495 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STAIOTCFT.1.0.0
-2025-08-19 20:18:55,497 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DPower.1.3.0
-2025-08-19 20:18:55,503 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:18:55,504 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L4.2.0.0
-2025-08-19 20:18:55,504 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:18:55,504 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:18:55,504 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
-2025-08-19 20:18:55,508 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SFXS2LP1.4.0.0
-2025-08-19 20:18:55,513 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.1.0
-2025-08-19 20:18:55,518 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:18:55,518 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:18:55,519 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WB.2.0.0
-2025-08-19 20:18:55,519 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:18:55,519 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:18:55,520 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:18:55,520 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:18:55,520 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
-2025-08-19 20:18:55,522 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-GNSS1.7.0.1
-2025-08-19 20:18:55,525 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOUCHGFX.4.25.0
-2025-08-19 20:18:55,527 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.0.0
-2025-08-19 20:18:55,532 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SUBG2.5.0.0
-2025-08-19 20:18:55,539 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7RS.1.1.0
-2025-08-19 20:18:55,543 [WARN] PackLoader:240 - Cannot read IP mode file for Cesanta.I-CUBE-Mongoose.7.13.0
-2025-08-19 20:18:55,547 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G4.2.0.0
-2025-08-19 20:18:55,550 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSH.1.4.20
-2025-08-19 20:18:55,551 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC7.2.0.0
-2025-08-19 20:18:55,555 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-IPS.3.1.0
-2025-08-19 20:18:55,560 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALS.1.0.2
-2025-08-19 20:18:55,562 [WARN] PackLoader:240 - Cannot read IP mode file for portGmbH.I-Cube-SoM-uGOAL.1.1.0
-2025-08-19 20:18:55,570 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOF1.3.4.3
-2025-08-19 20:18:55,575 [INFO] ThirdParty:978 - Integrity check success = true
-2025-08-19 20:18:55,575 [INFO] IntegrityCheckThread:100 - exiting critical section [integrity check]
-2025-08-19 20:18:55,575 [INFO] IntegrityCheckThread:103 - End integrity checks thread
-2025-08-19 20:20:40,598 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT]
+2025-08-21 20:48:48,983 [INFO] Activator:177 - !SESSION log4j initialized
+2025-08-21 20:48:51,704 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT]
+2025-08-21 20:48:52,074 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
+2025-08-21 20:48:52,083 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
+2025-08-21 20:48:52,083 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
+2025-08-21 20:48:52,084 [WARN] ApiDb:259 - Overriding images path with different value: => /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
+2025-08-21 20:48:52,086 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
+2025-08-21 20:48:52,086 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
+2025-08-21 20:48:52,088 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
+2025-08-21 20:48:52,145 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
+2025-08-21 20:48:52,177 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
+2025-08-21 20:48:52,177 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
+2025-08-21 20:48:52,177 [INFO] ApiDb:261 - Set plugin images path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
+2025-08-21 20:48:52,177 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
+2025-08-21 20:48:52,178 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
+2025-08-21 20:48:52,178 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
+2025-08-21 20:48:52,178 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
+2025-08-21 20:48:52,178 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
+2025-08-21 20:48:52,178 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
+2025-08-21 20:48:52,178 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
+2025-08-21 20:48:52,212 [INFO] MainPanel:274 - HeapMemory: 268435456
+2025-08-21 20:48:52,278 [INFO] DbMcusXml:78 - Set database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/
+2025-08-21 20:48:52,278 [INFO] ApiDb:274 - Set plugin database path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/
+2025-08-21 20:48:52,279 [INFO] ApiDb:261 - Set plugin images path to: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/
+2025-08-21 20:48:52,279 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
+2025-08-21 20:48:52,279 [INFO] ApiDb:250 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
+2025-08-21 20:48:52,279 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
+2025-08-21 20:48:52,279 [INFO] DbMcusAds:125 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/
+2025-08-21 20:48:52,279 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
+2025-08-21 20:48:52,279 [WARN] DbFile:41 - Overriding database path with different value: /home/kymkim/.stmcufinder/plugins/mcufinder/ => /home/kymkim/.stmcufinder/plugins/mcufinder
+2025-08-21 20:48:52,279 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/kymkim/.stmcufinder/plugins/mcufinder//mcu/cs/
+2025-08-21 20:48:52,289 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
+2025-08-21 20:48:52,290 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ]
+2025-08-21 20:48:52,290 [INFO] PluginManage:310 - Check plugin analytics
+2025-08-21 20:48:52,368 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses:
+2025-08-21 20:48:52,368 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses:
+2025-08-21 20:48:52,368 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses: FW.F4.1.28.0
+2025-08-21 20:48:52,369 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1)
+2025-08-21 20:48:52,369 [INFO] PluginManage:310 - Check plugin cadmodel
+2025-08-21 20:48:52,371 [INFO] CADModel:105 - Init CAD model plugin
+2025-08-21 20:48:52,371 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5)
+2025-08-21 20:48:52,371 [INFO] PluginManage:310 - Check plugin clock
+2025-08-21 20:48:52,375 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2)
+2025-08-21 20:48:52,375 [INFO] PluginManage:310 - Check plugin ddr
+2025-08-21 20:48:52,376 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6)
+2025-08-21 20:48:52,376 [INFO] PluginManage:310 - Check plugin filemanager
+2025-08-21 20:48:52,458 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10)
+2025-08-21 20:48:52,459 [INFO] PluginManage:310 - Check plugin ipmanager
+2025-08-21 20:48:52,461 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5)
+2025-08-21 20:48:52,461 [INFO] PluginManage:310 - Check plugin lpbam
+2025-08-21 20:48:52,466 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0)
+2025-08-21 20:48:52,466 [INFO] PluginManage:310 - Check plugin memorymap
+2025-08-21 20:48:52,472 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4)
+2025-08-21 20:48:52,472 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration
+2025-08-21 20:48:52,476 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1)
+2025-08-21 20:48:52,476 [INFO] PluginManage:310 - Check plugin pinoutconfig
+2025-08-21 20:48:52,515 [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.
+2025-08-21 20:48:52,576 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0)
+2025-08-21 20:48:52,576 [INFO] PluginManage:310 - Check plugin power
+2025-08-21 20:48:52,579 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4)
+2025-08-21 20:48:52,579 [INFO] PluginManage:310 - Check plugin projectmanager
+2025-08-21 20:48:52,588 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:4)
+2025-08-21 20:48:52,588 [INFO] PluginManage:310 - Check plugin rif
+2025-08-21 20:48:52,593 [INFO] PluginManage:359 - Loaded plugin rif (category:base,tabindex:3)
+2025-08-21 20:48:52,593 [INFO] PluginManage:310 - Check plugin thirdparty
+2025-08-21 20:48:52,646 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1)
+2025-08-21 20:48:52,646 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check]
+2025-08-21 20:48:52,646 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check]
+2025-08-21 20:48:52,646 [INFO] PluginManage:310 - Check plugin tools
+2025-08-21 20:48:52,647 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15]
+2025-08-21 20:48:52,648 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7)
+2025-08-21 20:48:52,648 [INFO] PluginManage:310 - Check plugin tutovideos
+2025-08-21 20:48:52,753 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1)
+2025-08-21 20:48:52,753 [INFO] PluginManage:310 - Check plugin updater
+2025-08-21 20:48:52,766 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12)
+2025-08-21 20:48:52,766 [INFO] PluginManage:310 - Check plugin userauth
+2025-08-21 20:48:52,768 [INFO] UserAuth:118 - Init User Auth plugin
+2025-08-21 20:48:52,768 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14)
+2025-08-21 20:48:52,769 [INFO] PluginManage:283 - PluginManage : Loaded plugins [18]
+2025-08-21 20:48:52,856 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration)
+2025-08-21 20:48:52,896 [INFO] CADModel:165 - CPN selected for project level
+2025-08-21 20:48:52,896 [INFO] CADModel:114 - Register for checkConnection events
+2025-08-21 20:48:52,908 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,908 [INFO] PluginManager:220 - loadIPPluginJar : add adc
+2025-08-21 20:48:52,909 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,909 [INFO] PluginManager:220 - loadIPPluginJar : add aes
+2025-08-21 20:48:52,910 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,910 [INFO] PluginManager:220 - loadIPPluginJar : add can
+2025-08-21 20:48:52,911 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,911 [INFO] PluginManager:220 - loadIPPluginJar : add comp
+2025-08-21 20:48:52,911 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,911 [INFO] PluginManager:220 - loadIPPluginJar : add cryp
+2025-08-21 20:48:52,913 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,913 [INFO] PluginManager:220 - loadIPPluginJar : add ddr_ctrl_phy
+2025-08-21 20:48:52,914 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,914 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm
+2025-08-21 20:48:52,917 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,917 [INFO] PluginManager:220 - loadIPPluginJar : add dma
+2025-08-21 20:48:52,918 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,918 [INFO] PluginManager:220 - loadIPPluginJar : add dma3
+2025-08-21 20:48:52,919 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,919 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager
+2025-08-21 20:48:52,920 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,920 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs
+2025-08-21 20:48:52,922 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,922 [INFO] PluginManager:220 - loadIPPluginJar : add fmc
+2025-08-21 20:48:52,925 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,926 [INFO] PluginManager:220 - loadIPPluginJar : add freertos
+2025-08-21 20:48:52,927 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,927 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin
+2025-08-21 20:48:52,928 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,928 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu
+2025-08-21 20:48:52,930 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,931 [INFO] PluginManager:220 - loadIPPluginJar : add gic
+2025-08-21 20:48:52,933 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,933 [INFO] PluginManager:220 - loadIPPluginJar : add gpio
+2025-08-21 20:48:52,934 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,934 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc
+2025-08-21 20:48:52,936 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,936 [INFO] PluginManager:220 - loadIPPluginJar : add hash
+2025-08-21 20:48:52,937 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,937 [INFO] PluginManager:220 - loadIPPluginJar : add i2c
+2025-08-21 20:48:52,938 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,938 [INFO] PluginManager:220 - loadIPPluginJar : add i2s
+2025-08-21 20:48:52,939 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,939 [INFO] PluginManager:220 - loadIPPluginJar : add i3c
+2025-08-21 20:48:52,941 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,941 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr
+2025-08-21 20:48:52,945 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,945 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist
+2025-08-21 20:48:52,947 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,947 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan
+2025-08-21 20:48:52,948 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,948 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc
+2025-08-21 20:48:52,950 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,951 [INFO] PluginManager:220 - loadIPPluginJar : add mdma
+2025-08-21 20:48:52,952 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,953 [INFO] PluginManager:220 - loadIPPluginJar : add nvic
+2025-08-21 20:48:52,954 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,954 [INFO] PluginManager:220 - loadIPPluginJar : add opamp
+2025-08-21 20:48:52,955 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,955 [INFO] PluginManager:220 - loadIPPluginJar : add openamp
+2025-08-21 20:48:52,956 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,956 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm
+2025-08-21 20:48:52,959 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,960 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings
+2025-08-21 20:48:52,960 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,961 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi
+2025-08-21 20:48:52,961 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,962 [INFO] PluginManager:220 - loadIPPluginJar : add radio
+2025-08-21 20:48:52,963 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,963 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility
+2025-08-21 20:48:52,964 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,964 [INFO] PluginManager:220 - loadIPPluginJar : add sai
+2025-08-21 20:48:52,965 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,965 [INFO] PluginManager:220 - loadIPPluginJar : add spi
+2025-08-21 20:48:52,967 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,967 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan
+2025-08-21 20:48:52,968 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,968 [INFO] PluginManager:220 - loadIPPluginJar : add tim
+2025-08-21 20:48:52,970 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,970 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing
+2025-08-21 20:48:52,970 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,970 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb
+2025-08-21 20:48:52,971 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,971 [INFO] PluginManager:220 - loadIPPluginJar : add ts
+2025-08-21 20:48:52,971 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,972 [INFO] PluginManager:220 - loadIPPluginJar : add tsc
+2025-08-21 20:48:52,972 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,972 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd
+2025-08-21 20:48:52,973 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,973 [INFO] PluginManager:220 - loadIPPluginJar : add usart
+2025-08-21 20:48:52,975 [INFO] IPUIPlugin:80 - create IPUIPlugin
+2025-08-21 20:48:52,975 [INFO] PluginManager:220 - loadIPPluginJar : add usbx
+2025-08-21 20:48:53,060 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 20:48:53,072 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
+2025-08-21 20:48:53,078 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules)
+2025-08-21 20:48:53,082 [INFO] CADModel:165 - CPN selected for project level
+2025-08-21 20:48:53,082 [INFO] CADModel:114 - Register for checkConnection events
+2025-08-21 20:48:53,082 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 20:48:53,082 [ERROR] CADModel:125 - Updater not yet initialized, retry later
+2025-08-21 20:48:53,152 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 20:48:53,153 [INFO] CADModel:165 - CPN selected for project level
+2025-08-21 20:48:53,153 [INFO] CADModel:114 - Register for checkConnection events
+2025-08-21 20:48:53,153 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 20:48:53,153 [ERROR] CADModel:125 - Updater not yet initialized, retry later
+2025-08-21 20:48:53,155 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 20:48:53,211 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 20:48:53,213 [INFO] DbMcusAds:53 - JSON generation date=Tue Jul 08 01:14:23 PDT 2025 (1751962463582)
+2025-08-21 20:48:53,214 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 20:48:53,229 [WARN] DetailPanel:346 - Failed to get advertising image, set to default
+2025-08-21 20:48:53,267 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 20:48:53,268 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 20:48:53,268 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 20:48:53,268 [WARN] DetailPanel:346 - Failed to get advertising image, set to default
+2025-08-21 20:48:53,269 [FATAL] Updater:351 - Updater called before beeing initialized
+2025-08-21 20:48:53,283 [ERROR] Updater:1198 - MainUpdater not yet initialized. External WinMGr cannot be set.
+2025-08-21 20:48:53,283 [INFO] Updater:1134 - Updater Version found : 6.15.0
+2025-08-21 20:48:53,291 [INFO] ApplicationProperties:184 - Using Application install path: /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659
+2025-08-21 20:48:53,521 [INFO] MainUpdater:2872 - connection check result : 10
+2025-08-21 20:48:53,522 [INFO] MainUpdater:289 - Updater Check For Update Now.
+2025-08-21 20:48:53,522 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150
+2025-08-21 20:48:53,523 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated)
+2025-08-21 20:48:53,523 [INFO] UserAuth:171 - activating auth plugin
+2025-08-21 20:48:53,525 [INFO] UserAuth:487 - Internet connection configuration mode: 1
+2025-08-21 20:48:53,533 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder
+2025-08-21 20:48:53,662 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread
+2025-08-21 20:48:53,836 [INFO] WebApp:169 - Instantiating new browser for Auth
+2025-08-21 20:48:54,125 [INFO] WebApp:463 - Apply proxy settings
+2025-08-21 20:48:54,125 [INFO] WebApp:548 - Chromium requires no authentication
+2025-08-21 20:48:54,129 [INFO] WebApp:491 - Direct internet connection detected
+2025-08-21 20:48:54,143 [INFO] WebApp:900 - Register for checkConnection events
+2025-08-21 20:48:54,143 [INFO] WebApp:463 - Apply proxy settings
+2025-08-21 20:48:54,143 [INFO] WebApp:548 - Chromium requires no authentication
+2025-08-21 20:48:54,144 [INFO] WebApp:491 - Direct internet connection detected
+2025-08-21 20:48:54,204 [INFO] WebApp:225 - Starting web application
+2025-08-21 20:48:54,204 [INFO] WebApp:593 - Web application path used /home/kymkim/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient1/index.html
+2025-08-21 20:48:54,386 [INFO] WebApp:191 - Connection restablished
+2025-08-21 20:48:55,716 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENVWB1.1.4.0
+2025-08-21 20:48:55,720 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-ASTRA1.2.0.2
+2025-08-21 20:48:55,723 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SMBUS.2.1.0
+2025-08-21 20:48:55,726 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST60.1.0.0
+2025-08-21 20:48:55,745 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F7.1.1.0
+2025-08-21 20:48:55,759 [WARN] PackLoader:240 - Cannot read IP mode file for Infineon.AIROC-Wi-Fi-Bluetooth-STM32.1.7.1
+2025-08-21 20:48:55,775 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7.3.4.0
+2025-08-21 20:48:55,780 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DISPLAY.3.0.0
+2025-08-21 20:48:55,788 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC10.1.0.0
+2025-08-21 20:48:55,793 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.0.0
+2025-08-21 20:48:55,797 [WARN] PackLoader:240 - Cannot read IP mode file for emotas.I-CUBE-CANOPEN.1.3.0
+2025-08-21 20:48:55,799 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : Cortex-A Device cause : null
+2025-08-21 20:48:55,806 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
+2025-08-21 20:48:55,806 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
+2025-08-21 20:48:55,806 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null
+2025-08-21 20:48:55,810 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.1.0
+2025-08-21 20:48:55,813 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-SMARTAG2.1.2.0
+2025-08-21 20:48:55,815 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-FLIGHT1.5.1.0
+2025-08-21 20:48:55,819 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
+2025-08-21 20:48:55,820 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
+2025-08-21 20:48:55,820 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
+2025-08-21 20:48:55,820 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
+2025-08-21 20:48:55,820 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null
+2025-08-21 20:48:55,822 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WL.2.0.0
+2025-08-21 20:48:55,824 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENV1.5.0.0
+2025-08-21 20:48:55,828 [WARN] PackLoader:240 - Cannot read IP mode file for WES.I-CUBE-Cesium.1.3.0
+2025-08-21 20:48:55,831 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE2.3.3.0
+2025-08-21 20:48:55,834 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC9.1.0.0
+2025-08-21 20:48:55,837 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSL.5.8.0
+2025-08-21 20:48:55,839 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE1.7.1.0
+2025-08-21 20:48:55,842 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfMQTT.1.19.2
+2025-08-21 20:48:55,844 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-EEPRMA1.5.2.0
+2025-08-21 20:48:55,847 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.1.0
+2025-08-21 20:48:55,853 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G0.1.1.0
+2025-08-21 20:48:55,857 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SAFEA1.1.2.2
+2025-08-21 20:48:55,860 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC4.3.0.0
+2025-08-21 20:48:55,867 [WARN] PackLoader:240 - Cannot read IP mode file for EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1
+2025-08-21 20:48:55,872 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-WB05N.2.0.0
+2025-08-21 20:48:55,874 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfTPM.3.8.0
+2025-08-21 20:48:55,878 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TCPP.4.2.0
+2025-08-21 20:48:55,881 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-SIGFOX1.3.2.0
+2025-08-21 20:48:55,884 [WARN] PackLoader:240 - Cannot read IP mode file for ITTIA_DB.I-CUBE-ITTIADB.8.9.0
+2025-08-21 20:48:55,888 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST67W61.1.0.0
+2025-08-21 20:48:55,891 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.2.0
+2025-08-21 20:48:55,903 [WARN] PackLoader:240 - Cannot read IP mode file for SEGGER.I-CUBE-embOS.1.3.1
+2025-08-21 20:48:55,942 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0
+2025-08-21 20:48:55,963 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-MEMS1.11.3.0
+2025-08-21 20:48:56,023 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-PM33A1.1.0.0
+2025-08-21 20:48:56,030 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F4.1.1.0
+2025-08-21 20:48:56,032 [WARN] PackLoader:240 - Cannot read IP mode file for Avnet-IotConnect.X-CUBE-IoTC-DA16k-PMOD.1.0.0
+2025-08-21 20:48:56,034 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ISPU.2.1.0
+2025-08-21 20:48:56,037 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC12.1.0.0
+2025-08-21 20:48:56,044 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L5.2.0.0
+2025-08-21 20:48:56,049 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC6.3.1.0
+2025-08-21 20:48:56,052 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-FREERTOS.1.3.1
+2025-08-21 20:48:56,054 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STAIOTCFT.1.0.0
+2025-08-21 20:48:56,056 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DPower.1.3.0
+2025-08-21 20:48:56,063 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : LAN8742 Phy interface Condition cause : null
+2025-08-21 20:48:56,063 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L4.2.0.0
+2025-08-21 20:48:56,064 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
+2025-08-21 20:48:56,064 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
+2025-08-21 20:48:56,065 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null
+2025-08-21 20:48:56,068 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SFXS2LP1.4.0.0
+2025-08-21 20:48:56,072 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.1.0
+2025-08-21 20:48:56,079 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
+2025-08-21 20:48:56,079 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
+2025-08-21 20:48:56,080 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WB.2.0.0
+2025-08-21 20:48:56,080 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
+2025-08-21 20:48:56,080 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
+2025-08-21 20:48:56,081 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
+2025-08-21 20:48:56,081 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
+2025-08-21 20:48:56,081 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null
+2025-08-21 20:48:56,083 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-GNSS1.7.0.1
+2025-08-21 20:48:56,086 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOUCHGFX.4.25.0
+2025-08-21 20:48:56,089 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.0.0
+2025-08-21 20:48:56,094 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SUBG2.5.0.0
+2025-08-21 20:48:56,107 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7RS.1.1.0
+2025-08-21 20:48:56,110 [WARN] PackLoader:240 - Cannot read IP mode file for Cesanta.I-CUBE-Mongoose.7.13.0
+2025-08-21 20:48:56,115 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G4.2.0.0
+2025-08-21 20:48:56,118 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSH.1.4.20
+2025-08-21 20:48:56,120 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC7.2.0.0
+2025-08-21 20:48:56,124 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-IPS.3.1.0
+2025-08-21 20:48:56,128 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALS.1.0.2
+2025-08-21 20:48:56,131 [WARN] PackLoader:240 - Cannot read IP mode file for portGmbH.I-Cube-SoM-uGOAL.1.1.0
+2025-08-21 20:48:56,135 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOF1.3.4.3
+2025-08-21 20:48:56,139 [INFO] ThirdParty:978 - Integrity check success = true
+2025-08-21 20:48:56,140 [INFO] IntegrityCheckThread:100 - exiting critical section [integrity check]
+2025-08-21 20:48:56,140 [INFO] IntegrityCheckThread:103 - End integrity checks thread
+2025-08-21 21:01:58,779 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT]
diff --git a/firmware/numpad/.metadata/.log b/firmware/numpad/.metadata/.log
index 29142269..4864fc12 100644
--- a/firmware/numpad/.metadata/.log
+++ b/firmware/numpad/.metadata/.log
@@ -1,52 +1,72 @@
-!SESSION 2025-08-19 20:04:19.185 -----------------------------------------------
+!SESSION 2025-08-21 19:50:27.184 -----------------------------------------------
eclipse.buildId=Version 1.19.0
java.version=21.0.3
java.vendor=Eclipse Adoptium
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments: -os linux -ws gtk -arch x86_64
-!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-08-19 20:04:56.469
+!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-08-21 19:51:02.898
!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late.
-!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-08-19 20:04:56.469
+!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-08-21 19:51:02.899
!MESSAGE Log4j2 initialized with config file /home/kymkim/Projects/modular-kbd/firmware/numpad/.metadata/.log4j2.xml
-!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-08-19 20:04:58.408
+!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-08-21 19:51:04.551
!MESSAGE Started RMI Server, listening on port 41337
-!ENTRY com.st.stm32cube.ide.mcu.ide 4 0 2025-08-19 20:06:04.529
-!MESSAGE STM32CubeMx project generation failure
+!ENTRY org.eclipse.cdt.core 1 0 2025-08-21 19:52:11.836
+!MESSAGE Indexed 'numpad' (32 sources, 135 headers) in 2.3 sec: 14,343 declarations; 71,105 references; 1 unresolved inclusions; 92 syntax errors; 240 unresolved names (0.28%)
-!ENTRY org.eclipse.cdt.core 1 0 2025-08-19 20:10:33.479
-!MESSAGE Indexed 'numpad' (32 sources, 98 headers) in 1.75 sec: 7,675 declarations; 48,468 references; 0 unresolved inclusions; 1 syntax errors; 2 unresolved names (0.0036%)
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:25.886
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
-!ENTRY org.eclipse.ui 4 0 2025-08-19 20:13:30.877
-!MESSAGE Unhandled event loop exception
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:25.886
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
!STACK 0
-java.lang.NullPointerException: Cannot invoke "org.eclipse.ui.IWorkbenchWindow.getShell()" because the return value of "org.eclipse.ui.IWorkbench.getActiveWorkbenchWindow()" is null
- at com.st.stm32cube.common.mx.oss.core.awtswtbridge.AwtEnvironment.getShell(AwtEnvironment.java:281)
- at com.st.stm32cube.common.mx.oss.core.awtswtbridge.SwtInputBlocker.block(SwtInputBlocker.java:98)
- at com.st.stm32cube.common.mx.oss.core.awtswtbridge.AwtEnvironment.invokeAwt(AwtEnvironment.java:179)
- at com.st.stm32cube.common.mx.oss.core.awtswtbridge.EmbeddedSwingComposite$3.widgetDisposed(EmbeddedSwingComposite.java:244)
- at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:140)
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
- at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1643)
- at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1622)
- at org.eclipse.swt.widgets.Widget.release(Widget.java:1394)
- at org.eclipse.swt.widgets.Control.release(Control.java:4753)
- at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:1560)
- at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:279)
- at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:503)
- at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:3435)
- at org.eclipse.swt.widgets.Widget.release(Widget.java:1401)
- at org.eclipse.swt.widgets.Control.release(Control.java:4753)
- at org.eclipse.swt.widgets.Widget.dispose(Widget.java:575)
- at org.eclipse.swt.widgets.Shell.dispose(Shell.java:3352)
- at org.eclipse.swt.widgets.Display.release(Display.java:4573)
- at org.eclipse.swt.graphics.Device.dispose(Device.java:276)
- at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:168)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
@@ -58,63 +78,2251 @@ java.lang.NullPointerException: Cannot invoke "org.eclipse.ui.IWorkbenchWindow.g
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
-!SESSION 2025-08-19 20:13:31.577 -----------------------------------------------
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:25.889
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:25.889
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:25.949
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:25.949
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager$1.open(CommonNavigatorManager.java:183)
+ at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
+ at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:799)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:796)
+ at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1110)
+ at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:451)
+ at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:295)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:330)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:25.951
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:25.951
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager$1.open(CommonNavigatorManager.java:183)
+ at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
+ at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:799)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:796)
+ at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1110)
+ at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:451)
+ at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:295)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:330)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:28.395
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:28.396
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:28.399
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:28.399
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:28.917
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:28.917
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:28.919
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:28.920
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:28.988
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:28.989
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager$1.open(CommonNavigatorManager.java:183)
+ at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
+ at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:799)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:796)
+ at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1110)
+ at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:451)
+ at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:295)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:330)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:28.990
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:22:28.990
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager$1.open(CommonNavigatorManager.java:183)
+ at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
+ at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:799)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:796)
+ at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1110)
+ at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:451)
+ at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:295)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:330)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:03.455
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:03.455
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:03.457
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:03.457
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:10.893
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:10.893
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:10.894
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:10.894
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:11.599
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:11.599
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:11.601
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:11.601
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:11.769
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:11.769
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:11.771
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:11.771
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:14.523
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:14.523
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:14.525
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:14.525
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:14.612
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:14.612
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager$1.open(CommonNavigatorManager.java:183)
+ at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
+ at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:799)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:796)
+ at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1110)
+ at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:451)
+ at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:295)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:330)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:14.613
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:24:14.613
+!MESSAGE Transfer aborted, too many resources: 594112099.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager$1.open(CommonNavigatorManager.java:183)
+ at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
+ at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:799)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:796)
+ at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1110)
+ at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:451)
+ at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:295)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:330)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:14.956
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:14.957
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:14.960
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:14.960
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:15.889
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:15.890
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:15.893
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:15.893
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:15.964
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:15.965
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager$1.open(CommonNavigatorManager.java:183)
+ at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
+ at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:799)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:796)
+ at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1110)
+ at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:451)
+ at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:295)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:330)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:15.966
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:15.967
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager$1.open(CommonNavigatorManager.java:183)
+ at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
+ at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:799)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:796)
+ at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1110)
+ at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:451)
+ at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:295)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:330)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:17.334
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:17.335
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:17.338
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:17.338
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:17.437
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:17.437
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager$1.open(CommonNavigatorManager.java:183)
+ at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
+ at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:799)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:796)
+ at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1110)
+ at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:451)
+ at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:295)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:330)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:17.439
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:17.439
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager$1.open(CommonNavigatorManager.java:183)
+ at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
+ at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:799)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:796)
+ at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1110)
+ at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:451)
+ at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:295)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:330)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:18.776
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:18.776
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:18.778
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:18.778
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager.selectionChanged(CommonNavigatorManager.java:220)
+ at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
+ at org.eclipse.jface.viewers.ColumnViewer.updateSelection(ColumnViewer.java:1055)
+ at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1170)
+ at org.eclipse.ui.navigator.CommonViewer.handleSelect(CommonViewer.java:463)
+ at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1199)
+ at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:262)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:420)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:18.896
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:18.896
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.fillActionBars(CNavigatorEditActionGroup.java:100)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.fillActionBars(CNavigatorEditActionProvider.java:74)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager$1.open(CommonNavigatorManager.java:183)
+ at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
+ at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:799)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:796)
+ at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1110)
+ at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:451)
+ at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:295)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:330)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:18.898
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:42:18.898
+!MESSAGE Transfer aborted, too many resources: 1651470188.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.lambda$0(PasteAction.java:180)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.cdt.internal.ui.cview.PasteAction.updateSelection(PasteAction.java:177)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionGroup.updateActionBars(CNavigatorEditActionGroup.java:134)
+ at org.eclipse.cdt.internal.ui.navigator.CNavigatorEditActionProvider.updateActionBars(CNavigatorEditActionProvider.java:113)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager$1.open(CommonNavigatorManager.java:183)
+ at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
+ at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:799)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
+ at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:796)
+ at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1110)
+ at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:451)
+ at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:295)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:330)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
+ at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5855)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1617)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5065)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4517)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+!SESSION 2025-08-21 20:48:42.359 -----------------------------------------------
eclipse.buildId=Version 1.19.0
java.version=21.0.3
java.vendor=Eclipse Adoptium
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments: -os linux -ws gtk -arch x86_64
-!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-08-19 20:13:36.071
+!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-08-21 20:48:48.890
!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late.
-!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-08-19 20:13:36.071
+!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-08-21 20:48:48.890
!MESSAGE Log4j2 initialized with config file /home/kymkim/Projects/modular-kbd/firmware/numpad/.metadata/.log4j2.xml
-!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-08-19 20:13:38.659
-!MESSAGE Started RMI Server, listening on port 41337
-!SESSION 2025-08-19 20:15:24.955 -----------------------------------------------
-eclipse.buildId=Version 1.19.0
-java.version=21.0.3
-java.vendor=Eclipse Adoptium
-BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
-Command-line arguments: -os linux -ws gtk -arch x86_64
-
-!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-08-19 20:15:28.501
-!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late.
-
-!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-08-19 20:15:28.501
-!MESSAGE Log4j2 initialized with config file /home/kymkim/Projects/modular-kbd/firmware/numpad/.metadata/.log4j2.xml
-
-!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-08-19 20:15:31.129
-!MESSAGE Started RMI Server, listening on port 41337
-!SESSION 2025-08-19 20:17:17.529 -----------------------------------------------
-eclipse.buildId=Version 1.19.0
-java.version=21.0.3
-java.vendor=Eclipse Adoptium
-BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
-Command-line arguments: -os linux -ws gtk -arch x86_64
-
-!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-08-19 20:17:20.911
-!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late.
-
-!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-08-19 20:17:20.911
-!MESSAGE Log4j2 initialized with config file /home/kymkim/Projects/modular-kbd/firmware/numpad/.metadata/.log4j2.xml
-
-!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-08-19 20:17:23.614
-!MESSAGE Started RMI Server, listening on port 41337
-!SESSION 2025-08-19 20:18:44.096 -----------------------------------------------
-eclipse.buildId=Version 1.19.0
-java.version=21.0.3
-java.vendor=Eclipse Adoptium
-BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
-Command-line arguments: -os linux -ws gtk -arch x86_64
-
-!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-08-19 20:18:48.644
-!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late.
-
-!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-08-19 20:18:48.645
-!MESSAGE Log4j2 initialized with config file /home/kymkim/Projects/modular-kbd/firmware/numpad/.metadata/.log4j2.xml
-
-!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-08-19 20:18:51.387
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:48:51.440
+!MESSAGE Transfer aborted, too many resources: 791617619.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:48:51.440
+!MESSAGE Transfer aborted, too many resources: 791617619.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.ui.internal.navigator.resources.actions.PasteAction.lambda$0(PasteAction.java:216)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.ui.internal.navigator.resources.actions.PasteAction.updateSelection(PasteAction.java:213)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.ui.internal.navigator.resources.actions.EditActionGroup.updateActionBars(EditActionGroup.java:144)
+ at org.eclipse.ui.internal.navigator.resources.actions.EditActionGroup.fillActionBars(EditActionGroup.java:96)
+ at org.eclipse.ui.internal.navigator.resources.actions.EditActionProvider.fillActionBars(EditActionProvider.java:46)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:263)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager$UpdateActionBarsJob$1.run(CommonNavigatorManager.java:88)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.CommonNavigatorManager$UpdateActionBarsJob.runInUIThread(CommonNavigatorManager.java:82)
+ at org.eclipse.ui.progress.UIJob.lambda$0(UIJob.java:148)
+ at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
+ at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132)
+ at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:5040)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4520)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:48:51.441
+!MESSAGE Transfer aborted, too many resources: 791617619.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+
+!ENTRY org.eclipse.ui.ide 4 4 2025-08-21 20:48:51.441
+!MESSAGE Transfer aborted, too many resources: 791617619.
+If you are running in x11vnc environment please consider to switch to vncserver + vncviewer or to run x11vnc without clipboard support (use '-noclipboard' and '-nosetclipboard' arguments).
+!STACK 0
+java.lang.IllegalArgumentException: Maximum limit of resources to transfer is: 1000000
+ at org.eclipse.ui.part.ResourceTransfer.nativeToJava(ResourceTransfer.java:176)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:318)
+ at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:246)
+ at org.eclipse.ui.internal.navigator.resources.actions.PasteAction.lambda$0(PasteAction.java:216)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:5960)
+ at org.eclipse.ui.internal.navigator.resources.actions.PasteAction.updateSelection(PasteAction.java:213)
+ at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128)
+ at org.eclipse.ui.internal.navigator.resources.actions.EditActionGroup.updateActionBars(EditActionGroup.java:144)
+ at org.eclipse.ui.internal.navigator.resources.actions.EditActionProvider.updateActionBars(EditActionProvider.java:61)
+ at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:264)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:257)
+ at org.eclipse.ui.navigator.CommonNavigatorManager$UpdateActionBarsJob$1.run(CommonNavigatorManager.java:88)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
+ at org.eclipse.ui.navigator.CommonNavigatorManager$UpdateActionBarsJob.runInUIThread(CommonNavigatorManager.java:82)
+ at org.eclipse.ui.progress.UIJob.lambda$0(UIJob.java:148)
+ at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
+ at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132)
+ at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:5040)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4520)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
+ at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
+ at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
+
+!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-08-21 20:48:51.997
!MESSAGE Started RMI Server, listening on port 41337
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.cdt.core/.log b/firmware/numpad/.metadata/.plugins/org.eclipse.cdt.core/.log
index f268314c..88444c09 100644
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.cdt.core/.log
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.cdt.core/.log
@@ -1,5 +1,2 @@
-*** SESSION Aug 19, 2025 20:04:55.210 ------------------------------------------
-*** SESSION Aug 19, 2025 20:13:35.515 ------------------------------------------
-*** SESSION Aug 19, 2025 20:15:27.915 ------------------------------------------
-*** SESSION Aug 19, 2025 20:17:20.333 ------------------------------------------
-*** SESSION Aug 19, 2025 20:18:47.971 ------------------------------------------
+*** SESSION Aug 21, 2025 19:51:01.544 ------------------------------------------
+*** SESSION Aug 21, 2025 20:48:48.237 ------------------------------------------
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.cdt.core/numpad.1755659430593.pdom b/firmware/numpad/.metadata/.plugins/org.eclipse.cdt.core/numpad.1755831129515.pdom
similarity index 51%
rename from firmware/numpad/.metadata/.plugins/org.eclipse.cdt.core/numpad.1755659430593.pdom
rename to firmware/numpad/.metadata/.plugins/org.eclipse.cdt.core/numpad.1755831129515.pdom
index 674a452f..841cc178 100644
Binary files a/firmware/numpad/.metadata/.plugins/org.eclipse.cdt.core/numpad.1755659430593.pdom and b/firmware/numpad/.metadata/.plugins/org.eclipse.cdt.core/numpad.1755831129515.pdom differ
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml b/firmware/numpad/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml
index 8e479579..af389b1d 100644
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml
@@ -1,7 +1,23 @@
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/11/c02a1180087f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/11/c02a1180087f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..27571ebc
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/11/c02a1180087f00101e07bf679ab1b2d4
@@ -0,0 +1,489 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+uint8_t DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/13/a0456541077f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/13/a0456541077f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..52fc2559
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/13/a0456541077f00101e07bf679ab1b2d4
@@ -0,0 +1,13 @@
+/*
+ * uart_forwarder.h
+ *
+ * Created on: Aug 21, 2025
+ * Author: kymkim
+ */
+
+#ifndef INC_UART_FORWARDER_H_
+#define INC_UART_FORWARDER_H_
+
+
+
+#endif /* INC_UART_FORWARDER_H_ */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/14/f0ac760c0a7f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/14/f0ac760c0a7f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..45a00100
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/14/f0ac760c0a7f00101e07bf679ab1b2d4
@@ -0,0 +1,507 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+uint8_t DMA_QBUFFER[DMA_QBUFFER_SIZE][4];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void DMA_BufferPush(uint8_t *packet){
+ uint16_t next = (q_head + 1) % QUEUE_SIZE;
+ if (next == q_tail) return false; // full
+ memcpy(DMA_QBUFFER[q_head], packet, PACKET_SIZE);
+ q_head = next;
+ return true;
+}
+
+bool DMA_BufferPop(uint8_t *pkt) {
+ if (q_head == q_tail) return false; // empty
+ memcpy(packet, tx_queue[q_tail], PACKET_SIZE);
+ q_tail = (q_tail + 1) % QUEUE_SIZE;
+ return true;
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/15/e00aa777077f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/15/e00aa777077f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..5bc7e6de
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/15/e00aa777077f00101e07bf679ab1b2d4
@@ -0,0 +1,9 @@
+/*
+ * uart_forwarder.c
+ *
+ * Created on: Aug 21, 2025
+ * Author: Oliver Cabral
+ */
+
+
+
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/1e/206d8603097f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/1e/206d8603097f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..87a4f720
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/1e/206d8603097f00101e07bf679ab1b2d4
@@ -0,0 +1,501 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+typedef struct {
+ uint8_t data[4]; //Communication Type; Depth; Unique; KeyCode;
+} Packet;
+
+static Packet DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void UF_DMAPush(uint8_t *packet){
+ uint16_t next = (q_head + 1)%DMA_QBUFFER_SIZE;
+ if(next == q_tail) return false;
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/20/002c95d3087f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/20/002c95d3087f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..bb4b4c76
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/20/002c95d3087f00101e07bf679ab1b2d4
@@ -0,0 +1,500 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+typedef struct {
+ uint8_t data[4]; //Communication Type; Depth; Unique; KeyCode;
+} Packet;
+
+static Packet DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void UF_DMAPush(uint8_t packet){
+
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/2c/b095a677077f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/2c/b095a677077f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..86859528
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/2c/b095a677077f00101e07bf679ab1b2d4
@@ -0,0 +1,17 @@
+/*
+ * uart_forwarder.h
+ *
+ * Created on: Aug 21, 2025
+ * Author: Oliver Cabral
+ */
+
+#ifndef INC_UART_FORWARDER_H_
+#define INC_UART_FORWARDER_H_
+
+#include "stm32f4xx_hal.h"
+#include
+#include
+
+
+
+#endif /* INC_UART_FORWARDER_H_ */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/33/6061a377077f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/33/6061a377077f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..7b69aa6c
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/33/6061a377077f00101e07bf679ab1b2d4
@@ -0,0 +1,8 @@
+/*
+ * uart_forwarder.c
+ *
+ * Created on: Aug 21, 2025
+ * Author: kymkim
+ */
+
+
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/34/60840c5d097f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/34/60840c5d097f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..8d43ce4e
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/34/60840c5d097f00101e07bf679ab1b2d4
@@ -0,0 +1,502 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+uint8_t DMA_QBUFFER[DMA_QBUFFER_SIZE][PACKET_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void UF_DMAPush(uint8_t *packet){
+ uint16_t next = (q_head + 1)%DMA_QBUFFER_SIZE;
+ if(next == q_tail) return false; //Queue is full
+ DMA_QUEUE[q_head] = *pkt;
+ q_head = next;
+ return true;
+}
+
+static bool queue_pop
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/38/e08162be0b7f00101ec0ac76289a9be0 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/38/e08162be0b7f00101ec0ac76289a9be0
new file mode 100644
index 00000000..a2249f72
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/38/e08162be0b7f00101ec0ac76289a9be0
@@ -0,0 +1,511 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+static uint8_t DMA_QBUFFER[DMA_QBUFFER_SIZE][4];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void DMA_BufferPush(uint8_t *packet){
+ uint16_t next = (q_head + 1) % QUEUE_SIZE;
+ if (next == q_tail) return false; // full
+ memcpy(DMA_QBUFFER[q_head], packet, PACKET_SIZE);
+ q_head = next;
+ return true;
+}
+
+bool DMA_BufferPop(uint8_t *pkt) {
+ if (q_head == q_tail) return false; // empty
+ memcpy(packet, DMA_QBUFFER[q_tail], PACKET_SIZE);
+ q_tail = (q_tail + 1) % DMA_QBUFFER_SIZE;
+ return true;
+}
+
+void DMA_TrySend(void){
+
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/45/10aa54bf0b7f00101ec0ac76289a9be0 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/45/10aa54bf0b7f00101ec0ac76289a9be0
new file mode 100644
index 00000000..d659d7f0
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/45/10aa54bf0b7f00101ec0ac76289a9be0
@@ -0,0 +1,519 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define PACKET_SIZE 4
+#define DMA_QBUFFER_SIZE 64
+
+static uint8_t DMA_QBUFFER[DMA_QBUFFER_SIZE][PACKET_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT; // your parent UART
+static bool PARENT_BUSY = false;
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool DMA_BufferPush(uint8_t *packet);
+
+bool DMA_BufferPop(uint8_t *packet);
+
+void DMA_TrySend(void);
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+//UART Forwarder Functions
+bool DMA_BufferPush(uint8_t *packet){
+ uint16_t next = (q_head + 1) % DMA_QBUFFER_SIZE;
+ if (next == q_tail) return false; // full
+ memcpy(DMA_QBUFFER[q_head], packet, PACKET_SIZE);
+ q_head = next;
+ return true;
+}
+
+
+bool DMA_BufferPop(uint8_t *packet) {
+ if (q_head == q_tail) return false; // empty
+ memcpy(packet, DMA_QBUFFER[q_tail], PACKET_SIZE);
+ q_tail = (q_tail + 1) % DMA_QBUFFER_SIZE;
+ return true;
+}
+
+void DMA_TrySend(void){
+ uint8_t pkt[PACKET_SIZE];
+ if (!PARENT_BUSY && DMA_BufferPop(pkt)) {
+ PARENT_BUSY = true;
+ HAL_UART_Transmit_DMA(&PARENT, pkt, PACKET_SIZE);
+ }
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/47/00625f19097f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/47/00625f19097f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..d670db40
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/47/00625f19097f00101e07bf679ab1b2d4
@@ -0,0 +1,503 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+typedef struct {
+ uint8_t data[4]; //Communication Type; Depth; Unique; KeyCode;
+} Packet;
+
+static Packet DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void UF_DMAPush(uint8_t *packet){
+ uint16_t next = (q_head + 1)%DMA_QBUFFER_SIZE;
+ if(next == q_tail) return false; //Queue is full
+ DMA_QUEUE[q_head] = *pkt;
+ q_head = next;
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/4c/8079cadd0a7f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/4c/8079cadd0a7f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..0e2cd684
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/4c/8079cadd0a7f00101e07bf679ab1b2d4
@@ -0,0 +1,507 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+static uint8_t DMA_QBUFFER[DMA_QBUFFER_SIZE][4];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void DMA_BufferPush(uint8_t *packet){
+ uint16_t next = (q_head + 1) % QUEUE_SIZE;
+ if (next == q_tail) return false; // full
+ memcpy(DMA_QBUFFER[q_head], packet, PACKET_SIZE);
+ q_head = next;
+ return true;
+}
+
+bool DMA_BufferPop(uint8_t *pkt) {
+ if (q_head == q_tail) return false; // empty
+ memcpy(packet, DMA_QBUFFER[q_tail], PACKET_SIZE);
+ q_tail = (q_tail + 1) % DMA_QBUFFER_SIZE;
+ return true;
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/52/d01e62ae077f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/52/d01e62ae077f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..fea63d57
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/52/d01e62ae077f00101e07bf679ab1b2d4
@@ -0,0 +1,483 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+uint8_t DMA_QUEUE[DMA_QBUFFER_SIZE];
+
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/57/30715985097f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/57/30715985097f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..48b98cb5
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/57/30715985097f00101e07bf679ab1b2d4
@@ -0,0 +1,502 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+uint8_t DMA_QBUFFER[DMA_QBUFFER_SIZE][4];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void UF_DMAPush(uint8_t *packet){
+ uint16_t next = (q_head + 1)%DMA_QBUFFER_SIZE;
+ if(next == q_tail) return false; //Queue is full
+ DMA_QUEUE[q_head] = *pkt;
+ q_head = next;
+ return true;
+}
+
+static bool queue_pop
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/6e/606a4f27077f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/6e/606a4f27077f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..e69de29b
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/6e/607d5df1077f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/6e/607d5df1077f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..b7c746ed
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/6e/607d5df1077f00101e07bf679ab1b2d4
@@ -0,0 +1,487 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+uint8_t DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+static bool PARENT_BUSY = false;
+
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/71/a01ebe020a7f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/71/a01ebe020a7f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..9d6f1987
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/71/a01ebe020a7f00101e07bf679ab1b2d4
@@ -0,0 +1,507 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+uint8_t DMA_QBUFFER[DMA_QBUFFER_SIZE][4];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void DMA_BufferPush(uint8_t *packet){
+ uint16_t next = (q_head + 1) % QUEUE_SIZE;
+ if (next == q_tail) return false; // full
+ memcpy(DMA_QBUFFER[q_head], pkt, PACKET_SIZE);
+ q_head = next;
+ return true;
+}
+
+bool DMA_BufferPop(uint8_t *pkt) {
+ if (q_head == q_tail) return false; // empty
+ memcpy(pkt, tx_queue[q_tail], PACKET_SIZE);
+ q_tail = (q_tail + 1) % QUEUE_SIZE;
+ return true;
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/76/605bd7a7087f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/76/605bd7a7087f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..52fd1c17
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/76/605bd7a7087f00101e07bf679ab1b2d4
@@ -0,0 +1,500 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+typedef struct {
+ uint8_t data[4]; //Communication Type; Depth; Unique; Keycode
+};
+
+uint8_t DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void UF_DMAPush(uint8_t packet){
+
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/7c/20a8cee4087f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/7c/20a8cee4087f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..7a110edc
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/7c/20a8cee4087f00101e07bf679ab1b2d4
@@ -0,0 +1,500 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+typedef struct {
+ uint8_t data[4]; //Communication Type; Depth; Unique; KeyCode;
+} Packet;
+
+static Packet DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void UF_DMAPush(uint8_t *packet){
+ uint16_t next = (q_head + 1)%DMA_QBUFFER_SIZE;
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/7e/60f6c203087f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/7e/60f6c203087f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..5aa8023f
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/7e/60f6c203087f00101e07bf679ab1b2d4
@@ -0,0 +1,487 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+uint8_t DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+static bool PARENT_BUSY = false;
+
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/8/904d5c98077f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/8/904d5c98077f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..aef649ff
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/8/904d5c98077f00101e07bf679ab1b2d4
@@ -0,0 +1,482 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/8b/20064d3b737d001010b0918e8041e71d b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/8b/20064d3b737d001010b0918e8041e71d
deleted file mode 100644
index eeb8a7b0..00000000
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/8b/20064d3b737d001010b0918e8041e71d
+++ /dev/null
@@ -1,3 +0,0 @@
-635E684B79701B039C64EA45C3F84D30=995AAB8BA274295E2F8F7F317CB52865
-DC22A860405A8BF2F2C095E5B6529F12=CFE0804C550E33C5B9DAB17F678FB68D
-eclipse.preferences.version=1
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/8f/800ff0b5087f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/8f/800ff0b5087f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..c6560a6e
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/8f/800ff0b5087f00101e07bf679ab1b2d4
@@ -0,0 +1,500 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+typedef struct {
+ uint8_t data[4]; //Communication Type; Depth; Unique; KeyCode;
+} Packet;
+
+uint8_t Packet DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void UF_DMAPush(uint8_t packet){
+
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/9/b066e1e8077f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/9/b066e1e8077f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..375814f4
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/9/b066e1e8077f00101e07bf679ab1b2d4
@@ -0,0 +1,485 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+uint8_t DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/90/406b32b2087f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/90/406b32b2087f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..e7986e27
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/90/406b32b2087f00101e07bf679ab1b2d4
@@ -0,0 +1,500 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+typedef struct {
+ uint8_t data[4]; //Communication Type; Depth; Unique; KeyCode;
+} Packet;
+
+uint8_t DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void UF_DMAPush(uint8_t packet){
+
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/93/903c4b83077f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/93/903c4b83077f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..999480a9
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/93/903c4b83077f00101e07bf679ab1b2d4
@@ -0,0 +1,484 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include "uart_forwarder.h"
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_BUFFER_QUEUE_SIZE 64
+
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/96/a0da0ea50a7f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/96/a0da0ea50a7f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..597eb46e
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/96/a0da0ea50a7f00101e07bf679ab1b2d4
@@ -0,0 +1,507 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+uint8_t DMA_QBUFFER[DMA_QBUFFER_SIZE][4];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void DMA_BufferPush(uint8_t *packet){
+ uint16_t next = (q_head + 1) % QUEUE_SIZE;
+ if (next == q_tail) return false; // full
+ memcpy(DMA_QBUFFER[q_head], packet, PACKET_SIZE);
+ q_head = next;
+ return true;
+}
+
+bool DMA_BufferPop(uint8_t *pkt) {
+ if (q_head == q_tail) return false; // empty
+ memcpy(packet, DMA_QBUFFER[q_tail], PACKET_SIZE);
+ q_tail = (q_tail + 1) % DMA_QBUFFER_SIZE;
+ return true;
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/98/20b13b5a097f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/98/20b13b5a097f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..17c430aa
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/98/20b13b5a097f00101e07bf679ab1b2d4
@@ -0,0 +1,502 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+uint8_t DMA_QBUFFER[QUEUE_SIZE][PACKET_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void UF_DMAPush(uint8_t *packet){
+ uint16_t next = (q_head + 1)%DMA_QBUFFER_SIZE;
+ if(next == q_tail) return false; //Queue is full
+ DMA_QUEUE[q_head] = *pkt;
+ q_head = next;
+ return true;
+}
+
+static bool queue_pop
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/99/309fc1a9087f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/99/309fc1a9087f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..9e273bfa
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/99/309fc1a9087f00101e07bf679ab1b2d4
@@ -0,0 +1,500 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+typedef struct {
+ uint8_t data[4]; //Communication Type; Depth; Unique; Keycode;
+};
+
+uint8_t DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void UF_DMAPush(uint8_t packet){
+
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/9d/60fcc2ee077f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/9d/60fcc2ee077f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..980af89b
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/9d/60fcc2ee077f00101e07bf679ab1b2d4
@@ -0,0 +1,486 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+uint8_t DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+static bool PARENT_BUSY = false;
+
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/6e/60e38d2c747d00101eb7b9ecd3591df1 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/a4/202fee30077f00101e07bf679ab1b2d4
similarity index 80%
rename from firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/6e/60e38d2c747d00101eb7b9ecd3591df1
rename to firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/a4/202fee30077f00101e07bf679ab1b2d4
index ec16ce94..71da4950 100644
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/6e/60e38d2c747d00101eb7b9ecd3591df1
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/a4/202fee30077f00101e07bf679ab1b2d4
@@ -32,6 +32,11 @@
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
/* USER CODE END PD */
@@ -47,6 +52,14 @@ UART_HandleTypeDef huart1;
UART_HandleTypeDef huart2;
UART_HandleTypeDef huart3;
UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
/* USER CODE BEGIN PV */
@@ -55,6 +68,7 @@ UART_HandleTypeDef huart6;
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
static void MX_I2C1_Init(void);
static void MX_USART1_UART_Init(void);
static void MX_USART2_UART_Init(void);
@@ -98,6 +112,7 @@ int main(void)
/* Initialize all configured peripherals */
MX_GPIO_Init();
+ MX_DMA_Init();
MX_I2C1_Init();
MX_USART1_UART_Init();
MX_USART2_UART_Init();
@@ -332,6 +347,44 @@ static void MX_USART6_UART_Init(void)
}
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
/**
* @brief GPIO Initialization Function
* @param None
@@ -340,8 +393,8 @@ static void MX_USART6_UART_Init(void)
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
-/* USER CODE BEGIN MX_GPIO_Init_1 */
-/* USER CODE END MX_GPIO_Init_1 */
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOH_CLK_ENABLE();
@@ -381,12 +434,19 @@ static void MX_GPIO_Init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
-/* USER CODE BEGIN MX_GPIO_Init_2 */
-/* USER CODE END MX_GPIO_Init_2 */
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
}
/* USER CODE BEGIN 4 */
-
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
/* USER CODE END 4 */
/**
@@ -403,8 +463,7 @@ void Error_Handler(void)
}
/* USER CODE END Error_Handler_Debug */
}
-
-#ifdef USE_FULL_ASSERT
+#ifdef USE_FULL_ASSERT
/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/ab/60803332077f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/ab/60803332077f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..87df7ac1
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/ab/60803332077f00101e07bf679ab1b2d4
@@ -0,0 +1,484 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include "uart_forwarder"
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_BUFFER_QUEUE_SIZE 64
+
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/af/2059531f077f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/af/2059531f077f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..e69de29b
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/b9/7025f955097f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/b9/7025f955097f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..a5e79422
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/b9/7025f955097f00101e07bf679ab1b2d4
@@ -0,0 +1,504 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+typedef struct {
+ uint8_t data[4]; //Communication Type; Depth; Unique; KeyCode;
+} Packet;
+
+static Packet DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void UF_DMAPush(uint8_t *packet){
+ uint16_t next = (q_head + 1)%DMA_QBUFFER_SIZE;
+ if(next == q_tail) return false; //Queue is full
+ DMA_QUEUE[q_head] = *pkt;
+ q_head = next;
+ return true;
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/ba/f097363b737d001010b0918e8041e71d b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/ba/f097363b737d001010b0918e8041e71d
deleted file mode 100644
index 71b8e9b7..00000000
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/ba/f097363b737d001010b0918e8041e71d
+++ /dev/null
@@ -1,2 +0,0 @@
-635E684B79701B039C64EA45C3F84D30=995AAB8BA274295E2F8F7F317CB52865
-eclipse.preferences.version=1
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/c8/a0e8f4ad087f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/c8/a0e8f4ad087f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..cbe72a1d
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/c8/a0e8f4ad087f00101e07bf679ab1b2d4
@@ -0,0 +1,500 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+typedef struct {
+ uint8_t data[4]; //Communication Type; Depth; Unique; KeyCode;
+};
+
+uint8_t DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void UF_DMAPush(uint8_t packet){
+
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/cf/4013a377077f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/cf/4013a377077f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..91176b84
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/cf/4013a377077f00101e07bf679ab1b2d4
@@ -0,0 +1,15 @@
+/*
+ * uart_forwarder.h
+ *
+ * Created on: Aug 21, 2025
+ * Author: Oliver Cabral
+ */
+
+#ifndef INC_UART_FORWARDER_H_
+#define INC_UART_FORWARDER_H_
+
+#include "stm32f4xx_hal.h"
+#include
+#include
+
+#endif /* INC_UART_FORWARDER_H_ */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/e8/80a91f1f087f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/e8/80a91f1f087f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..7a469bc2
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/e8/80a91f1f087f00101e07bf679ab1b2d4
@@ -0,0 +1,488 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+uint8_t DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+static bool PARENT_BUSY = false;
+
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/e8/f0b000f4077f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/e8/f0b000f4077f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..51503daa
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/e8/f0b000f4077f00101e07bf679ab1b2d4
@@ -0,0 +1,487 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+uint8_t DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+static bool PARENT_BUSY = false;
+
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/eb/80cc10180a7f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/eb/80cc10180a7f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..1c5c83ee
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/eb/80cc10180a7f00101e07bf679ab1b2d4
@@ -0,0 +1,507 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+uint8_t DMA_QBUFFER[DMA_QBUFFER_SIZE][4];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void DMA_BufferPush(uint8_t *packet){
+ uint16_t next = (q_head + 1) % QUEUE_SIZE;
+ if (next == q_tail) return false; // full
+ memcpy(DMA_QBUFFER[q_head], packet, PACKET_SIZE);
+ q_head = next;
+ return true;
+}
+
+bool DMA_BufferPop(uint8_t *pkt) {
+ if (q_head == q_tail) return false; // empty
+ memcpy(packet, DMA_QBUFFER[q_tail], PACKET_SIZE);
+ q_tail = (q_tail + 1) % QUEUE_SIZE;
+ return true;
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/ef/e02a5908097f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/ef/e02a5908097f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..06d3e461
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/ef/e02a5908097f00101e07bf679ab1b2d4
@@ -0,0 +1,503 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+typedef struct {
+ uint8_t data[4]; //Communication Type; Depth; Unique; KeyCode;
+} Packet;
+
+static Packet DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void UF_DMAPush(uint8_t *packet){
+ uint16_t next = (q_head + 1)%DMA_QBUFFER_SIZE;
+ if(next == q_tail) return false; //Queue is full
+ DMA_QUEUE[q_head] = *pkt;
+
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/f3/d0cebf5d097f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/f3/d0cebf5d097f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..a5860ba8
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/f3/d0cebf5d097f00101e07bf679ab1b2d4
@@ -0,0 +1,502 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+uint8_t DMA_QBUFFER[DMA_QBUFFER_SIZE][4;
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void UF_DMAPush(uint8_t *packet){
+ uint16_t next = (q_head + 1)%DMA_QBUFFER_SIZE;
+ if(next == q_tail) return false; //Queue is full
+ DMA_QUEUE[q_head] = *pkt;
+ q_head = next;
+ return true;
+}
+
+static bool queue_pop
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/f6/704fc3c5097f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/f6/704fc3c5097f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..0b9a21cd
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/f6/704fc3c5097f00101e07bf679ab1b2d4
@@ -0,0 +1,502 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+uint8_t DMA_QBUFFER[DMA_QBUFFER_SIZE][4];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void DMA_BufferPush(uint8_t *packet){
+ uint16_t next = (q_head + 1) % QUEUE_SIZE;
+ if (next == q_tail) return false; // full
+ memcpy([q_head], pkt, PACKET_SIZE);
+ q_head = next;
+ return true;
+}
+
+static bool queue_pop
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/f9/e03a4dc00b7f00101ec0ac76289a9be0 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/f9/e03a4dc00b7f00101ec0ac76289a9be0
new file mode 100644
index 00000000..394b040e
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/f9/e03a4dc00b7f00101ec0ac76289a9be0
@@ -0,0 +1,518 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define PACKET_SIZE 4
+#define DMA_QBUFFER_SIZE 64
+
+static uint8_t DMA_QBUFFER[DMA_QBUFFER_SIZE][PACKET_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT; // your parent UART
+static bool PARENT_BUSY = false;
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool DMA_BufferPush(uint8_t *packet);
+bool DMA_BufferPop(uint8_t *packet);
+
+void DMA_TrySend(void);
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+//UART Forwarder Functions
+bool DMA_BufferPush(uint8_t *packet){
+ uint16_t next = (q_head + 1) % DMA_QBUFFER_SIZE;
+ if (next == q_tail) return false; // full
+ memcpy(DMA_QBUFFER[q_head], packet, PACKET_SIZE);
+ q_head = next;
+ return true;
+}
+
+
+bool DMA_BufferPop(uint8_t *packet) {
+ if (q_head == q_tail) return false; // empty
+ memcpy(packet, DMA_QBUFFER[q_tail], PACKET_SIZE);
+ q_tail = (q_tail + 1) % DMA_QBUFFER_SIZE;
+ return true;
+}
+
+void DMA_TrySend(void){
+ uint8_t pkt[PACKET_SIZE];
+ if (!PARENT_BUSY && DMA_BufferPop(pkt)) {
+ PARENT_BUSY = true;
+ HAL_UART_Transmit_DMA(&PARENT, pkt, PACKET_SIZE);
+ }
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/fd/f02735a7087f00101e07bf679ab1b2d4 b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/fd/f02735a7087f00101e07bf679ab1b2d4
new file mode 100644
index 00000000..79bef891
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.history/fd/f02735a7087f00101e07bf679ab1b2d4
@@ -0,0 +1,500 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+#include
+#include
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+
+#define DMA_QBUFFER_SIZE 64
+
+typedef struct {
+ uint8_t data[4]
+};
+
+uint8_t DMA_QUEUE[DMA_QBUFFER_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT;
+static bool PARENT_BUSY = false;
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart2;
+UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_USART1_UART_Init(void);
+static void MX_USART2_UART_Init(void);
+static void MX_USART3_UART_Init(void);
+static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool void UF_DMAPush(uint8_t packet){
+
+}
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_USB_DEVICE_Init();
+ MX_USART3_UART_Init();
+ MX_USART6_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 72;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 3;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART1_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART1_Init 0 */
+
+ /* USER CODE END USART1_Init 0 */
+
+ /* USER CODE BEGIN USART1_Init 1 */
+
+ /* USER CODE END USART1_Init 1 */
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART1_Init 2 */
+
+ /* USER CODE END USART1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief USART3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART3_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART3_Init 0 */
+
+ /* USER CODE END USART3_Init 0 */
+
+ /* USER CODE BEGIN USART3_Init 1 */
+
+ /* USER CODE END USART3_Init 1 */
+ huart3.Instance = USART3;
+ huart3.Init.BaudRate = 115200;
+ huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ huart3.Init.StopBits = UART_STOPBITS_1;
+ huart3.Init.Parity = UART_PARITY_NONE;
+ huart3.Init.Mode = UART_MODE_TX_RX;
+ huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART3_Init 2 */
+
+ /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
+ * @brief USART6 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART6_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART6_Init 0 */
+
+ /* USER CODE END USART6_Init 0 */
+
+ /* USER CODE BEGIN USART6_Init 1 */
+
+ /* USER CODE END USART6_Init 1 */
+ huart6.Instance = USART6;
+ huart6.Init.BaudRate = 115200;
+ huart6.Init.WordLength = UART_WORDLENGTH_8B;
+ huart6.Init.StopBits = UART_STOPBITS_1;
+ huart6.Init.Parity = UART_PARITY_NONE;
+ huart6.Init.Mode = UART_MODE_TX_RX;
+ huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart6.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart6) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART6_Init 2 */
+
+ /* USER CODE END USART6_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOC, COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pins : COL1_Pin COL2_Pin COL3_Pin COL4_Pin */
+ GPIO_InitStruct.Pin = COL1_Pin|COL2_Pin|COL3_Pin|COL4_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW6_Pin ROW5_Pin */
+ GPIO_InitStruct.Pin = ROW6_Pin|ROW5_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : ROW4_Pin ROW3_Pin ROW2_Pin ROW1_Pin */
+ GPIO_InitStruct.Pin = ROW4_Pin|ROW3_Pin|ROW2_Pin|ROW1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : WDebug_Pin SDebug_Pin EDebug_Pin NDebug_Pin */
+ GPIO_InitStruct.Pin = WDebug_Pin|SDebug_Pin|EDebug_Pin|NDebug_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+static void Data_Relay(){
+ //The data would be consisting of 4 bytes [COMMTYPE][DEPTH][UNIQ][KEYCODE]
+}
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.indexes/af/history.index b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.indexes/af/history.index
deleted file mode 100644
index 4a20d3a2..00000000
Binary files a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.indexes/af/history.index and /dev/null differ
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.indexes/bf/be/history.index b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.indexes/bf/be/history.index
new file mode 100644
index 00000000..25303742
Binary files /dev/null and b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.indexes/bf/be/history.index differ
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.indexes/bf/c4/history.index b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.indexes/bf/c4/history.index
index 357199d2..c2218f26 100644
Binary files a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.indexes/bf/c4/history.index and b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.indexes/bf/c4/history.index differ
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.indexes/properties.index b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.indexes/properties.index
index bef95b35..ba73975f 100644
Binary files a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.indexes/properties.index and b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.indexes/properties.index differ
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.markers b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.markers
index 7d054094..640f14a8 100644
Binary files a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.markers and b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.projects/numpad/.markers differ
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree
new file mode 100644
index 00000000..6a30f1ed
Binary files /dev/null and b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree differ
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.root/5.tree b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.root/5.tree
deleted file mode 100644
index b52cdc4f..00000000
Binary files a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.root/5.tree and /dev/null differ
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources
index d6e5528f..bd20ae62 100644
Binary files a/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources and b/firmware/numpad/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources differ
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.common.preferences.prefs b/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.common.preferences.prefs
index b134f04f..a83012d0 100644
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.common.preferences.prefs
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.st.stm32cube.common.preferences.prefs
@@ -1,5 +1,7 @@
+DeviceConfigurationTool.AskToSwitchToCPerspectiveOnCodeGeneration=false
DeviceConfigurationTool.AskToSwitchToCdtPerspective=false
DeviceConfigurationTool.AskToSwitchToCubeMxPerspective=false
+DeviceConfigurationTool.SwitchToCPerspectiveOnCodeGeneration=true
DeviceConfigurationTool.SwitchToCdtPerspective=true
DeviceConfigurationTool.SwitchToCubeMxPerspective=true
eclipse.preferences.version=1
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-numpad.prefs b/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-numpad.prefs
index 04a9943a..9c00dc4e 100644
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-numpad.prefs
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-numpad.prefs
@@ -1,16 +1,2 @@
eclipse.preferences.version=1
-indexer/indexAllFiles=true
-indexer/indexAllHeaderVersions=false
-indexer/indexImportLocation=.settings/cdt-index.zip
-indexer/indexOnOpen=false
-indexer/indexUnusedHeadersWithAlternateLang=false
-indexer/indexUnusedHeadersWithDefaultLang=true
-indexer/indexerId=org.eclipse.cdt.core.fastIndexer
-indexer/preferenceScope=1
-indexer/skipFilesLargerThanMB=8
-indexer/skipImplicitReferences=false
-indexer/skipIncludedFilesLargerThanMB=16
-indexer/skipMacroReferences=false
-indexer/skipReferences=false
-indexer/skipTypeReferences=false
-indexer/useHeuristicIncludeResolution=true
+indexer/preferenceScope=0
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs
index 93e75bd2..e92d7285 100644
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs
@@ -1,3 +1,3 @@
eclipse.preferences.version=1
-properties/numpad.null.121601202/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1063894741=com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1063894741\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.331333360\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.306732768\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.327379208\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.1063410069\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1880516065\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.10059508\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1759527587\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.2044649145\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.1336626651\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.480559623\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.1183185426\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.377513948\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1684666165\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.416307520\=rebuildState\\\=true\\n\n
+properties/numpad.null.121601202/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1063894741=com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.331333360\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.306732768\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.327379208\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.1063410069\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1880516065\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.10059508\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1759527587\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.2044649145\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.1336626651\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.480559623\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.1183185426\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.377513948\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1684666165\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.416307520\=rebuildState\\\=true\\n\n
properties/numpad.null.121601202/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.717787539=com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.1605896333\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1289264154\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.806605704\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.1729111212\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.2115798786\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1312692940\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1405107202\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.1728360540\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.1067238556\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.737418060\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.2026092372\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.1461028416\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.527306767\=rebuildState\\\=true\\n\ncom.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.1451427286\=rebuildState\\\=true\\n\n
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.e4.ui.css.swt.theme.prefs b/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.e4.ui.css.swt.theme.prefs
deleted file mode 100644
index 77840f22..00000000
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.e4.ui.css.swt.theme.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-themeid=org.eclipse.e4.ui.css.theme.e4_dark
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.e4.ui.workbench.renderers.swt.prefs b/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.e4.ui.workbench.renderers.swt.prefs
deleted file mode 100644
index f19f0b96..00000000
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.e4.ui.workbench.renderers.swt.prefs
+++ /dev/null
@@ -1,6 +0,0 @@
-HIDE_ICONS_FOR_VIEW_TABS=false
-SHOW_FULL_TEXT_FOR_VIEW_TABS=false
-USE_ROUND_TABS=false
-eclipse.preferences.version=1
-enableMRU=true
-themeEnabled=true
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs b/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs
deleted file mode 100644
index cec65c49..00000000
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.search.defaultPerspective=org.eclipse.search.defaultPerspective.none
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs b/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs
deleted file mode 100644
index c0805490..00000000
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.team.ui.syncview_default_perspective=org.eclipse.team.ui.sync_view_perspective_none
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.browser.prefs b/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.browser.prefs
deleted file mode 100644
index eff1d890..00000000
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.browser.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-browsers=\n\n\n
-eclipse.preferences.version=1
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
index 64416fba..4fd1ae85 100644
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
@@ -1,3 +1,4 @@
+EXIT_PROMPT_ON_CLOSE_LAST_WINDOW=false
eclipse.preferences.version=1
platformState=765466856673907
quickStart=false
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs b/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs
index dff677df..f633373b 100644
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs
@@ -1,14 +1,6 @@
//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.r30.org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_BG_END=255,255,255
-org.eclipse.ui.r30.org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_BG_START=255,255,255
-org.eclipse.ui.r30.org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_TEXT_COLOR=16,16,16
-org.eclipse.ui.r30.org.eclipse.ui.workbench.ACTIVE_TAB_BG_END=255,255,255
-org.eclipse.ui.r30.org.eclipse.ui.workbench.ACTIVE_TAB_BG_START=255,255,255
-org.eclipse.ui.r30.org.eclipse.ui.workbench.ACTIVE_TAB_TEXT_COLOR=71,173,214
-org.eclipse.ui.r30.org.eclipse.ui.workbench.INACTIVE_TAB_BG_END=246,245,244
-org.eclipse.ui.r30.org.eclipse.ui.workbench.INACTIVE_TAB_BG_START=246,245,244
org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_BG_END=41,41,41
org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_BG_START=43,44,45
org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_TEXT_COLOR=204,204,204
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi b/firmware/numpad/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
index d2d84a6c..70667b58 100644
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
@@ -1,18 +1,18 @@
-
-
+
+
activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration
-
+
-
+
topLevel
-
-
-
+
+
+
persp.actionSet:com.st.stm32cube.ide.mcu.informationcenter.actionSet3
persp.actionSet:org.eclipse.ui.cheatsheets.actionSet
@@ -69,83 +69,77 @@
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
-
-
- noFocus
-
+
+
+
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
-
- General
-
+
+
View
categoryTag:C/C++
-
+
View
categoryTag:C/C++
-
+
View
categoryTag:C/C++
-
- View
- categoryTag:General
-
-
+
persp.actionSet:com.st.stm32cube.ide.mcu.informationcenter.actionSet3
persp.actionSet:org.eclipse.ui.cheatsheets.actionSet
@@ -163,20 +157,20 @@
persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectfromiocwizard
persp.newWizSC:com.st.stm32cube.ide.mpu.linux.projectcreation.ui.wizard.linuxprojectfromsourcewizard
persp.newWizSC:com.st.stm32cube.ide.cmake.newwizard
-
-
- noFocus
-
+
+
+
View
categoryTag:General
+ active
-
-
-
-
-
-
+
+
+
+
+
+
View
categoryTag:Device Configuration Tool
@@ -186,1116 +180,1115 @@
-
-
+
+
View
categoryTag:Help
-
+
View
categoryTag:General
-
+
View
categoryTag:Help
-
+
View
categoryTag:Help
-
+
View
categoryTag:General
-
+
ViewMenu
menuContribution:menu
-
+
-
+
View
categoryTag:Help
-
-
+
+
EditorStack
org.eclipse.e4.primaryDataStack
active
- noFocus
-
-
+
+
Editor
removeOnHide
org.eclipse.cdt.ui.editor.CEditor
active
activeOnClose
+
+
+ Editor
+ removeOnHide
+ org.eclipse.cdt.ui.editor.CEditor
+
+
+
+ Editor
+ removeOnHide
+ org.eclipse.cdt.ui.editor.CEditor
+
-
+
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
-
+
-
+
View
categoryTag:Device Configuration Tool
-
-
-
-
- View
- categoryTag:General
-
- 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:gtk
-
-
-
-
+
+
+
+
platform:gtk
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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: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
@@ -1318,697 +1311,697 @@
SHOW_RESTORE_MENU
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.help.base/browser.log b/firmware/numpad/.metadata/.plugins/org.eclipse.help.base/browser.log
deleted file mode 100644
index 73463288..00000000
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.help.base/browser.log
+++ /dev/null
@@ -1,5 +0,0 @@
-
-Aug 19, 2025 20:06:54.16 NEW SESSION
-Aug 19, 2025 20:06:54.16 which: no mozilla in (/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl)
-Aug 19, 2025 20:06:54.16 which: no firefox in (/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl)
-Aug 19, 2025 20:06:54.16 which: no netscape in (/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl)
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/8/34/refactorings.history b/firmware/numpad/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/8/34/refactorings.history
new file mode 100644
index 00000000..ebc5ed3e
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/8/34/refactorings.history
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/8/34/refactorings.index b/firmware/numpad/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/8/34/refactorings.index
new file mode 100644
index 00000000..d4943fa1
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2025/8/34/refactorings.index
@@ -0,0 +1 @@
+1755833049745 Delete 2 resources
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml b/firmware/numpad/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml
new file mode 100644
index 00000000..6b5a6dcb
--- /dev/null
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml
@@ -0,0 +1,12 @@
+
+
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.search/dialog_settings.xml b/firmware/numpad/.metadata/.plugins/org.eclipse.search/dialog_settings.xml
deleted file mode 100644
index 639b7f0b..00000000
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.search/dialog_settings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/firmware/numpad/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml
index 35be43fa..47934a57 100644
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml
@@ -3,4 +3,20 @@
+
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/firmware/numpad/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
index 82f207b5..01671a6f 100644
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
@@ -1,10 +1,12 @@
-
diff --git a/firmware/numpad/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/firmware/numpad/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml
index 7fdb82bf..2945ed59 100644
--- a/firmware/numpad/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml
+++ b/firmware/numpad/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/firmware/numpad/.metadata/version.ini b/firmware/numpad/.metadata/version.ini
index d31cc5e9..d0dff457 100644
--- a/firmware/numpad/.metadata/version.ini
+++ b/firmware/numpad/.metadata/version.ini
@@ -1,3 +1,3 @@
-#Tue Aug 19 20:18:47 PDT 2025
+#Thu Aug 21 20:48:46 PDT 2025
org.eclipse.core.runtime=2
org.eclipse.platform=4.33.0.v20240903-0240
diff --git a/firmware/numpad/numpad/.cproject b/firmware/numpad/numpad/.cproject
index 30f7c17c..1fb5b288 100644
--- a/firmware/numpad/numpad/.cproject
+++ b/firmware/numpad/numpad/.cproject
@@ -110,7 +110,7 @@
-
+
diff --git a/firmware/numpad/numpad/.mxproject b/firmware/numpad/numpad/.mxproject
index 243124a7..9ca93c08 100644
--- a/firmware/numpad/numpad/.mxproject
+++ b/firmware/numpad/numpad/.mxproject
@@ -1,3 +1,11 @@
+[PreviousLibFiles]
+LibFiles=Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_bus.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_system.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_utils.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dmamux.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_exti.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_i2c.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usart.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h;Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc/usbd_hid.h;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_bus.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_system.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_utils.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dmamux.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_exti.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_i2c.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usart.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h;Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc/usbd_hid.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f446xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;Drivers/CMSIS/Include/cachel1_armv7.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/cmsis_armclang_ltm.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_armv81mml.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm35p.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm55.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_cm85.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/core_starmc1.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/pac_armv81.h;Drivers/CMSIS/Include/pmu_armv8.h;Drivers/CMSIS/Include/tz_context.h;
+
+[PreviousUsedCubeIDEFiles]
+SourceFiles=Core/Src/main.c;USB_DEVICE/App/usb_device.c;USB_DEVICE/Target/usbd_conf.c;USB_DEVICE/App/usbd_desc.c;Core/Src/stm32f4xx_it.c;Core/Src/stm32f4xx_hal_msp.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c;Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;Core/Src/system_stm32f4xx.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c;Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;Core/Src/system_stm32f4xx.c;;;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c;
+HeaderPath=Drivers/STM32F4xx_HAL_Driver/Inc;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy;Middlewares/ST/STM32_USB_Device_Library/Core/Inc;Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc;Drivers/CMSIS/Device/ST/STM32F4xx/Include;Drivers/CMSIS/Include;USB_DEVICE/App;USB_DEVICE/Target;Core/Inc;
+CDefines=USE_HAL_DRIVER;STM32F446xx;USE_HAL_DRIVER;USE_HAL_DRIVER;
+
[PreviousGenFiles]
AdvancedFolderStructure=true
HeaderFileListSize=6
@@ -25,11 +33,3 @@ SourcePath#1=../USB_DEVICE/Target
SourcePath#2=../Core/Src
SourceFiles=;
-[PreviousLibFiles]
-LibFiles=Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_bus.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_system.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_utils.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dmamux.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_exti.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_i2c.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usart.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h;Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc/usbd_hid.h;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_bus.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_system.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_utils.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dmamux.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_exti.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_i2c.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usart.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h;Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc/usbd_hid.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f446xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;Drivers/CMSIS/Include/cachel1_armv7.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/cmsis_armclang_ltm.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_armv81mml.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm35p.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm55.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_cm85.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/core_starmc1.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/pac_armv81.h;Drivers/CMSIS/Include/pmu_armv8.h;Drivers/CMSIS/Include/tz_context.h;
-
-[PreviousUsedCubeIDEFiles]
-SourceFiles=Core/Src/main.c;USB_DEVICE/App/usb_device.c;USB_DEVICE/Target/usbd_conf.c;USB_DEVICE/App/usbd_desc.c;Core/Src/stm32f4xx_it.c;Core/Src/stm32f4xx_hal_msp.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c;Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;Core/Src/system_stm32f4xx.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c;Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;Core/Src/system_stm32f4xx.c;;;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c;
-HeaderPath=Drivers/STM32F4xx_HAL_Driver/Inc;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy;Middlewares/ST/STM32_USB_Device_Library/Core/Inc;Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc;Drivers/CMSIS/Device/ST/STM32F4xx/Include;Drivers/CMSIS/Include;USB_DEVICE/App;USB_DEVICE/Target;Core/Inc;
-CDefines=USE_HAL_DRIVER;STM32F446xx;USE_HAL_DRIVER;USE_HAL_DRIVER;
-
diff --git a/firmware/numpad/numpad/Core/Inc/numpad-config b/firmware/numpad/numpad/Core/Inc/numpad-config
new file mode 100644
index 00000000..e69de29b
diff --git a/firmware/numpad/numpad/Core/Inc/numpad-config.h b/firmware/numpad/numpad/Core/Inc/numpad-config.h
new file mode 100644
index 00000000..acdd3d9d
--- /dev/null
+++ b/firmware/numpad/numpad/Core/Inc/numpad-config.h
@@ -0,0 +1,13 @@
+/*
+ * numpad-config.h
+ *
+ * Created on: Aug 21, 2025
+ * Author: kymkim
+ */
+
+#ifndef INC_NUMPAD_CONFIG_H_
+#define INC_NUMPAD_CONFIG_H_
+
+
+
+#endif /* INC_NUMPAD_CONFIG_H_ */
diff --git a/firmware/numpad/numpad/Core/Inc/stm32f4xx_it.h b/firmware/numpad/numpad/Core/Inc/stm32f4xx_it.h
index b180ede0..64d91335 100644
--- a/firmware/numpad/numpad/Core/Inc/stm32f4xx_it.h
+++ b/firmware/numpad/numpad/Core/Inc/stm32f4xx_it.h
@@ -22,7 +22,7 @@
#define __STM32F4xx_IT_H
#ifdef __cplusplus
- extern "C" {
+extern "C" {
#endif
/* Private includes ----------------------------------------------------------*/
@@ -55,10 +55,20 @@ void SVC_Handler(void);
void DebugMon_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
+void DMA1_Stream1_IRQHandler(void);
+void DMA1_Stream3_IRQHandler(void);
+void DMA1_Stream5_IRQHandler(void);
+void DMA1_Stream6_IRQHandler(void);
void I2C1_EV_IRQHandler(void);
void USART1_IRQHandler(void);
void USART2_IRQHandler(void);
+void USART3_IRQHandler(void);
+void DMA2_Stream1_IRQHandler(void);
+void DMA2_Stream2_IRQHandler(void);
void OTG_FS_IRQHandler(void);
+void DMA2_Stream6_IRQHandler(void);
+void DMA2_Stream7_IRQHandler(void);
+void USART6_IRQHandler(void);
/* USER CODE BEGIN EFP */
/* USER CODE END EFP */
diff --git a/firmware/numpad/numpad/Core/Src/main.c b/firmware/numpad/numpad/Core/Src/main.c
index ec16ce94..56cf8f15 100644
--- a/firmware/numpad/numpad/Core/Src/main.c
+++ b/firmware/numpad/numpad/Core/Src/main.c
@@ -19,7 +19,8 @@
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "usb_device.h"
-
+#include
+#include
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
@@ -32,7 +33,20 @@
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
+#define INACTIVE 0x00
+#define ACTIVE 0x01
+#define MASTER 0x02
+uint8_t MODE = INACTIVE;
+#define PACKET_SIZE 4
+#define DMA_QBUFFER_SIZE 64
+
+static uint8_t DMA_QBUFFER[DMA_QBUFFER_SIZE][PACKET_SIZE];
+volatile uint16_t q_head = 0;
+volatile uint16_t q_tail = 0;
+
+UART_HandleTypeDef PARENT; // your parent UART
+static bool PARENT_BUSY = false;
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
@@ -47,6 +61,14 @@ UART_HandleTypeDef huart1;
UART_HandleTypeDef huart2;
UART_HandleTypeDef huart3;
UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_usart1_rx;
+DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart2_rx;
+DMA_HandleTypeDef hdma_usart2_tx;
+DMA_HandleTypeDef hdma_usart3_rx;
+DMA_HandleTypeDef hdma_usart3_tx;
+DMA_HandleTypeDef hdma_usart6_rx;
+DMA_HandleTypeDef hdma_usart6_tx;
/* USER CODE BEGIN PV */
@@ -55,11 +77,18 @@ UART_HandleTypeDef huart6;
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
static void MX_I2C1_Init(void);
static void MX_USART1_UART_Init(void);
static void MX_USART2_UART_Init(void);
static void MX_USART3_UART_Init(void);
static void MX_USART6_UART_Init(void);
+
+//UART Forwarder Functions
+bool DMA_BufferPush(uint8_t *packet);
+bool DMA_BufferPop(uint8_t *packet);
+void DMA_TrySend(void);
+
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
@@ -98,6 +127,7 @@ int main(void)
/* Initialize all configured peripherals */
MX_GPIO_Init();
+ MX_DMA_Init();
MX_I2C1_Init();
MX_USART1_UART_Init();
MX_USART2_UART_Init();
@@ -332,6 +362,44 @@ static void MX_USART6_UART_Init(void)
}
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+ /* DMA1_Stream3_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
+ /* DMA1_Stream5_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
+ /* DMA1_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
+ /* DMA2_Stream1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
+ /* DMA2_Stream2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+ /* DMA2_Stream6_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
+ /* DMA2_Stream7_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
+
+}
+
/**
* @brief GPIO Initialization Function
* @param None
@@ -340,8 +408,8 @@ static void MX_USART6_UART_Init(void)
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
-/* USER CODE BEGIN MX_GPIO_Init_1 */
-/* USER CODE END MX_GPIO_Init_1 */
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+ /* USER CODE END MX_GPIO_Init_1 */
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOH_CLK_ENABLE();
@@ -381,12 +449,40 @@ static void MX_GPIO_Init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
-/* USER CODE BEGIN MX_GPIO_Init_2 */
-/* USER CODE END MX_GPIO_Init_2 */
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+ /* USER CODE END MX_GPIO_Init_2 */
}
/* USER CODE BEGIN 4 */
+/**
+ * @brief Send the following data to the arent
+ * @param data = the data to be sent
+ * @retval None
+ */
+//UART Forwarder Functions
+bool DMA_BufferPush(uint8_t *packet){
+ uint16_t next = (q_head + 1) % DMA_QBUFFER_SIZE;
+ if (next == q_tail) return false; // full
+ memcpy(DMA_QBUFFER[q_head], packet, PACKET_SIZE);
+ q_head = next;
+ return true;
+}
+
+bool DMA_BufferPop(uint8_t *packet) {
+ if (q_head == q_tail) return false; // empty
+ memcpy(packet, DMA_QBUFFER[q_tail], PACKET_SIZE);
+ q_tail = (q_tail + 1) % DMA_QBUFFER_SIZE;
+ return true;
+}
+
+void DMA_TrySend(void){
+ uint8_t pkt[PACKET_SIZE];
+ if (!PARENT_BUSY && DMA_BufferPop(pkt)) {
+ PARENT_BUSY = true;
+ HAL_UART_Transmit_DMA(&PARENT, pkt, PACKET_SIZE);
+ }
+}
/* USER CODE END 4 */
/**
@@ -403,8 +499,7 @@ void Error_Handler(void)
}
/* USER CODE END Error_Handler_Debug */
}
-
-#ifdef USE_FULL_ASSERT
+#ifdef USE_FULL_ASSERT
/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
diff --git a/firmware/numpad/numpad/Core/Src/stm32f4xx_hal_msp.c b/firmware/numpad/numpad/Core/Src/stm32f4xx_hal_msp.c
index f5db709e..2fca223e 100644
--- a/firmware/numpad/numpad/Core/Src/stm32f4xx_hal_msp.c
+++ b/firmware/numpad/numpad/Core/Src/stm32f4xx_hal_msp.c
@@ -23,6 +23,21 @@
/* USER CODE BEGIN Includes */
/* USER CODE END Includes */
+extern DMA_HandleTypeDef hdma_usart1_rx;
+
+extern DMA_HandleTypeDef hdma_usart1_tx;
+
+extern DMA_HandleTypeDef hdma_usart2_rx;
+
+extern DMA_HandleTypeDef hdma_usart2_tx;
+
+extern DMA_HandleTypeDef hdma_usart3_rx;
+
+extern DMA_HandleTypeDef hdma_usart3_tx;
+
+extern DMA_HandleTypeDef hdma_usart6_rx;
+
+extern DMA_HandleTypeDef hdma_usart6_tx;
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN TD */
@@ -78,19 +93,19 @@ void HAL_MspInit(void)
}
/**
-* @brief I2C MSP Initialization
-* This function configures the hardware resources used in this example
-* @param hi2c: I2C handle pointer
-* @retval None
-*/
+ * @brief I2C MSP Initialization
+ * This function configures the hardware resources used in this example
+ * @param hi2c: I2C handle pointer
+ * @retval None
+ */
void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(hi2c->Instance==I2C1)
{
- /* USER CODE BEGIN I2C1_MspInit 0 */
+ /* USER CODE BEGIN I2C1_MspInit 0 */
- /* USER CODE END I2C1_MspInit 0 */
+ /* USER CODE END I2C1_MspInit 0 */
__HAL_RCC_GPIOB_CLK_ENABLE();
/**I2C1 GPIO Configuration
@@ -109,27 +124,27 @@ void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c)
/* I2C1 interrupt Init */
HAL_NVIC_SetPriority(I2C1_EV_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(I2C1_EV_IRQn);
- /* USER CODE BEGIN I2C1_MspInit 1 */
+ /* USER CODE BEGIN I2C1_MspInit 1 */
- /* USER CODE END I2C1_MspInit 1 */
+ /* USER CODE END I2C1_MspInit 1 */
}
}
/**
-* @brief I2C MSP De-Initialization
-* This function freeze the hardware resources used in this example
-* @param hi2c: I2C handle pointer
-* @retval None
-*/
+ * @brief I2C MSP De-Initialization
+ * This function freeze the hardware resources used in this example
+ * @param hi2c: I2C handle pointer
+ * @retval None
+ */
void HAL_I2C_MspDeInit(I2C_HandleTypeDef* hi2c)
{
if(hi2c->Instance==I2C1)
{
- /* USER CODE BEGIN I2C1_MspDeInit 0 */
+ /* USER CODE BEGIN I2C1_MspDeInit 0 */
- /* USER CODE END I2C1_MspDeInit 0 */
+ /* USER CODE END I2C1_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_I2C1_CLK_DISABLE();
@@ -143,27 +158,27 @@ void HAL_I2C_MspDeInit(I2C_HandleTypeDef* hi2c)
/* I2C1 interrupt DeInit */
HAL_NVIC_DisableIRQ(I2C1_EV_IRQn);
- /* USER CODE BEGIN I2C1_MspDeInit 1 */
+ /* USER CODE BEGIN I2C1_MspDeInit 1 */
- /* USER CODE END I2C1_MspDeInit 1 */
+ /* USER CODE END I2C1_MspDeInit 1 */
}
}
/**
-* @brief UART MSP Initialization
-* This function configures the hardware resources used in this example
-* @param huart: UART handle pointer
-* @retval None
-*/
+ * @brief UART MSP Initialization
+ * This function configures the hardware resources used in this example
+ * @param huart: UART handle pointer
+ * @retval None
+ */
void HAL_UART_MspInit(UART_HandleTypeDef* huart)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(huart->Instance==USART1)
{
- /* USER CODE BEGIN USART1_MspInit 0 */
+ /* USER CODE BEGIN USART1_MspInit 0 */
- /* USER CODE END USART1_MspInit 0 */
+ /* USER CODE END USART1_MspInit 0 */
/* Peripheral clock enable */
__HAL_RCC_USART1_CLK_ENABLE();
@@ -179,18 +194,55 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+ /* USART1 DMA Init */
+ /* USART1_RX Init */
+ hdma_usart1_rx.Instance = DMA2_Stream2;
+ hdma_usart1_rx.Init.Channel = DMA_CHANNEL_4;
+ hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
+ hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
+ hdma_usart1_rx.Init.MemInc = DMA_MINC_ENABLE;
+ hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+ hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+ hdma_usart1_rx.Init.Mode = DMA_NORMAL;
+ hdma_usart1_rx.Init.Priority = DMA_PRIORITY_LOW;
+ hdma_usart1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
+ if (HAL_DMA_Init(&hdma_usart1_rx) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ __HAL_LINKDMA(huart,hdmarx,hdma_usart1_rx);
+
+ /* USART1_TX Init */
+ hdma_usart1_tx.Instance = DMA2_Stream7;
+ hdma_usart1_tx.Init.Channel = DMA_CHANNEL_4;
+ hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
+ hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
+ hdma_usart1_tx.Init.MemInc = DMA_MINC_ENABLE;
+ hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+ hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+ hdma_usart1_tx.Init.Mode = DMA_NORMAL;
+ hdma_usart1_tx.Init.Priority = DMA_PRIORITY_LOW;
+ hdma_usart1_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
+ if (HAL_DMA_Init(&hdma_usart1_tx) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ __HAL_LINKDMA(huart,hdmatx,hdma_usart1_tx);
+
/* USART1 interrupt Init */
HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(USART1_IRQn);
- /* USER CODE BEGIN USART1_MspInit 1 */
+ /* USER CODE BEGIN USART1_MspInit 1 */
- /* USER CODE END USART1_MspInit 1 */
+ /* USER CODE END USART1_MspInit 1 */
}
else if(huart->Instance==USART2)
{
- /* USER CODE BEGIN USART2_MspInit 0 */
+ /* USER CODE BEGIN USART2_MspInit 0 */
- /* USER CODE END USART2_MspInit 0 */
+ /* USER CODE END USART2_MspInit 0 */
/* Peripheral clock enable */
__HAL_RCC_USART2_CLK_ENABLE();
@@ -206,18 +258,55 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+ /* USART2 DMA Init */
+ /* USART2_RX Init */
+ hdma_usart2_rx.Instance = DMA1_Stream5;
+ hdma_usart2_rx.Init.Channel = DMA_CHANNEL_4;
+ hdma_usart2_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
+ hdma_usart2_rx.Init.PeriphInc = DMA_PINC_DISABLE;
+ hdma_usart2_rx.Init.MemInc = DMA_MINC_ENABLE;
+ hdma_usart2_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+ hdma_usart2_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+ hdma_usart2_rx.Init.Mode = DMA_NORMAL;
+ hdma_usart2_rx.Init.Priority = DMA_PRIORITY_LOW;
+ hdma_usart2_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
+ if (HAL_DMA_Init(&hdma_usart2_rx) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ __HAL_LINKDMA(huart,hdmarx,hdma_usart2_rx);
+
+ /* USART2_TX Init */
+ hdma_usart2_tx.Instance = DMA1_Stream6;
+ hdma_usart2_tx.Init.Channel = DMA_CHANNEL_4;
+ hdma_usart2_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
+ hdma_usart2_tx.Init.PeriphInc = DMA_PINC_DISABLE;
+ hdma_usart2_tx.Init.MemInc = DMA_MINC_ENABLE;
+ hdma_usart2_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+ hdma_usart2_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+ hdma_usart2_tx.Init.Mode = DMA_NORMAL;
+ hdma_usart2_tx.Init.Priority = DMA_PRIORITY_LOW;
+ hdma_usart2_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
+ if (HAL_DMA_Init(&hdma_usart2_tx) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ __HAL_LINKDMA(huart,hdmatx,hdma_usart2_tx);
+
/* USART2 interrupt Init */
HAL_NVIC_SetPriority(USART2_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(USART2_IRQn);
- /* USER CODE BEGIN USART2_MspInit 1 */
+ /* USER CODE BEGIN USART2_MspInit 1 */
- /* USER CODE END USART2_MspInit 1 */
+ /* USER CODE END USART2_MspInit 1 */
}
else if(huart->Instance==USART3)
{
- /* USER CODE BEGIN USART3_MspInit 0 */
+ /* USER CODE BEGIN USART3_MspInit 0 */
- /* USER CODE END USART3_MspInit 0 */
+ /* USER CODE END USART3_MspInit 0 */
/* Peripheral clock enable */
__HAL_RCC_USART3_CLK_ENABLE();
@@ -233,15 +322,55 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- /* USER CODE BEGIN USART3_MspInit 1 */
+ /* USART3 DMA Init */
+ /* USART3_RX Init */
+ hdma_usart3_rx.Instance = DMA1_Stream1;
+ hdma_usart3_rx.Init.Channel = DMA_CHANNEL_4;
+ hdma_usart3_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
+ hdma_usart3_rx.Init.PeriphInc = DMA_PINC_DISABLE;
+ hdma_usart3_rx.Init.MemInc = DMA_MINC_ENABLE;
+ hdma_usart3_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+ hdma_usart3_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+ hdma_usart3_rx.Init.Mode = DMA_NORMAL;
+ hdma_usart3_rx.Init.Priority = DMA_PRIORITY_LOW;
+ hdma_usart3_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
+ if (HAL_DMA_Init(&hdma_usart3_rx) != HAL_OK)
+ {
+ Error_Handler();
+ }
- /* USER CODE END USART3_MspInit 1 */
+ __HAL_LINKDMA(huart,hdmarx,hdma_usart3_rx);
+
+ /* USART3_TX Init */
+ hdma_usart3_tx.Instance = DMA1_Stream3;
+ hdma_usart3_tx.Init.Channel = DMA_CHANNEL_4;
+ hdma_usart3_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
+ hdma_usart3_tx.Init.PeriphInc = DMA_PINC_DISABLE;
+ hdma_usart3_tx.Init.MemInc = DMA_MINC_ENABLE;
+ hdma_usart3_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+ hdma_usart3_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+ hdma_usart3_tx.Init.Mode = DMA_NORMAL;
+ hdma_usart3_tx.Init.Priority = DMA_PRIORITY_LOW;
+ hdma_usart3_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
+ if (HAL_DMA_Init(&hdma_usart3_tx) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ __HAL_LINKDMA(huart,hdmatx,hdma_usart3_tx);
+
+ /* USART3 interrupt Init */
+ HAL_NVIC_SetPriority(USART3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(USART3_IRQn);
+ /* USER CODE BEGIN USART3_MspInit 1 */
+
+ /* USER CODE END USART3_MspInit 1 */
}
else if(huart->Instance==USART6)
{
- /* USER CODE BEGIN USART6_MspInit 0 */
+ /* USER CODE BEGIN USART6_MspInit 0 */
- /* USER CODE END USART6_MspInit 0 */
+ /* USER CODE END USART6_MspInit 0 */
/* Peripheral clock enable */
__HAL_RCC_USART6_CLK_ENABLE();
@@ -257,26 +386,66 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
GPIO_InitStruct.Alternate = GPIO_AF8_USART6;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- /* USER CODE BEGIN USART6_MspInit 1 */
+ /* USART6 DMA Init */
+ /* USART6_RX Init */
+ hdma_usart6_rx.Instance = DMA2_Stream1;
+ hdma_usart6_rx.Init.Channel = DMA_CHANNEL_5;
+ hdma_usart6_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
+ hdma_usart6_rx.Init.PeriphInc = DMA_PINC_DISABLE;
+ hdma_usart6_rx.Init.MemInc = DMA_MINC_ENABLE;
+ hdma_usart6_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+ hdma_usart6_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+ hdma_usart6_rx.Init.Mode = DMA_NORMAL;
+ hdma_usart6_rx.Init.Priority = DMA_PRIORITY_LOW;
+ hdma_usart6_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
+ if (HAL_DMA_Init(&hdma_usart6_rx) != HAL_OK)
+ {
+ Error_Handler();
+ }
- /* USER CODE END USART6_MspInit 1 */
+ __HAL_LINKDMA(huart,hdmarx,hdma_usart6_rx);
+
+ /* USART6_TX Init */
+ hdma_usart6_tx.Instance = DMA2_Stream6;
+ hdma_usart6_tx.Init.Channel = DMA_CHANNEL_5;
+ hdma_usart6_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
+ hdma_usart6_tx.Init.PeriphInc = DMA_PINC_DISABLE;
+ hdma_usart6_tx.Init.MemInc = DMA_MINC_ENABLE;
+ hdma_usart6_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+ hdma_usart6_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+ hdma_usart6_tx.Init.Mode = DMA_NORMAL;
+ hdma_usart6_tx.Init.Priority = DMA_PRIORITY_LOW;
+ hdma_usart6_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
+ if (HAL_DMA_Init(&hdma_usart6_tx) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ __HAL_LINKDMA(huart,hdmatx,hdma_usart6_tx);
+
+ /* USART6 interrupt Init */
+ HAL_NVIC_SetPriority(USART6_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(USART6_IRQn);
+ /* USER CODE BEGIN USART6_MspInit 1 */
+
+ /* USER CODE END USART6_MspInit 1 */
}
}
/**
-* @brief UART MSP De-Initialization
-* This function freeze the hardware resources used in this example
-* @param huart: UART handle pointer
-* @retval None
-*/
+ * @brief UART MSP De-Initialization
+ * This function freeze the hardware resources used in this example
+ * @param huart: UART handle pointer
+ * @retval None
+ */
void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
{
if(huart->Instance==USART1)
{
- /* USER CODE BEGIN USART1_MspDeInit 0 */
+ /* USER CODE BEGIN USART1_MspDeInit 0 */
- /* USER CODE END USART1_MspDeInit 0 */
+ /* USER CODE END USART1_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_USART1_CLK_DISABLE();
@@ -286,17 +455,21 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
*/
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);
+ /* USART1 DMA DeInit */
+ HAL_DMA_DeInit(huart->hdmarx);
+ HAL_DMA_DeInit(huart->hdmatx);
+
/* USART1 interrupt DeInit */
HAL_NVIC_DisableIRQ(USART1_IRQn);
- /* USER CODE BEGIN USART1_MspDeInit 1 */
+ /* USER CODE BEGIN USART1_MspDeInit 1 */
- /* USER CODE END USART1_MspDeInit 1 */
+ /* USER CODE END USART1_MspDeInit 1 */
}
else if(huart->Instance==USART2)
{
- /* USER CODE BEGIN USART2_MspDeInit 0 */
+ /* USER CODE BEGIN USART2_MspDeInit 0 */
- /* USER CODE END USART2_MspDeInit 0 */
+ /* USER CODE END USART2_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_USART2_CLK_DISABLE();
@@ -306,17 +479,21 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
*/
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3);
+ /* USART2 DMA DeInit */
+ HAL_DMA_DeInit(huart->hdmarx);
+ HAL_DMA_DeInit(huart->hdmatx);
+
/* USART2 interrupt DeInit */
HAL_NVIC_DisableIRQ(USART2_IRQn);
- /* USER CODE BEGIN USART2_MspDeInit 1 */
+ /* USER CODE BEGIN USART2_MspDeInit 1 */
- /* USER CODE END USART2_MspDeInit 1 */
+ /* USER CODE END USART2_MspDeInit 1 */
}
else if(huart->Instance==USART3)
{
- /* USER CODE BEGIN USART3_MspDeInit 0 */
+ /* USER CODE BEGIN USART3_MspDeInit 0 */
- /* USER CODE END USART3_MspDeInit 0 */
+ /* USER CODE END USART3_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_USART3_CLK_DISABLE();
@@ -326,15 +503,21 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
*/
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_10|GPIO_PIN_11);
- /* USER CODE BEGIN USART3_MspDeInit 1 */
+ /* USART3 DMA DeInit */
+ HAL_DMA_DeInit(huart->hdmarx);
+ HAL_DMA_DeInit(huart->hdmatx);
- /* USER CODE END USART3_MspDeInit 1 */
+ /* USART3 interrupt DeInit */
+ HAL_NVIC_DisableIRQ(USART3_IRQn);
+ /* USER CODE BEGIN USART3_MspDeInit 1 */
+
+ /* USER CODE END USART3_MspDeInit 1 */
}
else if(huart->Instance==USART6)
{
- /* USER CODE BEGIN USART6_MspDeInit 0 */
+ /* USER CODE BEGIN USART6_MspDeInit 0 */
- /* USER CODE END USART6_MspDeInit 0 */
+ /* USER CODE END USART6_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_USART6_CLK_DISABLE();
@@ -344,9 +527,15 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
*/
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_6|GPIO_PIN_7);
- /* USER CODE BEGIN USART6_MspDeInit 1 */
+ /* USART6 DMA DeInit */
+ HAL_DMA_DeInit(huart->hdmarx);
+ HAL_DMA_DeInit(huart->hdmatx);
- /* USER CODE END USART6_MspDeInit 1 */
+ /* USART6 interrupt DeInit */
+ HAL_NVIC_DisableIRQ(USART6_IRQn);
+ /* USER CODE BEGIN USART6_MspDeInit 1 */
+
+ /* USER CODE END USART6_MspDeInit 1 */
}
}
diff --git a/firmware/numpad/numpad/Core/Src/stm32f4xx_it.c b/firmware/numpad/numpad/Core/Src/stm32f4xx_it.c
index e3da0062..f047fea6 100644
--- a/firmware/numpad/numpad/Core/Src/stm32f4xx_it.c
+++ b/firmware/numpad/numpad/Core/Src/stm32f4xx_it.c
@@ -57,8 +57,18 @@
/* External variables --------------------------------------------------------*/
extern PCD_HandleTypeDef hpcd_USB_OTG_FS;
extern I2C_HandleTypeDef hi2c1;
+extern DMA_HandleTypeDef hdma_usart1_rx;
+extern DMA_HandleTypeDef hdma_usart1_tx;
+extern DMA_HandleTypeDef hdma_usart2_rx;
+extern DMA_HandleTypeDef hdma_usart2_tx;
+extern DMA_HandleTypeDef hdma_usart3_rx;
+extern DMA_HandleTypeDef hdma_usart3_tx;
+extern DMA_HandleTypeDef hdma_usart6_rx;
+extern DMA_HandleTypeDef hdma_usart6_tx;
extern UART_HandleTypeDef huart1;
extern UART_HandleTypeDef huart2;
+extern UART_HandleTypeDef huart3;
+extern UART_HandleTypeDef huart6;
/* USER CODE BEGIN EV */
/* USER CODE END EV */
@@ -201,6 +211,62 @@ void SysTick_Handler(void)
/* please refer to the startup file (startup_stm32f4xx.s). */
/******************************************************************************/
+/**
+ * @brief This function handles DMA1 stream1 global interrupt.
+ */
+void DMA1_Stream1_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA1_Stream1_IRQn 0 */
+
+ /* USER CODE END DMA1_Stream1_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_usart3_rx);
+ /* USER CODE BEGIN DMA1_Stream1_IRQn 1 */
+
+ /* USER CODE END DMA1_Stream1_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA1 stream3 global interrupt.
+ */
+void DMA1_Stream3_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA1_Stream3_IRQn 0 */
+
+ /* USER CODE END DMA1_Stream3_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_usart3_tx);
+ /* USER CODE BEGIN DMA1_Stream3_IRQn 1 */
+
+ /* USER CODE END DMA1_Stream3_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA1 stream5 global interrupt.
+ */
+void DMA1_Stream5_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA1_Stream5_IRQn 0 */
+
+ /* USER CODE END DMA1_Stream5_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_usart2_rx);
+ /* USER CODE BEGIN DMA1_Stream5_IRQn 1 */
+
+ /* USER CODE END DMA1_Stream5_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA1 stream6 global interrupt.
+ */
+void DMA1_Stream6_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA1_Stream6_IRQn 0 */
+
+ /* USER CODE END DMA1_Stream6_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_usart2_tx);
+ /* USER CODE BEGIN DMA1_Stream6_IRQn 1 */
+
+ /* USER CODE END DMA1_Stream6_IRQn 1 */
+}
+
/**
* @brief This function handles I2C1 event interrupt.
*/
@@ -243,6 +309,48 @@ void USART2_IRQHandler(void)
/* USER CODE END USART2_IRQn 1 */
}
+/**
+ * @brief This function handles USART3 global interrupt.
+ */
+void USART3_IRQHandler(void)
+{
+ /* USER CODE BEGIN USART3_IRQn 0 */
+
+ /* USER CODE END USART3_IRQn 0 */
+ HAL_UART_IRQHandler(&huart3);
+ /* USER CODE BEGIN USART3_IRQn 1 */
+
+ /* USER CODE END USART3_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA2 stream1 global interrupt.
+ */
+void DMA2_Stream1_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA2_Stream1_IRQn 0 */
+
+ /* USER CODE END DMA2_Stream1_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_usart6_rx);
+ /* USER CODE BEGIN DMA2_Stream1_IRQn 1 */
+
+ /* USER CODE END DMA2_Stream1_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA2 stream2 global interrupt.
+ */
+void DMA2_Stream2_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA2_Stream2_IRQn 0 */
+
+ /* USER CODE END DMA2_Stream2_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_usart1_rx);
+ /* USER CODE BEGIN DMA2_Stream2_IRQn 1 */
+
+ /* USER CODE END DMA2_Stream2_IRQn 1 */
+}
+
/**
* @brief This function handles USB On The Go FS global interrupt.
*/
@@ -257,6 +365,48 @@ void OTG_FS_IRQHandler(void)
/* USER CODE END OTG_FS_IRQn 1 */
}
+/**
+ * @brief This function handles DMA2 stream6 global interrupt.
+ */
+void DMA2_Stream6_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA2_Stream6_IRQn 0 */
+
+ /* USER CODE END DMA2_Stream6_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_usart6_tx);
+ /* USER CODE BEGIN DMA2_Stream6_IRQn 1 */
+
+ /* USER CODE END DMA2_Stream6_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA2 stream7 global interrupt.
+ */
+void DMA2_Stream7_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA2_Stream7_IRQn 0 */
+
+ /* USER CODE END DMA2_Stream7_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_usart1_tx);
+ /* USER CODE BEGIN DMA2_Stream7_IRQn 1 */
+
+ /* USER CODE END DMA2_Stream7_IRQn 1 */
+}
+
+/**
+ * @brief This function handles USART6 global interrupt.
+ */
+void USART6_IRQHandler(void)
+{
+ /* USER CODE BEGIN USART6_IRQn 0 */
+
+ /* USER CODE END USART6_IRQn 0 */
+ HAL_UART_IRQHandler(&huart6);
+ /* USER CODE BEGIN USART6_IRQn 1 */
+
+ /* USER CODE END USART6_IRQn 1 */
+}
+
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
diff --git a/firmware/numpad/numpad/USB_DEVICE/App/usbd_desc.h b/firmware/numpad/numpad/USB_DEVICE/App/usbd_desc.h
index 6eab7e4e..a42cff0c 100644
--- a/firmware/numpad/numpad/USB_DEVICE/App/usbd_desc.h
+++ b/firmware/numpad/numpad/USB_DEVICE/App/usbd_desc.h
@@ -41,10 +41,10 @@
* @{
*/
-/** @defgroup USBD_DESC_Exported_Constants USBD_DESC_Exported_Constants
- * @brief Constants.
- * @{
- */
+/*
+ * User to provide a unique ID to define the USB device serial number
+ * The use of UID_BASE register can be considered as an example
+ */
#define DEVICE_ID1 (UID_BASE)
#define DEVICE_ID2 (UID_BASE + 0x4)
#define DEVICE_ID3 (UID_BASE + 0x8)
diff --git a/firmware/numpad/numpad/numpad.ioc b/firmware/numpad/numpad/numpad.ioc
index 3bf464b5..b669d218 100644
--- a/firmware/numpad/numpad/numpad.ioc
+++ b/firmware/numpad/numpad/numpad.ioc
@@ -2,22 +2,112 @@
CAD.formats=
CAD.pinconfig=
CAD.provider=
+Dma.Request0=USART2_RX
+Dma.Request1=USART1_RX
+Dma.Request2=USART3_RX
+Dma.Request3=USART1_TX
+Dma.Request4=USART2_TX
+Dma.Request5=USART3_TX
+Dma.Request6=USART6_RX
+Dma.Request7=USART6_TX
+Dma.RequestsNb=8
+Dma.USART1_RX.1.Direction=DMA_PERIPH_TO_MEMORY
+Dma.USART1_RX.1.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.USART1_RX.1.Instance=DMA2_Stream2
+Dma.USART1_RX.1.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART1_RX.1.MemInc=DMA_MINC_ENABLE
+Dma.USART1_RX.1.Mode=DMA_NORMAL
+Dma.USART1_RX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.USART1_RX.1.PeriphInc=DMA_PINC_DISABLE
+Dma.USART1_RX.1.Priority=DMA_PRIORITY_LOW
+Dma.USART1_RX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
+Dma.USART1_TX.3.Direction=DMA_MEMORY_TO_PERIPH
+Dma.USART1_TX.3.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.USART1_TX.3.Instance=DMA2_Stream7
+Dma.USART1_TX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART1_TX.3.MemInc=DMA_MINC_ENABLE
+Dma.USART1_TX.3.Mode=DMA_NORMAL
+Dma.USART1_TX.3.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.USART1_TX.3.PeriphInc=DMA_PINC_DISABLE
+Dma.USART1_TX.3.Priority=DMA_PRIORITY_LOW
+Dma.USART1_TX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
+Dma.USART2_RX.0.Direction=DMA_PERIPH_TO_MEMORY
+Dma.USART2_RX.0.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.USART2_RX.0.Instance=DMA1_Stream5
+Dma.USART2_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART2_RX.0.MemInc=DMA_MINC_ENABLE
+Dma.USART2_RX.0.Mode=DMA_NORMAL
+Dma.USART2_RX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.USART2_RX.0.PeriphInc=DMA_PINC_DISABLE
+Dma.USART2_RX.0.Priority=DMA_PRIORITY_LOW
+Dma.USART2_RX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
+Dma.USART2_TX.4.Direction=DMA_MEMORY_TO_PERIPH
+Dma.USART2_TX.4.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.USART2_TX.4.Instance=DMA1_Stream6
+Dma.USART2_TX.4.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART2_TX.4.MemInc=DMA_MINC_ENABLE
+Dma.USART2_TX.4.Mode=DMA_NORMAL
+Dma.USART2_TX.4.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.USART2_TX.4.PeriphInc=DMA_PINC_DISABLE
+Dma.USART2_TX.4.Priority=DMA_PRIORITY_LOW
+Dma.USART2_TX.4.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
+Dma.USART3_RX.2.Direction=DMA_PERIPH_TO_MEMORY
+Dma.USART3_RX.2.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.USART3_RX.2.Instance=DMA1_Stream1
+Dma.USART3_RX.2.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART3_RX.2.MemInc=DMA_MINC_ENABLE
+Dma.USART3_RX.2.Mode=DMA_NORMAL
+Dma.USART3_RX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.USART3_RX.2.PeriphInc=DMA_PINC_DISABLE
+Dma.USART3_RX.2.Priority=DMA_PRIORITY_LOW
+Dma.USART3_RX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
+Dma.USART3_TX.5.Direction=DMA_MEMORY_TO_PERIPH
+Dma.USART3_TX.5.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.USART3_TX.5.Instance=DMA1_Stream3
+Dma.USART3_TX.5.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART3_TX.5.MemInc=DMA_MINC_ENABLE
+Dma.USART3_TX.5.Mode=DMA_NORMAL
+Dma.USART3_TX.5.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.USART3_TX.5.PeriphInc=DMA_PINC_DISABLE
+Dma.USART3_TX.5.Priority=DMA_PRIORITY_LOW
+Dma.USART3_TX.5.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
+Dma.USART6_RX.6.Direction=DMA_PERIPH_TO_MEMORY
+Dma.USART6_RX.6.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.USART6_RX.6.Instance=DMA2_Stream1
+Dma.USART6_RX.6.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART6_RX.6.MemInc=DMA_MINC_ENABLE
+Dma.USART6_RX.6.Mode=DMA_NORMAL
+Dma.USART6_RX.6.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.USART6_RX.6.PeriphInc=DMA_PINC_DISABLE
+Dma.USART6_RX.6.Priority=DMA_PRIORITY_LOW
+Dma.USART6_RX.6.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
+Dma.USART6_TX.7.Direction=DMA_MEMORY_TO_PERIPH
+Dma.USART6_TX.7.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.USART6_TX.7.Instance=DMA2_Stream6
+Dma.USART6_TX.7.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART6_TX.7.MemInc=DMA_MINC_ENABLE
+Dma.USART6_TX.7.Mode=DMA_NORMAL
+Dma.USART6_TX.7.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.USART6_TX.7.PeriphInc=DMA_PINC_DISABLE
+Dma.USART6_TX.7.Priority=DMA_PRIORITY_LOW
+Dma.USART6_TX.7.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
File.Version=6
GPIO.groupedBy=Group By Peripherals
KeepUserPlacement=false
Mcu.CPN=STM32F446RET6
Mcu.Family=STM32F4
-Mcu.IP0=I2C1
-Mcu.IP1=NVIC
-Mcu.IP2=RCC
-Mcu.IP3=SYS
-Mcu.IP4=USART1
-Mcu.IP5=USART2
-Mcu.IP6=USART3
-Mcu.IP7=USART6
-Mcu.IP8=USB_DEVICE
-Mcu.IP9=USB_OTG_FS
-Mcu.IPNb=10
+Mcu.IP0=DMA
+Mcu.IP1=I2C1
+Mcu.IP10=USB_OTG_FS
+Mcu.IP2=NVIC
+Mcu.IP3=RCC
+Mcu.IP4=SYS
+Mcu.IP5=USART1
+Mcu.IP6=USART2
+Mcu.IP7=USART3
+Mcu.IP8=USART6
+Mcu.IP9=USB_DEVICE
+Mcu.IPNb=11
Mcu.Name=STM32F446R(C-E)Tx
Mcu.Package=LQFP64
Mcu.Pin0=PH0-OSC_IN
@@ -56,9 +146,17 @@ Mcu.PinsNb=32
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F446RETx
-MxCube.Version=6.13.0
-MxDb.Version=DB.6.0.130
+MxCube.Version=6.15.0
+MxDb.Version=DB.6.0.150
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
+NVIC.DMA1_Stream1_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
+NVIC.DMA1_Stream3_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
+NVIC.DMA1_Stream5_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
+NVIC.DMA1_Stream6_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
+NVIC.DMA2_Stream1_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
+NVIC.DMA2_Stream2_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
+NVIC.DMA2_Stream6_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
+NVIC.DMA2_Stream7_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
@@ -72,6 +170,8 @@ NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false
NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.USART2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
+NVIC.USART3_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
+NVIC.USART6_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA10.Mode=Asynchronous
PA10.Signal=USART1_RX
@@ -199,7 +299,7 @@ ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath=
ProjectManager.UnderRoot=true
-ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_I2C1_Init-I2C1-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_USART2_UART_Init-USART2-false-HAL-true,6-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false,7-MX_USART3_UART_Init-USART3-false-HAL-true,8-MX_USART6_UART_Init-USART6-false-HAL-true
+ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_I2C1_Init-I2C1-false-HAL-true,5-MX_USART1_UART_Init-USART1-false-HAL-true,6-MX_USART2_UART_Init-USART2-false-HAL-true,7-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false,8-MX_USART3_UART_Init-USART3-false-HAL-true,9-MX_USART6_UART_Init-USART6-false-HAL-true
RCC.CECFreq_Value=32786.88524590164
RCC.CortexFreq_Value=16000000
RCC.FamilyName=M