From 886ecf17785c632e061baee084e30d0ba1d3670e Mon Sep 17 00:00:00 2001 From: Kymkim Date: Sat, 21 Jun 2025 20:47:20 -0700 Subject: [PATCH] not working. should make the led flash if button on pa10 is pressed. --- .../CAN/CAN-B/.vscode/c_cpp_properties.json | 22 +- .../CAN/CAN-B/{ModuleCAN.ioc => CAN-B.ioc} | 95 +-- .../CAN/CAN-B/Inc/stm32f1xx_hal_conf.h | 2 +- .../components/CAN/CAN-B/Inc/stm32f1xx_it.h | 1 - .../components/CAN/CAN-B/Inc/usb_device.h | 102 --- .../components/CAN/CAN-B/Inc/usbd_cdc_if.h | 131 ---- firmware/components/CAN/CAN-B/Inc/usbd_conf.h | 175 ----- firmware/components/CAN/CAN-B/Inc/usbd_desc.h | 143 ---- firmware/components/CAN/CAN-B/Src/can.c | 44 +- firmware/components/CAN/CAN-B/Src/gpio.c | 7 +- firmware/components/CAN/CAN-B/Src/main.c | 179 +++-- .../components/CAN/CAN-B/Src/stm32f1xx_it.c | 16 - .../components/CAN/CAN-B/Src/usb_device.c | 100 --- .../components/CAN/CAN-B/Src/usbd_cdc_if.c | 303 -------- firmware/components/CAN/CAN-B/Src/usbd_conf.c | 666 ------------------ firmware/components/CAN/CAN-B/Src/usbd_desc.c | 394 ----------- firmware/components/CAN/CAN-B/stm32pio.ini | 5 +- .../build/nucleo_f446re/.sconsign313.dblite | Bin 0 -> 599733 bytes .../gcc/startup_stm32f446xx.o | Bin 0 -> 6196 bytes .../FrameworkCMSISDevice/system_stm32f4xx.o | Bin 0 -> 1620 bytes .../FrameworkHALDriver/Src/stm32f4xx_hal.o | Bin 0 -> 6228 bytes .../Src/stm32f4xx_hal_adc.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_adc_ex.o | Bin 0 -> 800 bytes .../Src/stm32f4xx_hal_can.o | Bin 0 -> 8556 bytes .../Src/stm32f4xx_hal_cec.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_cortex.o | Bin 0 -> 4792 bytes .../Src/stm32f4xx_hal_crc.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_cryp.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_cryp_ex.o | Bin 0 -> 800 bytes .../Src/stm32f4xx_hal_dac.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_dac_ex.o | Bin 0 -> 800 bytes .../Src/stm32f4xx_hal_dcmi.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_dcmi_ex.o | Bin 0 -> 800 bytes .../Src/stm32f4xx_hal_dfsdm.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_dma.o | Bin 0 -> 4832 bytes .../Src/stm32f4xx_hal_dma2d.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_dma_ex.o | Bin 0 -> 4188 bytes .../Src/stm32f4xx_hal_dsi.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_eth.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_exti.o | Bin 0 -> 2692 bytes .../Src/stm32f4xx_hal_flash.o | Bin 0 -> 4792 bytes .../Src/stm32f4xx_hal_flash_ex.o | Bin 0 -> 3708 bytes .../Src/stm32f4xx_hal_flash_ramfunc.o | Bin 0 -> 1396 bytes .../Src/stm32f4xx_hal_fmpi2c.o | Bin 0 -> 800 bytes .../Src/stm32f4xx_hal_fmpi2c_ex.o | Bin 0 -> 800 bytes .../Src/stm32f4xx_hal_fmpsmbus.o | Bin 0 -> 800 bytes .../Src/stm32f4xx_hal_fmpsmbus_ex.o | Bin 0 -> 804 bytes .../Src/stm32f4xx_hal_gpio.o | Bin 0 -> 2788 bytes .../Src/stm32f4xx_hal_hash.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_hash_ex.o | Bin 0 -> 800 bytes .../Src/stm32f4xx_hal_hcd.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_i2c.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_i2c_ex.o | Bin 0 -> 800 bytes .../Src/stm32f4xx_hal_i2s.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_i2s_ex.o | Bin 0 -> 800 bytes .../Src/stm32f4xx_hal_irda.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_iwdg.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_lptim.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_ltdc.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_ltdc_ex.o | Bin 0 -> 800 bytes .../Src/stm32f4xx_hal_mmc.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_nand.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_nor.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_pccard.o | Bin 0 -> 800 bytes .../Src/stm32f4xx_hal_pcd.o | Bin 0 -> 11340 bytes .../Src/stm32f4xx_hal_pcd_ex.o | Bin 0 -> 1772 bytes .../Src/stm32f4xx_hal_pwr.o | Bin 0 -> 3948 bytes .../Src/stm32f4xx_hal_pwr_ex.o | Bin 0 -> 3360 bytes .../Src/stm32f4xx_hal_qspi.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_rcc.o | Bin 0 -> 5604 bytes .../Src/stm32f4xx_hal_rcc_ex.o | Bin 0 -> 7464 bytes .../Src/stm32f4xx_hal_rng.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_rtc.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_rtc_ex.o | Bin 0 -> 800 bytes .../Src/stm32f4xx_hal_sai.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_sai_ex.o | Bin 0 -> 800 bytes .../FrameworkHALDriver/Src/stm32f4xx_hal_sd.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_sdram.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_smartcard.o | Bin 0 -> 800 bytes .../Src/stm32f4xx_hal_smbus.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_spdifrx.o | Bin 0 -> 800 bytes .../Src/stm32f4xx_hal_spi.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_sram.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_tim.o | Bin 0 -> 31692 bytes .../Src/stm32f4xx_hal_tim_ex.o | Bin 0 -> 12768 bytes .../Src/stm32f4xx_hal_uart.o | Bin 0 -> 16808 bytes .../Src/stm32f4xx_hal_usart.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_hal_wwdg.o | Bin 0 -> 796 bytes .../FrameworkHALDriver/Src/stm32f4xx_ll_adc.o | Bin 0 -> 796 bytes .../FrameworkHALDriver/Src/stm32f4xx_ll_crc.o | Bin 0 -> 796 bytes .../FrameworkHALDriver/Src/stm32f4xx_ll_dac.o | Bin 0 -> 796 bytes .../FrameworkHALDriver/Src/stm32f4xx_ll_dma.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_ll_dma2d.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_ll_exti.o | Bin 0 -> 796 bytes .../FrameworkHALDriver/Src/stm32f4xx_ll_fmc.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_ll_fmpi2c.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_ll_fsmc.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_ll_gpio.o | Bin 0 -> 796 bytes .../FrameworkHALDriver/Src/stm32f4xx_ll_i2c.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_ll_lptim.o | Bin 0 -> 796 bytes .../FrameworkHALDriver/Src/stm32f4xx_ll_pwr.o | Bin 0 -> 796 bytes .../FrameworkHALDriver/Src/stm32f4xx_ll_rcc.o | Bin 0 -> 796 bytes .../FrameworkHALDriver/Src/stm32f4xx_ll_rng.o | Bin 0 -> 796 bytes .../FrameworkHALDriver/Src/stm32f4xx_ll_rtc.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_ll_sdmmc.o | Bin 0 -> 796 bytes .../FrameworkHALDriver/Src/stm32f4xx_ll_spi.o | Bin 0 -> 796 bytes .../FrameworkHALDriver/Src/stm32f4xx_ll_tim.o | Bin 0 -> 796 bytes .../Src/stm32f4xx_ll_usart.o | Bin 0 -> 796 bytes .../FrameworkHALDriver/Src/stm32f4xx_ll_usb.o | Bin 0 -> 12804 bytes .../Src/stm32f4xx_ll_utils.o | Bin 0 -> 3312 bytes .../.pio/build/nucleo_f446re/firmware.bin | Bin 0 -> 17452 bytes .../.pio/build/nucleo_f446re/firmware.elf | Bin 0 -> 150348 bytes .../.pio/build/nucleo_f446re/idedata.json | 1 + .../build/nucleo_f446re/lib1a3/DFU/usbd_dfu.o | Bin 0 -> 5292 bytes .../.pio/build/nucleo_f446re/lib1a3/libDFU.a | Bin 0 -> 5464 bytes .../build/nucleo_f446re/lib2f9/MSC/usbd_msc.o | Bin 0 -> 4960 bytes .../nucleo_f446re/lib2f9/MSC/usbd_msc_bot.o | Bin 0 -> 3544 bytes .../nucleo_f446re/lib2f9/MSC/usbd_msc_data.o | Bin 0 -> 1308 bytes .../nucleo_f446re/lib2f9/MSC/usbd_msc_scsi.o | Bin 0 -> 4272 bytes .../.pio/build/nucleo_f446re/lib2f9/libMSC.a | Bin 0 -> 14980 bytes .../nucleo_f446re/lib337/Core/usbd_core.o | Bin 0 -> 5800 bytes .../nucleo_f446re/lib337/Core/usbd_ctlreq.o | Bin 0 -> 4032 bytes .../nucleo_f446re/lib337/Core/usbd_ioreq.o | Bin 0 -> 2332 bytes .../.pio/build/nucleo_f446re/lib337/libCore.a | Bin 0 -> 13208 bytes .../lib389/Printer/usbd_printer.o | Bin 0 -> 5228 bytes .../build/nucleo_f446re/lib389/libPrinter.a | Bin 0 -> 5504 bytes .../build/nucleo_f446re/lib401/HID/usbd_hid.o | Bin 0 -> 4584 bytes .../.pio/build/nucleo_f446re/lib401/libHID.a | Bin 0 -> 4786 bytes .../nucleo_f446re/lib420/CCID/usbd_ccid.o | Bin 0 -> 7084 bytes .../nucleo_f446re/lib420/CCID/usbd_ccid_cmd.o | Bin 0 -> 8244 bytes .../.pio/build/nucleo_f446re/lib420/libCCID.a | Bin 0 -> 16248 bytes .../lib4a5/CustomHID/usbd_customhid.o | Bin 0 -> 5416 bytes .../build/nucleo_f446re/lib4a5/libCustomHID.a | Bin 0 -> 5750 bytes .../lib7dc/CDC_RNDIS/usbd_cdc_rndis.o | Bin 0 -> 8080 bytes .../build/nucleo_f446re/lib7dc/libCDC_RNDIS.a | Bin 0 -> 8560 bytes .../CompositeBuilder/usbd_composite_builder.o | Bin 0 -> 800 bytes .../lib840/libCompositeBuilder.a | Bin 0 -> 1018 bytes .../nucleo_f446re/libFrameworkCMSISDevice.a | Bin 0 -> 10504 bytes .../build/nucleo_f446re/liba1a/MTP/usbd_mtp.o | Bin 0 -> 5676 bytes .../nucleo_f446re/liba1a/MTP/usbd_mtp_opt.o | Bin 0 -> 12288 bytes .../liba1a/MTP/usbd_mtp_storage.o | Bin 0 -> 5044 bytes .../.pio/build/nucleo_f446re/liba1a/libMTP.a | Bin 0 -> 24168 bytes .../nucleo_f446re/libad8/VIDEO/usbd_video.o | Bin 0 -> 7084 bytes .../build/nucleo_f446re/libad8/libVIDEO.a | Bin 0 -> 7264 bytes .../libb6b/CDC_ECM/usbd_cdc_ecm.o | Bin 0 -> 6640 bytes .../build/nucleo_f446re/libb6b/libCDC_ECM.a | Bin 0 -> 7026 bytes .../nucleo_f446re/libdb3/AUDIO/usbd_audio.o | Bin 0 -> 5424 bytes .../build/nucleo_f446re/libdb3/libAUDIO.a | Bin 0 -> 5624 bytes .../build/nucleo_f446re/libe2d/CDC/usbd_cdc.o | Bin 0 -> 5892 bytes .../.pio/build/nucleo_f446re/libe2d/libCDC.a | Bin 0 -> 6216 bytes .../iidx/.pio/build/nucleo_f446re/src/can.o | Bin 0 -> 1772 bytes .../iidx/.pio/build/nucleo_f446re/src/gpio.o | Bin 0 -> 1516 bytes .../iidx/.pio/build/nucleo_f446re/src/main.o | Bin 0 -> 4480 bytes .../nucleo_f446re/src/stm32f4xx_hal_msp.o | Bin 0 -> 1092 bytes .../build/nucleo_f446re/src/stm32f4xx_it.o | Bin 0 -> 2744 bytes .../iidx/.pio/build/nucleo_f446re/src/tim.o | Bin 0 -> 2784 bytes .../iidx/.pio/build/nucleo_f446re/src/usart.o | Bin 0 -> 1784 bytes .../.pio/build/nucleo_f446re/src/usb_device.o | Bin 0 -> 1320 bytes .../.pio/build/nucleo_f446re/src/usbd_conf.o | Bin 0 -> 9652 bytes .../.pio/build/nucleo_f446re/src/usbd_desc.o | Bin 0 -> 4364 bytes .../modules/iidx/.pio/build/project.checksum | 1 + .../iidx/.vscode/c_cpp_properties.json | 210 ++++++ .../modules/iidx/.vscode/launch.json | 47 ++ 163 files changed, 447 insertions(+), 2197 deletions(-) rename firmware/components/CAN/CAN-B/{ModuleCAN.ioc => CAN-B.ioc} (63%) delete mode 100644 firmware/components/CAN/CAN-B/Inc/usb_device.h delete mode 100644 firmware/components/CAN/CAN-B/Inc/usbd_cdc_if.h delete mode 100644 firmware/components/CAN/CAN-B/Inc/usbd_conf.h delete mode 100644 firmware/components/CAN/CAN-B/Inc/usbd_desc.h delete mode 100644 firmware/components/CAN/CAN-B/Src/usb_device.c delete mode 100644 firmware/components/CAN/CAN-B/Src/usbd_cdc_if.c delete mode 100644 firmware/components/CAN/CAN-B/Src/usbd_conf.c delete mode 100644 firmware/components/CAN/CAN-B/Src/usbd_desc.c create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/.sconsign313.dblite create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkCMSISDevice/gcc/startup_stm32f446xx.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkCMSISDevice/system_stm32f4xx.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_adc.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_adc_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_can.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_cec.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_cortex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_crc.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_cryp.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_cryp_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dac.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dac_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dcmi.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dcmi_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dfsdm.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dma.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dma2d.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dma_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dsi.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_eth.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_exti.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_flash.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_flash_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_flash_ramfunc.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_fmpi2c.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_fmpi2c_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_fmpsmbus.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_fmpsmbus_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_gpio.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_hash.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_hash_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_hcd.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_i2c.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_i2c_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_i2s.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_i2s_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_irda.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_iwdg.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_lptim.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_ltdc.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_ltdc_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_mmc.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_nand.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_nor.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_pccard.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_pcd.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_pcd_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_pwr.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_pwr_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_qspi.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_rcc.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_rcc_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_rng.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_rtc.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_rtc_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_sai.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_sai_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_sd.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_sdram.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_smartcard.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_smbus.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_spdifrx.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_spi.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_sram.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_tim.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_tim_ex.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_uart.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_usart.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_wwdg.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_adc.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_crc.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_dac.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_dma.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_dma2d.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_exti.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_fmc.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_fmpi2c.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_fsmc.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_gpio.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_i2c.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_lptim.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_pwr.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_rcc.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_rng.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_rtc.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_sdmmc.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_spi.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_tim.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_usart.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_usb.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_utils.o create mode 100755 firmware/components/modules/iidx/.pio/build/nucleo_f446re/firmware.bin create mode 100755 firmware/components/modules/iidx/.pio/build/nucleo_f446re/firmware.elf create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/idedata.json create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib1a3/DFU/usbd_dfu.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib1a3/libDFU.a create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib2f9/MSC/usbd_msc.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib2f9/MSC/usbd_msc_bot.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib2f9/MSC/usbd_msc_data.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib2f9/MSC/usbd_msc_scsi.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib2f9/libMSC.a create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib337/Core/usbd_core.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib337/Core/usbd_ctlreq.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib337/Core/usbd_ioreq.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib337/libCore.a create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib389/Printer/usbd_printer.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib389/libPrinter.a create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib401/HID/usbd_hid.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib401/libHID.a create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib420/CCID/usbd_ccid.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib420/CCID/usbd_ccid_cmd.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib420/libCCID.a create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib4a5/CustomHID/usbd_customhid.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib4a5/libCustomHID.a create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib7dc/CDC_RNDIS/usbd_cdc_rndis.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib7dc/libCDC_RNDIS.a create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib840/CompositeBuilder/usbd_composite_builder.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib840/libCompositeBuilder.a create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/libFrameworkCMSISDevice.a create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/liba1a/MTP/usbd_mtp.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/liba1a/MTP/usbd_mtp_opt.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/liba1a/MTP/usbd_mtp_storage.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/liba1a/libMTP.a create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/libad8/VIDEO/usbd_video.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/libad8/libVIDEO.a create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/libb6b/CDC_ECM/usbd_cdc_ecm.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/libb6b/libCDC_ECM.a create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/libdb3/AUDIO/usbd_audio.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/libdb3/libAUDIO.a create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/libe2d/CDC/usbd_cdc.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/libe2d/libCDC.a create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/can.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/gpio.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/main.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/stm32f4xx_hal_msp.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/stm32f4xx_it.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/tim.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/usart.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/usb_device.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/usbd_conf.o create mode 100644 firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/usbd_desc.o create mode 100644 firmware/components/modules/iidx/.pio/build/project.checksum create mode 100644 firmware/components/modules/iidx/.vscode/c_cpp_properties.json create mode 100644 firmware/components/modules/iidx/.vscode/launch.json diff --git a/firmware/components/CAN/CAN-B/.vscode/c_cpp_properties.json b/firmware/components/CAN/CAN-B/.vscode/c_cpp_properties.json index 8e174318..a17400b1 100644 --- a/firmware/components/CAN/CAN-B/.vscode/c_cpp_properties.json +++ b/firmware/components/CAN/CAN-B/.vscode/c_cpp_properties.json @@ -8,18 +8,13 @@ { "name": "PlatformIO", "includePath": [ - "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", - "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", - "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", - "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Core/Src", - "/home/kymkim/Projects/modular-kbd/firmware/components/CAN/CAN-B/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/CAN/CAN-B/Inc", + "/home/kymkim/Projects/modular-kbd/firmware/components/CAN/CAN-B/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/CMSIS/Include", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/CMSIS/Device/ST/STM32F1xx/Include", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/STM32F1xx_HAL_Driver/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/STM32F1xx_HAL_Driver/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/CMSIS/DSP/Include", - "/home/kymkim/Projects/modular-kbd/firmware/components/CAN/CAN-B/.pio/libdeps/bluepill_f103c8/Unity/src", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/Common", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/ak4343", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/cs43l22", @@ -35,8 +30,12 @@ "/home/kymkim/.platformio/packages/framework-stm32cubef1/Utilities/CPU", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Utilities/Fonts", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Utilities/Log", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Core/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", @@ -62,18 +61,13 @@ "browse": { "limitSymbolsToIncludedHeaders": true, "path": [ - "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", - "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", - "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", - "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Core/Src", - "/home/kymkim/Projects/modular-kbd/firmware/components/CAN/CAN-B/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/CAN/CAN-B/Inc", + "/home/kymkim/Projects/modular-kbd/firmware/components/CAN/CAN-B/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/CMSIS/Include", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/CMSIS/Device/ST/STM32F1xx/Include", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/STM32F1xx_HAL_Driver/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/STM32F1xx_HAL_Driver/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/CMSIS/DSP/Include", - "/home/kymkim/Projects/modular-kbd/firmware/components/CAN/CAN-B/.pio/libdeps/bluepill_f103c8/Unity/src", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/Common", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/ak4343", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/cs43l22", @@ -89,8 +83,12 @@ "/home/kymkim/.platformio/packages/framework-stm32cubef1/Utilities/CPU", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Utilities/Fonts", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Utilities/Log", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Core/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", diff --git a/firmware/components/CAN/CAN-B/ModuleCAN.ioc b/firmware/components/CAN/CAN-B/CAN-B.ioc similarity index 63% rename from firmware/components/CAN/CAN-B/ModuleCAN.ioc rename to firmware/components/CAN/CAN-B/CAN-B.ioc index dea97251..8e7f69f3 100644 --- a/firmware/components/CAN/CAN-B/ModuleCAN.ioc +++ b/firmware/components/CAN/CAN-B/CAN-B.ioc @@ -2,11 +2,12 @@ CAD.formats= CAD.pinconfig= CAD.provider= -CAN.CalculateBaudRate=533333 -CAN.CalculateTimeBit=1875 -CAN.CalculateTimeQuantum=625.0 -CAN.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,Prescaler +CAN.CalculateBaudRate=800000 +CAN.CalculateTimeBit=1250 +CAN.CalculateTimeQuantum=416.6666666666667 +CAN.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,Prescaler,SJW CAN.Prescaler=15 +CAN.SJW=CAN_SJW_1TQ File.Version=6 GPIO.groupedBy= KeepUserPlacement=false @@ -16,24 +17,18 @@ Mcu.IP0=CAN Mcu.IP1=NVIC Mcu.IP2=RCC Mcu.IP3=SYS -Mcu.IP4=USB -Mcu.IP5=USB_DEVICE -Mcu.IPNb=6 +Mcu.IPNb=4 Mcu.Name=STM32F103C(8-B)Tx Mcu.Package=LQFP48 Mcu.Pin0=PC13-TAMPER-RTC Mcu.Pin1=PD0-OSC_IN -Mcu.Pin10=VP_SYS_VS_Systick -Mcu.Pin11=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS Mcu.Pin2=PD1-OSC_OUT -Mcu.Pin3=PA4 -Mcu.Pin4=PA11 -Mcu.Pin5=PA12 -Mcu.Pin6=PA13 -Mcu.Pin7=PA14 -Mcu.Pin8=PB8 -Mcu.Pin9=PB9 -Mcu.PinsNb=12 +Mcu.Pin3=PA11 +Mcu.Pin4=PA12 +Mcu.Pin5=PA13 +Mcu.Pin6=PA14 +Mcu.Pin7=VP_SYS_VS_Systick +Mcu.PinsNb=8 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F103C8Tx @@ -50,24 +45,15 @@ NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 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.USB_LP_CAN1_RX0_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -PA11.Mode=Device -PA11.Signal=USB_DM -PA12.Mode=Device -PA12.Signal=USB_DP -PA13.Locked=true +PA11.Mode=CAN_Activate +PA11.Signal=CAN_RX +PA12.Mode=CAN_Activate +PA12.Signal=CAN_TX PA13.Mode=Serial_Wire PA13.Signal=SYS_JTMS-SWDIO -PA14.Locked=true PA14.Mode=Serial_Wire PA14.Signal=SYS_JTCK-SWCLK -PA4.Locked=true -PA4.Signal=GPIO_Input -PB8.Mode=CAN_Activate -PB8.Signal=CAN_RX -PB9.Mode=CAN_Activate -PB9.Signal=CAN_TX PC13-TAMPER-RTC.Locked=true PC13-TAMPER-RTC.Signal=GPIO_Output PD0-OSC_IN.Mode=HSE-External-Oscillator @@ -79,7 +65,7 @@ ProjectManager.AskForMigrate=true ProjectManager.BackupPrevious=false ProjectManager.CompilerOptimize=6 ProjectManager.ComputerToolchain=false -ProjectManager.CoupleFile=true +ProjectManager.CoupleFile=false ProjectManager.CustomerFirmwarePackage= ProjectManager.DefaultFWLocation=true ProjectManager.DeletePrevious=true @@ -90,50 +76,43 @@ ProjectManager.HalAssertFull=false ProjectManager.HeapSize=0x200 ProjectManager.KeepUserCode=true ProjectManager.LastFirmware=true -ProjectManager.LibraryCopy=1 +ProjectManager.LibraryCopy=0 ProjectManager.MainLocation=Core/Src ProjectManager.NoMain=false ProjectManager.PreviousToolchain= ProjectManager.ProjectBuild=false -ProjectManager.ProjectFileName=ModuleCAN.ioc -ProjectManager.ProjectName=ModuleCAN +ProjectManager.ProjectFileName=CAN-B.ioc +ProjectManager.ProjectName=CAN-B ProjectManager.ProjectStructure= ProjectManager.RegisterCallBack= ProjectManager.StackSize=0x400 -ProjectManager.TargetToolchain=CMake +ProjectManager.TargetToolchain=EWARM V8.32 ProjectManager.ToolChainLocation= ProjectManager.UAScriptAfterPath= ProjectManager.UAScriptBeforePath= ProjectManager.UnderRoot=false -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_CAN_Init-CAN-false-HAL-true,4-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false -RCC.ADCFreqValue=24000000 -RCC.AHBFreq_Value=48000000 +ProjectManager.functionlistsort= +RCC.ADCFreqValue=36000000 +RCC.AHBFreq_Value=72000000 RCC.APB1CLKDivider=RCC_HCLK_DIV2 -RCC.APB1Freq_Value=24000000 -RCC.APB1TimFreq_Value=48000000 -RCC.APB2Freq_Value=48000000 -RCC.APB2TimFreq_Value=48000000 -RCC.FCLKCortexFreq_Value=48000000 +RCC.APB1Freq_Value=36000000 +RCC.APB1TimFreq_Value=72000000 +RCC.APB2Freq_Value=72000000 +RCC.APB2TimFreq_Value=72000000 +RCC.FCLKCortexFreq_Value=72000000 RCC.FamilyName=M -RCC.HCLKFreq_Value=48000000 +RCC.HCLKFreq_Value=72000000 RCC.IPParameters=ADCFreqValue,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,PLLSourceVirtual,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value,VCOOutput2Freq_Value -RCC.MCOFreq_Value=48000000 -RCC.PLLCLKFreq_Value=48000000 -RCC.PLLMCOFreq_Value=24000000 -RCC.PLLMUL=RCC_PLL_MUL6 +RCC.MCOFreq_Value=72000000 +RCC.PLLCLKFreq_Value=72000000 +RCC.PLLMCOFreq_Value=36000000 +RCC.PLLMUL=RCC_PLL_MUL9 RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE -RCC.SYSCLKFreq_VALUE=48000000 +RCC.SYSCLKFreq_VALUE=72000000 RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK -RCC.TimSysFreq_Value=48000000 -RCC.USBFreq_Value=48000000 +RCC.TimSysFreq_Value=72000000 +RCC.USBFreq_Value=72000000 RCC.VCOOutput2Freq_Value=8000000 -USB_DEVICE.CLASS_NAME_FS=CDC -USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS,PRODUCT_STRING_CDC_FS -USB_DEVICE.PRODUCT_STRING_CDC_FS=ModularKeyboardCOM -USB_DEVICE.VirtualMode=Cdc -USB_DEVICE.VirtualModeFS=Cdc_FS VP_SYS_VS_Systick.Mode=SysTick VP_SYS_VS_Systick.Signal=SYS_VS_Systick -VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Mode=CDC_FS -VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Signal=USB_DEVICE_VS_USB_DEVICE_CDC_FS board=custom diff --git a/firmware/components/CAN/CAN-B/Inc/stm32f1xx_hal_conf.h b/firmware/components/CAN/CAN-B/Inc/stm32f1xx_hal_conf.h index 07dffd00..51a5d671 100644 --- a/firmware/components/CAN/CAN-B/Inc/stm32f1xx_hal_conf.h +++ b/firmware/components/CAN/CAN-B/Inc/stm32f1xx_hal_conf.h @@ -53,7 +53,7 @@ /*#define HAL_NOR_MODULE_ENABLED */ /*#define HAL_NAND_MODULE_ENABLED */ /*#define HAL_PCCARD_MODULE_ENABLED */ -#define HAL_PCD_MODULE_ENABLED +/*#define HAL_PCD_MODULE_ENABLED */ /*#define HAL_HCD_MODULE_ENABLED */ /*#define HAL_PWR_MODULE_ENABLED */ /*#define HAL_RCC_MODULE_ENABLED */ diff --git a/firmware/components/CAN/CAN-B/Inc/stm32f1xx_it.h b/firmware/components/CAN/CAN-B/Inc/stm32f1xx_it.h index 47a1a2ef..0d1cdc6f 100644 --- a/firmware/components/CAN/CAN-B/Inc/stm32f1xx_it.h +++ b/firmware/components/CAN/CAN-B/Inc/stm32f1xx_it.h @@ -55,7 +55,6 @@ void SVC_Handler(void); void DebugMon_Handler(void); void PendSV_Handler(void); void SysTick_Handler(void); -void USB_LP_CAN1_RX0_IRQHandler(void); void CAN1_RX1_IRQHandler(void); /* USER CODE BEGIN EFP */ diff --git a/firmware/components/CAN/CAN-B/Inc/usb_device.h b/firmware/components/CAN/CAN-B/Inc/usb_device.h deleted file mode 100644 index 2e645300..00000000 --- a/firmware/components/CAN/CAN-B/Inc/usb_device.h +++ /dev/null @@ -1,102 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usb_device.h - * @version : v2.0_Cube - * @brief : Header for usb_device.c file. - ****************************************************************************** - * @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 */ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USB_DEVICE__H__ -#define __USB_DEVICE__H__ - -#ifdef __cplusplus - extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "stm32f1xx.h" -#include "stm32f1xx_hal.h" -#include "usbd_def.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/** @addtogroup USBD_OTG_DRIVER - * @{ - */ - -/** @defgroup USBD_DEVICE USBD_DEVICE - * @brief Device file for Usb otg low level driver. - * @{ - */ - -/** @defgroup USBD_DEVICE_Exported_Variables USBD_DEVICE_Exported_Variables - * @brief Public variables. - * @{ - */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* - * -- Insert your variables declaration here -- - */ -/* USER CODE BEGIN VARIABLES */ - -/* USER CODE END VARIABLES */ -/** - * @} - */ - -/** @defgroup USBD_DEVICE_Exported_FunctionsPrototype USBD_DEVICE_Exported_FunctionsPrototype - * @brief Declaration of public functions for Usb device. - * @{ - */ - -/** USB Device initialization function. */ -void MX_USB_DEVICE_Init(void); - -/* - * -- Insert functions declaration here -- - */ -/* USER CODE BEGIN FD */ - -/* USER CODE END FD */ -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __USB_DEVICE__H__ */ diff --git a/firmware/components/CAN/CAN-B/Inc/usbd_cdc_if.h b/firmware/components/CAN/CAN-B/Inc/usbd_cdc_if.h deleted file mode 100644 index ec9079a7..00000000 --- a/firmware/components/CAN/CAN-B/Inc/usbd_cdc_if.h +++ /dev/null @@ -1,131 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_cdc_if.h - * @version : v2.0_Cube - * @brief : Header for usbd_cdc_if.c file. - ****************************************************************************** - * @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 */ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USBD_CDC_IF_H__ -#define __USBD_CDC_IF_H__ - -#ifdef __cplusplus - extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "usbd_cdc.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY - * @brief For Usb device. - * @{ - */ - -/** @defgroup USBD_CDC_IF USBD_CDC_IF - * @brief Usb VCP device module - * @{ - */ - -/** @defgroup USBD_CDC_IF_Exported_Defines USBD_CDC_IF_Exported_Defines - * @brief Defines. - * @{ - */ -/* Define size for the receive and transmit buffer over CDC */ -#define APP_RX_DATA_SIZE 1024 -#define APP_TX_DATA_SIZE 1024 -/* USER CODE BEGIN EXPORTED_DEFINES */ - -/* USER CODE END EXPORTED_DEFINES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Types USBD_CDC_IF_Exported_Types - * @brief Types. - * @{ - */ - -/* USER CODE BEGIN EXPORTED_TYPES */ - -/* USER CODE END EXPORTED_TYPES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Macros USBD_CDC_IF_Exported_Macros - * @brief Aliases. - * @{ - */ - -/* USER CODE BEGIN EXPORTED_MACRO */ - -/* USER CODE END EXPORTED_MACRO */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables - * @brief Public variables. - * @{ - */ - -/** CDC Interface callback. */ -extern USBD_CDC_ItfTypeDef USBD_Interface_fops_FS; - -/* USER CODE BEGIN EXPORTED_VARIABLES */ - -/* USER CODE END EXPORTED_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_FunctionsPrototype USBD_CDC_IF_Exported_FunctionsPrototype - * @brief Public functions declaration. - * @{ - */ - -uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len); - -/* USER CODE BEGIN EXPORTED_FUNCTIONS */ - -/* USER CODE END EXPORTED_FUNCTIONS */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __USBD_CDC_IF_H__ */ - diff --git a/firmware/components/CAN/CAN-B/Inc/usbd_conf.h b/firmware/components/CAN/CAN-B/Inc/usbd_conf.h deleted file mode 100644 index f27f86c8..00000000 --- a/firmware/components/CAN/CAN-B/Inc/usbd_conf.h +++ /dev/null @@ -1,175 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_conf.h - * @version : v2.0_Cube - * @brief : Header for usbd_conf.c file. - ****************************************************************************** - * @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 */ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USBD_CONF__H__ -#define __USBD_CONF__H__ - -#ifdef __cplusplus - extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include -#include -#include -#include "main.h" -#include "stm32f1xx.h" -#include "stm32f1xx_hal.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/** @addtogroup USBD_OTG_DRIVER - * @{ - */ - -/** @defgroup USBD_CONF USBD_CONF - * @brief Configuration file for Usb otg low level driver. - * @{ - */ - -/** @defgroup USBD_CONF_Exported_Variables USBD_CONF_Exported_Variables - * @brief Public variables. - * @{ - */ - -/** - * @} - */ - -/** @defgroup USBD_CONF_Exported_Defines USBD_CONF_Exported_Defines - * @brief Defines for configuration of the Usb device. - * @{ - */ - -/*---------- -----------*/ -#define USBD_MAX_NUM_INTERFACES 1 -/*---------- -----------*/ -#define USBD_MAX_NUM_CONFIGURATION 1 -/*---------- -----------*/ -#define USBD_MAX_STR_DESC_SIZ 512 -/*---------- -----------*/ -#define USBD_DEBUG_LEVEL 0 -/*---------- -----------*/ -#define USBD_SELF_POWERED 1 -/*---------- -----------*/ -#define MAX_STATIC_ALLOC_SIZE 512 - -/****************************************/ -/* #define for FS and HS identification */ -#define DEVICE_FS 0 - -/** - * @} - */ - -/** @defgroup USBD_CONF_Exported_Macros USBD_CONF_Exported_Macros - * @brief Aliases. - * @{ - */ - -/* Memory management macros */ - -/** Alias for memory allocation. */ -#define USBD_malloc (uint32_t *)USBD_static_malloc - -/** Alias for memory release. */ -#define USBD_free USBD_static_free - -/** Alias for memory set. */ -#define USBD_memset /* Not used */ - -/** Alias for memory copy. */ -#define USBD_memcpy /* Not used */ - -/** Alias for delay. */ -#define USBD_Delay HAL_Delay - -/* For footprint reasons and since only one allocation is handled in the HID class - driver, the malloc/free is changed into a static allocation method */ -void *USBD_static_malloc(uint32_t size); -void USBD_static_free(void *p); - -/* DEBUG macros */ - -#if (USBD_DEBUG_LEVEL > 0) -#define USBD_UsrLog(...) printf(__VA_ARGS__);\ - printf("\n"); -#else -#define USBD_UsrLog(...) -#endif - -#if (USBD_DEBUG_LEVEL > 1) - -#define USBD_ErrLog(...) printf("ERROR: ") ;\ - printf(__VA_ARGS__);\ - printf("\n"); -#else -#define USBD_ErrLog(...) -#endif - -#if (USBD_DEBUG_LEVEL > 2) -#define USBD_DbgLog(...) printf("DEBUG : ") ;\ - printf(__VA_ARGS__);\ - printf("\n"); -#else -#define USBD_DbgLog(...) -#endif - -/** - * @} - */ - -/** @defgroup USBD_CONF_Exported_Types USBD_CONF_Exported_Types - * @brief Types. - * @{ - */ - -/** - * @} - */ - -/** @defgroup USBD_CONF_Exported_FunctionsPrototype USBD_CONF_Exported_FunctionsPrototype - * @brief Declaration of public functions for Usb device. - * @{ - */ - -/* Exported functions -------------------------------------------------------*/ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __USBD_CONF__H__ */ - diff --git a/firmware/components/CAN/CAN-B/Inc/usbd_desc.h b/firmware/components/CAN/CAN-B/Inc/usbd_desc.h deleted file mode 100644 index e9659b9c..00000000 --- a/firmware/components/CAN/CAN-B/Inc/usbd_desc.h +++ /dev/null @@ -1,143 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_desc.c - * @version : v2.0_Cube - * @brief : Header for usbd_conf.c file. - ****************************************************************************** - * @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 */ -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USBD_DESC__C__ -#define __USBD_DESC__C__ - -#ifdef __cplusplus - extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "usbd_def.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY - * @{ - */ - -/** @defgroup USBD_DESC USBD_DESC - * @brief Usb device descriptors module. - * @{ - */ - -/** @defgroup USBD_DESC_Exported_Constants USBD_DESC_Exported_Constants - * @brief Constants. - * @{ - */ -#define DEVICE_ID1 (UID_BASE) -#define DEVICE_ID2 (UID_BASE + 0x4) -#define DEVICE_ID3 (UID_BASE + 0x8) - -#define USB_SIZ_STRING_SERIAL 0x1A - -/* USER CODE BEGIN EXPORTED_CONSTANTS */ - -/* USER CODE END EXPORTED_CONSTANTS */ - -/** - * @} - */ - -/** @defgroup USBD_DESC_Exported_Defines USBD_DESC_Exported_Defines - * @brief Defines. - * @{ - */ - -/* USER CODE BEGIN EXPORTED_DEFINES */ - -/* USER CODE END EXPORTED_DEFINES */ - -/** - * @} - */ - -/** @defgroup USBD_DESC_Exported_TypesDefinitions USBD_DESC_Exported_TypesDefinitions - * @brief Types. - * @{ - */ - -/* USER CODE BEGIN EXPORTED_TYPES */ - -/* USER CODE END EXPORTED_TYPES */ - -/** - * @} - */ - -/** @defgroup USBD_DESC_Exported_Macros USBD_DESC_Exported_Macros - * @brief Aliases. - * @{ - */ - -/* USER CODE BEGIN EXPORTED_MACRO */ - -/* USER CODE END EXPORTED_MACRO */ - -/** - * @} - */ - -/** @defgroup USBD_DESC_Exported_Variables USBD_DESC_Exported_Variables - * @brief Public variables. - * @{ - */ - -/** Descriptor for the Usb device. */ -extern USBD_DescriptorsTypeDef FS_Desc; - -/* USER CODE BEGIN EXPORTED_VARIABLES */ - -/* USER CODE END EXPORTED_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_DESC_Exported_FunctionsPrototype USBD_DESC_Exported_FunctionsPrototype - * @brief Public functions declaration. - * @{ - */ - -/* USER CODE BEGIN EXPORTED_FUNCTIONS */ - -/* USER CODE END EXPORTED_FUNCTIONS */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __USBD_DESC__C__ */ - diff --git a/firmware/components/CAN/CAN-B/Src/can.c b/firmware/components/CAN/CAN-B/Src/can.c index b04e9f6a..7d2fd349 100644 --- a/firmware/components/CAN/CAN-B/Src/can.c +++ b/firmware/components/CAN/CAN-B/Src/can.c @@ -54,7 +54,17 @@ void MX_CAN_Init(void) Error_Handler(); } /* USER CODE BEGIN CAN_Init 2 */ - + CAN_FilterTypeDef canfilterconf; + canfilterconf.FilterActivation = CAN_FILTER_ENABLE; + canfilterconf.FilterBank = 18; + canfilterconf.FilterFIFOAssignment = CAN_FILTER_FIFO1; + canfilterconf.FilterIdHigh = 0x399 << 5; + canfilterconf.FilterIdLow = 0x0000; + canfilterconf.FilterMaskIdHigh = 0x7FF << 5; + canfilterconf.FilterMaskIdLow = 0x0000; + canfilterconf.FilterMode = CAN_FILTERMODE_IDMASK; + canfilterconf.FilterScale = CAN_FILTERSCALE_32BIT; + HAL_CAN_ConfigFilter(&hcan, &canfilterconf); /* USER CODE END CAN_Init 2 */ } @@ -71,26 +81,22 @@ void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle) /* CAN1 clock enable */ __HAL_RCC_CAN1_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); /**CAN GPIO Configuration - PB8 ------> CAN_RX - PB9 ------> CAN_TX + PA11 ------> CAN_RX + PA12 ------> CAN_TX */ - GPIO_InitStruct.Pin = GPIO_PIN_8; + GPIO_InitStruct.Pin = GPIO_PIN_11; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - GPIO_InitStruct.Pin = GPIO_PIN_9; + GPIO_InitStruct.Pin = GPIO_PIN_12; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - - __HAL_AFIO_REMAP_CAN1_2(); + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* CAN1 interrupt Init */ - HAL_NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(USB_LP_CAN1_RX0_IRQn); HAL_NVIC_SetPriority(CAN1_RX1_IRQn, 0, 0); HAL_NVIC_EnableIRQ(CAN1_RX1_IRQn); /* USER CODE BEGIN CAN1_MspInit 1 */ @@ -111,20 +117,12 @@ void HAL_CAN_MspDeInit(CAN_HandleTypeDef* canHandle) __HAL_RCC_CAN1_CLK_DISABLE(); /**CAN GPIO Configuration - PB8 ------> CAN_RX - PB9 ------> CAN_TX + PA11 ------> CAN_RX + PA12 ------> CAN_TX */ - HAL_GPIO_DeInit(GPIOB, GPIO_PIN_8|GPIO_PIN_9); + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11|GPIO_PIN_12); /* CAN1 interrupt Deinit */ - /* USER CODE BEGIN CAN1:USB_LP_CAN1_RX0_IRQn disable */ - /** - * Uncomment the line below to disable the "USB_LP_CAN1_RX0_IRQn" interrupt - * Be aware, disabling shared interrupt may affect other IPs - */ - /* HAL_NVIC_DisableIRQ(USB_LP_CAN1_RX0_IRQn); */ - /* USER CODE END CAN1:USB_LP_CAN1_RX0_IRQn disable */ - HAL_NVIC_DisableIRQ(CAN1_RX1_IRQn); /* USER CODE BEGIN CAN1_MspDeInit 1 */ diff --git a/firmware/components/CAN/CAN-B/Src/gpio.c b/firmware/components/CAN/CAN-B/Src/gpio.c index 5d3337b2..e293e461 100644 --- a/firmware/components/CAN/CAN-B/Src/gpio.c +++ b/firmware/components/CAN/CAN-B/Src/gpio.c @@ -48,7 +48,6 @@ void MX_GPIO_Init(void) __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); @@ -60,10 +59,10 @@ void MX_GPIO_Init(void) GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - /*Configure GPIO pin : PA4 */ - GPIO_InitStruct.Pin = GPIO_PIN_4; + /*Configure GPIO pin : PA10 (Input with Pull-Down) */ + GPIO_InitStruct.Pin = GPIO_PIN_10; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } diff --git a/firmware/components/CAN/CAN-B/Src/main.c b/firmware/components/CAN/CAN-B/Src/main.c index 14889cfb..1f77f04a 100644 --- a/firmware/components/CAN/CAN-B/Src/main.c +++ b/firmware/components/CAN/CAN-B/Src/main.c @@ -1,24 +1,72 @@ -/* -Sub-module CAN. Sends data to the master (CAN-A) -*/ - +/* 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 "can.h" -#include "usb_device.h" -#include "usbd_cdc_if.h" -#include "string.h" #include "gpio.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 */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ + +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ CAN_TxHeaderTypeDef TxHeader; CAN_RxHeaderTypeDef RxHeader; -uint8_t TxData[8]; //Buffer for output data -uint8_t RxData[8]; //Buffer for input data (probably will never get used) +uint8_t TxData[8]; +uint8_t RxData[8]; -//Think of this as a location that will hold the pending data to send untill its ready. -uint32_t TxMailbox; +uint32_t TxMailbox; + +uint8_t isValidData; + +/* USER CODE END 0 */ /** * @brief The application entry point. @@ -27,70 +75,78 @@ uint32_t TxMailbox; 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(); - /* - FIXME: USB CDC would be super useful in debugging. This might be also - Related to doing the USB HID since there are something going on with the - USB not getting detected on my device properly - - At the mmoment, I'm getting device "address not responding" error using dmesg } grep usb - Some searching up hints that this is a common problem with Bluepills but because BP comes from many - Manufacturers its pretty hard to track it down to one problem. Can't find the schematic for ours too - The problem seems to be related to the resistor on the DP+ and DP- on the USB - - Either that or we got a counterfiet STM32 board. I'll test it with a reputable brand to see. Other functionalities work though - */ /* USER CODE BEGIN SysInit */ - GPIO_InitTypeDef USB_RESISTOR = {0}; - USB_RESISTOR.Pin = GPIO_PIN_12; - USB_RESISTOR.Mode = GPIO_MODE_OUTPUT_OD; - USB_RESISTOR.Pull = GPIO_NOPULL; - HAL_GPIO_Init(GPIOA,&USB_RESISTOR); - //Force Reset USB - HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET); - HAL_Delay(50); - HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET); - + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_CAN_Init(); - - //Enables an interrupt when a data is recieved. - //This includes your own data you sent so this is when filters comes to play - HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO0_MSG_PENDING); + /* USER CODE BEGIN 2 */ HAL_CAN_Start(&hcan); + HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO1_MSG_PENDING); - TxHeader.DLC = 1; //The lenght of data to send (in bytes) - TxHeader.ExtId = 0; //The ext. ID of the device - TxHeader.IDE = CAN_ID_STD; //No need for us to use ext. ID - TxHeader.RTR = CAN_RTR_DATA; //We are sending data... - TxHeader.StdId = 0x100; //The ID of this module is now 100. Any devices with a filter matching this ID would read it - TxHeader.TransmitGlobalTime = DISABLE; + TxHeader.DLC = 2; + TxHeader.IDE = CAN_ID_STD; + TxHeader.RTR = CAN_RTR_DATA; + TxHeader.StdId = 0x399; - //Sample message send - TxData[0] = 0xf1; + TxData[0] = 100; + TxData[1] = 255; - MX_USB_DEVICE_Init(); + int GPIOSTATUS = 0; + int oldGPIOSTATUS = 0; + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ while (1) { - HAL_CAN_AddTxMessage(&hcan, &TxHeader, TxData, &TxMailbox); - HAL_Delay(1000); - } + /* USER CODE END WHILE */ + GPIOSTATUS = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_10); + if(GPIOSTATUS && !oldGPIOSTATUS){ + HAL_Delay(20); + HAL_CAN_AddTxMessage(&hcan, &TxHeader, TxData, &TxMailbox); + } + oldGPIOSTATUS = GPIOSTATUS; + if(isValidData){ + isValidData = 0; + for(int i = 0; i < RxData[0]; i++){ + HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); + HAL_Delay(RxData[1]); + } + } + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ } -void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan) -{ - //Read message from the RxCAN and store it on RxHeader - HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &RxHeader, RxData); - HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); - char *buf = RxData[0]; - CDC_Transmit_FS((uint8_t *)buf,strlen(buf)); +void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan){ + if (HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO1, &RxHeader, RxData) != HAL_OK) { + return; + }; + if(RxHeader.DLC == 2){ + isValidData = 1; + } } /** @@ -101,7 +157,6 @@ void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. @@ -112,7 +167,7 @@ void SystemClock_Config(void) RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6; + RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); @@ -127,13 +182,7 @@ void SystemClock_Config(void) RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) - { - Error_Handler(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { Error_Handler(); } diff --git a/firmware/components/CAN/CAN-B/Src/stm32f1xx_it.c b/firmware/components/CAN/CAN-B/Src/stm32f1xx_it.c index 8990aa1a..b4ef83ee 100644 --- a/firmware/components/CAN/CAN-B/Src/stm32f1xx_it.c +++ b/firmware/components/CAN/CAN-B/Src/stm32f1xx_it.c @@ -55,7 +55,6 @@ /* USER CODE END 0 */ /* External variables --------------------------------------------------------*/ -extern PCD_HandleTypeDef hpcd_USB_FS; extern CAN_HandleTypeDef hcan; /* USER CODE BEGIN EV */ @@ -199,21 +198,6 @@ void SysTick_Handler(void) /* please refer to the startup file (startup_stm32f1xx.s). */ /******************************************************************************/ -/** - * @brief This function handles USB low priority or CAN RX0 interrupts. - */ -void USB_LP_CAN1_RX0_IRQHandler(void) -{ - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ - HAL_CAN_IRQHandler(&hcan); - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */ -} - /** * @brief This function handles CAN RX1 interrupt. */ diff --git a/firmware/components/CAN/CAN-B/Src/usb_device.c b/firmware/components/CAN/CAN-B/Src/usb_device.c deleted file mode 100644 index f32373f5..00000000 --- a/firmware/components/CAN/CAN-B/Src/usb_device.c +++ /dev/null @@ -1,100 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usb_device.c - * @version : v2.0_Cube - * @brief : This file implements the USB Device - ****************************************************************************** - * @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 "usb_device.h" -#include "usbd_core.h" -#include "usbd_desc.h" -#include "usbd_cdc.h" -#include "usbd_cdc_if.h" - -/* USER CODE BEGIN Includes */ - -/* USER CODE END Includes */ - -/* USER CODE BEGIN PV */ -/* Private variables ---------------------------------------------------------*/ - -/* USER CODE END PV */ - -/* USER CODE BEGIN PFP */ -/* Private function prototypes -----------------------------------------------*/ - -/* USER CODE END PFP */ - -/* USB Device Core handle declaration. */ -USBD_HandleTypeDef hUsbDeviceFS; - -/* - * -- Insert your variables declaration here -- - */ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* - * -- Insert your external function declaration here -- - */ -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ - -/** - * Init USB device Library, add supported class and start the library - * @retval None - */ -void MX_USB_DEVICE_Init(void) -{ - /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */ - - /* USER CODE END USB_DEVICE_Init_PreTreatment */ - - /* Init Device Library, add supported class and start the library. */ - if (USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS) != USBD_OK) - { - Error_Handler(); - } - if (USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC) != USBD_OK) - { - Error_Handler(); - } - if (USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS) != USBD_OK) - { - Error_Handler(); - } - if (USBD_Start(&hUsbDeviceFS) != USBD_OK) - { - Error_Handler(); - } - - /* USER CODE BEGIN USB_DEVICE_Init_PostTreatment */ - - /* USER CODE END USB_DEVICE_Init_PostTreatment */ -} - -/** - * @} - */ - -/** - * @} - */ - diff --git a/firmware/components/CAN/CAN-B/Src/usbd_cdc_if.c b/firmware/components/CAN/CAN-B/Src/usbd_cdc_if.c deleted file mode 100644 index c0f7fd17..00000000 --- a/firmware/components/CAN/CAN-B/Src/usbd_cdc_if.c +++ /dev/null @@ -1,303 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_cdc_if.c - * @version : v2.0_Cube - * @brief : Usb device for Virtual Com Port. - ****************************************************************************** - * @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 "usbd_cdc_if.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ -/* Private variables ---------------------------------------------------------*/ - -/* USER CODE END PV */ - -/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY - * @brief Usb device library. - * @{ - */ - -/** @addtogroup USBD_CDC_IF - * @{ - */ - -/** @defgroup USBD_CDC_IF_Private_TypesDefinitions USBD_CDC_IF_Private_TypesDefinitions - * @brief Private types. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_TYPES */ - -/* USER CODE END PRIVATE_TYPES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Defines USBD_CDC_IF_Private_Defines - * @brief Private defines. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_DEFINES */ -/* USER CODE END PRIVATE_DEFINES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Macros USBD_CDC_IF_Private_Macros - * @brief Private macros. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_MACRO */ - -/* USER CODE END PRIVATE_MACRO */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Variables USBD_CDC_IF_Private_Variables - * @brief Private variables. - * @{ - */ -/* Create buffer for reception and transmission */ -/* It's up to user to redefine and/or remove those define */ -/** Received data over USB are stored in this buffer */ -uint8_t UserRxBufferFS[APP_RX_DATA_SIZE]; - -/** Data to send over USB CDC are stored in this buffer */ -uint8_t UserTxBufferFS[APP_TX_DATA_SIZE]; - -/* USER CODE BEGIN PRIVATE_VARIABLES */ - -/* USER CODE END PRIVATE_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables - * @brief Public variables. - * @{ - */ - -extern USBD_HandleTypeDef hUsbDeviceFS; - -/* USER CODE BEGIN EXPORTED_VARIABLES */ - -/* USER CODE END EXPORTED_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_FunctionPrototypes USBD_CDC_IF_Private_FunctionPrototypes - * @brief Private functions declaration. - * @{ - */ - -static int8_t CDC_Init_FS(void); -static int8_t CDC_DeInit_FS(void); -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length); -static int8_t CDC_Receive_FS(uint8_t* pbuf, uint32_t *Len); - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */ - -/** - * @} - */ - -USBD_CDC_ItfTypeDef USBD_Interface_fops_FS = -{ - CDC_Init_FS, - CDC_DeInit_FS, - CDC_Control_FS, - CDC_Receive_FS -}; - -/* Private functions ---------------------------------------------------------*/ -/** - * @brief Initializes the CDC media low layer over the FS USB IP - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Init_FS(void) -{ - /* USER CODE BEGIN 3 */ - /* Set Application Buffers */ - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); - return (USBD_OK); - /* USER CODE END 3 */ -} - -/** - * @brief DeInitializes the CDC media low layer - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_DeInit_FS(void) -{ - /* USER CODE BEGIN 4 */ - return (USBD_OK); - /* USER CODE END 4 */ -} - -/** - * @brief Manage the CDC class requests - * @param cmd: Command code - * @param pbuf: Buffer containing command data (request parameters) - * @param length: Number of data to be sent (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) -{ - /* USER CODE BEGIN 5 */ - switch(cmd) - { - case CDC_SEND_ENCAPSULATED_COMMAND: - - break; - - case CDC_GET_ENCAPSULATED_RESPONSE: - - break; - - case CDC_SET_COMM_FEATURE: - - break; - - case CDC_GET_COMM_FEATURE: - - break; - - case CDC_CLEAR_COMM_FEATURE: - - break; - - /*******************************************************************************/ - /* Line Coding Structure */ - /*-----------------------------------------------------------------------------*/ - /* Offset | Field | Size | Value | Description */ - /* 0 | dwDTERate | 4 | Number |Data terminal rate, in bits per second*/ - /* 4 | bCharFormat | 1 | Number | Stop bits */ - /* 0 - 1 Stop bit */ - /* 1 - 1.5 Stop bits */ - /* 2 - 2 Stop bits */ - /* 5 | bParityType | 1 | Number | Parity */ - /* 0 - None */ - /* 1 - Odd */ - /* 2 - Even */ - /* 3 - Mark */ - /* 4 - Space */ - /* 6 | bDataBits | 1 | Number Data bits (5, 6, 7, 8 or 16). */ - /*******************************************************************************/ - case CDC_SET_LINE_CODING: - - break; - - case CDC_GET_LINE_CODING: - - break; - - case CDC_SET_CONTROL_LINE_STATE: - - break; - - case CDC_SEND_BREAK: - - break; - - default: - break; - } - - return (USBD_OK); - /* USER CODE END 5 */ -} - -/** - * @brief Data received over USB OUT endpoint are sent over CDC interface - * through this function. - * - * @note - * This function will issue a NAK packet on any OUT packet received on - * USB endpoint until exiting this function. If you exit this function - * before transfer is complete on CDC interface (ie. using DMA controller) - * it will result in receiving more data while previous ones are still - * not sent. - * - * @param Buf: Buffer of data to be received - * @param Len: Number of data received (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) -{ - /* USER CODE BEGIN 6 */ - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); - USBD_CDC_ReceivePacket(&hUsbDeviceFS); - return (USBD_OK); - /* USER CODE END 6 */ -} - -/** - * @brief CDC_Transmit_FS - * Data to send over USB IN endpoint are sent over CDC interface - * through this function. - * @note - * - * - * @param Buf: Buffer of data to be sent - * @param Len: Number of data to be sent (in bytes) - * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY - */ -uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) -{ - uint8_t result = USBD_OK; - /* USER CODE BEGIN 7 */ - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; - if (hcdc->TxState != 0){ - return USBD_BUSY; - } - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); - result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); - /* USER CODE END 7 */ - return result; -} - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/** - * @} - */ - -/** - * @} - */ diff --git a/firmware/components/CAN/CAN-B/Src/usbd_conf.c b/firmware/components/CAN/CAN-B/Src/usbd_conf.c deleted file mode 100644 index 2d7f1fae..00000000 --- a/firmware/components/CAN/CAN-B/Src/usbd_conf.c +++ /dev/null @@ -1,666 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_conf.c - * @version : v2.0_Cube - * @brief : This file implements the board support package for the USB device library - ****************************************************************************** - * @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 "stm32f1xx.h" -#include "stm32f1xx_hal.h" -#include "usbd_def.h" -#include "usbd_core.h" -#include "usbd_cdc.h" - -/* USER CODE BEGIN Includes */ - -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ -/* Private variables ---------------------------------------------------------*/ - -/* USER CODE END PV */ - -PCD_HandleTypeDef hpcd_USB_FS; -void Error_Handler(void); - -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* USER CODE BEGIN PFP */ -/* Private function prototypes -----------------------------------------------*/ - -/* USER CODE END PFP */ - -/* Private functions ---------------------------------------------------------*/ -static USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status); -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state); -#else -void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state); -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - -/******************************************************************************* - LL Driver Callbacks (PCD -> USB Device Library) -*******************************************************************************/ -/* MSP Init */ - -void HAL_PCD_MspInit(PCD_HandleTypeDef* pcdHandle) -{ - if(pcdHandle->Instance==USB) - { - /* USER CODE BEGIN USB_MspInit 0 */ - - /* USER CODE END USB_MspInit 0 */ - /* Peripheral clock enable */ - __HAL_RCC_USB_CLK_ENABLE(); - - /* Peripheral interrupt init */ - HAL_NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(USB_LP_CAN1_RX0_IRQn); - /* USER CODE BEGIN USB_MspInit 1 */ - - /* USER CODE END USB_MspInit 1 */ - } -} - -void HAL_PCD_MspDeInit(PCD_HandleTypeDef* pcdHandle) -{ - if(pcdHandle->Instance==USB) - { - /* USER CODE BEGIN USB_MspDeInit 0 */ - - /* USER CODE END USB_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_USB_CLK_DISABLE(); - - /* Peripheral interrupt Deinit*/ - /* USER CODE BEGIN USB:USB_LP_CAN1_RX0_IRQn disable */ - /** - * Uncomment the line below to disable the "USB_LP_CAN1_RX0_IRQn" interrupt - * Be aware, disabling shared interrupt may affect other IPs - */ - /* HAL_NVIC_DisableIRQ(USB_LP_CAN1_RX0_IRQn); */ - /* USER CODE END USB:USB_LP_CAN1_RX0_IRQn disable */ - - /* USER CODE BEGIN USB_MspDeInit 1 */ - - /* USER CODE END USB_MspDeInit 1 */ - } -} - -/** - * @brief Setup stage callback - * @param hpcd: PCD handle - * @retval None - */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) -#else -void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - USBD_LL_SetupStage((USBD_HandleTypeDef*)hpcd->pData, (uint8_t *)hpcd->Setup); -} - -/** - * @brief Data Out stage callback. - * @param hpcd: PCD handle - * @param epnum: Endpoint number - * @retval None - */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) -#else -void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - USBD_LL_DataOutStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->OUT_ep[epnum].xfer_buff); -} - -/** - * @brief Data In stage callback. - * @param hpcd: PCD handle - * @param epnum: Endpoint number - * @retval None - */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) -#else -void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - USBD_LL_DataInStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->IN_ep[epnum].xfer_buff); -} - -/** - * @brief SOF callback. - * @param hpcd: PCD handle - * @retval None - */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_SOFCallback(PCD_HandleTypeDef *hpcd) -#else -void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - USBD_LL_SOF((USBD_HandleTypeDef*)hpcd->pData); -} - -/** - * @brief Reset callback. - * @param hpcd: PCD handle - * @retval None - */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_ResetCallback(PCD_HandleTypeDef *hpcd) -#else -void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - USBD_SpeedTypeDef speed = USBD_SPEED_FULL; - - if ( hpcd->Init.speed != PCD_SPEED_FULL) - { - Error_Handler(); - } - /* Set Speed. */ - USBD_LL_SetSpeed((USBD_HandleTypeDef*)hpcd->pData, speed); - - /* Reset Device. */ - USBD_LL_Reset((USBD_HandleTypeDef*)hpcd->pData); -} - -/** - * @brief Suspend callback. - * When Low power mode is enabled the debug cannot be used (IAR, Keil doesn't support it) - * @param hpcd: PCD handle - * @retval None - */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) -#else -void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - /* Inform USB library that core enters in suspend Mode. */ - USBD_LL_Suspend((USBD_HandleTypeDef*)hpcd->pData); - /* Enter in STOP mode. */ - /* USER CODE BEGIN 2 */ - if (hpcd->Init.low_power_enable) - { - /* Set SLEEPDEEP bit and SleepOnExit of Cortex System Control Register. */ - SCB->SCR |= (uint32_t)((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk)); - } - /* USER CODE END 2 */ -} - -/** - * @brief Resume callback. - * When Low power mode is enabled the debug cannot be used (IAR, Keil doesn't support it) - * @param hpcd: PCD handle - * @retval None - */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) -#else -void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - /* USER CODE BEGIN 3 */ - - /* USER CODE END 3 */ - USBD_LL_Resume((USBD_HandleTypeDef*)hpcd->pData); -} - -/** - * @brief ISOOUTIncomplete callback. - * @param hpcd: PCD handle - * @param epnum: Endpoint number - * @retval None - */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) -#else -void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - USBD_LL_IsoOUTIncomplete((USBD_HandleTypeDef*)hpcd->pData, epnum); -} - -/** - * @brief ISOINIncomplete callback. - * @param hpcd: PCD handle - * @param epnum: Endpoint number - * @retval None - */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) -#else -void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - USBD_LL_IsoINIncomplete((USBD_HandleTypeDef*)hpcd->pData, epnum); -} - -/** - * @brief Connect callback. - * @param hpcd: PCD handle - * @retval None - */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_ConnectCallback(PCD_HandleTypeDef *hpcd) -#else -void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - USBD_LL_DevConnected((USBD_HandleTypeDef*)hpcd->pData); -} - -/** - * @brief Disconnect callback. - * @param hpcd: PCD handle - * @retval None - */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd) -#else -void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - USBD_LL_DevDisconnected((USBD_HandleTypeDef*)hpcd->pData); -} - -/******************************************************************************* - LL Driver Interface (USB Device Library --> PCD) -*******************************************************************************/ - -/** - * @brief Initializes the low level portion of the device driver. - * @param pdev: Device handle - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev) -{ - /* Init USB Ip. */ - /* Link the driver to the stack. */ - hpcd_USB_FS.pData = pdev; - pdev->pData = &hpcd_USB_FS; - - hpcd_USB_FS.Instance = USB; - hpcd_USB_FS.Init.dev_endpoints = 8; - hpcd_USB_FS.Init.speed = PCD_SPEED_FULL; - hpcd_USB_FS.Init.low_power_enable = DISABLE; - hpcd_USB_FS.Init.lpm_enable = DISABLE; - hpcd_USB_FS.Init.battery_charging_enable = DISABLE; - if (HAL_PCD_Init(&hpcd_USB_FS) != HAL_OK) - { - Error_Handler( ); - } - -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - /* Register USB PCD CallBacks */ - HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_SOF_CB_ID, PCD_SOFCallback); - HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_SETUPSTAGE_CB_ID, PCD_SetupStageCallback); - HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_RESET_CB_ID, PCD_ResetCallback); - HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_SUSPEND_CB_ID, PCD_SuspendCallback); - HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_RESUME_CB_ID, PCD_ResumeCallback); - HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_CONNECT_CB_ID, PCD_ConnectCallback); - HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_DISCONNECT_CB_ID, PCD_DisconnectCallback); - - HAL_PCD_RegisterDataOutStageCallback(&hpcd_USB_FS, PCD_DataOutStageCallback); - HAL_PCD_RegisterDataInStageCallback(&hpcd_USB_FS, PCD_DataInStageCallback); - HAL_PCD_RegisterIsoOutIncpltCallback(&hpcd_USB_FS, PCD_ISOOUTIncompleteCallback); - HAL_PCD_RegisterIsoInIncpltCallback(&hpcd_USB_FS, PCD_ISOINIncompleteCallback); -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - /* USER CODE BEGIN EndPoint_Configuration */ - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x00 , PCD_SNG_BUF, 0x18); - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x80 , PCD_SNG_BUF, 0x58); - /* USER CODE END EndPoint_Configuration */ - /* USER CODE BEGIN EndPoint_Configuration_CDC */ - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x81 , PCD_SNG_BUF, 0xC0); - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x01 , PCD_SNG_BUF, 0x110); - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x82 , PCD_SNG_BUF, 0x100); - /* USER CODE END EndPoint_Configuration_CDC */ - return USBD_OK; -} - -/** - * @brief De-Initializes the low level portion of the device driver. - * @param pdev: Device handle - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBD_StatusTypeDef usb_status = USBD_OK; - - hal_status = HAL_PCD_DeInit(pdev->pData); - - usb_status = USBD_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Starts the low level portion of the device driver. - * @param pdev: Device handle - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBD_StatusTypeDef usb_status = USBD_OK; - - hal_status = HAL_PCD_Start(pdev->pData); - - usb_status = USBD_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Stops the low level portion of the device driver. - * @param pdev: Device handle - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBD_StatusTypeDef usb_status = USBD_OK; - - hal_status = HAL_PCD_Stop(pdev->pData); - - usb_status = USBD_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Opens an endpoint of the low level driver. - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @param ep_type: Endpoint type - * @param ep_mps: Endpoint max packet size - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_mps) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBD_StatusTypeDef usb_status = USBD_OK; - - hal_status = HAL_PCD_EP_Open(pdev->pData, ep_addr, ep_mps, ep_type); - - usb_status = USBD_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Closes an endpoint of the low level driver. - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBD_StatusTypeDef usb_status = USBD_OK; - - hal_status = HAL_PCD_EP_Close(pdev->pData, ep_addr); - - usb_status = USBD_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Flushes an endpoint of the Low Level Driver. - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_FlushEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBD_StatusTypeDef usb_status = USBD_OK; - - hal_status = HAL_PCD_EP_Flush(pdev->pData, ep_addr); - - usb_status = USBD_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Sets a Stall condition on an endpoint of the Low Level Driver. - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBD_StatusTypeDef usb_status = USBD_OK; - - hal_status = HAL_PCD_EP_SetStall(pdev->pData, ep_addr); - - usb_status = USBD_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Clears a Stall condition on an endpoint of the Low Level Driver. - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBD_StatusTypeDef usb_status = USBD_OK; - - hal_status = HAL_PCD_EP_ClrStall(pdev->pData, ep_addr); - - usb_status = USBD_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Returns Stall condition. - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @retval Stall (1: Yes, 0: No) - */ -uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - PCD_HandleTypeDef *hpcd = (PCD_HandleTypeDef*) pdev->pData; - - if((ep_addr & 0x80) == 0x80) - { - return hpcd->IN_ep[ep_addr & 0x7F].is_stall; - } - else - { - return hpcd->OUT_ep[ep_addr & 0x7F].is_stall; - } -} - -/** - * @brief Assigns a USB address to the device. - * @param pdev: Device handle - * @param dev_addr: Device address - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBD_StatusTypeDef usb_status = USBD_OK; - - hal_status = HAL_PCD_SetAddress(pdev->pData, dev_addr); - - usb_status = USBD_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Transmits data over an endpoint. - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @param pbuf: Pointer to data to be sent - * @param size: Data size - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBD_StatusTypeDef usb_status = USBD_OK; - - hal_status = HAL_PCD_EP_Transmit(pdev->pData, ep_addr, pbuf, size); - - usb_status = USBD_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Prepares an endpoint for reception. - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @param pbuf: Pointer to data to be received - * @param size: Data size - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBD_StatusTypeDef usb_status = USBD_OK; - - hal_status = HAL_PCD_EP_Receive(pdev->pData, ep_addr, pbuf, size); - - usb_status = USBD_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Returns the last transferred packet size. - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @retval Received Data Size - */ -uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - return HAL_PCD_EP_GetRxCount((PCD_HandleTypeDef*) pdev->pData, ep_addr); -} - -/** - * @brief Delays routine for the USB device library. - * @param Delay: Delay in ms - * @retval None - */ -void USBD_LL_Delay(uint32_t Delay) -{ - HAL_Delay(Delay); -} - -/** - * @brief Static single allocation. - * @param size: Size of allocated memory - * @retval None - */ -void *USBD_static_malloc(uint32_t size) -{ - static uint32_t mem[(sizeof(USBD_CDC_HandleTypeDef)/4)+1];/* On 32-bit boundary */ - return mem; -} - -/** - * @brief Dummy memory free - * @param p: Pointer to allocated memory address - * @retval None - */ -void USBD_static_free(void *p) -{ - -} - -/** - * @brief Software Device Connection - * @param hpcd: PCD handle - * @param state: Connection state (0: disconnected / 1: connected) - * @retval None - */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) -#else -void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - /* USER CODE BEGIN 6 */ - if (state == 1) - { - /* Configure Low connection state. */ - - } - else - { - /* Configure High connection state. */ - - } - /* USER CODE END 6 */ -} - -/** - * @brief Returns the USB status depending on the HAL status: - * @param hal_status: HAL status - * @retval USB status - */ -USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status) -{ - USBD_StatusTypeDef usb_status = USBD_OK; - - switch (hal_status) - { - case HAL_OK : - usb_status = USBD_OK; - break; - case HAL_ERROR : - usb_status = USBD_FAIL; - break; - case HAL_BUSY : - usb_status = USBD_BUSY; - break; - case HAL_TIMEOUT : - usb_status = USBD_FAIL; - break; - default : - usb_status = USBD_FAIL; - break; - } - return usb_status; -} diff --git a/firmware/components/CAN/CAN-B/Src/usbd_desc.c b/firmware/components/CAN/CAN-B/Src/usbd_desc.c deleted file mode 100644 index d46f04e4..00000000 --- a/firmware/components/CAN/CAN-B/Src/usbd_desc.c +++ /dev/null @@ -1,394 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_desc.c - * @version : v2.0_Cube - * @brief : This file implements the USB device descriptors. - ****************************************************************************** - * @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 "usbd_core.h" -#include "usbd_desc.h" -#include "usbd_conf.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ -/* Private variables ---------------------------------------------------------*/ - -/* USER CODE END PV */ - -/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY - * @{ - */ - -/** @addtogroup USBD_DESC - * @{ - */ - -/** @defgroup USBD_DESC_Private_TypesDefinitions USBD_DESC_Private_TypesDefinitions - * @brief Private types. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_TYPES */ - -/* USER CODE END PRIVATE_TYPES */ - -/** - * @} - */ - -/** @defgroup USBD_DESC_Private_Defines USBD_DESC_Private_Defines - * @brief Private defines. - * @{ - */ - -#define USBD_VID 1155 -#define USBD_LANGID_STRING 1033 -#define USBD_MANUFACTURER_STRING "STMicroelectronics" -#define USBD_PID_FS 22336 -#define USBD_PRODUCT_STRING_FS "ModularKeyboardCOM" -#define USBD_CONFIGURATION_STRING_FS "CDC Config" -#define USBD_INTERFACE_STRING_FS "CDC Interface" - -/* USER CODE BEGIN PRIVATE_DEFINES */ - -/* USER CODE END PRIVATE_DEFINES */ - -/** - * @} - */ - -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/** @defgroup USBD_DESC_Private_Macros USBD_DESC_Private_Macros - * @brief Private macros. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_MACRO */ - -/* USER CODE END PRIVATE_MACRO */ - -/** - * @} - */ - -/** @defgroup USBD_DESC_Private_FunctionPrototypes USBD_DESC_Private_FunctionPrototypes - * @brief Private functions declaration. - * @{ - */ - -static void Get_SerialNum(void); -static void IntToUnicode(uint32_t value, uint8_t * pbuf, uint8_t len); - -/** - * @} - */ - -/** @defgroup USBD_DESC_Private_FunctionPrototypes USBD_DESC_Private_FunctionPrototypes - * @brief Private functions declaration for FS. - * @{ - */ - -uint8_t * USBD_FS_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); -uint8_t * USBD_FS_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); -uint8_t * USBD_FS_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); -uint8_t * USBD_FS_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); -uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); -uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); -uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); - -/** - * @} - */ - -/** @defgroup USBD_DESC_Private_Variables USBD_DESC_Private_Variables - * @brief Private variables. - * @{ - */ - -USBD_DescriptorsTypeDef FS_Desc = -{ - USBD_FS_DeviceDescriptor -, USBD_FS_LangIDStrDescriptor -, USBD_FS_ManufacturerStrDescriptor -, USBD_FS_ProductStrDescriptor -, USBD_FS_SerialStrDescriptor -, USBD_FS_ConfigStrDescriptor -, USBD_FS_InterfaceStrDescriptor -}; - -#if defined ( __ICCARM__ ) /* IAR Compiler */ - #pragma data_alignment=4 -#endif /* defined ( __ICCARM__ ) */ -/** USB standard device descriptor. */ -__ALIGN_BEGIN uint8_t USBD_FS_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = -{ - 0x12, /*bLength */ - USB_DESC_TYPE_DEVICE, /*bDescriptorType*/ - 0x00, /*bcdUSB */ - 0x02, - 0x02, /*bDeviceClass*/ - 0x02, /*bDeviceSubClass*/ - 0x00, /*bDeviceProtocol*/ - USB_MAX_EP0_SIZE, /*bMaxPacketSize*/ - LOBYTE(USBD_VID), /*idVendor*/ - HIBYTE(USBD_VID), /*idVendor*/ - LOBYTE(USBD_PID_FS), /*idProduct*/ - HIBYTE(USBD_PID_FS), /*idProduct*/ - 0x00, /*bcdDevice rel. 2.00*/ - 0x02, - USBD_IDX_MFC_STR, /*Index of manufacturer string*/ - USBD_IDX_PRODUCT_STR, /*Index of product string*/ - USBD_IDX_SERIAL_STR, /*Index of serial number string*/ - USBD_MAX_NUM_CONFIGURATION /*bNumConfigurations*/ -}; - -/* USB_DeviceDescriptor */ - -/** - * @} - */ - -/** @defgroup USBD_DESC_Private_Variables USBD_DESC_Private_Variables - * @brief Private variables. - * @{ - */ - -#if defined ( __ICCARM__ ) /* IAR Compiler */ - #pragma data_alignment=4 -#endif /* defined ( __ICCARM__ ) */ - -/** USB lang identifier descriptor. */ -__ALIGN_BEGIN uint8_t USBD_LangIDDesc[USB_LEN_LANGID_STR_DESC] __ALIGN_END = -{ - USB_LEN_LANGID_STR_DESC, - USB_DESC_TYPE_STRING, - LOBYTE(USBD_LANGID_STRING), - HIBYTE(USBD_LANGID_STRING) -}; - -#if defined ( __ICCARM__ ) /* IAR Compiler */ - #pragma data_alignment=4 -#endif /* defined ( __ICCARM__ ) */ -/* Internal string descriptor. */ -__ALIGN_BEGIN uint8_t USBD_StrDesc[USBD_MAX_STR_DESC_SIZ] __ALIGN_END; - -#if defined ( __ICCARM__ ) /*!< IAR Compiler */ - #pragma data_alignment=4 -#endif -__ALIGN_BEGIN uint8_t USBD_StringSerial[USB_SIZ_STRING_SERIAL] __ALIGN_END = { - USB_SIZ_STRING_SERIAL, - USB_DESC_TYPE_STRING, -}; - -/** - * @} - */ - -/** @defgroup USBD_DESC_Private_Functions USBD_DESC_Private_Functions - * @brief Private functions. - * @{ - */ - -/** - * @brief Return the device descriptor - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - UNUSED(speed); - *length = sizeof(USBD_FS_DeviceDesc); - return USBD_FS_DeviceDesc; -} - -/** - * @brief Return the LangID string descriptor - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - UNUSED(speed); - *length = sizeof(USBD_LangIDDesc); - return USBD_LangIDDesc; -} - -/** - * @brief Return the product string descriptor - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - if(speed == 0) - { - USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); - } - else - { - USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); - } - return USBD_StrDesc; -} - -/** - * @brief Return the manufacturer string descriptor - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - UNUSED(speed); - USBD_GetString((uint8_t *)USBD_MANUFACTURER_STRING, USBD_StrDesc, length); - return USBD_StrDesc; -} - -/** - * @brief Return the serial number string descriptor - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - UNUSED(speed); - *length = USB_SIZ_STRING_SERIAL; - - /* Update the serial number string descriptor with the data from the unique - * ID */ - Get_SerialNum(); - /* USER CODE BEGIN USBD_FS_SerialStrDescriptor */ - - /* USER CODE END USBD_FS_SerialStrDescriptor */ - return (uint8_t *) USBD_StringSerial; -} - -/** - * @brief Return the configuration string descriptor - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - if(speed == USBD_SPEED_HIGH) - { - USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); - } - else - { - USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); - } - return USBD_StrDesc; -} - -/** - * @brief Return the interface string descriptor - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - if(speed == 0) - { - USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); - } - else - { - USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); - } - return USBD_StrDesc; -} - -/** - * @brief Create the serial number string descriptor - * @param None - * @retval None - */ -static void Get_SerialNum(void) -{ - uint32_t deviceserial0; - uint32_t deviceserial1; - uint32_t deviceserial2; - - deviceserial0 = *(uint32_t *) DEVICE_ID1; - deviceserial1 = *(uint32_t *) DEVICE_ID2; - deviceserial2 = *(uint32_t *) DEVICE_ID3; - - deviceserial0 += deviceserial2; - - if (deviceserial0 != 0) - { - IntToUnicode(deviceserial0, &USBD_StringSerial[2], 8); - IntToUnicode(deviceserial1, &USBD_StringSerial[18], 4); - } -} - -/** - * @brief Convert Hex 32Bits value into char - * @param value: value to convert - * @param pbuf: pointer to the buffer - * @param len: buffer length - * @retval None - */ -static void IntToUnicode(uint32_t value, uint8_t * pbuf, uint8_t len) -{ - uint8_t idx = 0; - - for (idx = 0; idx < len; idx++) - { - if (((value >> 28)) < 0xA) - { - pbuf[2 * idx] = (value >> 28) + '0'; - } - else - { - pbuf[2 * idx] = (value >> 28) + 'A' - 10; - } - - value = value << 4; - - pbuf[2 * idx + 1] = 0; - } -} -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - diff --git a/firmware/components/CAN/CAN-B/stm32pio.ini b/firmware/components/CAN/CAN-B/stm32pio.ini index 18f8c791..c5bfa2e7 100644 --- a/firmware/components/CAN/CAN-B/stm32pio.ini +++ b/firmware/components/CAN/CAN-B/stm32pio.ini @@ -11,9 +11,8 @@ platformio_ini_patch_content = [platformio] include_dir = Inc src_dir = Src board = bluepill_f103c8 -ioc_file = ModuleCAN.ioc -cleanup_ignore = ModuleCAN.ioc +ioc_file = CAN-B.ioc +cleanup_ignore = CAN-B.ioc cleanup_use_git = False inspect_ioc = True -last_error = diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/.sconsign313.dblite b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/.sconsign313.dblite new file mode 100644 index 0000000000000000000000000000000000000000..55a87c5281d993f339d6f69ab3beea34cf452c0a GIT binary patch literal 599733 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νZTk<7naMb)!O*q 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 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkCMSISDevice/system_stm32f4xx.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkCMSISDevice/system_stm32f4xx.o new file mode 100644 index 0000000000000000000000000000000000000000..774d5941b024c42d8e901ef996e317dfede772c6 GIT binary patch literal 1620 zcma)6K~ED=5T5OBX|Yt>S_5KYR)etwyOvT?)EFrhD-=vqARd&+wq4w6+r{10fHC2! zXOAAddhlREOuQHjUOadpdh`cyMd}R`o!Rc&ZhO&}yq)ix`QCdo`(}4@dhQ0tali%# zF=#V@-@Fy^rYsYKV{jDKasd6a12ZpGe!q_wMndm{yZ({jZZscQ3Fo7;uhh>?{`j}M z0rmT2U?uc1lt0*8R10cREqivF&m*vZ4d%83d4GQEaKE{b6=sX-PLrGBl111$JZS#d zgKe1bOj<_{{jv;1o&qq89?ruHJwAUg1qnkgo4qW?a<`VmMNO+2;;N>L8NDt}*Go#J zqEy6!u9X$T&~!sg$CHWCbo@~&UY8$e`mmUmlG3P1&cvleN{s1BO_2>{SiF-d&Rwd{p1P-@LfS-R_-qw@vhyw87afgw&E{ZvM5FpBkWrYsLgSRX0 zg??15I4ZA$2=L&u;%%p|4XwDpi(6OY_;@(tU;;b@U=S_UOqE11-*YxME$)RYXlc;S zVd#Y!ivffz?uXkpr^>>Z9~c{ksnqWoW_>KVnp$6%$}nWYPz4sOz)YiR+7Pct$=0;; z!=<%~Y$}i`Ociv+C@;#T8nT;i)>`bW0I1-39xSIuwhteYu~9eW5?WJlS(PDd0uv-W zLk6j27$A{Da^)joueqJhId*2&T6=*L14-9tPpLCg$JebR? zQ!y~{{~M=JM)%ZX%Ul0~_FC47XKWqo#BLqy@AIgmJN=jLg1w*nTy_?QoG&2LrJF!b zJ;Vm<{Hy4ouAH<3DNKNRiLQ{kophAfGET~s<@Xjb+XJD4=?#*O<@63Q?Z*bI_XRrK zx=+a6UklT{wsi@#G``^6v{36oI+|~AVs2|KFF+2RV~n6>`;le2QTQ1;3OIv^DNm}2 eEWHy}D?<2+i|!M!2iq@<+^xHguUxsh==1qNHXn?Gs{lRd!uWx%&2pM-M{TyB|I{B0jMAxt}~fdHPTO#fimdkB+B=FQqT`Z_ge0 z^pE~7=Sh9retRmKU3dtU=r;9VP1`+cO{b9{{#sVs0X*%W*H#0mu553;J^93Tc?s^x ze7;m9E46CR?Vq|jTL1dOsdrmbdO4C6xqduao;v`VjXJ(A$ItBt7Kz*G>$}&I>aF7^ zz4zA$dFFfHT=@6zajY2UUwtAweB{??CZR((B%M$+EMrEk%}4Wr4z%^ap֌k= zU=Gr&>o~@zt<$Hm^)STtIsiI%56!a^Fw3*468U0$Nv}0DQrAk%5I5{&leR1;6 z>}0|CVyQBrUyRShr*(2peQIh}AFr5s)2Nyg`sXiSUwg{5Q%qi*OjnHJPFAm&U&>W; zrJ_D_;lj++?DKGW2IpazMmh(+aWq>JrAp1LPp-{E>tm2I66YMM)v?IX zppEfuf`8hf+8oQ`gNzRfe#)VOj%D#3jPDSW^RV|qkJ^i7@j8~kM05bvZXlfp)f>Y+SYXcF!aJD zg%3j?q&&JGavnVZuY2?$eBYyW_@ze=!FwK!PY53ry2R%Xn-6Zw)o z&PmMarAleHoGV(XR*E~~PP;ETH(WB^o7*-!Lomb|h0>zj9+GDMiu|$%Uo0#OBtOqLI#38FdFvf4_yrK>kADkb9{v6efF$*s0Q5~3Gyudn zJcOwJgU?xY?cV`$E)q|5Oj`6fj_N*$yiR_M(|F1!;-~`@&j6hiq8D-WL%h0Is2OSO zYZa@{N(*0tYY@*EH3Q=5Y8B$-h^r;z@z~W8#}{zd-_Yq4lb03c!Ch7@c)j)(hlXCU z?A{30CGB$YY`hV*SiBLdY}^mBt`v{!RZ7TpdJD#H1f!&JE9wNLW@>~rDL*AolOl8prxZ`Prj;FPQ#027jVr||Hni=q_R3DF zP%w+Q)$s>o+^E$mx%6($tYUHee~sRT>3c{1s+wiP?5`pivN_F;bB=OQqqiff+yBL# zLx$g1-U~y{ugpt~`=k<6xf_g|Lrw2Vve6kr?K)nk@tVhr+WceId}%(k2E@_)U&KqD zUk&v#Ub4x2FQ7xsw~YD5(MS0xkIeTqwAFk+N3E`*%=Z=atNF^9kIrApN54#EzHg(g z<~u@7oNO}Rx6q;HdmZ!9c}w{^@RIp{h_;%q4F$zzllkb~P|f!pW&P-vt<3iewAFmw zP4XSEd~YiGXr40PpIJT~^U*rXCg=A@bg1)tOIbhqWi0dk18sGF%T4C@KFfDsnP0b( z?{OTj=G#EgXnyVJSLgSRGC%r$lk=1Bys|F8jN@oMWRsuw0{Zd4Q@`JA!mTpy4b-$h zWs~{RjQbwyM*Cowad%NSnxA~vmY?H(6YfVW-@8q?-!bm63HOk3M@_g09y%Cu){hRJ zMxWyn<3de1lW{ugM(g()OE%$t%eZSzxWCw(JjZX@TJ9HGGio0& zZX31SOB9#3hKXp*6gjbFkbA{4#b1ii)qx!TFU!z-$eowMW=Il?A*V%f(A`r2ljy-$ iPH|s)j#O(Ha@sq1h}M;Xl!sauUMhEpb=jvlB==vcb}yg+ literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_adc.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_adc.o new file mode 100644 index 0000000000000000000000000000000000000000..6b62deeb808b74969e30acbe1eb511fc0d0c2622 GIT binary patch literal 796 zcmaJ;O-lnY5S`do?Lknn_yrQZxPrT`>z1OoQfe<&L=*%O$?is4={A}~sV9Gw{wS~h z0-ba>wiYxnnRzoWlf21m^W>Ni0(KE_V1xkPGf)bL1P9763(#sbj;PZ*y`&dH^c1}l zlGbHPn`y+8geUY&ikK@Uq@p!9@b_!(W9X*rUdSC<^8#<5nxuc|ht!e0$C=_g^tyiD z-s5=-x8_EY_2Uke{JE>TqECZrHSoh5s0a8K##z(_;$T>62&wtNZHF*DH`6XpEf$wZ zg)A3V$SPSQ8^x`0LAlWJR1rSE^7POZeoX+N08`^-#Dxi5oWLajrPG7pE*uPQJFIuh zlGuv@JoS=l7NOTN^Bo(Z0u5fmGy^YE3cOgPDeq$r$Ko-qWjA`#T>ZM~f3S{aqjNf^ zWq&w2V^wYDJgaJwXJ@sIJpBD1^?&hp^L{>hvkdQb7-gI3XRL~bcRplUfHw>dEI@DX sHQv6}lt0kSp_$yw^yksaXjTJ;aD@jeCdilVw}5z@mtvu5N$4%_8>32AQ~&?~ literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_adc_ex.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_adc_ex.o new file mode 100644 index 0000000000000000000000000000000000000000..c14d01258236c8363f6ecda751232df56354b979 GIT binary patch literal 800 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 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_cryp.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_cryp.o new file mode 100644 index 0000000000000000000000000000000000000000..5a9f3e0e012faa43a859332c4b480cf3597c9828 GIT binary patch literal 796 zcmaJ;O-lnY5S`do?LkoSTaf6*Ex7BtZYg>zrS@V)L_rWK*=?kiZlg(*dh$o5-gei6WX3JT$n;6M>(0UEX1F?AYeSM*Ydo}za` z(yB~oJ&Aa`&D-=`ikK@Uq@oo!@DD2PW9TOAUdR%yc!767P0~N|L+VK0<4o}qy{TR_ z_j%UBt+EtlD3kQQ%hxJ;q ze0lI<08hOnnnmcfOnt{jC_#hQW}1N)DFt3El7#m$hja0m*0LKtX|Beu`WI|s)##kg zSm_`B9 t_Zn~CYRVsI=Fm)LX8QAJMKr4cL%7C+D<;U6?YDqz1OoQmPj#A_{^?$!;U9bQ_yQX;1x8Ui?X3 z{RKMdZnPFOF#G1syi78a9o5fI2_aw?0SA5lX*X)Qa^v*zm8Y5$W= zOq*V3Ggw7M^?MOZQb literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dac.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dac.o new file mode 100644 index 0000000000000000000000000000000000000000..f60c0c0c42ebdf7d88f7dd7d13962342aa430d6a GIT binary patch literal 796 zcmaJ;O-lnY5S`do?Lknn_yrQZxPrT`>z1OoQfe<&L=*%O$?is4={A}~sV9Gw{wS~h z0-ba>wiYxnnRzoWlf21m^W>Ni0(KE_V1xkPGf)bL1P9763(#sbj;PZ*y`&dH^c1}l zlGbHPn`y+8geUY&ikK@Uq@p!9@b_!(W9X*rUdSC<^8#<5nxuc|ht!e0$C=_g^tyiD z-s5=-x8_EY_2Uke{JE>TqECZrHSoh5s0a8K##z(_;$T>62&wtNZHF*DH`6XpEf$wZ zg)A3V$SPSQ8^x`0LAlWJR1rSE^7POZeoX+N08`^-#Dxi5oWLajrPG7pE*uPQJFIt` zu-JZM~f3S{aqjNf^ zWq&w2V^wYDJgaJwXJ@sIJpBD1^?&hp^L{>hvkdQb7-gI3XRL~bcRplUfHw>dEI@DX sHQv6}lt0kSp_$yw^yksaXjTJ;aD@jeCdilVw}5z@mtvu5N$4%_8>3BDQ~&?~ literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dac_ex.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dac_ex.o new file mode 100644 index 0000000000000000000000000000000000000000..4969dfc7d0b4cb81d5b954fc723d46928c143a81 GIT binary patch literal 800 zcmah{QA@)x5Wcug-GiW_I29!NVg*}k?HKwt#`MLBh=L$8(l)Zmx@Zz*KJ7>O;!pC` zU!a$@(K!$U*YCc&FPGemvC!tBw0W1P|2UWsw?_5s8$0%yoGvzcVV1GT_6s+rG}8258PG=({nSe^3-B+ zi7bLA%3x z?S#c`KJa1yPram?MTlBv*s&fqp}|X-X5d9ifftK3<$a9dWIU#|>_$(Tt6zuxL)I~G zdY#U7**pGhvYl<_I@{T#&dzHab@&H-Pv9@zZeGtvG|T9QBQN`ydd8|~c;-VE1$ag0 xz!F4zu0eZOlYU1tn`Uw|FEEc*MzcMj3)i@@Vw`;0dJD+Mbq|bM|t%Z z=%l;RTF}5`=FPlJ@+L2><3mCS*hRpB9|Z80gGx9cI8cR2fTL#ffI3Gf7xY|+uA;X> z(uT}vD~ouN@PwX95p$)4RJ85}{%+lU2;Gd`3AshwDez*EWxR(uoQub_mTB~;x%ze0zhD)sM(23J z%Kz}^h*h;-@T{s)o}JYu^6>Y+)&IrYF8cZC%`&`~L6mQ%pRpPm-g%#A0bViKvjDxl t*LeF@Q+`J?hb9U$)1OAGqFD_X!X+MDFhQ|wzZt~CydD->mW1B&z5r64R?7eY literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dcmi_ex.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dcmi_ex.o new file mode 100644 index 0000000000000000000000000000000000000000..83b4ac6696aa599f4934f96886aa236b43c68d7e GIT binary patch literal 800 zcmaJ<-%GEz{^xbM@=A|H&Gr zO|O%MEPuzJJ+`xrLT5W0*V%b(p$`9m?+N^++bQb#h-Mkx%h1a|rk=4H8lHKdM*&{Z y*|!AIo@>zF)ui9i%%-Wr%nQt-Rncq@=)x6lTrp0uY`r<;qq+x7w5$lx>b?MUs8|sI literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dfsdm.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dfsdm.o new file mode 100644 index 0000000000000000000000000000000000000000..ff825cd877f41aeaef6b05d83c7cff3f5ac792c3 GIT binary patch literal 796 zcmaJ;O-lnY5S`do?Lkmc`~rzy+=9EV>z1OoQmPj#A_{^?$#zp(={A}~sV9Gw{wS~h z0-ba>_5(C9nRzoWlf21W{rr>=0(KE_V1xiZQcwto1P6*R4{%niolxiO;)Y%e(NnZ7 zB(2JX){}_GF^}n`6fLflkcw8^z(1_GPobNz2O&$e;sxFzHA(;252+)0k2A$f^sai< zIN(_ex8g>U^;;b(`Ab)IMV|)ca^Q#ePz~@cjI*c<#KEvo6H@bm+X!KHVXje}SrnT%w&zh@=yZ!@PSTs6k zGgA78qZ3xuPR6sUrg?T&d&tAz|5g7NZ$Injqc_X&-iA@SnSRE~Xn5yingw{r;K%~> u_Fm)dTTS^B%^aG`%uIg~t%zndUXwAw@_qpNr&m4z literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dma.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dma.o new file mode 100644 index 0000000000000000000000000000000000000000..dc8a38de0509a18c89a4d8cdc69e5c3be1b9fa08 GIT binary patch literal 4832 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 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dma2d.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_dma2d.o new file mode 100644 index 0000000000000000000000000000000000000000..b56658f0082f5d19ff9fa1674adc36dfdf84b5eb GIT binary patch literal 796 zcmaJ;O-lnY5S{eH+Jm5?)DMv8#TDFjyKX6ZE2Vm|BBCIOlx#QBO1IG@N2nr38`q^4g6}|eF)uz-3hrv>t5hhsY&_=en=h32b?LsL$4d> z?LD5gaO-X)*|6KAl0WrTUkqtbs|9{|1C0RR!Z?fiKpYH^7W&9Z%vOm38o&=@m%M%7 z-}5|ue!us5pSx=hbnSSSVHl!a3~`e=M94djsvb)~o!q2~R1)8r5lQiwr+V{BIxI4r z@BFdZK#*x>rcB&ymT@S6j?K1$<>r(LP-~D#W~no;ILv&|!wT&2FkdkzL(|8m4N6QC&Cn~!V2%DmKdrg!3E&QbipSx5F9H9<({UJdd;mIr0v-QepRePfLC4@j)gfU$eg++E zNj>O!?0Kl?u@&oZ75Ggh{7(aSd%kJB&<*W*=XjwX+VdRPXh*p4gl%}@4T#rZN7N!- zf&OKPX-6o~5sKA;6_`>gY-AcN(HZCl#d;&VR%PF$vp4DNPGt9EHZNvxLhM3zC*nr* zuPtG>;QkBjyW^%{H4FmdTiz7h4THd-s{T?{{h9qzP73s#d;Sd+_8ll*mK zO+HoGH|XpRoqgScv5#O)O4;94**EI!E}gw`0oaKQPXSv$?)^u_Y`YD6Co=5^V!M%j zZ4ubJaqp$<He`riHe-aQMpch^1lzHSlN%kQ~&^`4;j0^AoDRVADCIyCEbSib;u zP@o4C+gDhJ%L-#x`(Nz=1$yA*BCvmmb@&C?E%b?`vmaUn_5|+zS70wIVvjEZdj$7B z1?=k6Sl@f+_Az)Dw2hyfkO4J1YBZcAd(&QD=1NjExJ%Sl%;YV1(bY zJ55mcbKj8(?U}$z*0a~(G={osg*#c&9S%Rqxx1fxk=vC@CDL4fO6EG`B-fRUit)G@ z=XT1en3ztdXK1vs}XCPX1EZs7KGJRjL4 zVhT^2Cn^hrF^QAKw+7M!sX@-)+UoZOUL_rVLWm#=(E-A^VQC4c zlhs_qtYB8LtC?D64bxz@8Gqix7f8|XeKYy{u4=>&w#Z8eOH4*LV0Iohlhs8Qa}i>R zWuD(c>L6lBPgC$8F<|OHQl_OT_(u(x`afGz?El(;sekN|Ils1|GfT?m>CqFbVJs;( zhC_S>X#fi?;wvz$#7wpzJ_Q_B*x$>D>0c)+EC1LP&F(M{Y@_s_R>HW!! z5QRA-7iLLYL1ScyH!frZ;*F-$#7hm{`zUx&0M#)+rbvx9mP#hYL12Y`_6nJdJP_TN z5z|nb|9#Q(qxIHKrtn{M?(14dHe#ICI`iYS#$OL{6)+wY*Npj$y!6bqOXH1z!Km*T zVA>1XrQHF0!C;IFR1#A7dtHds@_mGHK1>jTxC6MR6U{-#Coo_SLolh=1&C|W0L(Oo zUUb%SQ=EsmAuv*jH87~YY8dpE(P{!q5?@NlAYI_4z1OoQfe<&L=*%O$#x@M={A}~sV9Gw{wS~h z0-ba>wiYxnnRzoWlf21m^W>Ni0(KE_V1xkPGf)bL1P9763(#sbj;PZ*y`&dH^c1}l zlGbHPn`y-3n8)-?iVjywNJVRI;P2Pm$IwmLy^uS!<^|q9HA(-_52+)0k2A%0=ym

vy_T^5;Y)qECZrHSoh5s0a8K##xjAaWE`3gw%ZCwnLbnn`xJ)7K=-y zLY50FWRThI%OrZzT>ZM~f3S{aqjNf^ zWq&w2V^wYDJgaJwXJ@sIJpBD1^?&hp^L{>hvkdQb7-gI3XRL~bcRplUfHw>dEI@DX sHQv6}lt0kSp_$yw^yksaXjTJ;aD@jeCdilVw}5z@mtvu5N$4%_8_XwGYybcN literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_eth.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_eth.o new file mode 100644 index 0000000000000000000000000000000000000000..d1d222e19d0bb143a051aaa33303dabd1358be50 GIT binary patch literal 796 zcmaJ;O-lnY5S`f8+Jm5C@e3q+aSQIcUAGjyl~Q}LBBCIONVbi%(rq+}QcwOU{ZU^1 z1v=?&><4IIGV^9$CV7*$#_0(m1neTsuy@=YLfnuA5us1K4*%T=uPdS zb->dWZq8??Jr@|T|Ki2)5NmB0^gp%&m<7-vxrh=XCSE~Mr|w-v(tV!lNQAsVsbbr|FT)OichF19OvQ#F-hKoxwQ(rQ^fkJ{%73x~zZ4 zb=PYHcwDe&4Nj`;v{I2Mm-Eql?k=4$Gu|G^fPjn4U$ zmi*!Pj8(Oh@~o;^o}JYm^6>Y6)&IrYPy6}k%`&{VQIu?^pRo!W-uakh0p2knD`)n00N0V;MQp3gTxf035l9$lo0V{S|l+IiJm()$>}<=nd48r*CMIGoQJ%IA7?z22Kya;t>VzoQp~h zm5!S4L)*4f%Jy4w;HoJvOG`V{x3t#eu-Rd@yA`|DGiry{m^_GDf{o=Cb?YrkCp2Ke z@`P5rLfGA#P==?7!q@mDu5r%-H8+j5Xgf^uFvWE?EW=+RrK=p22z?(QmY$ZxZ&Cw+?umDD9WEi^SYGOq?we>6Ois%8zP~B5Qli9%Zj~+?})i z${eaW?JKia`BEd!eEK5JvUE*ydMI5yqS8C(b`gh?v*tU{#$cH&hHepZM*9`#`o){8 z2u0%1xdj)3TX~5pRkR`ou zE9;crWpFU#_E9q3-&Z=RkmQ73;cH{-yci@@^$8YEJo79&R4B}p*i^w{gI131%cYD= z#>lV(Rv~SaN(HOL2Kr;sodf-^#`|;n%LS{C4Mbv*os0*gd!lg`wu~7=FByI8#li8h z#|*DT|3H7r((`GPS;p(xQnrw1vE934(fCU+7{mRk8+s}WB#drAEm*cO+dmeEhBb|2 zO;V@4o;*M{(k{|X9weLPQ0*pn_cqk+dl?r0@xtyv>#_h8q}nuU>eDi8sEf$ZjryZ% zOs;y|p%C!#0hgbvQh};h;TwE>gUe^CR72IP@QpscaIN@pL=9}EQygr|&6Z`Qgj$E&Ibqjo3r?G0u z&h3g##b;+HO?_t4n69#TP z+z3FV^hVCsQ#jgIWi*9{=hcQtMz?i{q)H`-@IYjh7xyLWU*DJXH^G;_rxm_D*7h3W zOVqT*m%*=yHuy4iE%N1R8x=_xaycW94Z#~QqT9BWO}%CtCEPOq+a5xa?>BK1RQ|(P zzAkRCtsWF32q7lwe>P6_?Z+Y zxT6@T<*uUOXH}SZ-}4x#<*u*7eeUCaM~;bNIEs1sx@+snIMK?zxWX;@IEEa*3xtV! zYq3~uz4$6zpT|YL0>j817R7MnHTV<55B$xFBK0+L{H_zm8E$;URMqaHIDrqpgBd=2 jecb0az1Rcj!g2g-`i(oDiFzHVYqg#brtI_;op6_-E#&XgshE1$ayz_D!{$9XrETyWVb&?m$_VB)MIe;@R<9m{m7s zm1ESYEn~y$y>V#rx;a`3$k+8i$5wpHcm-|k%(e$@D%!q=$g^l|VO9@XhZ!<}wg9uq zXj?_wUPNxz`EE2YtAy6+omGoif9mtzsAEeA#* z8kdUn`&qHPCp1rXJUf2kYR^

=PrjbN52yMtDW)?%$j)?GD^Fw&R2^^FTP9?ZDN1 z=nLJDFx&9T&qgDg2}3%Wh$oDHzjMH!eoUP3Gmm>LnEOXT)JLT|EF>c-|(z#RqUSx-3g+krw zb8-3eOa15K?-ur(@9zT@cM~yT>A5lGbjXaBAR5w{mDP-Q>YVwZZv^9B$GB7dpvDTX z$0dql{*%Yr_9&-kFiuitTyfIW$0ozz+;^@9r-Cu)sMEG|%I=8f)3%K*#sAT^@rmzL zK?-ljOGaSlZq~O!eo0ksng>4HXk1h9jL7o-{cnxl{?nIq9@H@3-oKSb4xM>T>;93{ z?bGhlnziE_QaJX-lYQOiDdO$5Kd$X})jRF#tt+Ff+6S|QBUAua9LCIX#o_Mr>whi1 zAU*8a{NuvB-1roDQu-OR^H;yagyU)4q>Kqu)@w z#-Dgvoy}y@IdvgpsUy~+I<`2UN+wfD^+_v}Nab=FE2j?i_V+z9)cb?M-bMX;8SAJz z6zPvVqLQ)i(Y`^o%SxqFdM@s*@03{_`ZXP~hQh_=lz7D>Q9*Xb8 zE~B5~RqW+f#|KO*;1%M%Fo~W@yjO_#3h_Q6-Uo3z{xV7#d@TN=6XkP8G*F;kh_7e( zxPz*9Ml?`huYlhx`2B+4FZde;e1CT=teFZA^Cir6ad6ZPI2KFG<(@VBaUtR~+%iC4D zA2x0MJ(NLcgilfOMyGR^D=10di{$)!2;zAkuyx8gh=}ege-k`jbjq^x9kcL$pPNY~@)>T@ z(#ts`swa$8&PDz7QaV#LSFBo{9-aFN1Z@Ip++MUj`?I>4*D_X2&*h!e*_?=*HLIqx zH{F#HvFpqDH$-Q93A_9#fQGUGuZ*)K@#^{(NxTx1wx8~m2K*#DNInKILGmQPGbFzW z@FK~_0baH3Z`%5AZ2cNanrDwKspcAR(jJn?ixfphdT5eW{wH!{7 zM)1Gi4X7&DinC_Lmg6d}d(^E6b4sAPdTUMQs$-GGu0qkw3Q;sxinfNQ9N}z3WjRg} zS28Pae$8^OfGP~Um}~heWgSUm78g@Xc-Hv(is<>gWzH|>@vHnl8r|-6{dw(}K_QmE zo(|hM{(2H|#6j&L>{R>z3rF9BI4{|FqyHCbQ`p_OIO?6)dE>Yw8r-;xsMo^%Sirr7 z`ep3AalRMOKrf$R+wnm|d0h{nPA@3J(K>&H-97IhDhAqk<9u(R!OgdUd@9#JSgd0`FQnPg*Zt)6RN- zEAV}ce6uz9el73~BcF;m;-eQE-@iWyd_DM~)T+Ph0$&{Y`fNUW(Q&@N3w+m*kKQS~ z5suoY0^iH7_2P@h;q&175X$DFxDDjHKm)sxk9s5G(3R!(X`E<)D>jBy!XngZ7ZLX| o_Je4_zcV&3y}9Ttkk4t&Xn2Q$?Z$`n8h7Jf!*x91nth@mjD0& literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_flash_ex.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_flash_ex.o new file mode 100644 index 0000000000000000000000000000000000000000..dff0968263859d41d5577563025bc615ef9bb61d GIT binary patch literal 3708 zcma)-UrbY17{Jf%ZD}p76k4P$GOtv#GHh3&23^bqDg`N6g1DKvrCdt!)=*mRt)$DG zc5%sAwg;E^vSbfFEZJhR2aP@uXYi3_%L0ik8e{fkm}W~lX)@x&*!SIk++ORplbn8k z&hLEZeCIno_hR2rl%go2G>Z7imPN?-R&m4>7KNXE4pjAj)#F zqxUIc+-$C&95!_4ZuyUQUZC2I(PPU#j$$5}Lv!}kdrznXmwJbujfBE0n}7Yi$t>&| zbk6&pnoNyFANQr%vWjDS(>Uf>@WlSO(US9V@0jh9{{s3CF1QArg}tR+Cc3nXZizGk z(QMwfS{G~m&{LpF>y#(wDOe-k9ASvBb1ruWXA%F;E5?|2zA^IMjh5olnt^$?hAHiU zy*5I3L9g@Ct5{y6U{4r} ziZ##EALaT{hw(zBRHU7d4X)KB`{>fe3g4mYRNKyFLz`_eUM92ga`&uVQ>FTd2Wr(? z+K_5hG8lTF-X(6VAJokYS;Wi5*~e>S5p%HIYKVE#J*DETheb(1uJ3*@PIJ_Gs@)K+ zjagOiK zlL?eyixO<`TY(#uxuWbZj!K*)VaMRdv%tLuo@_*X@=cqM9$BV*c;20JxV|a+?Lxe? z*}1eqLU0G$oh!_F^do_C$DkAHX{1e2CyO@T7Ju~4ZyT4s;eOpXeEHrJgU@;Nc5msy z?(+x5Je8RbHXI>e={fxaNcVM!pEE@ttx;W%*9?0fiT4WkM*1U>HyD5a@srG0Hajga zQ(2zr;WJEMW+F8?nVMuq_-ryI2w7fWx&j@c{au0Ca3I5;&GKzbSFj_vpFwBnP$7LQy*HdzcKv!UbXJ?We!>8ubLOMIcbR0O)5emOYdOG0T*%UjGCX^pk zQzXmhQ-#2AnAF(K!`loEMi~vykniaT2st`<)J$Vux>Nzox z7-j{bkB7f@FfH(GFhurDl7XI~ggDw)NW^>LnK;9<8JT~ZP3NOoeux$F@mz{$^YEu9 zxhO`~&FfF)BiWg$^qC5O&*a=zNbN%6K=nEC-oy!bf0Fr;$Y^||A{-1IO=$l5?;gzX@zsNzDCHKvV2RHpUV>e`-XP-zQ{JdBgh9) z!r%KS%Ke0lfJDwMkB8)Od<&4r`(o`R*?IOe4W$Hj_!sz!AfTFUaQee0t(s9ZC+hi}PE1p=vX$3Wi(y&F2VtFQ?_$VTY+d3X9HsZd`eT|eFhFKHwH$x0)bRGd_%SCF2N%B_Tsv@p0e&W(6#ZdfPwF<(v)~V zfwX}|!#51uyKoUNN~-t^!{T{- z3LUV=D;SDryTl)`}^ZHBD2Z9;7iQsoIp%Cpy? z$%l}JlQ0Hvc7cvQB0H1by}j+VNq5RiJ+$_=>*NFZG|?{Y!^FgTVz*a?TZu*J!Q#>W ztH<=0_P38Y|F9pbrP3XmuC6?xkAuLIv=sOxs-vBw2;YV=L(sZ z`Hast0x?SqcFvxox|zM5&C|5t9%quz(r3lB+D#r!ktt*x!Me>h75r64c7iU=EiB}+ z`R7o~;aM`yoDPsQmLsJ=DBjQ1@{l@pqBfQoPo5>`$a(7mxkx6-rQ~${Lc)81LwA&f zpTDAZ2-YDLz=A|vMn1Sy)3hK7mkkLq3DbyrbAuS@SwqpU^`|ke$FIk@*5Ags)^}oD z>tAF1Pl<&EBXNp61=p~nk3sKY9M`WR&c*l!)-1-~Vf{YFK`MVf*UI<%jW+WdEsx1| zLomO!*=^cQm{Bm}!cuX$QCTk5m&*M{T?M_0c0K4SE?TU~OWuni2NUXOOS#J&kB6SR z$9b<7xctx@_dD`04zT5GUoi(!i2=4vg)c>c?J~u{cBBM*jrkS)2(X)h@AEE-_zrER zl;}8{ic36%|BNa0=`&76{=q+gFgOvFR}i(&yrN;B)^uFQ9L4;X?*@8?*Zqb)6UnGp zK-50-4)?L%iZl&c(|H#Y*X$vLA+b4c2%`4r&}hC%^Uv5=#MFB}jj7kwIEHDy0ZaIS XgTCk@3Nzms*Xnel`f%VYb literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_fmpi2c.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_fmpi2c.o new file mode 100644 index 0000000000000000000000000000000000000000..30b2f98651c2a148cc1b648319806ec4b223733b GIT binary patch literal 800 zcmah{O-lnY5S`do?Lkmc`~rzyT)|zp>z1OoQmPj#A_{_tWVb0@={7ZqQcwOUFa9L2 z{sNtJH(Co~VD`b?FNNqS z+7Xi0WlEcA#M^D&rsq<`Tqz+Ht+|0;skslKo3eW$cWKQFyb3iz|IiPqBYBTA#dqmV z{i3zc^Ac{&jU?;GT`Kugq7u=kLA4tA;VskyybI$jN`N@%mKs88K6G0lOwY}<%2SKQ zC9+Ib3aey|tdq^+_IN{iqvN3>e0=8N5fpw+0H6R<<7woD30|DwB><(=IYmB|BwyL zn_j1LUG|PYn`~!Wxz2Vrsk8IiK^^`9-xK&tx0l!R5zR8Xmywr!Og&>&G(2;VMFC#X xIj{uLo@>zF)ui9i%%+*#%nQt;mCz1OoQmPj#A_{^?$!=4+(rq+}QcwOUFa9L2 z{sNtJH(CoCn4NhuFO$5#MnbKw&@lJ<#=(!XzS4v1lYi{6IYVJemrtD70U0U-3uR=}IKlDTDNZ#j6@m+dT zzi93AyoFnHBgqDFk4pZOs6-5CP^|`jcnkFa@4`5X5+DwSrG}8258YM>({nSe^3-B+ zi7btwUIJuWC0I-V-R$7h}%xx%jr02E+qyo|Uofr}Hk1fXW=7$DbWm*;dZ8$|iYsUOULcKj3=;fARM6em;7$4DV$WWgpYeSQQP=yw9=# zuNWLyfZm>KyuGU_zoVH=Gr5@;m`5w4Sq&J%HEuLBu*>#az{EIDVWDYB=q>LHTdr8S literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_fmpsmbus.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_fmpsmbus.o new file mode 100644 index 0000000000000000000000000000000000000000..e85440862d8f4c418796a04e26e03e861857894a GIT binary patch literal 800 zcmaJKW zU!arjMr%O>vv1za%Oo?|VeRaM5CU!y@Zg65yrrZNj|3hRVHV)DT0N%T>G?IilCrC5 zODbAXg4RUBn@!%N7fLp`)>3I&_M`Bi>_5f6U=LF5(sB?52h;|`qcEnP;$6-(-=(*e z%lbagO88|zQLNW!Q^lVtr*(J>F2(=y)g(AD>xx1i4=m0La1Acp7xZZ9lSce`vhis&th0vA$Ms7Oc%Mc%|wQpItw9kiVC zqk8QR>b1Y1jI(P9k&30+H*e;7>>2O8eR)m@0k;VF@WKFo=cJr01U^(@1K^_7`bzza zZ`bsPlw(Z?QqiUov@KHJ@AE$Wu4IpEEtRH?AdXHO!F>`4_EV}8+6d$Dl-gi)7A4eI ze9W2VC-k;?)%n7U5-9KF?w}dtT^MKS2#Akvxh0k1SDIgPxu!o3w<2GB;- z;z5#S-60!y2V$y4I@4XAg*|{!KMKQAM5A&XIuAQB5cZj25T;r~*pou=3C3_dAu~pe z(wX7<)roJD15Dd~*9%$xmM?o;cOMI#>uy!&W_FA^{0p9^@IT$>qF#h(m(|S|UjDK5 ztku!*%xNA4_=Qf*5kz;cMR!-5{)1*WRSL7Ou!UAdb3LF7H@NZ8I>mDJwvjLEW|(L@ I5u(#Q0fL2D?EnA( literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_gpio.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_gpio.o new file mode 100644 index 0000000000000000000000000000000000000000..c4299f227f97592235eb737fee1545c98b078c69 GIT binary patch literal 2788 zcma)8Z){Ul6hE);wXf|S9W)gg5`2sbn`~ul!wHP=wr=YN8=Yh-D!9I`4_={NXIl+^ zq7e9?F+wsT8d3JykT{4$Lx!6|48{;TK*7WWzf~V3cA=9x7v{O`d;Rlbq9?icobx-s zo_o)^@80xqXKxopQJ@J0HBj^b9Ohia*ql=}V2348|9jede7r)wm;LI{Z-0Q<`Szwd|bj5i_&Uy5OFep(^2Y>)mA5JjE$2cSFY5Up)%P zO(BxZGAF-#2rFt8qlKHJ=X(_k;tb;46r3ge69vAZZVJ(=X|Hn20{7ps&}r8CbCw^k z40@G!t=@Dc$IV&i*I{OM&N{bU;jG_h`7!EOy6(<&G7FfGnX_duC%e|YG$U+deS=AF z8m!l|+}Pc0$4E=BCzJ48LyLGU+VpAq?CLblvNH(}JA0;uPSdtKS@TJ+^1dyRc}@G7FBOjb&IMUldRL^B>U-5IA+3kO8x`)lz5t(Y!&LkenOd~O`S{9F3OK-Z5c%6Thga89Ra=ZzHO zyq+>Te@MY3v{C|qL4fBC0y)R6efP5SV>rfPwKq*!EOYc@n?e~r=-e}n6`M>mi7wOZ zndh)#?h8EE_qa+tQ|=L~Fy{5WW9>WDI(k*TUDe&H?n?G|b|rUra+4+}i*<6Dj?Tr? zb@ENOL#XqGWQP#)J;3>a@0?sMeCE3#SL3;S>3bdMYDT^w5FX?E#SHh4F?i10nghi> ztRW}pzly)U>g$l5ijC>;9m6a~bKUr8nsfr3SFsb{Vkf4s6JKK|Ca@EiQiVP^uoue= z0v)VscT7?|@FO1U`6J?p$HM%batA4eHmp);s!cJp5%lP|HEiOEIykNep_TS@nZ{}+}J744nB9Tyx z-xrDUZP75_8TLzofE3{Sqmdyg7K=n}!-kgnH=66i;(Wv^?l7?TEzBQ40gsrJwZK5FQclc<p7?@eeqxqRGivrMK zC=H`e>wE^5mLUvOp+8Yrgei;CVAS!AIsSZsWh_|4puwc$n{;tj7iV>Gvo4;06g3hJ z7G2z;g>sq(t1fQU#Vd62id;R80;{565rc+BI^PB>5FzclhLar_cvkhfoNt89nvdF! z{n(-UWG8lDVXx}jbG{iyRG;LrV|_wt>T8<#BSw-VVn_Kk9fiuVu}`ixCG` zK#Ysv^2cJ}B7m#BA|0mIr9-vqba0_Y9bT+d7trd}!R1xE@KN|TLP`Cup-4C^4P$Zm zY`DaDJR0=B8JA+%j{hr9A(4D@+HK1JM=1VUyY;J7o_6c?Jd%URS{&qN{THteIr??U zcdv=|S_lY~^5)SY_dyel_mYlh#to2fLldozFao9d9LOuZ$r|stj<*td4%P_D?$A9^{exsfkwaO$5jbC8&XUJV4U-N*v^+Aw1&G z;vnlb;2;vme24R9ZYD7@9^=3ec`|bH5S=E?K}|SBh}QN>{2E+{M_@79%W;r(iB0x~ cDGJh!`#WFoiuslxR?1`W*|uqmVN5gs0mXSQYybcN literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_hash.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_hash.o new file mode 100644 index 0000000000000000000000000000000000000000..02e798163096708671c97b24d6b9ce8a5fb1a3c5 GIT binary patch literal 796 zcmaJ;O-lnY5S`c$?LkoSTaf6*Ex7A;-BR>cO7&tzL_rXdY@5@;w^e1MUyKfq@oo!@JkiyJ$ z1D>{UD{drNzuBRZzjRes^l4Bo2Yz@5)d1hZIE%VK91L?cAvGVkjS%wlvyH;cQg)fF zkhRP@*&v%_JG(n6C>1)H%EISYnjX2#uL%HTU}mz6I5UN_Q#c2pbbJ`J!@=Ob!+L0{ z<23<1^%`pyq1Q6;9UGwp4PJ|B2418Tcuf(N`1?QV|KjbZ{e1Lh8QyRdC7bDItc-?tJ|0SCqm;3FZqa3pY`01E*1YW0*l^@|&NEksw* zMW8T9Uj>cnJ%TDy7xtcodf3l5f z)9ZXHOWtw3$9A@x>TGATIyz1OoQfe<&L=*%O$?is4={A}~sV9Gw{wS~h z0-ba>wiYxnnRzoWlf21m^W>Ni0(KE_V1xkPGf)bL1P9763(#sbj;PZ*y`&dH^c1}l zlGbHPn`y+8geUY&ikK@Uq@p!9@b_!(W9X*rUdSC<^8#<5nxuc|ht!e0$C=_g^tyiD z-s5=-x8_EY_2Uke{JE>TqECZrHSoh5s0a8K##z(_;$T>62&wtNZHF*DH`6XpEf$wZ zg)A3V$SPSQ8^x`0LAlWJR1rSE^7POZeoX+N08`^-#Dxi5oWLajrPG7pE*uPQJFIux zi4!jd@YGAHS%hB8%y(>r3N&~L(+s>wDez*Ero4|i9E-=amfh${bM@<{|G_$zjn3(u zmi^)Aj8(On^Q@{#o}JY;^6>Y6)c?iX&HMT2%`&{#VU%sApRp<$-uaMa0p2h;umHWi s*LeF@Q~p3Rhh}m!)1OBxqgf3Y!WAB@m>^%a-vZ)sUW$dLC84*xZ?8O7TL1t6 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_i2c.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_i2c.o new file mode 100644 index 0000000000000000000000000000000000000000..a85095c7e2fa48d875a80d8ae36811efd099715d GIT binary patch literal 796 zcmaJ;O-lnY5S`do?Lknn_yrQZxPrT`>z1OoQfe<&L=*%O$!;TE={A}~sV9Gw{wS~h z0-ba>wiYxnnRzoWlf21m^W>Ni0(KE_V1xkPGf)bL1P9763(#sbj;PZ*y`&dH^c1}l zlGbHPn`y*59p0g5Qp8*-Ar-B;fxlmKA44}~_d@Q_niqKc)Fk~wKctT2J62&wtNZHF*DH`6XpEf$wZ zg)A3V$SPSQ8^x`0LAlWJR1rSE^7POZeoX+N08`^-#Dxi5oWLajrPG7pE*uPQyR3Jc z1hE$bcwDez*Ero4|i9E-=amPz!ax%zd}|6m=e5#;V%Pc~;dV&(3NadHDN3>i^>H=KXy1W*Oe=Fv>R5&sY@=?|jIz0B;x^Sb*N% sYrK7{DSx1uLo>OV>CdB;(X0jx;R+8{Opq_zZvpW*FU3OBlF(b;H(Sb9DgXcg literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_i2c_ex.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_i2c_ex.o new file mode 100644 index 0000000000000000000000000000000000000000..74b893ff8cb47150bd082edad32442d6523d3c57 GIT binary patch literal 800 zcmah{QA@)x5Wcug-GiW_I29!NVg*}k?HKwt#`MLBh=L$8(k`;fx@Zz*KJ7>O;!pC` zU!a$@(K!$U*YCc&FPGeP^|`jcnkFa@4`5X5+Dw`rG}8258PG=({nSe^3-B+ zi7bLA%R( z?IeiXeBi|Zo_a|&ix9QUuxmYRLW9>~nt>N71zs%Dl=m@)lku3=GKrovSHBMXhpc1X z^g5mEvUmL1WINl;b+)rfot@V<>hKTvp1@za-MpTUXqM3pM_%?Z^^8@~@XUuS3h;`~ xfhCCcT!Z$mCjE|PHqGQ_USJ-rjAna47p`$*#W?x0^%jti>mD%Cv?4^S`vQEGS8xCT literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_i2s.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_i2s.o new file mode 100644 index 0000000000000000000000000000000000000000..f301d83252d4ffd920c24dd65eaf9ff2998b1f65 GIT binary patch literal 796 zcmaJ;O-lnY5S`f8+Jm5C@e3q+aRqnXZnqS@l~TP}5m69CB-=*1(rq+}QcwL+`lG!1 z3v|-mXf0@9GV^9$CV7)l>*RnB+8~ByF`xv?jyBBho*1f>1P?Piz{E#}5_c>F1mtHr{ z+xt9g;nv+qvO%XuC4Y`pECw{F)dD}ffkuFDVVp%V5C_9TQ%KE+Zaak8`C_{?vy@*Z zWwMf6C2M4zZ05Ho1!Y1fQ+fFK%+h0*`!xZ89L!9X5$C3GehL==luoL_T{s-x_E`Tm z4wTmc@YGA9S%hB8)c0(J3N(0KrWtsVQs8w&lJEiMa4a6vTE@|n=IYl?|AP%I8=bQm zE&aovGgj4B#Ob7wH2srS|0Nztl2uA`3N-zg-(r6q}=j7~)UJB7y z^iD`xmkDhq5$|?+m!3<};YtaqXw41$gPQvox(T}%vP^4U;2lsC^bh@zI+FJ}Q@l)X z>KCnjo|SNGZY0^D)1#6<$0`;B8dR%+AKpSez`HQcq8NySZlNKh=0mp?!t8vpRhn7K zFOwCrnp-35WP@zwcg7pa8XXVi;qxmCk03WO0e~FLjHi+3rg(me7XXw_D#2Yi9JYI` z-;M*-=0mRo;Hj5Hvj|bk6noagCNy|mrWtsVQs8w&lJEh>a55g#TE@|n=4#@wf5;~0 zO|P?=E`7(}O}4Y`OlLcr*4cUOq7MInp9%b>+so?th-Mkx>&Qz#rk=4X8lL%(MgiW? xsaS$&&oyZ8YSJHQW>YaU^8yQKB{bUux^Rsf*Nl@bTW=Bhxb6WHO)EmQx^I{TSAYNj literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_irda.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_irda.o new file mode 100644 index 0000000000000000000000000000000000000000..39f246129d3ca7aec4509a1efe7f95949ebd4aca GIT binary patch literal 796 zcmaJ;O-lnY5S`f8+Jm6tw;<7rE4b^r-BR>cO7&tzL_rXdY&X)CZlg(*dh$oJ`KD#FKSo*ufwuL%GYU}Ch4xG;u`W4HvMbXpB=!@=OD%X&A7 zjG5N~@YHjvS%hB8%y(^s5;S-*(+s>wDeyWXO?e-4I2Vs;EtBX`bM@=0f5947jn2uO zmHpw*5vyt==UG+bJUgo`Cd25(5waw;Svunnjl}c-z?%$ULOlBOG0mXUsu;w&Hw-a literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_iwdg.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_iwdg.o new file mode 100644 index 0000000000000000000000000000000000000000..6fb746bd9fa5a407c65937f758b37a7008139bec GIT binary patch literal 796 zcmaJ;O-lnY5S`do?LkoSTaf6*72I`Qw-mjVQoUFaQ4mBV+l_Xm+h`KCp8QezqrCbH zbkf~uEofje^JZQqd6SpM;XWY*>>}X64+410Kq>4K94Ny$z(KvfN1cPCGkPjSN6~8` zX-%fIkw!d@c}$O`XmO>4RJ7^_{&v;958agA3b{e6Uf^w0lk|7}kUElgI8%IsUer#S zTRd;!R^3RlZmUfte@s*&x-_U%0zbTjT7Yk1oJ9!`2g6cbNX>h0GlbEJv1WN>x;R5- z$$VjfERrR%Qd}DplnWh972)GEPxoEn*8~6xFfv$1To}T|AzT7bI^7Ab!(Q*I%{o`f zQ+(sK06g`aY8Ii_GV^U4p#%+H%rpZpQVP75NK@X$9L~jKTFWGQ&|Lkx>R+&oRikq> zXJvo*bHu7z&3RVUFwf3v9eMcs-|GM3ZRY)a^kx~}OFzms)6ZB14ez|mvH-6b>{x)_ t-fO<0}*unL}f_ndwiWmC>vQ4B;FP&Y2)zw%-)uL0%UN4NF3Ad0%RWR@ndm literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_lptim.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_lptim.o new file mode 100644 index 0000000000000000000000000000000000000000..a273fd4ce4b7dd5519de95480314dfea38b38098 GIT binary patch literal 796 zcmaJ;O-lnY5S`f8+Jm5?_yrQZxPrTG*DXbFrBp9gL=*%O$+nTMbeoz)sV9Gw{wS~h z0-ba>_5(C9nRzoWlf21W$mbaI0=4S+CWhlE1_%7CjnNDuEx~K`p?yFwUYFh=XCFE~MrIw;96he6d-YS;{Yy z6|$OJBkN>?Y~^>x1!Y3VQ+fFM&eB7do0tGV4ra#7h;vgoKZOebN+*ZGLpT`RcUbqn z+t+d8wE#TznrIfG*E01T8=(dbUYltKUZfOwEs-R=hdCUK$F!Dl^sKp>xa&W#iAAGx zHY25fI67ffZD%~IYMN(fwTnFb{a^Ke@%FQRK6cO7&tzL_rXd>~5r$Zlg(*dh$o$8ZTi>9iW$hJ(RPhxKlH zI*Gj)z*EnuW)XTVGvBchO3>gXOf&EzrNE0tn({v8a4sIxT6UvH&DF1~{sn7TH99AA zR`!QKN35!ioM%;y^X#m)kcYqjt^P0GPTtQ)ZO;!pC` zU!a$@(K*n-^}Fxx%O!W|uz7k+2m!kYIPk*&-ZD}OM*;`RFbiWV%Ms@1>`Z=oLGT^MIk7l?yysUf811Gg2z^xRCVJhfO{ zBFki@uu3XqjcgRR#v95T9S;@Z<1-JBpzvz~00o#DPa`i(@Ztn70Vtgw1b5+J(C)Ba zyQh=5%?Dl#;Hj5Xvj|bk3_I4tE;M)v(+s>wDez*Ero4|a9F51cmfh${bM@=A|H(S0 zO|R3rEPKbFJ+`yWTxUC*)Y*A$qYnRo?+N^++s*6wh-MkxaO7nlQ_olx4bObYq5!Yx x99V*A&oyZ8YSQm$X46b=<^|@_%4oI+bm1B|R*aJ`TWz1OoQmPj#A_{_tWVex4nnsf-_2iGzALZ3w zpp))KYe55(nK$z?$(y`1j}HkU;1&T7eh|Q021@ae;6WLt0gf7t1L_@}T+nkVdz#)# zMe9n?rbu|Z&D-=;$&_m?m8La63U_P%L+lH7C)F0M1yQg|Z8F>sW9lj1<4p4{dR0Gb z?eM&XU-J{i`e}zM{?yf7*{4yp8inyS)FXTg<1Fa{@h~hkq%wTqw_=!_nQE0M=8FrY zLKX{4WSOjxwc^I8pj_x^st6ySd3xvyza{`sfQivE;=&j%j^Pr3HexTjjR%994(r_r zkp?M1pr3_d33{V4-*FKtFc7qvVGtx*Ly$@#cpq~(mVg)l&z`5nz3n##>ie-^Eb<}_dkmw2#ZgM7JubBITI0t-z?LhpEA#~M~? literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_nand.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_nand.o new file mode 100644 index 0000000000000000000000000000000000000000..e64143ad41783dd3b8267610da162c23c95a470e GIT binary patch literal 796 zcmaJ;O-lnY5S`f8+Jm6tw;<7rE4b^r-BR>cO7&tzL_rXdY&X(MccV#^dh$o$8ZTi>7*LmhJ(RPm-TN_ zmd0KOz*EnOW)XTVGvBolO3>iNOf&EzrNHZmB;hIMa4sIxTK1wx&DF1~{sn7TH99AA zR`!QKN35!ioM%;y^X#m)kcYqjt^P0GPTtQ)Z<4IIGV^9$CV7*$#_0(m1neTsuy@=YLfnuA5us1K4*%T=uPdS zb->dWZq8??Jr@|T|Ki2)5NmB0^gp%&m<7-vxrh=XCSE~Mr|w-v(tV!lNQAsVsbbr|FT)OichF19OvQ#F-hKoxwQ(rQ^fkJ{%73x~zXU z5YlS{cwDe&4Nj`;v{I2Mm-Eql?k=4$Gu|G^fPjn4U$ zmi*!Pj8(Oh@~o;^o}JYm^6>Y6)&IrYPy6}k%`&{VQIu?^pRo!W-uakh0p2k^MjOmLL5d}d+(l)Zmy38cXeDX*6;!pC` zU!a$@(K!$U*YCc&FPGehKTvp1@za-MpTUXqM5vjJ)h)>KUt{;hBRh3h;_f x)e=N|u0eZOlYU1tn`Uw|FEEc*MzcMj3s<j$4N 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 Te2Y=n+cjcbHc&9sqS^f)&Lh2i literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_pcd_ex.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_pcd_ex.o new file mode 100644 index 0000000000000000000000000000000000000000..5188b8c4006bd4c4c08bc2bc6b3ba52f343a9b35 GIT binary patch literal 1772 zcma)6O=uHA6n@*?w5d{m(u%E0nWj=xFxxaq33{>V=Ep-LrKyKfG~G?6BsJ-#yK9Lc zRPDv1P)~vgUc3t;9t08b5E@LX|~K+;VSI1Q%&s?B#HC9^v8A*?+yfHXgDtrmurz5Wc0-o5nW?aP_K&W%af zdkkT1X8G6dbOQFa2PNN$kyREWxJ*wKzUm)Hnf9B zMeRVAi|n)V58_CaGvVHkpd9C!-C0)wIS*N{y?Ngpsjpu_TFDv`%%Kj+3SId|`rmT|`q+ z!_wEvRbtVNnq4#3NPKE49!uVVbR1Vlr@B!CDS~A{GcAX{c-J>-rZ0g$1~FC&%(tiWIg)80f*$q*3q0GHe>L${!J z3wn>B_Xv7W(1U{BE9kv~enP+};UY3@jixa|pumKOS zpfW-|Zq~;r-rPmSKT}cbd=F9WcpFjdcqg@NHX3vd=Z@D*)g8yG8TTD(ibzn?r*2&3z8m{+qyk%YyGA z;xP=~xR3Gv{$3*{+=Q9?USRF_efDY0&VBC%-xr_e_kH(#F-Bthim~Zd?FSo+#ZL@e zyJnjO$Re5G05kKj#xkD+!!0D9Vf10$kHNlHXE4}Tf$s&D5Jd2b6<*{0oki^Ty+N?g IO_;gwFY}%KuK)l5 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_pwr.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_pwr.o new file mode 100644 index 0000000000000000000000000000000000000000..ea6a9bd905598a1c43d585fe520cc312e191b2a0 GIT binary patch literal 3948 zcma);&u<$=6vy9s*Krd&sj*X%xD_l(BofpZ*L4X+m59ADX?`^(=?}H2WY_i7lnu2&8}_!J(qOncZ3MOdP>Po0;!> zpEol*Z#=U%vkR|Ck_4&6Vc=$lgJ zrQw*a%zvR{zVK}~W>o0QKm*VRhx&%*q*AmrviCp^YEgY){#t2xe=~VakI_1& z-=_6#{T{9F>6y~5oY@&FrS~^a4e6g?`zmc;)prBwoxto?N!#B%y`|qmCC}ZZ>aLD+ z#CgCuX-cB=Y|MmlZW5iB-S*9`lm@jNA$JH%^vJIO)Pg!N7cEQUBYTP*HKg6dPGd$M zmwuYsQSpz){0 z%$Z~&bsf@4++&7me2P)3^H@5cn5_sa03Fx~*(5B6`6tYHKcc+Sx$ zsP==#=`OhL=mzx%pzdh01`*u9?{m5vK6Nx%$q4ko9Zm<~dq)>@{uvXIT@7VAaRshDPCsg~XFtdcXwPA(@XdwHprGi#o8w%2dP zb&%7kXBz*-o9|XzMjq>yW!ELv!V9Pc@uJZ(AfCr$#EBs;q>eY*<9iawyAP(3_qUVD z+wE>i{&>45vAn|$XlIf49!N6p7E;~G$r9et*G@a{_9j1$p9lxM-fh4;oxFNB1Mly! zC3wK;z|BAJW#Mgip#VT;K0|}IzkSr?yk~`R+i37|M0DbQ5V#O>QfKtuhE}#=S0ZcTlrELU7i8PvEvucgn{G+Q}E&6bZ)i2saPe zKV&bE^&#UD{khQJkElDX-!}qx{}Aq;!2Naz_qV`3I)od*7e^N)@F69H`lj8a|A~)0 zD%$b4(O|AE)Tfzn7$OOaF1LJ#;wxN?A+(&uhpY>Ef3kM$w}ws7@$>pi66_S#d;+zX MQ!p^$8Gv#B0xzFDr2qf` literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_pwr_ex.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_pwr_ex.o new file mode 100644 index 0000000000000000000000000000000000000000..ac4344ee056df0312c2e5799798630354191b6f9 GIT binary patch literal 3360 zcma)7O>7fK6n^V_216aKY+b5t332P3t=44fWqX%H^zvc*OicwANLmxt#=32Td z9aN#2NK{j>O1_`0L^3c8pNC7y#^PMK5H5)*VF_-0rHYMhV$VU()SGvt=>z6^yQjix zpaHd))`X=O)4MZ4RYG5}WH39Vip@k)SQ2gs;e#x{}m5Z{Jkw8=@Ci;4xQV)%sU+4KZ8wf7^J(Vp4q)SifV~$5tpN z>=izHHf|ujn`N9=15G&WU-KXLWdh8GyVYEb`R=qcd$eKIz*@mCYz0=H6qDjn+)tJ% z*PZEh#K3Xd9m;i1O*RwZxop6c0hHlpA|GyuVle4V`?H~%qM}`xq*-dWv>#1e6{>4qB03x{T!-z!(c0+KJ#SKGT7AF zh~RVZeI{RRv3xDf;`clF{U*QAV)eH)i$CDt519P-TC9PVX7L9dH~@RlLT7^R-a&A~ zYc_@-^$G0laSxnjm})c#J#cvw?uF|N)7(L<-z|ohP22}RGF&&Y4<0gXn7AK$F&M?8 z8Vv%jzh;yVkDiOy>+`Byny)VC^GZFMhkXX@E5O_1nfaM_W+&_OlNC8vQYJ2(uFfjw zO?yf)P8IVPY@B1onv-OoJXMlw>WsFa=*P5$%Cqyf9LGp!w2~p8S7znPdBrv}sZ|VJ zE3whJyj&_)tku~ApS*-2_2MP_Ot#ieLz5Ll(N9+jY|`ARlQYv=K>_o$dcy!AtQ|=@ zy>@(n;WJF;n55bh?^7nPF*(d6oe3JBV)9)kB_`uc(pe$i43iM8eN;B&97;pCq{=nC zxD1FEWJ88%u2zF6UWZXKMz`A2P7KG6c6Q*{Hz$etcn-_C$DLNwdAB<;t<&1x+)kWl zPJnaaTb+YwUMrWC3YHfimZ)qPdNKE*q113!{$HazoW4PR8`J*Un~Q_7Xt3w;J>q3fLdkhQqi)aRD&|2o zrMl3|#Pjf?GrKlm{v;%kKYF>izbNwX*E%o1BQOy2#{C^YyWQVi zn?HKlxWAJQe_1?mw0FF5e+!I9Ia2!pc~>me{KsK)U5lvT*{kxQ6oSJXFb+ZD^RrF( tW8~dN!%ozPu~S?>cFKXDWmMrUJR}EcGHYC=*VoSb8}q%!2XTz6{{j`*TxkFR literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_qspi.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_qspi.o new file mode 100644 index 0000000000000000000000000000000000000000..422f61fdf26c1a1bf06fdc9b336bc8f92f78ea13 GIT binary patch literal 796 zcmaJ;O-lnY5S`f8+Jm6tw;<7rE4b^rZYg>zrS@V)L_rXdY#ZrHx2Z{#dh$o5-gei6WX3JT$n;6Mpx02;O0F?AYeSM*YduA=us z(yB~oJ&Aa`&D-=`iWXN&NJT4d;2%`n$IwmKgOIzl;sxFTHA(--52+)0movq8=}q;b zxzDo}ZpDox>$N&m^5EtlD4+n$04(r}M zs($RX06g`QXcnQ@GW8uBp#%+Hn`s7Kq!f59ktDo_Ih>2fw3c!7q`4Zq>R+&dRikq{ zW2Jxid&H{R%6L}QB+t%j2YLAWKkEPD?PdLZ^kx~}>o7_;)6ZBL4e#uyS%5bT4lO`$ t?={}O)s#Qb%%NgtX8LnzB{Zu6L%7C+%O=Q{?Kh8jl-I*T-ICB--ZzOSR_g!& literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_rcc.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_rcc.o new file mode 100644 index 0000000000000000000000000000000000000000..ff5aeb0edbbaa2cdeb92109bbb8d1829db7a72be GIT binary patch literal 5604 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 JqE7Hp^?!b-kJSJG literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_rcc_ex.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_rcc_ex.o new file mode 100644 index 0000000000000000000000000000000000000000..fc9882e99a9fe2c5b88e2aff3f21a9be2845ab86 GIT binary patch literal 7464 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 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_rng.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_rng.o new file mode 100644 index 0000000000000000000000000000000000000000..d836b327bc23384c4c2c7f242d2aa7ae1c6039ca GIT binary patch literal 796 zcmaJ;+e!m55S{d*_CZilyn#et+=9EV>z1N#rBq+6h$sjmCEKR9(rq+}QlI=N{U~4k z0-ba>_5vE1%$%8%NzUZ0c6LGt0lNq|FhT$y3CM>-f&&GZ130Z#kEwHdeoe20=qcJ3 zl2&9)YjMO|E#9IRQZ%_zLMmEz1OK4xK80?~9)v8?vKM#<)Fk~QKctT2JymI~)ue9oB2e z{=L@(@YHLpS%hB8#CL3j3N&~vrWtsVQs6a39P>Wra4a6vT6Uvn&DF$B|AS2|8=W&L zE&0RI8LMhL10=#2zXaRbA tukrS+ru>O!4$Y=!roVtzK(iV!gd04#VuEzpev635c`+7hmW1B&egN1bR&xLV literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_rtc.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_rtc.o new file mode 100644 index 0000000000000000000000000000000000000000..a5adbeb4044119326a3fb2f94d9cff425b9aab33 GIT binary patch literal 796 zcmaJ;O-lnY5S`f8+Jm5C@e3q+aRqnXZnqS@l~TP}5m69CB)g5Y(rq+}QcwL+`lG!1 z3v|-mXf0@9GV^9$CV7)l>*RF^FclOpCy38`q^4g5;oeGJ`%-3z%(>t5hhs7d+)W+}f+ z%48+CO4i6a+01WG3d)2|rtcbo{V1sc2#(+s>wDez*EBz%B59E-=amc8gnbM@<{|G@^9jn3JO zmj2<-8LMh5<5^YHJUgo$mtdh~N$4%_3)_!YbpQYW literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_rtc_ex.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_rtc_ex.o new file mode 100644 index 0000000000000000000000000000000000000000..46d28496d909aa118281a5563df658a439653944 GIT binary patch literal 800 zcmah{O-lnY5S`f8+Jm5?_yrQZxCM7zw_A$dN~vC~h$sjmCA*EZ(rq+}QcwOUFa9L2 z{sNtJH`*4&!0ekh^D@ay_O*F>Ob7wH2srS|0Nztl2uA`3N-zg-(r6q}=j7~)UJB7y z^iD`xmkDhq5$|+(hn`CjbESk-wB`o>LCt*(-Gto>S*A5F@D8X6`iFi<9m)HgDPE>G z^^4X%&q}y8HwDez*EBz%A|oQ%h`mc8gnb2V|;KV%d0 zrq|g_m%iigCfnI|rn8+*>+HOCQHOuP&jkL`?Pc|RM6-yWVQ_olx4bOZ?qX2K{ xR4hTX=NhzkHR%sDv#FSwd4UDA5}NG+UAV@LYsSfzt+$ALT=#&9rWGMt-8cP)SGxcJ literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_sai.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_sai.o new file mode 100644 index 0000000000000000000000000000000000000000..d53aff4cfe678134e7e2ac78b00b6220061173ad GIT binary patch literal 796 zcmaJ;O-lnY5S`f8+Jm5C@e3q+aRqnXZnqS@l~TP}5m69CB-=*1(rq+}QcwL+`lG!1 z3v|-mXf0@9GV^9$CV7)l>*RnB+8~ByF`xv?jyBBho*1f>1P?Piz{E#}5_c>F1mtHr{ z+xt9g;nv+qvO%XuC4Y`pECw{F)dD}ffkuFDVVp%V5C_9TQ%KE+Zaak8`C_{?vy@*Z zWwMf6C2M4zZ05Ho1!Y1fQ+fFK%+h0*`!xZ89L!9X5$C3GehL==luoL_T{s-x_E`T` zvDoVXcU%aq1sc3A(+s>wDeyWXN%#PBI2Mm-E#v4(bM@<{|G@^9jn3JO zmj2<-8LMh5<5^YHJUgo$mtdh~N$4%_3&$E(X#fBK literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_sai_ex.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_sai_ex.o new file mode 100644 index 0000000000000000000000000000000000000000..a37db089252c895353754bbba86b63d6057a5af3 GIT binary patch literal 800 zcmah{O-lnY5S`f8+Jm5?_yrQZxCM7zw_A$dN~vC~h$sjmCEG^2(rq+}QcwOUFa9L2 z{sNtJH`*4&!0ekh^D@ay_O*F>Ob7wH2srS|0Nztl2uA`3N-zg-(r6q}=j7~)UJB7y z^iD`xmkDhq5$|?+m!3<};YtaqXw41$gPQvox(T}%vP^4U;2lsC^bh@zI+FJ}Q@l)X z>KCnjo|SNGZY0^D)1#6<$0`;B8dR%+AKpSez`HQcq8NySZlNKh=0mp?!t8vpRhn7K zFOwCrnp-35WP@zwcg7pa8XXVi;qxmCk03WO0e~FLjHi+3rg(me7XXw_D#2Yi9JYI` z-&QPc^P$%P@YGA9S%j!%iaqOL6B@iO(+s>wDeyWXN%#O`I2n&=E#v4(b2V|;KV%d0 zrq|g_m%iigCfnI|rn8+*>+HOCQHOuP&jkL`?Pc|RM6-yWVQ_olx4bOZ?qX2K{ xR4hTX=NhzkHR%sDv#FSwd4UDA5}NG+UAV@LYsSfzt+$ALT=#&9rWGMt-8bmrSFZp7 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_sd.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_sd.o new file mode 100644 index 0000000000000000000000000000000000000000..21470d80cf2945911aab179671fdf3ee0ede07c7 GIT binary patch literal 796 zcmah`O-lnY5S`do?Lknf_yrQZxPrTG*DXbFrPN-mh$sjmlI^Cn(rq+}QcwL+`lG!1 z3v|-mXf23=$;_L1ndD7IjnflC2-royfgc3$mV!b!COA-pd4OiUeoUR_*%iGMqOWL2 zNLrH#Z6pzoV;<9UDcW2qAr-B8??Jr^5>rFi2)5NmB0^gp%&m<7-vxrh=XCFE~Mr|w-v(d!d$C3vz#xH z6|$OJBkN>?Y~^<*1!Y1fQ+fFK%+h0*`!xZ89L!9X5$C3GehL==luizVPBPGw>p%z-x;n;RDR!R6M4&>_tzSt6vxW12(a4bk1hH z^bdaySykH^&#Ic{*;(x(4}bq#{a?KOte=nGEW;a(qjWR2nr38`q^4g6}|eF)uz-3hrv>t5hhsY&_=en=h32b?LsL$4d> z?LD5gaO-X)*|6KAl0WrTUkqtbs|9{|1C0RR!Z?fiKpYHNn-fq^=hnmJU;%uIhCt&C9GzUyb0PYQ z-U>;ZGNtV_;z`02dMZWCl@e0Xh8y_RhWik@DZ3MLhc>*xt5TEn_x+GMlJ_}Ne1~2& z&pLZNZ{arFNU}lPrIJ7OR8I_OP_GAmcn!?}@4`5XdO#cuOD!QaAG)0orf18Y%G5$} zkt~tr!U|a>YhV@TSZ9 zH!5XP$4n+(4B)BfRI>=ZmYMI`2z6-i5~dk=ky7BrB2D=Kb2uE2X)Sxvqvq<@dH;cR zEE=uTIVpR`pB+}&X3n$9CV6&V+sMN|;Cljp@pkimK69`%liV*23Y+7 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_smbus.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_smbus.o new file mode 100644 index 0000000000000000000000000000000000000000..bbd112a461bbbe5630a946c72e29a6f6c9260325 GIT binary patch literal 796 zcmaJ;O-lnY5S`f8+Jm5?)DMv8#TDFjyWLXsR!a3^MMOamk!%}jrQ2wdN`};lTJ-|2L`~8^@#_ss|%_5&~1h=znE_p=2o(+ zWQ`Ov>tus$lI`s7q@YyjWGV|^-)VZ}GE)-($iUoW8F6L?XJ>E@KUdzOHY=jy#cx|Q`c#%@zwL~2AKIU*R9@AQOqk-mX>aPF578Z@p z`IMCW;rN7AwUhF!s#%_$)gJQj_kY#@#XCs*`RL6uyth%5Y^I;F3L4(|lw<+kF(_Mr u-rj4xeXA*dqM1Ya)Xemk&^MjOmLL5d}d+(luk1bmjsy;rVHV)H**v7q@#!VK5TdVW zS4i5BDQ%?@k7FLwGbuV;DIpcDyMe!7cOODGWp_gE(7G3R`_u&e13#pWnYL)D%+lq1z5&dTyp&o?0v} zk!7+{SS1y*MmCCD;|=AFj)#iy@tKE5Q1~?gfC5a7r;!&XcyWT40F+LvK{p%@Z+onN ztM22ZD~DbOz*EnuW)Y&68TPD)U1;!PrWtsVQs8w&n(_h0a5Ns%S|-t>=IYmJ|C4o0 zn_j1LS@w=Udu(T$xz2Vrsk8IiMjieE-xK&tx0~1V5zR8Xmywr!Og&>YG(7V@ivql& xQ?&%qo@>zF)ui9i%%+*#%nQt;mCw%!8raoqzZT2_Q;bzirCSU3Ox literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_spi.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_hal_spi.o new file mode 100644 index 0000000000000000000000000000000000000000..30d866f2217124a17b173ea5713266d386b9739d GIT binary patch literal 796 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 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_crc.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_crc.o new file mode 100644 index 0000000000000000000000000000000000000000..6750bc1456f1e085222f0c43e619cbc84db8a679 GIT binary patch literal 796 zcmah`O-lnY5S`do?Lknf_yrQZxPrT`>z1OoQmPj#A_{_tWVb0+b{kEi)RR9-f0S2$ zflj&``vGELGV^9$CV7*$=IJpZ1neT zB(2MoHq(f=+q_NBrHHvwLMmEw1Ao8fK80?|9)#SXH81e?sY&{Wen=h36V4Rhp*Qu5 z)*jDWxHUJDtQX%?$zQsvD|$4jRs%o0g?fN*VVp%>AP$D5hLD=~-Bt+Gb2F{-)MBwh zmdJ8pg{+b_vQgX`6_g7dO%>tmJ5LW>VQc~b1(+HwBQ8wf;sh=MD4iYzov`1(OOm@- z#$F8Isn=Aq2)&k>zqb(z(BQS1X5d9ifftK3_*R;tFepz0qa;dI;V49 z_J_kmR@G+Cv#KU}c2?WS!{7f^{}*pJ@8_d8%kbU?QMQ?W#;Ry|=VO)yc*o$t0`&G? sOg05{@R1poj5 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_dac.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_dac.o new file mode 100644 index 0000000000000000000000000000000000000000..b024b79bca5798e29bb0a3cd0e88ccab102c10ee GIT binary patch literal 796 zcmah`O-lnY5S`do?Lkmc`~rzyT)|z}bxYA(DYX|XA_{_tWOpN0b{kEi)KhS_@)eGV^9$CV7)V>-dNe0(KE_;0FP`<)9J{2@X_Y8lc^59#W@$azW39NEN*m zk~U;UTUo@DgeUY=ikK@Uq@r~<@b~KOW9Vk=UdU})_X2N^nxuc=ht!cgTqDO;TE%3u@Xax8c##z(_;$T>53aNSD?SwEnGu5e1%$FC) zB3UXelNGW`*2|ltf(oIdsWNeog8fHkZeos$JG z|HGd{R@Fwqv#Q2L9q^C8ayykf9#0eX9{ s@%F8z{ElW0O%-OQKZ{mHvl=jjOFXz>f@0ZzbBITIDHd9mgx>PL034H5^#A|> literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_dma.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_dma.o new file mode 100644 index 0000000000000000000000000000000000000000..e89daf996db7420838670495b12da27e4dec66a1 GIT binary patch literal 796 zcmah`O-lnY5S`do?Lknf_yrQZxPrT`>z1OoQmPj#A_{_tWV zB(2MoHq(g5F^}oF6m71Qkc!saz~8UAPobN#2O)Q8%?rGJYLfn;A5us1gfqo==uQ2i zwa4=oZq1D(>$UHxz`Fg5{z0!)pT5f>(KaRQeBlui$VPT23?CCOc! zGOrEbsn=Aq2)&k>zqb(z(BQ>PGw>p%z-x;%_*R;tFepz0qa;dI;V49 z_J_kmR@G+Cv#KU}c2?WS!{7f^{}*pJ@8_d8%kbU?QMQ?W#;Ry|=VO)yc*o$t0`&G? sOg04=9g{{R30 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_dma2d.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_dma2d.o new file mode 100644 index 0000000000000000000000000000000000000000..3bb327cd6ad6dae783209e2f1c9c2518347032b0 GIT binary patch literal 796 zcmaJ;O-lnY5S`do?LkoSTaf6*72I`Qw-mjVQhTu?q9BM!wwq$5+h`J{p8BKoM|t%Z z=%l-`AE1HB%$s?cDiNOf&EzrNC>7B;j4m;aohXwQNT(nyay^{so&@H9Ds= zR{Dp-BUaUR#d3IL2$iv_NRsR=nKkMhCH_Pz)gDBlhKVu~{yz?o|0=#2zWC416 tukrS+ru>O!4$Wj{razBXM6((&gd04#VuEbhehY|4d0i~jED62k{Q&*fR+#_* literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_exti.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_exti.o new file mode 100644 index 0000000000000000000000000000000000000000..e2df4ae932b920f27c0b54907885fec8f3f6f955 GIT binary patch literal 796 zcmaJ;O-lnY5S{cx?Lkmc`~rzyT)|z}?UtgqQfe<&L=*&(l5HcdbQ?{g)KhwiYxnnRzoWlf22Wae6`s0lNq|Fh&6HDJX^`f&(R(18COk$JA+_UC~P+dWzl& zNoz8pjU?jTF7MKFDLPy!Ar-B?Y!!AU1!Y1fQw8|^%F-j3|1|-CJmewDeyWXNq8S~I2Mm-E#v4}bM@<{|G_4fjn0{j zmj2=Rj8(Or@vN$8o}JY$^6>Y6)c?iX&-(f3%`&{^7Q2sV9Gw{wS~h z0-ba>wid*|WaiDhO!6kLjnflC2-royfe`|D&p;_05*#SQEI_kfKc-Ie?229rkto^` zlGbEO8)?MbZQiEmQp8*-Ar-BrFi9QV~mB0^gp%&m<7-vxrh=XCNE~MrIw-v(l+)S%HwOCvt z%VednO4i6a*(`343(AF#r;70Tm8XZU@M{791(+HyBQ8wf;sh=MD4iY#op3O?OOm@z z8hbH-r(ROcBJ^5jzH1{CpuuZ1&A^M40xuS6%KMnZsd!9l*^8buSHCX$2W(*7=$y`Z z*&mJ$Syfv(&#Ic_*;(x%4}bqh{a?Jjyq}NWEW>*pM%iZi8LOb-oex_IT;std6XeVGTR=R{OR&(eB=nZ|4K#aJ0{{R3 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_fmpi2c.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_fmpi2c.o new file mode 100644 index 0000000000000000000000000000000000000000..4ed261628c6713f6f0f8c8a87603b3f95824232e GIT binary patch literal 796 zcmaJ;O-lnY5S`do?Lkmc`~rzyT)|z}?UtgqQmPj#A_{_tWVb0@={A}~si*!Z{ZU^1 z1v=?&v=%flnRzoWlf22Wd3sC;0lNq|@Ph!}GEfRf1P9763vkkC98u@w?229r(NnY| zB(2MoHq(f=+q_NBrHHvwLMmEw1OK4rK89|}?uFc?H81cEs7d;Ven=h3dz>l0OK<8I zt$m)iaBFTPSwHSl$)6LIh&~Of)xZyLp&sB{7-vxe#KExC5K{Aj+X`WNZl+b9S}ZP+ zWwKIOC2M4zY!(KaRQeBluj!_Cmam!dcC_& z`j7;%7Xx_eCDklKuVv=DHbM;=yf)JeyhthVVv(l2k2xHS$F!D7^rX4^b=QAj1B*uI zbWY0t@aKe8wUzU%s!5)m)eiFT_rKNu#oNpK`RL6uyx}OyHq*~o6%Frv$g%*h7*s4k uZ|^nUzSWf9(afQl+|2an(aLC61BP&o2UkpxFWYYc@iY7xGLah7y}co>%IQW-w*n=wqzOf}0B^Th?S zNR|rAWQDAf_2TBJpj_x^st6ySd3xvyza{`sfQivE;=&j%j^Pr3Hex?&$AiIbuXo$l zA`Mc2KtBt^67)u8zT+ZPU?6BQ!yrhsh9H$f@IK~nECDk{b(2TK^{<=$2WwciIwx~l z_J==boT`nS=TwdJ+^n{chrj=={x9B6-Y-ONm*u?-qinPNtX0tP&igD2@QT5{1L)no s*1Nab@;jP6G?km3{w!J<&1t|8uJGWZ4f5ss%^@D;2`n@m3BBWe0pQbCcmMzZ literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_gpio.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_gpio.o new file mode 100644 index 0000000000000000000000000000000000000000..9ad6342731dcedcdf7b8ac08c45656d761422592 GIT binary patch literal 796 zcmaJ;O-lnY5S`do?Lknn_yrQZxCM9Ju3L)UN~vC~h$sjml5L}1={A}~sV9Gw{wS~h z0-ba>+7>i0nRzoWlf21m^Z1Yu0(KE_;1>bBr=SoH2@Vut7T~DSIH1na$pt+ZqNnJs zkhCrn+Dsze>F^Fcm7>j+5>nBc8~Bx)`xv?jyBD%dYhK`0s7dj=rdRc| z)-KOlxHUJDtl#cZ$)95ti#`pi)xZz0p&sB{7-vxo#KEx85K{Aj+X`WNZl+b7TFftz z5?RizkX5oqHu77ef-<3_sXTmsW$B^IjZFX`2UDYE#JLHapTGqGrIWqjHXICYdcB*w zhgf)R08hOnnnmcfOnuizs6d0)VVZ##DFt3zBnj_h4#(m#tz{fNX|Bd@`X8)g+31|k zXz3sRp0TPnGoDp7$+NTCMjrnDkNUrOJ6S&;y;+9$I*iiI^fOjP!#f|+EWjHEdlsO# t_Zn~CYRVsI=Fm)LX8QAJMKr4cL%76)B@<-J_FF(a%1f}&v?TPF_YLa)R(=2g literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_i2c.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_i2c.o new file mode 100644 index 0000000000000000000000000000000000000000..0fd271b2d0cff4ed360a5940940e914c186167a7 GIT binary patch literal 796 zcmah`O-lnY5S`do?Lkmc`~rzyT)|z}bxYA(DYX|XA_{_tWVaDlb{kEi)KhS_@)eGV^9$CV7)V>-dNe0(KE_;0FP`<)9J{2@X_Y8lc^59#W@$azW39NEN*m zk~U;UTUo@rUEZaqQp8*-Ar-B=fxlOGA44}|_d;&dx)*qR)Fk}_KctT2DQAjr)2qf= zXO|Z(+`1b{){F0`53aNSD?SwEnGu5e1%$FC) zB3UXelNGW`*2|ltf(oIdsWNGsh3Q%2)&lMzq1hv(BO5MX5d9ifftJ`<2}sbR6M4&Orj^v)vt^G0c%({IwuQW z{)az@tg4NIXH|{!?5wtshrj=={x9B6(a%S3mf;PCQNEde#%gGI=R=+ac*S7f0`&G? szrFyX$8ZTi>2yEnhJ(RvlH4YJ z9j9I!z*EnuW)XTVGk<3zl%T=uFwMY=lmf3U(vi4a-LN+&a<=HLLUD9xB9<$J9$4Jy;+9$GK{j#^fOjP!#n#~7T^_weGAar tdyThmHRX3SbEuq~nf?q~1z1OoQmPj#A_{_tWZOt9yG>1^){{R# zER&VoDp@1zWHY}#Dku{=n##l1ca|Qw+}H#FaxgVoMx2|#`3YPAP&zpX?!$inE{^Yd zFVbrQcf1I#0UEp((+s>wDe#&iNq84?I2Dg+Ej!VZ=4$Msf4~OTjn3(e zm;T}KkX5yn@vN#zo}JYW^6>Y6)&IrY%li4~%`&{VL6mN$pRqC;-q}mD0Ph$aSb*N% sYrK7{DSx7wLo=C~>CdAT(X0jx;TjJvnIK!X-vZ)MUW|phC84*xA8<8RCIA2c literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_rcc.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_rcc.o new file mode 100644 index 0000000000000000000000000000000000000000..f16f24484045e6a1c515960d4b748f08c52c73a5 GIT binary patch literal 796 zcmah`O-lnY5S`do?Lknf_yrQZxPrT`>z1OoQmPj#A_{_tWVb0+b{kEi)RR9-f0S2$ zflj&``vGELGV^9$CV7*$=IJpZ1neT zB(2MoHq(f=+q_NBrHHvwLMmEw1Ao8fK80?|9)#SXH81e?sY&{Wen=h36V4Rhp*Qu5 z)*jDWxHUJDtQX%?$zQsvD|$4jRs%o0g?fN*VVp%>AP$D5hLD=~-Bt+Gb2F{-)MBwh zmdJ8pg{+b_vQgX`6_g7dO%>tmJ5LW>VQc~b1(+HwBQ8wf;sh=MD4iYzov`1(OOiVo z$6gHJsn=Aq2)&k>zqb(z(BQS1X5d9ifftK3_*R;tFepz0qa;dI;V49 z_J_kmR@G+Cv#KU}c2?WS!{7f^{}*pJ@8_d8%kbU?QMQ?W#;Ry|=VO)yc*o$t0`&G? sOg05|bg1poj5 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_rng.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_rng.o new file mode 100644 index 0000000000000000000000000000000000000000..ef82496f674944708d04c6af8f7b50527afa3bdb GIT binary patch literal 796 zcmah`O-lnY5S{c(dk|CcO7&tzL_rWK**3M6-A0or_2iGzALZ3w zpp))KYe5W5X5P%pByaN4I5{GOfL#O}_(1?~DJX^`f&*ok1~{(Q52tQR)N1!Y3VQw8|=%+e#5|1|-CJmkj9i1QP;FoBBzN+p%z-x;n;RDR!R6M4&>_?B9t6vxW1Jz1OoQmPj#A_{_tWVb0+b{kEi)RR9-f0S2$ zflj&``vGELGV^9$CV7*$=IJpZ1neT zB(2MoHq(f=+q_NBrHHvwLMmEw1Ao8fK80?|9)#SXH81e?sY&{Wen=h36V4Rhp*Qu5 z)*jDWxHUJDtQX%?$zQsvD|$4jRs%o0g?fN*VVp%>AP$D5hLD=~-Bt+Gb2F{-)MBwh zmdJ8pg{+b_vQgX`6_g7dO%>tmJ5LW>VQc~b1(+HwBQ8wf;sh=MD4iYzov`1(OOiXO zV=o5q)N86)gkHp%z>7ti@*d`JDjw5XcB5y_)!0Su6CniLBH+Oj0=O?gJzf$#Xu%7BVZZ;8dc*V2 z^h(N^rW2`XPYF5@DbI7B(+edtuC-K}CVmv2CjO7u7wkr=Hcf&kIHfijeh6dgDL&&& z^EUn3yBwYHvW1`csbcf&nkxQls;6>Jqi#0}<8RQ5@GXq9bPB}7u-=!-@P$8$p|RB* zwJJNcS7evGuD&5}$v!!#9jyu~g|4P*@b_PtUb^bq1OTc~SuG>3Zs6Jmt^;TzI?*Iv zEXK3hSm#1yK?V@$-@>pIy-|g~b`eT25ai4-2vV&f$fOW_jyar5z>HDT^rzu^?W+HR zcUZML8zrmw!>1!o)nUnVsy2CUR_~FAzyGNIIo@&EFGO#b<=rl$Vzd3Mbz1OoQmPj#A_{^?$+nTM>^7Q2sV9Gw{wS~h z0-ba>S_@)eGV^9$CV7*W*2xhe1neT+v2vlcLL&5>nB+8~D|_`w+S*yAyJU*1f>1Qj_!#{E#}5C!8t1L$4d> z?LD5iaO-X)*`V8}l0U^N76Tg8YJnf#KqJ7nFwUYFh=XCdDWv8@w;jUN>~yH`rG=a+iN~in5Z8#iulBA>V zW3LO~spnL)2)&k>@7o9kXz+SWGw>p%!0U=Mz1OoQmPj#A_{_tWZM*1b{kEi)RR9-f0S2$ zflj&``vGELGV^9$CV7*$=IJpZ1neTz`Fg5{z0!)pT5f>(KaRQeBlui$VZrJbNCCQzR zQ?Cu+sn=Aq2)&k>zqb(z(BO5LX5d9if!7vk%6pi@sd!9l8As2WtFepz0qa;dI;V49 z_J_kmR@G+Cv#KU}c2?WS!{7f^{}*pJ@8_d8%kbU?QMQ?W#;Ry|=VO)yc*o$t0`&G? sOg09K<`7XSbN literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_usart.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_usart.o new file mode 100644 index 0000000000000000000000000000000000000000..5ec4ac6fc351c67f3a36f810116b733925958223 GIT binary patch literal 796 zcmaJ;O-lnY5S`dBdk|Fo79@Ic3+}pZw-mjVQoUFaQ4mBV+oo9QHkzbTPyJE)qrCbH zbkf~uEofje^JZQqd6QA&^q3F=b`fyk2LZe#AQz4a4isS);G|wZqRz?L6}=Rqr)Wn= zT9Ywt#1U_|d7GX~(c(%8sc6*={DZ3d6uL2c5VAz8Uf>;2lk^Y$kUEn0I8(etZ)z9K zeV(>(t8OG&zjaR~f9|TT=+mH53H1)H%EHHInjX8%uL%HTU}mz6I5UN_Q#c2pbX*QP;c$4@>)j0$ zliF(mcWra4sIxT6Uv>=IYl~|AI}d8lCx+ zmHgq)5vyuDC84*xFRdC^00000 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_usb.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_usb.o new file mode 100644 index 0000000000000000000000000000000000000000..080e824984ec07f5e1ee5cce2605ba95263cc399 GIT binary patch literal 12804 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 D7E03u literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_utils.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/FrameworkHALDriver/Src/stm32f4xx_ll_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..6ffe385ae1245148680d20076f76416a6880005b GIT binary patch literal 3312 zcma)8O>7%g5T4z&9oI=nn-mCcsWx#@9NHKsq)MrfaO}oO>XcM#iS1YrXKR5lqA_pqUYa1-1J;YHun=#S5Ks%+C_f5aCPV`(ML zdK-};ziHK1qFu3!5L;raMUcDdQ0%S>a%r46(~T#! zv+JvMDFMC0-usmW#og;yO5>YXV8xqw_Utw$oDyF5Bu2MmPT2dAc(yd|XWvK@Rk(6J z{7a2^LZTZpuqR1ya_OGLHYPP9vG>*@)B7(-S2{A%+Kb88qJ>NQ60b#t%dUWLWiMLn z5`FHuG=iU}s}K+Zg9kd9*oZ{mU4v=w1@THpT3kC5eK~sDW!UAdx&!@oyfW>+(0AbF z=&%uy0)3M{)?4oo{V|{7Va{fyJ z?iM4htmnY_RjI4AC?C9dWEYcvb2ZLHZ;1DOduzhaqV-DIulU(3!nNfEHi%DC7k#k> zWdSWojMhbQLFq~?;Ip-f-rIk>u)rR}vtK!Ea^68(iINSnYekM<|MmCl5d3Co7dsOb zFI)Jd-Aak>1{Xa4(xNBcZm_#Q9%N;bNNM_ptVfw(4l3($hmr>0xLO_9y~-Ub?n?SA4or z0qQy!4`SD=R@bZi-jBy(`{dyGz4ys8#bQpAj}^=EXgM#B<?r%y>rL!Oe(R9a(WnDcnaBvtr?JWm4iJh*k!i~bs zQnzr6;1_nddYv!6bv90y3tu&UWTd4(O$x%IGmKbj!Y-U2PI1942&o6n7ZF^r2lZ}T zrntCaXbId+`EJ;Y5z3cwi5RE+?YK;FbHmUQc$)G(2EW^8d2EXe30j)?Ee3z5&1$hN zlkaWfdkwzVW^Gs|-`B+V8GM($={`HtBRki!oooVx4<(NZZohKoEN`293Jf9KG#;S(ojbGg~$dN!wpGO$yJ zsj1n+vDoY()UjgWSoY!l#e6DTm`y&Agq?G6-^}Dx(uhuK(c{{@l8<%f_qpVw1q)Oy*}j9WNZbO_C*^b~~Bng$_qgzzc;ag$BP zU-sEfbZ)2Zv^F(_!_fBq&GtHDf7;}YM6>Zfp63SfUr*wH(Z(Q@DdzKP0e1*zcPORn zv9%-5{&U%*+ZzqQ(yxtdxoxBEu)0~8w^UkB~?E5|TmC;9iX*%=1b+n!J zPU3+o=;Olc{e%u@y=z#He!r+5O>bWBW-R8c_XF0`G0uh8>q3&V-d5ZMUXP|bueZ;t z7q$u*hDtp29fCVKus8&X%kM1V&DdxO9b3`94Hxy@jElY-mat_7 ZFXGQOGV2heUmhoKH$F#_npnckKL7~6UAO=M literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/firmware.bin b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/firmware.bin new file mode 100755 index 0000000000000000000000000000000000000000..0947949f8de1f5f0add35dfad9d71c2ad401c4a9 GIT binary patch literal 17452 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 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/firmware.elf b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/firmware.elf new file mode 100755 index 0000000000000000000000000000000000000000..82f49c486a2bc9aa0ce55eafe1f7bf8c074c0159 GIT binary patch literal 150348 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 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/idedata.json b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/idedata.json new file mode 100644 index 00000000..5c97fd36 --- /dev/null +++ b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/idedata.json @@ -0,0 +1 @@ +{"build_type": "release", "env_name": "nucleo_f446re", "libsource_dirs": ["/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/lib", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/.pio/libdeps/nucleo_f446re", "/home/kymkim/.platformio/lib"], "defines": ["PLATFORMIO=60118", "STM32F4", "STM32F446xx", "USE_HAL_DRIVER", "F_CPU=180000000L"], "includes": {"build": ["/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/CMSIS/Include", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/CMSIS/Device/ST/STM32F4xx/Include", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/STM32F4xx_HAL_Driver/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/STM32F4xx_HAL_Driver/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/CMSIS/DSP/Include"], "compatlib": ["/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/Common", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ampire480272", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ampire640480", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/cs43l22", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/dp83848", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/exc7200", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ft3x67", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ft6x06", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/i3g4250d", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ili9325", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ili9341", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/l3gd20", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/lan8742", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/lis302dl", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/lis3dsh", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ls016b8uy", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/lsm303agr", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/lsm303dlhc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/mfxstm32l152", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/n25q128a", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/n25q256a", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/n25q512a", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/nt35510", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/otm8009a", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ov2640", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ov5640", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/s25fl512s", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/s5k5cag", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/st7735", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/st7789h2", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/stmpe1600", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/stmpe811", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ts3510", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/wm8994", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Adafruit_Shield", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Utilities/CPU", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Utilities/Fonts", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Utilities/Log", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/BillBoard/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/BillBoard/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Core/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Core/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/AUDIO/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/AUDIO/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/HID/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/HID/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/MTP/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/MTP/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Src", "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/Inc"], "toolchain": ["/home/kymkim/.platformio/packages/toolchain-gccarmnoneeabi/arm-none-eabi/include/c++/7.2.1", "/home/kymkim/.platformio/packages/toolchain-gccarmnoneeabi/arm-none-eabi/include/c++/7.2.1/arm-none-eabi", "/home/kymkim/.platformio/packages/toolchain-gccarmnoneeabi/lib/gcc/arm-none-eabi/7.2.1/include-fixed", "/home/kymkim/.platformio/packages/toolchain-gccarmnoneeabi/lib/gcc/arm-none-eabi/7.2.1/include", "/home/kymkim/.platformio/packages/toolchain-gccarmnoneeabi/arm-none-eabi/include"]}, "cc_flags": ["-mthumb", "-mcpu=cortex-m4", "-Os", "-ffunction-sections", "-fdata-sections", "-Wall", "-nostdlib"], "cxx_flags": ["-fno-rtti", "-fno-exceptions", "-mthumb", "-mcpu=cortex-m4", "-Os", "-ffunction-sections", "-fdata-sections", "-Wall", "-nostdlib"], "cc_path": "/home/kymkim/.platformio/packages/toolchain-gccarmnoneeabi/bin/arm-none-eabi-gcc", "cxx_path": "/home/kymkim/.platformio/packages/toolchain-gccarmnoneeabi/bin/arm-none-eabi-g++", "gdb_path": "/home/kymkim/.platformio/packages/toolchain-gccarmnoneeabi/bin/arm-none-eabi-gdb", "prog_path": "/home/kymkim/Projects/modular-kbd/firmware/components/modules/iidx/.pio/build/nucleo_f446re/firmware.elf", "svd_path": "/home/kymkim/.platformio/platforms/ststm32/misc/svd/STM32F446x.svd", "compiler_type": "gcc", "targets": [{"name": "upload", "group": "Platform", "title": "Upload"}], "extra": {"flash_images": []}} \ No newline at end of file diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib1a3/DFU/usbd_dfu.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib1a3/DFU/usbd_dfu.o new file mode 100644 index 0000000000000000000000000000000000000000..185be0b01e19d03f7a3fe55169ec23d360402092 GIT binary patch literal 5292 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 Tba`#8atCmqoDqW<6W#v+yHa77 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib2f9/MSC/usbd_msc.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib2f9/MSC/usbd_msc.o new file mode 100644 index 0000000000000000000000000000000000000000..50d96e4c025b729c20d025b3a062668073af1155 GIT binary patch literal 4960 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 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib2f9/MSC/usbd_msc_data.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib2f9/MSC/usbd_msc_data.o new file mode 100644 index 0000000000000000000000000000000000000000..b605acf71cb510c17e5f8a27cab4feed92626b94 GIT binary patch literal 1308 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 TpetRvFE#Ev*rZVzRN?*uL?~-! literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib2f9/libMSC.a b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib2f9/libMSC.a new file mode 100644 index 0000000000000000000000000000000000000000..ee7fb303ffa95b531f2cbcecd73ff377628ffce2 GIT binary patch literal 14980 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 G)&B>sdx$gu literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib337/Core/usbd_core.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib337/Core/usbd_core.o new file mode 100644 index 0000000000000000000000000000000000000000..3cc8a22ee93325d29521f3b316caa2e0d3f0a94e GIT binary patch literal 5800 zcma)9e{5S<6+X{)()?J`>?MT!XpVJ>C*&Q8SUMWwNK@7=ynF;{>H@qCd#o#UDCdRiElpc1vrJmiTs^7VKQv}{5gCg?7mfIrUB1g9`GdP{zl>U=^r#0_ zik;rjqH!(Qi0^a(dm8BSKJdp)NvAhY>*VR_xI_K@ z_vVeagB~+S%a{wXw@vIS%^b4>xnB3d3Nz});{AlXh^m+)C7k7tgH_AphF1v{tvBFW zZ#?TWarn@UoEG)d&7FCZ+jumZ;xJ{;`p|0)~};$9Ke zqB9AQ{CHb2l+Nl}p?9<&D(iNQR=Z?Rlk^$sv+fqDRcezuJYIgoG4~m8>_Hy*Wy z?-B650=`$kI|RH#z&i!JQ@|AgR|LFEz`F$8E8t!M_X)U9!1oFEexMAXvO9p63?ATD zl(1)PoWA#EtdHlgXN~YdW?)bD7+$1DwJ$>z%-A+nnhe!2hdpb={{~*fr*UPdg>T!o z#jk_!+BRjnjQM}Vwkh*u*bTq1?P=3)fOYIyBmD==z@BVFuy@hmb|bu5u=k-&t`uG} z{yi_?#{~P7&41VAH$hIo-xTb31pBuA{MXFqo8eaie$U2fXOf`>Hf@_SS%y}4WZP7E zGOlVRZiyset#3QXwoMzd413_9!`=%+wr#C{2YlJK6_eiy83(Swyu3#YYy8O=xElIbF*R zC8N2V#hBEi*|H>Ol|?4dZzyT0@;)4WQq%JpR6S!q zIv&mDG}Aeuoy()@R-8ymCWpsaRI#vj9w}Sqh<=(khsU=pnqyRtj^%Z3oFP4lk?4t3 zUYjV`5$efFEfqtOp0_7&KRS}y`AMRa^j3`HSuGRIY7^S5mN;+E2uHGQL3u*UY31pS zWwaEVowY8L8BL3ANl)f;$SB+Rbbihrg7{-9ciN696A{%=MR|ZKt%;YbUnTN$KtMh)KQ;b*8!#b|m~Z$dUFO%90(Ee+Ms?0Ou_ig44NG z4goCBIW2|n9)AP`qPm_<%;a?~hY9)rH9C>e_Yr-6QKNGO-|*|gY+d+CJa&Q?d4y4; z^9h~8{}+$yRvh;L`dDM*K8p@IwGY}r3m(BqpSZLK&_y=YH?Q{h-vBvahrFq^e+N8l6TJvuMr|5ohdPvHGo;1!TZYrz`RlkkSudkuLCBVo^Y zodWOb6Z8%XylYS3y)5vqBX8dh<4y~_Un7ss+N>dLwy)bf+6Sp^An$eS*8HS7(lw7f zgfa}8#6{tM^AU#{^-P=Wi^%)1!rG4q(5AJddZOAuy{#6CPjvPO48wpq81TT71hA)Evp8Ed;(^DY7OKvr8yv#Jdk-G+ z0yNCtsM>-2MSy$f%2Hf@kmJ1$VU@62+2O5JPQ25dTIu!A|K&zazKUsMe9(yVB&-D= z+=E}kTwyMFx}{m@E4Tx^FcqEbata=SJDZ;c_nQS*pgU7n%4}P;sR9w$d{t9hdHL4| z%k@zLO5v^GLab$m*Rn}2l3X9mBRU8aAxWdu7Sxe)*VXxRb4oAPhH45y;m_Rm*-ZLRo1K}?EdKcD$%Lvdm3Gc zUeaiN?1D!7W9M~y>@Af$4&H2z&PF+@LIKAY5HxPX5HUI8#IonjK)RP7g9aXF}|-PxNGFWH4dn_ zdgyMJ^_M7|f1N_wttoxK|53pwDojJiAZeXgg~n;(5OXM`YU|w}s{3YGcN(K~4mKHI znJg`8N0ez2ls{%k+L{Uv>X=ReJlhqWZy47p>prVq&M=!MZU@g`Hq}i2AqP!Q-}ati zy^d>~cjERFXPEV0Rv7^rI|?NOT4c&Q$ZTi5Pv2d8=7S82UNvVJ_q&5i;g`X(X%0E| zamUSahF7~YjMtgFgnB*RF_pYOJ$)imUz#rbJb253b@McNKbHsR#OYS=7xpk26iYuy&rZ%goH-mz;_oo_?<|$2Mc-s8erc>St<=?(+zV zS+4Pps%Hd^ch$tXRl*N5EyXkO=WGkcXjX=2k}1YpuYC1G&g;t2t{1Ybw_V}9oKeTJ z#bl;s=CI45+{)CbN*G8vbWe7i3gXm0l%Y4weU z55=V>zTF@6H}j+nYz?&X9!VS#!%4A;@9)^Vd$VXj_}YC#Qh01Q%1h$0STYtLUP*w_eiJ z%s8wn2i$z9YxQ4lnH7Ko)@nwXv&jyqT&8hAHOds@F`O(omRUJ)+5BDbBzo{gFWs)c zBc#;rLl!&v&s$`Qf88RJ{Wrz5T}2Bq9F*ANm)Pv3HhZbfUT(9O+w2uKdxgzjX|pe{ z9tTyh*;qj}WKgF4EDc>gQdH>mk}PtOMTUdbRuScD*ly8OA>WOYVx7gBRb##P+w6yJ z^0#gBOE&p+n|uLf!XLz0jrIQksW~YA0#35G;ZHS`!pEi&DcK*`6E0nWr(MZq9(%%4QtTDwqX|ShDkg13(j#?=a<44K#tvfF0F*XR zy#Y2LJx=lpfYU_X0MFw$DBTF~EuxJ8X`*O<*`TixeFD!d(JukKZRjr%MgKX&{*fWy zFyv2&qW=S;i08r{CY)_VG43&>H;2!g zKP+Rb3>}rlB-ZBt9rfslCDrOlYnI*xlIVTW2Yv$0k27SuA7RkIR>2#H?nQlko?igX z_PBJPn8S=qck@b|I}8Jl&jsB{H8|Tqnrs3 z*&^O4ik>uv&IdSE!CM`SaTm&YGwbMbBWOa literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib337/Core/usbd_ioreq.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib337/Core/usbd_ioreq.o new file mode 100644 index 0000000000000000000000000000000000000000..c938067f68565cd95ab0e45291e0e94dbeb6f968 GIT binary patch literal 2332 zcma)7&1(};5T9+*7(*>FRckAhH3~*BYZ6o9$HkhO3Z_z;3W6VXlRW84lWli5C5qrh zM8u;vZ+h_Tq2NKWg8ze84_>_K$>PB}v)O50UMe~;nUCMR-vN7>6RvAJu3kvzGTB0UHJ@&ncWvjmUNCY-R;OgL%uXVzi(u@$6!6Y4<$LNFl17>ATN48uK{a8DG1h=NBH zJgVSP1&=9sOu>f~d`Q8E6}-3G5X2QcuB=Ze@d)h242^XhH34BrN)@#F6e{85C-D21 zgLuM^qi_o?3)QqxyY(@662u44CSV9&^u)vPCWvX$3Ebr)S{A?imRqeaTDBurjT#*F z;A-W<^kUIlu83xR+Vsp$qFi2Fz+>h%tZqfoZhBU;C3-7y>6{~0Oh?SOx7Tt;)P%Jr zw)bELt_-%Vc&68Kx2xtmtK{sA@aEe^yVVT3!S?(VHC(ao3;M1AF&qk=5VAC%*jNyw zrC*lvzQveif`)Fm_ZpsAMe8{oyTl$|9uJH<4aKOsE*N+v4N4k)L+gk5yKYabzl5jM z-hr8y3?-|B)Us$-mSD29dyC(6`OUito(3ksriSbT+8<>~*ZcBW0FPZNv`ZC|! z07K&o_xA-OnQuwrqxmr3FZ79z&JD>s)Q7&;`5=rmgdceJRv0>mF}>F;R6|0Rd!Tp) n6W>wyqfbiv(*D#NpJjC6HU^)`355CRKSQotL4pwm5o7lcz*0Dp literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib337/libCore.a b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib337/libCore.a new file mode 100644 index 0000000000000000000000000000000000000000..eeece933ed2193d852f120b8df79444ddbc00004 GIT binary patch literal 13208 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 B=Ar-q literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib389/Printer/usbd_printer.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib389/Printer/usbd_printer.o new file mode 100644 index 0000000000000000000000000000000000000000..c562cc0c2bc914499b39bb95237b058ba4903dab GIT binary patch literal 5228 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 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib389/libPrinter.a b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib389/libPrinter.a new file mode 100644 index 0000000000000000000000000000000000000000..43cd4cfc454f03644983439221b2a46333129ffe GIT binary patch literal 5504 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 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib401/libHID.a b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib401/libHID.a new file mode 100644 index 0000000000000000000000000000000000000000..0d024b2ba067a7d504997c6f5e2f2f9a485307e3 GIT binary patch literal 4786 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 M4dc@73E<-X3+=U@IRF3v literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib420/CCID/usbd_ccid_cmd.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib420/CCID/usbd_ccid_cmd.o new file mode 100644 index 0000000000000000000000000000000000000000..8d84512a783961245ce33be5d7e61d95d692a09b GIT binary patch literal 8244 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 F{s%_7Of~=j literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib420/libCCID.a b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib420/libCCID.a new file mode 100644 index 0000000000000000000000000000000000000000..26af712ca3d62c2a53ea137923fd0ec2465f3c07 GIT binary patch literal 16248 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 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib4a5/CustomHID/usbd_customhid.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib4a5/CustomHID/usbd_customhid.o new file mode 100644 index 0000000000000000000000000000000000000000..dfe900ad313e70bb3a19ace60b328417e488af9e GIT binary patch literal 5416 zcmb7HZERF&6+ZXgPTLt;DP{R6U*4H1&<{G6p@hQvQD{4DSt_$FM3gn{bml^5Z9CJM z>1Nhw7KDT@t_jgiBrY*V@Z*PW+8_K_L#3Mj!u>&Aq8p9bH9==L_ydf_(QL%$-21+r z%i9+9r0<-2-t(O2{W|YQU+F#;(KL;uXw*O@i)ebS?eVnPs)6b$NOz0(!ZZ7##b7I$ zo2Sw}l{dMD9$bKDKK$(L-Qq&v^Z8$oZq8rnA+vJMFh43tL=CX>M_!l>CbeeYB9P%& z{`aG1{wk1Wtj5NY`LBX6Xq=*8F7=pZ&FGRu2XzDHxyh z1g}pvz%pQU!n!co7;HYL^|sH^ZH`CWZ7%D%pGWAy#WD)qLr;HNEH|n7xs4zj!pSAM!T!z5Ct=`omgpFU!V{c`oO_Fihs*_q9OXcJ4*7aCExX_nqOt6|{iy zs8VCSC3a_8Z)&)$2kIh>`E%iDeoa&TyKDbiS@l9O@Q`lLqA#C8`Grz`rP%+3?ZqNo zDP9X3&Bmf0sD4zg{j$KUhN;ig%sn@~)fd40-NXFdncg}|%@6NhN88uY_L~KN^M{Lf zrhU(OQR5B#y#Sto(e&OT_q9s^o5m^6Wl#tgd1(x=_3|KxX?~5qz7?lFt)? zmnz@V&ElLVsO<($k6*e`{PJESpa;*3_Kd*6h#uU1snq(7Vt$far(N7~XzDcD)`Lxv zgAoVQ8u?8j&FeZavwwXgTHF~OpLNDtu^9TQRv&rG7uhp)-p@TDlioMX^qd*_sNm$R zoyBGoaz_&gCtD99hn~S@TRPV;;_oo899hRw7{~%xESR zx3bw(CTkvO3AgS&&@$Q9G9G&|m1#5&guB9s4pRfc) z%Yl}WOl%@PYG$mLlG$Wx!VK@B@;dhHc>lOTZ+6XY?$87w1Hyq>Jpx`;1N@CC^#lNZK#Fs&JioZ_rZ?Wg6RJo<} zX~%C<{M)Em%ta&o8f{bX+ZFtF>J)g+42`xc_#Fy<2b~glpN-$4;6JX|CVfTV*-?Y? zb;Z7>*l#NKEyaFYvHzgh4;A~dVsFIB$W{C3y2> zcy83n45lqBu^Pjmm77X0YqZPin@BDn(TbI;F|XL+l?H7O3M1)GyFzkfgVscXXIykH zHx|uU=~%`Z$S>7&XELdbV;ws-)H#;QTHR5{&gNpdWPIpM#|vOrQ%C5$J5q? z3;~5~!irnTmqef|0k}&8RvNe862S@Fnc49b=4!yf+Vf;XLJX6vUeEL33^df6KG|xfnI65v0JuUQWLSGU3 zb)l~ceNE`^34KH89}E2xq35A}9nQI}?-%_%Ecyw}=fCd=;WmZtB;qdnx`+^B>jdj= z=MMJuh&b3RcrrP6*Df&+*vP!EbzDt6WW56Ivc>_{z#7IL)^N76-s+qUItPWaFOTP9 zBha~wqetZzo-sKJB{LN)4F_@*?hd*>KZ#qpw7RR{T<*g+}w%dmaHxAp~eq*b+vkGn$Ht$<0lJ6U+aP#pQRV6{t zW#ao)Xny;22>TkIygV*H3XTdJ$M(-r+zJky$!x|sQ07rYh3c3R`@E>p(y-PWdA;=@EyaV$@$~gy5!?`CH|K3>J$jZBpI~i z%PV{d@R{)YQTR14`Q88ye@lD|AaLitq33SSWf{HBy5`S^Y7 z=6lV>$Nw!zzWWN_Mr=HOlS+|%HTVE@X?7PaB!uiYbOZy xNkd@RWGtXdatgQ^lmKe*M6$K~-;z|Kg4>Y7JS?1xZrpv$-}hI*{ReUplo;ag!zO#%PN+`i;`p(lzW(l^L31KLV5XAkEK^+rX3R{yY(}E7FPf`)&n7Zi zGu=OdzcbO8skUcquR3@!vQny54xJBsrZOY(q1aR=n;aia!~@B_p1t-&mm51*qBR(V zclrP6wl>b&+ghKt!NZ2OSYt_5jEY-m3nV;P$+zrj{ixm7p z#y3x;dMj^G4ZD8rI+!_d4qqPmxvl*7Y@HT=TB(Oo+Thd z(cJGwdG0EZJX&L68UJVA<2TN+zEm%D+j-->*A=erd-V5zJ<_~oVUP8+XHNI~Cz(Gs z>GEHnY=C9J>VkD)veDmsPV4KOXSb+5+TEhEp2m5Y-M?7Ie0MR@pA^bDYd(3$ldF9& ztna?Vn~p6V$>|5&P5tk^|Dpb%*4;<4@e{7gxz7(Xe&_?uSGS!;QOF;euJwF-_^)}* zXFRObNN&vo-V2PjB`3uzq*3ez&K$j*)KfytnzI zrQ6e<=iR7r`~H>(kI!g&e~HFgrF}=(zgfDR`|a>I^Y$8b-Y5&7_p+VT$M<8Jms@kV zi+x=z*H+#F!MbG`t+&AjMy zh2dqDZ|l4;@A7NAfzxA`W(r?wHGI1Nyy(yH?GNkz-It2J&lGZ#)H~ZnJqM;vqi@~c z6y6`UF~RV!^C{Zbf!X%;;YeX;WPHw^Z^csJD_VW{ZBKa5)OjzBgmLzP!Bg`*{Bhns zv(_o*O*lK6K-i~sKhCgyq8AE_wT!2F(at)H*qZ-Y+dmupGl_qq4YTK86Pp@aWl>% z>152zWRmF&?`R1HTRU1N+giq>FD28Bydw|_v~sEp?hm%{hO{|mMl)t3KYeK6*j`gm zv~;wLq@xqDQJywmPGl0v2_9;14+Y!4zz&5ljHnqMNieMekFG96MKjlOtc{gdR~&Qe zwPjCf8?;TvX01-!qU|X2VaSh*v!aYWeB|^Rk3}5D3~Sm&gn=5T7zo}7-3}>Z8(>i% zH7Gg-cZV2Q*~jrNwg-N~*Q3}gUuk@D&&Ku4dzzbyV+%UsQp0{9e!&6EQ&2|`Cw^-tx?*qVLyb2+S5wt@H@p|)e63v zEdo%)S3BXD-&zH~mVG4f+t5gdpTL95pCkQ|xPs{gz_iRP1*Y`}d0dK(QYw_C`cTs-nE47W>yqkx~ea@38RG%xbZJ z!@}NZ*>&uz0^bRH9m9SoX;qBXugvVaquFTxgqqF`QT6eumGGWOaA+VmU`FGwtZ36~ zX1ft)W9AD}(XqstgqiL(Gw3wF8ZtcCb>^()S2I!2^gYRWJUeQp2UDgQFU2ruW~Wjs zI_)<5ClV`Xv}$E3=2Zv0+N7;XVJ1B(N0aOrCE&EQVsP29NZL$A)8;^Kxuz$bPNr?^ z=+U9Bv1G>ViP&}~8_gzSLub;a$iGF!cyw$m8C!01JY`PECZLdA*a^Pqr}Q@gTAaW; zGc&%*TK(T23D)~U#{s4HhUZgsj%`iv0X>92$d0FqI*dopbBw)28j0pPXdR*BqR`Vq zzb^C@q2Cbts?gVj{;tq7LjOqU9}B$z?Kx=2ZM|KL^N<)PG{t|2&mUgT>R2by8f$sok1Xg%xiU2iE!}5 z2F0lGL|8FCJQ21sQj~_{0Xzx}9i;&9!q99zYmRdA!Q>E23_d|yX} zlaFFll>|YTiRag#Dfc-j>}yDQXtdnj@8O00&n} zx^{wKpELx9Ou_=XET@2*Me(5qDUvnc8fY3b_?D#-71W0m;vu24=)~Q_`h9N|+`j?( Ca@(Q+ literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib7dc/CDC_RNDIS/usbd_cdc_rndis.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib7dc/CDC_RNDIS/usbd_cdc_rndis.o new file mode 100644 index 0000000000000000000000000000000000000000..38a4c465c9d65654adc6d0dc8ffd6340fd77184f GIT binary patch literal 8080 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 R1Rt)ji*OTI=i^J@{ueA;WJ~}6 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib7dc/libCDC_RNDIS.a b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib7dc/libCDC_RNDIS.a new file mode 100644 index 0000000000000000000000000000000000000000..c0402c9af7126cb66d75e8715f88c38f73e59b18 GIT binary patch literal 8560 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 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib840/libCompositeBuilder.a b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/lib840/libCompositeBuilder.a new file mode 100644 index 0000000000000000000000000000000000000000..1f8808ea5778b3943dc4ae9d9c2144e6118691d3 GIT binary patch literal 1018 zcmaJ7Ki(=+k{D zU;IeE`U!M4$@bFXIWRkae!rca+1b5J&#;Fb<<3rG5pqS4zV*eP#iQ zw_RY3|Jw;pOnzpqRFa*gqBs{SFZo%r$`=`zuJA0cKGaZYyQ_ikBf4HsLTqWMQ|aB?N4^i~xStK`*RO8~Sh!;B-8GO6}8E@90}07K(lnl8$6SCq=@ujA!(< z6e(9qNJV2O@CUK;C3Fh*S;!+AyMa5PI_W?0LuyOD;7su&`eF2D>hY$86FZ4y%XCg9 z|C*~@ENKu$fggT^QGmTL&XOF6jc#u&WXZod(-3yA?@jwVx4Qe}Ho4QeOYV^a@}T>$ zJy10VY|Pk&-+!8PWjY%uKnHf(Fvgv&xVshi0Iqnh6u?#Ai;^X1OIh2w@oDhB z+(apG@x2Sa#2ns@%gR#b$*SaP4OZ9WS?-$qpNynQWV9uJ94^@CU4K z;40qZrk;;hi{@QaUcKmgS|e0E^SsUi{6Oc}1Zd5<+L~T9{0miY+G|w5zzx(ss+j>@ Yc#j(ow9|;GcN60_Pa-feB(#S27aNv;=l}o! literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/libFrameworkCMSISDevice.a b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/libFrameworkCMSISDevice.a new file mode 100644 index 0000000000000000000000000000000000000000..ab1ac005ad3d26a5ca6bb8ed6ebff5a0153534c7 GIT binary patch literal 10504 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 A{{R30 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/liba1a/MTP/usbd_mtp_opt.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/liba1a/MTP/usbd_mtp_opt.o new file mode 100644 index 0000000000000000000000000000000000000000..81e7f02af6dccd497b691d8cc07d3856ae999957 GIT binary patch literal 12288 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 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/liba1a/MTP/usbd_mtp_storage.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/liba1a/MTP/usbd_mtp_storage.o new file mode 100644 index 0000000000000000000000000000000000000000..97f39af4545d80db751614d4b06516ba60d4bf16 GIT binary patch literal 5044 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 Ya341{U>M+hPnmE@%*$`M6MbC$9}U_QzW@LL literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/liba1a/libMTP.a b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/liba1a/libMTP.a new file mode 100644 index 0000000000000000000000000000000000000000..bf001657e65ee05f34d70ebbe680f5ba4cac265e GIT binary patch literal 24168 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%0A;sL1FEK6x@;F#D3&*h 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 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/libad8/VIDEO/usbd_video.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/libad8/VIDEO/usbd_video.o new file mode 100644 index 0000000000000000000000000000000000000000..c1269adae966cff7834f321ff8eaa2d5148d25f7 GIT binary patch literal 7084 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 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/libad8/libVIDEO.a b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/libad8/libVIDEO.a new file mode 100644 index 0000000000000000000000000000000000000000..e442dff373e302f61487a402b5b3b46cd7a019cd GIT binary patch literal 7264 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 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/libb6b/CDC_ECM/usbd_cdc_ecm.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/libb6b/CDC_ECM/usbd_cdc_ecm.o new file mode 100644 index 0000000000000000000000000000000000000000..1ed55a70c33f97b554e292ce2e3dda5e4a5f054b GIT binary patch literal 6640 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 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/libb6b/libCDC_ECM.a b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/libb6b/libCDC_ECM.a new file mode 100644 index 0000000000000000000000000000000000000000..496a6335bee9ba6f9683e8476d18404fb8b17e60 GIT binary patch literal 7026 zcmcgwYfK#16+Sbw%fbSI5GN4Zq63S~%Ph+y2DfRu=CR-!2MkVI#ZB?D42A?)yt{UB zWGQ|{PAj$Y5C5>z{76!yMrtgXrfzE~$i%@>T1CoYgXF4Kge*rSjZ+Z^#}fy|{m$&n zGCM3ulpj6P-E+@9-~H~n@3~v>s6Q0w|BLBf^mtc8Q+H!iV|R1oj_wvE(xe<12q-)E`v(X529!{f5)On0Mk2uwB_KPM zy#wKh652M5pFV#;NpyE9kzJz=`}_J7OFcL`lR9>V{KMg)fk=lx@U#+1Wb0G{%D@37 znX5|~?tLs6L979PWFR=4P?2bVxTm)}&>QGh0z>X#rEDI(Dvt+47ysQ{TPw?(H`m67 zQ{LlzwzfPg~ z)TrZLi6i>^{!{97ae?o2%RSd|HCjh9%}H|h1d-Dv9j4Zi7N#0GceEhIm(_aj&R6$@ z0=q9m%N;4O`J7rVb3EJir+w?ky)M^2as~F~Atxc%xUbz+b698{nV<{IgZdY~Ef;}H z)VK&-;tDSA*V&qpa~-P7YxmvfYkFNM-8jt=&ZyUlXVjZ@V$-pPDdeTA-di7az0i>P zuUXWYQD+?XkB`}Hx32A*#aR5i|8xtA?r&B5VX9Q3&e5EOJyKazF5f-cUo>e|L5CxgC!T*7w`6L@s((8IOn{ZN-lVdPGIa$sM9Ts=e9}y;T-C96#DXf zueRKo-#(gNUU^k`rBih+(1lAF%U>aV@(pPg{tu8&sxMYc+x<)6;MBa+r? zyu8D8NUK}kI^DiVVX^QCA`mt*`^FPoQsom1V=-mBq(a2#A5$Om94*LpEl0|6(ngL^ zC>~SWM%MLTQfKy_ZgCyL$|%01-q`zkLk8xD!d}-U^~1fF)N4o!NOMSwNH^=K>`ZhP zdW$c{>+z`*URPo~Uf18|w_vBmcHX2qm4g-5A|b_AE!M23eEco-YVKR=T=7cZI{0RC z6U(!CrOVHZUsi9l2(H2N7u6eem({ttw|XwCSBqnFB>S=_Bzb8*&v$n|75kk>ooh9q z)=i*iiUn;{Nlw*p^^9paTic-)dE3Tc-XN47SJj^#SHH;3ib_|?O4mmvxonPHW9r@F zDRrrCN~QWK)mESCdN@{EH-^$N^(!Q*A5%pn8&XRBC-a0kxQkItr`>l{ZJ}Ro`E~}HB&tX@8Z~E=04q!Cj zX(%52>z8*H9bc~Ltvx^0d@EUv0&Z|EXZ8RIYPZ zyQ^d_^lb6e$|WIXQ1OSAQhE2*&K;GCPEk=;(Ss{5&@YE@*+Ee=^ZLLNa ze#PH2Ktc(!_Qqf+qKsDTsHK!l$Br~H$F@dzP{@_?golN-LcXmKAt#Etz($|mGkc|k zTZ~B3y1k5$P+}H|Y?N&-fX!DQx3L*Xgl!gy>=wM8HUWT75nXsPmPI0m1@E9rxS78d zNra#4HzCEuVPrHdQJSTG8f}Az>vLox{AQ6T-GWc2rvX@QFWu5!y16<=C(}|tlb+M- z_d|>Dn?<553qFfp(D6$eK1*xwRJ>9QKV`DxS!5)--@eBzn+-e{k7}oJ0><{0~|DxfXw}#h+*K=UMz~E&jC@|9Xpmy~Uqz z@#oVOAh^GWkVMMY#(OkgD?gs&j6|~LUoMnsUN?9R3-Fsoq5=!P!0ZN}%i?#@qK;^X z7T`CFL`4>S5v6hP5I(j9_{}2G2D6FwHc}bzTqOf32m5iCUY~)y76KOgpv69Ev0t{> zuUqUlE%vmUL?&Op6<@kPQ~AQkcxT}9v%FM z@^v-#?d7M_3Qv2aUkP=MC`#{Yh}PtFoBR=f`+iFpcunmeNo=D@*)}|2fvqfIwr#`I z7#tqfg4yNoNu)^{U6Qw9Vy$m}KLXJ_vOF?vZ9H6^qa07yz%%+Q5~Up>WyBv+^p~IB zN@S3qdyI`27`V}RNpmPCf};{to7IOMEnT2Rj>h&EqVA=KaLFiTzvf1Ifqr z#rUto@xF9668(}jD)YVLY$gh^#{Uhxuf&ImPV4$bUB9I3F(_LBR@Z;g_1|^< zhOQ@dy#VdRYgvo4RqqcppX5$x?vE260h<3Oq@9?~?Xm9(XB*Ma*$+Le>$h2>(pBBw z$a*K?B#D(D&~3M_`&f4ojY5mH_+gD>+{RjtwJWZRowXu9SJrSjKI@oI#7_xp6mDXT z@%FIBwarxGR{Xfb2Ztiqlv-%cB^1`xAVETiaT}!uHw|s!d1N5shDJBR_^g6Aha9*gDbf^ z{x{bu%^O=>|5s}jRN|Ij1+?N%uvKt8mN@mbwc}1W`?U(Zq!QMVj!alu#>EgLNpK~* z9^8T8(2z2W`NQMK?T@+Gl2!ikMNh2H&$N;Fpb8cg%oKMxOa_@h`gC^Quje=V)Ww=u*`gmruewrh|l1WkX1-0}0LkDRu<*Txh0XV~AqL;?EVzrn@%?XzfjeWty$>9&thgAss0H^q zaLM+^yTF;pc?tdCbX1nPny!XtwL#TW`3GRO%z=Ea# literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/libdb3/AUDIO/usbd_audio.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/libdb3/AUDIO/usbd_audio.o new file mode 100644 index 0000000000000000000000000000000000000000..c35f390679d3ad1997fe93ea6cbedbbd8f6cf12c GIT binary patch literal 5424 zcmbVPeQZ%QV?Tqpix^ zE``Yld#1bV$0hmk43qzfLX0ksn^?zc^DlR%OTF!2%~kH~bJR?hmNY;4>fcY8oUga7 z`aG=|$SjqR!z$a-Iwe%NQ-t~xIMA{+>;6e8Tb=Ix2zfX>y`c*in^d`ZwDoT9rsgXb zuRI#;E4cADpV5ahm!;g^UwrlAquD;kgiw6D+vrs&E?1473#XMihuSgAoIgEKmd+WG z+_zKI6ZO)hQXd@;XZOB!Sl&3=>PTmg+?bK%@xP}})?aq0LNRgNq#1k80sOUea_>j! z$&%9-s9m|*dw8^!qGPq)=~8B4$7-9?rJdK(A9OLfe!S}Q*+z$|%yoL_<5?;YEdQ#A zo@P%7n}HQ4OSh{H>bdl5M`S&7WUa6g>G^Z%&vCW>>SSr<#s<~k@v48A@u=5l7*_md%~zMlYM0U6=d-db^_OXfmsLcj zYLlyG4@%WjvOAcHCk6M)sT1zLl<;WKmsjg8DOL;hj2;YoE6XRmC4y?q?ds_V!>9Ef zN zvB4`)M$&KBNbZ7^SR(vvVkSOZ=RDoyqezuA=gvG^-l-JBL*>K`6YXM5gk z%D%PL%u|x3vDxtkV^))8?ti3CVvP4v4~Cr>j}znh(Tu_WSxP7wG3$R#T>|RQxAG32 zonaIDj$d$oTq>QQQW?(n)7;rM&Tnhu5j^;^ff|xPx=oTQuR$ zG0~2|%uM5)@%z~K=}f}~>qJkYE#)ccrxO$Te~42IGf`lZHBJXw(`Dl<6PU0W)g@&j z-9Gw_<1EY84MZhLkeJAv4g>@dcn45a$tj}>%R@6!%omQo&zxC;Fi8YC&*?1a!Ih1+ zjCoOHe$F&N%x3O#Y*EN%(YFkx*%pVCHmSfthp?D}7 zk!xOfp~h2pfHl@24Zr5^4>6$})hs0%OK8ce-E}N`Y0hq^xYDs&C=k|4g~B>vy|Bqq zVhsUcLwJXSefh-lla?0T)MV4J=S6~t7l}F8GTs4u1#IeL35p1NGjuMBA+%oeBC%{+ z`)pQ;FtsP7h&V42%dz2e*bV>)ucC;E^CF?=h56+&9{}_G^O;dQi8*a}Cws-j8{=`> z#^a=BPeo#Rw)T1K2Z&OC&!dQl^CGdOHvCfdE&zl-k0K(@i^P`O@XOiz01$pBiikKb z5>{j3_*bwG0U-P^im0#Fd<%)Kvf)>;PfYxFG!hY~^`tQwV&FfpOvHJSSb>eNfPDb~ z^>3_i0T0Lgud(6RFekwC_%$~CS{r_?EnaAg7uw?M^zqC)*UeW^lUR{0Uc?G18AupK zK%5teZLr}tFt>?!>G%yi9Q+$?_9pgi6HkGB6u-^>uFd|w%^tPczp&ZAvDv@1**9$V zr#Ab6&6aRQkn1$cO174*GHqI^m8_6?%qyfG_6mmi9g6n{`}{+}P_#P0$`Y){*VNqC z*wftB(buXaltV8!YjFgEe4yE%@V7;HPfMq#uPfQ5`GZI8?(W5I5I5s44QP9Z`~#sw zAuXnN!gbvik9G_t+9H8ycyK^VXgn$Pj^F~9))omZ@YrpimKYl3o1llbJ()Z3b*Mbj zngcGqXJ+5t-q#t^2K_OuOABbBSIxxX#+bX3l)5kU+Pqg8h{m;+PNTbc!k-8Q`VPf3 z6JR>R{(*sLz`%g1V^E8rNmvWVHFL~LV!)?Gf<$k?;IQ&YKJ~Q3V$qmkA)7r~603l< z<;LYZ8d+d>X)lN32`$zZ!OtOofL{mWJ0jMa`WuX`$DVS%Xli^2BBo7W4cAMI(bv-T zO%&4KVvPQCxV((LP8#jdgt;0SYbV{rSdz42+;3tD-gB@?pE32QsoysBSyP`gHQn8W z*Y9rVG1Gp})W0_MLugksesFMHEzl6L*t`=rnd2)nzoGb`(mf#JB414!pO8Y*xOz5_ z-oltnx`Ht@VIqR%r12?4NY@@y*O4ZY>iE%c!ru>_h#C5@Rl{>4!K#C_u+{zXIIG4Z zrJ9`8+_G^8by1A=1kUOrKYwB~2CZ}ZtR6F+fsEKiXE`H^@}yIpIcS{kj4}PBXN(wU ze$n9UCw~!u&i`U39gRia#Ro*sgw~5&AY%bJN1t`4=qt+yGR`V)!LSy=+~8eW?N20P zq5h$S7RS!{pM}1R*xpZHaJ2V$5lsWzUdLH4OFND@NUV3{f5XvUxA(h5XE1&oW}VIk zz23a0y&s@l)W3#87%F79qwsuQ*cJz>coP{CgyM0{u<1=|iG@1>2akILb|$`eY`78F zna1%G`1x@Jxp9!6xM>`JMB)3TJB;3>mRR{+hlA%E;P~kEYVkcpo#*=(}C|vhiJkJ#3LdTYU7to##6P zKDu8iKl(3Y@wM9cydc;CpCyDNQEYtY!AJcPAH9w(zVF!hUdP6^H~@Q^-!U8R_%m>4 zY`9av(VNT?YrH?V;ntv2{#9+^QYOwiZ(D$?x5%KaTt5VkpT9aR>LB7YUV2Rvj`rUj z8($CsdP7@c@%_t&yNLjOzb&zFG7<%pdCb6H5IAOmpeaVB0yvC;Qqtu>7GroqJQc!_ ukhaE7_6Tqz;FM9vQ$ZgG?OPhFH7BSt8OgoKHMIC>@9?;Dn3skOxc>mV?ato- literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/libdb3/libAUDIO.a b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/libdb3/libAUDIO.a new file mode 100644 index 0000000000000000000000000000000000000000..bed0d8f07c68c6b106111efc3d35fa401e904ce9 GIT binary patch literal 5624 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 sg;Oy#;Xp0ZFuaCjbBd literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/can.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/can.o new file mode 100644 index 0000000000000000000000000000000000000000..3946817a170fc550d0c41fb539ca145b78efcf0d GIT binary patch literal 1772 zcma)5OHUI~6h1R|EJa13fMQL^KuIi#9ZM;}*P^9j%cE+HCMIfd+8NVI+rc|y)s=}Z zbm?oQe?WJ*U?+jZHHq&10pJRaMpxoFGrfJqL{D<&yuSP0bMHO#V0!+nBuOAdf-p29 zfR~C}*%fz981}KO;sONKUCS>)ZLw*zjp@St#0}g z=&kuzVa;7`K%#p^Is0U}Zy1Ky8$t~i`sQ9ug+8$#U&dibdKN78WTv)(2aRA!Mk_s+ zUdhjbi&NXO9LyhHWZN>6U&yb|e@}2Z#D+GuSg13!vE}P!Z;8*p+`S684=8d%E_5Jw z=O^E6N2a$F+6KGVz;(B&r=>LZM7ZO!i-mM5by5wd&s|n8SystbZ(3YU^0GQz&Y6Z` z8tMgZu8wS{98mhC ze(4|^kPb;fX;2w%ekAvDq2=8a__|X|yN0z?0T{^5WsF%{tUyOgMuFWJdvibqZ!iRe zfv*kkbMb}%V7*xw_}lP)7q8Yq{<=pFbE}OMgFVoNAzj01)ByGqY?PrJ{UdGh1jf`g zU2qS4+c|}n)|XHN*xwvlA+-LY2+&e|1C{VcQ3KdNM=ONtkk>0(9!4A(F(7+oA(cEg zwlGsEI*>`uQ{)BHoLhV$qgRZQ$)SLY#_E8qz2q(^n`PVd)}=4ZoNr}8&>6GN>(*;A zz%aJ4yT^Mcx!3D;FaWTZ^8EnU$Q}R~Ks!hu&AwlD^c-4;d$u4v96$#&Lw9u0a<&Z` zjtiyv^b_X#a}D6R<*oUE}IqH0DlopcN|{K-EmACTl!x)j6ix1FseGz1QWyDPIk?Cpa+};X zkCl=7x}&Z0{3gFGSQ_VO94~AN+oGlMsP!%ibzTr(hqAG3q48A_-_k9G222(jVwZ0x zlHEJ-_4~I-<@(8iyepRV?d%=+Z`8CUbav0WQoDG5CS^>np4 z!?_`0p9^LCvON;{?Ui`M;`Z9MTmJ~3V36}V9ve(XpC_VKWkJ&iq@)~|2PG0?H)07XqO&EY7;Hd# zl%C9AV@```GFsA=T6td5*-O<>wVD(k8j8mfPaqu!0EH)=;D^(=BYPN^PCVc1ah%0{sEOM%Yl~DLX{t{*ad@_@YH}IECWI@H zpP3yi<_fd9nrcFoRSjmso%FaZPV1`4ifZjxv20YIc$mw~PBF8ns~WmiEsG_N)|Ao` z%T3u zx{dSh4hO*mxuTc~$R)!78OKW|Q9kjX<+4_-vKm@(=w!t-b+z=uWCk|>zo7S__i|s- z`ySN6otQqy=T1zsk9tsC!K4}bmoJ8%=6h*o+;AuDDhjQbDW|Z4jpuMrcaVpY_8Ck% zPJJn6kgVBTYo!|HI3~7OwnSXMpm^OSh~%LlbpJc?b|NU!ZwX-1y)>`HvENa&BUw0N Q$NkQs=Jo9(dHfgOA6Ps8>Hq)$ literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/main.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/main.o new file mode 100644 index 0000000000000000000000000000000000000000..3284a6a401837186f8f66164e498c338f9570113 GIT binary patch literal 4480 zcma)9Z){Ul6hE&mV=Eimx`MFz=k1R;l+{u?HV~!VTgOWG2fLvQ#5~{Hhb^}2e0`9C zi8j$hV~kGmgGN7S-~)-o;0#6t75{uQi}8~hW5x#(TqKHy#F7~1Iq$vOzFr`3#(lr@ zJLlYc&%5v3+spHjp#eb8hPBXpswH;hDukNp>2E!AVeZ$t zJ$hDF(VQA1Q#^8wr14>Ghs$_yT$z zA()0x*J4qkez$7dTDu3kM>Y>{9;HZPCI$^$C|;U{j)mgyh0R58gU~i;tmS7#XfW6J zv!bJQ6!^( zi$5rKYHCJR^6GkVZ#X{uplS`#)zdYpDN~7*sHq3j`E+hd40Lw~{J|$69Kd%{RAn*^ zLMN)rq@1R!GhM?$sH$5&T;uS#yuvEs4(A$St`2$Z1znYlMH6UgG$h9Dj%7?{oY^j(>t2|KXRS^>xG7L{JDC@o&C@d*PP~ z-T)UWcoY0(aWmgqSgPPFpx!!SOn)7S7N?!vi2J3};&d`JVn+T7j@6r0(o?!qXSJL+-(+A5Wk)3`@ub>$l%^t{V^?%kW<&~) zY%G!8W8wICK;Df{o2^gok31HYA|=y!bU0uqo9rZL63PVQWa};DFPxT$01_IK)REH&7ZKGVpG!CwCjbItzV-?Et-m9RPiV_X3O%Vi28cZafU95gqpc z=!7^(fv^SOMM6A0=@-X+KLDM)gcR?70N^#k4d%Xb<78Cd?)7-S5I$(0Rc^o4ZzJB8 z$c{hwcM@&_5DD>ejH!XU8vtG4#>054g+{)}Cy4g|OcLVDWGp;rA>~Q_KP_G)+=36> zmku1vMYtOCA$$n)A>4-f5I&6g5aP>;gdWU?@DYGcLOdWh5N-$X6NYd-3GpT9Ty%s1 zLWKBo{e+aXFMlYjE0c)2W@3tIc)8KRmsE5Ge3SV+`0&c)Bct!SZCQ5RV1t&Od8+#Z z(>^*hz#OWw8fhM1xtPrwDjRK;XBe+5HzQjgD>9R@5;U2uu1ki}1~4tGR!wHB{*s~G zA(6{w)hS#iyhQpGUDwi+2Xr-$3wwKlr3?5e@MdNTmRN;2EY^xhaqI@j$B~bO?h91g zw~E73ziwW-BQSAU3T_#w!4|UkEN(EW@jI|l3^kfBhRyySXOSPn#)OTx0}b}^e#h}d zw9$C925h_(>h|%TL_&8CCTzSU8tmg$+x`3_o>!?#d zwtgqj!F=|(W49T1`ZnW!z&Og!J};{YG?#MtjfYV{e<*4AJ1?J)Ee-wh=%%YZKjE#bPtsl7T zf*ygU#zG`17NlW331B>d@!}u3k;mQrBj^VkI1$!qL(7zCn&mH1}1qqX!}`&uX(^mbzQHB9vW z&8u$>?Y_uRFJ>%g6na_Y&tu%u78+U=VdFPGoT)>Q72Fq~upnX$I;` z(nURryxu`M(p6O4fzpxu!gD_M$(TLJn%xPXLEr~knq>%;?j4O|!wH7)6YE}(6N~A0 Q7vp4I9-Hr&BDALNKd$75f&c&j literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/stm32f4xx_it.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/stm32f4xx_it.o new file mode 100644 index 0000000000000000000000000000000000000000..8db1ebc866d6dc0a2a0ffc6006afe98a4ecd1167 GIT binary patch literal 2744 zcma)7O>f&q5FJ{QziXt*hn*HM*dRb;v|?mMj+-DTY|FMJAhMOnb_^5+L5Uk%sYSXZ z9XO|)iu{8fd+fRBALyy*wLhRJ3iQx((V_)z;#%F*T2i_v_{vPe_nsTrqg}*FKE#Spw+_>Eo`-F^}b%H z?d8_PO5 zOZQ3@z2J!xVfkW7|8)Iv^R|dX6jzHK&vLrQx+k9Z{GRLR<&~9ksqz`DmvIV~usS`^ z3TWo4t`~^&VzUC{?@TnO#`4)K+Er~nv!Gqq-qRMdH`D~s{IRL7Ed22%@<#VeiUr8P zm`WqgFr0-;DNi1<{o&-grC#t4H|=2^Te3}1z7=%JcZCG(Jl8!4Ov`X2`TIBciz z1UyOMNqCmRQ}8^6r{Pr!&%jqPrY|E8v+xa$ve9b4!%pv~%I9GYe!x*S;(x(TJgu3s z@n?)F(|NpdM8=Ku3k-uF^zW3PR?g4OUSM?LW&k&B*l9M*y5-m>!h^cy+1u9HNsxG& zqTjR}>qsP?jWa(j+4qr7yV?iUM87FIXGcxfNgOTV*zJP^wqN*rz3%4;uCG5d8%~#e zuywfCxM!}IjmM9YDI#5KHFiznRD$sGin&};ox6KAbGxm2D158Bsk)9&ySBOC-Y_F| zn8C%R=sQ{b5b#R@ppo)Ec02YP2n_#4Kd?GD23|BCOA9xn01Vp-EHFC04+c35HP?}6 zIOCCjIPZ~vDEpE7f*M4GT8YRrRFBBbs$$@l97kaF888=ACru8OV?YlV#^}2JzHl&W zcm^0&5O}@LSs?td9RKU~KC0yZLk~pf+u%{TgMSd~G z$#J12Tb?z2%W=p_ebcyWV#0@#u7t@#Zm@ z8gB!ewR_C#%n3@Xg`+m?y`7?$f>8LTzi?tJH&Vtht^A{os72=$19! QMXc(MaUDmJL{6G-0X#QRB>(^b literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/tim.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/tim.o new file mode 100644 index 0000000000000000000000000000000000000000..e7fcdbcec72a499ebcdc340d9bf42b11adc906c2 GIT binary patch literal 2784 zcmcIl&2Jl35TE_U>U=mKCKUu!@s+IYEpcmm)7>p< zkx(nq1BV=Fj6g~*9LWV0A;hI9{s)kn3kTG5)7%`S!VNR?ywBdOA_@ma8qb@V-}}AU zc^|$#wJ(9ShgE<&pY~IN>_93&_ zY>hVdrHr&KB!1Z!ChxA?)ug(w-cu)J@O%0dw&fh}BFDM_(`9M-!tfa?Wz#i#x0MvQVI<_`9HFdD>Y zABzTZiKdM4$9rotu)}!y8V*0qWV08Pk(oE%R+bE-VkuV)Q<*TU%2c(Wmr8m`xnvqe z-LeeRQpS?$)Y-A*^-Qv=T{X-z%9xr~&ngs5y`IV_Bc@)_HA_FEyf^V?{#D(fNRA~7 zrdBJiDyIH%*(w_~C4KH(I+ghVCei?)=~|%-!Uzt1S;MsTo5_3z{QZG^j~JGZ2`>o8 zr6J*j5EV|zarcG62_){23S)4|?#u9(*suKkA^Ux~@pj=fU?e{6YuP*BQ}3f&q{JJoICPdU_c( zjNcn|AwoEgdHmNr{-nphiavEMhdKzqx7N@S|NE$6?BAzo-TBWB<%95rC;yd`Z=wz3 z*L{bU3)S}kmH1as!`P2s(Q=_Y*yXBPgkc+oOOU_3yfm9nFVEJ>HdOVhrQ493SfJqY zRIO-~bhDkCGEKu=&S|w$MK?KQ>gIA@vuxeW8nr9skKVe4r`$AZUO4Y(6+{&&dYA$k$*sRaJ0)~%|o z70}vd+ph8vJ_a_ZCC%1AEm#()_{69bR1a;OH|#Xq8+IDr4Ij}?*35rII1N^dMzyNf zusnS1RL!={a^Z%pTlhi$PO#AVrY(g zUApUB=q{4Hg4%;Rj!LqI6KF2oA;OT-dNZhQzIF8JZgb&$Sq!-OzH#wUEu8N|9J~3R zpnnwKyB@xWEI(j~-I`R#LhfobPKKyX(u~My+6s3+Jn2 zz|9vzKB|lO=q_-+pKwfkDO8d#k?(eU$bKnD+Cashpg3c&+&=Q7(EI&Ks=MXoJ jfk7P8ouhTB2C5BH9r@e`@VMi3`DmUSH-z8u@Ce-BGVR{? literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/usart.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/usart.o new file mode 100644 index 0000000000000000000000000000000000000000..6f23636012e89e4d97d28ed7d11df49967b4c442 GIT binary patch literal 1784 zcma)6O=uHQ5T5;MjBV65ty-g$O(GbzmS{s$xq9|H6*(Zr6*}A(GJrz6& z9<+MXi$}dF=us?q?xEnpt2YB4R4Rgqab`C!*@l7+nVmN?-}~OY_vU4Jd}cxr1mGe- z3|bz*Gug>>q#YB3U9c0nvVm#;o3k6AQmZwHLNpLrt%)f~Tdj3O-)r@sf9n0O-hTEE zp{SVbR>>+ERV8`sSTd2m0+}QLXiUqOK#1Y6W7IHhb~~O+gKx*S+;%Z2_X)d& zy;8rhPY4MEa>RQ%IDy0)lHpt3jk;fHQx-r1(VIqJYV&2-z9}L@0R2QW<~9U(CGfT3 zeGXpd0L*(u0)HFc@8AzKLH_251`>3(`CZt9?w*gM4T6j<*phA>4z^q%{}d`!oki_| z@AV0^bY^ALAl7#QEf>OHM&bh!)6vu0A`B_5cLvqV zN4-bNh4W2gz{~dq`KT9(kIsPem2m9k`-ndEF&ECqFyQ6;jeJxO@sZ_xcX3R7v~Ney z@xBMjk={o|ibV&5pJfcDxPz83BxL#BkpCJ34^emEnD#^KlBL>^uPI~bJZO3?K5Y9< LI2j3^Zh`v?zZmkE literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/usb_device.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/usb_device.o new file mode 100644 index 0000000000000000000000000000000000000000..caf3a2909682a2dcc16667ab42332182079b3620 GIT binary patch literal 1320 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 SrQRyWTZi)!BoRAF-v0sKe)T*6 literal 0 HcmV?d00001 diff --git a/firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/usbd_desc.o b/firmware/components/modules/iidx/.pio/build/nucleo_f446re/src/usbd_desc.o new file mode 100644 index 0000000000000000000000000000000000000000..a714c02fc3a0bee5c1a890ef7940e31ebe8ec909 GIT binary patch literal 4364 zcmcInO>7%Q6n^V<{+zb4lU8-o(r$i$lw#xjlu*<|TBrF@5`yXmDj}5mXVaL*-mu=F zluIjtxNt*UD#4{!Kte^4I8c>CFNh1`fO_Ci2?-%UsBnP;YWUvn&U!pv3oblmJoDcB z_M11eZ{AL>pI@5QG>wF4G)i@iXtUe(v`xC*D2>oC^$vI6p!uyiHbtfJK50zDTf4_* z+j@Sz-IaR(Zf0_7Qv0iKTKgp%)h5=rzQ29z+{(`s|Ly+P9ioBZ_-^-&uEpd==fshX zFO#uvIu<(?j&5`g?fv;^FFMq=V9dIs`S_jqn|sF(qD3%wuNxCld^frjosZ29x+r5d zeuwV*uK&d+xLfsYJ^M)Oh)3KQHI2LJx1uLsrid2NvAI#bD>|UJdU}3g#>iUL_3{6h?e%=oq^s8|SId<&EiTWzbcrF3ZEbFvHql%*`@Ata_rj`i(Xuvc#=2!2XYGn{ zzEUttC9`C_Xj?_IRdgVI~9DVg0Iiy@y8T=jQZfKS3{qbNvf6H_LHU67(>D`^ot_*W?5xY2DWiSI7I@t`$maC9_sc7iq+ykrJV@ zU9?uK<)T$GX*G9lW^FdNHiPO?G-rUb%Uh0R2actD^~%Cb&ap#$tGNqn=T>qdo}6iy z^PAyME$6G-D6G!5ZQ3D-In#l)T)pCj;3I-~P*O|VMTUe->(%dYUr^9P+%RE6FKBNj zZ`nLWFtfkXK(B8Zxf=+mSL-4pe*c8u4|(r1h6I6&xaaSB1XcSvzdz&mT#;g@h`5GC zo+Z3d^e8}~_EZZyid!iDB*>UA6Tg63<=A(W>jA zvGf?;a3eH)0j6TK|0?{o;qobN9ehS* z5x1W~7#SySKPt{I!Sp0Bd?Wcc9FAktynG&oxZe{fCDt#z%KJWkofpn!FLT~nQy5D-?qZ{lf=hy3BH>O-zDfMS%HXs{uCB@-nXGo z2Plt^)sNBSbv(qpD6Pc%!Z$WC?{^r>eD|PpT@%7MmT%Eyz9fR@I>>x{-xGY|+b#C_ z0eoS6k6@SiG7=x(_ypex1SiM$cMHD90h0OVB|g3p3ceMEF9|&?zD0%avc$(XM!~n^ z^9A_~-GE;R<5(PpZwGwSun(f)MiTJ7104Q>^KlVMSe|~M;4VYw`;HJX@2-O5IE0U} zV*Is&<8{e5Pl5Zv$MI*6_#$v;6x>H}U~2*qxQc@N z3=a9GFK{<~9M=z)dvIL$hVHMx-2x8pY)iPZ(D8{6gmEm~!xhL5l!th52o|1$_a%