diff --git a/.mxproject b/.mxproject index 5952b81..c7a9c05 100644 --- a/.mxproject +++ b/.mxproject @@ -1,30 +1,32 @@ [PreviousLibFiles] -LibFiles=Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_spi.h;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_spi.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_spi.h;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h; +LibFiles=Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_spi.h;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_spi.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_spi.h;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h; [PreviousUsedKeilFiles] -SourceFiles=..\Core\Src\main.c;..\Core\Src\gpio.c;..\Core\Src\spi.c;..\Core\Src\usart.c;..\Core\Src\stm32f1xx_it.c;..\Core\Src\stm32f1xx_hal_msp.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_spi.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;..\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;..\Core\Src\system_stm32f1xx.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_spi.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;..\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;..\Core\Src\system_stm32f1xx.c;;; +SourceFiles=..\Core\Src\main.c;..\Core\Src\gpio.c;..\Core\Src\spi.c;..\Core\Src\tim.c;..\Core\Src\usart.c;..\Core\Src\stm32f1xx_it.c;..\Core\Src\stm32f1xx_hal_msp.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_spi.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;..\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;..\Core\Src\system_stm32f1xx.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_spi.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;..\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;..\Core\Src\system_stm32f1xx.c;;; HeaderPath=..\Drivers\STM32F1xx_HAL_Driver\Inc;..\Drivers\STM32F1xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32F1xx\Include;..\Drivers\CMSIS\Include;..\Core\Inc; CDefines=USE_HAL_DRIVER;STM32F103xB;USE_HAL_DRIVER;USE_HAL_DRIVER; [PreviousGenFiles] AdvancedFolderStructure=true -HeaderFileListSize=6 +HeaderFileListSize=7 HeaderFiles#0=..\Core\Inc\gpio.h HeaderFiles#1=..\Core\Inc\spi.h -HeaderFiles#2=..\Core\Inc\usart.h -HeaderFiles#3=..\Core\Inc\stm32f1xx_it.h -HeaderFiles#4=..\Core\Inc\stm32f1xx_hal_conf.h -HeaderFiles#5=..\Core\Inc\main.h +HeaderFiles#2=..\Core\Inc\tim.h +HeaderFiles#3=..\Core\Inc\usart.h +HeaderFiles#4=..\Core\Inc\stm32f1xx_it.h +HeaderFiles#5=..\Core\Inc\stm32f1xx_hal_conf.h +HeaderFiles#6=..\Core\Inc\main.h HeaderFolderListSize=1 HeaderPath#0=..\Core\Inc HeaderFiles=; -SourceFileListSize=6 +SourceFileListSize=7 SourceFiles#0=..\Core\Src\gpio.c SourceFiles#1=..\Core\Src\spi.c -SourceFiles#2=..\Core\Src\usart.c -SourceFiles#3=..\Core\Src\stm32f1xx_it.c -SourceFiles#4=..\Core\Src\stm32f1xx_hal_msp.c -SourceFiles#5=..\Core\Src\main.c +SourceFiles#2=..\Core\Src\tim.c +SourceFiles#3=..\Core\Src\usart.c +SourceFiles#4=..\Core\Src\stm32f1xx_it.c +SourceFiles#5=..\Core\Src\stm32f1xx_hal_msp.c +SourceFiles#6=..\Core\Src\main.c SourceFolderListSize=1 SourcePath#0=..\Core\Src SourceFiles=; diff --git a/Core/Inc/data_source.h b/Core/Inc/data_source.h new file mode 100644 index 0000000..c88fda5 --- /dev/null +++ b/Core/Inc/data_source.h @@ -0,0 +1,8 @@ +#ifndef __DATA_SOURCE_H +#define __DATA_SOURCE_H + +/* 数据源标识 */ +#define SOURCE_RS485 0x01 +#define SOURCE_DI 0x02 + +#endif /* __DATA_SOURCE_H */ \ No newline at end of file diff --git a/Core/Inc/main.h b/Core/Inc/main.h index 607ad70..cccb455 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -37,6 +37,7 @@ extern "C" { /* Exported types ------------------------------------------------------------*/ /* USER CODE BEGIN ET */ + /* USER CODE END ET */ /* Exported constants --------------------------------------------------------*/ @@ -47,6 +48,15 @@ extern "C" { /* Exported macro ------------------------------------------------------------*/ /* USER CODE BEGIN EM */ +/* 硬件模块启用/禁用宏定义 */ +#ifndef USE_W5500 +#define USE_W5500 1 /* 默认启用W5500以太网模块 */ +#endif + +#ifndef USE_RS485 +#define USE_RS485 1 /* 默认启用RS485通信模块 */ +#endif + /* USER CODE END EM */ /* Exported functions prototypes ---------------------------------------------*/ diff --git a/Core/Inc/stm32f1xx_hal_conf.h b/Core/Inc/stm32f1xx_hal_conf.h index d25098d..e5ea88b 100644 --- a/Core/Inc/stm32f1xx_hal_conf.h +++ b/Core/Inc/stm32f1xx_hal_conf.h @@ -64,7 +64,7 @@ /*#define HAL_SMARTCARD_MODULE_ENABLED */ #define HAL_SPI_MODULE_ENABLED /*#define HAL_SRAM_MODULE_ENABLED */ -/*#define HAL_TIM_MODULE_ENABLED */ +#define HAL_TIM_MODULE_ENABLED #define HAL_UART_MODULE_ENABLED /*#define HAL_USART_MODULE_ENABLED */ /*#define HAL_WWDG_MODULE_ENABLED */ diff --git a/Core/Inc/stm32f1xx_it.h b/Core/Inc/stm32f1xx_it.h index 2b8eecd..cd6ebb4 100644 --- a/Core/Inc/stm32f1xx_it.h +++ b/Core/Inc/stm32f1xx_it.h @@ -55,6 +55,7 @@ void SVC_Handler(void); void DebugMon_Handler(void); void PendSV_Handler(void); void SysTick_Handler(void); +void TIM2_IRQHandler(void); void USART1_IRQHandler(void); void USART2_IRQHandler(void); void USART3_IRQHandler(void); diff --git a/Core/Inc/tim.h b/Core/Inc/tim.h new file mode 100644 index 0000000..5044b5e --- /dev/null +++ b/Core/Inc/tim.h @@ -0,0 +1,54 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : tim.h + * @brief : Header for tim.c file. + * This file contains the common defines of the application. + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 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 __TIM_H__ +#define __TIM_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +extern TIM_HandleTypeDef htim2; + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +void MX_TIM2_Init(void); + +/* USER CODE BEGIN Prototypes */ + +void MX_TIM2_Init(void); + +/* USER CODE END Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif /* __TIM_H__ */ + diff --git a/Core/Inc/uart2_print.h b/Core/Inc/uart2_print.h index 01d2178..29517f2 100644 --- a/Core/Inc/uart2_print.h +++ b/Core/Inc/uart2_print.h @@ -23,7 +23,7 @@ extern "C" { #include #include -#define UART2_TX_BUFFER_SIZE 256 +#define UART2_TX_BUFFER_SIZE 512 /** * @brief 初始化UART2打印模块 diff --git a/Core/Inc/uart3_smart_router_config.h b/Core/Inc/uart3_smart_router_config.h index 0697ddb..c27e117 100644 --- a/Core/Inc/uart3_smart_router_config.h +++ b/Core/Inc/uart3_smart_router_config.h @@ -86,7 +86,7 @@ * 可通过此开关快速切换新旧逻辑 */ #ifndef UART3_SMART_ROUTING_ENABLED -#define UART3_SMART_ROUTING_ENABLED 1 +#define UART3_SMART_ROUTING_ENABLED 0 #endif /** diff --git a/Core/Src/cmd_parser.c b/Core/Src/cmd_parser.c index dfa029e..c32e804 100644 --- a/Core/Src/cmd_parser.c +++ b/Core/Src/cmd_parser.c @@ -31,7 +31,7 @@ * 调试宏定义 *============================================================================*/ /* DEBUG_CMD_PARSER: 调试日志开关,置1时启用解析过程日志输出 */ -#define DEBUG_CMD_PARSER 1 +#define DEBUG_CMD_PARSER 0 #if DEBUG_CMD_PARSER /* 调试日志宏,带模块前缀"[CMD]"方便过滤 */ diff --git a/Core/Src/cmd_router.c b/Core/Src/cmd_router.c index ea6ba86..5b0ee47 100644 --- a/Core/Src/cmd_router.c +++ b/Core/Src/cmd_router.c @@ -27,6 +27,8 @@ #include "cmd_parser.h" #include "uart2_print.h" #include "debug_log.h" +#include "data_source.h" +#include "uart3_protocol_discriminator.h" #include "uart3_protocol_discriminator.h" #include "uart3_passthrough.h" #include "uart3_smart_router_config.h" @@ -36,7 +38,7 @@ * 调试宏定义 *============================================================================*/ /* DEBUG_CMD_ROUTER: 调试日志开关,置1时启用路由过程日志输出 */ -#define DEBUG_CMD_ROUTER 1 +#define DEBUG_CMD_ROUTER 0 #if DEBUG_CMD_ROUTER /* 路由模块日志宏,带模块前缀"[ROUTER]"方便过滤 */ @@ -375,6 +377,7 @@ void CmdRouter_Task(void) *----------------------------------------------------------*/ #if UART3_SMART_ROUTING_ENABLED { + LOG_DEBUG("UART3", "Protocol state: %d", UART3_Protocol_GetState()); uint8_t byte; while (MultiUART_ReadByte(PORT_UART3, &byte) > 0) { @@ -387,6 +390,7 @@ void CmdRouter_Task(void) break; case ROUTE_PASSTHROUGH: + // 透传数据暂时不加包头,由timeout处理时统一加 Passthrough_PushByte(byte); LOG_DEBUG("UART3", "PTX byte: 0x%02X", byte); break; @@ -397,11 +401,31 @@ void CmdRouter_Task(void) } if (UART3_Protocol_CheckTimeout(current_tick)) { + LOG_DEBUG("UART3", "CheckTimeout triggered"); uint8_t buffer[128]; uint16_t length; if (UART3_Protocol_GetPassthroughData(buffer, &length)) { - Passthrough_PushBuffer(buffer, length); - LOG_INFO("UART3", "PASSTHROUGH: %d bytes queued", (int)length); + LOG_DEBUG("UART3", "Got passthrough data, length=%d", length); + // 构造ASCII格式的RS485数据消息 + char msg[512]; // 足够容纳128字节数据 + 消息头 + int msg_len = snprintf(msg, sizeof(msg), "$RS485_DATA,"); + // 直接追加原始数据(假设ASCII可打印) + memcpy(msg + msg_len, buffer, length); + msg_len += length; + msg[msg_len] = '\0'; // 确保字符串结束 + // 计算校验和(跳过'$') + uint8_t cs = 0; + for (int i = 1; i < msg_len; i++) { + cs ^= (uint8_t)msg[i]; + } + // 追加校验和和结束符 + int appended = snprintf(msg + msg_len, sizeof(msg) - msg_len, "*%02X\r\n", cs); + LOG_DEBUG("UART3", "Constructed message: %s", msg); + // 发送ASCII消息 + MultiUART_SendString(PORT_UART1, msg); + LOG_INFO("UART3", "PASSTHROUGH: %d bytes sent as ASCII message", (int)length); + } else { + LOG_DEBUG("UART3", "No passthrough data"); } } diff --git a/Core/Src/debug_log.c b/Core/Src/debug_log.c index 3307360..c9cd21d 100644 --- a/Core/Src/debug_log.c +++ b/Core/Src/debug_log.c @@ -19,7 +19,7 @@ #include #include #include - +#include "multi_uart_router.h" #define MAX_MODULES 16 #define MODULE_NAME_LEN 16 @@ -144,5 +144,6 @@ void DebugLog_Output(log_level_t level, const char *module, const char *fmt, ... if (len > 0) { UART2_Print_Send((const uint8_t *)buffer, len); + MultiUART_Send(PORT_UART3, (const uint8_t *)buffer, len); /* 增加:同时将日志发给 UART3 */ } } diff --git a/Core/Src/io_monitor.c b/Core/Src/io_monitor.c index a448939..1ebdc78 100644 --- a/Core/Src/io_monitor.c +++ b/Core/Src/io_monitor.c @@ -23,6 +23,7 @@ #include "multi_uart_router.h" #include "main.h" #include +#include "data_source.h" /*============================================================================== * 调试宏定义 @@ -196,7 +197,7 @@ static void send_di_event(uint8_t channel, uint8_t state) uint8_t cs; /* 构造消息主体,channel+1将0-base转换为1-base的用户可见编号 */ - int len = snprintf(msg, sizeof(msg), "$DI_EVENT,%d,%d*", channel + 1, state); + int len = snprintf(msg, sizeof(msg), "$DI_EVENT,%d,%d,%d*", channel + 1, state, SOURCE_DI); /* 计算异或校验和,跳过'$'符号只对正文部分计算 */ cs = calc_checksum(msg + 1, len - 1); diff --git a/Core/Src/main.c b/Core/Src/main.c index 454d7ec..5f0ab40 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -19,6 +19,7 @@ /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "spi.h" +#include "tim.h" #include "usart.h" #include "gpio.h" @@ -39,6 +40,15 @@ #include "cmd_router.h" #include "debug_log.h" +/* W5500 Ethernet模块头文件 */ +#if USE_W5500 +#include "user_main.h" +#include "wiz_platform.h" +#include "wiz_interface.h" +#include "wizchip_conf.h" +#include "loopback.h" +#endif +extern void wiz_timer_handler(void); #if (RF433_MODE == RF433_MODE_TX) || (RF433_MODE == RF433_MODE_BOTH) #include "rf433_tx_app.h" #endif @@ -64,12 +74,30 @@ /* USER CODE END PM */ /* Private variables ---------------------------------------------------------*/ - +/* Private variables ---------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN PV */ static uint8_t uart2_rx_byte = 0; static uint8_t uart3_rx_byte = 0; -/* USER CODE END PV */ +/* === 433 模块的接收缓存 (UART1) === */ +static uint8_t u1_rx_buffer[256]; +static volatile uint16_t u1_rx_len = 0; +static volatile uint32_t u1_last_rx_time = 0; + +/* === 485 设备的接收缓存 (UART3) 增加这三行!=== */ +static uint8_t u3_rx_buffer[512]; +static volatile uint16_t u3_rx_len = 0; +static volatile uint32_t u3_last_rx_time = 0; + +/* W5500 variables */ +#if USE_W5500 +#define SOCKET_ID 0 +#define ETHERNET_BUF_MAX_SIZE 2048 +static uint8_t ethernet_buf[ETHERNET_BUF_MAX_SIZE] = {0}; +static uint16_t local_port = 8000; +#endif +/* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); /* USER CODE BEGIN PFP */ @@ -109,31 +137,62 @@ int main(void) MX_USART1_UART_Init(); MX_SPI2_Init(); MX_USART2_UART_Init(); + MX_USART3_UART_Init(); + + MX_TIM2_Init(); /* USER CODE BEGIN 2 */ - + + HAL_TIM_Base_Start_IT(&htim2); /* 初始化应用层模块 */ UART2_Print_Init(); IO_Monitor_Init(); CmdParser_Init(); Relay_Init(); - + /* 初始化多通信接口统一指令处理系统 */ MultiUART_Init(); CmdRouter_Init(); DebugLog_Init(); - + +/* ============================================================== */ + /* 🚀 【核心修复】将全局日志门槛提高到 INFO 级别,屏蔽所有底层 DEBUG 噪音 */ + DebugLog_SetLevel(LOG_LEVEL_INFO); + /* ============================================================== */ + + printf("\r\n[DEBUG] 1. 启动 TIM2 中断\r\n"); + HAL_TIM_Base_Start_IT(&htim2); + /* 启动UART2接收中断 */ HAL_UART_Receive_IT(&huart2, &uart2_rx_byte, 1); /* 启动UART3接收中断 - RS485接口 */ + #if USE_RS485 HAL_UART_Receive_IT(&huart3, &uart3_rx_byte, 1); + #endif /* 初始化RF433模块 - 使用默认配置 */ rf433_init(NULL); - + + /* 启动UART1接收 - 使用rf433_hal中的临时变量 */ HAL_UART_Receive_IT(&huart1, &rf433_uart_rx_tmp, 1); + + #if USE_W5500 + printf("[DEBUG] 2. 进入 wizchip_initialize()\r\n"); + wizchip_initialize(); + printf("[DEBUG] 3. wizchip_initialize() 成功返回!\r\n"); + + printf("[DEBUG] 4. 进入 network_init()\r\n"); + network_init(ethernet_buf, &default_net_info); + printf("[DEBUG] 5. network_init() 成功返回!\r\n"); + printf("wizchip UDP example started\r\n"); + #endif + /* ======================================= */ + + + + /* 根据配置模式初始化TX/RX应用层 */ #if (RF433_MODE == RF433_MODE_TX) || (RF433_MODE == RF433_MODE_BOTH) @@ -154,24 +213,11 @@ int main(void) printf("System Clock: %d MHz\r\n", SystemCoreClock / 1000000); printf("========================================\r\n"); -/* USER CODE END 2 */ + /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ - while (1) - { - /* USER CODE END WHILE */ - - /* USER CODE BEGIN 3 */ - - /* 应用层任务处理 */ - UART2_Print_Task(); - IO_Monitor_Task(); - CmdParser_Task(); - - /* 多通信接口统一指令处理系统任务 */ - MultiUART_Task(); - CmdRouter_Task(); + #if (RF433_MODE == RF433_MODE_TX) || (RF433_MODE == RF433_MODE_BOTH) /* TX任务 */ @@ -182,11 +228,74 @@ int main(void) /* RX任务 */ rf433_rx_app_task(); #endif - + + /* W5500 UDP回环任务 */ + #if USE_W5500 + loopback_udps(SOCKET_ID, ethernet_buf, local_port); + #endif + +// /* 强行拉低 M0 和 M1,叫醒 433 模块处于透传模式! */ +// HAL_GPIO_WritePin(M0_GPIO_Port, M0_Pin, GPIO_PIN_RESET); +// HAL_GPIO_WritePin(GPIOB, M1_Pin, GPIO_PIN_RESET); + +// /* ⚠️ 致命修复:网络被注释后,单片机启动太快。 +// 433模块从休眠到唤醒至少需要几百毫秒。 +// 必须改成 1000 毫秒,给硬件足够的缓冲时间! */ +// HAL_Delay(1000); + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + /* ========================================================== + 第一部分:恢复系统的核心驱动引擎 (解决网络和端口不传数据的问题) + ========================================================== */ + UART2_Print_Task(); // 引擎:负责把串口2的缓存发出去 + MultiUART_Task(); // 引擎:负责网络分发、多串口异步发送 (极其重要!) + IO_Monitor_Task(); + /* 如果你的网络指令需要解析,取消下面两行的注释 */ + // CmdRouter_Task(); + // CmdParser_Task(); + + /* ========================================================== + 第二部分:网络轮询任务 + ========================================================== */ + #if USE_W5500 + loopback_udps(SOCKET_ID, ethernet_buf, local_port); + #endif + + /* ========================================================== + 第三部分:非阻塞无乱码透传 (解决485卡顿漏数据的问题) + ========================================================== */ + + /* 1. 从 433 收到无线数据 -> 发给 485 */ + if (u1_rx_len > 0 && (HAL_GetTick() - u1_last_rx_time > 20)) + { + /* 改用 MultiUART_Send!它会把数据瞬间丢进发送队列,耗时0毫秒,绝不卡顿单片机! */ + MultiUART_Send(PORT_UART3, (uint8_t*)u1_rx_buffer, u1_rx_len); + + /* 顺便发给串口2监控 */ + MultiUART_Send(PORT_UART2, (uint8_t*)u1_rx_buffer, u1_rx_len); + + u1_rx_len = 0; /* 清空缓存 */ + } + + /* 2. 从 485 收到设备数据 -> 通过 433 无线发射 */ + if (u3_rx_len > 0 && (HAL_GetTick() - u3_last_rx_time > 20)) + { + MultiUART_Send(PORT_UART1, (uint8_t*)u3_rx_buffer, u3_rx_len); + + /* 【可选进阶】:如果你希望网络端(比如电脑上的UDP助手)也能收到485传来的数据, + 你可以在这里调用你的网络发送函数,把 u3_rx_buffer 发给网口 */ + + u3_rx_len = 0; /* 清空缓存 */ + } + + /* USER CODE END WHILE */ } /* USER CODE END 3 */ + /* USER CODE END 3 */ } - /** * @brief System Clock Configuration * @retval None @@ -234,37 +343,45 @@ void SystemClock_Config(void) * @param huart: UART句柄指针 * @retval 无 */ +/* USER CODE BEGIN 4 */ +/* USER CODE BEGIN 4 */ +/* USER CODE BEGIN 4 */ + +/* USER CODE BEGIN 4 */ + void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { - if (huart->Instance == USART1) - { - /* 先保存接收到的字节,避免被rf433_hal回调覆盖 */ - uint8_t rx_byte = rf433_uart_rx_tmp; - - /* 调用RF433模块的UART接收回调(内部会重启接收) */ - rf433_hal_uart_rxcplt_callback(); - - /* 喂入多UART路由器,支持RF433指令接收 */ - MultiUART_FeedByte(PORT_UART1, rx_byte); + if (huart->Instance == USART1) { + if (u1_rx_len < sizeof(u1_rx_buffer)) u1_rx_buffer[u1_rx_len++] = rf433_uart_rx_tmp; + u1_last_rx_time = HAL_GetTick(); + HAL_UART_Receive_IT(&huart1, &rf433_uart_rx_tmp, 1); } - else if (huart->Instance == USART2) - { - /* 喂入指令解析器 - UART2保持原有处理方式 */ - CmdParser_FeedByte(uart2_rx_byte, HAL_GetTick()); - - /* 重新启动接收 */ - HAL_UART_Receive_IT(&huart2, &uart2_rx_byte, 1); - } - else if (huart->Instance == USART3) - { - /* 喂入多UART路由器 - RS485接口 */ - MultiUART_FeedByte(PORT_UART3, uart3_rx_byte); - - /* 重新启动接收 */ + else if (huart->Instance == USART3) { + if (u3_rx_len < sizeof(u3_rx_buffer)) u3_rx_buffer[u3_rx_len++] = uart3_rx_byte; + u3_last_rx_time = HAL_GetTick(); HAL_UART_Receive_IT(&huart3, &uart3_rx_byte, 1); } + else if (huart->Instance == USART2) { + HAL_UART_Receive_IT(&huart2, &uart2_rx_byte, 1); + } } +void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart) +{ + /* 彻底清除所有硬件锁死标志 */ + __HAL_UART_CLEAR_OREFLAG(huart); + __HAL_UART_CLEAR_NEFLAG(huart); + __HAL_UART_CLEAR_FEFLAG(huart); + + if (huart->Instance == USART1) HAL_UART_Receive_IT(&huart1, &rf433_uart_rx_tmp, 1); + else if (huart->Instance == USART3) HAL_UART_Receive_IT(&huart3, &uart3_rx_byte, 1); + else if (huart->Instance == USART2) HAL_UART_Receive_IT(&huart2, &uart2_rx_byte, 1); +} +/* USER CODE END 4 */ + +/* 后面原有的 HAL_UART_TxCpltCallback 保留不动... */ + + /** * @brief UART发送完成中断回调函数 * @note 处理UART1/UART2/UART3发送完成,触发下一次发送 @@ -285,8 +402,10 @@ void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) } else if (huart->Instance == USART3) { + /* 调用多UART路由器的UART3发送完成回调 */ MultiUART_TxCpltCallback(PORT_UART3); + } } diff --git a/Core/Src/multi_uart_router.c b/Core/Src/multi_uart_router.c index a73422e..5b7cc8a 100644 --- a/Core/Src/multi_uart_router.c +++ b/Core/Src/multi_uart_router.c @@ -32,7 +32,7 @@ * 调试宏定义 *============================================================================*/ /* DEBUG_MULTI_UART: 多UART路由调试日志开关 */ -#define DEBUG_MULTI_UART 1 +#define DEBUG_MULTI_UART 0 #if DEBUG_MULTI_UART /* 多UART模块日志宏,带前缀"[MUART]" */ diff --git a/Core/Src/rf433_tx_app.c b/Core/Src/rf433_tx_app.c index 7c11361..616510b 100644 --- a/Core/Src/rf433_tx_app.c +++ b/Core/Src/rf433_tx_app.c @@ -83,17 +83,19 @@ static void tx_led_control(uint8_t state) rf433_error_t rf433_tx_app_init(const rf433_register_t *config) { - if (config == NULL) { - return RF433_ERROR; - } - // 初始化TX应用结构体 memset(&g_tx_app, 0, sizeof(rf433_tx_app_t)); g_tx_app.state = TX_STATE_INIT; g_tx_app.is_running = false; // 保存配置 - memcpy(&g_tx_app.config, config, sizeof(rf433_register_t)); + if (config == NULL) { + // 使用默认配置 + extern const rf433_register_t rf433_default_config; + memcpy(&g_tx_app.config, &rf433_default_config, sizeof(rf433_register_t)); + } else { + memcpy(&g_tx_app.config, config, sizeof(rf433_register_t)); + } // 配置RF433模块 rf433_error_t ret = rf433_set_config(&g_tx_app.config); diff --git a/Core/Src/stm32f1xx_it.c b/Core/Src/stm32f1xx_it.c index 4a109cd..b04aa74 100644 --- a/Core/Src/stm32f1xx_it.c +++ b/Core/Src/stm32f1xx_it.c @@ -55,6 +55,7 @@ /* USER CODE END 0 */ /* External variables --------------------------------------------------------*/ +extern TIM_HandleTypeDef htim2; extern UART_HandleTypeDef huart1; extern UART_HandleTypeDef huart2; extern UART_HandleTypeDef huart3; @@ -199,6 +200,20 @@ void SysTick_Handler(void) /* please refer to the startup file (startup_stm32f1xx.s). */ /******************************************************************************/ +/** + * @brief This function handles TIM2 global interrupt. + */ +void TIM2_IRQHandler(void) +{ + /* USER CODE BEGIN TIM2_IRQn 0 */ + + /* USER CODE END TIM2_IRQn 0 */ + HAL_TIM_IRQHandler(&htim2); + /* USER CODE BEGIN TIM2_IRQn 1 */ + + /* USER CODE END TIM2_IRQn 1 */ +} + /** * @brief This function handles USART1 global interrupt. */ diff --git a/Core/Src/tim.c b/Core/Src/tim.c new file mode 100644 index 0000000..b6454ba --- /dev/null +++ b/Core/Src/tim.c @@ -0,0 +1,111 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : tim.c + * @brief : This file provides code for the configuration + * of the TIM instances. + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 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 "tim.h" + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +TIM_HandleTypeDef htim2; + +/* TIM2 init function */ +void MX_TIM2_Init(void) +{ + + /* USER CODE BEGIN TIM2_Init 0 */ + + /* USER CODE END TIM2_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM2_Init 1 */ + + /* USER CODE END TIM2_Init 1 */ + htim2.Instance = TIM2; + htim2.Init.Prescaler = 72-1; + htim2.Init.CounterMode = TIM_COUNTERMODE_UP; + htim2.Init.Period = 65535; + htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim2) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM2_Init 2 */ + + /* USER CODE END TIM2_Init 2 */ + +} + +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) +{ + + if(tim_baseHandle->Instance==TIM2) + { + /* USER CODE BEGIN TIM2_MspInit 0 */ + + /* USER CODE END TIM2_MspInit 0 */ + /* TIM2 clock enable */ + __HAL_RCC_TIM2_CLK_ENABLE(); + + /* TIM2 interrupt Init */ + HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(TIM2_IRQn); + /* USER CODE BEGIN TIM2_MspInit 1 */ + + /* USER CODE END TIM2_MspInit 1 */ + } +} + +void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle) +{ + + if(tim_baseHandle->Instance==TIM2) + { + /* USER CODE BEGIN TIM2_MspDeInit 0 */ + + /* USER CODE END TIM2_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM2_CLK_DISABLE(); + + /* TIM2 interrupt Deinit */ + HAL_NVIC_DisableIRQ(TIM2_IRQn); + /* USER CODE BEGIN TIM2_MspDeInit 1 */ + + /* USER CODE END TIM2_MspDeInit 1 */ + } +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ diff --git a/Core/Src/uart2_print.c b/Core/Src/uart2_print.c index 3f2a2a2..22ef2f9 100644 --- a/Core/Src/uart2_print.c +++ b/Core/Src/uart2_print.c @@ -21,7 +21,7 @@ #include "usart.h" #include #include - +#include "multi_uart_router.h" /*============================================================================== * 调试宏定义 *============================================================================*/ @@ -460,50 +460,26 @@ uint16_t UART2_Print_GetOverflowCount(void) #if defined(__CC_ARM) || defined(__ARMCC_VERSION) int fputc(int ch, FILE *f) { - (void)f; /* 未使用参数,避免编译器警告 */ + (void)f; UART2_Print_Send((uint8_t *)&ch, 1); + MultiUART_Send(PORT_UART3, (uint8_t *)&ch, 1); /* 增加:同时发给 UART3 */ return ch; } #endif -/** - * @brief printf重定向函数 (GCC编译器 - 单字符版本) - * @note 将标准库printf输出重定向到UART2 - * - * @param ch: 待发送字符(输入) - * @return int: 发送的字符 - * - * 编译器条件编译: - * 此函数仅在__GNUC__定义时编译,即GCC/Clang编译器环境下生效 - * - * 实现说明: - * 新一代ARM GCC使用__io_putchar作为printf输出目标, - * 此处将其重定向到UART2_Print_Send - */ #if defined(__GNUC__) int __io_putchar(int ch) { UART2_Print_Send((uint8_t *)&ch, 1); + MultiUART_Send(PORT_UART3, (uint8_t *)&ch, 1); /* 增加:同时发给 UART3 */ return ch; } -/** - * @brief write系统调用重定向 (GCC编译器) - * @note 将文件系统write调用重定向到UART2 - * - * @param file: 文件描述符(未使用,仅为兼容标准接口) - * @param ptr: 数据缓冲区指针(输入) - * @param len: 数据长度(输入) - * @return int: 已发送的字节数 - * - * 实现说明: - * 有些GCC配置下printf会调用_write而非__io_putchar, - * 此函数提供完整的write接口兼容 - */ int _write(int file, char *ptr, int len) { - (void)file; /* 忽略文件描述符,只处理标准输出 */ + (void)file; UART2_Print_Send((uint8_t *)ptr, len); + MultiUART_Send(PORT_UART3, (uint8_t *)ptr, len); /* 增加:同时发给 UART3 */ return len; } -#endif +#endif \ No newline at end of file diff --git a/Core/Src/uart3_passthrough.c b/Core/Src/uart3_passthrough.c index cb056f3..3e45d3f 100644 --- a/Core/Src/uart3_passthrough.c +++ b/Core/Src/uart3_passthrough.c @@ -39,6 +39,10 @@ #define DEBUG_LOG(fmt, ...) #endif +/* 数据源标识 */ +#define SOURCE_RS485 0x01 +#define SOURCE_DI 0x02 + /*============================================================================== * 全局变量定义 * 设计依据:文档第3.2.2节 diff --git a/Core/Src/usart.c b/Core/Src/usart.c index c622172..1d0761a 100644 --- a/Core/Src/usart.c +++ b/Core/Src/usart.c @@ -100,7 +100,7 @@ void MX_USART3_UART_Init(void) /* USER CODE END USART3_Init 1 */ huart3.Instance = USART3; - huart3.Init.BaudRate = 9600; + huart3.Init.BaudRate = 115200; /* 从 9600 修改为 115200 */ huart3.Init.WordLength = UART_WORDLENGTH_8B; huart3.Init.StopBits = UART_STOPBITS_1; huart3.Init.Parity = UART_PARITY_NONE; diff --git a/Driver_RF433/Src/rf433.c b/Driver_RF433/Src/rf433.c index 278a28f..7babc4d 100644 --- a/Driver_RF433/Src/rf433.c +++ b/Driver_RF433/Src/rf433.c @@ -20,7 +20,7 @@ static bool rf433_initialized = false; static rf433_register_t rf433_current_config; /* E32-433T30S 默认配置(与原register_default保持一致) */ -static const rf433_register_t rf433_default_config = +const rf433_register_t rf433_default_config = { .register_1 = { .address_h = 0x00, diff --git a/MDK-ARM/project.uvguix.xtell b/MDK-ARM/project.uvguix.xtell index b5677f2..792db5c 100644 --- a/MDK-ARM/project.uvguix.xtell +++ b/MDK-ARM/project.uvguix.xtell @@ -101,17 +101,17 @@ -1 - 64 - 157 - 1220 - 1105 + 253 + 606 + 1669 + 910 0 - 1715 - 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000F00000000000000010000003A433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF4A433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4472697665725F52463433335C496E635C72663433335F636F6E6669672E68000000000E72663433335F636F6E6669672E6800000000FFDC7800FFFFFFFF42433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C72663433335F72785F6170702E63000000000E72663433335F72785F6170702E6300000000BECEA100FFFFFFFF42433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C72663433335F74785F6170702E63000000000E72663433335F74785F6170702E6300000000F0A0A100FFFFFFFF3B433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C75736172742E63000000000775736172742E6300000000BCA8E100FFFFFFFF48433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4D444B2D41524D5C737461727475705F73746D33326631303378622E730000000015737461727475705F73746D33326631303378622E73000000009CC1B600FFFFFFFF5B433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C2E63000000000F73746D3332663178785F68616C2E6300000000F7B88600FFFFFFFF3A433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C6770696F2E6300000000066770696F2E6300000000D9ADC200FFFFFFFF60433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F6770696F2E63000000001473746D3332663178785F68616C5F6770696F2E6300000000A5C2D700FFFFFFFF47433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4472697665725F52463433335C496E635C72663433335F68616C2E68000000000B72663433335F68616C2E6800000000B3A6BE00FFFFFFFF41433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C75617274325F7072696E742E63000000000D75617274325F7072696E742E6300000000EAD6A300FFFFFFFF43433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4472697665725F52463433335C5372635C72663433332E63000000000772663433332E6300000000F6FA7D00FFFFFFFF60433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F756172742E63000000001473746D3332663178785F68616C5F756172742E6300000000B5E99D00FFFFFFFF47433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C6D756C74695F756172745F726F757465722E6300000000136D756C74695F756172745F726F757465722E63000000005FC3CF00FFFFFFFF40433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C636D645F726F757465722E63000000000C636D645F726F757465722E6300000000C1838300FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F40000006600000080070000ED020000 + 3310 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000001B000000030000000100000047433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF4D433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C436F72655C5372635C636D645F7061727365722E63000000000C636D645F7061727365722E6300000000FFDC7800FFFFFFFF4D433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C436F72655C5372635C636D645F726F757465722E63000000000C636D645F726F757465722E6300000000BECEA100FFFFFFFF47433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C436F72655C496E635C6D61696E2E6800000000066D61696E2E6800000000F0A0A100FFFFFFFF52433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C557365725C757365725F6D61696E5C757365725F6D61696E2E63000000000B757365725F6D61696E2E6300000000BCA8E100FFFFFFFF4E433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C436F72655C5372635C75617274325F7072696E742E63000000000D75617274325F7072696E742E63000000009CC1B600FFFFFFFF4E433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C436F72655C496E635C75617274325F7072696E742E68000000000D75617274325F7072696E742E6800000000F7B88600FFFFFFFF58433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C557365725C77697A5F706C6174666F726D5C77697A5F706C6174666F726D2E63000000000E77697A5F706C6174666F726D2E6300000000D9ADC200FFFFFFFF5A433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C557365725C77697A5F696E746572666163655C77697A5F696E746572666163652E63000000000F77697A5F696E746572666163652E6300000000A5C2D700FFFFFFFF50433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C436F72655C5372635C72656C61795F636F6E74726F6C2E63000000000F72656C61795F636F6E74726F6C2E6300000000B3A6BE00FFFFFFFF54433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C436F72655C5372635C6D756C74695F756172745F726F757465722E6300000000136D756C74695F756172745F726F757465722E6300000000EAD6A300FFFFFFFF50433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C557365725C4C6F6F706261636B5C6C6F6F706261636B2E63000000000A6C6F6F706261636B2E6300000000F6FA7D00FFFFFFFF54433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C436F72655C496E635C6D756C74695F756172745F726F757465722E6800000000136D756C74695F756172745F726F757465722E6800000000B5E99D00FFFFFFFF5F433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C436F72655C5372635C75617274335F70726F746F636F6C5F6469736372696D696E61746F722E63000000001E75617274335F70726F746F636F6C5F6469736372696D696E61746F722E63000000005FC3CF00FFFFFFFF57433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C4472697665725F52463433335C496E635C72663433335F636F6E6669672E68000000000E72663433335F636F6E6669672E6800000000C1838300FFFFFFFF4F433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C436F72655C5372635C72663433335F72785F6170702E63000000000E72663433335F72785F6170702E6300000000CACAD500FFFFFFFF4F433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C436F72655C5372635C72663433335F74785F6170702E63000000000E72663433335F74785F6170702E6300000000C5D4F200FFFFFFFF48433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C436F72655C5372635C75736172742E63000000000775736172742E6300000000FFDC7800FFFFFFFF55433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C4D444B2D41524D5C737461727475705F73746D33326631303378622E730000000015737461727475705F73746D33326631303378622E7300000000BECEA100FFFFFFFF68433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C2E63000000000F73746D3332663178785F68616C2E6300000000F0A0A100FFFFFFFF47433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C436F72655C5372635C6770696F2E6300000000066770696F2E6300000000BCA8E100FFFFFFFF6D433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F6770696F2E63000000001473746D3332663178785F68616C5F6770696F2E63000000009CC1B600FFFFFFFF54433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C4472697665725F52463433335C496E635C72663433335F68616C2E68000000000B72663433335F68616C2E6800000000F7B88600FFFFFFFF50433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C4472697665725F52463433335C5372635C72663433332E63000000000772663433332E6300000000D9ADC200FFFFFFFF6D433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F756172742E63000000001473746D3332663178785F68616C5F756172742E6300000000A5C2D700FFFFFFFF54433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C4472697665725F52463433335C5372635C72663433335F68616C2E63000000000B72663433335F68616C2E6300000000B3A6BE00FFFFFFFF5C433A5C776F726B66696C655C4533322D3433335C736F6674776172655C5441524745545F424F4152445F4533322D3433335442482D53435C436F72655C496E635C75617274335F736D6172745F726F757465725F636F6E6669672E68000000001B75617274335F736D6172745F726F757465725F636F6E6669672E6800000000EAD6A300FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000055030000 @@ -134,7 +134,7 @@ 16 - F200000009010000BA03000099010000 + F40000006600000090050000F6000000 @@ -150,7 +150,7 @@ 0 16 - 0300000066000000ED000000BD020000 + 0300000066000000ED00000025030000 16 @@ -170,7 +170,7 @@ 0 16 - 0300000066000000ED000000BD020000 + 0300000066000000ED00000025030000 16 @@ -190,7 +190,7 @@ 0 16 - 000000002D02000090050000BD020000 + 03000000300200008D050000A4020000 16 @@ -210,7 +210,7 @@ 0 16 - 03000000300200008D05000090020000 + 03000000300200008D050000A4020000 16 @@ -230,7 +230,7 @@ 0 16 - 03000000300200008D05000090020000 + 03000000300200008D050000A4020000 16 @@ -250,7 +250,7 @@ 0 16 - 03000000300200008D05000090020000 + 03000000300200008D050000A4020000 16 @@ -270,7 +270,7 @@ 0 16 - A3040000660000008D05000001010000 + A3040000660000008D05000010020000 16 @@ -330,7 +330,7 @@ 0 16 - 03000000300200008D05000090020000 + 03000000300200008D050000A4020000 16 @@ -350,7 +350,7 @@ 0 16 - 03000000300200008D05000090020000 + 03000000300200008D050000A4020000 16 @@ -370,7 +370,7 @@ 0 16 - 03000000300200008D05000090020000 + 03000000300200008D050000A4020000 16 @@ -390,7 +390,7 @@ 0 16 - 03000000300200008D05000090020000 + 03000000300200008D050000A4020000 16 @@ -410,7 +410,7 @@ 0 16 - 03000000300200008D05000090020000 + 03000000300200008D050000A4020000 16 @@ -430,7 +430,7 @@ 0 16 - 03000000300200008D05000090020000 + 03000000300200008D050000A4020000 16 @@ -450,7 +450,7 @@ 0 16 - 0300000066000000ED000000BD020000 + 0300000066000000ED00000025030000 16 @@ -470,7 +470,7 @@ 0 16 - 0300000066000000ED000000BD020000 + 0300000066000000ED00000025030000 16 @@ -490,7 +490,7 @@ 0 16 - 00000000EE02000080070000E6030000 + 000000005603000080070000E6030000 16 @@ -530,7 +530,7 @@ 0 16 - 03000000F10200008D05000051030000 + 03000000590300007D070000CD030000 16 @@ -550,7 +550,7 @@ 0 16 - F40000006300000090050000DF000000 + F7000000660000008D050000C6000000 16 @@ -610,7 +610,7 @@ 0 16 - A0040000630000009005000029020000 + A3040000660000008D05000010020000 16 @@ -630,7 +630,7 @@ 0 16 - 000000002D02000090050000A9020000 + 03000000300200008D050000A4020000 16 @@ -690,7 +690,7 @@ 0 16 - F40000006300000090050000DF000000 + F7000000660000008D050000C6000000 16 @@ -730,7 +730,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -750,7 +750,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -770,7 +770,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -790,7 +790,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -810,7 +810,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -830,7 +830,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -850,7 +850,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -870,7 +870,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -890,7 +890,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -910,7 +910,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -930,7 +930,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -950,7 +950,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -970,7 +970,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -990,7 +990,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1010,7 +1010,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1030,7 +1030,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1050,7 +1050,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1070,7 +1070,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1090,7 +1090,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1110,7 +1110,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1130,7 +1130,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1150,7 +1150,7 @@ 0 16 - 0300000066000000ED000000A4020000 + 0300000066000000ED00000025030000 16 @@ -1170,7 +1170,7 @@ 0 16 - 00000000EE020000900500006A030000 + 03000000590300007D070000CD030000 16 @@ -1190,7 +1190,7 @@ 0 16 - 03000000F10200008D05000051030000 + 03000000590300007D070000CD030000 16 @@ -1210,7 +1210,7 @@ 0 16 - 03000000300200008D05000090020000 + 03000000300200008D050000A4020000 16 @@ -1230,7 +1230,7 @@ 0 16 - 03000000300200008D05000090020000 + 03000000300200008D050000A4020000 16 @@ -1250,7 +1250,7 @@ 0 16 - 03000000F10200008D05000051030000 + 03000000590300007D070000CD030000 16 @@ -1270,7 +1270,7 @@ 0 16 - 03000000F10200008D05000051030000 + 03000000590300007D070000CD030000 16 @@ -1310,7 +1310,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1330,7 +1330,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1350,7 +1350,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1370,7 +1370,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1390,7 +1390,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1410,7 +1410,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1430,7 +1430,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1450,7 +1450,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1470,7 +1470,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1490,7 +1490,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1510,7 +1510,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1530,7 +1530,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1550,7 +1550,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1570,7 +1570,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1590,7 +1590,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1610,7 +1610,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1630,7 +1630,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1650,7 +1650,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1670,7 +1670,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1690,7 +1690,7 @@ 0 16 - A3040000660000008D0500007C010000 + A3040000660000008D05000010020000 16 @@ -1704,7 +1704,7 @@ 0 0 0 - 32767 + 966 0 8192 0 @@ -1744,7 +1744,7 @@ 0 0 0 - 32767 + 476 0 8192 1 @@ -1764,7 +1764,7 @@ 0 0 0 - 32767 + 612 0 8192 2 @@ -1790,7 +1790,7 @@ 0 16 - 03000000300200008D05000090020000 + 03000000300200008D050000A4020000 16 @@ -1799,14 +1799,14 @@ 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F200000009010000BA03000099010000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000F200000009010000E2010000D4010000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000D6020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000F200000009010000E2010000D4010000000000004F000000F0000000D60200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000F200000009010000E2010000D4010000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000D602000080070000DA020000010000000100001004000000010000005FFDFFFFEB000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000F200000009010000BA0300009901000000000000DA02000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F40000003E030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000055030000000000004F000000F00000003E0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000003E0300008007000042030000010000000100001004000000010000007EFDFFFF0A010000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000005903000080070000FD030000000000004203000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File - 2608 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000002150726F746F636F6C5F4275696C643556506F7765725374617475735061636B6574960000000000000001002150726F746F636F6C5F4275696C643556506F7765725374617475735061636B657400000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000000000000010000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65FF7F0000 + 2938 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000005656E6469669600000000000000140005656E64696604363231310D6164635F76616C75655F6F70312150726F746F636F6C5F4275696C643556506F7765725374617475735061636B65741253656E64486561727462656174546F53544311504D54436F6E74726F6C5F55706461746513504D54436F6E74726F6C5F53657456636F6E740B53544D5F4241545F4144430863616C6C6261636B1F50726F746F636F6C5F4275696C6456636F6E745374617475735061636B6574126164635F46414E5F323230565F76616C7565096164635F76616C75651046414E5F323230565F636F6E74726F6C146469705377697463684D6F6465456E7465726564186469705F7377697463685F6D6F64655F6465746563746564134465746563744469705377697463684D6F64650450334D300430784343106469705F7377697463685F74696D657207526561644144430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -1822,7 +1822,7 @@ Build 974 - 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000770726F6A656374960000000000000001000770726F6A656374000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64FF7F0000 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000770726F6A656374960000000000000001000770726F6A656374000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 583 @@ -1838,7 +1838,7 @@ Debug 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000000000000100000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000000000000100000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000000000000100000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000000000000100000001000000000000000000000001000000000000000000054465627567FF7F0000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -3603,20 +3603,137 @@ 0 100 - 0 + 3 ../Core/Src/main.c + 10 + 196 + 248 + 1 + + 0 + + + ..\Core\Src\cmd_parser.c + 27 + 1 + 34 + 1 + + 0 + + + ..\Core\Src\cmd_router.c 6 - 130 - 149 + 255 + 285 + 1 + + 0 + + + ../Core/Inc/main.h + 19 + 28 + 53 + 1 + + 0 + + + ..\User\user_main\user_main.c + 0 + 1 + 1 + 1 + + 0 + + + ..\Core\Src\uart2_print.c + 0 + 1 + 1 + 1 + + 0 + + + ../Core/Inc/uart2_print.h + 3 + 23 + 28 + 1 + + 0 + + + ..\User\wiz_platform\wiz_platform.c + 3 + 10 + 49 + 1 + + 0 + + + ..\User\wiz_interface\wiz_interface.c + 0 + 89 + 133 + 1 + + 0 + + + ..\Core\Src\relay_control.c + 6 + 1 + 35 + 1 + + 0 + + + ..\Core\Src\multi_uart_router.c + 40 + 245 + 277 + 1 + + 0 + + + ..\User\Loopback\loopback.c + 0 + 232 + 249 + 1 + + 0 + + + ../Core/Inc/multi_uart_router.h + 0 + 1 + 29 + 1 + + 0 + + + ..\Core\Src\uart3_protocol_discriminator.c + 0 + 76 + 111 1 0 ..\Driver_RF433\Inc\rf433_config.h - 16 - 16 + 15 + 6 41 1 @@ -3625,7 +3742,7 @@ ..\Core\Src\rf433_rx_app.c 0 - 7 + 176 211 1 @@ -3633,18 +3750,18 @@ ..\Core\Src\rf433_tx_app.c - 45 - 171 - 182 + 9 + 148 + 183 1 0 ../Core/Src/usart.c - 37 - 31 - 47 + 35 + 115 + 116 1 0 @@ -3654,7 +3771,7 @@ 0 119 132 - 1 + 0 0 @@ -3694,20 +3811,11 @@ 0 - - ..\Core\Src\uart2_print.c - 0 - 1 - 1 - 1 - - 0 - ..\Driver_RF433\Src\rf433.c - 5 - 326 - 363 + 46 + 7 + 23 1 0 @@ -3722,19 +3830,19 @@ 0 - ..\Core\Src\multi_uart_router.c - 40 - 245 - 277 + ..\Driver_RF433\Src\rf433_hal.c + 0 + 1 + 1 1 0 - ..\Core\Src\cmd_router.c - 48 - 255 - 284 + ../Core/Inc/uart3_smart_router_config.h + 0 + 1 + 1 1 0 diff --git a/MDK-ARM/project.uvoptx b/MDK-ARM/project.uvoptx index 7ec84b0..55ee8c8 100644 --- a/MDK-ARM/project.uvoptx +++ b/MDK-ARM/project.uvoptx @@ -157,6 +157,54 @@ 0 0 + 264 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ../Core/Src/main.c + + +
+ + 1 + 0 + 267 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ../Core/Src/main.c + + +
+ + 2 + 0 + 265 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ../Core/Src/main.c + + +
+ + 3 + 0 188 1
0
@@ -445,7 +493,7 @@ 2 18 1 - 0 + 1 0 0 ..\Core\Src\uart3_passthrough.c @@ -457,7 +505,7 @@ 2 19 1 - 0 + 1 0 0 ..\Core\Src\uart3_protocol_discriminator.c @@ -465,6 +513,18 @@ 0 0 + + 2 + 20 + 1 + 0 + 0 + 0 + ..\Core\Src\tim.c + tim.c + 0 + 0 + @@ -475,7 +535,7 @@ 0 3 - 20 + 21 1 0 0 @@ -487,7 +547,7 @@ 3 - 21 + 22 1 0 0 @@ -499,7 +559,7 @@ 3 - 22 + 23 1 0 0 @@ -511,7 +571,7 @@ 3 - 23 + 24 1 0 0 @@ -523,7 +583,7 @@ 3 - 24 + 25 1 0 0 @@ -535,7 +595,7 @@ 3 - 25 + 26 1 0 0 @@ -547,7 +607,7 @@ 3 - 26 + 27 1 0 0 @@ -559,7 +619,7 @@ 3 - 27 + 28 1 0 0 @@ -571,7 +631,7 @@ 3 - 28 + 29 1 0 0 @@ -583,7 +643,7 @@ 3 - 29 + 30 1 0 0 @@ -595,7 +655,7 @@ 3 - 30 + 31 1 0 0 @@ -607,7 +667,7 @@ 3 - 31 + 32 1 0 0 @@ -619,7 +679,7 @@ 3 - 32 + 33 1 0 0 @@ -631,7 +691,7 @@ 3 - 33 + 34 1 0 0 @@ -643,7 +703,7 @@ 3 - 34 + 35 1 0 0 @@ -663,7 +723,7 @@ 0 4 - 35 + 36 1 0 0 @@ -683,7 +743,7 @@ 0 5 - 36 + 37 1 0 0 @@ -695,7 +755,7 @@ 5 - 37 + 38 1 0 0 @@ -707,7 +767,7 @@ 5 - 38 + 39 5 0 0 @@ -719,7 +779,7 @@ 5 - 39 + 40 5 0 0 @@ -731,7 +791,7 @@ 5 - 40 + 41 5 0 0 @@ -743,6 +803,122 @@ + + user + 1 + 0 + 0 + 0 + + 6 + 42 + 1 + 0 + 0 + 0 + ..\User\wiz_platform\wiz_platform.c + wiz_platform.c + 0 + 0 + + + 6 + 43 + 1 + 0 + 0 + 0 + ..\User\wiz_interface\wiz_interface.c + wiz_interface.c + 0 + 0 + + + 6 + 44 + 1 + 0 + 0 + 0 + ..\User\user_main\user_main.c + user_main.c + 0 + 0 + + + 6 + 45 + 1 + 0 + 0 + 0 + ..\User\Loopback\loopback.c + loopback.c + 0 + 0 + + + 6 + 46 + 1 + 0 + 0 + 0 + ..\User\ioLibrary_Driver\Application\multicast\multicast.c + multicast.c + 0 + 0 + + + 6 + 47 + 1 + 0 + 0 + 0 + ..\User\ioLibrary_Driver\Ethernet\W5500\w5500.c + w5500.c + 0 + 0 + + + 6 + 48 + 1 + 0 + 0 + 0 + ..\User\ioLibrary_Driver\Ethernet\socket.c + socket.c + 0 + 0 + + + 6 + 49 + 1 + 0 + 0 + 0 + ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.c + wizchip_conf.c + 0 + 0 + + + 6 + 50 + 1 + 0 + 0 + 0 + ..\User\ioLibrary_Driver\Internet\DHCP\dhcp.c + dhcp.c + 0 + 0 + + + ::CMSIS 0 diff --git a/MDK-ARM/project.uvprojx b/MDK-ARM/project.uvprojx index 4af2b1a..50594c4 100644 --- a/MDK-ARM/project.uvprojx +++ b/MDK-ARM/project.uvprojx @@ -340,7 +340,7 @@ USE_HAL_DRIVER,STM32F103xB - ../Core/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include;../Middlewares/u8g2Lib/inc;../Middlewares/MultMenu/application;../Middlewares/MultMenu/disp;../Middlewares/MultMenu/menu;../Driver_RF433;../Driver_RF433/Inc;../Driver_RF433/Src + ../Core/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include;../Middlewares/u8g2Lib/inc;../Middlewares/MultMenu/application;../Middlewares/MultMenu/disp;../Middlewares/MultMenu/menu;../Driver_RF433;../Driver_RF433/Inc;../Driver_RF433/Src;..\User\wiz_platform;..\User\wiz_interface;..\User\user_main;..\User\Loopback;..\User\ioLibrary_Driver\Internet\DHCP;..\User\ioLibrary_Driver\Ethernet\W5500;..\User\ioLibrary_Driver\Ethernet;..\User\ioLibrary_Driver\Application\loopback;..\User\ioLibrary_Driver\Application\multicast @@ -535,6 +535,11 @@ 1 ..\Core\Src\uart3_protocol_discriminator.c + + tim.c + 1 + ..\Core\Src\tim.c + @@ -708,6 +713,56 @@ + + user + + + wiz_platform.c + 1 + ..\User\wiz_platform\wiz_platform.c + + + wiz_interface.c + 1 + ..\User\wiz_interface\wiz_interface.c + + + user_main.c + 1 + ..\User\user_main\user_main.c + + + loopback.c + 1 + ..\User\Loopback\loopback.c + + + multicast.c + 1 + ..\User\ioLibrary_Driver\Application\multicast\multicast.c + + + w5500.c + 1 + ..\User\ioLibrary_Driver\Ethernet\W5500\w5500.c + + + socket.c + 1 + ..\User\ioLibrary_Driver\Ethernet\socket.c + + + wizchip_conf.c + 1 + ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.c + + + dhcp.c + 1 + ..\User\ioLibrary_Driver\Internet\DHCP\dhcp.c + + + ::CMSIS diff --git a/MDK-ARM/project/cmd_parser.crf b/MDK-ARM/project/cmd_parser.crf index 53ab579..988bd40 100644 Binary files a/MDK-ARM/project/cmd_parser.crf and b/MDK-ARM/project/cmd_parser.crf differ diff --git a/MDK-ARM/project/cmd_parser.o b/MDK-ARM/project/cmd_parser.o index d06261d..784014b 100644 Binary files a/MDK-ARM/project/cmd_parser.o and b/MDK-ARM/project/cmd_parser.o differ diff --git a/MDK-ARM/project/cmd_router.crf b/MDK-ARM/project/cmd_router.crf index ae5c9b2..6b0804e 100644 Binary files a/MDK-ARM/project/cmd_router.crf and b/MDK-ARM/project/cmd_router.crf differ diff --git a/MDK-ARM/project/cmd_router.d b/MDK-ARM/project/cmd_router.d index daf6079..afa511a 100644 --- a/MDK-ARM/project/cmd_router.d +++ b/MDK-ARM/project/cmd_router.d @@ -30,12 +30,15 @@ project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\cmd_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h project\cmd_router.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h project\cmd_router.o: ../Core/Inc/cmd_parser.h project\cmd_router.o: ../Core/Inc/uart2_print.h project\cmd_router.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h project\cmd_router.o: ../Core/Inc/debug_log.h +project\cmd_router.o: ../Core/Inc/data_source.h project\cmd_router.o: ../Core/Inc/uart3_protocol_discriminator.h project\cmd_router.o: ../Core/Inc/uart3_passthrough.h project\cmd_router.o: ../Core/Inc/uart3_smart_router_config.h diff --git a/MDK-ARM/project/cmd_router.o b/MDK-ARM/project/cmd_router.o index e453d2a..1a0a4d5 100644 Binary files a/MDK-ARM/project/cmd_router.o and b/MDK-ARM/project/cmd_router.o differ diff --git a/MDK-ARM/project/debug_log.crf b/MDK-ARM/project/debug_log.crf index 6a0a733..b47b3f7 100644 Binary files a/MDK-ARM/project/debug_log.crf and b/MDK-ARM/project/debug_log.crf differ diff --git a/MDK-ARM/project/debug_log.d b/MDK-ARM/project/debug_log.d index 1d0f143..c099fe0 100644 --- a/MDK-ARM/project/debug_log.d +++ b/MDK-ARM/project/debug_log.d @@ -6,3 +6,34 @@ project\debug_log.o: ../Core/Inc/uart2_print.h project\debug_log.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h project\debug_log.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h project\debug_log.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h +project\debug_log.o: ../Core/Inc/multi_uart_router.h +project\debug_log.o: ../Core/Inc/usart.h +project\debug_log.o: ../Core/Inc/main.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\debug_log.o: ../Core/Inc/stm32f1xx_hal_conf.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h +project\debug_log.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h +project\debug_log.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h +project\debug_log.o: ../Drivers/CMSIS/Include/core_cm3.h +project\debug_log.o: ../Drivers/CMSIS/Include/cmsis_version.h +project\debug_log.o: ../Drivers/CMSIS/Include/cmsis_compiler.h +project\debug_log.o: ../Drivers/CMSIS/Include/cmsis_armcc.h +project\debug_log.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h +project\debug_log.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h +project\debug_log.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/debug_log.o b/MDK-ARM/project/debug_log.o index f33fd02..ceeb2b3 100644 Binary files a/MDK-ARM/project/debug_log.o and b/MDK-ARM/project/debug_log.o differ diff --git a/MDK-ARM/project/dhcp.crf b/MDK-ARM/project/dhcp.crf new file mode 100644 index 0000000..80f67fb Binary files /dev/null and b/MDK-ARM/project/dhcp.crf differ diff --git a/MDK-ARM/project/dhcp.d b/MDK-ARM/project/dhcp.d new file mode 100644 index 0000000..d5ff9ce --- /dev/null +++ b/MDK-ARM/project/dhcp.d @@ -0,0 +1,7 @@ +project\dhcp.o: ..\User\ioLibrary_Driver\Internet\DHCP\dhcp.c +project\dhcp.o: ..\User\ioLibrary_Driver\Ethernet\socket.h +project\dhcp.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h +project\dhcp.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\dhcp.o: ..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h +project\dhcp.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h +project\dhcp.o: ..\User\ioLibrary_Driver\Internet\DHCP\dhcp.h diff --git a/MDK-ARM/project/dhcp.o b/MDK-ARM/project/dhcp.o new file mode 100644 index 0000000..29c2421 Binary files /dev/null and b/MDK-ARM/project/dhcp.o differ diff --git a/MDK-ARM/project/dns.crf b/MDK-ARM/project/dns.crf new file mode 100644 index 0000000..bf17ae9 Binary files /dev/null and b/MDK-ARM/project/dns.crf differ diff --git a/MDK-ARM/project/dns.d b/MDK-ARM/project/dns.d new file mode 100644 index 0000000..cab7c81 --- /dev/null +++ b/MDK-ARM/project/dns.d @@ -0,0 +1,9 @@ +project\dns.o: ..\User\ioLibrary_Driver\Internet\DNS\dns.c +project\dns.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h +project\dns.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdlib.h +project\dns.o: ../User/ioLibrary_Driver/Ethernet/socket.h +project\dns.o: ../User/ioLibrary_Driver/Ethernet/wizchip_conf.h +project\dns.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\dns.o: ../User/ioLibrary_Driver/Ethernet/W5500/w5500.h +project\dns.o: ../User/ioLibrary_Driver/Ethernet/wizchip_conf.h +project\dns.o: ..\User\ioLibrary_Driver\Internet\DNS\dns.h diff --git a/MDK-ARM/project/dns.o b/MDK-ARM/project/dns.o new file mode 100644 index 0000000..976e0a3 Binary files /dev/null and b/MDK-ARM/project/dns.o differ diff --git a/MDK-ARM/project/gpio.crf b/MDK-ARM/project/gpio.crf index 3aa2086..6077090 100644 Binary files a/MDK-ARM/project/gpio.crf and b/MDK-ARM/project/gpio.crf differ diff --git a/MDK-ARM/project/gpio.d b/MDK-ARM/project/gpio.d index 7fb37e9..a80579a 100644 --- a/MDK-ARM/project/gpio.d +++ b/MDK-ARM/project/gpio.d @@ -27,6 +27,8 @@ project\gpio.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h project\gpio.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\gpio.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\gpio.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\gpio.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\gpio.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\gpio.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h project\gpio.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h project\gpio.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h diff --git a/MDK-ARM/project/gpio.o b/MDK-ARM/project/gpio.o index 35ac117..90bf02b 100644 Binary files a/MDK-ARM/project/gpio.o and b/MDK-ARM/project/gpio.o differ diff --git a/MDK-ARM/project/io_monitor.crf b/MDK-ARM/project/io_monitor.crf index 5f8c730..0f54f0a 100644 Binary files a/MDK-ARM/project/io_monitor.crf and b/MDK-ARM/project/io_monitor.crf differ diff --git a/MDK-ARM/project/io_monitor.d b/MDK-ARM/project/io_monitor.d index a6713ff..ca1586a 100644 --- a/MDK-ARM/project/io_monitor.d +++ b/MDK-ARM/project/io_monitor.d @@ -32,6 +32,9 @@ project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h project\io_monitor.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h project\io_monitor.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h +project\io_monitor.o: ../Core/Inc/data_source.h diff --git a/MDK-ARM/project/io_monitor.o b/MDK-ARM/project/io_monitor.o index 177ab06..e94b515 100644 Binary files a/MDK-ARM/project/io_monitor.o and b/MDK-ARM/project/io_monitor.o differ diff --git a/MDK-ARM/project/loopback.crf b/MDK-ARM/project/loopback.crf new file mode 100644 index 0000000..ea39c8a Binary files /dev/null and b/MDK-ARM/project/loopback.crf differ diff --git a/MDK-ARM/project/loopback.d b/MDK-ARM/project/loopback.d new file mode 100644 index 0000000..b111f36 --- /dev/null +++ b/MDK-ARM/project/loopback.d @@ -0,0 +1,40 @@ +project\loopback.o: ..\User\Loopback\loopback.c +project\loopback.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h +project\loopback.o: ..\User\Loopback\loopback.h +project\loopback.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\loopback.o: ..\User\ioLibrary_Driver\Ethernet\socket.h +project\loopback.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h +project\loopback.o: ..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h +project\loopback.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h +project\loopback.o: ../Core/Inc/multi_uart_router.h +project\loopback.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h +project\loopback.o: ../Core/Inc/usart.h +project\loopback.o: ../Core/Inc/main.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\loopback.o: ../Core/Inc/stm32f1xx_hal_conf.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h +project\loopback.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h +project\loopback.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h +project\loopback.o: ../Drivers/CMSIS/Include/core_cm3.h +project\loopback.o: ../Drivers/CMSIS/Include/cmsis_version.h +project\loopback.o: ../Drivers/CMSIS/Include/cmsis_compiler.h +project\loopback.o: ../Drivers/CMSIS/Include/cmsis_armcc.h +project\loopback.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h +project\loopback.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h +project\loopback.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/loopback.o b/MDK-ARM/project/loopback.o new file mode 100644 index 0000000..d96a2db Binary files /dev/null and b/MDK-ARM/project/loopback.o differ diff --git a/MDK-ARM/project/loopback_1.crf b/MDK-ARM/project/loopback_1.crf new file mode 100644 index 0000000..ed3373d Binary files /dev/null and b/MDK-ARM/project/loopback_1.crf differ diff --git a/MDK-ARM/project/loopback_1.d b/MDK-ARM/project/loopback_1.d new file mode 100644 index 0000000..e69de29 diff --git a/MDK-ARM/project/main.crf b/MDK-ARM/project/main.crf index 570a3d4..79f153d 100644 Binary files a/MDK-ARM/project/main.crf and b/MDK-ARM/project/main.crf differ diff --git a/MDK-ARM/project/main.d b/MDK-ARM/project/main.d index 0543785..d6d3124 100644 --- a/MDK-ARM/project/main.d +++ b/MDK-ARM/project/main.d @@ -26,10 +26,13 @@ project\main.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h project\main.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\main.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\main.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\main.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\main.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\main.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h project\main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h project\main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h project\main.o: ../Core/Inc/spi.h +project\main.o: ../Core/Inc/tim.h project\main.o: ../Core/Inc/usart.h project\main.o: ../Core/Inc/gpio.h project\main.o: ../Driver_RF433/Inc/rf433.h @@ -43,5 +46,12 @@ project\main.o: ../Core/Inc/relay_control.h project\main.o: ../Core/Inc/multi_uart_router.h project\main.o: ../Core/Inc/cmd_router.h project\main.o: ../Core/Inc/debug_log.h +project\main.o: ..\User\user_main\user_main.h +project\main.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h +project\main.o: ..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h +project\main.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h +project\main.o: ..\User\wiz_platform\wiz_platform.h +project\main.o: ..\User\wiz_interface\wiz_interface.h +project\main.o: ..\User\Loopback\loopback.h project\main.o: ../Core/Inc/rf433_tx_app.h project\main.o: ../Core/Inc/rf433_rx_app.h diff --git a/MDK-ARM/project/main.o b/MDK-ARM/project/main.o index b8a89f0..9b50078 100644 Binary files a/MDK-ARM/project/main.o and b/MDK-ARM/project/main.o differ diff --git a/MDK-ARM/project/multi_uart_router.crf b/MDK-ARM/project/multi_uart_router.crf index 879a093..b975b18 100644 Binary files a/MDK-ARM/project/multi_uart_router.crf and b/MDK-ARM/project/multi_uart_router.crf differ diff --git a/MDK-ARM/project/multi_uart_router.d b/MDK-ARM/project/multi_uart_router.d index 725332f..fbf2850 100644 --- a/MDK-ARM/project/multi_uart_router.d +++ b/MDK-ARM/project/multi_uart_router.d @@ -29,6 +29,8 @@ project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_f project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\multi_uart_router.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h project\multi_uart_router.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h project\multi_uart_router.o: ../Core/Inc/uart2_print.h diff --git a/MDK-ARM/project/multi_uart_router.o b/MDK-ARM/project/multi_uart_router.o index 3112f78..bc63424 100644 Binary files a/MDK-ARM/project/multi_uart_router.o and b/MDK-ARM/project/multi_uart_router.o differ diff --git a/MDK-ARM/project/multicast.crf b/MDK-ARM/project/multicast.crf new file mode 100644 index 0000000..019c13a Binary files /dev/null and b/MDK-ARM/project/multicast.crf differ diff --git a/MDK-ARM/project/multicast.d b/MDK-ARM/project/multicast.d new file mode 100644 index 0000000..9bff7a2 --- /dev/null +++ b/MDK-ARM/project/multicast.d @@ -0,0 +1,8 @@ +project\multicast.o: ..\User\ioLibrary_Driver\Application\multicast\multicast.c +project\multicast.o: ..\User\ioLibrary_Driver\Application\multicast\multicast.h +project\multicast.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\multicast.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h +project\multicast.o: ..\User\ioLibrary_Driver\Ethernet\socket.h +project\multicast.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h +project\multicast.o: ..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h +project\multicast.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h diff --git a/MDK-ARM/project/multicast.o b/MDK-ARM/project/multicast.o new file mode 100644 index 0000000..2515c3e Binary files /dev/null and b/MDK-ARM/project/multicast.o differ diff --git a/MDK-ARM/project/project.axf b/MDK-ARM/project/project.axf index aa2dc9b..796ad1a 100644 Binary files a/MDK-ARM/project/project.axf and b/MDK-ARM/project/project.axf differ diff --git a/MDK-ARM/project/project.build_log.htm b/MDK-ARM/project/project.build_log.htm index 5d1f9fd..f72f7cc 100644 --- a/MDK-ARM/project/project.build_log.htm +++ b/MDK-ARM/project/project.build_log.htm @@ -21,55 +21,60 @@ Target DLL: CMSIS_AGDI.dll V1.33.24.0 Dialog DLL: TCM.DLL V1.56.6.0

Project:

-C:\workfile\E32-433\software\E32-433TBH-SC\MDK-ARM\project.uvprojx -Project File Date: 03/27/2026 +C:\workfile\E32-433\software\TARGET_BOARD_E32-433TBH-SC\MDK-ARM\project.uvprojx +Project File Date: 05/05/2026

Output:

*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin' Rebuild target 'project' assembling startup_stm32f103xb.s... -compiling systick.c... -compiling spi.c... -compiling rf433_rx_app.c... -..\Core\Src\rf433_rx_app.c(23): warning: #188-D: enumerated type mixed with another type - static rf433_rx_app_t g_rx_app = {0}; -..\Core\Src\rf433_rx_app.c: 1 warning, 0 errors compiling rf433_tx_app.c... ..\Core\Src\rf433_tx_app.c(28): warning: #188-D: enumerated type mixed with another type static rf433_tx_app_t g_tx_app = {0}; ..\Core\Src\rf433_tx_app.c: 1 warning, 0 errors -compiling usart.c... compiling gpio.c... +compiling spi.c... +compiling systick.c... compiling main.c... +../Core/Src/main.c(96): warning: #47-D: incompatible redefinition of macro "ETHERNET_BUF_MAX_SIZE" (declared at line 9 of "..\User\user_main\user_main.h") + #define ETHERNET_BUF_MAX_SIZE 2048 +../Core/Src/main.c: 1 warning, 0 errors +compiling rf433_rx_app.c... +..\Core\Src\rf433_rx_app.c(23): warning: #188-D: enumerated type mixed with another type + static rf433_rx_app_t g_rx_app = {0}; +..\Core\Src\rf433_rx_app.c: 1 warning, 0 errors compiling cmd_parser.c... +compiling usart.c... +compiling uart2_print.c... +..\Core\Src\uart2_print.c(485): warning: #1-D: last line of file ends without a newline + #endif +..\Core\Src\uart2_print.c: 1 warning, 0 errors compiling debug_log.c... +compiling stm32f1xx_it.c... compiling io_monitor.c... +../Core/Inc/data_source.h(8): warning: #1-D: last line of file ends without a newline + #endif /* __DATA_SOURCE_H */ +..\Core\Src\io_monitor.c: 1 warning, 0 errors +compiling stm32f1xx_hal_msp.c... compiling cmd_router.c... +../Core/Inc/data_source.h(8): warning: #1-D: last line of file ends without a newline + #endif /* __DATA_SOURCE_H */ ../Core/Inc/uart3_protocol_discriminator.h(150): warning: #1-D: last line of file ends without a newline #endif ../Core/Inc/uart3_passthrough.h(207): warning: #1-D: last line of file ends without a newline #endif ../Core/Inc/uart3_smart_router_config.h(143): warning: #1-D: last line of file ends without a newline #endif -..\Core\Src\cmd_router.c(284): warning: #188-D: enumerated type mixed with another type +..\Core\Src\cmd_router.c(286): warning: #188-D: enumerated type mixed with another type for (port_id_t i = 0; i < PORT_COUNT; i++) { -..\Core\Src\cmd_router.c(440): warning: #188-D: enumerated type mixed with another type +..\Core\Src\cmd_router.c(463): warning: #188-D: enumerated type mixed with another type for (port_id_t port_id = 0; port_id < PORT_COUNT; port_id++) { -..\Core\Src\cmd_router.c(531): warning: #188-D: enumerated type mixed with another type +..\Core\Src\cmd_router.c(554): warning: #188-D: enumerated type mixed with another type for (port_id_t port = 0; port < PORT_COUNT; port++) { -..\Core\Src\cmd_router.c(114): warning: #550-D: variable "g_current_parsing_port" was set but never used +..\Core\Src\cmd_router.c(116): warning: #550-D: variable "g_current_parsing_port" was set but never used static uint8_t g_current_parsing_port = PORT_UART2; -..\Core\Src\cmd_router.c: 7 warnings, 0 errors -compiling stm32f1xx_it.c... -compiling multi_uart_router.c... -..\Core\Src\multi_uart_router.c(273): warning: #188-D: enumerated type mixed with another type - for (port_id_t i = 0; i < PORT_COUNT; i++) { -..\Core\Src\multi_uart_router.c(354): warning: #188-D: enumerated type mixed with another type - for (port_id_t i = 0; i < PORT_COUNT; i++) { -..\Core\Src\multi_uart_router.c(158): warning: #177-D: function "rx_ring_pop" was declared but never referenced - static uint16_t rx_ring_pop(uart_rx_ring_t *ring, uint8_t *byte) -..\Core\Src\multi_uart_router.c: 3 warnings, 0 errors -compiling stm32f1xx_hal_msp.c... +..\Core\Src\cmd_router.c: 8 warnings, 0 errors +compiling relay_control.c... compiling uart3_protocol_discriminator.c... ../Core/Inc/uart3_protocol_discriminator.h(150): warning: #1-D: last line of file ends without a newline #endif @@ -100,29 +105,48 @@ compiling uart3_protocol_discriminator.c... ..\Core\Src\uart3_protocol_discriminator.c(58): warning: #177-D: function "check_scan_timeout" was declared but never referenced static bool check_scan_timeout(uint32_t current_tick) ..\Core\Src\uart3_protocol_discriminator.c: 14 warnings, 0 errors -compiling relay_control.c... -compiling uart2_print.c... -compiling stm32f1xx_hal_rcc_ex.c... -compiling stm32f1xx_hal_gpio_ex.c... +compiling stm32f1xx_hal_spi.c... compiling stm32f1xx_hal.c... -compiling stm32f1xx_hal_gpio.c... +compiling multi_uart_router.c... +..\Core\Src\multi_uart_router.c(273): warning: #188-D: enumerated type mixed with another type + for (port_id_t i = 0; i < PORT_COUNT; i++) { +..\Core\Src\multi_uart_router.c(354): warning: #188-D: enumerated type mixed with another type + for (port_id_t i = 0; i < PORT_COUNT; i++) { +..\Core\Src\multi_uart_router.c(158): warning: #177-D: function "rx_ring_pop" was declared but never referenced + static uint16_t rx_ring_pop(uart_rx_ring_t *ring, uint8_t *byte) +..\Core\Src\multi_uart_router.c: 3 warnings, 0 errors +compiling stm32f1xx_hal_gpio_ex.c... compiling uart3_passthrough.c... ../Core/Inc/uart3_passthrough.h(207): warning: #1-D: last line of file ends without a newline #endif ../Core/Inc/uart3_smart_router_config.h(143): warning: #1-D: last line of file ends without a newline #endif -..\Core\Src\uart3_passthrough.c(269): warning: #1-D: last line of file ends without a newline +..\Core\Src\uart3_passthrough.c(273): warning: #1-D: last line of file ends without a newline } ..\Core\Src\uart3_passthrough.c: 3 warnings, 0 errors +compiling tim.c... compiling stm32f1xx_hal_rcc.c... -compiling stm32f1xx_hal_spi.c... -compiling stm32f1xx_hal_flash_ex.c... -compiling stm32f1xx_hal_tim.c... +compiling stm32f1xx_hal_rcc_ex.c... compiling stm32f1xx_hal_cortex.c... compiling stm32f1xx_hal_flash.c... -compiling stm32f1xx_hal_exti.c... compiling stm32f1xx_hal_pwr.c... compiling stm32f1xx_hal_dma.c... +compiling stm32f1xx_hal_flash_ex.c... +compiling stm32f1xx_hal_gpio.c... +compiling stm32f1xx_hal_exti.c... +compiling stm32f1xx_hal_tim_ex.c... +compiling stm32f1xx_hal_tim.c... +compiling user_main.c... +compiling wiz_interface.c... +..\User\wiz_interface\wiz_interface.c(201): warning: #870-D: invalid multibyte character sequence + printf(" -> [WIZ] 硬件复位通过!说? TIM2 定时器工作完全正常!\r\n"); +..\User\wiz_interface\wiz_interface.c: 1 warning, 0 errors +compiling multicast.c... +compiling w5500.c... +compiling socket.c... +compiling stm32f1xx_hal_uart.c... +compiling wizchip_conf.c... +compiling dhcp.c... compiling system_stm32f1xx.c... compiling rf433.c... ..\Driver_RF433\Src\rf433.c(209): warning: #188-D: enumerated type mixed with another type @@ -135,12 +159,17 @@ compiling rf433.c... static bool rf433_response_command_check(rf433_request_cmd_t cmd, uint8_t *buffer, uint8_t length) ..\Driver_RF433\Src\rf433.c: 4 warnings, 0 errors compiling rf433_hal.c... -compiling stm32f1xx_hal_tim_ex.c... -compiling stm32f1xx_hal_uart.c... +compiling wiz_platform.c... +compiling loopback.c... +..\User\Loopback\loopback.c(249): warning: #9-D: nested comment is not allowed + /* :只在数据前加一? [NET] 标识,直接透传 */ +..\User\Loopback\loopback.c(256): warning: #223-D: function "memcpy" declared implicitly + memcpy(tx_buf + tag_len, buf, size); +..\User\Loopback\loopback.c: 2 warnings, 0 errors linking... -Program Size: Code=23672 RO-data=572 RW-data=192 ZI-data=6520 +Program Size: Code=32896 RO-data=936 RW-data=392 ZI-data=9480 FromELF: creating hex file... -"project\project.axf" - 0 Error(s), 33 Warning(s). +"project\project.axf" - 0 Error(s), 40 Warning(s).

Software Packages used:

@@ -164,7 +193,7 @@ Package Vendor: Keil * Component: ARM::CMSIS:CORE@6.1.1 Include file: CMSIS/Core/Include/tz_context.h -Build Time Elapsed: 00:00:17 +Build Time Elapsed: 00:00:22 diff --git a/MDK-ARM/project/project.hex b/MDK-ARM/project/project.hex index 6a81db6..fec26f7 100644 --- a/MDK-ARM/project/project.hex +++ b/MDK-ARM/project/project.hex @@ -1,8 +1,8 @@ :020000040800F2 -:10000000381A00200501000811300008D129000825 -:10001000192D0008750D0008B1400008000000000F -:10002000000000000000000000000000593500083A -:10003000BD14000800000000113400085B35000802 +:10000000902600200501000841360008F530000860 +:1000100091340008890C0008F53F0008000000003A +:100020000000000000000000000000004D38000843 +:1000300015110008000000005F3600084F38000866 :100040001F0100081F0100081F0100081F01000810 :100050001F0100081F0100081F0100081F01000800 :100060001F0100081F0100081F0100081F010008F0 @@ -10,1522 +10,2116 @@ :100080001F0100081F0100081F0100081F010008D0 :100090001F0100081F0100081F0100081F010008C0 :1000A0001F0100081F0100081F0100081F010008B0 -:1000B0001F0100081F0100081F0100081F010008A0 +:1000B000C53800081F0100081F0100081F010008C3 :1000C0001F0100081F0100081F0100081F01000890 -:1000D0001F0100088140000891400008A14000086D +:1000D0001F010008C53F0008D53F0008E53F0008A4 :1000E0001F0100081F0100081F010008DFF810D0E1 -:1000F00000F0C8FB00480047C14D0008AFF3008086 -:10010000381A00200648804706480047FEE7FEE709 +:1000F00000F076FB0048004719540008AFF3008079 +:10010000902600200648804706480047FEE7FEE7A5 :10011000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7B7 -:10012000CD350008ED000008202A04DB203A21FA32 +:10012000C1380008ED000008202A04DB203A21FA3B :1001300002F00021704721FA02F3D040C2F1200200 -:10014000914008431946704700487047585E0008C0 +:100140009140084319467047004870476082000894 :1001500010B50446FFF7F8FF0068005D00F00100ED :1001600010BD40EA01039B0703D009E008C9121F34 :1001700008C0042AFAD203E011F8013B00F8013B61 :10018000521EF9D27047D2B201E000F8012B491E8D :10019000FBD270470022F6E710B513460A46044624 :1001A0001946FFF7F0FF204610BD421C10F8011B56 -:1001B0000029FBD1801A704710B5002200E0521CC4 -:1001C000835C8C5CA34201D1002BF8D1D8B2E1B2A0 -:1001D000401A10BD30B505460020034600E05B1C08 -:1001E000934205D2EC5CC85C201A01D1002CF6D1F8 -:1001F00030BD00000FB400B58DB010A909900B9070 -:1002000000914FF0FF300A9000200C9005480690B6 -:10021000054807906A4609A80F9900F015F90DB036 -:100220005DF814FB65040008830400082DE9FF5FF6 -:100230001D464FF0FF3BD5E9014691465F464FF022 -:100240000008A9697F1C01988847296A8246884767 -:100250000028F6D1BAF1FF3F0CD024F4C064002E80 -:1002600019DD600614D5BAF12B0F09D0BAF12D0FA4 -:100270000ED103E0584604B0BDE8F09F44F480641A -:10028000A9697F1C01988847761E8246002E02DDF0 -:10029000BAF1300F03D0B9F1000F26D032E0A969CE -:1002A000761E44F400747F1C019888478246002E15 -:1002B00005DDBAF1780F06D0BAF1580F03D0B9F1C5 -:1002C000000F10D01EE0B9F1000F02D0B9F1100FED -:1002D00018D1A969761E24F400747F1C0198884700 -:1002E0008246102002E0082000E00A20814609E052 -:1002F00008FB0908A969761E44F400747F1C019864 -:1003000088478246002E05DD4946504600F088F8B1 -:100310000028EDDAE96901988847A00502D46FF05A -:100320000100A8E7E00725D1600613D5600502D5D6 -:10033000C8F1000000E0404629680A1D2A600968EB -:10034000220501D5087015E0220701D5088011E0CB -:1003500008600FE02868011D29600068210502D5AA -:1003600080F8008006E0210702D5A0F8008001E0B7 -:10037000C0F8008038467EE770B5064603F0FAFE06 -:10038000046805460A220021304600F08BF82C60F4 -:1003900070BD30B50B46014600202022012409E043 -:1003A00021FA02F59D4205D303FA02F5491B04FA2E -:1003B00002F52844151EA2F10102F1DC30BD2DE941 -:1003C000F05F0546002092469B46884606468146D9 -:1003D00040241BE02846414647462246FFF7A4FE3C -:1003E00053465A46C01A914110D311461846224628 -:1003F00000F05AFA2D1A67EB01084F4622460120F9 -:10040000002100F051FA17EB00094E41201EA4F123 -:100410000104DFDC484631462A464346BDE8F09FEA -:100420003A2800D2303820F02002412A01D3A2F12C -:100430003700884201D34FF0FF3070470268114403 -:100440001378016018467047D1600449516104492E -:10045000116200211161114600F048BA3D04000804 -:1004600051010008426842B1016811F8013B23B113 -:10047000521EC0E90012184670470121C160881E53 -:10048000704742685AB1C368016843B983688B42B8 -:1004900005D0491E521CC0E90012002070474FF0E1 -:1004A000FF3070472DE9F04791460F4680460446DD -:1004B000002614F8015B2DB1FFF746FE0068405D91 -:1004C000C007F6D12B2D02D02D2D18D0641E4A4620 -:1004D0003946204600F0A2FB27B13968A14201D17C -:1004E000C7F8008071054FF002040BD54042002888 -:1004F00003DD03F03FFE0460A007BDE8F08746F48B -:100500008066E4E70028F8DA03F034FE04606FF058 -:100510000040F2E72DE9FE4F804681EA0300C00F5C -:100520000C46009021F0004123F00045B8EB02009A -:10053000A94105D24046214690461C460B4602463C -:1005400023F00040104347D0270DC7F30A00C3F340 -:100550000A510290401A019040286BDAC3F313004D -:1005600040F4801B0098924620B10023D2EB030A8E -:1005700063EB0B0B01985946C0F14002504600F066 -:1005800093F906460D4650465946019A00F09BF9EC -:1005900010EB08006141002487EA115284EAE773F6 -:1005A0001A4340D0009A62B3019A012A4FEA0752D7 -:1005B00015DC001B61EB02014FF0004202EA07521A -:1005C000CDE90042001C41F5801132462B4600F077 -:1005D00083FB03B0BDE8F08F40462146F9E7001BDE -:1005E00061EB0201001C41F5801300185B412018EB -:1005F000A2F5001747EB030140EAD570B6196D412B -:1006000011E06D084FEA360645EAC0754FEA075219 -:10061000001B61EB0201001C41F5801149084FEA03 -:1006200030000019514132462B4603B0BDE8F04F6F -:1006300000F043BB0098012240000023D0EB0202EF -:1006400063EBE073009821464FEAE074B8EB0000DA -:1006500061EB0401E9E783F000435BE781F00041CF -:1006600058E72DE9FE4F81EA030404F0004421F02D -:10067000004100944FF0000B23F0004350EA0104C6 -:100680005ED052EA03045BD0C3F30A54C1F30A55A7 -:100690002C44A4F2F3340194A0FB0254C1F31301DF -:1006A00041F48011C3F3130343F4801301FB0244AC -:1006B00000FB034E840A970A44EA815447EA8357B1 -:1006C000A4FB076802958D0A05FB07854FEA932C6A -:1006D00004FB0C542705029D4FEA065847EA1637DB -:1006E000B5EB08056EEB070C870E920E47EA8117F3 -:1006F00042EA8312A7FB0201B6EB0B0164EB000494 -:100700002B0D43EA0C335E1844EB1C50DA4651467D -:10071000E7FB0201C5F313044FEA0B3343EA14531A -:100720004FEA0432019C43EA0603A4F10C0402944C -:10073000009CCDE900B400F0CFFA03B0BDE8F08F23 -:1007400000200146F9E72DE9F04D81EA030404F0A9 -:10075000004B21F0004514464FF0000A23F0004101 -:1007600050EA050220D054EA01021DD0C5F30A5711 -:100770000246C5F31303C1F31300C1F30A5640F454 -:10078000801543F48013A7EB0608101BD64608F229 -:10079000FD3873EB050002D308F1010801E092185F -:1007A0005B41B8F1000F03DA00200146BDE8F08D8F -:1007B00000204FF48011064684460EE0171B73EBB1 -:1007C000050705D3121B63EB050306434CEA010C36 -:1007D00049084FEA300092185B4150EA0107EDD119 -:1007E00052EA030012D082EA040083EA05010843BA -:1007F00005D0101BAB4106D20122002306E00022E7 -:100800004FF0004302E06FF0010253101AEB0600B4 -:100810004CEB085110EB0A0041EB0B01BDE8F04D29 -:1008200000F04BBAC1F30A52C1F3130140F2FF3397 -:1008300041F480119A4202DA00200146704740F2EA -:1008400033439A42A2F2334202DC5242FFF76CBCBD -:1008500000F02AB830B5041E71F1000404DB4FF03B -:100860000044404264EB0101141E73F1000405DBF7 -:100870001C464FF00043524263EB0403994208BF09 -:10088000904230BD064C074D06E0E06840F00103A1 -:1008900094E8070098471034AC42F6D3FFF72AFCDF -:1008A000945E0008B45E0008202A04DB203A00FAB7 -:1008B00002F1002070479140C2F1200320FA03F3B7 -:1008C000194390407047202A06DBCB17203A41FAA3 -:1008D00002F043EAE07306E041FA02F3D040C2F1CD -:1008E0002002914008431946704700002DE9F34F5C -:1008F0008BB04FF0000801F10C000C464FF0010BDB -:1009000046460DF1080A019062690121019890475D -:10091000051E2DD0252D2CD0216A8847C0B16269D3 -:10092000012101989047216A88470028F7D1411E8C -:1009300062690198904700E0761CA1690B9888478E -:10094000216A88470028F7D1E1690B988847DBE7DF -:10095000A1690B9888470746A84201D1761CD3E7C6 -:10096000E1690B9888477F1C02D1B8F1000F6FD066 -:1009700047E1002762693D463946019890472A2899 -:1009800004D162690121019890470125DFF888921E -:100990006269012101989047A0F130010A290AD229 -:1009A0004F45E5DC07EB870100EB4107303FDFD423 -:1009B00045F01005ECE7E90601D46FF000476C281C -:1009C0000AD04C2814D0682815D06A280DD0742875 -:1009D0001CD07A281AD01DE0626901210198904745 -:1009E0006C2802D045F0040514E045F002050DE046 -:1009F00045F020050AE062690121019890476828C6 -:100A000002D045F0080505E045F400656269012162 -:100A100001989047C4E9015765283DD019DC582852 -:100A20007AD00CDC452837D004DC252826D0412894 -:100A300031D131E046282FD047282CD12CE05B283B -:100A400077D0612828D063287CD0642823D15AE04D -:100A5000D1E06F2848D008DC66281DD067281BD05D -:100A6000692821D06E2816D127E0702845D0732838 -:100A700068D0752847D078280DD14DE0A1690B9832 -:100A80008847054625283FF469AFE1690B988847F8 -:100A90006D1C3FF46AAFB4E023466A466FF0010074 -:100AA0000B99AFF300809FE045F040006060A8071D -:100AB00023464FF0000236D43EE0E8077FF447AF0C -:100AC0002068011D21600068290501D506701BE71B -:100AD000290701D5068017E7A90703D5F117C0E953 -:100AE000006111E706600FE745F040006060A8076D -:100AF00023464FF0080216D41EE040F60E0125EA08 -:100B00000100606016E045F040006060A8072346E1 -:100B10004FF00A0207D40FE045F040006060A807DC -:100B200008D5234610226FF001000B99AFF3008027 -:100B30005AE007E0234610226FF001000B99FFF7FF -:100B400075FB51E04FF000094F464B46632802D039 -:100B50005B2807D041E02079C00601D40120A060C5 -:100B600001273AE062690121019890475E2805D18A -:100B70004FF001096269494601989047216939B9E6 -:100B800000210A46534643F82120491C0829FADB74 -:100B9000B0B3216969B9C11700EBD16253110AEBF7 -:100BA000830122F01F02821A01200B689040034348 -:100BB0000B6062690121019890475D28E8D1B9F185 -:100BC000000F09D00020514651F82020D24341F8AF -:100BD0002020401C0828F7DB02AB224600976FF06C -:100BE00001000B99AFF3008000280CDA401C08D1FB -:100BF000BBF1000F05D04FF0FF300DB0BDE8F08F16 -:100C0000FFE74046F9E7E90701D108F1010806448A -:100C10004FF0000B78E60000CCCCCC0C2DE9F05F57 -:100C200082460078002715468B460AF10104B94632 -:100C3000302801D09DB113E014F8010B012778286A -:100C400003D0582801D045B10AE00DB1102D07D1CD -:100C50000027102514F8010B02E0082500E00A2502 -:100C60000026B0460EE005FB080005FB06F1012753 -:100C700001EB10461FFA80F8B6F5803F00D3B94665 -:100C800014F8010B2946FFF7CBFB0028EBDABBF188 -:100C9000000F05D00FB1641E00E05446CBF80040B1 -:100CA000B9F1000F06D003F065FA02210160C81EF9 -:100CB000BDE8F09F48EA0640FAE710B5141E73F14C -:100CC000000408DA401C41F1000192185B411A430C -:100CD00001D120F0010010BD2DE9F04D92469B4658 -:100CE00011B1B1FA81F202E0B0FA80F220329046FE -:100CF000FFF7DAFD04460F4640EA0A0041EA0B011D -:100D000053465A46084313D0114653EA010019D0FE -:100D1000C8F140025046FFF707FA05460E46504616 -:100D200059464246FFF7C0FD084305D0012004E0C4 -:100D300020463946BDE8F08D0020054346EAE076BE -:100D40002C4337430A986305E40AA0EB080000220D -:100D5000FD0A44EA47540A3002D500200146E9E77B -:100D6000010510196941DDE9084500196941BDE82F -:100D7000F04DA2E700BFFEE770B504460D46B5484A -:100D80000078C8B1B3480078052815D0B148406D47 -:100D9000281AB0F57A7F0FD3AE48806D401CAD495C -:100DA0008865ADA002F03CFC04F056FA242C02D178 -:100DB0000120A849087070BDA6484565007806283E -:100DC0000BD2DFE800F0030B57A4E2F9242C04D186 -:100DD00004F042FA01209F49087037E12C2C0CD115 -:100DE00000219C4890F84E20401C815402209949D3 -:100DF0000870002081F84E003BE02A2C0ED1002123 -:100E0000944890F84E20401C815404209149087069 -:100E1000002081F84E0081F852002AE0204603F0BD -:100E2000A9FFF8B18B4890F84E00072812DA8948DC -:100E300090F84E1090F84E00401C864A82F84E0002 -:100E4000501C4454401E90F84F006040114681F8F9 -:100E50004F000EE07F48806D401C7E49886504F09D -:100E6000FBF906E07B48806D401C7A49886504F0F8 -:100E7000F3F9EBE02C2C0CD10021764890F84E20B1 -:100E800009308154032073490870002081F84E0016 -:100E90003CE02A2C0ED100216E4890F84E200930FB -:100EA000815404206B490870002081F84E0081F8BD -:100EB00052002BE0204603F070FF00B3654890F825 -:100EC0004E001F2813DA634890F84E1090F84E0039 -:100ED000401C604A82F84E0002F10900445409386F -:100EE00090F84F006040114681F84F000EE05948DD -:100EF000806D401C5749886504F0AEF906E05548FE -:100F0000806D401C5349886504F0A6F99EE02A2CA8 -:100F10000ED100214F4890F84E20293081540420F2 -:100F20004C490870002081F84E0081F852002BE0F7 -:100F3000204603F032FF00B3464890F84E001F28C9 -:100F400013DA444890F84E1090F84E00401C414A85 -:100F500082F84E0002F129004454293890F84F00DD -:100F60006040114681F84F000EE03A48806D401C09 -:100F70003849886504F070F906E03648806D401CF9 -:100F80003449886504F068F960E00A2C42D1314A9E -:100F900092F8511092F8500003F07BFE2D4981F831 -:100FA0004900084690F84F1080F84A1090F8490020 -:100FB000FF2802D1012101E040E00021254880F80E -:100FC0004D1090F84D0030B9224890F8491090F833 -:100FD0004A0081420BD101211E4880F84C100520A7 -:100FE0001C4908700846C06D401CC86525E01948BA -:100FF000806D401C17498865084690F84A2090F893 -:1010000049101DA002F00CFB26A004F06BFD04F0BB -:1010100023F912E00D2C10D00E4890F8520002284F -:101020000BDA0C4890F8521090F85200401C094A14 -:1010300082F8520002F15000445407E004F00CF929 -:10104000242C02D101200349087000BF00BF00BF5B -:10105000B1E60000340200205B434D445D2054693A -:101060006D656F75742C2072657365742070617284 -:101070007365720D0A0000005B434D445D204368B8 -:1010800065636B73756D206572726F723A2072655D -:1010900063763D253032582063616C633D253032E4 -:1010A000580D0A004353000010B504460948007863 -:1010B00005280CD1074890F84C0040B12CB14D22C6 -:1010C0000449491C2046FFF74CF8012010BD0020C0 -:1010D000FCE700003402002010B560210448FFF74F -:1010E00059F800200249087002A002F099FA10BDD8 -:1010F000340200205B434D445D20496E6974204FEB -:101100004B0D0A00014908607047000008000020EC -:1011100001490870704700000C00002010B5074816 -:101120000078052809D1054890F84C0028B10348FB -:10113000401C03F0FFFE04F08FF810BD34020020C5 -:1011400010B5002018E01A4901EB001108700021C9 -:10115000174A02EB00125160154A02EB001291602F -:10116000134A02EB00121173124A22F81010124AAD -:1011700042F82010411CC8B20328E4DB00200F49CC -:1011800008600F4908600F49086001200E49087087 -:101190000E48FFF7B7FF02F067FD01F04DFF0CA00E -:1011A00002F03EFA032114A002F03AFA10BD00004A -:1011B000A0030020720000205005002064000020E1 -:1011C000680000206C00002070000020B54A000874 -:1011D0005B524F555445525D205541525433205374 -:1011E0006D61727420526F7574657220656E6162F4 -:1011F0006C65640D0A0000005B524F555445525D0A -:1012000020496E6974204F4B2C20256420706F722A -:10121000747320726567697374657265640D0A0082 -:1012200070B5A2B000F084FB05460024204601F012 -:10123000BBFD0646002E30DD4B4804702046FFF70C -:1012400067FF12E09DF88410204603F0F7FB294663 -:101250009DF88400FFF790FD444800EB041080687F -:10126000401C424901EB0411886021A9204601F08D -:1012700009FE0028E6DC0020FFF716FF60B12046DB -:1012800003F052FC3A480068401C394908600120CC -:10129000364901EB0411087300BF2AE029469DF886 -:1012A000840002F00BFB044604B3012C02D0022C94 -:1012B0001DD10FE00220FFF72BFF29469DF8840087 -:1012C000FFF75AFD9DF884302AA22FA1002000F0DC -:1012D0009DF80CE09DF8840001F0BAFF9DF8843081 -:1012E0002BA229A1002000F091F800E000BF00BF70 -:1012F00000BF21A9022001F0C5FD0028CEDC284650 -:1013000002F082FA88B1694601A802F06BFC58B17C -:10131000BDF8001001A801F0F3FEBDF8003021A2D5 -:1013200019A1012000F072F800BF02F003F80024B8 -:1013300013E0012C00D10EE0224830F81400002800 -:1013400008DD214850F82400281A322802D320460C -:1013500003F0EAFB00BF601CC4B2032CE9DBFFF71B -:10136000DDFE22B070BD000070000020A003002050 -:1013700068000020434D4420627974653A2030783B -:10138000253032580000000055415254330000000F -:1013900050545820627974653A203078253032589C -:1013A00000000000504153535448524F5547483AAB -:1013B0002025642062797465732071756575656494 -:1013C00000000000720000205005002010B5002031 -:1013D0000349087003F06CFC02A002F09BF910BDF9 -:1013E000780000205B4C4F475D20446562756720A4 -:1013F0006C6F672073797374656D20696E697469A9 -:10140000616C697A65640D0A000000000FB470B564 -:10141000C2B005460E4622480078854203DA42B043 -:1014200070BC5DF814FB304603F05EFC00B9F6E7D3 -:1014300000240EB1304600E01AA01C4A009052F879 -:101440002530C4F5807102AA101919A202F042FEDB -:101450000444FF2C0DDA49A80190C4F5807102AA5A -:101460001019019B489A02F04FFE0444002001909D -:1014700000BF002C0CDDFF2C0ADC0D222046641C72 -:1014800002A90A54FF2C03DC0A222046641C0A54D9 -:10149000002C03DDA1B202A802F0E2F800BFBEE713 -:1014A000780000204D41494E00000000645D0008B6 -:1014B0005B25735D5B25735D20000000704772B68D -:1014C00000BFFEE70146002291F82100022808D063 -:1014D0000420886300BF002081F8200000BF0120A5 -:1014E00070470868006820F00E000B6818600868F4 -:1014F000006820F001000B68186091F8403001206E -:101500009840CB6B5860012081F8210000BF00207B -:1015100081F8200000BF1046E2E7000070B50446E5 -:10152000002594F82100022803D00420A06301259F -:1015300048E02068006820F00E00216808602068FC -:10154000006820F00100216808601F492068884277 -:1015500001D1012026E01C4914312068884201D1C4 -:1015600010201FE0184928312068884201D18015D9 -:1015700018E015493C312068884201D1801411E0FF -:10158000114950312068884202D14FF4803009E07F -:101590000D4964312068884202D14FF4801001E087 -:1015A0004FF08070084908394860012084F8210014 -:1015B00000BF002084F8200000BF606B10B12046FF -:1015C000616B8847284670BD0800024070B504462C -:1015D00000F0AEF906462546681C10B104480078B4 -:1015E000054400BF00F0A4F9801BA842FAD370BDE7 -:1015F000840000202DE9F8470346002294466EE15E -:101600004FF0010808FA02F4D1F8008008EA04005B -:10161000A0427DD1DFF8DCA2D1F80480A8EB0A0952 -:10162000D0453AD014DCB8F1030F50D009DCB8F142 -:10163000000F31D0B8F1010F1CD0B8F1020F49D121 -:1016400020E0B8F1110F18D0B8F1120F42D11EE00E -:10165000B9F5881F25D006DCB9F5803F20D0B9F553 -:10166000801F37D11AE0B9F5001F18D0B9F5041F53 -:1016700030D117E0D1F80CC02DE0D1F80C8008F182 -:10168000040C28E0D1F80C8008F1080C23E0D1F814 -:101690000C8008F10C0C1EE000BF00BF00BF00BFB3 -:1016A00000BF00BFD1F80880B8F1000F02D14FF0A1 -:1016B000040C0BE0D1F80880B8F1010F03D14FF012 -:1016C000080C1C6102E04FF0080C5C6103E04FF075 -:1016D000000C00E000BF00BFFF2801D8984601E0E1 -:1016E00003F104084646FF2802D84FEA820803E0C7 -:1016F000A2F108084FEA88084746D6F800804FF064 -:101700000F0909FA07F928EA09080CFA07F900E0B5 -:1017100088E048EA0908C6F80080D1F8048008F09B -:101720008058B8F1805F7DD100BFDFF8CC81D8F858 -:10173000188048F00108DFF8C091C9F81880C84641 -:10174000D8F8188008F00108CDF8008000BF00BF6D -:101750004FEAB9384FEA920958F829504FEA82788F -:101760004FEA18794FF00F0808FA09F825EA08053A -:10177000DFF88881434502D14FF0000816E0DFF81A -:101780008081434502D14FF001080FE0DFF87481FA -:10179000434502D14FF0020808E0DFF86C81434571 -:1017A00002D14FF0030801E04FF004084FEA8279BC -:1017B0004FEA197908FA09F848EA0505DFF84C817B -:1017C0004FEA920948F82950D1F8048008F48018AB -:1017D000B8F5801F0AD1DFF83881D8F8008048EAD0 -:1017E0000008DFF82C91C9F8008009E0DFF82081BB -:1017F000D8F8008028EA0008DFF81491C9F80080C2 -:10180000D1F8048008F40018B8F5001F10D1DFF8F3 -:10181000008108F10408D8F8008048EA0008DFF8E1 -:10182000F09000E05AE009F10409C9F800800DE0E9 -:10183000DFF8DC8008F10408D8F8008028EA000806 -:10184000DFF8CC9009F10409C9F80080D1F80480D0 -:1018500008F40038B8F5003F0ED1DFF8B480A8F1E5 -:101860000408D8F8008048EA0008DFF8A490A9F13D -:101870000409C9F800800DE0DFF89480A8F104089D -:10188000D8F8008028EA0008DFF88490A9F104095C -:10189000C9F80080D1F8048008F48038B8F5803F9A -:1018A0000ED1DFF86C80A8F10808D8F8008048EA6B -:1018B0000008DFF85C90A9F10809C9F800800DE084 -:1018C000DFF84C80A8F10808D8F8008028EA000862 -:1018D000DFF83C90A9F10809C9F80080521CD1F842 -:1018E000008028FA02F8B8F1000F7FF489AEBDE855 -:1018F000F8870000000011100010024000080140AD -:10190000000C01400010014000140140080001409B -:1019100008040140024693680B400BB1012000E02F -:10192000002070470AB1016101E00B0403617047B8 -:1019300001480068704700007C00002003480068F0 -:101940000349097808440149086070477C00002079 -:101950008400002010B50848006840F010000649D7 -:101960000860032000F0A8F80F2000F007F800F04E -:101970002BF8002010BD00000020024070B5044686 -:101980000E4800784FF47A71B1FBF0F00C49096809 -:10199000B1FBF0F5284600F09DFC08B1012070BDB8 -:1019A000102C07D200222146501E00F047F80548AF -:1019B000046001E00120F2E70020F0E7840000204D -:1019C000880000208000002008B500BF1148806911 -:1019D00040F001000F4988610846806900F001006D -:1019E000009000BF00BF00BF0846C06940F08050B3 -:1019F000C8610846C06900F08050009000BF00BF79 -:101A000000BF0549486820F0E06040F00070486081 -:101A100000BF08BD0010024000000140014608461A -:101A2000002809DB00F01F0301229A4043099B00B4 -:101A300003F1E023C3F8002100BF70472DE9F05FF8 -:101A400080460D461646002702F078FB07463946C9 -:101A50002A46334601F00700C0F1070ABAF1040F25 -:101A600002D94FF0040A01E0C0F1070AD14600F1A3 -:101A7000040ABAF1070F02D24FF0000A01E0A0F108 -:101A8000030AD4464FF0010A0AFA09FAAAF1010A38 -:101A90000AEA020A0AFA0CFA4FF0010B0BFA0CFBE5 -:101AA000ABF1010B0BEA030B4AEA0B04214640465B -:101AB00002F04CFBBDE8F09F00BF00F00702064BB0 -:101AC00019684FF6FF031940044B0B4343EA022108 -:101AD000014B196000BF70470CED00E00000FA05F3 -:101AE00070B504460D460CB9012070BD5A48006817 -:101AF00000F00700A8420ED25748006820F0070007 -:101B00002843554908600846006800F00700A842CD -:101B100001D00120E9E7207800F0020002281DD161 -:101B2000207800F00400042805D14C48406840F4B7 -:101B3000E0604A494860207800F00800082805D194 -:101B40004648406840F46050444948604348406813 -:101B500020F0F000A168084340494860207800F078 -:101B6000010078B36068012806D13C48006800F4A1 -:101B7000003090B90120B8E76068022806D13748E4 -:101B8000006800F0007040B90120AEE733480068FB -:101B900000F0020008B90120A7E73048406820F0B3 -:101BA0000300616808432D494860FFF7C1FE0646FF -:101BB00009E0FFF7BDFE801B41F28831884202D95F -:101BC000032092E707E02548406800F00C006168B8 -:101BD000B0EB810FEDD12048006800F00700A8426B -:101BE0000ED91D48006820F0070028431A490860F4 -:101BF0000846006800F00700A84201D0012074E701 -:101C0000207800F00400042807D11448406820F42C -:101C1000E060E168084311494860207800F008005E -:101C2000082808D10D48406820F46050216940EA36 -:101C3000C1000A49486000F03FF808494968C1F30B -:101C40000311074A515CC84006490860064800680D -:101C5000FFF794FE002048E70020024000100240F9 -:101C60009E5D000888000020800000200148006878 -:101C7000704700008800002000B5FFF7F7FF044917 -:101C80004968C1F30221034A515CC84000BD00000D -:101C900000100240AE5D000800B5FFF7E7FF044901 -:101CA0004968C1F3C221034A515CC84000BD00002D -:101CB00000100240AE5D000870B500210022002433 -:101CC00000230020134D696801F00C05F5B1042DC7 -:101CD00002D0082D19D101E00F4819E00F4DC1F3D2 -:101CE0008346AB5D01F4803555B10A4D6D68C5F38F -:101CF00040450B4E725D084D5D43B5FBF2F402E0CA -:101D0000084D03FB05F4204602E000BF024800BF77 -:101D100000BF70BD0010024000127A008C5D000808 -:101D20009C5D000800093D00F8B504460CB901208F -:101D3000F8BD207800F00100002878D0F84840680D -:101D400000F00C0004280CD0F548406800F00C00AE -:101D5000082811D1F248406800F48030B0F5803F87 -:101D60000AD1EF48006800F4003000285FD06068B6 -:101D700000285CD10120DBE700BF6068B0F5803F40 -:101D800006D1E748006840F48030E549086028E063 -:101D9000606858B9E248006820F48030E049086083 -:101DA0000846006820F4802008601AE06068B0F5FA -:101DB000A02F0BD1DA48006840F48020D849086091 -:101DC0000846006840F4803008600AE0D4480068A3 -:101DD00020F48030D24908600846006820F4802052 -:101DE000086000BF606888B1FFF7A2FD054606E005 -:101DF000FFF79EFD401B642801D9032098E7C848DF -:101E0000006800F400300028F2D010E0FFF790FDE9 -:101E1000054606E0FFF78CFD401B642801D903202E -:101E200086E7BF48006800F400300028F2D120782F -:101E300000F00200022857D1B948406800F00C00B9 -:101E400050B1B748406800F00C00082818D1B448D9 -:101E5000406800F4803098B9B148006800F0020092 -:101E600020B12069012801D0012061E7AC48006859 -:101E700020F0F800616940EAC100A949086033E038 -:101E80002069E8B10120A7490860FFF751FD054628 -:101E900006E0FFF74DFD401B022801D9032047E76C -:101EA0009F48006800F002000028F2D09C480068BB -:101EB00020F0F800616940EAC1009949086013E028 -:101EC000002098490860FFF733FD054606E0FFF75C -:101ED0002FFD401B022801D9032029E79048006804 -:101EE00000F002000028F2D1207800F00800082855 -:101EF0002DD1A069B8B101208B490860FFF718FD0A -:101F0000054606E0FFF714FD401B022801D9032017 -:101F10000EE78348406A00F002000028F2D001205A -:101F200001F078FA13E000207F490860FFF700FD18 -:101F3000054606E0FFF7FCFC401B022801D9032000 -:101F4000F6E67748406A00F002000028F2D12078D7 -:101F500000F00400042873D100277148C06900F024 -:101F6000805070B900BF6E48C06940F080506C4925 -:101F7000C8610846C06900F08050009000BF00BFF3 -:101F800001276A48006800F48070B0B967480068AB -:101F900040F4807065490860FFF7CAFC054606E01A -:101FA000FFF7C6FC401B642801D90320C0E65F4848 -:101FB000006800F480700028F2D000BFE0680128BB -:101FC00006D15748006A40F001005549086227E0F1 -:101FD000E06858B95248006A20F001005049086290 -:101FE0000846006A20F00400086219E0E06805284D -:101FF0000BD14B48006A40F004004949086208468A -:10200000006A40F0010008620AE04548006A20F0DA -:102010000100434908620846006A20F00400086293 -:1020200000BFE068A0B1FFF783FC054609E0FFF7B9 -:102030007FFC401B41F28831884202D9032077E6B9 -:1020400022E03748006A00F002000028EFD012E0DA -:10205000FFF76EFC054608E0FFF76AFC401B41F203 -:102060008831884201D9032062E62D48006A00F0D9 -:1020700002000028F0D1012F05D12948C06920F0C5 -:1020800080502749C86100BFE069C8B32448406850 -:1020900000F00C00082860D0E069022848D1002038 -:1020A00020490866FFF744FC054606E0FFF740FCC0 -:1020B000401B022801D903203AE61948006800F0C5 -:1020C00000700028F2D1206AB0F5803F07D1144893 -:1020D000406820F40030A168084311494860D4E901 -:1020E000080108430E49496821F4741108430C495A -:1020F000486001200B490866FFF71AFC054607E017 -:102100003DE0FFF715FC401B022801D903200FE634 -:102110000348006800F000700028F2D02FE00000B3 -:102120000010024000004242800442420070004021 -:10213000002014490866FFF7FBFB054606E0FFF7A1 -:10214000F7FB401B022801D90320F1E50E48006887 -:1021500000F000700028F2D111E0E069012800D100 -:10216000E6E50948466806F48031206A814204D1D8 -:1021700006F47011606A814201D00120D8E5002088 -:10218000D6E50000000042420010024010B50446AF -:102190000CB9012010BD606A38B96068B0F5827F63 -:1021A00000D105E00021E16102E0002121616161CF -:1021B0000021A16294F8510028B9002084F8500051 -:1021C000204600F043F8022084F85100206800689F -:1021D00020F0400021680860A08800F48270218906 -:1021E00001F404410843A18901F400610843217C02 -:1021F00001F002010843217D01F001010843218B18 -:1022000001F400710843217F01F0380108432021C7 -:10221000095D01F080010843218D01F4005108435C -:10222000216808600421A06901EA10402168486023 -:102230002068C06920F400602168C86100206065E2 -:10224000012084F851000020A4E7000010B586B0FA -:102250000446002002900390049005901A492068DB -:1022600088422FD100BF1948C06940F48040174907 -:10227000C8610846C06900F48040019000BF00BFFB -:1022800000BF0846806940F0080088610846806900 -:1022900000F00800019000BF00BF4FF42040029002 -:1022A000022003900320059002A90948FFF7A2F934 -:1022B0004FF48040029000200390049002A904484B -:1022C000FFF798F906B010BD00380040001002403A -:1022D000000C014070B504462546681EB0F1807FB1 -:1022E00001D301200FE0681E4FF0E02148610F216B -:1022F0004FF0FF3001F02AFF00204FF0E02188610D -:1023000007200861002070BD704770472DE9F84F25 -:102310000446206805682068C668206847694FF051 -:102320000009CA4605F00F09B9F1000F0AD105F0FE -:10233000200038B106F0200020B1204601F00AFD4F -:10234000BDE8F88FB9F1000F7BD007F0010018B994 -:1023500006F49070002874D005F0010030B106F446 -:10236000807018B1606C40F00100606405F00400FA -:1023700030B107F0010018B1606C40F002006064F9 -:1023800005F0020030B107F0010018B1606C40F0B8 -:102390000400606405F0080048B106F0200010B9A0 -:1023A00007F0010018B1606C40F008006064606CD8 -:1023B000002845D005F0200028B106F0200010B11B -:1023C000204601F0C7FC20684069C0F3801A606CA9 -:1023D00000F0080010B9BAF1000F2CD0204601F02F -:1023E00073FC2068406900F0400000B300BF00BFEC -:1023F0002168143151E8001F21F040002168143198 -:1024000041E80002002AF3D100BFE06B50B17748E9 -:10241000E16B4863E06BFFF781F888B1E06B416BDB -:1024200088470DE02046FFF770FF09E009E02046ED -:10243000FFF76BFF04E02046FFF767FF00206064B2 -:102440007EE7206B012877D105F01000002873D0BB -:1024500006F010000028FAD000BF0020009020688D -:102460000068009020684068009000BF00BF2068AE -:10247000406900F0400000285FD0E06B00684068D1 -:102480001FFA80F8B8F1000F55D0A08D404552DDFD -:10249000A4F82E80E06B8069202843D000BF00BFE5 -:1024A00021680C3151E8001F21F4807021680C3143 -:1024B00041E80002002AF3D100BF00BF00BF21683D -:1024C000143151E8001F21F001002168143141E866 -:1024D0000002002AF3D100BF00BF00BF2168143101 -:1024E00051E8001F21F040002168143141E800024A -:1024F000002AF3D100BF202084F84200002020638E -:1025000000BF00BF21680C3151E8001F21F010000E -:1025100021680C3141E80002002AF3D100BFE06BD2 -:10252000FEF7D0FF02206063A08DE28D801A81B299 -:102530002046FFF7E9FE03E742E0A08DE18D401A57 -:102540001FFA80F8E08DD0B3B8F1000F37D000BF8C -:1025500000BF21680C3151E8001F21F49070216800 -:102560000C3141E80002002AF3D100BF00BF00BFD8 -:102570002168143151E8001F21F001002168143155 -:1025800041E80002002AF3D100BF202084F8420075 -:102590000020206300BF00BF21680C3151E8001FFC -:1025A00021F0100021680C3141E80002002AF3D12B -:1025B00000BF0220606341462046FFF7A5FEBFE64C -:1025C00005F0800030B106F0800018B1204601F01F -:1025D000DDFCB5E605F0400030B106F0400018B172 -:1025E000204601F0A7FBABE600BFA9E6B53C00081A -:1025F00010B504460CB9012010BDA06900B100E07F -:1026000000BF94F8410028B9002084F8400020461B -:1026100000F02AF8242084F841002068C06820F4E3 -:1026200000502168C860204601F012FC2068006953 -:1026300020F49040216808612068406920F02A0059 -:10264000216848612068C06840F400502168C86073 -:1026500000206064202084F8410084F842000020BB -:10266000606300BFC8E7000010B586B004460020D4 -:10267000029003900490059059492068884237D110 -:1026800000BF5848806940F4804056498861084638 -:10269000806900F48040019000BF00BF00BF084681 -:1026A000806940F0040088610846806900F00400F9 -:1026B000019000BF00BF4815029002200390032044 -:1026C000059002A94848FEF795FF4FF480600290FC -:1026D00000200390049002A94348FEF78BFF0022DC -:1026E00011462520FFF7AAF92520FFF797F975E095 -:1026F0003E492068884236D100BF3A48C06940F45C -:1027000000303849C8610846C06900F400300190C3 -:1027100000BF00BF00BF0846806940F00400886128 -:102720000846806900F00400019000BF00BF04204B -:102730000290022003900320059002A92A48FEF788 -:1027400059FF0820029000200390049002A9264817 -:10275000FEF750FF002201212620FFF76FF9262007 -:10276000FFF75CF93AE022492068884236D100BF81 -:102770001C48C06940F480201A49C8610846C069F5 -:1027800000F48020019000BF00BF00BF08468069B0 -:1027900040F0080088610846806900F00800019058 -:1027A00000BF00BF0815029002200390032005908F -:1027B00002A91048FEF71EFF4FF4006002900020AF -:1027C0000390049002A90B48FEF714FF0022022197 -:1027D0002720FFF733F92720FFF720F906B010BDB7 -:1027E0000038014000100240000801400044004051 -:1027F00000480040000C014070B504460D461646E6 -:1028000094F8420020280BD105B10EB9012070BD0B -:102810000020206332462946204601F097FBF6E768 -:102820000220F4E770B5044616492068884208D1B2 -:102830001548057802F064FE2946002000F06EFA83 -:102840001FE01249206888420DD1FFF771F8054654 -:1028500029460F480078FEF78FFA01220C490D48EF -:10286000FFF7CAFF0DE00C492068884209D10B48E8 -:102870000178022000F052FA012208490848FFF7C7 -:10288000BBFF70BD00380140AC0000200044004098 -:1028900004000020A40100200048004005000020A2 -:1028A000EC0100202DE9F84F04460E4617469946E4 -:1028B0004FF0000A94F8410020284AD106B117B918 -:1028C0000120BDE8F88F00206064212084F84100D9 -:1028D000FFF72EF88246A784E784A068B0F5805FF2 -:1028E00004D1206910B90025B04602E035464FF00A -:1028F00000081BE05346002280212046CDF80090BE -:1029000001F074FB08B10320DBE745B9B8F800001B -:10291000C0F308002168486008F1020803E0287845 -:10292000216848606D1CE08C401EE084E08C00282B -:10293000E0D15346002240212046CDF8009001F01E -:1029400055FB08B10320BCE7202084F8410000209B -:10295000B7E70220B5E710B5034693F841002028F9 -:1029600013D101B10AB9012010BD19629A84DA8429 -:1029700000205864212083F841001868C06840F0A6 -:1029800080001C68E0600020EEE70220ECE7000019 -:1029900010B504460B492068884203D1002000F09E -:1029A000FBFA0DE008492068884202D100F0F6FEEB -:1029B00006E006492068884202D1022000F0ECFAC5 -:1029C00010BD0000003801400044004000480040B5 -:1029D00000BFFEE70021002009E0074A02EB0012D9 -:1029E00092791AB1012282400A43D1B2401C0428D4 -:1029F000F3DB084670470000100000200146042960 -:102A000001DB00207047024800EB01108079F9E7F4 -:102A10001000002070B5002512E0114800EB0514ED -:102A2000A1882068FEF776FF08B1012000E00020B1 -:102A3000A071A07920720120E0710020E0606D1C7F -:102A4000042DEADB002007490860012006490870D0 -:102A5000FFF7C0FF0446214604A000F0E1FD70BD71 -:102A60001000002050000020540000205B494F5D02 -:102A700020496E6974204F4B2C20696E697469611E -:102A80006C207374617465733A2030782530325845 -:102A90000D0A00002DE9F041FEF74AFF07461C48E9 -:102AA0000068381A0A2801D2BDE8F081184807608A -:102AB000002628E0174800EB0614A1882068FEF7DE -:102AC00029FF08B1012000E000200546207AA84235 -:102AD00003D00020E071257214E0E079032803DAC6 -:102AE000E079401CE0710DE0A079A8420AD0A57100 -:102AF000E068401CE0600848007818B1F0B2294650 -:102B000002F08CFF761C042ED4DB00BFCCE7000063 -:102B100050000020100000205400002000B585B0B7 -:102B20000020019002900390049000BF3C4880690F -:102B300040F010003A4988610846806900F01000B2 -:102B4000009000BF00BF00BF0846806940F0200031 -:102B500088610846806900F02000009000BF00BF37 -:102B600000BF0846806940F004008861084680691B -:102B700000F00400009000BF00BF00BF084680695D -:102B800040F0080088610846806900F00800009065 -:102B900000BF00BF012280212248FEF7C3FE0122B0 -:102BA00005212148FEF7BEFE002241F208211E4801 -:102BB000FEF7B8FE00224FF401411A48FEF7B2FEBC -:102BC00048F2801001900120029000200390022022 -:102BD000049001A91348FEF70DFD41F20D2001906C -:102BE00001200290002003900220049001A90E48C9 -:102BF000FEF700FD022001900020029001200390CA -:102C000001A90948FEF7F6FCF0200190002002908F -:102C1000039001A90448FEF7EDFC05B000BD0000DB -:102C20000010024000080140000C014010B50E48A1 -:102C30000E4908604FF48270486000210B488160A3 -:102C4000C160016141614FF4007181610021C16186 -:102C50000162416281620A21C162FFF797FA08B1FD -:102C6000FEF72DFC10BD00000038004004010020DC -:102C700010B50B480B4908604FF41650486000210E -:102C800008488160C16001610C21416100218161BE -:102C9000C161FFF7ADFC08B1FEF711FC10BD0000EB -:102CA000003801405C01002010B50B480B4908605A -:102CB0004FF4E1304860002108488160C160016143 -:102CC0000C21416100218161C161FFF791FC08B1D4 -:102CD000FEF7F5FB10BD000000440040A4010020F9 -:102CE00010B50B480B4908604FF41650486000219E -:102CF00008488160C16001610C214161002181614E -:102D0000C161FFF775FC08B1FEF7D9FB10BD0000EB -:102D100000480040EC01002000BFFEE770B505460A -:102D20000E46032D00DB70BD6B2068430E4901EB9E -:102D3000800494F8A80100B9F5E7314604F10800D1 -:102D400002F02BFE40B9D4F8A401401CC4F8A40141 -:102D500006A0616800F064FCD4F89C01401CC4F833 -:102D60009C0100BFDFE700006C0600205B4D554171 -:102D700052545D202573205258206F766572666C20 -:102D80006F770D0A000000000146032901DB03A054 -:102D90007047044850F82100FAE70000554E4B4EAA -:102DA0004F574E00805D00080146032901DB0020DB -:102DB000704772B66B204843034B03EB8000B0F8BA -:102DC0008C2062B61046F3E76C060020014603290A -:102DD00001DB0020704772B66B204843054B03EBC4 -:102DE0008000B0F89401C0F5807082B262B61046DF -:102DF000F0E700006C06002070B5002520E06B2095 -:102E00006843134901EB8004124850F82500206004 -:102E1000114850F82500606004F1080002F0B5FD8B -:102E200004F1900002F037FF002004F5CE7404F89E -:102E3000020C20606060A06001202073681CC5B295 -:102E4000032DDCDB032105A000F0EAFB70BD0000D0 -:102E50006C060020745D0008805D00085B4D5541E4 -:102E600052545D20496E6974204F4B2C20256420FC -:102E7000706F72747320636F6E66696775726564D4 -:102E80000D0A000010B502460B46032A00DA0BB902 -:102E9000002010BD6B205043104C04EB800000F16B -:102EA000080172B6B1F8840010B962B60020F0E7EC -:102EB000B1F88200085C187031F8824F601CC417AA -:102EC00000EB5464E411A0EBC4140C804888401E4D -:102ED0004880823962B60120DBE700006C060020E2 -:102EE0002DE9F04105460F469046032D03DA17B150 -:102EF000B8F1000F01D1BDE8F081012D04D14146A8 -:102F0000384600F0ADFBF6E76B2068430C4901EB57 -:102F1000800494F8A80100B9EDE74246394604F16F -:102F2000900002F0C3FE0646002E07DDD4F8A00193 -:102F30003044C4F8A001284602F070FE00BFDAE772 -:102F40006C06002070B505460C4604B970BD2046DD -:102F5000FDF72BF986B2324621462846FFF7C0FF1F -:102F600000BFF3E770B5002411E06B20604309490E -:102F700001EB800595F8A80100B906E0012C00D10D -:102F800003E0204602F04AFE00BF601CC4B2032CDE -:102F9000EBDB70BD6C060020F8B50546032D00DBA9 -:102FA000F8BD012D02D100F0F9FBF9E76B20684371 -:102FB000164901EB800606F19004002772B6002046 -:102FC00084F80601B4F80401002816DDB4F8020103 -:102FD000205C009004F581742188481CC11700EB27 -:102FE00011610912A0EB012121806088401E6080E0 -:102FF00001202071A4F58174012762B627B1012256 -:1030000069463068FFF7A7FC00BFC9E76C060020DF -:1030100000BFFEE710B50020FFF7D8FE002806DD50 -:103020000448B0F81A02002801DD012010BD00207C -:10303000FCE70000700B002010B54FF40C711F4826 -:10304000FDF7A8F800201BE0002100EB400202EB96 -:1030500080121A4B03EB420282F8841000EB40020C -:1030600002EB801203EB4202A2F8801000EB400258 -:1030700002EB801203EB4202A2F88210411CC8B29C -:103080000428E1DB00200D4981F8180281F81902BB -:10309000A1F81A02C1F81C0200210848C0F8201249 -:1030A000C0F82412C0F828120120044981F82C022B -:1030B000410203A000F0B4FA10BD0000700B002024 -:1030C0005B5054585D20506173737468726F7567FC -:1030D0006820656E67696E6520696E697469616CE8 -:1030E000697A65642C206275666665722073697AF8 -:1030F000653A2025642062797465730D0A0000002A -:103100002DE9F04781460F46B9F1000F00D017B9FD -:103110000020BDE8F087374C0026B04656E094F812 -:103120001812481CC11700EB91718910A0EB8101A6 -:1031300001F0FF0A94F81902504510D1B4F81A02B0 -:1031400000280CDD4FF409700059401C4FF4097140 -:1031500008513A46414628A000F062FA38E094F857 -:10316000180200EB400101EB801004EB400595F8DC -:10317000840018B1B5F88000802813DB95F884002E -:1031800048B184F818A294F8180200EB400101EB52 -:10319000801004EB4005002025F8800F6880012096 -:1031A0002871803D19F8081035F8802F2888401CB8 -:1031B00025F88009A954B4F81A02401CA4F81A0290 -:1031C000701C86B208F101001FFA80F8B845A6DB32 -:1031D00000BF002E0CDD4FF408700059401C4FF466 -:1031E00008710851B4F81A2231460DA000F018FAFF -:1031F00030468EE7700B00205B5054585D204275BE -:1032000066666572206F766572666C6F7720617492 -:1032100020627974652025642F25640D0A00000062 -:103220005B5054585D205075736865642025642098 -:10323000627974657320746F206275666665722C9E -:103240002070656E64696E673A2025640D0A00007F -:103250002DE9F04107462C4C94F82C0210B90020BF -:10326000BDE8F08194F81812481CC11700EB917169 -:103270008910A0EB8101CEB294F81902B04211D1AD -:10328000B4F81A0200280DDD4FF409700059401CF3 -:103290004FF409710851084601591CA000F0C0F90B -:1032A0000020DDE794F8180200EB400101EB8010EC -:1032B00004EB400595F8840018B1B5F8800080282B -:1032C00013DB95F8840048B184F8186294F818026A -:1032D00000EB400101EB801004EB4005002025F8D5 -:1032E000800F688001202871803D35F8801F288874 -:1032F000401C25F880096F54B4F81A02401CA4F849 -:103300001A020120ACE70000700B00205B505458FB -:103310005D204275666665722066756C6C2C206F48 -:10332000766572666C6F7720636F756E743A2025D0 -:10333000640D0A0038B52B4C94F82C0200B938BD46 -:10334000B4F81A0200B9FAE7FFF764FE38B94FF48F -:103350000A700059401C4FF40A710851EFE794F8C5 -:10336000190200EB400101EB801004EB400595F8D9 -:10337000840028B1B5F88200B5F88010884211DBCE -:1033800095F8840010B1002085F8840094F8191293 -:10339000481CC11700EB91718910A0EB810184F8E2 -:1033A0001912CCE735F8821F2888401C25F88209BD -:1033B000685C0090012269460020FFF791FDB4F897 -:1033C0001A02401EA4F81A02D4F81C02401CC4F8C9 -:1033D0001C02B4F81A229DF8001003A000F020F996 -:1033E00000BFACE7700B00205B5054585D20536564 -:1033F0006E742062797465203078253032582C2024 -:1034000070656E64696E673A2025640D0A000000DD -:103410007047000008B508490968C9084FF47A7276 -:10342000B1FBF2F14143009100BF00BF00994A1E79 -:1034300000920029F9D108BD8800002010B50022B3 -:103440004FF400410548FEF76DFA0020044908706A -:103450000449086004A000F0E3F810BD0008014032 -:103460005C000020600000205B52454C41595D200B -:10347000496E6974204F4B2C2073746174653D4F05 -:1034800046460D0A0000000070B50446FEF750FAEB -:10349000054615480068281A642803D213A000F0D6 -:1034A000BFF870BD1A480078A04208D10CB119A02D -:1034B00000E019A0014619A000F0B2F8F1E7224699 -:1034C0004FF400411D48FEF72DFA114804700648DC -:1034D00005600CB10FA000E00FA0014618A000F09D -:1034E0009FF800BFDDE70000600000205B52454C04 -:1034F00041595D20546F67676C6520746F6F20665B -:103500006173742C2069676E6F7265640D0A000028 -:103510005C0000204F4E00004F4646005B52454C79 -:1035200041595D20537461746520756E6368616EE6 -:103530006765643A2025730D0A0000000008014009 -:103540005B52454C41595D2052656C6179202D3E9E -:103550002025730D0A000000704710B502F02CFB07 -:10356000FEF7ECF910BD00B58FB0282105A8FCF7D7 -:1035700011FE14216846FCF70DFE012005900004A1 -:103580000690002007900120099002200C90C103B2 -:103590000D914FF4E0110E9105A8FEF7C5FB08B19F -:1035A000FDF78DFF0F200090022001900020029077 -:1035B0004FF4806003900020049002216846FEF7DB -:1035C0008FFA08B1FDF77BFF0FB000BD7047000018 -:1035D00010B500200849A1F80001A1F80201A1F8E6 -:1035E000040181F80601A1F808014FF4807103A0DD -:1035F00000F016F810BD0000940200205B55415207 -:1036000054325D20496E6974204F4B2C20627566E0 -:103610006665722073697A653A2025640D0A000098 -:103620000FB410B5A2B0249818B922B010BC5DF840 -:1036300014FB25A80190802102A8019B249A00F088 -:1036400063FD044600200190002C06DB802C00DB8B -:103650007F24A1B202A800F003F800BFE5E7000054 -:10366000F8B504460D4605B104B9F8BD002600279B -:1036700072B6002029E02549B1F80411FF2907DDC1 -:103680002249B1F80811491C204AA2F808111EE08D -:10369000215C1E4AB2F800211C4B99541A46B2F81C -:1036A0000021511CCA1701EB12621212A1EB022277 -:1036B000A3F800211946B1F80411491C1A46A2F8D2 -:1036C0000411711C8EB2411C88B2A842D3DB00BF2A -:1036D000002E08DD0D4890F8060120B901200B49A5 -:1036E00081F80601012762B66FB172B60748B0F8DB -:1036F00002010649085C009062B60122694604484E -:10370000FFF729F900BF00BFAFE7000094020020D7 -:10371000A401002070B5044604B970BD2046FCF732 -:1037200044FD85B229462046FFF79AFF00BFF4E723 -:1037300038B572B6174890F8060118B91548B0F8B0 -:10374000040108B962B638BD1248B0F8024101461A -:10375000B1F80211481CC11700EB11610912A0EB6E -:1037600001210C4AA2F802111046B0F80401401ED3 -:103770001146A1F80401012081F806010846005D08 -:10378000009062B6012269460348FFF7E4F800BFE3 -:10379000D9E7000094020020A401002038B50025DC -:1037A00072B60020164981F806010846B0F80401F7 -:1037B00000281CDD0846B0F80241B1F80211481C8F -:1037C000C11700EB11610912A0EB01210C4AA2F80C -:1037D00002111046B0F80401401E1146A1F8040180 -:1037E000012081F806010846005D0090012562B6BF -:1037F00025B1012269460348FFF7ADF838BD000046 -:1038000094020020A401002070B50546134C2078D6 -:1038100001280FD1B4F88C0000280BDDA068281A0D -:10382000322807D30420207032210DA0FFF7F8FEC4 -:10383000012070BD207802280DD16068281AC828A0 -:1038400009D300202070A4F88C00C82110A0FFF735 -:10385000E7FE0120EDE70020EBE70000A00D0020CF -:103860005B50524F544F5D205343414E2074696D5D -:10387000656F757420E2869220504153535448522C -:103880004F55474820282564206D73290D0A0000F4 -:103890005B50524F544F5D20434D445F4D4F444564 -:1038A0002074696D656F757420E2869220494E49D7 -:1038B0005420282564206D73290D0A0070B5054633 -:1038C0000E46484C207880B1207801280DD0207811 -:1038D00002280AD02078042807D000202070A4F8FD -:1038E0008C00217840A0FFF79BFE21782A464CA04F -:1038F000FFF796FE207830B101281DD002284CD069 -:10390000042867D15FE06660242D09D10220207071 -:103910000020A4F88C004DA0FFF782FE012070BDAE -:1039200001202070A6602573A4F88C00294651A0C0 -:10393000FFF776FE0020F2E76660242D13D1B4F87D -:103940008C00002808DD04202070B4F88C1053A0EF -:10395000FFF766FE0220E2E7022020705CA0FFF77E -:103960005FFE0120DBE70A2D08D104202070B4F8A7 -:103970008C1064A0FFF754FE0220D0E7B4F88C004E -:10398000802808D234F88C1F2088401C24F88C0929 -:1039900004F10C0045540020C1E766600A2D08D1EF -:1039A00000202070A4F88C0063A0FFF739FE0120EE -:1039B000B5E70D2D01D10120B1E7294668A0FFF739 -:1039C0002FFE0120ABE7294670A0FFF729FE6660B5 -:1039D0000220A4E70020207078A0FFF721FE00203D -:1039E0009DE70000A00D00205B50524F544F5D201A -:1039F00050726F746F636F6C2073746174652069AB -:103A00006E76616C696428307825303258292C2014 -:103A1000726573657420746F20494E49540D0A0015 -:103A20005B50524F544F5D20466565644279746522 -:103A30002073746174653D25642C20627974653D42 -:103A40003078253032580D0A000000005B50524F8C -:103A5000544F5D20494E495420E2869220434D4404 -:103A60005F4D4F44452028676F7420272427290D78 -:103A70000A0000005B50524F544F5D20494E49549C -:103A800020E28692205343414E2028627974653AA1 -:103A900020307825303258290D0A00005B50524FF3 -:103AA000544F5D205343414E20E2869220504153B3 -:103AB000535448524F5547482028676F7420272495 -:103AC000272C202564206279746573290D0A000073 -:103AD0005B50524F544F5D205343414E20E286923B -:103AE00020434D445F4D4F44452028656D707479E7 -:103AF000207363616E2C20676F7420272427290DA3 -:103B00000A0000005B50524F544F5D205343414E1A -:103B100020E2869220504153535448524F55474813 -:103B20002028676F7420275C6E272C202564206274 -:103B300079746573290D0A005B50524F544F5D2014 -:103B4000434D445F4D4F444520E2869220494E4903 -:103B5000542028676F74205C6E290D0A0000000055 -:103B60005B50524F544F5D20434D445F4D4F444591 -:103B700020E2869220434D442028627974653A20E1 -:103B8000307825303258290D0A0000005B50524F22 -:103B9000544F5D20504153535448524F554748208D -:103BA000E28692205054582028627974653A203079 -:103BB0007825303258290D0A000000005B50524F22 -:103BC000544F5D20556E6B6E6F776E207374617409 -:103BD000652C20726573657420746F20494E4954BA -:103BE0000D0A000070B506460D46104C20780428DA -:103BF00019D1B4F88C00002815DD56B14DB1B4F8D8 -:103C00008C2004F10C013046FCF7ABFAB4F88C00C0 -:103C100028800020A4F88C002070298804A0FFF7D9 -:103C2000FFFC012070BD0020FCE70000A00D00207B -:103C30005B50524F544F5D204765745061737374ED -:103C400068726F756768446174613A202564206208 -:103C5000797465732C206261636B20746F20494E08 -:103C600049540D0A0000000010B594210448FCF7E7 -:103C700091FA00200249087002A0FFF7D1FC10BDA4 -:103C8000A00D00205B50524F544F5D2050726F7456 -:103C90006F636F6C206469736372696D696E6174C0 -:103CA0006F7220696E697469616C697A65640D0A66 -:103CB0000000000070B505466C6A0020E085E084D5 -:103CC0002046FEF722FB70BD00BF00BF02680C3229 -:103CD00052E8002F22F4907102680C3242E800137F -:103CE000002BF3D100BF00BF00BF0268143252E8BE -:103CF000002F22F001010268143242E80013002B69 -:103D0000F3D100BF016B01290ED100BF00BF0268D3 -:103D10000C3252E8002F22F0100102680C3242E807 -:103D20000013002BF3D100BF202180F842100021A6 -:103D30000163704710B504462068C06820F0400059 -:103D40002168C860202084F841002046FEF720FE4C -:103D5000002010BDF8B5044694F84200222875D121 -:103D6000A068B0F5805F0CD1206950B90025A66A23 -:103D700020684068C0F308003080A06A801CA06200 -:103D800015E0A56A0026A068B0F5805F03D0A068A2 -:103D900028B9206918B920684068287004E02068B4 -:103DA000406800F07F002870A06A401CA062E08D8F -:103DB000401E80B2E085002846D12068C06820F00F -:103DC00020002168C8602068C06820F480702168E5 -:103DD000C8602068406920F0010021684861202007 -:103DE00084F8420000206063206B012826D1002067 -:103DF000206300BF00BF21680C3151E8001F21F093 -:103E0000100021680C3141E80002002AF3D100BF04 -:103E10002068006800F0100010280AD100BF0020C0 -:103E2000009020680068009020684068009000BF03 -:103E300000BFA18D2046FEF767FA02E02046FEF79C -:103E4000F1FC0020F8BD01E00020FBE70220F9E7CB -:103E500070B504462168096921F44051E2681143B4 -:103E6000226811612269A1681143626941EA020571 -:103E70002168C96841F20C62914329432268D160EC -:103E80002168496921F44071A26911432268516196 -:103E90002D4A2168914202D1FDF7FEFE01E0FDF7B7 -:103EA000EBFE00EBC00101EB001162689200B1FB78 -:103EB000F2F100EBC00202EB001263689B00B2FB60 -:103EC000F3F26423B2FBF3F202EBC20303EB021240 -:103ED000A1EB8201322202EB01116422B1FBF2F16B -:103EE00001F0F00100EBC00202EB001263689B00DE -:103EF000B2FBF3F26423B2FBF3F201EB021200EB2C -:103F0000C00101EB001163689B00B1FBF3F100EB12 -:103F1000C00303EB00136668B600B3FBF6F3642638 -:103F2000B3FBF6F303EBC30606EB0313A1EB83012C -:103F3000322303EB01116423B1FBF3F101F00F0114 -:103F400011442268916070BD0038014010B50346ED -:103F500099629A85DA8500205864222083F842000D -:103F6000186928B11868C06840F480701C68E06067 -:103F70001868406940F001001C6860611868C068FA -:103F800040F020001C68E060002010BD014691F860 -:103F90004100212828D18868B0F5805F0BD10869DD -:103FA00048B90A6A1088C0F308000B685860086AAC -:103FB000801C086205E00B6A581C086218780B68C0 -:103FC0005860C88C401E80B2C88458B90868C06860 -:103FD00020F080000B68D8600868C06840F040009E -:103FE0000B68D860002070470220FCE72DE9F04103 -:103FF00004460D4617469846069E34E0701C88B36A -:104000002EB1FDF795FCA0EB0800B0422BD900BF04 -:1040100000BF21680C3151E8001F21F4D0702168E5 -:104020000C3141E80002002AF3D100BF00BF00BFFD -:104030002168143151E8001F21F00100216814317A -:1040400041E80002002AF3D100BF202084F841009B -:1040500084F8420000BF002084F8400000BF032025 -:10406000BDE8F081FFE7206800682840A84201D140 -:10407000012000E00020B842C0D00020F0E700009E -:1040800010B50248FEF742F910BD00005C010020A7 -:1040900010B50248FEF73AF910BD0000A401002057 -:1040A00010B50248FEF732F910BD0000EC01002007 -:1040B00000BFFEE70FB4054B10B503A9044A0298F0 -:1040C00000F02EF910BC5DF814FB0000FD4B000859 -:1040D000B80000200FB47CB50C0009AD01D0611E02 -:1040E00000E00021CDE90001064B6A462946089808 -:1040F00000F016F9002C02D0009A002111707CBC4F -:104100005DF814FB274A00087CB50C001D461646D6 -:10411000014601D0601E00E00020CDE90010064BF2 -:104120006A462946304600F0FBF8002C02D0009A7F -:10413000002111707CBD0000274A00080248006879 -:10414000C0F30220704700000CED00E010B500281D -:1041500004DB0A07130E054A135406E00A07140E7F -:10416000034A00F00F031B1FD45410BD00E400E00D -:1041700018ED00E000487047BC00002002E008C8CD -:10418000121F08C1002AFAD170477047002001E0D1 -:1041900001C1121F002AFBD1704700002DE9FF5F0B -:1041A00082B00021DDE90430020DDDF840B00343A8 -:1041B00018D044F61050A2F2FF3242431514119861 -:1041C00001281FD0A5EB0B00401C5FEA000A4FF04E -:1041D00000064E4FDFF83891B046504615D5CAF16B -:1041E000000413E0119801244AA3012801D16FEAC9 -:1041F0000B010298119AC0E90031C0E9024206B0F1 -:10420000BDE8F09FCBF10000DFE704460021404A03 -:10421000491842EB0450CDE9001012E0E00707D046 -:1042200032463B4640464946FCF71BFA80468946E3 -:1042300032463B4610461946FCF713FA06460F462F -:104240006410002CEAD1DDE90401DDE90023BAF1B4 -:10425000000F06DAFCF705FA42464B46FCF701FA76 -:1042600005E0FCF770FA42464B46FCF76CFA044650 -:104270000E460022284BFCF7EDFA03D84FF0FF3032 -:10428000014607E00022254B20463146FCF742F963 -:10429000FCF7C8FA102409E0002C0ADB0A220023EC -:1042A000FCF78DF8039B30321A55641E50EA010268 -:1042B000F2D1641C039AC4F111031444119A012A27 -:1042C00003D0012208430DD10AE0084304D00020A6 -:1042D0004FF0110B119072E7A3EB0B056D1E0DE073 -:1042E0005B4504DD4FF0000205F1010504E003DA4F -:1042F0004FF00002A5F10105002AECD002981199B7 -:10430000C0E90231C0E9004579E70000000014402F -:104310000000F03F300000000000F0430000E03FEC -:104320002DE9FF4F95B09A46884606460025EEE1F6 -:10433000252877D100242746F94A0121039400E07B -:10434000044316F8013F203B01FA03F01042F7D175 -:1043500030782A2811D06FF02F033078A0F1300286 -:10436000092A16D8039A44F0020402EB820203EBF6 -:1043700042021044761C0390EFE758F8042B039296 -:10438000002A03DA504244F40054039044F002043B -:10439000761C30782E2816D116F8010F44F004044C -:1043A0002A280DD06FF02F023078A0F13003092BAE -:1043B00009D807EB870302EB4303C718761CF3E722 -:1043C00058F8047B761C30786C280FD006DC4C281B -:1043D00017D068280DD06A2814D104E0742810D0B2 -:1043E0007A280FD10DE044F400140AE044F480145C -:1043F00001E044F440147278824202D104F5801442 -:10440000761C761C307866280BD013DC582877D0C1 -:1044100009DC002875D04528F6D04628F4D0472876 -:104420001AD193E118E0632835D0642879D0652843 -:1044300012D18BE1702873D008DC6728F1D069288D -:104440006FD06E280DD06F2806D1ACE073282CD029 -:10445000752874D0782853D05246179990476D1C10 -:1044600054E1C4F30250022809D003280DD0D8F833 -:10447000001004280DD00D6008F1040846E1D8F8BA -:104480000010EA17C1E90052F6E7D8F800100D80D5 -:10449000F2E70D70F0E718F8041B8DF8001000200B -:1044A0008DF80100EB46012003E058F804BB4FF003 -:1044B000FF3061074FF0000102D40DE009F1010166 -:1044C0008946B9420FDA8145F8DB1BF8091000294B -:1044D000F4D108E009F1010189468142FADB1BF8B9 -:1044E00009100029F6D103985346A0EB090721468D -:1044F0003846179A00F080FA284400EB090507E0D7 -:1045000044E008E10DE01BF8010B52461799904773 -:10451000B9F10109F7D2534621463846179AF2E01D -:1045200039E00A21C4F302524FF0000B0091022A35 -:1045300006D058F8040BC117032A09D00AE023E07B -:1045400008F1070020F00702F2E80201904605E0BA -:1045500000B2C117042A01D140B2C117002906DAFE -:104560000A460021404261EB02012D2202E02205B1 -:1045700004D52B228DF80420012203E0E20701D0AC -:104580002022F7E7914657E00A2100E010214FF082 -:10459000000B00910BE010214FF0000B44F00404DD -:1045A0000827009103E008204FF0000B0090C4F3AF -:1045B0000252022A05D058F8040B0021032A08D021 -:1045C00008E008F1070020F00702F2E80201904637 -:1045D00003E080B2042A00D1C0B24FF000092207E4 -:1045E0002AD53278702A07D0DDF800C08CF0100C84 -:1045F0005CEA0B0C05D00EE040228DF8042001226D -:1046000008E050EA010306D030238DF804308DF81D -:10461000052002229146009B83F0080353EA0B0316 -:104620000AD150EA010201D1620705D530228DF886 -:1046300004204FF001097F1E3278582A04D039A295 -:104640000C920CAA02920BE03BA2F9E75B46009A9F -:10465000FBF7B5FE0C9B9B5C029A521E02921370F4 -:1046600050EA0102F2D1029804A9081A00F1200BC5 -:10467000600702D524F4803400E001275F4502DDA5 -:10468000A7EB0B0000E0002000EB0B01009003986B -:104690004944401A0390E00306D453462146179A32 -:1046A000039800F0A9F90544002706E001A8524646 -:1046B000C05D179990476D1C7F1C4F45F6DBE003EA -:1046C0000CD553462146179A039800F095F90544F6 -:1046D00004E030205246179990476D1C0099481EFF -:1046E00000900029F5DC08E0029802995246007813 -:1046F000491C0291179990476D1CBBF10001ABF169 -:10470000010BF1DC5BE100F065F90544761C3078C3 -:1047100000287FF40DAE19B02846BDE8F08F0000E8 -:104720000928010030313233343536373839616287 -:10473000636465660000000030313233343536374B -:10474000383941424344454600000000600700D428 -:10475000062708F1070020F00700F0E80223804652 -:1047600003F0004C5FEA0C0001D097A009E020059F -:1047700001D596A005E0E00701D095A001E0AFF2D9 -:104780004C001390307823F0004365280CD006DCF1 -:10479000452809D046281DD047287FD13BE0662810 -:1047A00018D067287AD136E00021112F01DB1120C3 -:1047B00000E0781CCDE9000104A90CA8FFF7EEFC8D -:1047C000DDE90D010C9A4FF0000B07F10109109281 -:1047D00000914EE04FF000400097CDE9011004A990 -:1047E0000CA8FFF7DBFCDDE90D020C9B0F994FF0E5 -:1047F000000B91461093009211B9791C00EB01094E -:10480000B7EB090003D4C0F1FF3B07F10109A9EBA5 -:104810000700019042E0012F00DA01270021112F4B -:1048200001DD112000E03846CDE9000104A90CA803 -:10483000FFF7B4FCDDE90D010C9A00914FF0000B7D -:10484000B946109221070FD4009A4A4503DA9146DF -:1048500001E0A9F10109B9F1010F05DD109AA9F1F3 -:104860000101515C3029F4D0B84202DA10F1040F92 -:1048700003DA0121CDE9011010E0002803DC8344B4 -:10488000A9EB000102E0411C494500DD8946A0EB8F -:104890000B00401C01904FF000400290200705D40F -:1048A0000198484502DB4FF0FF30019000208DF861 -:1048B0004B0002980DF14B07B0F1004F25D00220BC -:1048C0000C902B200D90029800280CDA40420290A8 -:1048D0002D200D9007E00A210298FBF75AFD303198 -:1048E000029007F8011D0C99481E0C900029F2DC7B -:1048F00002980028EFD1791E0D980870307800F0EA -:10490000200040F0450007F8020D11A8C01BC01D93 -:1049100002901398007800B1012000EB0901019882 -:1049200001EBE071029801440398401A401E039085 -:10493000E00306D453462146179A039800F05CF82A -:1049400005441398007818B15246179990476D1C8A -:10495000E00323D553462146179A039800F04CF8FC -:1049600005441BE0BBF1000F07DB0098584504DD50 -:104970001098179910F80B0001E017993020524653 -:10498000904701980BF1010B401E05F101050190C4 -:1049900004D12E205246179990476D1CB9F10001A1 -:1049A000A9F10109DEDC05E017F8010B5246179961 -:1049B00090476D1C0299481E02900029F4DC534672 -:1049C0002146179A03989EE62D0000002B00000058 -:1049D000200000002DE9F041044600251E46174640 -:1049E000880404D405E039462020B0476D1C641EBD -:1049F000F9D52846BDE8F0812DE9F04104460025AF -:104A00001E469046C80301D5302700E020278804C1 -:104A100004D505E041463846B0476D1C641EF9D503 -:104A20002846BDE8F0814A68002A06D00A68531C6F -:104A30000B6010704868401E4860704770B50446AF -:104A40000D460C4830F8140080280CDA094830F87C -:104A5000141030F81400401C064A22F814000648CE -:104A600000EBC4104554FCF763FF044941F82400EF -:104A700070BD000072000020D0030020500500200F -:104A800010B502460023002003E0145C6340441C80 -:104A9000E0B28842F9DB184610BD10B5024600238B -:104AA000002003E0145C6340441CE0B28842F9DB60 -:104AB000184610BDF8B505460C461448006878B194 -:104AC0002046FBF772FB86B23246214628460F4B42 -:104AD0001B6898470E480068401C0D49086008E0B4 -:104AE00021462846FEF72EFA09480068401C08496E -:104AF00008602846FEF748F90646334605A208A195 -:104B000001200094FCF782FCF8BD00006400002046 -:104B10006C00002054585B25735D3A20257300001B -:104B2000524F5554455200007CB50446274830F892 -:104B3000140000B97CBD2046FEF726F9054629463B -:104B400023A0FEF76DFD002531E0264800EBC410E0 -:104B5000405D01909DF80400202808DB9DF80400CA -:104B60007F2804DA012101A8FEF77AFD1DE09DF8F7 -:104B700004000D2804D102211BA0FEF771FD14E0F2 -:104B80009DF804000A2804D1022118A0FEF768FD50 -:104B90000BE09DF8043016A204216846FFF79AFA4C -:104BA00004216846FEF75CFD00BF681C85B207481B -:104BB00030F81400A842C8DC0FA0FEF7ABFD0020BF -:104BC000024921F8140000BFB4E700007200002081 -:104BD0005B524F555445525D2025732052583A2060 -:104BE00022000000D00300205C7200005C6E000018 -:104BF0005C78253032580000220D0A0013B50C46AF -:104C000001216846FEF72CFD00981CBD10B500225E -:104C100008210248FCF786FE10BD0000000C014090 -:104C200010B5012208210248FCF77CFE10BD0000EF -:104C3000000C014010B500224FF400710148FCF750 -:104C400071FE10BD000C014010B501225102024856 -:104C5000FCF768FE10BD0000000C01400146302941 -:104C600005DB392903DCA1F13000C0B270474129CE -:104C700005DB462903DCA1F13700C0B2F6E7612964 -:104C800005DB662903DCA1F15700C0B2EEE7002086 -:104C9000ECE770B505460C462046FFF7DFFF0646F9 -:104CA0002846FFF7DBFF46EA0010C0B270BD0000E7 -:104CB0000B48007800B17047002009E0002100EBAC -:104CC0000012084B995400EB00121A441174401C56 -:104CD0001028F3DB01200249087000BFEBE7000059 -:104CE000790000205C05002070B505460DB12878DC -:104CF00008B9012070BDFFF7DBFF002414E004EBCE -:104D000004100B49085C70B104EB0411084A8818C0 -:104D10000F222946FBF75EFA28B904EB0410044978 -:104D20000844007CE6E7641C102CE8DB0120E1E786 -:104D30005C050020014609B1087808B901207047D8 -:104D40000020FCE710B504462046FFF7F3FF08B14A -:104D5000002010BD09E0FBF7F7F900682178405CFE -:104D6000202801D00020F4E7641C20780028F2D12C -:104D70000120EEE710B50446FBF7E6F90068005D98 -:104D800000F0100028B9FBF7DFF90068005D20286B -:104D900001D1012010BD0020FCE710B50446FBF74F -:104DA000D3F90068005D00F03E0038B12A2C05D030 -:104DB0000D2C03D00A2C01D0012010BD0020FCE7EF -:104DC000FCF7C8FDFEF7CFFBFDF7A8FEFDF750FF8F -:104DD000FDF72CFFFDF768FFFDF782FFFEF7F8FBFC -:104DE000FDF718FEFCF778F9FEF728FBFEF704F84C -:104DF000FCF7A6F9FCF7EAFA012220492048FDF762 -:104E0000FBFC01221F492048FDF7F6FC002000F0C2 -:104E1000A9FB01221D491E48FDF7EEFC002000F011 -:104E200005FD4FF47A710A2000F026FD002000F005 -:104E3000C9FB00F017FC17A0FFF73CF921A0FFF712 -:104E400039F9294800682949B0FBF1F4214628A026 -:104E5000FFF730F92CA0FFF72DF90DE0FEF768FC05 -:104E6000FDF718FEFCF75AF9FEF77CF8FCF7D8F9C5 -:104E700000F018FD00F006FCF0E700000400002040 -:104E8000A401002005000020EC010020AC0000205F -:104E90005C0100200D0A3D3D3D3D3D3D3D3D3D3D1C -:104EA0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D32 -:104EB0003D3D3D3D3D3D3D3D3D3D3D3D3D3D0D0A85 -:104EC000000000004533322D3433335442482D5313 -:104ED00043204170706C69636174696F6E20537414 -:104EE00061727465640D0A008800002040420F0062 -:104EF00053797374656D20436C6F636B3A2025643E -:104F0000204D487A0D0A00003D3D3D3D3D3D3D3D73 -:104F10003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DC1 -:104F20003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DB1 -:104F30000D0A000070B58CB0044694F84C0008B11E -:104F400060A200E061A294F8490094F8481004F1CE -:104F50002803CDE90102009104F1080221465CA07A -:104F6000FEF75EFB65A12046FBF726F9002835D148 -:104F700004F10800FFF7E6FE38B961A000F0B2FDC9 -:104F800061A0FEF74DFB0CB070BD04F10800FBF70B -:104F9000F3F905460DB1012D18D10DB1012100E045 -:104FA00000210846FEF770FA2B4661A2202104A8D2 -:104FB000FFF790F804A800F0CBFD0DB15EA000E073 -:104FC0005EA001465EA0FEF72BFB06E04CA000F0C1 -:104FD00089FD29465FA0FEF723FB71E066A120460C -:104FE000FBF7EAF8002858D104F10800FFF7A2FE09 -:104FF00028B962A104F10800FBF7DEF8D0B9FDF78B -:10500000E9FC0546C5F3C000C5F38001C5F34002C5 -:1050100005F00103CDE90021029059A2202104A846 -:10502000FFF758F804A800F093FD294657A0FEF7B3 -:10503000F7FA45E004F10800FFF784FE002825D0C8 -:1050400004F10800FBF798F90546012D16DB042D45 -:1050500014DC691EC8B2FDF7D1FC06462B4653A2EC -:10506000202104A80096FFF735F804A800F070FD91 -:105070003246294650A0FEF7D3FA06E020A000F001 -:1050800031FD294651A0FEF7CBFA19E01CA000F033 -:1050900029FD56A0FEF7C4FA12E05EA12046FBF7F8 -:1050A0008BF830B95BA000F053FD5CA0FEF7B8FAB6 -:1050B00006E061A000F016FD214660A0FEF7B0FA00 -:1050C00000BF60E728736B697029000000000000D2 -:1050D0005B434D445D20434D443D25732050313D9D -:1050E00025732050323D25732043533D25303258DF -:1050F0002F253032582025730D0A0000524C000035 -:10510000504152414D0000005B434D445D20496ECB -:1051100076616C696420524C20706172616D3A2036 -:105120006E6F74206E756D657269630D0A00000004 -:10513000524C2C25640000004F4E00004F464600A4 -:105140005B434D445D2052656C6179202D3E2025E6 -:10515000730D0A005B434D445D20496E76616C69B6 -:105160006420524C20706172616D3A2073746174D6 -:10517000653D25640D0A0000444900003000000030 -:1051800044492C2564256425642564005B434D4413 -:105190005D20444920616C6C207374617465733ABE -:1051A000203078253032580D0A00000044492C2563 -:1051B000642C2564000000005B434D445D2044499D -:1051C0002564203D2025640D0A0000005B434D440A -:1051D0005D20496E76616C69642044492063686192 -:1051E0006E6E656C3A2025640D0A00005B434D44E9 -:1051F0005D20496E76616C6964204449207061725B -:10520000616D3A206E6F74206E756D657269630D05 -:105210000A0000004543484F000000005B434D4436 -:105220005D204543484F20726573706F6E73652033 -:1052300073656E740D0A0000434D44005B434D449A -:105240005D20556E6B6E6F776E20636F6D6D616E56 -:10525000643A2025730D0A0010B500200649087035 -:1052600081F84E0081F84F0081F852004D2102482C -:10527000401CFAF78FFF10BD3402002000200349C4 -:10528000086003490860034908607047A0000020D7 -:10529000A4000020A8000020014611B96FF0020010 -:1052A00070470248006808800020F9E7A800002045 -:1052B00030B503460C460BB104B112B96FF00200D1 -:1052C00030BD1448006818B900201080401EF7E770 -:1052D00000201080002115E00F48104D2D68405D22 -:1052E00058540E480068401CC0F309000B4D28605C -:1052F00008480068401E074D28601088401C108038 -:10530000481C81B2A14203DA024800680028E3D1B8 -:105310000020D5E7A800002034120020A4000020BF -:1053200030B502460B4602B113B96FF0020030BD32 -:1053300000211AE00F480068B0F5806F02D34FF0EB -:10534000FF30F4E7505C0C4C0C4D2D6860550B4859 -:105350000068401CC0F30900084C20600548006844 -:10536000401C044C2060481C81B29942E2DB0020C2 -:10537000DDE70000A800002034120020A00000207B -:105380000748006850B106480068401E044908609C -:105390000846006810B901200249087070470000F3 -:1053A000B0000020B400002010B502210D48FCF729 -:1053B000B1FAA0B9FCF7BCFA044607E0FCF7B8FA6A -:1053C000001B642802D36FF0010010BD02210548C4 -:1053D000FCF7A0FA0028F1D00220FCF7F7F8002033 -:1053E000F3E70000000C01400548007810B94FF0C9 -:1053F000FF30704700200249087000BFF9E7000045 -:105400009C00002010B5FFF739FF10BD10B5044611 -:105410002046FFF741FF10BD70B504460D46164605 -:10542000324629462046FFF743FF70BD0848007802 -:1054300010B14FF0FF307047002006490860064960 -:105440000860064908600120014908700020F2E761 -:105450009C000020A0000020A4000020A800002044 -:1054600070B50546FFF7A0FF04460CB1204670BD9D -:1054700035B1012D0FD0022D18D0032D2CD120E0F5 -:10548000002280211C48FCF74DFA002201211B4814 -:10549000FCF748FA23E0012280211748FCF742FA82 -:1054A000002201211548FCF73DFA18E00022802176 -:1054B0001148FCF737FA012211461048FCF732FA7E -:1054C0000DE0012280210C48FCF72CFA0122114644 -:1054D0000A48FCF727FA02E06FF00200C7E700BFB6 -:1054E0000520FCF773F8FFF75FFF04460CB1204678 -:1054F000BDE70020BBE7000000080140000C0140B0 -:1055000008B5094800684068C0B2009001216846AB -:10551000FFF706FF0A2005490860012204490248F6 -:10552000FDF76AF908BD00005C010020B000002012 -:10553000AC00002070B504460D4604B115B96FF0FB -:10554000020070BD4FF6FF732A4621460448FDF75E -:10555000A9F9064616B16FF00100F2E70020F0E766 -:105560005C01002070B505461348007810B14FF07B -:10557000FF3070BDFFF75AFF044614B14FF0FF3003 -:10558000F7E735B90D480E490A68026009790171DB -:1055900004E00A482968016029790171074800F090 -:1055A000F1F804461CB1FFF71FFF2046E1E7012098 -:1055B000014908700020DCE78C0000208D000020ED -:1055C000B65D000870B5054615B94FF0FF3070BDE7 -:1055D00028210F48FAF7DEFD00200D49087081F8F8 -:1055E0002500084629680162297980F824102030B6 -:1055F00000F0C8F804460CB12046E8E7002000F0AF -:10560000EDF804460CB12046E1E70020DFE700009A -:10561000C00000202DE9F04104460D4616461F4605 -:1056200014B10DB106B11FB94FF0FF30BDE8F081E4 -:105630000A2D02DA4FF0FF30F8E72078542802D123 -:105640006078582802D04FF0FF30EFE73B463246F3 -:1056500002A1E01CFAF7CEFD0020E7E725642E2525 -:10566000642E000010B500F05DF804460CB1204631 -:1056700010BD01200249087081F825000020F7E7DD -:10568000C000002010B594B0254890F8250008B956 -:1056900014B010BD2248007820B1012806D002289D -:1056A00036D134E001201E49087035E00020039017 -:1056B00003A904A800F02AFB40B300200290019047 -:1056C000039881B201AB02AA04A8FFF7A3FF044626 -:1056D000DCB913484068401C114948600298886151 -:1056E000019848610846C0690199884202D20C4974 -:1056F0000198C86100F074F9012000F03DF93220F2 -:10570000FBF764FF002000F037F900BF04E003E07E -:1057100002200349087000BF00BF00BFB8E70000C7 -:10572000C000002010B50C48007810B96FF00500DB -:1057300010BD0A48007810B16FF00100F8E7FFF7DC -:1057400061FE044614B14FF0FF30F1E70120034938 -:1057500008700020ECE700008C0000209200002080 -:1057600010B50446C0200649087008462168C0F8F4 -:105770000110217941710621FFF7DCFE10BD000008 -:10578000340E002070B5054615B96FF0030070BDEA -:10579000FFF70AFE044614B16FF00200F7E703209A -:1057A000FFF75EFE044614B16FF00200EFE72846F3 -:1057B000FFF7D6FF6420FBF709FF0020FFF750FE3C -:1057C000044614B16FF00200E1E703482968016064 -:1057D000297901710020DAE78D00002070B50446B8 -:1057E0002046FFF73DFE054615B16FF0020070BD83 -:1057F0000020FCE770B505460E4605B116B96FF0FE -:10580000030070BD0848007810B96FF00500F8E794 -:1058100031462846FFF78EFE044614B16FF00200B1 -:10582000EFE70020EDE700008C00002070B5054692 -:1058300015B94FF0FF3070BD1C210E48FAF7AAFCD5 -:1058400000200C490870487608462968416129798A -:1058500001761430FFF796FF04460CB12046EAE7C4 -:105860000020FFF7BBFF04460CB12046E3E7002011 -:10587000E1E70000E8000020024602B111B94FF054 -:10588000FF307047064882600020054B586018467C -:10589000C160002018611870012058760020F0E7E0 -:1058A000E800002070B588B03248407E08B908B0E2 -:1058B00070BDFCF73DF804462E48007830B1012851 -:1058C00008D0022842D003284CD14AE001202949BF -:1058D00008704BE02748406826498968884206D30B -:1058E000032024490870002000F0CCF93EE0214854 -:1058F0000069201A1F49C968884226D31D4840689C -:10590000431C1C4820218268684600F063F9054664 -:10591000002D16DD29466846FFF76CFF06467EB966 -:1059200014484068401C134948600846046101203F -:1059300000F0A8F93220FBF749FE002000F0A2F9A0 -:1059400000BF02200B49087000BF0FE00948006942 -:10595000201A0849C968884202D301200549087005 -:1059600004E003E003200349087000BF00BF00BF4C -:105970009DE70000E800002010B5044614B1FFF7D1 -:105980004FF901E0FFF742F910BD002120F8801F18 -:1059900041808180C1808038704710B50246012364 -:1059A00072B6B2F88400802806DBB2F88600401C8C -:1059B000A2F88600002310E0B2F88000115432F8FB -:1059C000804F601CC41700EB5464E411A0EBC414B6 -:1059D00014809088401C9080803A62B6184610BDB2 -:1059E0000D48C069B8B10C48C0690B494968411AF3 -:1059F0000948C160C06958B10748C068642148437C -:105A00000549C969B0FBF1F0C1B20348017402E075 -:105A10000021014801747047C0000020F0B589B032 -:105A200004460D46631C19A2202101A80095FEF72B -:105A300051FB0646701EC1B20DF10500FFF72DF8AF -:105A40000746C6F1200101AA90193B4614A2FEF7B1 -:105A500041FB0DB114A000E015A00246611C15A089 -:105A6000FDF7DEFD01A90020FDF76CFA01A916A0E3 -:105A7000FDF7D6FD1A48006828B101AA294620463C -:105A8000174B1B68984709B0F0BD00002444495FDC -:105A90004556454E542C25642C25642A00000000F0 -:105AA000253032580D0A00004849474800000000E0 -:105AB0004C4F57005B494F5D2043482564202D3EE5 -:105AC0002025730D0A0000005B494F5D20524634CB -:105AD00033332054583A20222573220D0A00000047 -:105AE0005800002070B588B005462B4611A2202131 -:105AF0006846FEF7EFFA0446601EC1B20DF10100E0 -:105B0000FEF7BEFF0646C4F120010DEB040033464C -:105B10000BA2FEF7DFFA0C48006830B169460B486B -:105B20000078094A1268904702E06846FDF7F2FDE6 -:105B300008B070BD244552522C25732A0000000085 -:105B4000253032580D0A0000080000200C0000200B -:105B500070B590B005462B4611A240216846FEF76D -:105B6000B9FA0446601EC1B20DF10100FEF788FFCC -:105B70000646C4F140010DEB040033460AA2FEF7CD -:105B8000A9FA0B48006830B169460A480078084A0B -:105B90001268904702E06846FDF7BCFD10B070BD8A -:105BA000244F4B2C25732A00253032580D0A000053 -:105BB000080000200C00002010B500F0CFF80448C9 -:105BC000006820B102480068401E0149086010BD0D -:105BD000000000202DE9F84305460E46174698467A -:105BE0000DB1102E02DA0020BDE8F8833B4607A273 -:105BF00031462846CDF80080FEF76CFA0446002CAA -:105C000001DDA0B2F0E70020EEE7000054582E2599 -:105C100030336C752E2530336C752E00F8B5054683 -:105C20006B206843164901EB800606F190040027BB -:105C300072B694F80601D0B9B4F80401002816DD54 -:105C4000B4F80201205C009004F581742188481C9E -:105C5000C11700EB11610912A0EB012121806088BE -:105C6000401E608001202071A4F58174012762B676 -:105C700027B1012269463068FCF76DFEF8BD0000CF -:105C80006C06002010B5044614B1FEF7DDFF01E0FC -:105C9000FEF7D0FF10BD002100F58070018041802B -:105CA000818081710181A0F58070704770B50346D5 -:105CB0000C46002572B6002021E0B3F80411FF293C -:105CC00005DDB3F80811491CA3F8081119E0215C9F -:105CD000B3F800619955B3F80061711CCE1701EB60 -:105CE00016663612A1EB0626A3F80061B3F804117C -:105CF000491CA3F80411691C8DB2411C88B2904262 -:105D0000DBDB00BF62B6284670BD0000F8B5064672 -:105D10000D4606B10DB90020F8BD0F48007808B94E -:105D20000020F9E76846FFF771FB04460CB100203C -:105D3000F2E7BDF8000008B90020EDE72A46FF2190 -:105D40003046FFF769FB04460CB10020E4E7002071 -:105D5000014908700120DFE7B400002000B5FFF71B -:105D60000FFB00BD6C5E0008645E00085C5E00080E -:105D7000745E00085C010020A4010020EC010020FA -:105D80007C5E0008845E00088C5E00080203040547 -:105D9000060708090A0B0C0D0E0F10100102000077 -:105DA00000000000000001020304060708090000CB -:105DB00000000102030400001A1704C1C1C14154CC -:105DC0002B444556545950453D3F0041542B4657AE -:105DD000434F44453D3F000040404040404040402C -:105DE00040414141414140404040404040404040AE -:105DF0004040404040404040050202020202020290 -:105E00000202020202020202202020202020202082 -:105E100020200202020202020290909090909010C4 -:105E20001010101010101010101010101010101072 -:105E300010101002020202020288888888888808EE -:105E400008080808080808080808080808080808D2 -:105E50000808080202020240D85D00085741524E6D -:105E600020000000494E464F2000000044454255A6 -:105E7000470000004552524F520000005541525415 -:105E80003100000055415254320000005541525437 -:105E900033000000B45E000800000020C0000000D5 -:105EA0007C410008745F0008C000002078190000E1 -:105EB0008C4100080000000000000000000000000D -:105EC00000000000000C0140100000000000000075 -:105ED00000000000000C0140200000000000000055 -:105EE00000000000000C0140400000000000000025 -:105EF00000000000000C01408000000000000000D5 -:105F00000000000000000000010000000000000090 -:105F10000000000000000000000000000000000081 -:105F20000000000001000000000000000000000070 -:105F30000000000010000000010000000024F40038 -:105F40000000000000000000000000000000000051 -:105F50000000000000000000000000000000000041 -:105F60000000000000000000000000000000000031 -:045F7000000000002D +:1001B0000029FBD1801A704730B505460020034660 +:1001C00000E05B1C934205D2EC5CC85C201A01D1B4 +:1001D000002CF6D130BD00000FB400B58DB010A9D1 +:1001E00009900B9000914FF0FF300A9000200C9086 +:1001F00005480690054807906A4609A80F9900F03F +:1002000009F90DB05DF814FB310400084F04000833 +:100210002DE9FF5F1D464FF0FF3BD5E901469146B2 +:100220005F464FF00008A9697F1C01988847296A3A +:10023000824688470028F6D1BAF1FF3F0CD024F45B +:10024000C064002E19DD600614D5BAF12B0F09D059 +:10025000BAF12D0F0ED103E0584604B0BDE8F09F6F +:1002600044F48064A9697F1C01988847761E824601 +:10027000002E02DDBAF1300F03D0B9F1000F26D005 +:1002800032E0A969761E44F400747F1C0198884707 +:100290008246002E05DDBAF1780F06D0BAF1580F6C +:1002A00003D0B9F1000F10D01EE0B9F1000F02D059 +:1002B000B9F1100F18D1A969761E24F400747F1CBF +:1002C000019888478246102002E0082000E00A20BA +:1002D000814609E008FB0908A969761E44F4007408 +:1002E0007F1C019888478246002E05DD494650460E +:1002F00000F07BF80028EDDAE96901988847A0054D +:1003000002D46FF00100A8E7E00725D1600613D5FD +:10031000600502D5C8F1000000E0404629680A1DCA +:100320002A600968220501D5087015E0220701D569 +:10033000088011E008600FE02868011D296000684E +:10034000210502D580F8008006E0210702D5A0F83B +:10035000008001E0C0F8008038467EE730B50B46EB +:10036000014600202022012409E021FA02F59D42E5 +:1003700005D303FA02F5491B04FA02F52844151EB9 +:10038000A2F10102F1DC30BD2DE9F05F054600204D +:1003900092469B4688460646814640241BE02846F6 +:1003A000414647462246FFF7BFFE53465A46C01A0B +:1003B000914110D311461846224600F023FA2D1A17 +:1003C00067EB01084F4622460120002100F01AFA8F +:1003D00017EB00094E41201EA4F10104DFDC484662 +:1003E00031462A464346BDE8F09F3A2800D23038CD +:1003F00020F02002412A01D3A2F13700884201D324 +:100400004FF0FF307047000002681144137801601C +:1004100018467047D16004495161044911620021B6 +:100420001161114600F010BA0904000851010008DA +:10043000426842B1016811F8013B23B1521EC0E984 +:100440000012184670470121C160881E704742683B +:100450005AB1C368016843B983688B4205D0491E0D +:10046000521CC0E90012002070474FF0FF30704767 +:100470002DE9FE4F804681EA0300C00F0C46009034 +:1004800021F0004123F00045B8EB0200A94105D25C +:100490004046214690461C460B46024623F000404B +:1004A000104347D0270DC7F30A00C3F30A51029047 +:1004B000401A019040286BDAC3F3130040F4801B0C +:1004C0000098924620B10023D2EB030A63EB0B0B9A +:1004D00001985946C0F14002504600F093F9064693 +:1004E0000D4650465946019A00F09BF910EB080062 +:1004F0006141002487EA115284EAE7731A4340D02D +:10050000009A62B3019A012A4FEA075215DC001BD8 +:1005100061EB02014FF0004202EA0752CDE90042CE +:10052000001C41F5801132462B4600F034FB03B02D +:10053000BDE8F08F40462146F9E7001B61EB020160 +:10054000001C41F5801300185B412018A2F500172C +:1005500047EB030140EAD570B6196D4111E06D0813 +:100560004FEA360645EAC0754FEA0752001B61EBB9 +:100570000201001C41F5801149084FEA30000019C2 +:10058000514132462B4603B0BDE8F04F00F0F4BABB +:100590000098012240000023D0EB020263EBE073DD +:1005A000009821464FEAE074B8EB000061EB0401CB +:1005B000E9E783F000435BE781F0004158E72DE96C +:1005C000FE4F81EA030404F0004421F0004100944E +:1005D0004FF0000B23F0004350EA01045ED052EAD2 +:1005E00003045BD0C3F30A54C1F30A552C44A4F2AC +:1005F000F3340194A0FB0254C1F3130141F48011C0 +:10060000C3F3130343F4801301FB024400FB034EC6 +:10061000840A970A44EA815447EA8357A4FB07688F +:1006200002958D0A05FB07854FEA932C04FB0C54B9 +:100630002705029D4FEA065847EA1637B5EB08052D +:100640006EEB070C870E920E47EA811742EA83127F +:10065000A7FB0201B6EB0B0164EB00042B0D43EA90 +:100660000C335E1844EB1C50DA465146E7FB02019E +:10067000C5F313044FEA0B3343EA14534FEA043231 +:10068000019C43EA0603A4F10C040294009CCDE90A +:1006900000B400F080FA03B0BDE8F08F00200146FE +:1006A000F9E72DE9F04D81EA030404F0004B21F055 +:1006B000004514464FF0000A23F0004150EA0502BD +:1006C00020D054EA01021DD0C5F30A570246C5F3F3 +:1006D0001303C1F31300C1F30A5640F4801543F429 +:1006E0008013A7EB0608101BD64608F2FD3873EB03 +:1006F000050002D308F1010801E092185B41B8F14E +:10070000000F03DA00200146BDE8F08D00204FF411 +:100710008011064684460EE0171B73EB050705D3D0 +:10072000121B63EB050306434CEA010C49084FEA30 +:10073000300092185B4150EA0107EDD152EA030004 +:1007400012D082EA040083EA0501084305D0101B99 +:10075000AB4106D20122002306E000224FF0004305 +:1007600002E06FF0010253101AEB06004CEB085147 +:1007700010EB0A0041EB0B01BDE8F04D00F0FCB9B5 +:10078000C1F30A52C1F3130140F2FF3341F4801167 +:100790009A4202DA00200146704740F233439A42FF +:1007A000A2F2334202DC5242FFF7BEBC00F02AB88C +:1007B00030B5041E71F1000404DB4FF000444042E8 +:1007C00064EB0101141E73F1000405DB1C464FF0BD +:1007D0000043524263EB0403994208BF904230BD8C +:1007E000064C074D06E0E06840F0010394E807007E +:1007F00098471034AC42F6D3FFF77CFC088400081D +:1008000028840008202A04DB203A00FA02F10020A4 +:1008100070479140C2F1200320FA03F3194390403E +:100820007047202A06DBCB17203A41FA02F043EA50 +:10083000E07306E041FA02F3D040C2F12002914099 +:1008400008431946704700002DE9F34F8BB04FF075 +:10085000000801F10C000C464FF0010B46460DF16B +:10086000080A01906269012101989047051E2DD068 +:10087000252D2CD0216A8847C0B1626901210198D9 +:100880009047216A88470028F7D1411E6269019884 +:10089000904700E0761CA1690B988847216A884739 +:1008A0000028F7D1E1690B988847DBE7A1690B982D +:1008B00088470746A84201D1761CD3E7E1690B9827 +:1008C00088477F1C02D1B8F1000F6FD047E10027A5 +:1008D00062693D463946019890472A2804D16269E9 +:1008E0000121019890470125DFF888926269012172 +:1008F00001989047A0F130010A290AD24F45E5DC62 +:1009000007EB870100EB4107303FDFD445F01005CE +:10091000ECE7E90601D46FF000476C280AD04C28B8 +:1009200014D0682815D06A280DD074281CD07A28D5 +:100930001AD01DE062690121019890476C2802D00D +:1009400045F0040514E045F002050DE045F02005F2 +:100950000AE06269012101989047682802D045F0B9 +:10096000080505E045F4006562690121019890479A +:10097000C4E9015765283DD019DC58287AD00CDC31 +:10098000452837D004DC252826D0412831D131E054 +:1009900046282FD047282CD12CE05B2877D061281F +:1009A00028D063287CD0642823D15AE0D1E06F2876 +:1009B00048D008DC66281DD067281BD0692821D0C4 +:1009C0006E2816D127E0702845D0732868D0752886 +:1009D00047D078280DD14DE0A1690B98884705468E +:1009E00025283FF469AFE1690B9888476D1C3FF4F7 +:1009F0006AAFB4E023466A466FF001000B99AFF38B +:100A000000809FE045F040006060A80723464FF05B +:100A1000000236D43EE0E8077FF447AF2068011DAE +:100A200021600068290501D506701BE7290701D55B +:100A3000068017E7A90703D5F117C0E9006111E7A0 +:100A400006600FE745F040006060A80723464FF0BE +:100A5000080216D41EE040F60E0125EA010060608F +:100A600016E045F040006060A80723464FF00A02F8 +:100A700007D40FE045F040006060A80708D5234682 +:100A800010226FF001000B99AFF300805AE007E0ED +:100A9000234610226FF001000B99FFF7B9FB51E0DC +:100AA0004FF000094F464B46632802D05B2807D021 +:100AB00041E02079C00601D40120A06001273AE07E +:100AC00062690121019890475E2805D14FF0010924 +:100AD0006269494601989047216939B900210A465F +:100AE000534643F82120491C0829FADBB0B3216999 +:100AF00069B9C11700EBD16253110AEB830122F0EF +:100B00001F02821A01200B68904003430B60626948 +:100B10000121019890475D28E8D1B9F1000F09D073 +:100B20000020514651F82020D24341F82020401C9B +:100B30000828F7DB02AB224600976FF001000B9903 +:100B4000AFF3008000280CDA401C08D1BBF1000F85 +:100B500005D04FF0FF300DB0BDE8F08FFFE7404605 +:100B6000F9E7E90701D108F1010806444FF0000B4D +:100B700078E60000CCCCCC0C10B5141E73F1000448 +:100B800008DA401C41F1000192185B411A4301D17F +:100B900020F0010010BD2DE9F04D92469B4611B1A9 +:100BA000B1FA81F202E0B0FA80F220329046FFF70B +:100BB00029FE04460F4640EA0A0041EA0B0153466B +:100BC0005A46084313D0114653EA010019D0C8F120 +:100BD00040025046FFF7A8FA05460E4650465946D1 +:100BE0004246FFF70FFE084305D0012004E02046EF +:100BF0003946BDE8F08D0020054346EAE0762C43F7 +:100C000037430A986305E40AA0EB08000022FD0AB6 +:100C100044EA47540A3002D500200146E9E70105BD +:100C200010196941DDE9084500196941BDE8F04D39 +:100C3000A2E770B58C1810F8015B15F0070301D11D +:100C400010F8013B2A1106D110F8012B03E010F82F +:100C5000016B01F8016B5B1EF9D12B0705D4002352 +:100C6000521E0DD401F8013BFAE710F8013BCB1AF4 +:100C7000921C03E013F8015B01F8015B521EF9D5E9 +:100C8000A142D8D3002070BD00BFFEE710B560219F +:100C90000348FFF77FFA00200149087010BD0000EB +:100CA000FC0D00200149086070470000180000207A +:100CB00010B5002018E0144901EB00110870002164 +:100CC000114A02EB001251600F4A02EB00129160D0 +:100CD0000D4A02EB001211730C4A22F810100C4A54 +:100CE00042F82010411CC8B20328E4DB0020094967 +:100CF000086009490860094908600120084908702E +:100D00000848FFF7CFFF10BD6810002082000020C8 +:100D10001812002074000020780000207C000020C1 +:100D200080000020854D000838B504460D4600209F +:100D3000009006222E494FF4106003F097F92C48DA +:100D400000782B494978084329498978084328497C +:100D5000C978084326490979084325494979084350 +:100D600078B900202249087008204870DC2088707B +:100D70000020C8700871487106224FF4106003F01B +:100D8000F5F91C4804701C4805601C481C490860A3 +:100D90001748C07809680844194908601448007960 +:100DA00009680844164908601148407909680844F0 +:100DB000134908600E48C0780D49097948400C492C +:100DC000497948400E49096808440D4908600422E1 +:100DD00069464FF4706003F0C9F904226946900136 +:100DE00003F0C4F905F0C4F900200649087038BDC5 +:100DF000680100202C0100205C010020785634128C +:100E0000580100204901002070B569480078062883 +:100E100001D1052070BD674909788900491C4FF44C +:100E2000407202EBC10003F0E7F8222806D000234D +:100E3000442202215F48007806F0C0FA012504F040 +:100E40009FFDC4B25A4890F90000052877D2DFE828 +:100E500000F0030F2C4F77000020574908704870AE +:100E60008870C87005F0FEFD0120514908709CE0B3 +:100E7000022C16D151480068007C4F4908704F4839 +:100E80000068407C48704D480068807C88704B4802 +:100E90000068C07CC87005F031FF0220444908702A +:100EA00002E003F0C9FE05467FE0052C14D103F0F3 +:100EB00087FE40B142480068804705F059F9032099 +:100EC0003B49087013E005F053F93E48006880473D +:100ED0000020374908700AE0062C05D105F048F9D2 +:100EE00001203349087002E003F0A6FE05465CE0ED +:100EF000042535480068401C00B334480068324976 +:100F00000968B0EB510F19D900242B4800783049FB +:100F100008702948407848702748807888702648AB +:100F2000C078C8702B480068401C2A49086005F04A +:100F3000E5FE05F01DF904201D49087035E033E099 +:100F40000425052C24D1002023490870204800786E +:100F500019490978884211D11D48407816494978C5 +:100F600088420BD11A48807813498978884205D184 +:100F70001748C0781049C978884203D0032517481C +:100F80000068804705F0F4F80320094908700AE07A +:100F9000062C05D105F0ECF801200549087002E0A7 +:100FA00003F04AFE054600E000BF00BF284631E7D7 +:100FB000490100202C010020390100205C010020A3 +:100FC00070010020780100204C0100205001002019 +:100FD00035010020580100204A0100207401002042 +:100FE00010B50448007803F07DFE06200249087021 +:100FF00010BD00002C0100204901002002480068BB +:10100000401C0149086070475001002010B50020C5 +:101010000349087004F0ECF802A002F073FD10BD63 +:10102000880000205B4C4F475D2044656275672057 +:101030006C6F672073797374656D20696E6974696C +:10104000616C697A65640D0A000000000FB470B528 +:10105000C2B005460E4625480078854203DA42B004 +:1010600070BC5DF814FB304604F0DEF800B9F6E71A +:1010700000240EB1304600E01DA01F4A009052F837 +:101080002530C4F5807102AA10191CA203F0C2F821 +:101090000444FF2C0DDA49A80190C4F5807102AA1E +:1010A0001019019B489A03F0E3F8044400200190D2 +:1010B00000BF002C0CDDFF2C0ADC0D222046641C36 +:1010C00002A90A54FF2C03DC0A222046641C0A549D +:1010D000002C08DDA1B202A802F0BAFCA2B202A95B +:1010E000022002F015FA00BFB9E7000088000020D6 +:1010F0004D41494E000000006C8100085B25735D86 +:101100005B25735D200000000149087070470000F6 +:1011100088000020704772B600BFFEE7014600223B +:1011200091F82100022808D00420886300BF002025 +:1011300081F8200000BF012070470868006820F097 +:101140000E000B6818600868006820F001000B684A +:10115000186091F8403001209840CB6B5860012016 +:1011600081F8210000BF002081F8200000BF104658 +:10117000E2E7000070B50446002594F8210002283B +:1011800003D00420A063012548E02068006820F017 +:101190000E00216808602068006820F001002168C6 +:1011A00008601F492068884201D1012026E01C49BF +:1011B00014312068884201D110201FE018492831DD +:1011C0002068884201D1801518E015493C3120681B +:1011D000884201D1801411E01149503120688842C1 +:1011E00002D14FF4803009E00D4964312068884213 +:1011F00002D14FF4801001E04FF0807008490839A7 +:101200004860012084F8210000BF002084F82000FD +:1012100000BF606B10B12046616B8847284670BDE7 +:101220000800024070B5044600F0AEF906462546B7 +:10123000681C10B104480078054400BF00F0A4F910 +:10124000801BA842FAD370BD940000202DE9F84716 +:101250000346002294466EE14FF0010808FA02F4BA +:10126000D1F8008008EA0400A0427DD1DFF8DCA2BA +:10127000D1F80480A8EB0A09D0453AD014DCB8F1C3 +:10128000030F50D009DCB8F1000F31D0B8F1010FD5 +:101290001CD0B8F1020F49D120E0B8F1110F18D0DD +:1012A000B8F1120F42D11EE0B9F5881F25D006DC37 +:1012B000B9F5803F20D0B9F5801F37D11AE0B9F5D4 +:1012C000001F18D0B9F5041F30D117E0D1F80CC0B9 +:1012D0002DE0D1F80C8008F1040C28E0D1F80C8046 +:1012E00008F1080C23E0D1F80C8008F10C0C1EE08A +:1012F00000BF00BF00BF00BF00BF00BFD1F8088023 +:10130000B8F1000F02D14FF0040C0BE0D1F80880C7 +:10131000B8F1010F03D14FF0080C1C6102E04FF04F +:10132000080C5C6103E04FF0000C00E000BF00BF60 +:10133000FF2801D8984601E003F104084646FF283B +:1013400002D84FEA820803E0A2F108084FEA8808B1 +:101350004746D6F800804FF00F0909FA07F928EA46 +:1013600009080CFA07F900E088E048EA0908C6F81D +:101370000080D1F8048008F08058B8F1805F7DD1FA +:1013800000BFDFF8CC81D8F8188048F00108DFF8FA +:10139000C091C9F81880C846D8F8188008F001082C +:1013A000CDF8008000BF00BF4FEAB9384FEA92097C +:1013B00058F829504FEA82784FEA18794FF00F0811 +:1013C00008FA09F825EA0805DFF88881434502D1C3 +:1013D0004FF0000816E0DFF88081434502D14FF05E +:1013E00001080FE0DFF87481434502D14FF0020895 +:1013F00008E0DFF86C81434502D14FF0030801E0BB +:101400004FF004084FEA82794FEA197908FA09F88F +:1014100048EA0505DFF84C814FEA920948F829505F +:10142000D1F8048008F48018B8F5801F0AD1DFF8DD +:101430003881D8F8008048EA0008DFF82C91C9F814 +:10144000008009E0DFF82081D8F8008028EA000851 +:10145000DFF81491C9F80080D1F8048008F400186E +:10146000B8F5001F10D1DFF8008108F10408D8F8A2 +:10147000008048EA0008DFF8F09000E05AE009F147 +:101480000409C9F800800DE0DFF8DC8008F10408E9 +:10149000D8F8008028EA0008DFF8CC9009F10409A8 +:1014A000C9F80080D1F8048008F40038B8F5003F8E +:1014B0000ED1DFF8B480A8F10408D8F8008048EA1B +:1014C0000008DFF8A490A9F10409C9F800800DE034 +:1014D000DFF89480A8F10408D8F8008028EA000812 +:1014E000DFF88490A9F10409C9F80080D1F80480DC +:1014F00008F48038B8F5803F0ED1DFF86C80A8F191 +:101500000808D8F8008048EA0008DFF85C90A9F1E4 +:101510000809C9F800800DE0DFF84C80A8F1080840 +:10152000D8F8008028EA0008DFF83C90A9F1080903 +:10153000C9F80080521CD1F8008028FA02F8B8F1EE +:10154000000F7FF489AEBDE8F8870000000011109D +:101550000010024000080140000C01400010014052 +:10156000001401400800014008040140024693684D +:101570000B400BB1012000E0002070470AB101616F +:1015800001E00B04036170470148006870470000E8 +:101590008C00002003480068034909780844014989 +:1015A000086070478C0000209400002010B50848A7 +:1015B000006840F0100006490860032000F0A8F819 +:1015C0000F2000F007F800F02BF8002010BD0000FD +:1015D0000020024070B504460E4800784FF47A713E +:1015E000B1FBF0F00C490968B1FBF0F5284600F0BA +:1015F0005AFF08B1012070BD102C07D200222146ED +:10160000501E00F047F80548046001E00120F2E7B1 +:101610000020F0E7940000209800002090000020B7 +:1016200008B500BF1148806940F001000F4988618A +:101630000846806900F00100009000BF00BF00BFB5 +:101640000846C06940F08050C8610846C06900F093 +:101650008050009000BF00BF00BF0549486820F0DF +:10166000E06040F00070486000BF08BD001002401C +:101670000000014001460846002809DB00F01F0376 +:1016800001229A4043099B0003F1E023C3F80021A3 +:1016900000BF70472DE9F05F80460D4616460027D3 +:1016A00002F000FE074639462A46334601F007009D +:1016B000C0F1070ABAF1040F02D94FF0040A01E0A1 +:1016C000C0F1070AD14600F1040ABAF1070F02D2AD +:1016D0004FF0000A01E0A0F1030AD4464FF0010ADE +:1016E0000AFA09FAAAF1010A0AEA020A0AFA0CFA43 +:1016F0004FF0010B0BFA0CFBABF1010B0BEA030BE8 +:101700004AEA0B042146404602F0D4FDBDE8F09FB2 +:1017100000BF00F00702064B19684FF6FF0319409F +:10172000044B0B4343EA0221014B196000BF704791 +:101730000CED00E00000FA0570B504460D460CB94A +:10174000012070BD5A48006800F00700A8420ED280 +:101750005748006820F007002843554908600846AC +:10176000006800F00700A84201D00120E9E72078D6 +:1017700000F0020002281DD1207800F004000428A7 +:1017800005D14C48406840F4E0604A494860207800 +:1017900000F00800082805D14648406840F4605031 +:1017A000444948604348406820F0F000A16808437D +:1017B00040494860207800F0010078B36068012853 +:1017C00006D13C48006800F4003090B90120B8E729 +:1017D0006068022806D13748006800F0007040B900 +:1017E0000120AEE73348006800F0020008B901208C +:1017F000A7E73048406820F00300616808432D499E +:101800004860FFF7C1FE064609E0FFF7BDFE801BFA +:1018100041F28831884202D9032092E707E0254847 +:10182000406800F00C006168B0EB810FEDD12048FA +:10183000006800F00700A8420ED91D48006820F09B +:10184000070028431A4908600846006800F00700AE +:10185000A84201D0012074E7207800F00400042899 +:1018600007D11448406820F4E060E168084311495A +:101870004860207800F00800082808D10D4840682A +:1018800020F46050216940EAC1000A49486000F034 +:101890003FF808494968C1F30311074A515CC84041 +:1018A0000649086006480068FFF794FE002048E7F4 +:1018B0000020024000100240A6810008980000208D +:1018C0009000002001480068704700009800002048 +:1018D00000B5FFF7F7FF04494968C1F30221034A45 +:1018E000515CC84000BD000000100240B6810008F5 +:1018F00000B5FFF7E7FF04494968C1F3C221034A75 +:10190000515CC84000BD000000100240B6810008D4 +:1019100070B500210022002400230020134D6968C7 +:1019200001F00C05F5B1042D02D0082D19D101E00C +:101930000F4819E00F4DC1F38346AB5D01F48035CC +:1019400055B10A4D6D68C5F340450B4E725D084DAB +:101950005D43B5FBF2F402E0084D03FB05F42046BD +:1019600002E000BF024800BF00BF70BD001002408F +:1019700000127A0094810008A481000800093D004B +:10198000F8B504460CB90120F8BD207800F001003C +:10199000002878D0F848406800F00C0004280CD0EB +:1019A000F548406800F00C00082811D1F248406862 +:1019B00000F48030B0F5803F0AD1EF48006800F4B1 +:1019C000003000285FD0606800285CD10120DBE790 +:1019D00000BF6068B0F5803F06D1E748006840F47A +:1019E0008030E549086028E0606858B9E24800683E +:1019F00020F48030E04908600846006820F4802028 +:101A000008601AE06068B0F5A02F0BD1DA480068D2 +:101A100040F48020D84908600846006840F48030CF +:101A200008600AE0D448006820F48030D249086099 +:101A30000846006820F48020086000BF606888B114 +:101A4000FFF7A2FD054606E0FFF79EFD401B642858 +:101A500001D9032098E7C848006800F40030002846 +:101A6000F2D010E0FFF790FD054606E0FFF78CFD91 +:101A7000401B642801D9032086E7BF48006800F4B2 +:101A800000300028F2D1207800F00200022857D15F +:101A9000B948406800F00C0050B1B748406800F009 +:101AA0000C00082818D1B448406800F4803098B978 +:101AB000B148006800F0020020B12069012801D07F +:101AC000012061E7AC48006820F0F800616940EA55 +:101AD000C100A949086033E02069E8B10120A749A5 +:101AE0000860FFF751FD054606E0FFF74DFD401B7E +:101AF000022801D9032047E79F48006800F0020050 +:101B00000028F2D09C48006820F0F800616940EAA3 +:101B1000C1009949086013E0002098490860FFF768 +:101B200033FD054606E0FFF72FFD401B022801D9D3 +:101B3000032029E79048006800F002000028F2D155 +:101B4000207800F0080008282DD1A069B8B1012044 +:101B50008B490860FFF718FD054606E0FFF714FD06 +:101B6000401B022801D903200EE78348406A00F099 +:101B700002000028F2D0012001F072FD13E00020E5 +:101B80007F490860FFF700FD054606E0FFF7FCFC13 +:101B9000401B022801D90320F6E67748406A00F08E +:101BA00002000028F2D1207800F00400042873D14C +:101BB00000277148C06900F0805070B900BF6E48BE +:101BC000C06940F080506C49C8610846C06900F0A7 +:101BD0008050009000BF00BF01276A48006800F4F1 +:101BE0008070B0B96748006840F48070654908604B +:101BF000FFF7CAFC054606E0FFF7C6FC401B642859 +:101C000001D90320C0E65F48006800F48070002816 +:101C1000F2D000BFE068012806D15748006A40F0C2 +:101C200001005549086227E0E06858B95248006A47 +:101C300020F00100504908620846006A20F00400C4 +:101C4000086219E0E06805280BD14B48006A40F0B3 +:101C50000400494908620846006A40F00100086231 +:101C60000AE04548006A20F001004349086208463E +:101C7000006A20F00400086200BFE068A0B1FFF72E +:101C800083FC054609E0FFF77FFC401B41F28831E9 +:101C9000884202D9032077E622E03748006A00F044 +:101CA00002000028EFD012E0FFF76EFC054608E0C6 +:101CB000FFF76AFC401B41F28831884201D90320BA +:101CC00062E62D48006A00F002000028F0D1012FE2 +:101CD00005D12948C06920F080502749C86100BF5C +:101CE000E069C8B32448406800F00C00082860D0C0 +:101CF000E069022848D1002020490866FFF744FC2B +:101D0000054606E0FFF740FC401B022801D90320EE +:101D10003AE61948006800F000700028F2D1206A05 +:101D2000B0F5803F07D11448406820F40030A16826 +:101D3000084311494860D4E9080108430E4949683D +:101D400021F4741108430C49486001200B490866CE +:101D5000FFF71AFC054607E03DE0FFF715FC401BC6 +:101D6000022801D903200FE60348006800F0007044 +:101D70000028F2D02FE00000001002400000424294 +:101D80008004424200700040002014490866FFF7BA +:101D9000FBFB054606E0FFF7F7FB401B022801D9D5 +:101DA0000320F1E50E48006800F000700028F2D131 +:101DB00011E0E069012800D1E6E50948466806F42B +:101DC0008031206A814204D106F47011606A814238 +:101DD00001D00120D8E50020D6E5000000004242F5 +:101DE0000010024010B504460CB9012010BD606A15 +:101DF00038B96068B0F5827F00D105E00021E1616B +:101E000002E00021216161610021A16294F851008A +:101E100028B9002084F85000204600F043F8022042 +:101E200084F851002068006820F0400021680860B4 +:101E3000A08800F48270218901F404410843A1893B +:101E400001F400610843217C01F002010843217D77 +:101E500001F001010843218B01F400710843217F47 +:101E600001F0380108432021095D01F08001084399 +:101E7000218D01F400510843216808600421A06904 +:101E800001EA1040216848602068C06920F40060C1 +:101E90002168C86100206065012084F8510000209D +:101EA000A4E7000010B586B004460020029003901D +:101EB000049005901A49206888422FD100BF194824 +:101EC000C06940F480401749C8610846C06900F401 +:101ED0008040019000BF00BF00BF0846806940F00D +:101EE000080088610846806900F00800019000BF82 +:101EF00000BF4FF420400290022003900320059081 +:101F000002A90948FFF7A2F94FF48040029000208F +:101F10000390049002A90448FFF798F906B010BD99 +:101F20000038004000100240000C01402DE9F84349 +:101F30000446884616461D464FF0000994F85100A5 +:101F4000012802D04FF00209A8E06068B0F5827F56 +:101F50000DD1A06858B9042084F851003346424698 +:101F600041462046009500F07EF9BDE8F88300BFA9 +:101F700094F85000012801D10220F6E7012084F8EE +:101F8000500000BFFFF700FB0746B8F1000F00D07C +:101F900016B94FF0010981E0042084F851000020B7 +:101FA0006065C4F83880A687E6872063A086E0864F +:101FB00020646064A068B0F5004F0BD12068006811 +:101FC00020F04000216808602068006820F480400C +:101FD000216808602068006800F04000402805D0B3 +:101FE0002068006840F0400021680860E06810BB8D +:101FF0001DE02068806800F0010050B12068007B7F +:10200000A16B0870A06B401CA063E08F401EE087AE +:102010000DE0FFF7B9FAC01BA84201D3681C00B954 +:102020002DB94FF00309012084F8510036E0E08F0C +:102030000028DED121E01DE02068806800F001006A +:1020400050B12068C068A16B0880A06B801CA063A1 +:10205000E08F401EE0870DE0FFF796FAC01BA84214 +:1020600001D3681C00B92DB94FF00309012084F891 +:10207000510013E0E08F0028DED13A462946204681 +:1020800001F028FB08B120206065606D10B14FF0B1 +:10209000010902E0012084F8510000BF00BF0020C8 +:1020A00084F8500000BF48465FE72DE9F84F04462A +:1020B000884616461D464FF0000A00BF94F85000AF +:1020C000012802D10220BDE8F88F012084F85000D9 +:1020D00000BFFFF759FA0746B14694F851000128AE +:1020E00002D04FF0020AB7E0B8F1000F00D016B9E5 +:1020F0004FF0010AB0E0032084F851000020606531 +:10210000C4F83080A686E686A063A087E087606476 +:102110002064A068B0F5004F0BD12068006820F063 +:102120004000216808602068006840F48040216811 +:1021300008602068006800F04000402805D0206852 +:10214000006840F0400021680860E068B0F5006F6A +:1021500032D1606810B1B9F1010F09D1206B00884C +:102160002168C860206B801C2063E08E401EE086E2 +:102170001EE02068806800F0020002280AD1206B6F +:1021800000882168C860206B801C2063E08E401EA0 +:10219000E0860DE0FFF7F8F9C01BA84201D3681CE8 +:1021A00000B92DB94FF0030A012084F8510053E023 +:1021B000E08E0028DDD131E0606810B1B9F1010F87 +:1021C00009D1206B007821680873206B401C2063C4 +:1021D000E08E401EE0861EE02068806800F002006D +:1021E00002280AD1206B007821680873206B401CFC +:1021F0002063E08E401EE0860DE0FFF7C5F9C01BAE +:10220000A84201D3681C00B92DB94FF0030A012080 +:1022100084F8510020E0E08E0028DDD13A462946BE +:10222000204601F093FA08B120206065A06850B9FB +:1022300000BF002000902068C0680090206880687F +:10224000009000BF00BF606D10B14FF0010A02E0C6 +:10225000012084F8510000BF00BF002084F8500026 +:1022600000BF50462FE72DE9FF5F044688469146A0 +:102270001D460E9E012002900020019000BF94F8A0 +:102280005000012803D1022004B0BDE8F09F0120D6 +:1022900084F8500000BFFFF777F9074694F851B073 +:1022A00060680390AA46BBF1010F0BD00398B0F50C +:1022B000827F04D1A06810B9BBF1040F02D00220C4 +:1022C0000190E9E0B8F1000F03D0B9F1000F00D0A0 +:1022D00015B901200190DFE094F85100042802D0E4 +:1022E000052084F8510000206065C4F83890E58727 +:1022F000A587C4F83080E586A586206460642068E0 +:10230000006800F04000402805D02068006840F0D8 +:10231000400021680860E068B0F5006F4DD160684A +:1023200010B1BAF1010F09D1206B00882168C86093 +:10233000206B801C2063E08E401EE08636E0206823 +:10234000806800F00200022810D1E08E70B102987F +:1023500001280BD1206B00882168C860206B801C8D +:102360002063E08E401EE086002002902068806896 +:1023700000F0010068B1E08F58B12068C068A16B1F +:102380000880A06B801CA063E08F401EE0870120C6 +:102390000290FFF7F9F8C01BB04207D3701C28B1B8 +:1023A00003200190012084F8510075E0E08E0028A0 +:1023B000C5D1E08F0028C2D14DE0606810B1BAF1FC +:1023C000010F09D1206B007821680873206B401C35 +:1023D0002063E08E401EE08637E02068806800F0D1 +:1023E0000200022810D1E08E70B1029801280BD1B2 +:1023F000206B007821680873206B401C2063E08EFE +:10240000401EE086002002902068806800F00100F5 +:1024100068B1E08F58B12068C068A16B0870A06BEC +:10242000401CA063E08F401EE08701200290FFF770 +:10243000ABF8C01BB04201D3701C00B92EB9032009 +:102440000190012084F8510026E0E08E0028C4D1DC +:10245000E08F0028C1D13A463146204601F076F996 +:1024600020B1012001902020606515E0A06850B9DE +:1024700000BF002000902068C0680090206880683D +:10248000009000BF00BF606D10B10120019002E01C +:10249000012084F8510000BF00BF002084F85000E4 +:1024A00000BF0198F0E670B504462546681EB0F1FD +:1024B000807F01D301200FE0681E4FF0E0214861CA +:1024C0000F214FF0FF3001F0F5FE00204FF0E0212A +:1024D000886107200861002070BD704770470000C8 +:1024E00030B502460B4600BF92F83C00012801D1EE +:1024F000022030BD012082F83C0000BF022082F89B +:102500003D00106844681068816824F07004186801 +:10251000044310684460104D1068A8420BD0106846 +:10252000B0F1804F07D00D4D1068A84203D00C4D7C +:102530001068A84205D121F0800158680143106855 +:102540008160012082F83D0000BF002082F83C003D +:1025500000BF00BFCDE70000002C01400004004098 +:102560000008004010B504460CB9012010BD94F8D5 +:102570003D0028B9002084F83C00204600F026F8F1 +:10258000022084F83D00211D206801F0A3F90120FC +:1025900084F8460000BF84F83E0001213F20015529 +:1025A000402001554120015500BF00BF012084F8A3 +:1025B000420043200155442001554520015500BFEC +:1025C000012084F83D000020D0E7000038B5044623 +:1025D0002068B0F1804F15D100BF0B48C06940F0B2 +:1025E00001000949C8610846C06900F00100009077 +:1025F00000BF00BF002211461C20FFF74BF81C2033 +:10260000FFF738F838BD000000100240014691F88D +:102610003D00012801D001207047022081F83D00D3 +:102620000868C06840F001000B68D860124B086869 +:1026300098420BD00868B0F1804F07D00F4B086864 +:10264000984203D00E4B086898420CD10868806805 +:1026500000F00702062A0CD00868006840F001006C +:102660000B68186005E00868006840F001000B681E +:1026700018600020D0E70000002C0140000400405A +:10268000000800402DE9F04104460D46002700BF38 +:1026900094F83C00012802D10220BDE8F08101201D +:1026A00084F83C0000BF022084F83D002068866862 +:1026B00026F0770626F47F46206886602868502832 +:1026C00033D00CDC202850D004DC00284BD010285C +:1026D00051D149E0302849D040284CD139E0602818 +:1026E0002DD0702807D0B0F5805F03D0B0F5005F23 +:1026F00041D10DE041E0D5E902136A68206801F09C +:1027000023F92068866846F077062068866034E002 +:10271000D5E902136A68206801F016F9206880681C +:1027200040F480402168886027E0EA686968206892 +:1027300001F01EF95021206801F011F91DE0EA684E +:102740006968206801F027F96021206801F007F925 +:1027500013E0EA686968206801F00AF940212068FE +:1027600001F0FDF809E000BF00BF00BF2968206844 +:1027700001F0F5F801E0012700BF00BF012084F857 +:102780003D0000BF002084F83C0000BF384684E7CD +:10279000704710B5044620680069C0F34000D8B106 +:1027A0002068C068C0F34000B0B16FF0020021683B +:1027B0000861012020772068806900F0030018B1CB +:1027C0002046FFF7E5FF05E0204600F0ADF8204683 +:1027D00000F0ABF80020207720680069C0F380008B +:1027E000D8B12068C068C0F38000B0B16FF00400B9 +:1027F00021680861022020772068806900F4407019 +:1028000018B12046FFF7C4FF05E0204600F08CF821 +:10281000204600F08AF80020207720680069C0F385 +:10282000C000D8B12068C068C0F3C000B0B16FF07C +:10283000080021680861042020772068C06900F042 +:10284000030018B12046FFF7A3FF05E0204600F083 +:102850006BF8204600F069F80020207720680069B6 +:10286000C0F30010D8B12068C068C0F30010B0B148 +:102870006FF0100021680861082020772068C06987 +:1028800000F4407018B12046FFF782FF05E02046B3 +:1028900000F04AF8204600F048F800202077206831 +:1028A000006900F0010058B12068C06800F0010024 +:1028B00030B16FF0010021680861204600F036F861 +:1028C00020680069C0F3C01058B12068C068C0F328 +:1028D000C01030B16FF08000216808612046FFF71A +:1028E000FCFD20680069C0F3801058B12068C06802 +:1028F000C0F3801030B16FF04000216808612046BD +:1029000000F01DF820680069C0F3401058B120683D +:10291000C068C0F3401030B16FF02000216808613A +:102920002046FFF7DBFD10BD7047704710B5044629 +:102930002068B0F1804F01D105F0B4F810BD7047A8 +:102940007047000038B5044600BF002000902068A2 +:102950000068009020684068009000BF00BF00BF82 +:102960000020009020680068009020684068009077 +:1029700000BF00BF00BF00200090206800680090EA +:1029800020684068009000BF00BF0F49206888425F +:1029900005D101220D490E4800F09EFA12E00D49C2 +:1029A0002068884205D101220B490C4800F094FAB6 +:1029B00008E00B492068884204D1012209490A48ED +:1029C00000F08AFA38BD000000380140BC00002049 +:1029D000240D00200048004005000020B40D002018 +:1029E00000440040040000206C0D00202DE9F84F49 +:1029F0000446206805682068C668206847694FF06B +:102A00000009CA4605F00F09B9F1000F0AD105F017 +:102A1000200038B106F0200020B1204601F03CF93A +:102A2000BDE8F88FB9F1000F7BD007F0010018B9AD +:102A300006F49070002874D005F0010030B106F45F +:102A4000807018B1606C40F00100606405F0040013 +:102A500030B107F0010018B1606C40F00200606412 +:102A600005F0020030B107F0010018B1606C40F0D1 +:102A70000400606405F0080048B106F0200010B9B9 +:102A800007F0010018B1606C40F008006064606CF1 +:102A9000002845D005F0200028B106F0200010B134 +:102AA000204601F0F9F820684069C0F3801A606C94 +:102AB00000F0080010B9BAF1000F2CD0204601F048 +:102AC000A5F82068406900F0400000B300BF00BFD7 +:102AD0002168143151E8001F21F0400021681431B1 +:102AE00041E80002002AF3D100BFE06B50B1774803 +:102AF000E16B4863E06BFEF73DFB88B1E06B416B37 +:102B000088470DE02046FFF71DFF09E009E0204659 +:102B1000FFF718FF04E02046FFF714FF0020606471 +:102B20007EE7206B012877D105F01000002873D0D4 +:102B300006F010000028FAD000BF002000902068A6 +:102B40000068009020684068009000BF00BF2068C7 +:102B5000406900F0400000285FD0E06B00684068EA +:102B60001FFA80F8B8F1000F55D0A08D404552DD16 +:102B7000A4F82E80E06B8069202843D000BF00BFFE +:102B800021680C3151E8001F21F4807021680C315C +:102B900041E80002002AF3D100BF00BF00BF216856 +:102BA000143151E8001F21F001002168143141E87F +:102BB0000002002AF3D100BF00BF00BF216814311A +:102BC00051E8001F21F040002168143141E8000263 +:102BD000002AF3D100BF202084F8420000202063A7 +:102BE00000BF00BF21680C3151E8001F21F0100028 +:102BF00021680C3141E80002002AF3D100BFE06BEC +:102C0000FEF78CFA02206063A08DE28D801A81B2FB +:102C10002046FFF795FE03E742E0A08DE18D401AC4 +:102C20001FFA80F8E08DD0B3B8F1000F37D000BFA5 +:102C300000BF21680C3151E8001F21F49070216819 +:102C40000C3141E80002002AF3D100BF00BF00BFF1 +:102C50002168143151E8001F21F00100216814316E +:102C600041E80002002AF3D100BF202084F842008E +:102C70000020206300BF00BF21680C3151E8001F15 +:102C800021F0100021680C3141E80002002AF3D144 +:102C900000BF0220606341462046FFF751FEBFE6B9 +:102CA00005F0800030B106F0800018B1204601F038 +:102CB0000FF9B5E605F0400030B106F0400018B15C +:102CC000204600F0D9FFABE600BFA9E6F93B0008BB +:102CD00010B504460CB9012010BDA06900B100E098 +:102CE00000BF94F8410028B9002084F84000204635 +:102CF00000F02AF8242084F841002068C06820F4FD +:102D000000502168C860204601F044F8206800693E +:102D100020F49040216808612068406920F02A0072 +:102D2000216848612068C06840F400502168C8608C +:102D300000206064202084F8410084F842000020D4 +:102D4000606300BFC8E7000010B586B004460020ED +:102D5000029003900490059059492068884237D129 +:102D600000BF5848806940F4804056498861084651 +:102D7000806900F48040019000BF00BF00BF08469A +:102D8000806940F0040088610846806900F0040012 +:102D9000019000BF00BF481502900220039003205D +:102DA000059002A94848FEF751FA4FF4806002905E +:102DB00000200390049002A94348FEF747FA00223E +:102DC00011462520FEF766FC2520FEF753FC75E032 +:102DD0003E492068884236D100BF3A48C06940F475 +:102DE00000303849C8610846C06900F400300190DD +:102DF00000BF00BF00BF0846806940F00400886142 +:102E00000846806900F00400019000BF00BF042064 +:102E10000290022003900320059002A92A48FEF7A1 +:102E200015FA0820029000200390049002A9264879 +:102E3000FEF70CFA002201212620FEF72BFC2620AB +:102E4000FEF718FC3AE022492068884236D100BFDC +:102E50001C48C06940F480201A49C8610846C0690E +:102E600000F48020019000BF00BF00BF08468069C9 +:102E700040F0080088610846806900F00800019071 +:102E800000BF00BF081502900220039003200590A8 +:102E900002A91048FEF7DAF94FF400600290002012 +:102EA0000390049002A90B48FEF7D0F900220221FA +:102EB0002720FEF7EFFB2720FEF7DCFB06B010BD56 +:102EC000003801400010024000080140004400406A +:102ED00000480040000C014070B504460D461646FF +:102EE00094F8420020280BD105B10EB9012070BD25 +:102EF0000020206332462946204600F0C9FFF6E74D +:102F00000220F4E710B5044620492068884216D113 +:102F10001F480088FF2808D81E490A781C490888DD +:102F2000411C1B4B19801C490A54FEF72DFB1B4901 +:102F30000860012217491A48FFF7CEFF24E019491B +:102F40002068884217D118480088B0F5007F08D261 +:102F500016490A7814490888411C134B19801449F2 +:102F60000A54FEF711FB1349086001220F49124869 +:102F7000FFF7B2FF08E011492068884204D101221E +:102F80000F491048FFF7A8FF10BD000000380140AE +:102F900006000020BC000020CC010020080000201A +:102FA000240D0020004800400C00002005000020F7 +:102FB000CC02002010000020B40D0020004400408E +:102FC000040000206C0D00202DE9F84F04460E4649 +:102FD000174699464FF0000A94F8410020284AD13C +:102FE00006B117B90120BDE8F88F002060642120E8 +:102FF00084F84100FEF7C8FA8246A784E784A068F7 +:10300000B0F5805F04D1206910B90025B04602E018 +:1030100035464FF000081BE0534600228021204631 +:10302000CDF8009000F084FF08B10320DBE745B93C +:10303000B8F80000C0F308002168486008F10208F1 +:1030400003E02878216848606D1CE08C401EE08415 +:10305000E08C0028E0D15346002240212046CDF8E4 +:10306000009000F065FF08B10320BCE7202084F841 +:1030700041000020B7E70220B5E710B5034693F8FA +:103080004100202813D101B10AB9012010BD1962F5 +:103090009A84DA8400205864212083F8410018685B +:1030A000C06840F080001C68E0600020EEE702206D +:1030B000ECE7000010B504460B492068884203D1B4 +:1030C000002000F081FA0DE008492068884202D112 +:1030D00000F05CFD06E006492068884202D102202B +:1030E00000F072FA10BD00000038014000440040BA +:1030F0000048004000BFFEE70021002009E0074A29 +:1031000002EB001292791AB1012282400A43D1B235 +:10311000401C0428F3DB0846704700002000002014 +:1031200070B5002512E0114800EB0514A188206855 +:10313000FEF71CFA08B1012000E00020A071A07980 +:1031400020720120E0710020E0606D1C042DEADB9C +:10315000002007490860012006490870FFF7CCFFEE +:103160000446214604A000F053FC70BD200000205E +:1031700060000020640000205B494F5D20496E69BB +:1031800074204F4B2C20696E697469616C207374D4 +:10319000617465733A203078253032580D0A00008A +:1031A0002DE9F041FEF7F0F907461C480068381A8F +:1031B0000A2801D2BDE8F08118480760002628E0FF +:1031C000174800EB0614A1882068FEF7CFF908B174 +:1031D000012000E000200546207AA84203D000200C +:1031E000E071257214E0E079032803DAE079401CED +:1031F000E0710DE0A079A8420AD0A571E068401CFA +:10320000E0600848007818B1F0B2294603F06AFF80 +:10321000761C042ED4DB00BFCCE700006000002049 +:10322000200000206400002000B585B0002001903F +:1032300002900390049000BF3C48806940F0100069 +:103240003A4988610846806900F01000009000BF8C +:1032500000BF00BF0846806940F020008861084632 +:10326000806900F02000009000BF00BF00BF08464A +:10327000806940F0040088610846806900F004001D +:10328000009000BF00BF00BF0846806940F0080002 +:1032900088610846806900F00800009000BF00BF08 +:1032A000012280212248FEF769F9012205212148E7 +:1032B000FEF764F9002241F208211E48FEF75EF98C +:1032C00000224FF401411A48FEF758F948F28010E5 +:1032D000019001200290002003900220049001A997 +:1032E0001348FDF7B3FF41F20D2001900120029039 +:1032F000002003900220049001A90E48FDF7A6FFCC +:1033000002200190002002900120039001A90948A9 +:10331000FDF79CFFF020019000200290039001A98E +:103320000448FDF793FF05B000BD00000010024007 +:1033300000080140000C014010B50E480E4908601D +:103340004FF48270486000210B488160C1600161C8 +:1033500041614FF4007181610021C16101624162EC +:1033600081620A21C162FEF73DFD08B1FDF7D3FE7F +:1033700010BD000000380040CC0C002000B587B024 +:1033800000200390049005900690019002904FF069 +:10339000804014490860472048600021114881603E +:1033A0004FF6FF71C160002101618161FFF7DAF81A +:1033B00008B1FDF7B0FE4FF48050039003A909480F +:1033C000FFF760F908B1FDF7A6FE0020019002901A +:1033D00001A90448FFF784F808B1FDF79CFE07B087 +:1033E00000BD00003818002010B50B480B490860DC +:1033F0004FF416504860002108488160C1600161A7 +:103400000C21416100218161C161FFF761FC08B1BC +:10341000FDF781FE10BD000000380140240D0020A2 +:1034200010B50B480B4908604FF4E13048600021AB +:1034300008488160C16001610C2141610021816106 +:10344000C161FFF745FC08B1FDF765FE10BD000046 +:10345000004400406C0D002010B50B480B4908607B +:103460004FF4E1304860002108488160C16001618B +:103470000C21416100218161C161FFF729FC08B184 +:10348000FDF749FE10BD000000480040B40D0020CB +:1034900000BFFEE70146032901DB03A07047044893 +:1034A00050F82100FAE70000554E4B4E4F574E00A2 +:1034B0008881000870B5002520E06B206843114921 +:1034C00001EB8004104850F8250020600F4850F8A8 +:1034D0002500606004F1080003F09DF904F19000FC +:1034E00004F0A5F8002004F5CE7404F8020C206066 +:1034F0006060A06001202073681CC5B2032DDCDB76 +:1035000070BD0000341300207C8100088881000811 +:103510002DE9F04105460F469046032D03DA17B119 +:10352000B8F1000F01D1BDE8F081012D04D1414671 +:10353000384600F08DFAF6E76B2068430C4901EB42 +:10354000800494F8A80100B9EDE74246394604F139 +:10355000900004F077F80646002E07DDD4F8A001AD +:103560003044C4F8A001284604F024F800BFDAE78C +:103570003413002070B505460C4604B970BD2046D2 +:10358000FCF713FE86B2324621462846FFF7C0FFFD +:1035900000BFF3E770B5002411E06B2060430949D8 +:1035A00001EB800595F8A80100B906E0012C00D1D7 +:1035B00003E0204603F0FEFF00BF601CC4B2032CF2 +:1035C000EBDB70BD34130020F8B50546032D00DB9E +:1035D000F8BD012D02D100F0D9FAF9E76B2068435C +:1035E000164901EB800606F19004002772B6002010 +:1035F00084F80601B4F80401002816DDB4F80201CD +:10360000205C009004F581742188481CC11700EBF0 +:1036100011610912A0EB012121806088401E6080A9 +:1036200001202071A4F58174012762B627B101221F +:1036300069463068FFF721FD00BFC9E73413002059 +:1036400000BFFEE7014601F00F01092903DC01F18B +:103650003000C0B2704701F13700C0B2FAE77047DE +:1036600008B508490968C9084FF47A72B1FBF2F14C +:103670004143009100BF00BF00994A1E00920029FB +:10368000F9D108BD9800002010B500224FF4004188 +:103690000548FDF773FF00200449087004490860DD +:1036A00004A000F0B5F910BD000801406C00002036 +:1036B000700000205B52454C41595D20496E697491 +:1036C000204F4B2C2073746174653D4F46460D0AA4 +:1036D00000000000F8B504460E4615466068B0F5D7 +:1036E000827F0DD1A068B0F5004F03D0A068B0F57F +:1036F000806F05D12068006820F0400021680860D4 +:103700006068B0F5827F11D1A068B0F5806F0DD1EF +:103710003346002201212046009500F02BF898B195 +:10372000606D40F0200060650320F8BD3346002244 +:1037300080212046009500F01DF828B1606D40F012 +:10374000200060650320F0E70020EEE7F8B50446AE +:103750000D4616462B46002280212046009600F09A +:1037600009F828B1606D40F0200060650320F8BDC5 +:103770000020FCE72DE9F84F04460D4690461E4612 +:10378000DDF82890FDF700FFA0EB0900371AFDF7E0 +:10379000FBFE82462C480068C0F3CB307843009093 +:1037A00045E0701C002842D0FDF7EEFEA0EB0A00B9 +:1037B000B84200D2A7BB2068406820F0E000216832 +:1037C00048606068B0F5827F0DD1A068B0F5004F09 +:1037D00003D0A068B0F5806F05D12068006820F0A4 +:1037E000400021680860A06AB0F5005F0DD100BFFD +:1037F0002068006820F40050216808602068006894 +:1038000040F400502168086000BF012084F8510096 +:1038100000BF002084F8500000BF0320BDE8F88FEF +:10382000FFE7009800B900270098401E009020682C +:1038300080682840A84201D1012000E000204045D6 +:10384000AFD10020EAE7000098000020704710B5D3 +:1038500003F07EFEFDF79EFE10BD00B58FB028215F +:1038600005A8FCF797FC14216846FCF793FC01209F +:103870000590000406900020079001200990022086 +:103880000C90C1030D914FF4E0110E9105A8FEF7C5 +:1038900077F808B1FDF73FFC0F200090022001905F +:1038A000002002904FF480600390002004900221D9 +:1038B0006846FDF741FF08B1FDF72DFC0FB000BDD4 +:1038C0007047000010B50248FEF763FF10BD00000E +:1038D0003818002010B50268184B984208D0B0F193 +:1038E000804F05D0164B984202D0164B984203D118 +:1038F00022F070024B681A43104B984208D0B0F186 +:10390000804F05D00E4B984202D00E4B984203D107 +:1039100022F44072CB681A4322F080034C6943EAD8 +:10392000040202608B68C3620B688362034B984297 +:1039300001D10B6903630123436110BD002C0140D9 +:10394000000400400008004030B50C46816821F4B6 +:103950007F4142EA032525432943816030BD0A4661 +:10396000816821F0700142F00703194381607047BC +:1039700030B50B461446026A056A25F0010505625A +:10398000816921F0F00141EA041122F00A021A4390 +:103990008161026230BD30B50B461446026A056A89 +:1039A00025F010050562816921F4704141EA043176 +:1039B00022F0A00242EA03128161026230BD0000DF +:1039C00010B500200849A1F80002A1F80202A1F8F0 +:1039D000040281F80602A1F808024FF4007103A066 +:1039E00000F016F810BD00005C0E00205B5541523F +:1039F00054325D20496E6974204F4B2C20627566ED +:103A00006665722073697A653A2025640D0A0000A4 +:103A10000FB410B5A2B0249818B922B010BC5DF84C +:103A200014FB25A80190802102A8019B249A00F094 +:103A30001FFC044600200190002C06DB802C00DBDC +:103A40007F24A1B202A800F003F800BFE5E7000060 +:103A5000F8B504460D4605B104B9F8BD00260027A7 +:103A600072B600202AE02549B1F80412B1F5007FB2 +:103A700007DB2249B1F80812491C204AA2F80812B3 +:103A80001EE0215C1D4AB2F800221C4B99541A46D4 +:103A9000B2F80022511CCA1701EBD2525212A1EB0C +:103AA0004222A3F800221946B1F80412491C1A4612 +:103AB000A2F80412711C8EB2411C88B2A842D2DB5B +:103AC00000BF002E08DD0D4890F8060220B9012045 +:103AD0000A4981F80602012762B66FB172B607483B +:103AE000B0F802020549085C009062B601226946FE +:103AF0000348FFF7C2FA00BF00BFAEE75C0E00202C +:103B00006C0D002070B5044604B970BD2046FCF76A +:103B10004CFB85B229462046FFF79AFF00BFF4E729 +:103B200038B572B6174890F8060218B91548B0F8BB +:103B3000040208B962B638BD1248B0F80242014624 +:103B4000B1F80212481CC11700EBD1514912A0EB89 +:103B500041210C4AA2F802121046B0F80402401E9D +:103B60001146A1F80402012081F806020846005D12 +:103B7000009062B6012269460348FFF77EFA00BF53 +:103B8000D9E700005C0E00206C0D002038B5002540 +:103B900072B60020164981F806020846B0F8040201 +:103BA00000281CDD0846B0F80242B1F80212481C99 +:103BB000C11700EBD1514912A0EB41210C4AA2F8E8 +:103BC00002121046B0F80402401E1146A1F8040289 +:103BD000012081F806020846005D0090012562B6CA +:103BE00025B1012269460348FFF747FA38BD0000B6 +:103BF0005C0E00206C0D002070B505466C6A00203C +:103C0000E085E0842046FEF79DFE70BD00BF00BF4A +:103C100002680C3252E8002F22F4907102680C32D4 +:103C200042E80013002BF3D100BF00BF00BF0268C1 +:103C3000143252E8002F22F001010268143242E8E7 +:103C40000013002BF3D100BF016B01290ED100BF7F +:103C500000BF02680C3252E8002F22F01001026807 +:103C60000C3242E80013002BF3D100BF202180F872 +:103C7000421000210163704710B504462068C068F7 +:103C800020F040002168C860202084F841002046D0 +:103C9000FFF710FA002010BDF8B5044694F8420072 +:103CA000222875D1A068B0F5805F0CD1206950B989 +:103CB0000025A66A20684068C0F308003080A06A2A +:103CC000801CA06215E0A56A0026A068B0F5805FA0 +:103CD00003D0A06828B9206918B920684068287006 +:103CE00004E02068406800F07F002870A06A401C53 +:103CF000A062E08D401E80B2E085002846D1206899 +:103D0000C06820F020002168C8602068C06820F4E6 +:103D100080702168C8602068406920F00100216837 +:103D20004861202084F8420000206063206B012855 +:103D300026D10020206300BF00BF21680C3151E86C +:103D4000001F21F0100021680C3141E80002002A18 +:103D5000F3D100BF2068006800F0100010280AD1DD +:103D600000BF002000902068006800902068406834 +:103D7000009000BF00BFA18D2046FEF7E1FD02E0EC +:103D80002046FFF7BFF80020F8BD01E00020FBE768 +:103D90000220F9E770B504462168096921F4405111 +:103DA000E2681143226811612269A16811436269C6 +:103DB00041EA02052168C96841F20C629143294336 +:103DC0002268D1602168496921F44071A2691143D8 +:103DD000226851612D4A2168914202D1FDF788FD88 +:103DE00001E0FDF775FD00EBC00101EB0011626819 +:103DF0009200B1FBF2F100EBC00202EB001263682B +:103E00009B00B2FBF3F26423B2FBF3F202EBC203BA +:103E100003EB0212A1EB8201322202EB01116422B8 +:103E2000B1FBF2F101F0F00100EBC00202EB001275 +:103E300063689B00B2FBF3F26423B2FBF3F201EB85 +:103E4000021200EBC00101EB001163689B00B1FBA3 +:103E5000F3F100EBC00303EB00136668B600B3FB9D +:103E6000F6F36426B3FBF6F303EBC30606EB03138A +:103E7000A1EB8301322303EB01116423B1FBF3F1C6 +:103E800001F00F0111442268916070BD00380140BB +:103E900010B5034699629A85DA850020586422207D +:103EA00083F84200186928B11868C06840F480702F +:103EB0001C68E0601868406940F001001C6860619F +:103EC0001868C06840F020001C68E060002010BD49 +:103ED000014691F84100212828D18868B0F5805F1B +:103EE0000BD1086948B90A6A1088C0F308000B684A +:103EF0005860086A801C086205E00B6A581C08625A +:103F000018780B685860C88C401E80B2C88458B9B5 +:103F10000868C06820F080000B68D8600868C06836 +:103F200040F040000B68D860002070470220FCE79A +:103F30002DE9F04104460D4617469846069E34E0AA +:103F4000701C88B32EB1FDF71FFBA0EB0800B04238 +:103F50002BD900BF00BF21680C3151E8001F21F4AC +:103F6000D07021680C3141E80002002AF3D100BF73 +:103F700000BF00BF2168143151E8001F21F001008B +:103F80002168143141E80002002AF3D100BF20204B +:103F900084F8410084F8420000BF002084F840000B +:103FA00000BF0320BDE8F081FFE7206800682840DB +:103FB000A84201D1012000E00020B842C0D000207A +:103FC000F0E7000010B50248FEF710FD10BD00003C +:103FD000240D002010B50248FEF708FD10BD0000BA +:103FE0006C0D002010B50248FEF700FD10BD00006A +:103FF000B40D002000BFFEE738B504461A49C86872 +:10400000804719494869804700BF1748406A10B186 +:104010001548806A70B91448016AC4F3074088479C +:104020001148016AC4F307208847E0B20E4A116ABA +:1040300088470DE0200C8DF80000200A8DF8010063 +:10404000E0B28DF8020008480321826A6846904772 +:104050000549C86980470546034988698047024980 +:1040600008698047284638BDF8000020F8B50446A6 +:104070000E4617461F49C86880471E494869804751 +:1040800000BF1C48406A10B11A48806AC0B919487C +:10409000016AC4F3074088471648016AC4F3072041 +:1040A0008847E0B2134A116A8847002505E01149A4 +:1040B000C86980477055681C85B2BD42F7DB12E0C5 +:1040C000200C8DF80000200A8DF80100E0B28DF878 +:1040D000020008480321826A68469047054839462D +:1040E000426A304690470349886980470149086918 +:1040F0008047F8BDF800002038B504460D461A493F +:10410000C868804718494869804744F00404164845 +:10411000806A90B91448016AC4F30740884712487E +:10412000016AC4F307208847E0B20F4A116A884742 +:104130000D48016A284688470FE0200C8DF80000E2 +:10414000200A8DF80100E0B28DF802008DF80350CE +:1041500005480421826A6846904703498869804778 +:1041600001490869804738BDF8000020F8B50446C9 +:104170000E4617461E49C86880471D494869804752 +:1041800044F004041A48806AC0B91948016AC4F3AB +:10419000074088471648016AC4F307208847E0B201 +:1041A000134A116A8847002505E0705D104A116ABC +:1041B0008847681C85B2BD42F7DB12E0200C8DF801 +:1041C0000000200A8DF80100E0B28DF802000848D6 +:1041D0000321826A6846904705483946826A30461C +:1041E0009047034988698047014908698047F8BDBD +:1041F000F80000200FB4054B10B503A9044A02983B +:1042000000F03EF910BC5DF814FB0000DD4F000823 +:104210007C0100200FB47CB50C0009AD01D0611EFB +:1042200000E00021CDE90001064B6A4629460898C6 +:1042300000F026F9002C02D0009A002111707CBCFD +:104240005DF814FB874B00080FB4084B10B504A9A8 +:1042500002AA039800F014F9044602A9002000F015 +:104260009DFC204610BC5DF814FB00009D4B00082F +:104270007CB50C001D461646014601D0601E00E0CC +:104280000020CDE90010064B6A462946304600F072 +:10429000F7F8002C02D0009A002111707CBD0000BC +:1042A000874B000802480068C0F3022070470000F6 +:1042B0000CED00E010B5002804DB0A07130E054AD8 +:1042C000135406E00A07140E034A00F00F031B1FE5 +:1042D000D45410BD00E400E018ED00E002E008C88E +:1042E000121F08C1002AFAD170477047002001E070 +:1042F00001C1121F002AFBD1704700002DE9FF5FAA +:1043000082B00021DDE90430020DDDF840B0034346 +:1043100018D044F61050A2F2FF32424315141198FF +:1043200001281FD0A5EB0B00401C5FEA000A4FF0EC +:1043300000064E4FDFF83891B046504615D5CAF109 +:10434000000413E0119801244AA3012801D16FEA67 +:104350000B010298119AC0E90031C0E9024206B08F +:10436000BDE8F09FCBF10000DFE704460021404AA2 +:10437000491842EB0450CDE9001012E0E00707D0E5 +:1043800032463B4640464946FCF719F98046894685 +:1043900032463B4610461946FCF711F906460F46D1 +:1043A0006410002CEAD1DDE90401DDE90023BAF153 +:1043B000000F06DAFCF703F942464B46FCF7FFF81C +:1043C00005E0FCF76EF942464B46FCF76AF90446F5 +:1043D0000E460022284BFCF7EBF903D84FF0FF30D4 +:1043E000014607E00022254B20463146FCF740F805 +:1043F000FCF7C6F9102409E0002C0ADB0A2200238E +:10440000FBF7C2FF039B30321A55641E50EA0102CB +:10441000F2D1641C039AC4F111031444119A012AC5 +:1044200003D0012208430DD10AE0084304D0002044 +:104430004FF0110B119072E7A3EB0B056D1E0DE011 +:104440005B4504DD4FF0000205F1010504E003DAED +:104450004FF00002A5F10105002AECD00298119955 +:10446000C0E90231C0E9004579E7000000001440CE +:104470000000F03F300000000000F0430000E03F8B +:104480002DE9FF4F95B09A46884606460025EEE195 +:10449000252877D100242746F94A0121039400E01A +:1044A000044316F8013F203B01FA03F01042F7D114 +:1044B00030782A2811D06FF02F033078A0F1300225 +:1044C000092A16D8039A44F0020402EB820203EB95 +:1044D00042021044761C0390EFE758F8042B039235 +:1044E000002A03DA504244F40054039044F00204DA +:1044F000761C30782E2816D116F8010F44F00404EB +:104500002A280DD06FF02F023078A0F13003092B4C +:1045100009D807EB870302EB4303C718761CF3E7C0 +:1045200058F8047B761C30786C280FD006DC4C28B9 +:1045300017D068280DD06A2814D104E0742810D050 +:104540007A280FD10DE044F400140AE044F48014FA +:1045500001E044F440147278824202D104F58014E0 +:10456000761C761C307866280BD013DC582877D060 +:1045700009DC002875D04528F6D04628F4D0472815 +:104580001AD193E118E0632835D0642879D06528E2 +:1045900012D18BE1702873D008DC6728F1D069282C +:1045A0006FD06E280DD06F2806D1ACE073282CD0C8 +:1045B000752874D0782853D05246179990476D1CAF +:1045C00054E1C4F30250022809D003280DD0D8F8D2 +:1045D000001004280DD00D6008F1040846E1D8F859 +:1045E0000010EA17C1E90052F6E7D8F800100D8074 +:1045F000F2E70D70F0E718F8041B8DF800100020AA +:104600008DF80100EB46012003E058F804BB4FF0A1 +:10461000FF3061074FF0000102D40DE009F1010104 +:104620008946B9420FDA8145F8DB1BF809100029E9 +:10463000F4D108E009F1010189468142FADB1BF857 +:1046400009100029F6D103985346A0EB090721462B +:104650003846179A00F080FA284400EB090507E075 +:1046600044E008E10DE01BF8010B52461799904712 +:10467000B9F10109F7D2534621463846179AF2E0BC +:1046800039E00A21C4F302524FF0000B0091022AD4 +:1046900006D058F8040BC117032A09D00AE023E01A +:1046A00008F1070020F00702F2E80201904605E059 +:1046B00000B2C117042A01D140B2C117002906DA9D +:1046C0000A460021404261EB02012D2202E0220550 +:1046D00004D52B228DF80420012203E0E20701D04B +:1046E0002022F7E7914657E00A2100E010214FF021 +:1046F000000B00910BE010214FF0000B44F004047C +:104700000827009103E008204FF0000B0090C4F34D +:104710000252022A05D058F8040B0021032A08D0BF +:1047200008E008F1070020F00702F2E802019046D5 +:1047300003E080B2042A00D1C0B24FF00009220782 +:104740002AD53278702A07D0DDF800C08CF0100C22 +:104750005CEA0B0C05D00EE040228DF8042001220B +:1047600008E050EA010306D030238DF804308DF8BC +:10477000052002229146009B83F0080353EA0B03B5 +:104780000AD150EA010201D1620705D530228DF825 +:1047900004204FF001097F1E3278582A04D039A234 +:1047A0000C920CAA02920BE03BA2F9E75B46009A3E +:1047B000FBF7EAFD0C9B9B5C029A521E029213705F +:1047C00050EA0102F2D1029804A9081A00F1200B64 +:1047D000600702D524F4803400E001275F4502DD44 +:1047E000A7EB0B0000E0002000EB0B01009003980A +:1047F0004944401A0390E00306D453462146179AD1 +:10480000039800F0A9F90544002706E001A85246E4 +:10481000C05D179990476D1C7F1C4F45F6DBE00388 +:104820000CD553462146179A039800F095F9054494 +:1048300004E030205246179990476D1C0099481E9D +:1048400000900029F5DC08E00298029952460078B1 +:10485000491C0291179990476D1CBBF10001ABF107 +:10486000010BF1DC5BE100F065F90544761C307862 +:1048700000287FF40DAE19B02846BDE8F08F000087 +:104880000928010030313233343536373839616226 +:1048900063646566000000003031323334353637EA +:1048A000383941424344454600000000600700D4C7 +:1048B000062708F1070020F00700F0E802238046F1 +:1048C00003F0004C5FEA0C0001D097A009E020053E +:1048D00001D596A005E0E00701D095A001E0AFF278 +:1048E0004C001390307823F0004365280CD006DC90 +:1048F000452809D046281DD047287FD13BE06628AF +:1049000018D067287AD136E00021112F01DB112061 +:1049100000E0781CCDE9000104A90CA8FFF7EEFC2B +:10492000DDE90D010C9A4FF0000B07F1010910921F +:1049300000914EE04FF000400097CDE9011004A92E +:104940000CA8FFF7DBFCDDE90D020C9B0F994FF083 +:10495000000B91461093009211B9791C00EB0109EC +:10496000B7EB090003D4C0F1FF3B07F10109A9EB44 +:104970000700019042E0012F00DA01270021112FEA +:1049800001DD112000E03846CDE9000104A90CA8A2 +:10499000FFF7B4FCDDE90D010C9A00914FF0000B1C +:1049A000B946109221070FD4009A4A4503DA91467E +:1049B00001E0A9F10109B9F1010F05DD109AA9F192 +:1049C0000101515C3029F4D0B84202DA10F1040F31 +:1049D00003DA0121CDE9011010E0002803DC834453 +:1049E000A9EB000102E0411C494500DD8946A0EB2E +:1049F0000B00401C01904FF000400290200705D4AE +:104A00000198484502DB4FF0FF30019000208DF8FF +:104A10004B0002980DF14B07B0F1004F25D002205A +:104A20000C902B200D90029800280CDA4042029046 +:104A30002D200D9007E00A210298FBF78FFC303102 +:104A4000029007F8011D0C99481E0C900029F2DC19 +:104A500002980028EFD1791E0D980870307800F088 +:104A6000200040F0450007F8020D11A8C01BC01D32 +:104A700002901398007800B1012000EB0901019821 +:104A800001EBE071029801440398401A401E039024 +:104A9000E00306D453462146179A039800F05CF8C9 +:104AA00005441398007818B15246179990476D1C29 +:104AB000E00323D553462146179A039800F04CF89B +:104AC00005441BE0BBF1000F07DB0098584504DDEF +:104AD0001098179910F80B0001E0179930205246F2 +:104AE000904701980BF1010B401E05F10105019063 +:104AF00004D12E205246179990476D1CB9F1000140 +:104B0000A9F10109DEDC05E017F8010B52461799FF +:104B100090476D1C0299481E02900029F4DC534610 +:104B20002146179A03989EE62D0000002B000000F6 +:104B3000200000002DE9F041044600251E461746DE +:104B4000880404D405E039462020B0476D1C641E5B +:104B5000F9D52846BDE8F0812DE9F041044600254D +:104B60001E469046C80301D5302700E02027880460 +:104B700004D505E041463846B0476D1C641EF9D5A2 +:104B80002846BDE8F0814A68002A06D00A68531C0E +:104B90000B6010704868401E486070470A68531CDC +:104BA0000B601070704710B502460023002003E030 +:104BB000145C6340441CE0B28842F9DB184610BD27 +:104BC00038B54FF4D850FFF717FA054603214FF4D4 +:104BD000D850FFF791FA41F288300F4B11220FA104 +:104BE00000901348007802F0E3FA044629464FF497 +:104BF000D850FFF781FA04F10D0008B9012038BD43 +:104C000001F030FE0B48046800BF0A480068001B32 +:104C10000228FAD30020F2E7390100204348454337 +:104C20004B5F49505F434F4E464C49435400000090 +:104C30002C0100205001002010B50124254890F9D6 +:104C40000000022829DA24480068244909688842BB +:104C50003DD2234890F90000012804D0022805D055 +:104C6000042809D105E001F0FDFE06E002F046F857 +:104C700003E002F043F800E000BF00BF0020174946 +:104C80000860084600680A30134908601148007837 +:104C9000401C40B20F49087019E0114890F900001B +:104CA000012804D0022807D004280CD105E00020F8 +:104CB0000B490870002407E000BF01F0D3FE01207B +:104CC0000749087000E000BF00BF01F051FA20461C +:104CD00010BD00004A0100205401002050010020B6 +:104CE0004901002010B5044600BF082C02DD4FF03A +:104CF000FF3010BD00BFA100491C4FF4807202EBD1 +:104D0000C1001021FFF7F8F900BFA100491C4FF4C2 +:104D1000807202EBC100FFF76FF90028F5D1A10006 +:104D2000491C4FF4007202EBC1001F21FFF7E4F9A8 +:104D30000120A0400F49098881430E4801800120CD +:104D4000A0400D49098881430B48018000200B4990 +:104D500021F814000A49085500BFA100491C4FF46E +:104D6000407202EBC100FFF747F90028F5D101209E +:104D7000BFE70000EC000020EE00002080200020B3 +:104D8000F0000020F8B505460C461448006878B1DC +:104D90002046FBF70AFA86B23246214628460F4BD8 +:104DA0001B6898470E480068401C0D49086008E0E1 +:104DB00021462846FEF7DEFB09480068401C0849EA +:104DC00008602846FEF766FB0646334605A208A1A2 +:104DD00001200094FCF73AF9F8BD000074000020AF +:104DE0007C00002054585B25735D3A202573000039 +:104DF000524F55544552000070B505460E461020DE +:104E000000F070FD044624B905A0FFF7F3F9002077 +:104E100070BD256066600020A060E0602046F7E776 +:104E20004D656D6F727920616C6C6F636174696F31 +:104E30006E206661696C65642E0A00002DE9FC41F4 +:104E400006460C460025002000900190102E7CD2D2 +:104E5000DFE806F0080B1A161E2226323F54575B75 +:104E60005F60647003F03BF872E01CB1009400983E +:104E700008300190DDE9000102F0C6FEBDE8FC81CA +:104E8000208802F03CFE63E002F066FE20805FE0D6 +:104E9000208802F0C9FF5BE002F073FE208057E03B +:104EA000208801124FF49850FFF726F921784FF42B +:104EB000A050FFF721F94BE04FF4A050FFF79CF80A +:104EC00007464FF49850FFF797F807EB0020208033 +:104ED0003EE02148807820701F48C07860701E48EE +:104EE0000079A0701C484079E0701B4880792071DF +:104EF0001948C07960710020A07129E003F0BDF865 +:104F000026E0204603F0D3F822E0204603F05EF8C6 +:104F10001EE01DE0207803F0F6F8AFE703F09EF8FE +:104F2000C5B268B2401C18B94FF0FF30A6E70CE0DC +:104F300025700DE003F086F8C5B268B2401C10B9C8 +:104F40004FF0FF309AE7257002E04FF0FF3095E711 +:104F500000BF002092E70000F800002010B50422F6 +:104F600008494FF47060FFF701F9042206494FF435 +:104F7000A060FFF7FBF8042204499001FFF7F6F860 +:104F800010BD000039010020410100203D0100203A +:104F900010B580210020FFF7AFF80020FFF72CF8B4 +:104FA000062203494FF41060FFF7E0F810BD00003F +:104FB0006801002010B580210020FFF79DF8002037 +:104FC000FFF71AF8FFF7CAFF062203494FF41060F3 +:104FD000FFF7CCF810BD00006801002013B50C46A7 +:104FE00001216846FEF734FD012269460220FEF7E2 +:104FF0008FFA00981CBD000010B5002821D0114B7D +:105000000022001F196803E0814203D80A4649685C +:105010000029F9D152B11368841A9C4204D1006866 +:1050200018441060104602E0506000E0186039B18A +:1050300002680B1A934203D10B681A440260496854 +:10504000416010BD800100200649097801700549C2 +:10505000497841700349897881700249C978C170E3 +:105060007047000045010020064909780170054994 +:10507000497841700349897881700249C978C170C3 +:10508000704700003D01002006490978017005497C +:10509000497841700349897881700249C978C170A3 +:1050A0007047000039010020064909780170054960 +:1050B000497841700349897881700249C978C17083 +:1050C000704700004101002070B50446002500260D +:1050D00000BFA100491C4FF4185202EBC100FEF7BB +:1050E0008BFF0646A100491C4FF4185202EBC10188 +:1050F00001F58070FEF780FF00EB062086B2AEB1AE +:10510000A100491C4FF4185202EBC100FEF774FFD6 +:105110000546A100491C4FF4185202EBC10101F5EC +:105120008070FEF769FF00EB052085B2B542D0D153 +:10513000284670BD70B504460025002600BFA100BA +:10514000491C4FF4005202EBC100FEF755FF064622 +:10515000A100491C4FF4005202EBC10101F580701F +:10516000FEF74AFF00EB062086B2AEB1A100491C53 +:105170004FF4005202EBC100FEF73EFF0546A100CE +:10518000491C4FF4005202EBC10101F58070FEF79B +:1051900033FF00EB052085B2B542D0D1284670BD63 +:1051A00010B5002208210248FCF7E8F910BD000004 +:1051B000000C014010B5012208210248FCF7DEF97D +:1051C00010BD0000000C014010B500224FF400712A +:1051D0000148FCF7D3F910BD000C014010B50122C5 +:1051E00051020248FCF7CAF910BD0000000C014052 +:1051F0000B48007800B17047002009E0002100EB67 +:105200000012084B995400EB00121A441174401C10 +:105210001028F3DB01200249087000BFEBE7000013 +:10522000890000202412002070B505460DB12878B1 +:1052300008B9012070BDFFF7DBFF002414E004EB88 +:1052400004100B49085C70B104EB0411084A88187B +:105250000F222946FAF7B0FF28B904EB04100449DD +:105260000844007CE6E7641C102CE8DB0120E1E741 +:10527000241200202DE9F047ADF6180D07468846A8 +:105280009246B900491C4FF4407202EBC100FEF790 +:10529000B3FE002865D0222875D13846FFF714FFE9 +:1052A000051E5DDDB5F5006F01DD4FF400650DF500 +:1052B0000160031D2A4641460090384600F08AFDF1 +:1052C0000446002008F80400BDF810189DF81708DF +:1052D0008DE803019DF816389DF815289DF81418DF +:1052E0002BA0FEF787FF002C09DC2246394631A0AF +:1052F000FEF780FF20460DF6180DBDE8F087A5B239 +:1053000033A104A8FEF7A0FF814604A901EB090020 +:105310002A464146FAF725FF09EB050082B204A9A7 +:105320000020FEF7F5F8002617E0BDF81008009001 +:10533000A81B82B208EB06010DF61403384601F0F3 +:1053400037FF0446002C06DA2246394622A0FEF733 +:1053500051FF2046CFE7301986B2AE42E5D100BFFB +:1053600012E0002352460221384602F027F8044694 +:10537000B84201D02046BEE7524639461CA0FEF78F +:1053800039FF01E0FFE700BF00BF0120B3E70000E5 +:105390007265637620666F726D5B25642E25642EC0 +:1053A00025642E25645D5B25645D3A2025730D0A16 +:1053B0000000000025643A207265637666726F6DA6 +:1053C000206572726F722E20256C640D0A00000039 +:1053D0005B4E45545D00000025643A2073656E64A1 +:1053E000746F206572726F722E20256C640D0A0036 +:1053F00025643A4F70656E65642C20554450206CCE +:105400006F6F706261636B2C20706F7274205B250C +:10541000645D0D0A00000000FCF7C8F8FEF71DFAF5 +:10542000FDF702FFFDF7E0FFFDF786FFFDF7F8FF50 +:10543000FEF712F8FDF7A2FF5248FDF7E7F8FEF776 +:10544000BFFAFDF76DFEFBF721FCFEF71DF9FEF735 +:1054500031F8FBF72DFCFBF7D9FD0120FBF754FEDB +:1054600049A0FEF7C7FE4748FDF7D0F801224F4993 +:105470004F48FDF731FD01224E494F48FDF72CFD05 +:10548000002000F0AFFF01224C494D48FDF724FDFC +:105490004CA0FEF7AFFE02F0FFFB55A0FEF7AAFE00 +:1054A0005FA0FEF7A7FE6749674800F051FA67A0C2 +:1054B000FEF7A0FE70A0FEF79DFE002001F0F6F8BA +:1054C0004FF47A710A2001F01DF9002000F0BAFFB4 +:1054D00001F008F870A0FEF78DFE7BA0FEF78AFEB3 +:1054E000824800688249B0FBF1F4214681A0FEF7B2 +:1054F00081FE86A0FEF77EFE01F01AF901F002F8A7 +:105500008D48028850490020FFF7B4FE39E0FEF7CD +:1055100007FBFEF73FF8FDF743FE874802884A493C +:105520000020FFF7A7FE85480088002815DDFCF75E +:105530002BF883490968401A14280ED97F4802883D +:1055400080490220FDF7E4FF7C4802887D49012064 +:10555000FDF7DEFF0020794908807B48008800289D +:105560000FDDFCF711F879490968401A142808D9A9 +:105570007548028876490020FDF7CAFF002072496D +:105580000880C4E7381800200D0A5B44454255479F +:105590005D20312E20E590AFE58AA82054494D3298 +:1055A00020E4B8ADE696AD0D0A000000040000202E +:1055B0006C0D002005000020B40D0020BC00002070 +:1055C000240D00205B44454255475D20322E20E8E3 +:1055D000BF9BE585A52077697A636869705F696E0E +:1055E000697469616C697A6528290D0A00000000F8 +:1055F0005B44454255475D20332E2077697A6368C6 +:1056000069705F696E697469616C697A65282920BF +:10561000E68890E58A9FE8BF94E59B9E210D0A00ED +:105620005B44454255475D20342E20E8BF9BE5850D +:10563000A5206E6574776F726B5F696E6974282937 +:105640000D0A0000D0000020CC0400205B4445423D +:1056500055475D20352E206E6574776F726B5F69DC +:105660006E6974282920E68890E58A9FE8BF94E552 +:105670009B9E210D0A00000077697A63686970209B +:10568000554450206578616D706C6520737461724B +:105690007465640D0A0000000D0A3D3D3D3D3D3D31 +:1056A0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D2A +:1056B0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D1A +:1056C0003D3D0D0A000000004533322D3433335484 +:1056D00042482D5343204170706C69636174696F57 +:1056E0006E20537461727465640D0A009800002086 +:1056F00040420F0053797374656D20436C6F636B88 +:105700003A202564204D487A0D0A00003D3D3D3D7C +:105710003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DB9 +:105720003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DA9 +:105730003D3D3D3D0D0A0000140000200600002004 +:1057400008000020CC0100200C00002010000020E8 +:10575000CC0200207CB5062269464FF41060FEF7AB +:1057600085FC01205C49096808705B49096848703C +:105770000620594909688870002057490968C8708F +:1057800055480068051D55480068000E28705348AC +:105790000068000C687051480088000AA8704F48E3 +:1057A0000078E87000204C49096808814A48006880 +:1057B00000F10A05802028700020687046490968B9 +:1057C00008730021444800684173434800688173AE +:1057D00041480068C17300203F49096808740021EE +:1057E0003D48006841743C48006881743A4800684C +:1057F000C1740020384909680875002136480068DE +:10580000417535480068817533480068C1750020CE +:1058100031490968087600212F48006841762E48F2 +:10582000006881762C480068C1762D4800782A49A6 +:10583000096808772A48417827480068417728484E +:1058400081782548006881772548C178224800681A +:10585000C177234801792048006880F8201020484B +:1058600041791D48006880F82110062406E00021D7 +:10587000194800681C300155601CC4B2102CF6DBBE +:10588000002406E00021144800682C300155601CFB +:10589000C4B2402CF6DB002406E000210E4800686C +:1058A0006C300155601CC4B2802CF6DB63200A49C1 +:1058B000096881F8EC0082210748006880F8ED1043 +:1058C00053210548006880F8EE1063210248006803 +:1058D00080F8EF107CBD00005C0100205801002022 +:1058E00068010020F0B50B30154D20F007010024B1 +:1058F000144A0FE003688B420BD38B4205D95E1A22 +:1059000043184768C3E9006700E04368136002C0BA +:1059100004E0021D10680028ECD12046002802D1C6 +:10592000286808B10020F0BD064A07481060074A01 +:10593000121A22F00702C0E9002401202860D7E7EC +:10594000840100208001002094200020902200206B +:1059500070B506460C46204602F076FAA07D022875 +:105960000AD13146002001F007FF054625B9012084 +:10597000A075204602F068FA00F044F970BD0000FE +:105980002DE9FF414FF0000895480078FFF79CFB98 +:10599000071E0BDD01A802AB3A4600909148016852 +:1059A0008F48007800F016FA87B203E0002004B0B8 +:1059B000BDE8F081BDF8040043286CD18948006837 +:1059C000007F89490978884224D186480068407F51 +:1059D0008549497888421DD182480068807F824984 +:1059E0008978884216D17F480068C07F7E49C9788F +:1059F00088420FD17B48006890F820007A490979E5 +:105A0000884207D17748006890F8210076494979A3 +:105A1000884201D00020CAE77448007840B9734832 +:105A2000407828B97148807810B97048C07888B338 +:105A30009DF808006D490978884211D19DF8090048 +:105A40006A49497888420BD19DF80A0067498978EC +:105A5000884205D19DF80B006449C97888421BD063 +:105A60009DF8080062490978884211D19DF8090023 +:105A70005F49497888420BD19DF80A005C498978D2 +:105A8000884205D19DF80B005949C978884203D056 +:105A900000208CE700E0A0E052480468F034A7F151 +:105AA000F000051996E0207833284DD007DC70B15E +:105AB000012813D0032821D006287DD131E03528D4 +:105AC00007D0362860D0FF287ED12C4681E0641CA8 +:105AD0007FE0641C641C14F8018B7AE0641C641C75 +:105AE00014F8010B4349087014F8010B487014F8BE +:105AF000010B887014F8010BC8706AE0641C14F87C +:105B0000016B14F8010B3C49087014F8010B487044 +:105B100014F8010B887014F8010BC870301F04448E +:105B200057E0641C14F8016B14F8010B334908703A +:105B300014F8010B487014F8010B887014F8010B6D +:105B4000C870301F044444E0641C14F8016B14F85E +:105B5000010B2B49086014F8011B2948006801EB70 +:105B600000202749086014F8011B2548006801EB54 +:105B700000202349086014F8011B2148006801EB4C +:105B800000201F49086024E0641C14F8016B14F81D +:105B9000010B1649087014F8010B487014F8010B3A +:105BA000887014F8010BC8709DF80800104908703F +:105BB0009DF80900487000E006E09DF80A00887032 +:105BC0009DF80B00C87004E0641C14F8016B3444A9 +:105BD00000BF00BFAC42FFF466AF4FFA88F0E6E6C4 +:105BE0002C0100205C010020680100202D01002014 +:105BF00031010020410100203D010020450100202D +:105C00004C01002000B589B003A801F0CFFF9DF83A +:105C10002200022807D12B48FEF7ECFA2AA12CA07B +:105C2000FEF7E8FA06E02748FEF7E4FA26A132A0DC +:105C3000FEF7E0FA9DF811109DF810009DF80F2076 +:105C4000CDE9002002919DF80E309DF80D209DF8C1 +:105C50000C1033A0FEF7CEFA9DF8150000909DF8C9 +:105C600014309DF813209DF8121039A0FEF7C2FAE7 +:105C70009DF8190000909DF818309DF817209DF8A8 +:105C800016103BA0FEF7B6FA9DF81D0000909DF897 +:105C90001C309DF81B209DF81A103DA0FEF7AAFAB3 +:105CA00003A8407D009003A8037D9DF81F209DF868 +:105CB0001E103FA0FEF79EFA4548FEF79BFA09B07A +:105CC00000BD000008830008573535303000000063 +:105CD000202573206E6574776F726B20636F6E661C +:105CE000696775726174696F6E203A204448435049 +:105CF0000D0A0D0A00000000202573206E657477E0 +:105D00006F726B20636F6E66696775726174696F1D +:105D10006E203A207374617469630D0A0D0A0000E5 +:105D2000204D41432020202020202020203A2025E3 +:105D30003032583A253032583A253032583A2530E8 +:105D400032583A253032583A253032580D0A000080 +:105D5000204950202020202020202020203A2025CB +:105D6000642E25642E25642E25640D0A0000000093 +:105D7000205375626E6574204D61736B203A202547 +:105D8000642E25642E25642E25640D0A0000000073 +:105D9000204761746577617920202020203A2025F2 +:105DA000642E25642E25642E25640D0A0000000053 +:105DB00020444E532020202020202020203A20253F +:105DC000642E25642E25642E25640D0A0000000033 +:105DD0009C8200082DE9FC4704468A4616461D466B +:105DE000DDF82880002700BF082C02DD781EBDE802 +:105DF000FC8700BFA100491C002202EBC100FEF796 +:105E0000FBF8814600F00F00022804D0032803D0DD +:105E1000042803D101E000BF00BF02E06FF00400DE +:105E2000E5E700BF00BF16B96FF00D00DFE700BF68 +:105E3000A84830F81400E8B91AE02046FFF744F902 +:105E40000746A100491C4FF4407202EBC100FEF767 +:105E5000D3F810B96FF00300C9E70120A0409E49B4 +:105E60000988084010B10FB90020C0E707B100E071 +:105E7000E3E700BF09F00700022804D003287CD024 +:105E800004287BD158E0934830F81400E8BB08227E +:105E90006946204601F04EFDA100491C4FF4807276 +:105EA00002EBC1004021FEF727F900BFA100491C09 +:105EB0004FF4807202EBC100FEF79EF80028F5D186 +:105EC0009DF8000028709DF8010068709DF80200A0 +:105ED000A8709DF80300E8709DF80400A8F8000081 +:105EE0009DF8050098F8001000EB0120A8F80000CC +:105EF0009DF80600774921F814009DF8070011F875 +:105F0000141000EB0120734900E004E021F81400B4 +:105F10008020724908556F4830F81400B04201DD06 +:105F2000374602E06B4830F814703E463A46514618 +:105F3000204601F0FFFCA1E0664830F81400B8BB31 +:105F400002226946204601F0F5FCA100491C4FF4ED +:105F5000807202EBC1004021FEF7CEF800BFA10025 +:105F6000491C4FF4807202EBC100FEF745F800288F +:105F7000F5D19DF80000574901E02DE076E021F8C9 +:105F800014009DF8010011F8141000EB0120801E90 +:105F9000504921F81400084630F8140040F2EA5144 +:105FA000884206DD2046FEF79DFE6FF47A701EE7FC +:105FB00002E0802049490855464830F81400B042B4 +:105FC00001DD374602E0434830F814703A46514646 +:105FD000204601F0AFFC51E03E4830F81400A8BB69 +:105FE00006226946204601F0A5FCA100491C4FF499 +:105FF000807202EBC1004021FEF77EF800BFA100D5 +:10600000491C4FF4807202EBC100FDF7F5FF002838 +:10601000F5D19DF8000028709DF8010068709DF88A +:106020000200A8709DF80300E8709DF8040029495B +:1060300021F814009DF8050011F8141000EB012060 +:10604000244921F81400802024490855214830F8BB +:106050001400B04201DD374602E01E4830F81470EB +:106060003A465146204601F065FC07E03946204695 +:1060700001F0A2FC174820F8147000BF00BFA10077 +:10608000491C4FF4807202EBC1004021FEF734F846 +:1060900000BFA100491C4FF4807202EBC100FDF764 +:1060A000ABFF0028F5D10B4830F81400C01B09499C +:1060B00021F81400084630F8140030B10748005D9C +:1060C00040F001000549085502E000200349085549 +:1060D00038468CE680200020EC000020F0000020F4 +:1060E00000B131B9054A064B5A61064B044A936127 +:1060F00002E0034A5061916170470000417B000853 +:10610000F80000203F7B000800BF094A128802F413 +:106110000072002AF9D000B131B9064A044BDA61A5 +:10612000054B034A136202E0014AD06111627047D5 +:10613000F8000020D77E0008DD7E000800BF094A75 +:10614000128802F40072002AF9D000B129B9064B76 +:10615000044A5362054B936202E0024A5062916224 +:1061600070470000F8000020D57E0008DB7E0008A4 +:106170000020044908600A20034908600020034900 +:106180000870704750010020540100204A0100208F +:10619000002003490860034908600349086070470C +:1061A000B0000020B4000020B8000020014611B962 +:1061B0006FF0020070470248006808800020F9E78D +:1061C000B800002030B503460C460BB104B112B93B +:1061D0006FF0020030BD1448006818B9002010802C +:1061E000401EF7E700201080002115E00F48104DF9 +:1061F0002D68405D58540E480068401CC0F30900EB +:106200000B4D286008480068401E074D2860108824 +:10621000401C1080481C81B2A14203DA0248006889 +:106220000028E3D10020D5E7B8000020801C002022 +:10623000B40000200748006850B106480068401EBE +:10624000044908600846006810B901200249087036 +:1062500070470000C0000020C400002010B50221DB +:106260000D48FBF783F9A0B9FBF78EF9044607E068 +:10627000FBF78AF9001B642802D36FF0010010BD00 +:1062800002210548FBF772F90028F1D00220FAF745 +:10629000C9FF0020F3E70000000C0140054800782A +:1062A00010B94FF0FF30704700200249087000BF5E +:1062B000F9E70000AC00002010B5FFF769FF10BD42 +:1062C00010B504462046FFF771FF10BD70B50446B7 +:1062D0000D461646324629462046FFF773FF70BD2D +:1062E0000848007810B14FF0FF3070470020064991 +:1062F00008600649086006490860012001490870E5 +:106300000020F2E7AC000020B0000020B400002024 +:10631000B800002070B50546FFF7A0FF04460CB199 +:10632000204670BD35B1012D0FD0022D18D0032DA0 +:106330002CD120E0002280211C48FBF71FF900220D +:1063400001211B48FBF71AF923E00122802117489D +:10635000FBF714F9002201211548FBF70FF918E0AB +:10636000002280211148FBF709F90122114610484B +:10637000FBF704F90DE0012280210C48FBF7FEF841 +:10638000012211460A48FBF7F9F802E06FF002001B +:10639000C7E700BF0520FAF745FFFFF75FFF044698 +:1063A0000CB12046BDE70020BBE70000000801401B +:1063B000000C014070B504460D4604B115B96FF0EC +:1063C000020070BD4FF6FF732A4621460448FCF7D1 +:1063D000FBFD064616B16FF00100F2E70020F0E782 +:1063E000240D002070B505461348007810B14FF019 +:1063F000FF3070BDFFF774FF044614B14FF0FF305B +:10640000F7E735B90D480E490A680260097901714C +:1064100004E00A482968016029790171074800F001 +:10642000F1F804461CB1FFF739FF2046E1E70120EF +:10643000014908700020DCE79C0000209D0000203E +:10644000BE81000870B5054615B94FF0FF3070BD2C +:1064500028210F48F9F79EFE00200D49087081F8A9 +:106460002500084629680162297980F82410203027 +:1064700000F0C8F804460CB12046E8E7002000F020 +:10648000EDF804460CB12046E1E70020DFE700000C +:10649000880100202DE9F04104460D4616461F46AE +:1064A00014B10DB106B11FB94FF0FF30BDE8F08156 +:1064B0000A2D02DA4FF0FF30F8E72078542802D195 +:1064C0006078582802D04FF0FF30EFE73B46324665 +:1064D00002A1E01CF9F780FE0020E7E725642E25E5 +:1064E000642E000010B500F05DF804460CB12046A3 +:1064F00010BD01200249087081F825000020F7E74F +:106500008801002010B594B0254890F8250008B9FE +:1065100014B010BD2248007820B1012806D002280E +:1065200036D134E001201E49087035E00020039088 +:1065300003A904A801F0B6F840B30020029001902E +:10654000039881B201AB02AA04A8FFF7A3FF044697 +:10655000DCB913484068401C1149486002988861C2 +:10656000019848610846C0690199884202D20C49E5 +:106570000198C86100F058F9012000F043F9322079 +:10658000FAF750FE002000F03DF900BF04E003E000 +:1065900002200349087000BF00BF00BFB8E7000039 +:1065A0008801002010B50C48007810B96FF0050084 +:1065B00010BD0A48007810B16FF00100F8E7FFF74E +:1065C0007BFE044614B14FF0FF30F1E70120034990 +:1065D00008700020ECE700009C000020A2000020D2 +:1065E00010B50446C0200649087008462168C0F866 +:1065F0000110217941710621FFF7DCFE10BD00007A +:106600008018002070B5054615B96FF0030070BD05 +:10661000FFF724FE044614B16FF00200F7E70320F1 +:10662000FFF778FE044614B16FF00200EFE728464A +:10663000FFF7D6FF6420FAF7F5FD0020FFF76AFEAA +:10664000044614B16FF00200E1E7034829680160D5 +:10665000297901710020DAE79D00002070B5044619 +:106660002046FFF757FE054615B16FF0020070BDDA +:106670000020FCE770B505460E4605B116B96FF06F +:10668000030070BD0848007810B96FF00500F8E706 +:1066900031462846FFF78EFE044614B16FF0020023 +:1066A000EFE70020EDE700009C00002070B50546F4 +:1066B0001C211248F9F76EFD002010490870487639 +:1066C00035B908460E490A6842610979017604E045 +:1066D0000A48296841612979017608481430FFF792 +:1066E00091FF04460CB1204670BD0020FFF7B6FFB5 +:1066F00004460CB12046F7E70020F5E7B001002082 +:10670000BE810008024602B111B94FF0FF30704758 +:10671000064882600020054B58601846C160002082 +:1067200018611870012058760020F0E7B0010020B1 +:1067300070B588B03248407E08B908B070BDFAF72D +:1067400023FF04462E48007830B1012808D00228E3 +:1067500042D003284CD14AE00120294908704BE07F +:106760002748406826498968884206D3032024497F +:106770000870002000F052FF3EE021480069201A16 +:106780001F49C968884226D31D484068431C1C48DD +:1067900020218268684600F0E9FE0546002D16DDDE +:1067A00029466846FFF766FF06467EB914484068EA +:1067B000401C1349486008460461012000F02EFF88 +:1067C0003220FAF72FFD002000F028FF00BF022042 +:1067D0000B49087000BF0FE009480069201A0849FA +:1067E000C968884202D301200549087004E003E02B +:1067F00003200349087000BF00BF00BF9DE70000F1 +:10680000B001002010B5044614B1FEF7D3FC01E03E +:10681000FEF7C6FC10BD002120F8801F418081805A +:10682000C1808038704700000D48C069B8B10C487D +:10683000C0690B494968411A0948C160C06958B12B +:106840000748C068642148430549C969B0FBF1F0B5 +:10685000C1B20348017402E000210148017470478D +:10686000880100207CB50024FEF774FF042400207A +:10687000774909688872002175480068C17235221D +:106880002146641C72480068EC30425401222146C3 +:10689000641C6F480068EC30425404222146641C9A +:1068A0006B480068EC3042543D222146641C684825 +:1068B0000068EC30425407222146641C644800689A +:1068C000EC30425401222146641C61480068EC30DF +:1068D0004254604802782146641C5D480068EC30F0 +:1068E00042545C4842782146641C59480068EC30A8 +:1068F0004254584882782146641C55480068EC3060 +:1069000042545448C2782146641C51480068EC3017 +:106910004254504802792146641C4D480068EC30CE +:1069200042544C4842792146641C49480068EC3086 +:10693000425432222146641C45480068EC304254DF +:1069400004222046611C8CB241490968EC310A548A +:10695000414802782046611C8CB23D490968EC31FF +:106960000A543D4842782046611C8CB23849096877 +:10697000EC310A54384882782046611C8CB2344984 +:106980000968EC310A543448C2782046611C8CB244 +:106990002F490968EC310A5436222046611C8CB21A +:1069A0002B490968EC310A5404222046611C8CB240 +:1069B00027490968EC310A54284802782046611CAE +:1069C0008CB223490968EC310A54244842782046A5 +:1069D000611C8CB21E490968EC310A541F48827848 +:1069E0002046611C8CB21A490968EC310A541B48D4 +:1069F000C2782046611C8CB215490968EC310A54F2 +:106A0000FF222046611C8CB211490968EC310A54FE +:106A1000254605E000210E480068EC3041556D1C0C +:106A2000B5F59C7FF6DBFF208DF804008DF805009E +:106A30008DF806008DF80700432001AB4FF4097272 +:106A40000090034801680648007800F0B1FB7CBD67 +:106A50005C01002068010020390100202D01002088 +:106A60002C0100207CB50024FEF774FE00209D4917 +:106A7000087048708870C8709B49087048708870AA +:106A8000C870042435222146641C98480068EC3004 +:106A9000425401222146641C94480068EC30425460 +:106AA0002146641C91480068EC3042543D22214646 +:106AB000641C8E480068EC30425407222146641C56 +:106AC0008A480068EC30425401222146641C874801 +:106AD0000068EC304254864802782146641C8348A2 +:106AE0000068EC304254824842782146641C7F485A +:106AF0000068EC3042547E4882782146641C7B4812 +:106B00000068EC3042547A48C2782146641C7748C9 +:106B10000068EC304254764802792146641C734880 +:106B20000068EC304254724842792146641C6F4838 +:106B30000068EC3042540C222146641C6B4800680B +:106B4000EC30425400222046611C8CB2674909682F +:106B5000EC310A5400250AE06648425D2046611C7B +:106B60008CB262490968EC310A54681C85B26148EC +:106B7000405D0028F0D15E49C9780811FCF762FD3C +:106B80002146621C94B2594A1268EC32505458495A +:106B9000C878FCF757FD2146621C94B2534A12682C +:106BA000EC325054524909790811FCF74BFD21464B +:106BB000621C94B24D4A1268EC3250544C49087928 +:106BC000FCF740FD2146621C94B2484A1268EC3240 +:106BD0005054474949790811FCF734FD2146621C9D +:106BE00094B2424A1268EC32505441494879FCF759 +:106BF00029FD2146621C94B23C4A1268EC32505482 +:106C0000A81DC1B2E81D221A38480068EC30815432 +:106C100037222046611C8CB234490968EC310A5491 +:106C200006222046611C8CB230490968EC310A54B6 +:106C300001222046611C8CB22C490968EC310A54AF +:106C400003222046611C8CB228490968EC310A54A1 +:106C500006222046611C8CB224490968EC310A5492 +:106C60000F222046611C8CB220490968EC310A547D +:106C70003A222046611C8CB21C490968EC310A5446 +:106C80003B222046611C8CB218490968EC310A5439 +:106C9000FF222046611C8CB214490968EC310A5469 +:106CA000254606E0002111480068EC304155681C7B +:106CB00085B2B5F59C7FF5DBFF208DF804008DF8DB +:106CC00005008DF806008DF80700432001AB4FF456 +:106CD00009720090054801680748007800F068FADA +:106CE0007CBD00002D010020310100205C0100204E +:106CF00068010020600100202C0100207CB50024E8 +:106D0000FEF728FDF0480078032803D0EE4800780D +:106D100004282CD10020ED49096888720021EB4835 +:106D20000068C172EA480078E84909680873E848D1 +:106D30004178E64800684173E5488178E348006897 +:106D40008173E348C178E1480068C173E148007885 +:106D50008DF80400DF4840788DF80500DD48807824 +:106D60008DF80600DB48C0788DF8070008E0FF20AA +:106D70008DF804008DF805008DF806008DF80700E9 +:106D8000042435222146641CD0480068EC3042546B +:106D900001222146641CCD480068EC304254032295 +:106DA0002146641CC9480068EC3042543D2221460B +:106DB000641CC6480068EC30425407222146641C1B +:106DC000C2480068EC30425401222146641CBF488E +:106DD0000068EC304254C04802782146641CBB482D +:106DE0000068EC304254BC4842782146641CB748E5 +:106DF0000068EC304254B84882782146641CB3489D +:106E00000068EC304254B448C2782146641CAF4854 +:106E10000068EC304254B04802792146641CAB480B +:106E20000068EC304254AC4842792146641CA748C3 +:106E30000068EC3042549DF80700FF2867D13222E9 +:106E40002146601C84B2A1480068EC304254042200 +:106E50002146601C84B29D480068EC3042549C4836 +:106E600002782046611C8CB298490968EC310A54BA +:106E7000974842782046611C8CB294490968EC31ED +:106E80000A54934882782046611C8CB28F49096865 +:106E9000EC310A548E48C2782046611C8CB28B4972 +:106EA0000968EC310A5436222146601C84B28748B6 +:106EB0000068EC30425404222046611C8CB28349A5 +:106EC0000968EC310A54834802782146601C84B278 +:106ED0007E480068EC3042547E4842782046611C6F +:106EE0008CB27A490968EC310A547A488278204693 +:106EF000611C8CB275490968EC310A547548C27836 +:106F00002046611C8CB271490968EC310A540C228C +:106F10002046611C8CB26D490968EC310A5400228C +:106F20002046611C8CB269490968EC310A5400257D +:106F300009E06A48425D2046611C8CB263490968D9 +:106F4000EC310A546D1C6548405D0028F1D162495E +:106F5000C9780811FCF776FB2146621C94B25B4AA3 +:106F60001268EC3250545C49C878FCF76BFB214640 +:106F7000621C94B2554A1268EC3250545649097951 +:106F80000811FCF75FFB2146621C94B24F4A12685D +:106F9000EC32505450490879FCF754FB2146621CEE +:106FA00094B24A4A1268EC3250544B49497908115C +:106FB000FCF748FB2146621C94B2444A1268EC324A +:106FC000505445494879FCF73DFB2146621C94B278 +:106FD0003E4A1268EC325054A81DC1B2E81D221A74 +:106FE0003A480068EC30815437222046611C8CB24C +:106FF00036490968EC310A5408222046611C8CB2DB +:1070000032490968EC310A5401222046611C8CB2D5 +:107010002E490968EC310A5403222046611C8CB2C7 +:107020002A490968EC310A5406222046611C8CB2B8 +:1070300026490968EC310A540F222046611C8CB2A3 +:1070400022490968EC310A543A222046611C8CB26C +:107050001E490968EC310A543B222046611C8CB25F +:107060001A490968EC310A541F222046611C8CB26F +:1070700016490968EC310A5421222046611C8CB261 +:1070800012490968EC310A54FF222046611C8CB277 +:107090000E490968EC310A54254605E000210B48E9 +:1070A0000068EC3041556D1CB5F59C7FF6DB432044 +:1070B00001AB4FF409720090044801680848007859 +:1070C00000F076F87CBD0000490100205C01002042 +:1070D000390100202D0100206801002060010020FE +:1070E0002C010020F0B58BB004460D460220631C35 +:1070F00019A22021CDE9005003A8FDF78BF8064620 +:10710000701EC1B20DF10D00FDF74DFD0746C6F131 +:10711000200103AA90193B4614A2FDF77BF80DB19C +:1071200014A000E015A00246611C15A0FCF770FC3D +:1071300003A90020FCF71EFA03A916A0FCF768FCBF +:107140001A48006828B103AA29462046174B1B6835 +:1071500098470BB0F0BD00002444495F4556454EAA +:10716000542C25642C25642C25642A0025303258A3 +:107170000D0A000048494748000000004C4F5700E6 +:107180005B494F5D2043482564202D3E2025730D2B +:107190000A0000005B494F5D2052463433332054CF +:1071A000583A20222573220D0A00000068000020B2 +:1071B0002DE9F05F04468B4615461E46DDF828A0F3 +:1071C0000027B84600BF082C02DD781EBDE8F09FFE +:1071D00000BFA100491C002202EBC100FCF70CFF1C +:1071E00000F00F00022804D0032804D0042803D1A3 +:1071F00000E000BF00BF02E06FF00400E6E700BF60 +:1072000000BF15B96FF00D00E0E700BF96F80090E1 +:10721000707869F31F208146B07869F31F2081469A +:10722000F07869F31F208146B9F1000F0DD1A1005C +:10723000491C002202EBC100FCF7DEFE00F0040056 +:10724000042802D06FF00B00C0E7BAF1000F0DD197 +:10725000A100491C002202EBC100FCF7CDFE00F0AA +:107260000400042802D06FF00A00AFE7A100491C17 +:107270004FF4407202EBC100FCF7BEFE0746422FFE +:1072800006D0222F04D0322F02D06FF006009DE7E7 +:10729000A100491C4FF4406202EBC10004223146B8 +:1072A000FCF764FF4FEA2A21A200521C4FF48053DE +:1072B00003EBC200FCF720FF0AF0FF01A200521C02 +:1072C0004FF4805303EBC20202F58070FCF714FF09 +:1072D000A100491C4FF4F85202EBC100FCF78CFEF0 +:1072E0004FF6FF7101EA8028454500DD45461CE068 +:1072F0002046FDF71FFF8046A100491C4FF4407255 +:1073000002EBC100FCF778FE10B96FF003005DE7F7 +:107310000120A04028490988084018B1454501DDF1 +:10732000002053E7454500DC00E0E1E700BF2A46C6 +:107330005946204600F073FBA100491C4FF48072AF +:1073400002EBC1002021FCF7D7FE00BFA100491CC1 +:107350004FF4807202EBC100FCF74EFE0028F5D11D +:1073600025E0A100491C4FF4007202EBC100FCF7BC +:1073700043FE00F01F0707F0100048B1A100491CB0 +:107380004FF4007202EBC1001021FCF7B5FE0FE0D4 +:1073900007F0080058B1A100491C4FF4007202EB3D +:1073A000C1000821FCF7A8FE6FF00C000EE7D8E73B +:1073B00000BF28460AE70000EC000020F8B50446AC +:1073C0000E4617461D4600BF082C02DD4FF0FF3069 +:1073D000F8BD00BF012E06D0022E10D0032E10D013 +:1073E000042E0FD10CE0042269464FF47060FCF7C4 +:1073F0003DFE009810B96FF00200E9E705E000BF1C +:1074000000BF02E06FF00400E2E700BF05F00400F7 +:1074100010B16FF00500DBE705B3012E02D0022E9C +:107420001AD106E005F0210010B96FF00500CFE792 +:1074300013E005F0200028B105F0800010B96FF0CE +:107440000500C5E705F0100028B105F0800010B96F +:107450006FF00500BCE700E000BF00BF2046FDF76D +:1074600041FC05F0F00242EA0601A200521C002392 +:1074700003EBC200FCF740FE7FB930480788008864 +:10748000401C2E490880084600884FF6F07188425B +:1074900003D14FF44040294908803912A200521C00 +:1074A0004FF4806303EBC200FCF726FEF9B2A200A2 +:1074B000521C4FF4806303EBC20202F58070FCF7AC +:1074C0001BFEA100491C4FF4807202EBC100012198 +:1074D000FCF712FE00BFA100491C4FF4807202EBC2 +:1074E000C100FCF789FD0028F5D10120A040144916 +:1074F000098881431248018005F00100A04010492D +:10750000098808430E4908800120A0400D490988D8 +:1075100081430C48018000200B4921F814000B49DD +:10752000085500BFA100491C4FF4407202EBC10096 +:10753000FCF762FD0028F5D060B249E7EA000020C0 +:10754000EC000020EE00002080200020F000002051 +:1075500010B500F0CFF80448006820B10248006878 +:10756000401E0149086010BD000000202DE9F843CD +:1075700005460E46174698460DB1102E02DA002039 +:10758000BDE8F8833B4607A231462846CDF8008087 +:10759000FCF740FE0446002C01DDA0B2F0E700201D +:1075A000EEE7000054582E2530336C752E2530330D +:1075B0006C752E00F8B505466B206843164901EB43 +:1075C000800606F19004002772B694F80601D0B93F +:1075D000B4F80401002816DDB4F80201205C009024 +:1075E00004F581742188481CC11700EB1161091250 +:1075F000A0EB012121806088401E60800120207165 +:10760000A4F58174012762B627B10122694630686A +:10761000FBF733FDF8BD00003413002010B504461D +:1076200014B1FDF7DBFD01E0FDF7CEFD10BD00213B +:1076300000F5807001804180818081710181A0F519 +:107640008070704770B503460C46002572B6002066 +:1076500021E0B3F80411FF2905DDB3F80811491C36 +:10766000A3F8081119E0215CB3F800619955B3F84B +:107670000061711CCE1701EB16663612A1EB0626CF +:10768000A3F80061B3F80411491CA3F80411691CA4 +:107690008DB2411C88B29042DBDB00BF62B6284647 +:1076A00070BD0000F8B506460D4606B10DB90020C4 +:1076B000F8BD0F48007808B90020F9E76846FEF7E2 +:1076C000FFFD04460CB10020F2E7BDF8000008B948 +:1076D0000020EDE72A46FF213046FEF7F7FD04467D +:1076E0000CB10020E4E70020014908700120DFE729 +:1076F000C400002000B5FEF79DFD00BD2DE9F0415E +:1077000006460F4639463046FDF776FB05460848E3 +:10771000006818B906480560BDE8F08104480468AF +:1077200000E0E468E0680028FBD1E56000BFF3E713 +:10773000C800002070B505460E48046800264CB10C +:107740002068A84206D10B49E06808602046FDF792 +:1077500053FC70BD01E02646E46814B12068A842DD +:10776000F9D104B9F5E7E068F0602046FDF744FC84 +:1077700000BFEEE7C8000020F0B587B005460E4612 +:10778000012700244FF47A712448FFF7B7FF3146F0 +:107790002846F9F7C9FA22A0FCF72CFD3CE0F9F7DE +:1077A00033FB28B1042805D10CB90124002701E0DE +:1077B000002700BF00BF002F2ED10CB11CA000E09D +:1077C0001DA001461EA0FCF715FDF9F709FC1348A2 +:1077D000FFF7B0FFF4B10DF10A00FDF755FC0DF114 +:1077E0001200FDF741FC0DF10E00FDF75DFC0DF1FF +:1077F0001600FDF729FC02208DF81A00062201A9C7 +:107800004FF41060FCF732FC01A800F01DFB0120D2 +:1078100007B0F0BD0020FBE7C1E70000FD0F000846 +:10782000444843502072756E6E696E670D0A000001 +:1078300073756363657373006661696C00000000B3 +:1078400044484350202573210D0A000008B500BFAD +:107850004FF47A7000F042F969460F20FDF7EEFA16 +:107860009DF80000012805D106A0FCF7C3FC00F03C +:1078700017F802E006A0FCF7BDFC9DF80000002808 +:10788000E6D008BD504859206C696E6B0D0A0000A7 +:10789000504859206E6F206C696E6B0D0A00000015 +:1078A00010B54FF43850FCF7A7FB044604F0020073 +:1078B00008B1642000E00A20014607A0FCF79AFC0A +:1078C00004F0040008B10DA000E00FA0014611A0D3 +:1078D000FCF790FC10BD000054686520637572725F +:1078E000656E74204D6274697320737065656420E1 +:1078F0003A2025644D6270730D0A000046756C6C69 +:107900002D4475706C65780048616C662D44757007 +:107910006C6578005468652063757272656E7420BA +:107920004475706C6578204D6F6465203A2025732E +:107930000D0A00002DE9F04704460F4616460025C3 +:10794000A8460EB9BDE8F087A100491C4FF42052AB +:1079500002EBC10101F58070FCF74EFB8146A100EE +:10796000491C4FF4205202EBC100FCF745FB09EB28 +:10797000002085B22902A000C01C01EBC0083246DD +:1079800039464046FCF772FBA81985B22912A200BD +:10799000521C4FF4205303EBC200FCF7ADFBE9B2DD +:1079A000A200521C4FF4205303EBC20202F5807078 +:1079B000FCF7A2FB00BFC5E72DE9F04104460E46E7 +:1079C0000025A100491C4FF4205202EBC10101F532 +:1079D0008070FCF711FB0746A100491C4FF42052B0 +:1079E00002EBC100FCF708FB07EB002085B2A819E9 +:1079F00085B22912A200521C4FF4205303EBC2009F +:107A0000FCF77AFBE9B2A200521C4FF4205303EBBF +:107A1000C20202F58070FCF76FFBBDE8F0812DE932 +:107A2000F04704460F4616460025A8460EB9BDE8A5 +:107A3000F087A100491C4FF4105202EBC10101F57F +:107A40008070FCF7D9FA8146A100491C4FF410520E +:107A500002EBC100FCF7D0FA09EB002085B2290245 +:107A6000A000801C01EBC008324639464046FCF7B6 +:107A70007DFBA81985B22912A200521C4FF41053A5 +:107A800003EBC200FCF738FBE9B2A200521C4FF432 +:107A9000105303EBC20202F58070FCF72DFB00BF10 +:107AA000C5E7000010B50B480068401C0949086094 +:107AB000094804680BE0A068401CA060D4E90110EC +:107AC000884203D30020A06020688047E468002C2F +:107AD000F1D110BDCC000020C80000200021044AD4 +:107AE000116000BF024909688142FBD37047000062 +:107AF000CC0000200146087870470170704770B5CF +:107B00000546ECB22E1204F0F0014FF4A850FCF739 +:107B1000F3FA00240EE00120A040304040B1A10063 +:107B2000491C4FF4007202EBC1001F21FCF7E4FA7C +:107B3000601CC4B2082CEEDB70BD70477047704704 +:107B40007047000010B5012211030248F9F716FD35 +:107B500010BD0000000C014070B500260024002577 +:107B60004FF4A850FCF748FA00F0F0064FF4B85074 +:107B7000FCF742FA0446254606EB052085B2284666 +:107B800070BD70B50026002400254FF4B050FCF7FE +:107B900033FA06464FF4C050FCF72EFA0446254649 +:107BA00006EB052085B2284670BD000010B50446DE +:107BB000062221464FF41060FCF758FA042204F123 +:107BC0000E019001FCF752FA042204F10A014FF46D +:107BD000A060FCF74BFA0422A11D4FF47060FCF783 +:107BE00045FA07480078A07405484178E174817827 +:107BF0002175C178617503480078A07510BD00003B +:107C000024010020280100202DE9F04105460E4600 +:107C1000002700F064F9F5B100BF00240AE0285DF8 +:107C2000384447B2102F03DD4FF0FF30BDE8F0813C +:107C3000601C44B2082CF2DB00240AE0295DA2009B +:107C4000521C4FF4F85303EBC200FCF755FA601CCA +:107C500044B2082CF2DBEEB10027002409E0305DCD +:107C6000384447B2102F02DD4FF0FF30DEE7601CD2 +:107C700044B2082CF3DB00240AE0315DA200521C60 +:107C80004FF4F05303EBC200FCF736FA601C44B229 +:107C9000082CF2DB0020C9E710B50CA0FCF7AAFA0B +:107CA00000F0FEF811A0FCF7A5FA00F095F81F48C7 +:107CB000FCF7A0FA1EA0FCF79DFA00F049F929A0F4 +:107CC000FCF798FAFFF7C2FD10BD000020202D3E02 +:107CD000205B57495A5D20E6B3A8E5868C5350498E +:107CE000E59B9EE8B0832E2E2E0D0A0020202D3E0F +:107CF000205B57495A5D20E689A7E8A18CE7A1AC33 +:107D0000E4BBB6E5A48DE4BD8D28E6B58BE8AF9560 +:107D1000E5BBB6E697B6E698AFE590A6E58DA1E699 +:107D2000ADBB292E2E2E0D0A00000000B8830008DE +:107D300020202D3E205B57495A5D20E6A380E69F18 +:107D4000A5535049E9809AE4BFA1E4B88EE88AAF10 +:107D5000E78987E78988E69CACE58FB72E2E2E0D44 +:107D60000A00000020202D3E205B57495A5D20E785 +:107D70008988E69CACE58FB7E6A380E69FA5E980FD +:107D80009AE8BF87EFBC8153504920E9809AE4BF4D +:107D9000A1E6ADA3E5B8B8EFBC815C720A000000B3 +:107DA00070B504460D464FF6FF732A462146024839 +:107DB000FAF7BCF870BD0000CC0C002008B54FF6F7 +:107DC000FF73012269460348FAF7B0F89DF80000F6 +:107DD00008BD0000CC0C002010B5012211020C4897 +:107DE000F9F7CCFB0A20FFF779FE00224FF48071EF +:107DF0000748F9F7C3FB0A20FFF770FE01221102C2 +:107E00000348F9F7BBFB0A20FFF768FE10BD00002E +:107E10000008014010B500224FF480510148F9F7E5 +:107E2000ADFB10BD000C014070B50446E5B2261252 +:107E300029464FF4B050FCF75FF931464FF4C0507B +:107E4000FCF75AF970BD000010B504460622214621 +:107E50004FF41060FCF78AF9042204F10E0190013E +:107E6000FCF784F9042204F10A014FF4A060FCF746 +:107E70007DF90422A11D4FF47060FCF777F9A07C16 +:107E800005490870E07C4870207D8870607DC8706E +:107E9000A07D0249087010BD2401002028010020A7 +:107EA00010B506490648FEF71BF906490648FEF7D5 +:107EB0002BF906490648FEF741F910BD457B00083D +:107EC000157E0008B57F0008BD7D0008997F000879 +:107ED000A17D00087047002070477047704700B5CB +:107EE00085B0062269464FF41060FCF7BFF8042203 +:107EF00004A99001FCF7BAF8042203A94FF4A0608A +:107F0000FCF7B4F8042202A94FF47060FCF7AEF855 +:107F100080210020FCF7F0F80020FCF76DF8062225 +:107F200069464FF41060FCF721F9042204A990017E +:107F3000FCF71CF9042203A94FF4A060FCF716F922 +:107F4000042202A94FF47060FCF710F905B000BDDF +:107F500070B500241AE04FF47A70FFF7BFFD4FF4BC +:107F60006450FCF749F804280FD0601CC4B2052CFB +:107F70000CDD4FF46450FCF73FF805462A46042117 +:107F80000448FCF737F900BFFEE700E0E3E700BF75 +:107F900070BD00007083000870B504460D464FF6B2 +:107FA000FF732A4621460248FAF77FF870BD0000A9 +:107FB000CC0C002001B54FF6FF7301226946024840 +:107FC000FAF773F808BD0000CC0C002070B5044629 +:107FD00000254FF43850FCF70FF80546C5F3801024 +:107FE000207005F03800202802D0382803D100BFC7 +:107FF0000120607002E00020607000BF00BF05F04B +:108000003800102805D0182802D0202804D100BF3D +:1080100000BF0120A07002E00020A07000BF00BFE0 +:1080200005F03800082805D0182802D0202804D1EF +:1080300000BF00BF0120E07002E00020E07000BF40 +:1080400000BF70BD10B500244FF43850FBF7D4FFCB +:1080500000F0010000B10124204610BD10B500243D +:108060004FF43850FBF7C8FF00F03800302801D13A +:10807000012400E00024204610BD10B54FF4385014 +:10808000FBF7BAFF044624F0800421464FF4385031 +:10809000FCF732F84FF43850FBF7AEFF044644F0DB +:1080A000800421464FF43850FCF726F810BD70B517 +:1080B000054600242878012802D144F0400401E05C +:1080C00024F040046878012802D144F0380412E01A +:1080D000E878012808D1A878012802D144F01804D2 +:1080E00009E044F0080406E0A878012802D144F031 +:1080F000100400E000BF21464FF43850FBF7FCFFAE +:10810000FFF7BBFF70BD70B5054600244FF4385033 +:10811000FBF772FF044604F0400010B94FF0FF3047 +:1081200070BD24F03804012D02D144F0300401E088 +:1081300044F0380421464FF43850FBF7DDFFFFF7D9 +:108140009CFF4FF43850FBF757FF0446012D04D134 +:1081500004F0300030B10020E2E704F0380008B14C +:108160000020DDE74FF0FF30DAE7000074820008FE +:108170006C820008648200087C820008240D0020C4 +:108180006C0D0020B40D0020848200088C82000851 +:108190009482000802030405060708090A0B0C0D67 +:1081A0000E0F10100102000000000000000001028C +:1081B0000304060708090000000001020304000090 +:1081C0001A1704C1C1C141542B4445565459504556 +:1081D0003D3F0041542B4657434F44453D3F00002F +:1081E000404040404040404040414141414140408A +:1081F000404040404040404040404040404040407F +:10820000050202020202020202020202020202024B +:108210002020202020202020202002020202020212 +:10822000029090909090901010101010101010105C +:108230001010101010101010101010020202020284 +:1082400002888888888888080808080808080808B4 +:10825000080808080808080808080802020202407E +:10826000E08100085741524E20000000494E464F21 +:108270002000000044454255470000004552524F3F +:1082800052000000554152543100000055415254F3 +:108290003200000055415254330000003D3D3D3D49 +:1082A0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DFE +:1082B0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DEE +:1082C0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DDE +:1082D0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DCE +:1082E0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DBE +:1082F0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DAE +:108300000D0A0D0A000000003D3D3D3D3D3D3D3D57 +:108310003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D8D +:108320003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D7D +:108330003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D6D +:108340003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D5D +:108350003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D4D +:108360003D3D3D3D3D3D3D3D3D3D3D3D0D0A00001A +:108370006572726F722C20573535303020766572F9 +:1083800073696F6E206973203078253032782C2025 +:1083900062757420726561642057353530302076FF +:1083A000657273696F6E2076616C7565203D203053 +:1083B00078253032780D0A0020202D3E205B574969 +:1083C0005A5D20E7A1ACE4BBB6E5A48DE4BD8DE920 +:1083D000809AE8BF87EFBC81E8AFB4E6988E20545E +:1083E000494D3220E5AE9AE697B6E599A8E5B7A5DE +:1083F000E4BD9CE5AE8CE585A8E6ADA3E5B8B8EF95 +:10840000BC810D0A00000000288400080000002044 +:1084100088010000320C00089884000888010020C0 +:1084200008250000EC4200080114B3401FC50C01F0 +:1084300040101910DA2010DA4010F280021B01E916 +:108440001C296C3914033624F4100D08DC12221296 +:10845000C0A806D4FFFFFF19081B0108012A01D498 +:10846000BAC07857025735353030133B7B1B083D77 +:10847000041A41041A3F0413F57A1B08FB04013067 +:10848000197242FFB20AA757495A6E6574135D4FBD +:088490001B08B5041A9104C198 :04000005080000ED02 :00000001FF diff --git a/MDK-ARM/project/project.htm b/MDK-ARM/project/project.htm index 3bd5a0e..5cdaa16 100644 --- a/MDK-ARM/project/project.htm +++ b/MDK-ARM/project/project.htm @@ -3,1981 +3,2586 @@ Static Call Graph - [project\project.axf]

Static Call Graph for image project\project.axf


-

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Fri Mar 27 19:53:00 2026 +

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Wed May 06 10:22:26 2026

-

Maximum Stack Usage = 488 bytes + Unknown(Cycles, Untraceable Function Pointers)

+

Maximum Stack Usage = 2200 bytes + Unknown(Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

-main ⇒ CmdRouter_Task ⇒ DebugLog_Output ⇒ __2snprintf +main ⇒ loopback_udps ⇒ sendto ⇒ wiz_send_data ⇒ WIZCHIP_WRITE_BUF

Mutually Recursive functions -

  • ADC1_2_IRQHandler   ⇒   ADC1_2_IRQHandler
    +
  • ADC1_2_IRQHandler   ⇒   ADC1_2_IRQHandler

    Function Pointers

      -
    • ADC1_2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • BusFault_Handler from stm32f1xx_it.o(i.BusFault_Handler) referenced from startup_stm32f103xb.o(RESET) -
    • CAN1_RX1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • CAN1_SCE_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel3_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel4_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel5_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel6_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel7_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DebugMon_Handler from stm32f1xx_it.o(i.DebugMon_Handler) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI0_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI15_10_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI3_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI4_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI9_5_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • FLASH_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • HardFault_Handler from stm32f1xx_it.o(i.HardFault_Handler) referenced from startup_stm32f103xb.o(RESET) -
    • I2C1_ER_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • I2C1_EV_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • I2C2_ER_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • I2C2_EV_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • MemManage_Handler from stm32f1xx_it.o(i.MemManage_Handler) referenced from startup_stm32f103xb.o(RESET) -
    • NMI_Handler from stm32f1xx_it.o(i.NMI_Handler) referenced from startup_stm32f103xb.o(RESET) -
    • PVD_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • PendSV_Handler from stm32f1xx_it.o(i.PendSV_Handler) referenced from startup_stm32f103xb.o(RESET) -
    • RCC_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • RTC_Alarm_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • RTC_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • Reset_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • SPI1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • SPI2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • SVC_Handler from stm32f1xx_it.o(i.SVC_Handler) referenced from startup_stm32f103xb.o(RESET) -
    • SysTick_Handler from stm32f1xx_it.o(i.SysTick_Handler) referenced from startup_stm32f103xb.o(RESET) -
    • SystemInit from system_stm32f1xx.o(i.SystemInit) referenced from startup_stm32f103xb.o(.text) -
    • TAMPER_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • TIM1_BRK_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • TIM1_CC_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • TIM1_TRG_COM_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • TIM1_UP_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • TIM2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • TIM3_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • TIM4_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • UART_DMAAbortOnError from stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) referenced from stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) -
    • USART1_IRQHandler from stm32f1xx_it.o(i.USART1_IRQHandler) referenced from startup_stm32f103xb.o(RESET) -
    • USART2_IRQHandler from stm32f1xx_it.o(i.USART2_IRQHandler) referenced from startup_stm32f103xb.o(RESET) -
    • USART3_IRQHandler from stm32f1xx_it.o(i.USART3_IRQHandler) referenced from startup_stm32f103xb.o(RESET) -
    • USBWakeUp_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • USB_HP_CAN1_TX_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • USB_LP_CAN1_RX0_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • UsageFault_Handler from stm32f1xx_it.o(i.UsageFault_Handler) referenced from startup_stm32f103xb.o(RESET) -
    • WWDG_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_stm32f103xb.o(.text) -
    • _sbackspace from _sgetc.o(.text) referenced from __0sscanf.o(.text) -
    • _scanf_char_input from scanf_char.o(.text) referenced from scanf_char.o(.text) -
    • _sgetc from _sgetc.o(.text) referenced from __0sscanf.o(.text) -
    • _snputc from printfa.o(i._snputc) referenced from printfa.o(i.__0snprintf) -
    • _snputc from printfa.o(i._snputc) referenced from printfa.o(i.__0vsnprintf) -
    • cmd_parser_response_callback from cmd_router.o(i.cmd_parser_response_callback) referenced from cmd_router.o(i.CmdRouter_Init) -
    • fputc from uart2_print.o(i.fputc) referenced from printfa.o(i.__0printf) -
    • isspace from isspace_o.o(.text) referenced from scanf_char.o(.text) -
    • main from main.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B) +
    • ADC1_2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • BusFault_Handler from stm32f1xx_it.o(i.BusFault_Handler) referenced from startup_stm32f103xb.o(RESET) +
    • CAN1_RX1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • CAN1_SCE_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • DHCP_time_handler from dhcp.o(i.DHCP_time_handler) referenced from wiz_interface.o(i.wiz_dhcp_process) +
    • DMA1_Channel1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • DMA1_Channel2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • DMA1_Channel3_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • DMA1_Channel4_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • DMA1_Channel5_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • DMA1_Channel6_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • DMA1_Channel7_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • DebugMon_Handler from stm32f1xx_it.o(i.DebugMon_Handler) referenced from startup_stm32f103xb.o(RESET) +
    • EXTI0_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • EXTI15_10_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • EXTI1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • EXTI2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • EXTI3_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • EXTI4_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • EXTI9_5_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • FLASH_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • HardFault_Handler from stm32f1xx_it.o(i.HardFault_Handler) referenced from startup_stm32f103xb.o(RESET) +
    • I2C1_ER_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • I2C1_EV_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • I2C2_ER_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • I2C2_EV_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • MemManage_Handler from stm32f1xx_it.o(i.MemManage_Handler) referenced from startup_stm32f103xb.o(RESET) +
    • NMI_Handler from stm32f1xx_it.o(i.NMI_Handler) referenced from startup_stm32f103xb.o(RESET) +
    • PVD_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • PendSV_Handler from stm32f1xx_it.o(i.PendSV_Handler) referenced from startup_stm32f103xb.o(RESET) +
    • RCC_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • RTC_Alarm_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • RTC_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • Reset_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • SPI1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • SPI2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • SVC_Handler from stm32f1xx_it.o(i.SVC_Handler) referenced from startup_stm32f103xb.o(RESET) +
    • SysTick_Handler from stm32f1xx_it.o(i.SysTick_Handler) referenced from startup_stm32f103xb.o(RESET) +
    • SystemInit from system_stm32f1xx.o(i.SystemInit) referenced from startup_stm32f103xb.o(.text) +
    • TAMPER_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • TIM1_BRK_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • TIM1_CC_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • TIM1_TRG_COM_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • TIM1_UP_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • TIM2_IRQHandler from stm32f1xx_it.o(i.TIM2_IRQHandler) referenced from startup_stm32f103xb.o(RESET) +
    • TIM3_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • TIM4_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • UART_DMAAbortOnError from stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) referenced from stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) +
    • USART1_IRQHandler from stm32f1xx_it.o(i.USART1_IRQHandler) referenced from startup_stm32f103xb.o(RESET) +
    • USART2_IRQHandler from stm32f1xx_it.o(i.USART2_IRQHandler) referenced from startup_stm32f103xb.o(RESET) +
    • USART3_IRQHandler from stm32f1xx_it.o(i.USART3_IRQHandler) referenced from startup_stm32f103xb.o(RESET) +
    • USBWakeUp_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • USB_HP_CAN1_TX_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • USB_LP_CAN1_RX0_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • UsageFault_Handler from stm32f1xx_it.o(i.UsageFault_Handler) referenced from startup_stm32f103xb.o(RESET) +
    • WWDG_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) +
    • __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_stm32f103xb.o(.text) +
    • _sbackspace from _sgetc.o(.text) referenced from __0sscanf.o(.text) +
    • _scanf_char_input from scanf_char.o(.text) referenced from scanf_char.o(.text) +
    • _sgetc from _sgetc.o(.text) referenced from __0sscanf.o(.text) +
    • _snputc from printfa.o(i._snputc) referenced from printfa.o(i.__0snprintf) +
    • _snputc from printfa.o(i._snputc) referenced from printfa.o(i.__0vsnprintf) +
    • _sputc from printfa.o(i._sputc) referenced from printfa.o(i.__0sprintf) +
    • cmd_parser_response_callback from cmd_router.o(i.cmd_parser_response_callback) referenced from cmd_router.o(i.CmdRouter_Init) +
    • default_ip_assign from dhcp.o(i.default_ip_assign) referenced 2 times from dhcp.o(.data) +
    • default_ip_conflict from dhcp.o(i.default_ip_conflict) referenced 2 times from dhcp.o(.data) +
    • default_ip_update from dhcp.o(i.default_ip_update) referenced 2 times from dhcp.o(.data) +
    • fputc from uart2_print.o(i.fputc) referenced from printfa.o(i.__0printf) +
    • isspace from isspace_o.o(.text) referenced from scanf_char.o(.text) +
    • main from main.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B) +
    • wizchip_bus_readdata from wizchip_conf.o(i.wizchip_bus_readdata) referenced 2 times from wizchip_conf.o(.data) +
    • wizchip_bus_writedata from wizchip_conf.o(i.wizchip_bus_writedata) referenced 2 times from wizchip_conf.o(.data) +
    • wizchip_cris_enter from wizchip_conf.o(i.wizchip_cris_enter) referenced 2 times from wizchip_conf.o(.data) +
    • wizchip_cris_exit from wizchip_conf.o(i.wizchip_cris_exit) referenced 2 times from wizchip_conf.o(.data) +
    • wizchip_cs_deselect from wizchip_conf.o(i.wizchip_cs_deselect) referenced 2 times from wizchip_conf.o(.data) +
    • wizchip_cs_deselect from wizchip_conf.o(i.wizchip_cs_deselect) referenced from wizchip_conf.o(i.reg_wizchip_cs_cbfunc) +
    • wizchip_cs_select from wizchip_conf.o(i.wizchip_cs_select) referenced 2 times from wizchip_conf.o(.data) +
    • wizchip_cs_select from wizchip_conf.o(i.wizchip_cs_select) referenced from wizchip_conf.o(i.reg_wizchip_cs_cbfunc) +
    • wizchip_deselect from wiz_platform.o(i.wizchip_deselect) referenced from wiz_platform.o(i.wizchip_spi_cb_reg) +
    • wizchip_read_buff from wiz_platform.o(i.wizchip_read_buff) referenced from wiz_platform.o(i.wizchip_spi_cb_reg) +
    • wizchip_read_byte from wiz_platform.o(i.wizchip_read_byte) referenced from wiz_platform.o(i.wizchip_spi_cb_reg) +
    • wizchip_select from wiz_platform.o(i.wizchip_select) referenced from wiz_platform.o(i.wizchip_spi_cb_reg) +
    • wizchip_spi_readburst from wizchip_conf.o(i.wizchip_spi_readburst) referenced from wizchip_conf.o(i.reg_wizchip_spiburst_cbfunc) +
    • wizchip_spi_readbyte from wizchip_conf.o(i.wizchip_spi_readbyte) referenced from wizchip_conf.o(i.reg_wizchip_spi_cbfunc) +
    • wizchip_spi_writeburst from wizchip_conf.o(i.wizchip_spi_writeburst) referenced from wizchip_conf.o(i.reg_wizchip_spiburst_cbfunc) +
    • wizchip_spi_writebyte from wizchip_conf.o(i.wizchip_spi_writebyte) referenced from wizchip_conf.o(i.reg_wizchip_spi_cbfunc) +
    • wizchip_write_buff from wiz_platform.o(i.wizchip_write_buff) referenced from wiz_platform.o(i.wizchip_spi_cb_reg) +
    • wizchip_write_byte from wiz_platform.o(i.wizchip_write_byte) referenced from wiz_platform.o(i.wizchip_spi_cb_reg)

    Global Symbols

    -

    __main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000)) +

    __main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(.text)
    -

    _main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001)) +

    _main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001)) -

    _main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) -

    [Calls]

    • >>   __scatterload +

      _main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) +

      [Calls]

      • >>   __scatterload
      -

      __main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) -

      [Called By]

      • >>   __scatterload +

        __main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) +

        [Called By]

        • >>   __scatterload
        -

        _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) +

        _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) -

        _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) +

        _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) -

        _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) +

        _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) -

        __rt_lib_shutdown_fini (Thumb, 0 bytes, Stack size unknown bytes, entry12b.o(.ARM.Collect$$$$0000000E)) +

        __rt_lib_shutdown_fini (Thumb, 0 bytes, Stack size unknown bytes, entry12b.o(.ARM.Collect$$$$0000000E)) -

        __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000F)) +

        __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000F)) -

        __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$00000011)) +

        __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$00000011)) -

        Reset_Handler (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

        Reset_Handler (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
        [Address Reference Count : 1]

        • startup_stm32f103xb.o(RESET)
        -

        ADC1_2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

        [Calls]

        • >>   ADC1_2_IRQHandler +

          ADC1_2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

          [Calls]

          • >>   ADC1_2_IRQHandler
          -
          [Called By]
          • >>   ADC1_2_IRQHandler +
            [Called By]
            • >>   ADC1_2_IRQHandler

            [Address Reference Count : 1]
            • startup_stm32f103xb.o(RESET)
            -

            CAN1_RX1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            CAN1_RX1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            CAN1_SCE_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            CAN1_SCE_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            DMA1_Channel1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            DMA1_Channel1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            DMA1_Channel2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            DMA1_Channel2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            DMA1_Channel3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            DMA1_Channel3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            DMA1_Channel4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            DMA1_Channel4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            DMA1_Channel5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            DMA1_Channel5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            DMA1_Channel6_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            DMA1_Channel6_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            DMA1_Channel7_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            DMA1_Channel7_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            EXTI0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            EXTI0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            EXTI15_10_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            EXTI15_10_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            EXTI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            EXTI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            EXTI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            EXTI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            EXTI3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            EXTI3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            EXTI4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            EXTI4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            EXTI9_5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            EXTI9_5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            FLASH_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            FLASH_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            I2C1_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            I2C1_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            I2C1_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            I2C1_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            I2C2_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            I2C2_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            I2C2_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            I2C2_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            PVD_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            PVD_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            RCC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            RCC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            RTC_Alarm_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            RTC_Alarm_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            RTC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            RTC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            SPI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            SPI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            SPI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            SPI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            TAMPER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            TAMPER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            TIM1_BRK_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            TIM1_BRK_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            TIM1_CC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            TIM1_CC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            TIM1_TRG_COM_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            TIM1_TRG_COM_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            TIM1_UP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            TIM1_UP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            TIM2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            TIM3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            TIM3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            TIM4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            TIM4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            USBWakeUp_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            USBWakeUp_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            USB_HP_CAN1_TX_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            USB_HP_CAN1_TX_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            USB_LP_CAN1_RX0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            USB_LP_CAN1_RX0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) +

            WWDG_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET)
            -

            WWDG_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
            [Address Reference Count : 1]

            • startup_stm32f103xb.o(RESET) -
            -

            __aeabi_llsr (Thumb, 32 bytes, Stack size 0 bytes, llushr.o(.text), UNUSED) -

            [Called By]

            • >>   _double_epilogue -
            • >>   __aeabi_uldivmod -
            • >>   __aeabi_d2ulz +

              __aeabi_llsr (Thumb, 32 bytes, Stack size 0 bytes, llushr.o(.text), UNUSED) +

              [Called By]

              • >>   _double_epilogue +
              • >>   __aeabi_uldivmod +
              • >>   __aeabi_d2ulz
              -

              _ll_ushift_r (Thumb, 0 bytes, Stack size 0 bytes, llushr.o(.text), UNUSED) +

              _ll_ushift_r (Thumb, 0 bytes, Stack size 0 bytes, llushr.o(.text), UNUSED) -

              __rt_ctype_table (Thumb, 4 bytes, Stack size 0 bytes, ctype_o.o(.text)) -

              [Called By]

              • >>   is_valid_param_char -
              • >>   is_valid_cmd_char -
              • >>   is_str_numeric -
              • >>   isspace -
              • >>   strtol +

                __rt_ctype_table (Thumb, 4 bytes, Stack size 0 bytes, ctype_o.o(.text)) +

                [Called By]

                • >>   isspace
                -

                isspace (Thumb, 18 bytes, Stack size 8 bytes, isspace_o.o(.text)) +

                isspace (Thumb, 18 bytes, Stack size 8 bytes, isspace_o.o(.text))

                [Stack]

                • Max Depth = 8
                • Call Chain = isspace
                -
                [Calls]
                • >>   __rt_ctype_table +
                  [Calls]
                  • >>   __rt_ctype_table

                  [Address Reference Count : 1]
                  • scanf_char.o(.text)
                  -

                  __aeabi_memcpy (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text)) -

                  [Called By]

                  • >>   UART3_Protocol_GetPassthroughData -
                  • >>   CmdParser_HasCompleteFrame +

                    __aeabi_memcpy (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text)) +

                    [Called By]

                    • >>   loopback_udps
                    -

                    __aeabi_memcpy4 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED) +

                    __aeabi_memcpy4 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED) -

                    __aeabi_memcpy8 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED) +

                    __aeabi_memcpy8 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED) -

                    __aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text)) -

                    [Called By]

                    • >>   _memset$wrapper -
                    • >>   __aeabi_memclr +

                      __aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

                      [Called By]

                      • >>   _memset$wrapper +
                      • >>   __aeabi_memclr
                      -

                      __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

                      __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) -

                      __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

                      __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) -

                      __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text)) -

                      [Calls]

                      • >>   __aeabi_memset -
                      -
                      [Called By]
                      • >>   reset_parser +

                        __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

                        [Calls]

                        • >>   __aeabi_memset
                        -

                        __aeabi_memclr4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text)) -

                        [Called By]

                        • >>   CmdParser_Init -
                        • >>   SystemClock_Config -
                        • >>   rf433_tx_app_init -
                        • >>   rf433_rx_app_init -
                        • >>   UART3_Protocol_Init -
                        • >>   Passthrough_Init +

                          __aeabi_memclr4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text)) +

                          [Called By]

                          • >>   CmdParser_Init +
                          • >>   SystemClock_Config +
                          • >>   rf433_tx_app_init +
                          • >>   rf433_rx_app_init
                          -

                          __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

                          __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) -

                          _memset$wrapper (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED) -

                          [Calls]

                          • >>   __aeabi_memset +

                            _memset$wrapper (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED) +

                            [Calls]

                            • >>   __aeabi_memset
                            -

                            strlen (Thumb, 14 bytes, Stack size 0 bytes, strlen.o(.text)) -

                            [Called By]

                            • >>   cmd_parser_response_callback -
                            • >>   MultiUART_SendString -
                            • >>   UART2_Print_String +

                              strlen (Thumb, 14 bytes, Stack size 0 bytes, strlen.o(.text)) +

                              [Called By]

                              • >>   cmd_parser_response_callback +
                              • >>   MultiUART_SendString +
                              • >>   UART2_Print_String
                              -

                              strcmp (Thumb, 28 bytes, Stack size 8 bytes, strcmp.o(.text)) -

                              [Stack]

                              • Max Depth = 8
                              • Call Chain = strcmp -
                              -
                              [Called By]
                              • >>   process_cmd_frame -
                              - -

                              strncmp (Thumb, 30 bytes, Stack size 12 bytes, strncmp.o(.text)) +

                              strncmp (Thumb, 30 bytes, Stack size 12 bytes, strncmp.o(.text))

                              [Stack]

                              • Max Depth = 12
                              • Call Chain = strncmp
                              -
                              [Called By]
                              • >>   is_module_enabled +
                                [Called By]
                                • >>   is_module_enabled
                                -

                                __0sscanf (Thumb, 48 bytes, Stack size 72 bytes, __0sscanf.o(.text)) +

                                __0sscanf (Thumb, 48 bytes, Stack size 72 bytes, __0sscanf.o(.text))

                                [Stack]

                                • Max Depth = 216
                                • Call Chain = __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int
                                -
                                [Calls]
                                • >>   __vfscanf_char +
                                  [Calls]
                                  • >>   __vfscanf_char
                                  -
                                  [Called By]
                                  • >>   rf433_rx_app_parse_packet +
                                    [Called By]
                                    • >>   rf433_rx_app_parse_packet
                                    -

                                    _scanf_int (Thumb, 332 bytes, Stack size 56 bytes, _scanf_int.o(.text)) +

                                    _scanf_int (Thumb, 332 bytes, Stack size 56 bytes, _scanf_int.o(.text))

                                    [Stack]

                                    • Max Depth = 56
                                    • Call Chain = _scanf_int
                                    -
                                    [Calls]
                                    • >>   _chval +
                                      [Calls]
                                      • >>   _chval
                                      -
                                      [Called By]
                                      • >>   __vfscanf +
                                        [Called By]
                                        • >>   __vfscanf
                                        -

                                        atoi (Thumb, 26 bytes, Stack size 16 bytes, atoi.o(.text)) -

                                        [Stack]

                                        • Max Depth = 88
                                        • Call Chain = atoi ⇒ strtol ⇒ _strtoul -
                                        -
                                        [Calls]
                                        • >>   strtol -
                                        • >>   __aeabi_errno_addr -
                                        -
                                        [Called By]
                                        • >>   process_cmd_frame +

                                          __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) + +

                                          __aeabi_uidivmod (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) +

                                          [Called By]

                                          • >>   _printf_core
                                          -

                                          __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) - -

                                          __aeabi_uidivmod (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) -

                                          [Called By]

                                          • >>   _printf_core +

                                            __aeabi_uldivmod (Thumb, 98 bytes, Stack size 40 bytes, uldiv.o(.text), UNUSED) +

                                            [Calls]

                                            • >>   __aeabi_llsr +
                                            • >>   __aeabi_llsl +
                                            +
                                            [Called By]
                                            • >>   _printf_core +
                                            • >>   _fp_digits
                                            -

                                            __aeabi_uldivmod (Thumb, 98 bytes, Stack size 40 bytes, uldiv.o(.text), UNUSED) -

                                            [Calls]

                                            • >>   __aeabi_llsr -
                                            • >>   __aeabi_llsl -
                                            -
                                            [Called By]
                                            • >>   _printf_core -
                                            • >>   _fp_digits +

                                              _chval (Thumb, 28 bytes, Stack size 0 bytes, _chval.o(.text)) +

                                              [Called By]

                                              • >>   _scanf_int
                                              -

                                              _chval (Thumb, 28 bytes, Stack size 0 bytes, _chval.o(.text)) -

                                              [Called By]

                                              • >>   _strtoul -
                                              • >>   _scanf_int -
                                              - -

                                              __vfscanf_char (Thumb, 20 bytes, Stack size 0 bytes, scanf_char.o(.text)) +

                                              __vfscanf_char (Thumb, 20 bytes, Stack size 0 bytes, scanf_char.o(.text))

                                              [Stack]

                                              • Max Depth = 144
                                              • Call Chain = __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int
                                              -
                                              [Calls]
                                              • >>   __vfscanf +
                                                [Calls]
                                                • >>   __vfscanf
                                                -
                                                [Called By]
                                                • >>   __0sscanf +
                                                  [Called By]
                                                  • >>   __0sscanf
                                                  -

                                                  _sgetc (Thumb, 30 bytes, Stack size 0 bytes, _sgetc.o(.text)) +

                                                  _sgetc (Thumb, 30 bytes, Stack size 0 bytes, _sgetc.o(.text))
                                                  [Address Reference Count : 1]

                                                  • __0sscanf.o(.text)
                                                  -

                                                  _sbackspace (Thumb, 34 bytes, Stack size 0 bytes, _sgetc.o(.text)) +

                                                  _sbackspace (Thumb, 34 bytes, Stack size 0 bytes, _sgetc.o(.text))
                                                  [Address Reference Count : 1]

                                                  • __0sscanf.o(.text)
                                                  -

                                                  strtol (Thumb, 112 bytes, Stack size 32 bytes, strtol.o(.text)) -

                                                  [Stack]

                                                  • Max Depth = 72
                                                  • Call Chain = strtol ⇒ _strtoul +

                                                    __I$use$fp (Thumb, 0 bytes, Stack size 48 bytes, iusefp.o(.text), UNUSED) + +

                                                    __aeabi_dadd (Thumb, 322 bytes, Stack size 48 bytes, dadd.o(.text), UNUSED) +

                                                    [Calls]

                                                    • >>   __aeabi_lasr +
                                                    • >>   __aeabi_llsl +
                                                    • >>   _double_round +
                                                    • >>   _double_epilogue
                                                    -
                                                    [Calls]
                                                    • >>   __rt_ctype_table -
                                                    • >>   _strtoul -
                                                    • >>   __aeabi_errno_addr -
                                                    -
                                                    [Called By]
                                                    • >>   atoi +
                                                      [Called By]
                                                      • >>   __aeabi_drsub +
                                                      • >>   __aeabi_dsub +
                                                      • >>   _fp_digits
                                                      -

                                                      __I$use$fp (Thumb, 0 bytes, Stack size 48 bytes, iusefp.o(.text), UNUSED) - -

                                                      __aeabi_dadd (Thumb, 322 bytes, Stack size 48 bytes, dadd.o(.text), UNUSED) -

                                                      [Calls]

                                                      • >>   __aeabi_lasr -
                                                      • >>   __aeabi_llsl -
                                                      • >>   _double_round -
                                                      • >>   _double_epilogue -
                                                      -
                                                      [Called By]
                                                      • >>   __aeabi_drsub -
                                                      • >>   __aeabi_dsub -
                                                      • >>   _fp_digits +

                                                        __aeabi_dsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text), UNUSED) +

                                                        [Calls]

                                                        • >>   __aeabi_dadd
                                                        -

                                                        __aeabi_dsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text), UNUSED) -

                                                        [Calls]

                                                        • >>   __aeabi_dadd +

                                                          __aeabi_drsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text), UNUSED) +

                                                          [Calls]

                                                          • >>   __aeabi_dadd
                                                          -

                                                          __aeabi_drsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text), UNUSED) -

                                                          [Calls]

                                                          • >>   __aeabi_dadd +

                                                            __aeabi_dmul (Thumb, 228 bytes, Stack size 48 bytes, dmul.o(.text), UNUSED) +

                                                            [Calls]

                                                            • >>   _double_epilogue +
                                                            +
                                                            [Called By]
                                                            • >>   _fp_digits
                                                            -

                                                            __aeabi_dmul (Thumb, 228 bytes, Stack size 48 bytes, dmul.o(.text), UNUSED) -

                                                            [Calls]

                                                            • >>   _double_epilogue +

                                                              __aeabi_ddiv (Thumb, 222 bytes, Stack size 32 bytes, ddiv.o(.text), UNUSED) +

                                                              [Calls]

                                                              • >>   _double_round
                                                              -
                                                              [Called By]
                                                              • >>   _fp_digits +
                                                                [Called By]
                                                                • >>   _fp_digits
                                                                -

                                                                __aeabi_ddiv (Thumb, 222 bytes, Stack size 32 bytes, ddiv.o(.text), UNUSED) -

                                                                [Calls]

                                                                • >>   _double_round +

                                                                  __aeabi_d2ulz (Thumb, 48 bytes, Stack size 0 bytes, dfixul.o(.text), UNUSED) +

                                                                  [Calls]

                                                                  • >>   __aeabi_llsr +
                                                                  • >>   __aeabi_llsl
                                                                  -
                                                                  [Called By]
                                                                  • >>   _fp_digits +
                                                                    [Called By]
                                                                    • >>   _fp_digits
                                                                    -

                                                                    __aeabi_d2ulz (Thumb, 48 bytes, Stack size 0 bytes, dfixul.o(.text), UNUSED) -

                                                                    [Calls]

                                                                    • >>   __aeabi_llsr -
                                                                    • >>   __aeabi_llsl -
                                                                    -
                                                                    [Called By]
                                                                    • >>   _fp_digits +

                                                                      __aeabi_cdrcmple (Thumb, 48 bytes, Stack size 0 bytes, cdrcmple.o(.text), UNUSED) +

                                                                      [Called By]

                                                                      • >>   _fp_digits
                                                                      -

                                                                      __aeabi_cdrcmple (Thumb, 48 bytes, Stack size 0 bytes, cdrcmple.o(.text), UNUSED) -

                                                                      [Called By]

                                                                      • >>   _fp_digits +

                                                                        __scatterload (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text)) +

                                                                        [Calls]

                                                                        • >>   __main_after_scatterload +
                                                                        +
                                                                        [Called By]
                                                                        • >>   _main_scatterload
                                                                        -

                                                                        __scatterload (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text)) -

                                                                        [Calls]

                                                                        • >>   __main_after_scatterload -
                                                                        -
                                                                        [Called By]
                                                                        • >>   _main_scatterload +

                                                                          __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) + +

                                                                          __aeabi_llsl (Thumb, 30 bytes, Stack size 0 bytes, llshl.o(.text), UNUSED) +

                                                                          [Called By]

                                                                          • >>   _double_epilogue +
                                                                          • >>   __aeabi_uldivmod +
                                                                          • >>   __aeabi_dadd +
                                                                          • >>   __aeabi_d2ulz
                                                                          -

                                                                          __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) +

                                                                          _ll_shift_l (Thumb, 0 bytes, Stack size 0 bytes, llshl.o(.text), UNUSED) -

                                                                          __aeabi_llsl (Thumb, 30 bytes, Stack size 0 bytes, llshl.o(.text), UNUSED) -

                                                                          [Called By]

                                                                          • >>   _double_epilogue -
                                                                          • >>   __aeabi_uldivmod -
                                                                          • >>   __aeabi_dadd -
                                                                          • >>   __aeabi_d2ulz +

                                                                            __aeabi_lasr (Thumb, 36 bytes, Stack size 0 bytes, llsshr.o(.text), UNUSED) +

                                                                            [Called By]

                                                                            • >>   __aeabi_dadd
                                                                            -

                                                                            _ll_shift_l (Thumb, 0 bytes, Stack size 0 bytes, llshl.o(.text), UNUSED) +

                                                                            _ll_sshift_r (Thumb, 0 bytes, Stack size 0 bytes, llsshr.o(.text), UNUSED) -

                                                                            __aeabi_lasr (Thumb, 36 bytes, Stack size 0 bytes, llsshr.o(.text), UNUSED) -

                                                                            [Called By]

                                                                            • >>   __aeabi_dadd -
                                                                            - -

                                                                            _ll_sshift_r (Thumb, 0 bytes, Stack size 0 bytes, llsshr.o(.text), UNUSED) - -

                                                                            __vfscanf (Thumb, 810 bytes, Stack size 88 bytes, _scanf.o(.text)) +

                                                                            __vfscanf (Thumb, 810 bytes, Stack size 88 bytes, _scanf.o(.text))

                                                                            [Stack]

                                                                            • Max Depth = 144
                                                                            • Call Chain = __vfscanf ⇒ _scanf_int
                                                                            -
                                                                            [Calls]
                                                                            • >>   _scanf_int +
                                                                              [Calls]
                                                                              • >>   _scanf_int
                                                                              -
                                                                              [Called By]
                                                                              • >>   __vfscanf_char +
                                                                                [Called By]
                                                                                • >>   __vfscanf_char
                                                                                -

                                                                                _strtoul (Thumb, 158 bytes, Stack size 40 bytes, _strtoul.o(.text)) -

                                                                                [Stack]

                                                                                • Max Depth = 40
                                                                                • Call Chain = _strtoul -
                                                                                -
                                                                                [Calls]
                                                                                • >>   _chval -
                                                                                • >>   __aeabi_errno_addr -
                                                                                -
                                                                                [Called By]
                                                                                • >>   strtol +

                                                                                  _double_round (Thumb, 30 bytes, Stack size 8 bytes, depilogue.o(.text), UNUSED) +

                                                                                  [Called By]

                                                                                  • >>   _double_epilogue +
                                                                                  • >>   __aeabi_ddiv +
                                                                                  • >>   __aeabi_dadd
                                                                                  -

                                                                                  _double_round (Thumb, 30 bytes, Stack size 8 bytes, depilogue.o(.text), UNUSED) -

                                                                                  [Called By]

                                                                                  • >>   _double_epilogue -
                                                                                  • >>   __aeabi_ddiv -
                                                                                  • >>   __aeabi_dadd +

                                                                                    _double_epilogue (Thumb, 156 bytes, Stack size 32 bytes, depilogue.o(.text), UNUSED) +

                                                                                    [Calls]

                                                                                    • >>   __aeabi_llsr +
                                                                                    • >>   __aeabi_llsl +
                                                                                    • >>   _double_round +
                                                                                    +
                                                                                    [Called By]
                                                                                    • >>   __aeabi_dmul +
                                                                                    • >>   __aeabi_dadd
                                                                                    -

                                                                                    _double_epilogue (Thumb, 156 bytes, Stack size 32 bytes, depilogue.o(.text), UNUSED) -

                                                                                    [Calls]

                                                                                    • >>   __aeabi_llsr -
                                                                                    • >>   __aeabi_llsl -
                                                                                    • >>   _double_round -
                                                                                    -
                                                                                    [Called By]
                                                                                    • >>   __aeabi_dmul -
                                                                                    • >>   __aeabi_dadd -
                                                                                    +

                                                                                    __decompress (Thumb, 0 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED) -

                                                                                    BusFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.BusFault_Handler)) +

                                                                                    __decompress1 (Thumb, 86 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED) + +

                                                                                    BusFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.BusFault_Handler))
                                                                                    [Address Reference Count : 1]

                                                                                    • startup_stm32f103xb.o(RESET)
                                                                                    -

                                                                                    CmdParser_FeedByte (Thumb, 730 bytes, Stack size 16 bytes, cmd_parser.o(i.CmdParser_FeedByte)) -

                                                                                    [Stack]

                                                                                    • Max Depth = 208
                                                                                    • Call Chain = CmdParser_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                      CmdParser_Init (Thumb, 18 bytes, Stack size 8 bytes, cmd_parser.o(i.CmdParser_Init)) +

                                                                                      [Stack]

                                                                                      • Max Depth = 8
                                                                                      • Call Chain = CmdParser_Init
                                                                                      -
                                                                                      [Calls]
                                                                                      • >>   UART2_Print_Printf -
                                                                                      • >>   send_response_err -
                                                                                      • >>   reset_parser -
                                                                                      • >>   is_valid_param_char -
                                                                                      • >>   is_valid_cmd_char -
                                                                                      • >>   hex_to_byte +
                                                                                        [Calls]
                                                                                        • >>   __aeabi_memclr4
                                                                                        -
                                                                                        [Called By]
                                                                                        • >>   CmdRouter_Task -
                                                                                        • >>   HAL_UART_RxCpltCallback +
                                                                                          [Called By]
                                                                                          • >>   main
                                                                                          -

                                                                                          CmdParser_HasCompleteFrame (Thumb, 42 bytes, Stack size 8 bytes, cmd_parser.o(i.CmdParser_HasCompleteFrame)) -

                                                                                          [Stack]

                                                                                          • Max Depth = 8
                                                                                          • Call Chain = CmdParser_HasCompleteFrame -
                                                                                          -
                                                                                          [Calls]
                                                                                          • >>   __aeabi_memcpy -
                                                                                          -
                                                                                          [Called By]
                                                                                          • >>   CmdRouter_Task +

                                                                                            CmdParser_SetResponseCallback (Thumb, 6 bytes, Stack size 0 bytes, cmd_parser.o(i.CmdParser_SetResponseCallback)) +

                                                                                            [Called By]

                                                                                            • >>   CmdRouter_Init
                                                                                            -

                                                                                            CmdParser_Init (Thumb, 24 bytes, Stack size 8 bytes, cmd_parser.o(i.CmdParser_Init)) -

                                                                                            [Stack]

                                                                                            • Max Depth = 200
                                                                                            • Call Chain = CmdParser_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                              CmdRouter_Init (Thumb, 88 bytes, Stack size 8 bytes, cmd_router.o(i.CmdRouter_Init)) +

                                                                                              [Stack]

                                                                                              • Max Depth = 8
                                                                                              • Call Chain = CmdRouter_Init
                                                                                              -
                                                                                              [Calls]
                                                                                              • >>   UART2_Print_Printf -
                                                                                              • >>   __aeabi_memclr4 +
                                                                                                [Calls]
                                                                                                • >>   CmdParser_SetResponseCallback
                                                                                                -
                                                                                                [Called By]
                                                                                                • >>   main +
                                                                                                  [Called By]
                                                                                                  • >>   main
                                                                                                  -

                                                                                                  CmdParser_SetResponseCallback (Thumb, 6 bytes, Stack size 0 bytes, cmd_parser.o(i.CmdParser_SetResponseCallback)) -

                                                                                                  [Called By]

                                                                                                  • >>   CmdRouter_Init +

                                                                                                    DHCP_init (Thumb, 200 bytes, Stack size 16 bytes, dhcp.o(i.DHCP_init)) +

                                                                                                    [Stack]

                                                                                                    • Max Depth = 40
                                                                                                    • Call Chain = DHCP_init ⇒ WIZCHIP_READ_BUF +
                                                                                                    +
                                                                                                    [Calls]
                                                                                                    • >>   WIZCHIP_READ_BUF +
                                                                                                    • >>   reset_DHCP_timeout +
                                                                                                    • >>   WIZCHIP_WRITE_BUF +
                                                                                                    +
                                                                                                    [Called By]
                                                                                                    • >>   wiz_dhcp_process
                                                                                                    -

                                                                                                    CmdParser_SetSourcePort (Thumb, 6 bytes, Stack size 0 bytes, cmd_parser.o(i.CmdParser_SetSourcePort)) -

                                                                                                    [Called By]

                                                                                                    • >>   CmdRouter_Task +

                                                                                                      DHCP_run (Thumb, 424 bytes, Stack size 16 bytes, dhcp.o(i.DHCP_run)) +

                                                                                                      [Stack]

                                                                                                      • Max Depth = 152
                                                                                                      • Call Chain = DHCP_run ⇒ parseDHCPMSG ⇒ recvfrom ⇒ wiz_recv_data ⇒ WIZCHIP_READ_BUF +
                                                                                                      +
                                                                                                      [Calls]
                                                                                                      • >>   socket +
                                                                                                      • >>   WIZCHIP_READ +
                                                                                                      • >>   send_DHCP_REQUEST +
                                                                                                      • >>   send_DHCP_DISCOVER +
                                                                                                      • >>   reset_DHCP_timeout +
                                                                                                      • >>   parseDHCPMSG +
                                                                                                      • >>   check_DHCP_timeout +
                                                                                                      • >>   check_DHCP_leasedIP +
                                                                                                      +
                                                                                                      [Called By]
                                                                                                      • >>   wiz_dhcp_process
                                                                                                      -

                                                                                                      CmdParser_Task (Thumb, 32 bytes, Stack size 8 bytes, cmd_parser.o(i.CmdParser_Task)) -

                                                                                                      [Stack]

                                                                                                      • Max Depth = 280
                                                                                                      • Call Chain = CmdParser_Task ⇒ process_cmd_frame ⇒ Relay_SetState ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                        DHCP_stop (Thumb, 18 bytes, Stack size 8 bytes, dhcp.o(i.DHCP_stop)) +

                                                                                                        [Stack]

                                                                                                        • Max Depth = 32
                                                                                                        • Call Chain = DHCP_stop ⇒ close ⇒ WIZCHIP_WRITE
                                                                                                        -
                                                                                                        [Calls]
                                                                                                        • >>   reset_parser -
                                                                                                        • >>   process_cmd_frame +
                                                                                                          [Calls]
                                                                                                          • >>   close
                                                                                                          -
                                                                                                          [Called By]
                                                                                                          • >>   CmdRouter_Task -
                                                                                                          • >>   main +
                                                                                                            [Called By]
                                                                                                            • >>   wiz_dhcp_process
                                                                                                            -

                                                                                                            CmdRouter_Init (Thumb, 110 bytes, Stack size 8 bytes, cmd_router.o(i.CmdRouter_Init)) -

                                                                                                            [Stack]

                                                                                                            • Max Depth = 208
                                                                                                            • Call Chain = CmdRouter_Init ⇒ UART3_Protocol_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                              DHCP_time_handler (Thumb, 12 bytes, Stack size 0 bytes, dhcp.o(i.DHCP_time_handler)) +
                                                                                                              [Address Reference Count : 1]

                                                                                                              • wiz_interface.o(i.wiz_dhcp_process)
                                                                                                              -
                                                                                                              [Calls]
                                                                                                              • >>   UART3_Protocol_Init -
                                                                                                              • >>   Passthrough_Init -
                                                                                                              • >>   UART2_Print_Printf -
                                                                                                              • >>   CmdParser_SetResponseCallback -
                                                                                                              -
                                                                                                              [Called By]
                                                                                                              • >>   main -
                                                                                                              - -

                                                                                                              CmdRouter_Task (Thumb, 326 bytes, Stack size 152 bytes, cmd_router.o(i.CmdRouter_Task)) -

                                                                                                              [Stack]

                                                                                                              • Max Depth = 488
                                                                                                              • Call Chain = CmdRouter_Task ⇒ DebugLog_Output ⇒ __2snprintf -
                                                                                                              -
                                                                                                              [Calls]
                                                                                                              • >>   CmdParser_Task -
                                                                                                              • >>   CmdParser_FeedByte -
                                                                                                              • >>   HAL_GetTick -
                                                                                                              • >>   UART3_Protocol_GetPassthroughData -
                                                                                                              • >>   UART3_Protocol_FeedByte -
                                                                                                              • >>   UART3_Protocol_CheckTimeout -
                                                                                                              • >>   Passthrough_Task -
                                                                                                              • >>   Passthrough_PushByte -
                                                                                                              • >>   Passthrough_PushBuffer -
                                                                                                              • >>   MultiUART_ReadByte -
                                                                                                              • >>   MultiUART_GetRxCount -
                                                                                                              • >>   DebugLog_Output -
                                                                                                              • >>   flush_rx_log -
                                                                                                              • >>   append_rx_log -
                                                                                                              • >>   CmdParser_SetSourcePort -
                                                                                                              • >>   CmdParser_HasCompleteFrame -
                                                                                                              -
                                                                                                              [Called By]
                                                                                                              • >>   main -
                                                                                                              - -

                                                                                                              DebugLog_Init (Thumb, 20 bytes, Stack size 8 bytes, debug_log.o(i.DebugLog_Init)) +

                                                                                                              DebugLog_Init (Thumb, 20 bytes, Stack size 8 bytes, debug_log.o(i.DebugLog_Init))

                                                                                                              [Stack]

                                                                                                              • Max Depth = 56
                                                                                                              • Call Chain = DebugLog_Init ⇒ UART2_Print_String ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                              -
                                                                                                              [Calls]
                                                                                                              • >>   init_modules -
                                                                                                              • >>   UART2_Print_String +
                                                                                                                [Calls]
                                                                                                                • >>   init_modules +
                                                                                                                • >>   UART2_Print_String
                                                                                                                -
                                                                                                                [Called By]
                                                                                                                • >>   main +
                                                                                                                  [Called By]
                                                                                                                  • >>   main
                                                                                                                  -

                                                                                                                  DebugLog_Output (Thumb, 148 bytes, Stack size 296 bytes, debug_log.o(i.DebugLog_Output)) -

                                                                                                                  [Stack]

                                                                                                                  • Max Depth = 336
                                                                                                                  • Call Chain = DebugLog_Output ⇒ __2snprintf +

                                                                                                                    DebugLog_Output (Thumb, 158 bytes, Stack size 296 bytes, debug_log.o(i.DebugLog_Output)) +

                                                                                                                    [Stack]

                                                                                                                    • Max Depth = 352
                                                                                                                    • Call Chain = DebugLog_Output ⇒ MultiUART_Send ⇒ tx_kickoff ⇒ HAL_UART_Transmit_IT
                                                                                                                    -
                                                                                                                    [Calls]
                                                                                                                    • >>   is_module_enabled -
                                                                                                                    • >>   UART2_Print_Send -
                                                                                                                    • >>   vsnprintf -
                                                                                                                    • >>   __2snprintf +
                                                                                                                      [Calls]
                                                                                                                      • >>   MultiUART_Send +
                                                                                                                      • >>   is_module_enabled +
                                                                                                                      • >>   UART2_Print_Send +
                                                                                                                      • >>   vsnprintf +
                                                                                                                      • >>   __2snprintf
                                                                                                                      -
                                                                                                                      [Called By]
                                                                                                                      • >>   CmdRouter_Task -
                                                                                                                      • >>   cmd_parser_response_callback +
                                                                                                                        [Called By]
                                                                                                                        • >>   cmd_parser_response_callback
                                                                                                                        -

                                                                                                                        DebugMon_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DebugMon_Handler)) +

                                                                                                                        DebugLog_SetLevel (Thumb, 6 bytes, Stack size 0 bytes, debug_log.o(i.DebugLog_SetLevel)) +

                                                                                                                        [Called By]

                                                                                                                        • >>   main +
                                                                                                                        + +

                                                                                                                        DebugMon_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DebugMon_Handler))
                                                                                                                        [Address Reference Count : 1]

                                                                                                                        • startup_stm32f103xb.o(RESET)
                                                                                                                        -

                                                                                                                        Error_Handler (Thumb, 6 bytes, Stack size 0 bytes, main.o(i.Error_Handler)) -

                                                                                                                        [Called By]

                                                                                                                        • >>   MX_USART3_UART_Init -
                                                                                                                        • >>   MX_USART2_UART_Init -
                                                                                                                        • >>   MX_USART1_UART_Init -
                                                                                                                        • >>   MX_SPI2_Init -
                                                                                                                        • >>   SystemClock_Config +

                                                                                                                          Error_Handler (Thumb, 6 bytes, Stack size 0 bytes, main.o(i.Error_Handler)) +

                                                                                                                          [Called By]

                                                                                                                          • >>   MX_USART3_UART_Init +
                                                                                                                          • >>   MX_USART2_UART_Init +
                                                                                                                          • >>   MX_USART1_UART_Init +
                                                                                                                          • >>   MX_TIM2_Init +
                                                                                                                          • >>   MX_SPI2_Init +
                                                                                                                          • >>   SystemClock_Config
                                                                                                                          -

                                                                                                                          HAL_DMA_Abort (Thumb, 86 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Abort)) -

                                                                                                                          [Called By]

                                                                                                                          • >>   HAL_UART_IRQHandler +

                                                                                                                            HAL_DMA_Abort (Thumb, 86 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Abort)) +

                                                                                                                            [Called By]

                                                                                                                            • >>   HAL_UART_IRQHandler
                                                                                                                            -

                                                                                                                            HAL_DMA_Abort_IT (Thumb, 172 bytes, Stack size 16 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT)) +

                                                                                                                            HAL_DMA_Abort_IT (Thumb, 172 bytes, Stack size 16 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT))

                                                                                                                            [Stack]

                                                                                                                            • Max Depth = 16
                                                                                                                            • Call Chain = HAL_DMA_Abort_IT
                                                                                                                            -
                                                                                                                            [Called By]
                                                                                                                            • >>   HAL_UART_IRQHandler +
                                                                                                                              [Called By]
                                                                                                                              • >>   HAL_UART_IRQHandler
                                                                                                                              -

                                                                                                                              HAL_Delay (Thumb, 36 bytes, Stack size 16 bytes, stm32f1xx_hal.o(i.HAL_Delay)) +

                                                                                                                              HAL_Delay (Thumb, 36 bytes, Stack size 16 bytes, stm32f1xx_hal.o(i.HAL_Delay))

                                                                                                                              [Stack]

                                                                                                                              • Max Depth = 16
                                                                                                                              • Call Chain = HAL_Delay
                                                                                                                              -
                                                                                                                              [Calls]
                                                                                                                              • >>   HAL_GetTick +
                                                                                                                                [Calls]
                                                                                                                                • >>   HAL_GetTick
                                                                                                                                -
                                                                                                                                [Called By]
                                                                                                                                • >>   rf433_tx_app_task -
                                                                                                                                • >>   rf433_set_config -
                                                                                                                                • >>   rf433_rx_app_task -
                                                                                                                                • >>   rf433_hal_set_work_mode -
                                                                                                                                • >>   rf433_hal_aux_wait +
                                                                                                                                  [Called By]
                                                                                                                                  • >>   rf433_tx_app_task +
                                                                                                                                  • >>   rf433_set_config +
                                                                                                                                  • >>   rf433_rx_app_task +
                                                                                                                                  • >>   rf433_hal_set_work_mode +
                                                                                                                                  • >>   rf433_hal_aux_wait
                                                                                                                                  -

                                                                                                                                  HAL_GPIO_Init (Thumb, 766 bytes, Stack size 36 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init)) +

                                                                                                                                  HAL_GPIO_Init (Thumb, 766 bytes, Stack size 36 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init))

                                                                                                                                  [Stack]

                                                                                                                                  • Max Depth = 36
                                                                                                                                  • Call Chain = HAL_GPIO_Init
                                                                                                                                  -
                                                                                                                                  [Called By]
                                                                                                                                  • >>   HAL_UART_MspInit -
                                                                                                                                  • >>   HAL_SPI_MspInit -
                                                                                                                                  • >>   MX_GPIO_Init +
                                                                                                                                    [Called By]
                                                                                                                                    • >>   HAL_UART_MspInit +
                                                                                                                                    • >>   HAL_SPI_MspInit +
                                                                                                                                    • >>   MX_GPIO_Init
                                                                                                                                    -

                                                                                                                                    HAL_GPIO_ReadPin (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin)) -

                                                                                                                                    [Called By]

                                                                                                                                    • >>   IO_Monitor_Task -
                                                                                                                                    • >>   IO_Monitor_Init -
                                                                                                                                    • >>   rf433_hal_aux_wait +

                                                                                                                                      HAL_GPIO_ReadPin (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin)) +

                                                                                                                                      [Called By]

                                                                                                                                      • >>   IO_Monitor_Task +
                                                                                                                                      • >>   IO_Monitor_Init +
                                                                                                                                      • >>   rf433_hal_aux_wait
                                                                                                                                      -

                                                                                                                                      HAL_GPIO_WritePin (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin)) -

                                                                                                                                      [Called By]

                                                                                                                                      • >>   Relay_Init -
                                                                                                                                      • >>   MX_GPIO_Init -
                                                                                                                                      • >>   gpio_led_tx_on -
                                                                                                                                      • >>   gpio_led_tx_off -
                                                                                                                                      • >>   gpio_led_rx_on -
                                                                                                                                      • >>   gpio_led_rx_off -
                                                                                                                                      • >>   Relay_SetState -
                                                                                                                                      • >>   rf433_hal_set_work_mode +

                                                                                                                                        HAL_GPIO_WritePin (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin)) +

                                                                                                                                        [Called By]

                                                                                                                                        • >>   Relay_Init +
                                                                                                                                        • >>   MX_GPIO_Init +
                                                                                                                                        • >>   gpio_led_tx_on +
                                                                                                                                        • >>   gpio_led_tx_off +
                                                                                                                                        • >>   gpio_led_rx_on +
                                                                                                                                        • >>   gpio_led_rx_off +
                                                                                                                                        • >>   wizchip_select +
                                                                                                                                        • >>   wizchip_reset +
                                                                                                                                        • >>   wizchip_deselect +
                                                                                                                                        • >>   rf433_hal_set_work_mode
                                                                                                                                        -

                                                                                                                                        HAL_GetTick (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(i.HAL_GetTick)) -

                                                                                                                                        [Called By]

                                                                                                                                        • >>   IO_Monitor_Task -
                                                                                                                                        • >>   HAL_RCC_OscConfig -
                                                                                                                                        • >>   HAL_RCC_ClockConfig -
                                                                                                                                        • >>   CmdRouter_Task -
                                                                                                                                        • >>   HAL_UART_RxCpltCallback -
                                                                                                                                        • >>   rf433_tx_app_task -
                                                                                                                                        • >>   HAL_Delay -
                                                                                                                                        • >>   append_rx_log -
                                                                                                                                        • >>   Relay_SetState -
                                                                                                                                        • >>   HAL_UART_Transmit -
                                                                                                                                        • >>   UART_WaitOnFlagUntilTimeout -
                                                                                                                                        • >>   rf433_hal_aux_wait +

                                                                                                                                          HAL_GetTick (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(i.HAL_GetTick)) +

                                                                                                                                          [Called By]

                                                                                                                                          • >>   IO_Monitor_Task +
                                                                                                                                          • >>   HAL_RCC_OscConfig +
                                                                                                                                          • >>   HAL_RCC_ClockConfig +
                                                                                                                                          • >>   main +
                                                                                                                                          • >>   HAL_UART_RxCpltCallback +
                                                                                                                                          • >>   rf433_tx_app_task +
                                                                                                                                          • >>   HAL_Delay +
                                                                                                                                          • >>   HAL_SPI_TransmitReceive +
                                                                                                                                          • >>   HAL_SPI_Transmit +
                                                                                                                                          • >>   HAL_SPI_Receive +
                                                                                                                                          • >>   SPI_WaitFlagStateUntilTimeout +
                                                                                                                                          • >>   rf433_hal_aux_wait +
                                                                                                                                          • >>   HAL_UART_Transmit +
                                                                                                                                          • >>   UART_WaitOnFlagUntilTimeout
                                                                                                                                          -

                                                                                                                                          HAL_IncTick (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal.o(i.HAL_IncTick)) -

                                                                                                                                          [Called By]

                                                                                                                                          • >>   SysTick_Handler +

                                                                                                                                            HAL_IncTick (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal.o(i.HAL_IncTick)) +

                                                                                                                                            [Called By]

                                                                                                                                            • >>   SysTick_Handler
                                                                                                                                            -

                                                                                                                                            HAL_Init (Thumb, 34 bytes, Stack size 8 bytes, stm32f1xx_hal.o(i.HAL_Init)) +

                                                                                                                                            HAL_Init (Thumb, 34 bytes, Stack size 8 bytes, stm32f1xx_hal.o(i.HAL_Init))

                                                                                                                                            [Stack]

                                                                                                                                            • Max Depth = 72
                                                                                                                                            • Call Chain = HAL_Init ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                            -
                                                                                                                                            [Calls]
                                                                                                                                            • >>   HAL_MspInit -
                                                                                                                                            • >>   HAL_InitTick -
                                                                                                                                            • >>   HAL_NVIC_SetPriorityGrouping +
                                                                                                                                              [Calls]
                                                                                                                                              • >>   HAL_MspInit +
                                                                                                                                              • >>   HAL_InitTick +
                                                                                                                                              • >>   HAL_NVIC_SetPriorityGrouping
                                                                                                                                              -
                                                                                                                                              [Called By]
                                                                                                                                              • >>   main +
                                                                                                                                                [Called By]
                                                                                                                                                • >>   main
                                                                                                                                                -

                                                                                                                                                HAL_InitTick (Thumb, 64 bytes, Stack size 16 bytes, stm32f1xx_hal.o(i.HAL_InitTick)) +

                                                                                                                                                HAL_InitTick (Thumb, 64 bytes, Stack size 16 bytes, stm32f1xx_hal.o(i.HAL_InitTick))

                                                                                                                                                [Stack]

                                                                                                                                                • Max Depth = 64
                                                                                                                                                • Call Chain = HAL_InitTick ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                                -
                                                                                                                                                [Calls]
                                                                                                                                                • >>   HAL_NVIC_SetPriority -
                                                                                                                                                • >>   HAL_SYSTICK_Config +
                                                                                                                                                  [Calls]
                                                                                                                                                  • >>   HAL_NVIC_SetPriority +
                                                                                                                                                  • >>   HAL_SYSTICK_Config
                                                                                                                                                  -
                                                                                                                                                  [Called By]
                                                                                                                                                  • >>   HAL_RCC_ClockConfig -
                                                                                                                                                  • >>   HAL_Init +
                                                                                                                                                    [Called By]
                                                                                                                                                    • >>   HAL_RCC_ClockConfig +
                                                                                                                                                    • >>   HAL_Init
                                                                                                                                                    -

                                                                                                                                                    HAL_MspInit (Thumb, 76 bytes, Stack size 8 bytes, stm32f1xx_hal_msp.o(i.HAL_MspInit)) +

                                                                                                                                                    HAL_MspInit (Thumb, 76 bytes, Stack size 8 bytes, stm32f1xx_hal_msp.o(i.HAL_MspInit))

                                                                                                                                                    [Stack]

                                                                                                                                                    • Max Depth = 8
                                                                                                                                                    • Call Chain = HAL_MspInit
                                                                                                                                                    -
                                                                                                                                                    [Called By]
                                                                                                                                                    • >>   HAL_Init +
                                                                                                                                                      [Called By]
                                                                                                                                                      • >>   HAL_Init
                                                                                                                                                      -

                                                                                                                                                      HAL_NVIC_EnableIRQ (Thumb, 32 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ)) -

                                                                                                                                                      [Called By]

                                                                                                                                                      • >>   HAL_UART_MspInit +

                                                                                                                                                        HAL_NVIC_EnableIRQ (Thumb, 32 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ)) +

                                                                                                                                                        [Called By]

                                                                                                                                                        • >>   HAL_UART_MspInit +
                                                                                                                                                        • >>   HAL_TIM_Base_MspInit
                                                                                                                                                        -

                                                                                                                                                        HAL_NVIC_SetPriority (Thumb, 124 bytes, Stack size 40 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority)) +

                                                                                                                                                        HAL_NVIC_SetPriority (Thumb, 124 bytes, Stack size 40 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority))

                                                                                                                                                        [Stack]

                                                                                                                                                        • Max Depth = 48
                                                                                                                                                        • Call Chain = HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                                        -
                                                                                                                                                        [Calls]
                                                                                                                                                        • >>   __NVIC_SetPriority -
                                                                                                                                                        • >>   __NVIC_GetPriorityGrouping +
                                                                                                                                                          [Calls]
                                                                                                                                                          • >>   __NVIC_SetPriority +
                                                                                                                                                          • >>   __NVIC_GetPriorityGrouping
                                                                                                                                                          -
                                                                                                                                                          [Called By]
                                                                                                                                                          • >>   HAL_UART_MspInit -
                                                                                                                                                          • >>   HAL_InitTick +
                                                                                                                                                            [Called By]
                                                                                                                                                            • >>   HAL_UART_MspInit +
                                                                                                                                                            • >>   HAL_InitTick +
                                                                                                                                                            • >>   HAL_TIM_Base_MspInit
                                                                                                                                                            -

                                                                                                                                                            HAL_NVIC_SetPriorityGrouping (Thumb, 32 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping)) -

                                                                                                                                                            [Called By]

                                                                                                                                                            • >>   HAL_Init +

                                                                                                                                                              HAL_NVIC_SetPriorityGrouping (Thumb, 32 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping)) +

                                                                                                                                                              [Called By]

                                                                                                                                                              • >>   HAL_Init
                                                                                                                                                              -

                                                                                                                                                              HAL_RCC_ClockConfig (Thumb, 376 bytes, Stack size 16 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig)) +

                                                                                                                                                              HAL_RCC_ClockConfig (Thumb, 376 bytes, Stack size 16 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig))

                                                                                                                                                              [Stack]

                                                                                                                                                              • Max Depth = 80
                                                                                                                                                              • Call Chain = HAL_RCC_ClockConfig ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                                              -
                                                                                                                                                              [Calls]
                                                                                                                                                              • >>   HAL_GetTick -
                                                                                                                                                              • >>   HAL_RCC_GetSysClockFreq -
                                                                                                                                                              • >>   HAL_InitTick +
                                                                                                                                                                [Calls]
                                                                                                                                                                • >>   HAL_GetTick +
                                                                                                                                                                • >>   HAL_RCC_GetSysClockFreq +
                                                                                                                                                                • >>   HAL_InitTick
                                                                                                                                                                -
                                                                                                                                                                [Called By]
                                                                                                                                                                • >>   SystemClock_Config +
                                                                                                                                                                  [Called By]
                                                                                                                                                                  • >>   SystemClock_Config
                                                                                                                                                                  -

                                                                                                                                                                  HAL_RCC_GetHCLKFreq (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq)) -

                                                                                                                                                                  [Called By]

                                                                                                                                                                  • >>   HAL_RCC_GetPCLK2Freq -
                                                                                                                                                                  • >>   HAL_RCC_GetPCLK1Freq +

                                                                                                                                                                    HAL_RCC_GetHCLKFreq (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq)) +

                                                                                                                                                                    [Called By]

                                                                                                                                                                    • >>   HAL_RCC_GetPCLK2Freq +
                                                                                                                                                                    • >>   HAL_RCC_GetPCLK1Freq
                                                                                                                                                                    -

                                                                                                                                                                    HAL_RCC_GetPCLK1Freq (Thumb, 22 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq)) +

                                                                                                                                                                    HAL_RCC_GetPCLK1Freq (Thumb, 22 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq))

                                                                                                                                                                    [Stack]

                                                                                                                                                                    • Max Depth = 4
                                                                                                                                                                    • Call Chain = HAL_RCC_GetPCLK1Freq
                                                                                                                                                                    -
                                                                                                                                                                    [Calls]
                                                                                                                                                                    • >>   HAL_RCC_GetHCLKFreq +
                                                                                                                                                                      [Calls]
                                                                                                                                                                      • >>   HAL_RCC_GetHCLKFreq
                                                                                                                                                                      -
                                                                                                                                                                      [Called By]
                                                                                                                                                                      • >>   UART_SetConfig +
                                                                                                                                                                        [Called By]
                                                                                                                                                                        • >>   UART_SetConfig
                                                                                                                                                                        -

                                                                                                                                                                        HAL_RCC_GetPCLK2Freq (Thumb, 22 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq)) +

                                                                                                                                                                        HAL_RCC_GetPCLK2Freq (Thumb, 22 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq))

                                                                                                                                                                        [Stack]

                                                                                                                                                                        • Max Depth = 4
                                                                                                                                                                        • Call Chain = HAL_RCC_GetPCLK2Freq
                                                                                                                                                                        -
                                                                                                                                                                        [Calls]
                                                                                                                                                                        • >>   HAL_RCC_GetHCLKFreq +
                                                                                                                                                                          [Calls]
                                                                                                                                                                          • >>   HAL_RCC_GetHCLKFreq
                                                                                                                                                                          -
                                                                                                                                                                          [Called By]
                                                                                                                                                                          • >>   UART_SetConfig +
                                                                                                                                                                            [Called By]
                                                                                                                                                                            • >>   UART_SetConfig
                                                                                                                                                                            -

                                                                                                                                                                            HAL_RCC_GetSysClockFreq (Thumb, 92 bytes, Stack size 16 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq)) +

                                                                                                                                                                            HAL_RCC_GetSysClockFreq (Thumb, 92 bytes, Stack size 16 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq))

                                                                                                                                                                            [Stack]

                                                                                                                                                                            • Max Depth = 16
                                                                                                                                                                            • Call Chain = HAL_RCC_GetSysClockFreq
                                                                                                                                                                            -
                                                                                                                                                                            [Called By]
                                                                                                                                                                            • >>   HAL_RCC_ClockConfig +
                                                                                                                                                                              [Called By]
                                                                                                                                                                              • >>   HAL_RCC_ClockConfig
                                                                                                                                                                              -

                                                                                                                                                                              HAL_RCC_OscConfig (Thumb, 1114 bytes, Stack size 24 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig)) +

                                                                                                                                                                              HAL_RCC_OscConfig (Thumb, 1114 bytes, Stack size 24 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig))

                                                                                                                                                                              [Stack]

                                                                                                                                                                              • Max Depth = 32
                                                                                                                                                                              • Call Chain = HAL_RCC_OscConfig ⇒ RCC_Delay
                                                                                                                                                                              -
                                                                                                                                                                              [Calls]
                                                                                                                                                                              • >>   HAL_GetTick -
                                                                                                                                                                              • >>   RCC_Delay +
                                                                                                                                                                                [Calls]
                                                                                                                                                                                • >>   HAL_GetTick +
                                                                                                                                                                                • >>   RCC_Delay
                                                                                                                                                                                -
                                                                                                                                                                                [Called By]
                                                                                                                                                                                • >>   SystemClock_Config +
                                                                                                                                                                                  [Called By]
                                                                                                                                                                                  • >>   SystemClock_Config
                                                                                                                                                                                  -

                                                                                                                                                                                  HAL_SPI_Init (Thumb, 190 bytes, Stack size 8 bytes, stm32f1xx_hal_spi.o(i.HAL_SPI_Init)) +

                                                                                                                                                                                  HAL_SPI_Init (Thumb, 190 bytes, Stack size 8 bytes, stm32f1xx_hal_spi.o(i.HAL_SPI_Init))

                                                                                                                                                                                  [Stack]

                                                                                                                                                                                  • Max Depth = 76
                                                                                                                                                                                  • Call Chain = HAL_SPI_Init ⇒ HAL_SPI_MspInit ⇒ HAL_GPIO_Init
                                                                                                                                                                                  -
                                                                                                                                                                                  [Calls]
                                                                                                                                                                                  • >>   HAL_SPI_MspInit +
                                                                                                                                                                                    [Calls]
                                                                                                                                                                                    • >>   HAL_SPI_MspInit
                                                                                                                                                                                    -
                                                                                                                                                                                    [Called By]
                                                                                                                                                                                    • >>   MX_SPI2_Init +
                                                                                                                                                                                      [Called By]
                                                                                                                                                                                      • >>   MX_SPI2_Init
                                                                                                                                                                                      -

                                                                                                                                                                                      HAL_SPI_MspInit (Thumb, 124 bytes, Stack size 32 bytes, spi.o(i.HAL_SPI_MspInit)) +

                                                                                                                                                                                      HAL_SPI_MspInit (Thumb, 124 bytes, Stack size 32 bytes, spi.o(i.HAL_SPI_MspInit))

                                                                                                                                                                                      [Stack]

                                                                                                                                                                                      • Max Depth = 68
                                                                                                                                                                                      • Call Chain = HAL_SPI_MspInit ⇒ HAL_GPIO_Init
                                                                                                                                                                                      -
                                                                                                                                                                                      [Calls]
                                                                                                                                                                                      • >>   HAL_GPIO_Init +
                                                                                                                                                                                        [Calls]
                                                                                                                                                                                        • >>   HAL_GPIO_Init
                                                                                                                                                                                        -
                                                                                                                                                                                        [Called By]
                                                                                                                                                                                        • >>   HAL_SPI_Init +
                                                                                                                                                                                          [Called By]
                                                                                                                                                                                          • >>   HAL_SPI_Init
                                                                                                                                                                                          -

                                                                                                                                                                                          HAL_SYSTICK_Config (Thumb, 52 bytes, Stack size 16 bytes, stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config)) +

                                                                                                                                                                                          HAL_SPI_Receive (Thumb, 382 bytes, Stack size 32 bytes, stm32f1xx_hal_spi.o(i.HAL_SPI_Receive)) +

                                                                                                                                                                                          [Stack]

                                                                                                                                                                                          • Max Depth = 152
                                                                                                                                                                                          • Call Chain = HAL_SPI_Receive ⇒ HAL_SPI_TransmitReceive ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                          +
                                                                                                                                                                                          [Calls]
                                                                                                                                                                                          • >>   HAL_GetTick +
                                                                                                                                                                                          • >>   HAL_SPI_TransmitReceive +
                                                                                                                                                                                          • >>   SPI_EndRxTransaction +
                                                                                                                                                                                          +
                                                                                                                                                                                          [Called By]
                                                                                                                                                                                          • >>   wizchip_read_byte +
                                                                                                                                                                                          • >>   wizchip_read_buff +
                                                                                                                                                                                          + +

                                                                                                                                                                                          HAL_SPI_Transmit (Thumb, 444 bytes, Stack size 40 bytes, stm32f1xx_hal_spi.o(i.HAL_SPI_Transmit)) +

                                                                                                                                                                                          [Stack]

                                                                                                                                                                                          • Max Depth = 104
                                                                                                                                                                                          • Call Chain = HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                          +
                                                                                                                                                                                          [Calls]
                                                                                                                                                                                          • >>   HAL_GetTick +
                                                                                                                                                                                          • >>   SPI_EndRxTxTransaction +
                                                                                                                                                                                          +
                                                                                                                                                                                          [Called By]
                                                                                                                                                                                          • >>   wizchip_write_byte +
                                                                                                                                                                                          • >>   wizchip_write_buff +
                                                                                                                                                                                          + +

                                                                                                                                                                                          HAL_SPI_TransmitReceive (Thumb, 576 bytes, Stack size 56 bytes, stm32f1xx_hal_spi.o(i.HAL_SPI_TransmitReceive)) +

                                                                                                                                                                                          [Stack]

                                                                                                                                                                                          • Max Depth = 120
                                                                                                                                                                                          • Call Chain = HAL_SPI_TransmitReceive ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                          +
                                                                                                                                                                                          [Calls]
                                                                                                                                                                                          • >>   HAL_GetTick +
                                                                                                                                                                                          • >>   SPI_EndRxTxTransaction +
                                                                                                                                                                                          +
                                                                                                                                                                                          [Called By]
                                                                                                                                                                                          • >>   HAL_SPI_Receive +
                                                                                                                                                                                          + +

                                                                                                                                                                                          HAL_SYSTICK_Config (Thumb, 52 bytes, Stack size 16 bytes, stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config))

                                                                                                                                                                                          [Stack]

                                                                                                                                                                                          • Max Depth = 24
                                                                                                                                                                                          • Call Chain = HAL_SYSTICK_Config ⇒ __NVIC_SetPriority
                                                                                                                                                                                          -
                                                                                                                                                                                          [Calls]
                                                                                                                                                                                          • >>   __NVIC_SetPriority +
                                                                                                                                                                                            [Calls]
                                                                                                                                                                                            • >>   __NVIC_SetPriority
                                                                                                                                                                                            -
                                                                                                                                                                                            [Called By]
                                                                                                                                                                                            • >>   HAL_InitTick +
                                                                                                                                                                                              [Called By]
                                                                                                                                                                                              • >>   HAL_InitTick
                                                                                                                                                                                              -

                                                                                                                                                                                              HAL_UARTEx_RxEventCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback)) -

                                                                                                                                                                                              [Called By]

                                                                                                                                                                                              • >>   HAL_UART_IRQHandler -
                                                                                                                                                                                              • >>   UART_Receive_IT +

                                                                                                                                                                                                HAL_TIMEx_BreakCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_BreakCallback)) +

                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                • >>   HAL_TIM_IRQHandler
                                                                                                                                                                                                -

                                                                                                                                                                                                HAL_UART_ErrorCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback)) -

                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                • >>   HAL_UART_IRQHandler -
                                                                                                                                                                                                • >>   UART_DMAAbortOnError +

                                                                                                                                                                                                  HAL_TIMEx_CommutCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_CommutCallback)) +

                                                                                                                                                                                                  [Called By]

                                                                                                                                                                                                  • >>   HAL_TIM_IRQHandler
                                                                                                                                                                                                  -

                                                                                                                                                                                                  HAL_UART_IRQHandler (Thumb, 736 bytes, Stack size 40 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler)) -

                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                  • Max Depth = 288
                                                                                                                                                                                                  • Call Chain = HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ MultiUART_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                                    HAL_TIMEx_MasterConfigSynchronization (Thumb, 118 bytes, Stack size 12 bytes, stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization)) +

                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                    • Max Depth = 12
                                                                                                                                                                                                    • Call Chain = HAL_TIMEx_MasterConfigSynchronization
                                                                                                                                                                                                    -
                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                    • >>   HAL_DMA_Abort_IT -
                                                                                                                                                                                                    • >>   HAL_DMA_Abort -
                                                                                                                                                                                                    • >>   HAL_UART_ErrorCallback -
                                                                                                                                                                                                    • >>   HAL_UARTEx_RxEventCallback -
                                                                                                                                                                                                    • >>   UART_Transmit_IT -
                                                                                                                                                                                                    • >>   UART_Receive_IT -
                                                                                                                                                                                                    • >>   UART_EndTransmit_IT -
                                                                                                                                                                                                    • >>   UART_EndRxTransfer -
                                                                                                                                                                                                    -
                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                    • >>   USART3_IRQHandler -
                                                                                                                                                                                                    • >>   USART2_IRQHandler -
                                                                                                                                                                                                    • >>   USART1_IRQHandler +
                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                      • >>   MX_TIM2_Init
                                                                                                                                                                                                      -

                                                                                                                                                                                                      HAL_UART_Init (Thumb, 118 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Init)) +

                                                                                                                                                                                                      HAL_TIM_Base_Init (Thumb, 102 bytes, Stack size 8 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Init)) +

                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                      • Max Depth = 72
                                                                                                                                                                                                      • Call Chain = HAL_TIM_Base_Init ⇒ HAL_TIM_Base_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority +
                                                                                                                                                                                                      +
                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                      • >>   HAL_TIM_Base_MspInit +
                                                                                                                                                                                                      • >>   TIM_Base_SetConfig +
                                                                                                                                                                                                      +
                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                      • >>   MX_TIM2_Init +
                                                                                                                                                                                                      + +

                                                                                                                                                                                                      HAL_TIM_Base_MspInit (Thumb, 58 bytes, Stack size 16 bytes, tim.o(i.HAL_TIM_Base_MspInit)) +

                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                      • Max Depth = 64
                                                                                                                                                                                                      • Call Chain = HAL_TIM_Base_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority +
                                                                                                                                                                                                      +
                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                      • >>   HAL_NVIC_SetPriority +
                                                                                                                                                                                                      • >>   HAL_NVIC_EnableIRQ +
                                                                                                                                                                                                      +
                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                      • >>   HAL_TIM_Base_Init +
                                                                                                                                                                                                      + +

                                                                                                                                                                                                      HAL_TIM_Base_Start_IT (Thumb, 106 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start_IT)) +

                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                      • >>   main +
                                                                                                                                                                                                      + +

                                                                                                                                                                                                      HAL_TIM_ConfigClockSource (Thumb, 268 bytes, Stack size 24 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_ConfigClockSource)) +

                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                      • Max Depth = 36
                                                                                                                                                                                                      • Call Chain = HAL_TIM_ConfigClockSource ⇒ TIM_TI2_ConfigInputStage +
                                                                                                                                                                                                      +
                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                      • >>   TIM_TI2_ConfigInputStage +
                                                                                                                                                                                                      • >>   TIM_TI1_ConfigInputStage +
                                                                                                                                                                                                      • >>   TIM_ITRx_SetConfig +
                                                                                                                                                                                                      • >>   TIM_ETR_SetConfig +
                                                                                                                                                                                                      +
                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                      • >>   MX_TIM2_Init +
                                                                                                                                                                                                      + +

                                                                                                                                                                                                      HAL_TIM_IC_CaptureCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_IC_CaptureCallback)) +

                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                      • >>   HAL_TIM_IRQHandler +
                                                                                                                                                                                                      + +

                                                                                                                                                                                                      HAL_TIM_IRQHandler (Thumb, 406 bytes, Stack size 8 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_IRQHandler)) +

                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                      • Max Depth = 24
                                                                                                                                                                                                      • Call Chain = HAL_TIM_IRQHandler ⇒ HAL_TIM_PeriodElapsedCallback ⇒ wiz_timer_handler +
                                                                                                                                                                                                      +
                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                      • >>   HAL_TIM_PeriodElapsedCallback +
                                                                                                                                                                                                      • >>   HAL_TIM_TriggerCallback +
                                                                                                                                                                                                      • >>   HAL_TIM_PWM_PulseFinishedCallback +
                                                                                                                                                                                                      • >>   HAL_TIM_OC_DelayElapsedCallback +
                                                                                                                                                                                                      • >>   HAL_TIM_IC_CaptureCallback +
                                                                                                                                                                                                      • >>   HAL_TIMEx_CommutCallback +
                                                                                                                                                                                                      • >>   HAL_TIMEx_BreakCallback +
                                                                                                                                                                                                      +
                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                      • >>   TIM2_IRQHandler +
                                                                                                                                                                                                      + +

                                                                                                                                                                                                      HAL_TIM_OC_DelayElapsedCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_OC_DelayElapsedCallback)) +

                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                      • >>   HAL_TIM_IRQHandler +
                                                                                                                                                                                                      + +

                                                                                                                                                                                                      HAL_TIM_PWM_PulseFinishedCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_PulseFinishedCallback)) +

                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                      • >>   HAL_TIM_IRQHandler +
                                                                                                                                                                                                      + +

                                                                                                                                                                                                      HAL_TIM_PeriodElapsedCallback (Thumb, 18 bytes, Stack size 8 bytes, wiz_platform.o(i.HAL_TIM_PeriodElapsedCallback)) +

                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                      • Max Depth = 16
                                                                                                                                                                                                      • Call Chain = HAL_TIM_PeriodElapsedCallback ⇒ wiz_timer_handler +
                                                                                                                                                                                                      +
                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                      • >>   wiz_timer_handler +
                                                                                                                                                                                                      +
                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                      • >>   HAL_TIM_IRQHandler +
                                                                                                                                                                                                      + +

                                                                                                                                                                                                      HAL_TIM_TriggerCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.HAL_TIM_TriggerCallback)) +

                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                      • >>   HAL_TIM_IRQHandler +
                                                                                                                                                                                                      + +

                                                                                                                                                                                                      HAL_UARTEx_RxEventCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback)) +

                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                      • >>   HAL_UART_IRQHandler +
                                                                                                                                                                                                      • >>   UART_Receive_IT +
                                                                                                                                                                                                      + +

                                                                                                                                                                                                      HAL_UART_ErrorCallback (Thumb, 130 bytes, Stack size 16 bytes, main.o(i.HAL_UART_ErrorCallback)) +

                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                      • Max Depth = 40
                                                                                                                                                                                                      • Call Chain = HAL_UART_ErrorCallback ⇒ HAL_UART_Receive_IT ⇒ UART_Start_Receive_IT +
                                                                                                                                                                                                      +
                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                      • >>   HAL_UART_Receive_IT +
                                                                                                                                                                                                      +
                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                      • >>   HAL_UART_IRQHandler +
                                                                                                                                                                                                      • >>   UART_DMAAbortOnError +
                                                                                                                                                                                                      + +

                                                                                                                                                                                                      HAL_UART_IRQHandler (Thumb, 736 bytes, Stack size 40 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler)) +

                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                      • Max Depth = 104
                                                                                                                                                                                                      • Call Chain = HAL_UART_IRQHandler ⇒ UART_EndTransmit_IT ⇒ HAL_UART_TxCpltCallback ⇒ MultiUART_TxCpltCallback ⇒ UART2_Print_TxCpltCallback ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                                                                      +
                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                      • >>   HAL_UART_ErrorCallback +
                                                                                                                                                                                                      • >>   HAL_DMA_Abort_IT +
                                                                                                                                                                                                      • >>   HAL_DMA_Abort +
                                                                                                                                                                                                      • >>   HAL_UARTEx_RxEventCallback +
                                                                                                                                                                                                      • >>   UART_Transmit_IT +
                                                                                                                                                                                                      • >>   UART_Receive_IT +
                                                                                                                                                                                                      • >>   UART_EndTransmit_IT +
                                                                                                                                                                                                      • >>   UART_EndRxTransfer +
                                                                                                                                                                                                      +
                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                      • >>   USART3_IRQHandler +
                                                                                                                                                                                                      • >>   USART2_IRQHandler +
                                                                                                                                                                                                      • >>   USART1_IRQHandler +
                                                                                                                                                                                                      + +

                                                                                                                                                                                                      HAL_UART_Init (Thumb, 118 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Init))

                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                      • Max Depth = 88
                                                                                                                                                                                                      • Call Chain = HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                                                                                      -
                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                      • >>   HAL_UART_MspInit -
                                                                                                                                                                                                      • >>   UART_SetConfig +
                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                        • >>   HAL_UART_MspInit +
                                                                                                                                                                                                        • >>   UART_SetConfig
                                                                                                                                                                                                        -
                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                        • >>   MX_USART3_UART_Init -
                                                                                                                                                                                                        • >>   MX_USART2_UART_Init -
                                                                                                                                                                                                        • >>   MX_USART1_UART_Init +
                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                          • >>   MX_USART3_UART_Init +
                                                                                                                                                                                                          • >>   MX_USART2_UART_Init +
                                                                                                                                                                                                          • >>   MX_USART1_UART_Init
                                                                                                                                                                                                          -

                                                                                                                                                                                                          HAL_UART_MspInit (Thumb, 376 bytes, Stack size 32 bytes, usart.o(i.HAL_UART_MspInit)) +

                                                                                                                                                                                                          HAL_UART_MspInit (Thumb, 376 bytes, Stack size 32 bytes, usart.o(i.HAL_UART_MspInit))

                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                          • Max Depth = 80
                                                                                                                                                                                                          • Call Chain = HAL_UART_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                                                                                          -
                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                          • >>   HAL_NVIC_SetPriority -
                                                                                                                                                                                                          • >>   HAL_NVIC_EnableIRQ -
                                                                                                                                                                                                          • >>   HAL_GPIO_Init +
                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                            • >>   HAL_NVIC_SetPriority +
                                                                                                                                                                                                            • >>   HAL_NVIC_EnableIRQ +
                                                                                                                                                                                                            • >>   HAL_GPIO_Init
                                                                                                                                                                                                            -
                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                            • >>   HAL_UART_Init +
                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                              • >>   HAL_UART_Init
                                                                                                                                                                                                              -

                                                                                                                                                                                                              HAL_UART_Receive_IT (Thumb, 44 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT)) +

                                                                                                                                                                                                              HAL_UART_Receive_IT (Thumb, 44 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT))

                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                              • Max Depth = 24
                                                                                                                                                                                                              • Call Chain = HAL_UART_Receive_IT ⇒ UART_Start_Receive_IT
                                                                                                                                                                                                              -
                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                              • >>   UART_Start_Receive_IT +
                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                • >>   UART_Start_Receive_IT
                                                                                                                                                                                                                -
                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                • >>   rf433_hal_uart_rxcplt_callback -
                                                                                                                                                                                                                • >>   main -
                                                                                                                                                                                                                • >>   HAL_UART_RxCpltCallback +
                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                  • >>   main +
                                                                                                                                                                                                                  • >>   HAL_UART_RxCpltCallback +
                                                                                                                                                                                                                  • >>   HAL_UART_ErrorCallback
                                                                                                                                                                                                                  -

                                                                                                                                                                                                                  HAL_UART_RxCpltCallback (Thumb, 96 bytes, Stack size 16 bytes, main.o(i.HAL_UART_RxCpltCallback)) -

                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                  • Max Depth = 224
                                                                                                                                                                                                                  • Call Chain = HAL_UART_RxCpltCallback ⇒ MultiUART_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                                                    HAL_UART_RxCpltCallback (Thumb, 134 bytes, Stack size 8 bytes, main.o(i.HAL_UART_RxCpltCallback)) +

                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                    • Max Depth = 32
                                                                                                                                                                                                                    • Call Chain = HAL_UART_RxCpltCallback ⇒ HAL_UART_Receive_IT ⇒ UART_Start_Receive_IT
                                                                                                                                                                                                                    -
                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                    • >>   rf433_hal_uart_rxcplt_callback -
                                                                                                                                                                                                                    • >>   MultiUART_FeedByte -
                                                                                                                                                                                                                    • >>   HAL_UART_Receive_IT -
                                                                                                                                                                                                                    • >>   CmdParser_FeedByte -
                                                                                                                                                                                                                    • >>   HAL_GetTick +
                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                      • >>   HAL_UART_Receive_IT +
                                                                                                                                                                                                                      • >>   HAL_GetTick
                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                      • >>   UART_Receive_IT +
                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                        • >>   UART_Receive_IT
                                                                                                                                                                                                                        -

                                                                                                                                                                                                                        HAL_UART_Transmit (Thumb, 178 bytes, Stack size 40 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Transmit)) +

                                                                                                                                                                                                                        HAL_UART_Transmit (Thumb, 178 bytes, Stack size 40 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Transmit))

                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                        • Max Depth = 64
                                                                                                                                                                                                                        • Call Chain = HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                        -
                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                        • >>   HAL_GetTick -
                                                                                                                                                                                                                        • >>   UART_WaitOnFlagUntilTimeout +
                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                          • >>   HAL_GetTick +
                                                                                                                                                                                                                          • >>   UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                          • >>   rf433_hal_uart_tx +
                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   rf433_hal_uart_tx
                                                                                                                                                                                                                            -

                                                                                                                                                                                                                            HAL_UART_Transmit_IT (Thumb, 56 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT)) +

                                                                                                                                                                                                                            HAL_UART_Transmit_IT (Thumb, 56 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT))

                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                            • Max Depth = 8
                                                                                                                                                                                                                            • Call Chain = HAL_UART_Transmit_IT
                                                                                                                                                                                                                            -
                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   UART2_Print_TxCpltCallback -
                                                                                                                                                                                                                            • >>   UART2_Print_Task -
                                                                                                                                                                                                                            • >>   MultiUART_TxCpltCallback -
                                                                                                                                                                                                                            • >>   tx_kickoff -
                                                                                                                                                                                                                            • >>   UART2_Print_Send +
                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                              • >>   UART2_Print_TxCpltCallback +
                                                                                                                                                                                                                              • >>   UART2_Print_Task +
                                                                                                                                                                                                                              • >>   MultiUART_TxCpltCallback +
                                                                                                                                                                                                                              • >>   tx_kickoff +
                                                                                                                                                                                                                              • >>   UART2_Print_Send
                                                                                                                                                                                                                              -

                                                                                                                                                                                                                              HAL_UART_TxCpltCallback (Thumb, 50 bytes, Stack size 8 bytes, main.o(i.HAL_UART_TxCpltCallback)) +

                                                                                                                                                                                                                              HAL_UART_TxCpltCallback (Thumb, 50 bytes, Stack size 8 bytes, main.o(i.HAL_UART_TxCpltCallback))

                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                              • Max Depth = 56
                                                                                                                                                                                                                              • Call Chain = HAL_UART_TxCpltCallback ⇒ MultiUART_TxCpltCallback ⇒ UART2_Print_TxCpltCallback ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                              -
                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                              • >>   UART2_Print_TxCpltCallback -
                                                                                                                                                                                                                              • >>   MultiUART_TxCpltCallback +
                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                • >>   UART2_Print_TxCpltCallback +
                                                                                                                                                                                                                                • >>   MultiUART_TxCpltCallback
                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                • >>   UART_EndTransmit_IT +
                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                  • >>   UART_EndTransmit_IT
                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                  HardFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.HardFault_Handler)) +

                                                                                                                                                                                                                                  HardFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.HardFault_Handler))
                                                                                                                                                                                                                                  [Address Reference Count : 1]

                                                                                                                                                                                                                                  • startup_stm32f103xb.o(RESET)
                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                  IO_Monitor_GetAllStates (Thumb, 34 bytes, Stack size 0 bytes, io_monitor.o(i.IO_Monitor_GetAllStates)) -

                                                                                                                                                                                                                                  [Called By]

                                                                                                                                                                                                                                  • >>   IO_Monitor_Init -
                                                                                                                                                                                                                                  • >>   process_cmd_frame +

                                                                                                                                                                                                                                    IO_Monitor_GetAllStates (Thumb, 34 bytes, Stack size 0 bytes, io_monitor.o(i.IO_Monitor_GetAllStates)) +

                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                    • >>   IO_Monitor_Init
                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                    IO_Monitor_GetState (Thumb, 20 bytes, Stack size 0 bytes, io_monitor.o(i.IO_Monitor_GetState)) -

                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                    • >>   process_cmd_frame -
                                                                                                                                                                                                                                    - -

                                                                                                                                                                                                                                    IO_Monitor_Init (Thumb, 76 bytes, Stack size 16 bytes, io_monitor.o(i.IO_Monitor_Init)) +

                                                                                                                                                                                                                                    IO_Monitor_Init (Thumb, 76 bytes, Stack size 16 bytes, io_monitor.o(i.IO_Monitor_Init))

                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                    • Max Depth = 208
                                                                                                                                                                                                                                    • Call Chain = IO_Monitor_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                    • >>   HAL_GPIO_ReadPin -
                                                                                                                                                                                                                                    • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                    • >>   IO_Monitor_GetAllStates +
                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                      • >>   UART2_Print_Printf +
                                                                                                                                                                                                                                      • >>   HAL_GPIO_ReadPin +
                                                                                                                                                                                                                                      • >>   IO_Monitor_GetAllStates
                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                      • >>   main +
                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                        • >>   main
                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                        IO_Monitor_Task (Thumb, 122 bytes, Stack size 24 bytes, io_monitor.o(i.IO_Monitor_Task)) -

                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                        • Max Depth = 272
                                                                                                                                                                                                                                        • Call Chain = IO_Monitor_Task ⇒ send_di_event ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                                                                          IO_Monitor_Task (Thumb, 122 bytes, Stack size 24 bytes, io_monitor.o(i.IO_Monitor_Task)) +

                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                          • Max Depth = 280
                                                                                                                                                                                                                                          • Call Chain = IO_Monitor_Task ⇒ send_di_event ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                          • >>   HAL_GetTick -
                                                                                                                                                                                                                                          • >>   HAL_GPIO_ReadPin -
                                                                                                                                                                                                                                          • >>   send_di_event +
                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                            • >>   HAL_GetTick +
                                                                                                                                                                                                                                            • >>   HAL_GPIO_ReadPin +
                                                                                                                                                                                                                                            • >>   send_di_event
                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                            • >>   main +
                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                              • >>   main
                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                              MX_GPIO_Init (Thumb, 258 bytes, Stack size 24 bytes, gpio.o(i.MX_GPIO_Init)) +

                                                                                                                                                                                                                                              MX_GPIO_Init (Thumb, 258 bytes, Stack size 24 bytes, gpio.o(i.MX_GPIO_Init))

                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                              • Max Depth = 60
                                                                                                                                                                                                                                              • Call Chain = MX_GPIO_Init ⇒ HAL_GPIO_Init
                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                              • >>   HAL_GPIO_WritePin -
                                                                                                                                                                                                                                              • >>   HAL_GPIO_Init +
                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                • >>   HAL_GPIO_Init
                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                • >>   main +
                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                  • >>   main
                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                  MX_SPI2_Init (Thumb, 58 bytes, Stack size 8 bytes, spi.o(i.MX_SPI2_Init)) +

                                                                                                                                                                                                                                                  MX_SPI2_Init (Thumb, 58 bytes, Stack size 8 bytes, spi.o(i.MX_SPI2_Init))

                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                  • Max Depth = 84
                                                                                                                                                                                                                                                  • Call Chain = MX_SPI2_Init ⇒ HAL_SPI_Init ⇒ HAL_SPI_MspInit ⇒ HAL_GPIO_Init
                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                  • >>   HAL_SPI_Init -
                                                                                                                                                                                                                                                  • >>   Error_Handler +
                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                    • >>   HAL_SPI_Init +
                                                                                                                                                                                                                                                    • >>   Error_Handler
                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                    • >>   main +
                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                      • >>   main
                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                      MX_USART1_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART1_UART_Init)) +

                                                                                                                                                                                                                                                      MX_TIM2_Init (Thumb, 102 bytes, Stack size 32 bytes, tim.o(i.MX_TIM2_Init)) +

                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                      • Max Depth = 104
                                                                                                                                                                                                                                                      • Call Chain = MX_TIM2_Init ⇒ HAL_TIM_Base_Init ⇒ HAL_TIM_Base_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority +
                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                      • >>   Error_Handler +
                                                                                                                                                                                                                                                      • >>   HAL_TIM_ConfigClockSource +
                                                                                                                                                                                                                                                      • >>   HAL_TIM_Base_Init +
                                                                                                                                                                                                                                                      • >>   HAL_TIMEx_MasterConfigSynchronization +
                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                      • >>   main +
                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                      MX_USART1_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART1_UART_Init))

                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                      • Max Depth = 96
                                                                                                                                                                                                                                                      • Call Chain = MX_USART1_UART_Init ⇒ HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                      • >>   HAL_UART_Init -
                                                                                                                                                                                                                                                      • >>   Error_Handler +
                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                        • >>   HAL_UART_Init +
                                                                                                                                                                                                                                                        • >>   Error_Handler
                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                        • >>   main +
                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                          • >>   main
                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                          MX_USART2_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART2_UART_Init)) +

                                                                                                                                                                                                                                                          MX_USART2_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART2_UART_Init))

                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                          • Max Depth = 96
                                                                                                                                                                                                                                                          • Call Chain = MX_USART2_UART_Init ⇒ HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                          • >>   HAL_UART_Init -
                                                                                                                                                                                                                                                          • >>   Error_Handler +
                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                            • >>   HAL_UART_Init +
                                                                                                                                                                                                                                                            • >>   Error_Handler
                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                            • >>   main +
                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                              • >>   main
                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                              MX_USART3_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART3_UART_Init)) +

                                                                                                                                                                                                                                                              MX_USART3_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART3_UART_Init))

                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                              • Max Depth = 96
                                                                                                                                                                                                                                                              • Call Chain = MX_USART3_UART_Init ⇒ HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                              • >>   HAL_UART_Init -
                                                                                                                                                                                                                                                              • >>   Error_Handler +
                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                • >>   HAL_UART_Init +
                                                                                                                                                                                                                                                                • >>   Error_Handler
                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                • >>   main +
                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                  • >>   main
                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                  MemManage_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.MemManage_Handler)) +

                                                                                                                                                                                                                                                                  MemManage_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.MemManage_Handler))
                                                                                                                                                                                                                                                                  [Address Reference Count : 1]

                                                                                                                                                                                                                                                                  • startup_stm32f103xb.o(RESET)
                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                  MultiUART_FeedByte (Thumb, 74 bytes, Stack size 16 bytes, multi_uart_router.o(i.MultiUART_FeedByte)) -

                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                  • Max Depth = 208
                                                                                                                                                                                                                                                                  • Call Chain = MultiUART_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT -
                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                  • >>   rx_ring_push -
                                                                                                                                                                                                                                                                  • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                  • >>   HAL_UART_RxCpltCallback +

                                                                                                                                                                                                                                                                    MultiUART_GetPortName (Thumb, 18 bytes, Stack size 0 bytes, multi_uart_router.o(i.MultiUART_GetPortName)) +

                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                    • >>   cmd_parser_response_callback
                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                    MultiUART_GetPortName (Thumb, 18 bytes, Stack size 0 bytes, multi_uart_router.o(i.MultiUART_GetPortName)) -

                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                    • >>   flush_rx_log -
                                                                                                                                                                                                                                                                    • >>   cmd_parser_response_callback +

                                                                                                                                                                                                                                                                      MultiUART_Init (Thumb, 78 bytes, Stack size 16 bytes, multi_uart_router.o(i.MultiUART_Init)) +

                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                      • Max Depth = 16
                                                                                                                                                                                                                                                                      • Call Chain = MultiUART_Init +
                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                      • >>   tx_ring_init +
                                                                                                                                                                                                                                                                      • >>   rx_ring_init +
                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                      • >>   main
                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                      MultiUART_GetRxCount (Thumb, 32 bytes, Stack size 0 bytes, multi_uart_router.o(i.MultiUART_GetRxCount)) -

                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                      • >>   CmdRouter_Task -
                                                                                                                                                                                                                                                                      - -

                                                                                                                                                                                                                                                                      MultiUART_GetTxAvailable (Thumb, 38 bytes, Stack size 0 bytes, multi_uart_router.o(i.MultiUART_GetTxAvailable)) -

                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                      • >>   Passthrough_CanSend -
                                                                                                                                                                                                                                                                      - -

                                                                                                                                                                                                                                                                      MultiUART_Init (Thumb, 86 bytes, Stack size 16 bytes, multi_uart_router.o(i.MultiUART_Init)) -

                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                      • Max Depth = 208
                                                                                                                                                                                                                                                                      • Call Chain = MultiUART_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT -
                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                      • >>   tx_ring_init -
                                                                                                                                                                                                                                                                      • >>   rx_ring_init -
                                                                                                                                                                                                                                                                      • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                      • >>   main -
                                                                                                                                                                                                                                                                      - -

                                                                                                                                                                                                                                                                      MultiUART_ReadByte (Thumb, 86 bytes, Stack size 8 bytes, multi_uart_router.o(i.MultiUART_ReadByte)) -

                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                      • Max Depth = 8
                                                                                                                                                                                                                                                                      • Call Chain = MultiUART_ReadByte -
                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                      • >>   CmdRouter_Task -
                                                                                                                                                                                                                                                                      - -

                                                                                                                                                                                                                                                                      MultiUART_Send (Thumb, 96 bytes, Stack size 24 bytes, multi_uart_router.o(i.MultiUART_Send)) +

                                                                                                                                                                                                                                                                      MultiUART_Send (Thumb, 96 bytes, Stack size 24 bytes, multi_uart_router.o(i.MultiUART_Send))

                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                      • Max Depth = 56
                                                                                                                                                                                                                                                                      • Call Chain = MultiUART_Send ⇒ tx_kickoff ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                      • >>   tx_ring_push -
                                                                                                                                                                                                                                                                      • >>   tx_kickoff -
                                                                                                                                                                                                                                                                      • >>   UART2_Print_Send +
                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                        • >>   tx_ring_push +
                                                                                                                                                                                                                                                                        • >>   tx_kickoff +
                                                                                                                                                                                                                                                                        • >>   UART2_Print_Send
                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                        • >>   Passthrough_Task -
                                                                                                                                                                                                                                                                        • >>   MultiUART_SendString +
                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                          • >>   loopback_udps +
                                                                                                                                                                                                                                                                          • >>   main +
                                                                                                                                                                                                                                                                          • >>   DebugLog_Output +
                                                                                                                                                                                                                                                                          • >>   fputc +
                                                                                                                                                                                                                                                                          • >>   MultiUART_SendString
                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                          MultiUART_SendString (Thumb, 32 bytes, Stack size 16 bytes, multi_uart_router.o(i.MultiUART_SendString)) +

                                                                                                                                                                                                                                                                          MultiUART_SendString (Thumb, 32 bytes, Stack size 16 bytes, multi_uart_router.o(i.MultiUART_SendString))

                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                          • Max Depth = 72
                                                                                                                                                                                                                                                                          • Call Chain = MultiUART_SendString ⇒ MultiUART_Send ⇒ tx_kickoff ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                          • >>   MultiUART_Send -
                                                                                                                                                                                                                                                                          • >>   strlen +
                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                            • >>   MultiUART_Send +
                                                                                                                                                                                                                                                                            • >>   strlen
                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                            • >>   cmd_parser_response_callback -
                                                                                                                                                                                                                                                                            • >>   send_di_event +
                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                              • >>   cmd_parser_response_callback +
                                                                                                                                                                                                                                                                              • >>   send_di_event
                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                              MultiUART_Task (Thumb, 48 bytes, Stack size 16 bytes, multi_uart_router.o(i.MultiUART_Task)) +

                                                                                                                                                                                                                                                                              MultiUART_Task (Thumb, 48 bytes, Stack size 16 bytes, multi_uart_router.o(i.MultiUART_Task))

                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                              • Max Depth = 48
                                                                                                                                                                                                                                                                              • Call Chain = MultiUART_Task ⇒ tx_kickoff ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                              • >>   tx_kickoff +
                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                • >>   tx_kickoff
                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                • >>   main +
                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                  • >>   main
                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                  MultiUART_TxCpltCallback (Thumb, 116 bytes, Stack size 24 bytes, multi_uart_router.o(i.MultiUART_TxCpltCallback)) +

                                                                                                                                                                                                                                                                                  MultiUART_TxCpltCallback (Thumb, 116 bytes, Stack size 24 bytes, multi_uart_router.o(i.MultiUART_TxCpltCallback))

                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                  • Max Depth = 48
                                                                                                                                                                                                                                                                                  • Call Chain = MultiUART_TxCpltCallback ⇒ UART2_Print_TxCpltCallback ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                  • >>   UART2_Print_TxCpltCallback -
                                                                                                                                                                                                                                                                                  • >>   HAL_UART_Transmit_IT +
                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                    • >>   UART2_Print_TxCpltCallback +
                                                                                                                                                                                                                                                                                    • >>   HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                    • >>   HAL_UART_TxCpltCallback +
                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                      • >>   HAL_UART_TxCpltCallback
                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                      NMI_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.NMI_Handler)) +

                                                                                                                                                                                                                                                                                      NMI_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.NMI_Handler))
                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]

                                                                                                                                                                                                                                                                                      • startup_stm32f103xb.o(RESET)
                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                      Passthrough_CanSend (Thumb, 30 bytes, Stack size 8 bytes, uart3_passthrough.o(i.Passthrough_CanSend)) -

                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                      • Max Depth = 8
                                                                                                                                                                                                                                                                                      • Call Chain = Passthrough_CanSend -
                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                      • >>   MultiUART_GetTxAvailable -
                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                      • >>   Passthrough_Task +

                                                                                                                                                                                                                                                                                        NibbleToHex (Thumb, 26 bytes, Stack size 0 bytes, dhcp.o(i.NibbleToHex)) +

                                                                                                                                                                                                                                                                                        [Called By]

                                                                                                                                                                                                                                                                                        • >>   send_DHCP_REQUEST +
                                                                                                                                                                                                                                                                                        • >>   send_DHCP_DISCOVER
                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                        Passthrough_Init (Thumb, 130 bytes, Stack size 8 bytes, uart3_passthrough.o(i.Passthrough_Init)) -

                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                        • Max Depth = 200
                                                                                                                                                                                                                                                                                        • Call Chain = Passthrough_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT -
                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                        • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                                                                        • >>   __aeabi_memclr4 -
                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                        • >>   CmdRouter_Init -
                                                                                                                                                                                                                                                                                        - -

                                                                                                                                                                                                                                                                                        Passthrough_PushBuffer (Thumb, 244 bytes, Stack size 32 bytes, uart3_passthrough.o(i.Passthrough_PushBuffer)) -

                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                        • Max Depth = 224
                                                                                                                                                                                                                                                                                        • Call Chain = Passthrough_PushBuffer ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT -
                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                        • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                        • >>   CmdRouter_Task -
                                                                                                                                                                                                                                                                                        - -

                                                                                                                                                                                                                                                                                        Passthrough_PushByte (Thumb, 182 bytes, Stack size 24 bytes, uart3_passthrough.o(i.Passthrough_PushByte)) -

                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                        • Max Depth = 216
                                                                                                                                                                                                                                                                                        • Call Chain = Passthrough_PushByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT -
                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                        • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                        • >>   CmdRouter_Task -
                                                                                                                                                                                                                                                                                        - -

                                                                                                                                                                                                                                                                                        Passthrough_Task (Thumb, 176 bytes, Stack size 16 bytes, uart3_passthrough.o(i.Passthrough_Task)) -

                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                        • Max Depth = 208
                                                                                                                                                                                                                                                                                        • Call Chain = Passthrough_Task ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT -
                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                        • >>   Passthrough_CanSend -
                                                                                                                                                                                                                                                                                        • >>   MultiUART_Send -
                                                                                                                                                                                                                                                                                        • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                        • >>   CmdRouter_Task -
                                                                                                                                                                                                                                                                                        - -

                                                                                                                                                                                                                                                                                        PendSV_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.PendSV_Handler)) +

                                                                                                                                                                                                                                                                                        PendSV_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.PendSV_Handler))
                                                                                                                                                                                                                                                                                        [Address Reference Count : 1]

                                                                                                                                                                                                                                                                                        • startup_stm32f103xb.o(RESET)
                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                        Relay_Init (Thumb, 32 bytes, Stack size 8 bytes, relay_control.o(i.Relay_Init)) +

                                                                                                                                                                                                                                                                                        Relay_Init (Thumb, 32 bytes, Stack size 8 bytes, relay_control.o(i.Relay_Init))

                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                        • Max Depth = 200
                                                                                                                                                                                                                                                                                        • Call Chain = Relay_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                        • >>   HAL_GPIO_WritePin -
                                                                                                                                                                                                                                                                                        • >>   UART2_Print_Printf +
                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                          • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                          • >>   UART2_Print_Printf
                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                          • >>   main +
                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                            • >>   main
                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                            Relay_SetState (Thumb, 94 bytes, Stack size 16 bytes, relay_control.o(i.Relay_SetState)) -

                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                            • Max Depth = 208
                                                                                                                                                                                                                                                                                            • Call Chain = Relay_SetState ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT -
                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                            • >>   HAL_GPIO_WritePin -
                                                                                                                                                                                                                                                                                            • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                                            • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                            • >>   process_cmd_frame -
                                                                                                                                                                                                                                                                                            - -

                                                                                                                                                                                                                                                                                            SVC_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.SVC_Handler)) +

                                                                                                                                                                                                                                                                                            SVC_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.SVC_Handler))
                                                                                                                                                                                                                                                                                            [Address Reference Count : 1]

                                                                                                                                                                                                                                                                                            • startup_stm32f103xb.o(RESET)
                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                            SysTick_Handler (Thumb, 12 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.SysTick_Handler)) +

                                                                                                                                                                                                                                                                                            SysTick_Handler (Thumb, 12 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.SysTick_Handler))

                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                            • Max Depth = 20
                                                                                                                                                                                                                                                                                            • Call Chain = SysTick_Handler ⇒ systick_interrupt_1ms_callback ⇒ uart1_rx_timeout_1ms_callback
                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                            • >>   HAL_IncTick -
                                                                                                                                                                                                                                                                                            • >>   systick_interrupt_1ms_callback +
                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                              • >>   systick_interrupt_1ms_callback +
                                                                                                                                                                                                                                                                                              • >>   HAL_IncTick

                                                                                                                                                                                                                                                                                              [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                              • startup_stm32f103xb.o(RESET)
                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                              SystemClock_Config (Thumb, 102 bytes, Stack size 64 bytes, main.o(i.SystemClock_Config)) +

                                                                                                                                                                                                                                                                                              SystemClock_Config (Thumb, 102 bytes, Stack size 64 bytes, main.o(i.SystemClock_Config))

                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                              • Max Depth = 144
                                                                                                                                                                                                                                                                                              • Call Chain = SystemClock_Config ⇒ HAL_RCC_ClockConfig ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                              • >>   HAL_RCC_OscConfig -
                                                                                                                                                                                                                                                                                              • >>   HAL_RCC_ClockConfig -
                                                                                                                                                                                                                                                                                              • >>   Error_Handler -
                                                                                                                                                                                                                                                                                              • >>   __aeabi_memclr4 +
                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                • >>   HAL_RCC_OscConfig +
                                                                                                                                                                                                                                                                                                • >>   HAL_RCC_ClockConfig +
                                                                                                                                                                                                                                                                                                • >>   Error_Handler +
                                                                                                                                                                                                                                                                                                • >>   __aeabi_memclr4
                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                • >>   main +
                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                  • >>   main
                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                  SystemInit (Thumb, 2 bytes, Stack size 0 bytes, system_stm32f1xx.o(i.SystemInit)) +

                                                                                                                                                                                                                                                                                                  SystemInit (Thumb, 2 bytes, Stack size 0 bytes, system_stm32f1xx.o(i.SystemInit))
                                                                                                                                                                                                                                                                                                  [Address Reference Count : 1]

                                                                                                                                                                                                                                                                                                  • startup_stm32f103xb.o(.text)
                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                  UART2_Print_Init (Thumb, 38 bytes, Stack size 8 bytes, uart2_print.o(i.UART2_Print_Init)) +

                                                                                                                                                                                                                                                                                                  TIM2_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.TIM2_IRQHandler)) +

                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                  • Max Depth = 32
                                                                                                                                                                                                                                                                                                  • Call Chain = TIM2_IRQHandler ⇒ HAL_TIM_IRQHandler ⇒ HAL_TIM_PeriodElapsedCallback ⇒ wiz_timer_handler +
                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                  • >>   HAL_TIM_IRQHandler +
                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                  [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                  • startup_stm32f103xb.o(RESET) +
                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                  TIM_Base_SetConfig (Thumb, 104 bytes, Stack size 8 bytes, stm32f1xx_hal_tim.o(i.TIM_Base_SetConfig)) +

                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                  • Max Depth = 8
                                                                                                                                                                                                                                                                                                  • Call Chain = TIM_Base_SetConfig +
                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                  • >>   HAL_TIM_Base_Init +
                                                                                                                                                                                                                                                                                                  + +

                                                                                                                                                                                                                                                                                                  TIM_ETR_SetConfig (Thumb, 22 bytes, Stack size 12 bytes, stm32f1xx_hal_tim.o(i.TIM_ETR_SetConfig)) +

                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                  • Max Depth = 12
                                                                                                                                                                                                                                                                                                  • Call Chain = TIM_ETR_SetConfig +
                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                  • >>   HAL_TIM_ConfigClockSource +
                                                                                                                                                                                                                                                                                                  + +

                                                                                                                                                                                                                                                                                                  UART2_Print_Init (Thumb, 38 bytes, Stack size 8 bytes, uart2_print.o(i.UART2_Print_Init))

                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                  • Max Depth = 200
                                                                                                                                                                                                                                                                                                  • Call Chain = UART2_Print_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                  • >>   UART2_Print_Printf +
                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                    • >>   UART2_Print_Printf
                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                    • >>   main +
                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                      • >>   main
                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                      UART2_Print_Printf (Thumb, 62 bytes, Stack size 160 bytes, uart2_print.o(i.UART2_Print_Printf)) +

                                                                                                                                                                                                                                                                                                      UART2_Print_Printf (Thumb, 62 bytes, Stack size 160 bytes, uart2_print.o(i.UART2_Print_Printf))

                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                      • Max Depth = 192
                                                                                                                                                                                                                                                                                                      • Call Chain = UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                      • >>   UART2_Print_Send -
                                                                                                                                                                                                                                                                                                      • >>   vsnprintf +
                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                        • >>   UART2_Print_Send +
                                                                                                                                                                                                                                                                                                        • >>   vsnprintf
                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                        • >>   UART2_Print_Init -
                                                                                                                                                                                                                                                                                                        • >>   Relay_Init -
                                                                                                                                                                                                                                                                                                        • >>   MultiUART_Init -
                                                                                                                                                                                                                                                                                                        • >>   MultiUART_FeedByte -
                                                                                                                                                                                                                                                                                                        • >>   IO_Monitor_Init -
                                                                                                                                                                                                                                                                                                        • >>   CmdRouter_Init -
                                                                                                                                                                                                                                                                                                        • >>   CmdParser_Init -
                                                                                                                                                                                                                                                                                                        • >>   CmdParser_FeedByte -
                                                                                                                                                                                                                                                                                                        • >>   UART3_Protocol_Init -
                                                                                                                                                                                                                                                                                                        • >>   UART3_Protocol_GetPassthroughData -
                                                                                                                                                                                                                                                                                                        • >>   UART3_Protocol_FeedByte -
                                                                                                                                                                                                                                                                                                        • >>   UART3_Protocol_CheckTimeout -
                                                                                                                                                                                                                                                                                                        • >>   Passthrough_Task -
                                                                                                                                                                                                                                                                                                        • >>   Passthrough_PushByte -
                                                                                                                                                                                                                                                                                                        • >>   Passthrough_PushBuffer -
                                                                                                                                                                                                                                                                                                        • >>   Passthrough_Init -
                                                                                                                                                                                                                                                                                                        • >>   flush_rx_log -
                                                                                                                                                                                                                                                                                                        • >>   send_di_event -
                                                                                                                                                                                                                                                                                                        • >>   Relay_SetState -
                                                                                                                                                                                                                                                                                                        • >>   process_cmd_frame +
                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                          • >>   UART2_Print_Init +
                                                                                                                                                                                                                                                                                                          • >>   Relay_Init +
                                                                                                                                                                                                                                                                                                          • >>   IO_Monitor_Init +
                                                                                                                                                                                                                                                                                                          • >>   send_di_event
                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                          UART2_Print_Send (Thumb, 170 bytes, Stack size 24 bytes, uart2_print.o(i.UART2_Print_Send)) +

                                                                                                                                                                                                                                                                                                          UART2_Print_Send (Thumb, 172 bytes, Stack size 24 bytes, uart2_print.o(i.UART2_Print_Send))

                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                          • Max Depth = 32
                                                                                                                                                                                                                                                                                                          • Call Chain = UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                          • >>   HAL_UART_Transmit_IT +
                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                            • >>   HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                            • >>   MultiUART_Send -
                                                                                                                                                                                                                                                                                                            • >>   DebugLog_Output -
                                                                                                                                                                                                                                                                                                            • >>   flush_rx_log -
                                                                                                                                                                                                                                                                                                            • >>   fputc -
                                                                                                                                                                                                                                                                                                            • >>   UART2_Print_String -
                                                                                                                                                                                                                                                                                                            • >>   UART2_Print_Printf +
                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                              • >>   MultiUART_Send +
                                                                                                                                                                                                                                                                                                              • >>   DebugLog_Output +
                                                                                                                                                                                                                                                                                                              • >>   fputc +
                                                                                                                                                                                                                                                                                                              • >>   UART2_Print_Printf +
                                                                                                                                                                                                                                                                                                              • >>   UART2_Print_String
                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                              UART2_Print_String (Thumb, 28 bytes, Stack size 16 bytes, uart2_print.o(i.UART2_Print_String)) +

                                                                                                                                                                                                                                                                                                              UART2_Print_String (Thumb, 28 bytes, Stack size 16 bytes, uart2_print.o(i.UART2_Print_String))

                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                              • Max Depth = 48
                                                                                                                                                                                                                                                                                                              • Call Chain = UART2_Print_String ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                              • >>   UART2_Print_Send -
                                                                                                                                                                                                                                                                                                              • >>   strlen +
                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                • >>   UART2_Print_Send +
                                                                                                                                                                                                                                                                                                                • >>   strlen
                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                • >>   DebugLog_Init -
                                                                                                                                                                                                                                                                                                                • >>   flush_rx_log -
                                                                                                                                                                                                                                                                                                                • >>   send_response_ok -
                                                                                                                                                                                                                                                                                                                • >>   send_response_err +
                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                  • >>   DebugLog_Init
                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                  UART2_Print_Task (Thumb, 98 bytes, Stack size 16 bytes, uart2_print.o(i.UART2_Print_Task)) +

                                                                                                                                                                                                                                                                                                                  UART2_Print_Task (Thumb, 98 bytes, Stack size 16 bytes, uart2_print.o(i.UART2_Print_Task))

                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                  • Max Depth = 24
                                                                                                                                                                                                                                                                                                                  • Call Chain = UART2_Print_Task ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                  • >>   HAL_UART_Transmit_IT +
                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                    • >>   HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                    • >>   main +
                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                      • >>   main
                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                      UART2_Print_TxCpltCallback (Thumb, 98 bytes, Stack size 16 bytes, uart2_print.o(i.UART2_Print_TxCpltCallback)) +

                                                                                                                                                                                                                                                                                                                      UART2_Print_TxCpltCallback (Thumb, 98 bytes, Stack size 16 bytes, uart2_print.o(i.UART2_Print_TxCpltCallback))

                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                      • Max Depth = 24
                                                                                                                                                                                                                                                                                                                      • Call Chain = UART2_Print_TxCpltCallback ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                      • >>   HAL_UART_Transmit_IT +
                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                        • >>   HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                        • >>   MultiUART_TxCpltCallback -
                                                                                                                                                                                                                                                                                                                        • >>   HAL_UART_TxCpltCallback +
                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                          • >>   MultiUART_TxCpltCallback +
                                                                                                                                                                                                                                                                                                                          • >>   HAL_UART_TxCpltCallback
                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                          UART3_Protocol_CheckTimeout (Thumb, 82 bytes, Stack size 16 bytes, uart3_protocol_discriminator.o(i.UART3_Protocol_CheckTimeout)) -

                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                          • Max Depth = 208
                                                                                                                                                                                                                                                                                                                          • Call Chain = UART3_Protocol_CheckTimeout ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT -
                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                          • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                          • >>   CmdRouter_Task -
                                                                                                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                                                                                                          UART3_Protocol_FeedByte (Thumb, 294 bytes, Stack size 16 bytes, uart3_protocol_discriminator.o(i.UART3_Protocol_FeedByte)) -

                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                          • Max Depth = 208
                                                                                                                                                                                                                                                                                                                          • Call Chain = UART3_Protocol_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT -
                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                          • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                          • >>   CmdRouter_Task -
                                                                                                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                                                                                                          UART3_Protocol_GetPassthroughData (Thumb, 70 bytes, Stack size 16 bytes, uart3_protocol_discriminator.o(i.UART3_Protocol_GetPassthroughData)) -

                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                          • Max Depth = 208
                                                                                                                                                                                                                                                                                                                          • Call Chain = UART3_Protocol_GetPassthroughData ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT -
                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                          • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                                                                                                          • >>   __aeabi_memcpy -
                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                          • >>   CmdRouter_Task -
                                                                                                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                                                                                                          UART3_Protocol_Init (Thumb, 24 bytes, Stack size 8 bytes, uart3_protocol_discriminator.o(i.UART3_Protocol_Init)) -

                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                          • Max Depth = 200
                                                                                                                                                                                                                                                                                                                          • Call Chain = UART3_Protocol_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT -
                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                          • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                                                                                                          • >>   __aeabi_memclr4 -
                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                          • >>   CmdRouter_Init -
                                                                                                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                                                                                                          UART_Start_Receive_IT (Thumb, 64 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT)) +

                                                                                                                                                                                                                                                                                                                          UART_Start_Receive_IT (Thumb, 64 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT))

                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                          • Max Depth = 8
                                                                                                                                                                                                                                                                                                                          • Call Chain = UART_Start_Receive_IT
                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                          • >>   HAL_UART_Receive_IT +
                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                            • >>   HAL_UART_Receive_IT
                                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                                            USART1_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.USART1_IRQHandler)) -

                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                            • Max Depth = 296
                                                                                                                                                                                                                                                                                                                            • Call Chain = USART1_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ MultiUART_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                                                                                                                                                              USART1_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.USART1_IRQHandler)) +

                                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                                              • Max Depth = 112
                                                                                                                                                                                                                                                                                                                              • Call Chain = USART1_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_EndTransmit_IT ⇒ HAL_UART_TxCpltCallback ⇒ MultiUART_TxCpltCallback ⇒ UART2_Print_TxCpltCallback ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                              • >>   HAL_UART_IRQHandler +
                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                • >>   HAL_UART_IRQHandler

                                                                                                                                                                                                                                                                                                                                [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                • startup_stm32f103xb.o(RESET)
                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                USART2_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.USART2_IRQHandler)) -

                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                • Max Depth = 296
                                                                                                                                                                                                                                                                                                                                • Call Chain = USART2_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ MultiUART_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                                                                                                                                                                  USART2_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.USART2_IRQHandler)) +

                                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                                  • Max Depth = 112
                                                                                                                                                                                                                                                                                                                                  • Call Chain = USART2_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_EndTransmit_IT ⇒ HAL_UART_TxCpltCallback ⇒ MultiUART_TxCpltCallback ⇒ UART2_Print_TxCpltCallback ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                  • >>   HAL_UART_IRQHandler +
                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                    • >>   HAL_UART_IRQHandler

                                                                                                                                                                                                                                                                                                                                    [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                    • startup_stm32f103xb.o(RESET)
                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                    USART3_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.USART3_IRQHandler)) -

                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                    • Max Depth = 296
                                                                                                                                                                                                                                                                                                                                    • Call Chain = USART3_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ MultiUART_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                                                                                                                                                                      USART3_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.USART3_IRQHandler)) +

                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                      • Max Depth = 112
                                                                                                                                                                                                                                                                                                                                      • Call Chain = USART3_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_EndTransmit_IT ⇒ HAL_UART_TxCpltCallback ⇒ MultiUART_TxCpltCallback ⇒ UART2_Print_TxCpltCallback ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                      • >>   HAL_UART_IRQHandler +
                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                        • >>   HAL_UART_IRQHandler

                                                                                                                                                                                                                                                                                                                                        [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                        • startup_stm32f103xb.o(RESET)
                                                                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                                                                        UsageFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.UsageFault_Handler)) +

                                                                                                                                                                                                                                                                                                                                        UsageFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.UsageFault_Handler))
                                                                                                                                                                                                                                                                                                                                        [Address Reference Count : 1]

                                                                                                                                                                                                                                                                                                                                        • startup_stm32f103xb.o(RESET)
                                                                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                                                                        __0printf (Thumb, 22 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) -

                                                                                                                                                                                                                                                                                                                                        [Calls]

                                                                                                                                                                                                                                                                                                                                        • >>   _printf_core +

                                                                                                                                                                                                                                                                                                                                          WIZCHIP_READ (Thumb, 112 bytes, Stack size 16 bytes, w5500.o(i.WIZCHIP_READ)) +

                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                          • Max Depth = 16
                                                                                                                                                                                                                                                                                                                                          • Call Chain = WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                          • >>   loopback_udps +
                                                                                                                                                                                                                                                                                                                                          • >>   socket +
                                                                                                                                                                                                                                                                                                                                          • >>   sendto +
                                                                                                                                                                                                                                                                                                                                          • >>   recvfrom +
                                                                                                                                                                                                                                                                                                                                          • >>   getSn_RX_RSR +
                                                                                                                                                                                                                                                                                                                                          • >>   close +
                                                                                                                                                                                                                                                                                                                                          • >>   ctlwizchip +
                                                                                                                                                                                                                                                                                                                                          • >>   DHCP_run +
                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_version_check +
                                                                                                                                                                                                                                                                                                                                          • >>   wiz_print_phy_info +
                                                                                                                                                                                                                                                                                                                                          • >>   default_ip_update +
                                                                                                                                                                                                                                                                                                                                          • >>   default_ip_conflict +
                                                                                                                                                                                                                                                                                                                                          • >>   check_DHCP_leasedIP +
                                                                                                                                                                                                                                                                                                                                          • >>   wizphy_setphypmode +
                                                                                                                                                                                                                                                                                                                                          • >>   wizphy_reset +
                                                                                                                                                                                                                                                                                                                                          • >>   wizphy_getphypmode +
                                                                                                                                                                                                                                                                                                                                          • >>   wizphy_getphylink +
                                                                                                                                                                                                                                                                                                                                          • >>   wizphy_getphyconf +
                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_sw_reset +
                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_getinterruptmask +
                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_getinterrupt +
                                                                                                                                                                                                                                                                                                                                          • >>   wiz_send_data +
                                                                                                                                                                                                                                                                                                                                          • >>   wiz_recv_ignore +
                                                                                                                                                                                                                                                                                                                                          • >>   wiz_recv_data +
                                                                                                                                                                                                                                                                                                                                          • >>   getSn_TX_FSR
                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                          __1printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) +

                                                                                                                                                                                                                                                                                                                                          WIZCHIP_READ_BUF (Thumb, 136 bytes, Stack size 24 bytes, w5500.o(i.WIZCHIP_READ_BUF)) +

                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                          • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                          • Call Chain = WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                          • >>   socket +
                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_getnetinfo +
                                                                                                                                                                                                                                                                                                                                          • >>   DHCP_init +
                                                                                                                                                                                                                                                                                                                                          • >>   wiz_dhcp_process +
                                                                                                                                                                                                                                                                                                                                          • >>   makeDHCPMSG +
                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_sw_reset +
                                                                                                                                                                                                                                                                                                                                          • >>   wiz_recv_data +
                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                          __2printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf)) +

                                                                                                                                                                                                                                                                                                                                          WIZCHIP_WRITE (Thumb, 112 bytes, Stack size 16 bytes, w5500.o(i.WIZCHIP_WRITE)) +

                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                          • Max Depth = 16
                                                                                                                                                                                                                                                                                                                                          • Call Chain = WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                          • >>   socket +
                                                                                                                                                                                                                                                                                                                                          • >>   sendto +
                                                                                                                                                                                                                                                                                                                                          • >>   recvfrom +
                                                                                                                                                                                                                                                                                                                                          • >>   close +
                                                                                                                                                                                                                                                                                                                                          • >>   ctlwizchip +
                                                                                                                                                                                                                                                                                                                                          • >>   default_ip_update +
                                                                                                                                                                                                                                                                                                                                          • >>   default_ip_conflict +
                                                                                                                                                                                                                                                                                                                                          • >>   check_DHCP_leasedIP +
                                                                                                                                                                                                                                                                                                                                          • >>   wizphy_setphypmode +
                                                                                                                                                                                                                                                                                                                                          • >>   wizphy_setphyconf +
                                                                                                                                                                                                                                                                                                                                          • >>   wizphy_reset +
                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_sw_reset +
                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_setinterruptmask +
                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_init +
                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_clrinterrupt +
                                                                                                                                                                                                                                                                                                                                          • >>   wiz_send_data +
                                                                                                                                                                                                                                                                                                                                          • >>   wiz_recv_ignore +
                                                                                                                                                                                                                                                                                                                                          • >>   wiz_recv_data +
                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                          WIZCHIP_WRITE_BUF (Thumb, 132 bytes, Stack size 24 bytes, w5500.o(i.WIZCHIP_WRITE_BUF)) +

                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                          • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                          • Call Chain = WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                          • >>   sendto +
                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_setnetinfo +
                                                                                                                                                                                                                                                                                                                                          • >>   DHCP_init +
                                                                                                                                                                                                                                                                                                                                          • >>   default_ip_update +
                                                                                                                                                                                                                                                                                                                                          • >>   default_ip_conflict +
                                                                                                                                                                                                                                                                                                                                          • >>   default_ip_assign +
                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_sw_reset +
                                                                                                                                                                                                                                                                                                                                          • >>   wiz_send_data +
                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                          __0printf (Thumb, 22 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) +

                                                                                                                                                                                                                                                                                                                                          [Calls]

                                                                                                                                                                                                                                                                                                                                          • >>   _printf_core +
                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                          __1printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) + +

                                                                                                                                                                                                                                                                                                                                          __2printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf))

                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                          • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                          • Call Chain = __2printf
                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                          • >>   main +
                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                            • >>   wizchip_initialize +
                                                                                                                                                                                                                                                                                                                                            • >>   loopback_udps +
                                                                                                                                                                                                                                                                                                                                            • >>   main +
                                                                                                                                                                                                                                                                                                                                            • >>   wizchip_version_check +
                                                                                                                                                                                                                                                                                                                                            • >>   wiz_print_phy_info +
                                                                                                                                                                                                                                                                                                                                            • >>   wiz_phy_link_check +
                                                                                                                                                                                                                                                                                                                                            • >>   print_network_information +
                                                                                                                                                                                                                                                                                                                                            • >>   wiz_dhcp_process +
                                                                                                                                                                                                                                                                                                                                            • >>   create_wiz_timer_node
                                                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                                                            __c89printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) +

                                                                                                                                                                                                                                                                                                                                            __c89printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) -

                                                                                                                                                                                                                                                                                                                                            printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) +

                                                                                                                                                                                                                                                                                                                                            printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) -

                                                                                                                                                                                                                                                                                                                                            __0snprintf (Thumb, 48 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) -

                                                                                                                                                                                                                                                                                                                                            [Calls]

                                                                                                                                                                                                                                                                                                                                            • >>   _printf_core +

                                                                                                                                                                                                                                                                                                                                              __0snprintf (Thumb, 48 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) +

                                                                                                                                                                                                                                                                                                                                              [Calls]

                                                                                                                                                                                                                                                                                                                                              • >>   _printf_core
                                                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                                                              __1snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) +

                                                                                                                                                                                                                                                                                                                                              __1snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) -

                                                                                                                                                                                                                                                                                                                                              __2snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf)) +

                                                                                                                                                                                                                                                                                                                                              __2snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf))

                                                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                                                              • Max Depth = 40
                                                                                                                                                                                                                                                                                                                                              • Call Chain = __2snprintf
                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                              • >>   tx_build_packet -
                                                                                                                                                                                                                                                                                                                                              • >>   DebugLog_Output -
                                                                                                                                                                                                                                                                                                                                              • >>   flush_rx_log -
                                                                                                                                                                                                                                                                                                                                              • >>   send_di_event -
                                                                                                                                                                                                                                                                                                                                              • >>   send_response_ok -
                                                                                                                                                                                                                                                                                                                                              • >>   send_response_err -
                                                                                                                                                                                                                                                                                                                                              • >>   process_cmd_frame +
                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                • >>   tx_build_packet +
                                                                                                                                                                                                                                                                                                                                                • >>   DebugLog_Output +
                                                                                                                                                                                                                                                                                                                                                • >>   send_di_event
                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                __c89snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) +

                                                                                                                                                                                                                                                                                                                                                __c89snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) -

                                                                                                                                                                                                                                                                                                                                                snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) +

                                                                                                                                                                                                                                                                                                                                                snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) -

                                                                                                                                                                                                                                                                                                                                                __0vsnprintf (Thumb, 46 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) -

                                                                                                                                                                                                                                                                                                                                                [Calls]

                                                                                                                                                                                                                                                                                                                                                • >>   _printf_core +

                                                                                                                                                                                                                                                                                                                                                  __0sprintf (Thumb, 34 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf), UNUSED) +

                                                                                                                                                                                                                                                                                                                                                  [Calls]

                                                                                                                                                                                                                                                                                                                                                  • >>   _sputc +
                                                                                                                                                                                                                                                                                                                                                  • >>   _printf_core
                                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                                  __1vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) +

                                                                                                                                                                                                                                                                                                                                                  __1sprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf), UNUSED) -

                                                                                                                                                                                                                                                                                                                                                  __2vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) +

                                                                                                                                                                                                                                                                                                                                                  __2sprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf)) +

                                                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                                                  • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                                  • Call Chain = __2sprintf +
                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                  • >>   loopback_udps +
                                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                                  __c89vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) +

                                                                                                                                                                                                                                                                                                                                                  __c89sprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf), UNUSED) -

                                                                                                                                                                                                                                                                                                                                                  vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf)) +

                                                                                                                                                                                                                                                                                                                                                  sprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0sprintf), UNUSED) + +

                                                                                                                                                                                                                                                                                                                                                  __0vsnprintf (Thumb, 46 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) +

                                                                                                                                                                                                                                                                                                                                                  [Calls]

                                                                                                                                                                                                                                                                                                                                                  • >>   _printf_core +
                                                                                                                                                                                                                                                                                                                                                  + +

                                                                                                                                                                                                                                                                                                                                                  __1vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) + +

                                                                                                                                                                                                                                                                                                                                                  __2vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) + +

                                                                                                                                                                                                                                                                                                                                                  __c89vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) + +

                                                                                                                                                                                                                                                                                                                                                  vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf))

                                                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                                                  • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                                  • Call Chain = vsnprintf
                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                  • >>   DebugLog_Output -
                                                                                                                                                                                                                                                                                                                                                  • >>   UART2_Print_Printf +
                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                    • >>   DebugLog_Output +
                                                                                                                                                                                                                                                                                                                                                    • >>   UART2_Print_Printf
                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                    __aeabi_errno_addr (Thumb, 4 bytes, Stack size 0 bytes, errno.o(i.__aeabi_errno_addr)) -

                                                                                                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                                                                                                    • >>   _strtoul -
                                                                                                                                                                                                                                                                                                                                                    • >>   strtol -
                                                                                                                                                                                                                                                                                                                                                    • >>   atoi +

                                                                                                                                                                                                                                                                                                                                                      __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) + +

                                                                                                                                                                                                                                                                                                                                                      __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) + +

                                                                                                                                                                                                                                                                                                                                                      __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) + +

                                                                                                                                                                                                                                                                                                                                                      check_DHCP_leasedIP (Thumb, 88 bytes, Stack size 16 bytes, dhcp.o(i.check_DHCP_leasedIP)) +

                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 136
                                                                                                                                                                                                                                                                                                                                                      • Call Chain = check_DHCP_leasedIP ⇒ send_DHCP_DECLINE ⇒ sendto ⇒ wiz_send_data ⇒ WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                      • >>   sendto +
                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                      • >>   send_DHCP_DECLINE +
                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                      • >>   DHCP_run
                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                      __rt_errno_addr (Thumb, 0 bytes, Stack size 0 bytes, errno.o(i.__aeabi_errno_addr), UNUSED) - -

                                                                                                                                                                                                                                                                                                                                                      __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) - -

                                                                                                                                                                                                                                                                                                                                                      __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) - -

                                                                                                                                                                                                                                                                                                                                                      __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) - -

                                                                                                                                                                                                                                                                                                                                                      fputc (Thumb, 16 bytes, Stack size 16 bytes, uart2_print.o(i.fputc)) -

                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 48
                                                                                                                                                                                                                                                                                                                                                      • Call Chain = fputc ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                                                                                                                                                                                        check_DHCP_timeout (Thumb, 154 bytes, Stack size 8 bytes, dhcp.o(i.check_DHCP_timeout)) +

                                                                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                                                                        • Max Depth = 128
                                                                                                                                                                                                                                                                                                                                                        • Call Chain = check_DHCP_timeout ⇒ send_DHCP_REQUEST ⇒ sendto ⇒ wiz_send_data ⇒ WIZCHIP_WRITE_BUF
                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                        • >>   UART2_Print_Send +
                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                          • >>   send_DHCP_REQUEST +
                                                                                                                                                                                                                                                                                                                                                          • >>   send_DHCP_DISCOVER +
                                                                                                                                                                                                                                                                                                                                                          • >>   reset_DHCP_timeout +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                          • >>   DHCP_run +
                                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                                          close (Thumb, 142 bytes, Stack size 8 bytes, socket.o(i.close)) +

                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                                          • Call Chain = close ⇒ WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                          • >>   socket +
                                                                                                                                                                                                                                                                                                                                                          • >>   recvfrom +
                                                                                                                                                                                                                                                                                                                                                          • >>   DHCP_stop +
                                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                                          ctlwizchip (Thumb, 282 bytes, Stack size 32 bytes, wizchip_conf.o(i.ctlwizchip)) +

                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 104
                                                                                                                                                                                                                                                                                                                                                          • Call Chain = ctlwizchip ⇒ wizchip_init ⇒ wizchip_sw_reset ⇒ WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                          • >>   wizphy_setphypmode +
                                                                                                                                                                                                                                                                                                                                                          • >>   wizphy_setphyconf +
                                                                                                                                                                                                                                                                                                                                                          • >>   wizphy_reset +
                                                                                                                                                                                                                                                                                                                                                          • >>   wizphy_getphypmode +
                                                                                                                                                                                                                                                                                                                                                          • >>   wizphy_getphylink +
                                                                                                                                                                                                                                                                                                                                                          • >>   wizphy_getphyconf +
                                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_sw_reset +
                                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_setinterruptmask +
                                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_init +
                                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_getinterruptmask +
                                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_getinterrupt +
                                                                                                                                                                                                                                                                                                                                                          • >>   wizchip_clrinterrupt +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                          • >>   wiz_phy_link_check +
                                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                                          default_ip_assign (Thumb, 38 bytes, Stack size 8 bytes, dhcp.o(i.default_ip_assign)) +

                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                          • Call Chain = default_ip_assign ⇒ WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                          • >>   default_ip_update +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                          • dhcp.o(.data) +
                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                          default_ip_conflict (Thumb, 30 bytes, Stack size 8 bytes, dhcp.o(i.default_ip_conflict)) +

                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                          • Call Chain = default_ip_conflict ⇒ WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                          • dhcp.o(.data) +
                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                          default_ip_update (Thumb, 34 bytes, Stack size 8 bytes, dhcp.o(i.default_ip_update)) +

                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 40
                                                                                                                                                                                                                                                                                                                                                          • Call Chain = default_ip_update ⇒ default_ip_assign ⇒ WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                          • >>   default_ip_assign +
                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                          • dhcp.o(.data) +
                                                                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                                                                          fputc (Thumb, 26 bytes, Stack size 16 bytes, uart2_print.o(i.fputc)) +

                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 72
                                                                                                                                                                                                                                                                                                                                                          • Call Chain = fputc ⇒ MultiUART_Send ⇒ tx_kickoff ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                          • >>   MultiUART_Send +
                                                                                                                                                                                                                                                                                                                                                          • >>   UART2_Print_Send

                                                                                                                                                                                                                                                                                                                                                          [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                          • printfa.o(i.__0printf)
                                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                                          gpio_led_rx_off (Thumb, 14 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_rx_off)) +

                                                                                                                                                                                                                                                                                                                                                          free (Thumb, 76 bytes, Stack size 8 bytes, malloc.o(i.free)) +

                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                          • Call Chain = free +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                          • >>   wiz_delete_timer +
                                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                                          getDNSfromDHCP (Thumb, 26 bytes, Stack size 0 bytes, dhcp.o(i.getDNSfromDHCP)) +

                                                                                                                                                                                                                                                                                                                                                          [Called By]

                                                                                                                                                                                                                                                                                                                                                          • >>   wiz_dhcp_process +
                                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                                          getGWfromDHCP (Thumb, 26 bytes, Stack size 0 bytes, dhcp.o(i.getGWfromDHCP)) +

                                                                                                                                                                                                                                                                                                                                                          [Called By]

                                                                                                                                                                                                                                                                                                                                                          • >>   wiz_dhcp_process +
                                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                                          getIPfromDHCP (Thumb, 26 bytes, Stack size 0 bytes, dhcp.o(i.getIPfromDHCP)) +

                                                                                                                                                                                                                                                                                                                                                          [Called By]

                                                                                                                                                                                                                                                                                                                                                          • >>   wiz_dhcp_process +
                                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                                          getSNfromDHCP (Thumb, 26 bytes, Stack size 0 bytes, dhcp.o(i.getSNfromDHCP)) +

                                                                                                                                                                                                                                                                                                                                                          [Called By]

                                                                                                                                                                                                                                                                                                                                                          • >>   wiz_dhcp_process +
                                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                                          getSn_RX_RSR (Thumb, 108 bytes, Stack size 16 bytes, w5500.o(i.getSn_RX_RSR)) +

                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                          • Call Chain = getSn_RX_RSR ⇒ WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                          • >>   loopback_udps +
                                                                                                                                                                                                                                                                                                                                                          • >>   recvfrom +
                                                                                                                                                                                                                                                                                                                                                          • >>   parseDHCPMSG +
                                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                                          getSn_TX_FSR (Thumb, 108 bytes, Stack size 16 bytes, w5500.o(i.getSn_TX_FSR)) +

                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                          • Call Chain = getSn_TX_FSR ⇒ WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                          • >>   sendto +
                                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                                          gpio_led_rx_off (Thumb, 14 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_rx_off))

                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                          • Call Chain = gpio_led_rx_off
                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_GPIO_WritePin
                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                            • >>   rx_led_control +
                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                              • >>   rx_led_control
                                                                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                                                                              gpio_led_rx_on (Thumb, 14 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_rx_on)) +

                                                                                                                                                                                                                                                                                                                                                              gpio_led_rx_on (Thumb, 14 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_rx_on))

                                                                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                                                                              • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                              • Call Chain = gpio_led_rx_on
                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_GPIO_WritePin
                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                • >>   rx_led_control +
                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                  • >>   rx_led_control
                                                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                                                  gpio_led_tx_off (Thumb, 16 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_tx_off)) +

                                                                                                                                                                                                                                                                                                                                                                  gpio_led_tx_off (Thumb, 16 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_tx_off))

                                                                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                                                                  • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                  • Call Chain = gpio_led_tx_off
                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_GPIO_WritePin
                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                    • >>   tx_led_control +
                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                      • >>   tx_led_control
                                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                                      gpio_led_tx_on (Thumb, 14 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_tx_on)) +

                                                                                                                                                                                                                                                                                                                                                                      gpio_led_tx_on (Thumb, 14 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_tx_on))

                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = gpio_led_tx_on
                                                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_GPIO_WritePin
                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                        • >>   tx_led_control +
                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                          • >>   tx_led_control
                                                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                                                          main (Thumb, 186 bytes, Stack size 0 bytes, main.o(i.main)) -

                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 488
                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = main ⇒ CmdRouter_Task ⇒ DebugLog_Output ⇒ __2snprintf +

                                                                                                                                                                                                                                                                                                                                                                            loopback_udps (Thumb, 282 bytes, Stack size 2104 bytes, loopback.o(i.loopback_udps)) +

                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 2200
                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = loopback_udps ⇒ sendto ⇒ wiz_send_data ⇒ WIZCHIP_WRITE_BUF
                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_init -
                                                                                                                                                                                                                                                                                                                                                                            • >>   UART2_Print_Task -
                                                                                                                                                                                                                                                                                                                                                                            • >>   UART2_Print_Init -
                                                                                                                                                                                                                                                                                                                                                                            • >>   Relay_Init -
                                                                                                                                                                                                                                                                                                                                                                            • >>   MultiUART_Task -
                                                                                                                                                                                                                                                                                                                                                                            • >>   MultiUART_Init -
                                                                                                                                                                                                                                                                                                                                                                            • >>   MX_USART3_UART_Init -
                                                                                                                                                                                                                                                                                                                                                                            • >>   MX_USART2_UART_Init -
                                                                                                                                                                                                                                                                                                                                                                            • >>   MX_USART1_UART_Init -
                                                                                                                                                                                                                                                                                                                                                                            • >>   MX_SPI2_Init -
                                                                                                                                                                                                                                                                                                                                                                            • >>   MX_GPIO_Init -
                                                                                                                                                                                                                                                                                                                                                                            • >>   IO_Monitor_Task -
                                                                                                                                                                                                                                                                                                                                                                            • >>   IO_Monitor_Init -
                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_UART_Receive_IT -
                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_Init -
                                                                                                                                                                                                                                                                                                                                                                            • >>   DebugLog_Init -
                                                                                                                                                                                                                                                                                                                                                                            • >>   CmdRouter_Task -
                                                                                                                                                                                                                                                                                                                                                                            • >>   CmdRouter_Init -
                                                                                                                                                                                                                                                                                                                                                                            • >>   CmdParser_Task -
                                                                                                                                                                                                                                                                                                                                                                            • >>   CmdParser_Init -
                                                                                                                                                                                                                                                                                                                                                                            • >>   SystemClock_Config -
                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_tx_app_task -
                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_tx_app_start -
                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_tx_app_init -
                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_rx_app_task -
                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_rx_app_start -
                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_rx_app_init -
                                                                                                                                                                                                                                                                                                                                                                            • >>   __2printf +
                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                              • >>   MultiUART_Send +
                                                                                                                                                                                                                                                                                                                                                                              • >>   socket +
                                                                                                                                                                                                                                                                                                                                                                              • >>   sendto +
                                                                                                                                                                                                                                                                                                                                                                              • >>   recvfrom +
                                                                                                                                                                                                                                                                                                                                                                              • >>   getSn_RX_RSR +
                                                                                                                                                                                                                                                                                                                                                                              • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                              • >>   __aeabi_memcpy +
                                                                                                                                                                                                                                                                                                                                                                              • >>   __2sprintf +
                                                                                                                                                                                                                                                                                                                                                                              • >>   __2printf +
                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                              • >>   main +
                                                                                                                                                                                                                                                                                                                                                                              + +

                                                                                                                                                                                                                                                                                                                                                                              main (Thumb, 364 bytes, Stack size 0 bytes, main.o(i.main)) +

                                                                                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                                                                                              • Max Depth = 2200
                                                                                                                                                                                                                                                                                                                                                                              • Call Chain = main ⇒ loopback_udps ⇒ sendto ⇒ wiz_send_data ⇒ WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                              • >>   wizchip_initialize +
                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   network_init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   loopback_udps +
                                                                                                                                                                                                                                                                                                                                                                              • >>   UART2_Print_Task +
                                                                                                                                                                                                                                                                                                                                                                              • >>   UART2_Print_Init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   Relay_Init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   MultiUART_Task +
                                                                                                                                                                                                                                                                                                                                                                              • >>   MultiUART_Send +
                                                                                                                                                                                                                                                                                                                                                                              • >>   MultiUART_Init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   MX_USART3_UART_Init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   MX_USART2_UART_Init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   MX_USART1_UART_Init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   MX_TIM2_Init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   MX_SPI2_Init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   MX_GPIO_Init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   IO_Monitor_Task +
                                                                                                                                                                                                                                                                                                                                                                              • >>   IO_Monitor_Init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_UART_Receive_IT +
                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_TIM_Base_Start_IT +
                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_Init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   DebugLog_SetLevel +
                                                                                                                                                                                                                                                                                                                                                                              • >>   DebugLog_Init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   CmdRouter_Init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   CmdParser_Init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   SystemClock_Config +
                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_GetTick +
                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_tx_app_task +
                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_tx_app_start +
                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_tx_app_init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_rx_app_task +
                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_rx_app_start +
                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_rx_app_init +
                                                                                                                                                                                                                                                                                                                                                                              • >>   __2printf

                                                                                                                                                                                                                                                                                                                                                                              [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                              • entry9a.o(.ARM.Collect$$$$0000000B)
                                                                                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                                                                                              rf433_hal_1ms_callback (Thumb, 30 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_1ms_callback)) -

                                                                                                                                                                                                                                                                                                                                                                              [Called By]

                                                                                                                                                                                                                                                                                                                                                                              • >>   uart1_rx_timeout_1ms_callback +

                                                                                                                                                                                                                                                                                                                                                                                makeDHCPMSG (Thumb, 386 bytes, Stack size 24 bytes, dhcp.o(i.makeDHCPMSG)) +

                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 48
                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = makeDHCPMSG ⇒ WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                • >>   WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                • >>   send_DHCP_REQUEST +
                                                                                                                                                                                                                                                                                                                                                                                • >>   send_DHCP_DISCOVER +
                                                                                                                                                                                                                                                                                                                                                                                • >>   send_DHCP_DECLINE
                                                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                                                rf433_hal_aux_wait (Thumb, 58 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_aux_wait)) +

                                                                                                                                                                                                                                                                                                                                                                                malloc (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc)) +

                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 20
                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = malloc +
                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                • >>   create_wiz_timer_node +
                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                network_init (Thumb, 46 bytes, Stack size 16 bytes, wiz_interface.o(i.network_init)) +

                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 216
                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = network_init ⇒ wiz_dhcp_process ⇒ DHCP_run ⇒ parseDHCPMSG ⇒ recvfrom ⇒ wiz_recv_data ⇒ WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                • >>   wizchip_setnetinfo +
                                                                                                                                                                                                                                                                                                                                                                                • >>   print_network_information +
                                                                                                                                                                                                                                                                                                                                                                                • >>   wiz_dhcp_process +
                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                • >>   main +
                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                parseDHCPMSG (Thumb, 608 bytes, Stack size 40 bytes, dhcp.o(i.parseDHCPMSG)) +

                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 136
                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = parseDHCPMSG ⇒ recvfrom ⇒ wiz_recv_data ⇒ WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                • >>   recvfrom +
                                                                                                                                                                                                                                                                                                                                                                                • >>   getSn_RX_RSR +
                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                • >>   DHCP_run +
                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                print_network_information (Thumb, 190 bytes, Stack size 40 bytes, wiz_interface.o(i.print_network_information)) +

                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 72
                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = print_network_information ⇒ wizchip_getnetinfo ⇒ WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                • >>   wizchip_getnetinfo +
                                                                                                                                                                                                                                                                                                                                                                                • >>   __2printf +
                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                • >>   network_init +
                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                recvfrom (Thumb, 768 bytes, Stack size 40 bytes, socket.o(i.recvfrom)) +

                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 96
                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = recvfrom ⇒ wiz_recv_data ⇒ WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                • >>   getSn_RX_RSR +
                                                                                                                                                                                                                                                                                                                                                                                • >>   close +
                                                                                                                                                                                                                                                                                                                                                                                • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                • >>   wiz_recv_ignore +
                                                                                                                                                                                                                                                                                                                                                                                • >>   wiz_recv_data +
                                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                • >>   loopback_udps +
                                                                                                                                                                                                                                                                                                                                                                                • >>   parseDHCPMSG +
                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                reg_wizchip_cs_cbfunc (Thumb, 26 bytes, Stack size 0 bytes, wizchip_conf.o(i.reg_wizchip_cs_cbfunc)) +

                                                                                                                                                                                                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                                                                                                                                                                                                • >>   wizchip_spi_cb_reg +
                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                reg_wizchip_spi_cbfunc (Thumb, 40 bytes, Stack size 0 bytes, wizchip_conf.o(i.reg_wizchip_spi_cbfunc)) +

                                                                                                                                                                                                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                                                                                                                                                                                                • >>   wizchip_spi_cb_reg +
                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                reg_wizchip_spiburst_cbfunc (Thumb, 38 bytes, Stack size 0 bytes, wizchip_conf.o(i.reg_wizchip_spiburst_cbfunc)) +

                                                                                                                                                                                                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                                                                                                                                                                                                • >>   wizchip_spi_cb_reg +
                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                reset_DHCP_timeout (Thumb, 20 bytes, Stack size 0 bytes, dhcp.o(i.reset_DHCP_timeout)) +

                                                                                                                                                                                                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                                                                                                                                                                                                • >>   DHCP_run +
                                                                                                                                                                                                                                                                                                                                                                                • >>   DHCP_init +
                                                                                                                                                                                                                                                                                                                                                                                • >>   check_DHCP_timeout +
                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                rf433_hal_1ms_callback (Thumb, 30 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_1ms_callback)) +

                                                                                                                                                                                                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                                                                                                                                                                                                • >>   uart1_rx_timeout_1ms_callback +
                                                                                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                                                                                rf433_hal_aux_wait (Thumb, 58 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_aux_wait))

                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = rf433_hal_aux_wait ⇒ HAL_Delay
                                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_Delay -
                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_GPIO_ReadPin +
                                                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_GetTick +
                                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_Delay +
                                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_GPIO_ReadPin
                                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                                  • >>   rf433_set_config -
                                                                                                                                                                                                                                                                                                                                                                                  • >>   rf433_hal_set_work_mode +
                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_set_config +
                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_hal_set_work_mode
                                                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                                                    rf433_hal_deinit (Thumb, 22 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_deinit)) -

                                                                                                                                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_init +

                                                                                                                                                                                                                                                                                                                                                                                      rf433_hal_deinit (Thumb, 22 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_deinit)) +

                                                                                                                                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                                                                                                                                      • >>   rf433_init
                                                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                                                      rf433_hal_fifo_clear (Thumb, 8 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_fifo_clear)) +

                                                                                                                                                                                                                                                                                                                                                                                      rf433_hal_fifo_clear (Thumb, 8 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_fifo_clear))

                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = rf433_hal_fifo_clear
                                                                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                      • >>   rf433_fifo_clear +
                                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                                        • >>   rf433_fifo_clear
                                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                                        • >>   rf433_rx_start +
                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                          • >>   rf433_rx_start
                                                                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                                                                          rf433_hal_fifo_get_length (Thumb, 12 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_fifo_get_length)) +

                                                                                                                                                                                                                                                                                                                                                                                          rf433_hal_fifo_get_length (Thumb, 12 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_fifo_get_length))

                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = rf433_hal_fifo_get_length
                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                          • >>   rf433_fifo_get_length +
                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_fifo_get_length
                                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                            • >>   uart1_check_rx_done +
                                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                                              • >>   uart1_check_rx_done
                                                                                                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                                                                                                              rf433_hal_fifo_read (Thumb, 20 bytes, Stack size 16 bytes, rf433_hal.o(i.rf433_hal_fifo_read)) +

                                                                                                                                                                                                                                                                                                                                                                                              rf433_hal_fifo_read (Thumb, 20 bytes, Stack size 16 bytes, rf433_hal.o(i.rf433_hal_fifo_read))

                                                                                                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                                                                                                              • Max Depth = 28
                                                                                                                                                                                                                                                                                                                                                                                              • Call Chain = rf433_hal_fifo_read ⇒ rf433_fifo_read
                                                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_fifo_read +
                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   rf433_fifo_read
                                                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                • >>   uart1_check_rx_done +
                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                  • >>   uart1_check_rx_done
                                                                                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                                                                                  rf433_hal_init (Thumb, 36 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_init)) -

                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                  • >>   rf433_init +

                                                                                                                                                                                                                                                                                                                                                                                                    rf433_hal_init (Thumb, 36 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_init)) +

                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_init
                                                                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                                                                    rf433_hal_set_work_mode (Thumb, 150 bytes, Stack size 16 bytes, rf433_hal.o(i.rf433_hal_set_work_mode)) +

                                                                                                                                                                                                                                                                                                                                                                                                    rf433_hal_set_work_mode (Thumb, 150 bytes, Stack size 16 bytes, rf433_hal.o(i.rf433_hal_set_work_mode))

                                                                                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                    • Max Depth = 40
                                                                                                                                                                                                                                                                                                                                                                                                    • Call Chain = rf433_hal_set_work_mode ⇒ rf433_hal_aux_wait ⇒ HAL_Delay
                                                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_GPIO_WritePin -
                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_Delay -
                                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_hal_aux_wait +
                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_Delay +
                                                                                                                                                                                                                                                                                                                                                                                                      • >>   rf433_hal_aux_wait
                                                                                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                      • >>   rf433_set_work_mode -
                                                                                                                                                                                                                                                                                                                                                                                                      • >>   rf433_set_config +
                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                        • >>   rf433_set_work_mode +
                                                                                                                                                                                                                                                                                                                                                                                                        • >>   rf433_set_config
                                                                                                                                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                                                                                                                                        rf433_hal_uart_rxcplt_callback (Thumb, 38 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_uart_rxcplt_callback)) -

                                                                                                                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                        • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                                                                        • Call Chain = rf433_hal_uart_rxcplt_callback ⇒ HAL_UART_Receive_IT ⇒ UART_Start_Receive_IT -
                                                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_UART_Receive_IT -
                                                                                                                                                                                                                                                                                                                                                                                                        • >>   rf433_fifo_write -
                                                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_UART_RxCpltCallback -
                                                                                                                                                                                                                                                                                                                                                                                                        - -

                                                                                                                                                                                                                                                                                                                                                                                                        rf433_hal_uart_tx (Thumb, 44 bytes, Stack size 16 bytes, rf433_hal.o(i.rf433_hal_uart_tx)) +

                                                                                                                                                                                                                                                                                                                                                                                                        rf433_hal_uart_tx (Thumb, 44 bytes, Stack size 16 bytes, rf433_hal.o(i.rf433_hal_uart_tx))

                                                                                                                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                        • Max Depth = 80
                                                                                                                                                                                                                                                                                                                                                                                                        • Call Chain = rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_UART_Transmit +
                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_UART_Transmit
                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                          • >>   rf433_transmit -
                                                                                                                                                                                                                                                                                                                                                                                                          • >>   rf433_send_config_command +
                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_transmit +
                                                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_send_config_command
                                                                                                                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                                                                                                                            rf433_init (Thumb, 84 bytes, Stack size 16 bytes, rf433.o(i.rf433_init)) +

                                                                                                                                                                                                                                                                                                                                                                                                            rf433_init (Thumb, 84 bytes, Stack size 16 bytes, rf433.o(i.rf433_init))

                                                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 120
                                                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = rf433_init ⇒ rf433_set_config ⇒ rf433_send_config_command ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_set_config -
                                                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_hal_init -
                                                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_hal_deinit +
                                                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_set_config +
                                                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_hal_init +
                                                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_hal_deinit
                                                                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                              • >>   main +
                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                • >>   main
                                                                                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                                                                                rf433_rx_app_init (Thumb, 74 bytes, Stack size 16 bytes, rf433_rx_app.o(i.rf433_rx_app_init)) +

                                                                                                                                                                                                                                                                                                                                                                                                                rf433_rx_app_init (Thumb, 74 bytes, Stack size 16 bytes, rf433_rx_app.o(i.rf433_rx_app_init))

                                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 120
                                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = rf433_rx_app_init ⇒ rf433_set_config ⇒ rf433_send_config_command ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                • >>   rf433_set_work_mode -
                                                                                                                                                                                                                                                                                                                                                                                                                • >>   rf433_set_config -
                                                                                                                                                                                                                                                                                                                                                                                                                • >>   __aeabi_memclr4 +
                                                                                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   rf433_set_work_mode +
                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   rf433_set_config +
                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   __aeabi_memclr4
                                                                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   main +
                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   main
                                                                                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                                                                                    rf433_rx_app_parse_packet (Thumb, 72 bytes, Stack size 24 bytes, rf433_rx_app.o(i.rf433_rx_app_parse_packet)) +

                                                                                                                                                                                                                                                                                                                                                                                                                    rf433_rx_app_parse_packet (Thumb, 72 bytes, Stack size 24 bytes, rf433_rx_app.o(i.rf433_rx_app_parse_packet))

                                                                                                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                    • Max Depth = 240
                                                                                                                                                                                                                                                                                                                                                                                                                    • Call Chain = rf433_rx_app_parse_packet ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int
                                                                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   __0sscanf +
                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   __0sscanf
                                                                                                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   rf433_rx_app_task +
                                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   rf433_rx_app_task
                                                                                                                                                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                                                                                                                                                        rf433_rx_app_start (Thumb, 28 bytes, Stack size 8 bytes, rf433_rx_app.o(i.rf433_rx_app_start)) +

                                                                                                                                                                                                                                                                                                                                                                                                                        rf433_rx_app_start (Thumb, 28 bytes, Stack size 8 bytes, rf433_rx_app.o(i.rf433_rx_app_start))

                                                                                                                                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                        • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                                                                                                        • Call Chain = rf433_rx_app_start ⇒ rf433_rx_start ⇒ rf433_hal_fifo_clear
                                                                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   rf433_rx_start +
                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   rf433_rx_start
                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   main +
                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   main
                                                                                                                                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                                                                                                                                            rf433_rx_app_task (Thumb, 154 bytes, Stack size 88 bytes, rf433_rx_app.o(i.rf433_rx_app_task)) +

                                                                                                                                                                                                                                                                                                                                                                                                                            rf433_rx_app_task (Thumb, 154 bytes, Stack size 88 bytes, rf433_rx_app.o(i.rf433_rx_app_task))

                                                                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 328
                                                                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = rf433_rx_app_task ⇒ rf433_rx_app_parse_packet ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int
                                                                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   uart1_check_rx_done -
                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_Delay -
                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_rx_app_parse_packet -
                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   rx_update_stats -
                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   rx_led_control +
                                                                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   uart1_check_rx_done +
                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_Delay +
                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_rx_app_parse_packet +
                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   rx_update_stats +
                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   rx_led_control
                                                                                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   main +
                                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   main
                                                                                                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                                                                                                rf433_rx_start (Thumb, 50 bytes, Stack size 8 bytes, rf433.o(i.rf433_rx_start)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                rf433_rx_start (Thumb, 50 bytes, Stack size 8 bytes, rf433.o(i.rf433_rx_start))

                                                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 16
                                                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = rf433_rx_start ⇒ rf433_hal_fifo_clear
                                                                                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   rf433_hal_fifo_clear +
                                                                                                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   rf433_hal_fifo_clear
                                                                                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   rf433_rx_app_start +
                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_rx_app_start
                                                                                                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                                                                                                    rf433_set_config (Thumb, 84 bytes, Stack size 16 bytes, rf433.o(i.rf433_set_config)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                    rf433_set_config (Thumb, 84 bytes, Stack size 16 bytes, rf433.o(i.rf433_set_config))

                                                                                                                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                    • Max Depth = 104
                                                                                                                                                                                                                                                                                                                                                                                                                                    • Call Chain = rf433_set_config ⇒ rf433_send_config_command ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_Delay -
                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_hal_set_work_mode -
                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_hal_aux_wait -
                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_send_config_command +
                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_Delay +
                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   rf433_hal_set_work_mode +
                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   rf433_hal_aux_wait +
                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   rf433_send_config_command
                                                                                                                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   rf433_init -
                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   rf433_tx_app_init -
                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   rf433_rx_app_init +
                                                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   rf433_init +
                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   rf433_tx_app_init +
                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   rf433_rx_app_init
                                                                                                                                                                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                                                                                                                                                                        rf433_set_work_mode (Thumb, 24 bytes, Stack size 16 bytes, rf433.o(i.rf433_set_work_mode)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                        rf433_set_work_mode (Thumb, 24 bytes, Stack size 16 bytes, rf433.o(i.rf433_set_work_mode))

                                                                                                                                                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                        • Max Depth = 56
                                                                                                                                                                                                                                                                                                                                                                                                                                        • Call Chain = rf433_set_work_mode ⇒ rf433_hal_set_work_mode ⇒ rf433_hal_aux_wait ⇒ HAL_Delay
                                                                                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   rf433_hal_set_work_mode +
                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   rf433_hal_set_work_mode
                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   rf433_tx_app_init -
                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   rf433_rx_app_init +
                                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_tx_app_init +
                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_rx_app_init
                                                                                                                                                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                                                                                                                                                            rf433_transmit (Thumb, 50 bytes, Stack size 16 bytes, rf433.o(i.rf433_transmit)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                            rf433_transmit (Thumb, 50 bytes, Stack size 16 bytes, rf433.o(i.rf433_transmit))

                                                                                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 96
                                                                                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = rf433_transmit ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_hal_uart_tx +
                                                                                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_hal_uart_tx
                                                                                                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_tx_app_task +
                                                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   rf433_tx_app_task
                                                                                                                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                                                                                                                rf433_tx_app_init (Thumb, 70 bytes, Stack size 16 bytes, rf433_tx_app.o(i.rf433_tx_app_init)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                rf433_tx_app_init (Thumb, 80 bytes, Stack size 16 bytes, rf433_tx_app.o(i.rf433_tx_app_init))

                                                                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 120
                                                                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = rf433_tx_app_init ⇒ rf433_set_config ⇒ rf433_send_config_command ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   rf433_set_work_mode -
                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   rf433_set_config -
                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   __aeabi_memclr4 +
                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   rf433_set_work_mode +
                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   rf433_set_config +
                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   __aeabi_memclr4
                                                                                                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   main +
                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   main
                                                                                                                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                                                                                                                    rf433_tx_app_start (Thumb, 40 bytes, Stack size 0 bytes, rf433_tx_app.o(i.rf433_tx_app_start)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   main +

                                                                                                                                                                                                                                                                                                                                                                                                                                                      rf433_tx_app_start (Thumb, 40 bytes, Stack size 0 bytes, rf433_tx_app.o(i.rf433_tx_app_start)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   main
                                                                                                                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                                                                                                                      rf433_tx_app_task (Thumb, 206 bytes, Stack size 48 bytes, rf433_tx_app.o(i.rf433_tx_app_task)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                      rf433_tx_app_task (Thumb, 206 bytes, Stack size 48 bytes, rf433_tx_app.o(i.rf433_tx_app_task))

                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 144
                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = rf433_tx_app_task ⇒ rf433_transmit ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   rf433_transmit -
                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   tx_led_control -
                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   tx_build_packet -
                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_Delay +
                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   rf433_transmit +
                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_GetTick +
                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   tx_led_control +
                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   tx_build_packet +
                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_Delay
                                                                                                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   main +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   main
                                                                                                                                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                                                                                                                                          systick_interrupt_1ms_callback (Thumb, 24 bytes, Stack size 8 bytes, systick.o(i.systick_interrupt_1ms_callback)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                          send_DHCP_DECLINE (Thumb, 492 bytes, Stack size 24 bytes, dhcp.o(i.send_DHCP_DECLINE)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 120
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = send_DHCP_DECLINE ⇒ sendto ⇒ wiz_send_data ⇒ WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   sendto +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   makeDHCPMSG +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   check_DHCP_leasedIP +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                          send_DHCP_DISCOVER (Thumb, 638 bytes, Stack size 24 bytes, dhcp.o(i.send_DHCP_DISCOVER)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 120
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = send_DHCP_DISCOVER ⇒ sendto ⇒ wiz_send_data ⇒ WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   sendto +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   makeDHCPMSG +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   NibbleToHex +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   DHCP_run +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   check_DHCP_timeout +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                          send_DHCP_REQUEST (Thumb, 970 bytes, Stack size 24 bytes, dhcp.o(i.send_DHCP_REQUEST)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 120
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = send_DHCP_REQUEST ⇒ sendto ⇒ wiz_send_data ⇒ WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   sendto +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   makeDHCPMSG +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   NibbleToHex +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   DHCP_run +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   check_DHCP_timeout +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                          sendto (Thumb, 518 bytes, Stack size 40 bytes, socket.o(i.sendto)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 96
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = sendto ⇒ wiz_send_data ⇒ WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   wiz_send_data +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   getSn_TX_FSR +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   loopback_udps +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   send_DHCP_REQUEST +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   send_DHCP_DISCOVER +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   send_DHCP_DECLINE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   check_DHCP_leasedIP +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                          socket (Thumb, 384 bytes, Stack size 24 bytes, socket.o(i.socket)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 48
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = socket ⇒ close ⇒ WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   close +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   loopback_udps +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   DHCP_run +
                                                                                                                                                                                                                                                                                                                                                                                                                                                          + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                          systick_interrupt_1ms_callback (Thumb, 24 bytes, Stack size 8 bytes, systick.o(i.systick_interrupt_1ms_callback))

                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 12
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = systick_interrupt_1ms_callback ⇒ uart1_rx_timeout_1ms_callback
                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   uart1_rx_timeout_1ms_callback +
                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   uart1_rx_timeout_1ms_callback
                                                                                                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   SysTick_Handler +
                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   SysTick_Handler
                                                                                                                                                                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                                                                                                                                                                              uart1_check_rx_done (Thumb, 76 bytes, Stack size 24 bytes, rf433_hal.o(i.uart1_check_rx_done)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                              uart1_check_rx_done (Thumb, 76 bytes, Stack size 24 bytes, rf433_hal.o(i.uart1_check_rx_done))

                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                              • Max Depth = 52
                                                                                                                                                                                                                                                                                                                                                                                                                                                              • Call Chain = uart1_check_rx_done ⇒ rf433_hal_fifo_read ⇒ rf433_fifo_read
                                                                                                                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_hal_fifo_read -
                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_hal_fifo_get_length +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   rf433_hal_fifo_read +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   rf433_hal_fifo_get_length
                                                                                                                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   rf433_rx_app_task +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   rf433_rx_app_task
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  uart1_rx_timeout_1ms_callback (Thumb, 8 bytes, Stack size 4 bytes, rf433_hal.o(i.uart1_rx_timeout_1ms_callback)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  uart1_rx_timeout_1ms_callback (Thumb, 8 bytes, Stack size 4 bytes, rf433_hal.o(i.uart1_rx_timeout_1ms_callback))

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • Max Depth = 4
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • Call Chain = uart1_rx_timeout_1ms_callback
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   rf433_hal_1ms_callback +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_hal_1ms_callback
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   systick_interrupt_1ms_callback +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   systick_interrupt_1ms_callback +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wiz_add_timer (Thumb, 52 bytes, Stack size 24 bytes, wiz_interface.o(i.wiz_add_timer)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 64
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wiz_add_timer ⇒ create_wiz_timer_node ⇒ __2printf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   create_wiz_timer_node +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wiz_dhcp_process +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wiz_delete_timer (Thumb, 64 bytes, Stack size 16 bytes, wiz_interface.o(i.wiz_delete_timer)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wiz_delete_timer ⇒ free +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   free +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wiz_dhcp_process +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wiz_phy_link_check (Thumb, 56 bytes, Stack size 8 bytes, wiz_interface.o(i.wiz_phy_link_check)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 112
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wiz_phy_link_check ⇒ ctlwizchip ⇒ wizchip_init ⇒ wizchip_sw_reset ⇒ WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   ctlwizchip +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wiz_print_phy_info +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wiz_user_delay_ms +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   __2printf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wizchip_initialize +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wiz_print_phy_info (Thumb, 54 bytes, Stack size 8 bytes, wiz_interface.o(i.wiz_print_phy_info)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wiz_print_phy_info ⇒ __2printf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   __2printf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wiz_phy_link_check +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wiz_recv_data (Thumb, 132 bytes, Stack size 32 bytes, w5500.o(i.wiz_recv_data)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 56
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wiz_recv_data ⇒ WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   recvfrom +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wiz_recv_ignore (Thumb, 102 bytes, Stack size 24 bytes, w5500.o(i.wiz_recv_ignore)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 40
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wiz_recv_ignore ⇒ WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   recvfrom +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wiz_send_data (Thumb, 132 bytes, Stack size 32 bytes, w5500.o(i.wiz_send_data)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 56
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wiz_send_data ⇒ WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   sendto +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wiz_timer_handler (Thumb, 48 bytes, Stack size 8 bytes, wiz_interface.o(i.wiz_timer_handler)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wiz_timer_handler +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_TIM_PeriodElapsedCallback +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wiz_user_delay_ms (Thumb, 18 bytes, Stack size 0 bytes, wiz_interface.o(i.wiz_user_delay_ms)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wizchip_version_check +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wiz_phy_link_check +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wizchip_reset +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_bus_readdata (Thumb, 6 bytes, Stack size 0 bytes, wizchip_conf.o(i.wizchip_bus_readdata)) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wizchip_conf.o(.data) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_bus_writedata (Thumb, 4 bytes, Stack size 0 bytes, wizchip_conf.o(i.wizchip_bus_writedata)) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wizchip_conf.o(.data) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_clrinterrupt (Thumb, 60 bytes, Stack size 16 bytes, wizchip_conf.o(i.wizchip_clrinterrupt)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_clrinterrupt ⇒ WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   ctlwizchip +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_cris_enter (Thumb, 2 bytes, Stack size 0 bytes, wizchip_conf.o(i.wizchip_cris_enter)) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wizchip_conf.o(.data) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_cris_exit (Thumb, 2 bytes, Stack size 0 bytes, wizchip_conf.o(i.wizchip_cris_exit)) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wizchip_conf.o(.data) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_cs_deselect (Thumb, 2 bytes, Stack size 0 bytes, wizchip_conf.o(i.wizchip_cs_deselect)) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 2]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wizchip_conf.o(i.reg_wizchip_cs_cbfunc) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wizchip_conf.o(.data) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_cs_select (Thumb, 2 bytes, Stack size 0 bytes, wizchip_conf.o(i.wizchip_cs_select)) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 2]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wizchip_conf.o(i.reg_wizchip_cs_cbfunc) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wizchip_conf.o(.data) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_deselect (Thumb, 14 bytes, Stack size 8 bytes, wiz_platform.o(i.wizchip_deselect)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_deselect +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wiz_platform.o(i.wizchip_spi_cb_reg) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_getinterrupt (Thumb, 42 bytes, Stack size 16 bytes, wizchip_conf.o(i.wizchip_getinterrupt)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_getinterrupt ⇒ WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   ctlwizchip +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_getinterruptmask (Thumb, 40 bytes, Stack size 16 bytes, wizchip_conf.o(i.wizchip_getinterruptmask)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_getinterruptmask ⇒ WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   ctlwizchip +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_getnetinfo (Thumb, 82 bytes, Stack size 8 bytes, wizchip_conf.o(i.wizchip_getnetinfo)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_getnetinfo ⇒ WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   print_network_information +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_init (Thumb, 144 bytes, Stack size 24 bytes, wizchip_conf.o(i.wizchip_init)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 72
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_init ⇒ wizchip_sw_reset ⇒ WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wizchip_sw_reset +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   ctlwizchip +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_initialize (Thumb, 50 bytes, Stack size 8 bytes, wiz_interface.o(i.wizchip_initialize)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 120
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_initialize ⇒ wiz_phy_link_check ⇒ ctlwizchip ⇒ wizchip_init ⇒ wizchip_sw_reset ⇒ WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wizchip_version_check +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wiz_phy_link_check +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wizchip_spi_cb_reg +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wizchip_reset +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   __2printf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   main +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_read_buff (Thumb, 22 bytes, Stack size 16 bytes, wiz_platform.o(i.wizchip_read_buff)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 168
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_read_buff ⇒ HAL_SPI_Receive ⇒ HAL_SPI_TransmitReceive ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_SPI_Receive +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wiz_platform.o(i.wizchip_spi_cb_reg) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_read_byte (Thumb, 22 bytes, Stack size 8 bytes, wiz_platform.o(i.wizchip_read_byte)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 160
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_read_byte ⇒ HAL_SPI_Receive ⇒ HAL_SPI_TransmitReceive ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_SPI_Receive +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wiz_platform.o(i.wizchip_spi_cb_reg) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_reset (Thumb, 54 bytes, Stack size 8 bytes, wiz_platform.o(i.wizchip_reset)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_reset +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wiz_user_delay_ms +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wizchip_initialize +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_select (Thumb, 16 bytes, Stack size 8 bytes, wiz_platform.o(i.wizchip_select)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_select +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wiz_platform.o(i.wizchip_spi_cb_reg) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_setinterruptmask (Thumb, 30 bytes, Stack size 16 bytes, wizchip_conf.o(i.wizchip_setinterruptmask)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_setinterruptmask ⇒ WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   ctlwizchip +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_setnetinfo (Thumb, 80 bytes, Stack size 8 bytes, wizchip_conf.o(i.wizchip_setnetinfo)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_setnetinfo ⇒ WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   network_init +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wiz_dhcp_process +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_spi_cb_reg (Thumb, 28 bytes, Stack size 8 bytes, wiz_platform.o(i.wizchip_spi_cb_reg)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_spi_cb_reg +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   reg_wizchip_spiburst_cbfunc +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   reg_wizchip_spi_cbfunc +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   reg_wizchip_cs_cbfunc +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wizchip_initialize +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_spi_readburst (Thumb, 2 bytes, Stack size 0 bytes, wizchip_conf.o(i.wizchip_spi_readburst)) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wizchip_conf.o(i.reg_wizchip_spiburst_cbfunc) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_spi_readbyte (Thumb, 4 bytes, Stack size 0 bytes, wizchip_conf.o(i.wizchip_spi_readbyte)) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wizchip_conf.o(i.reg_wizchip_spi_cbfunc) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_spi_writeburst (Thumb, 2 bytes, Stack size 0 bytes, wizchip_conf.o(i.wizchip_spi_writeburst)) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wizchip_conf.o(i.reg_wizchip_spiburst_cbfunc) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_spi_writebyte (Thumb, 2 bytes, Stack size 0 bytes, wizchip_conf.o(i.wizchip_spi_writebyte)) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wizchip_conf.o(i.reg_wizchip_spi_cbfunc) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_sw_reset (Thumb, 114 bytes, Stack size 24 bytes, wizchip_conf.o(i.wizchip_sw_reset)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 48
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_sw_reset ⇒ WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_WRITE_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   ctlwizchip +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wizchip_init +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_version_check (Thumb, 66 bytes, Stack size 16 bytes, wiz_interface.o(i.wizchip_version_check)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 40
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_version_check ⇒ __2printf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wiz_user_delay_ms +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   __2printf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wizchip_initialize +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_write_buff (Thumb, 22 bytes, Stack size 16 bytes, wiz_platform.o(i.wizchip_write_buff)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 120
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_write_buff ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_SPI_Transmit +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wiz_platform.o(i.wizchip_spi_cb_reg) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizchip_write_byte (Thumb, 18 bytes, Stack size 8 bytes, wiz_platform.o(i.wizchip_write_byte)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 112
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizchip_write_byte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_SPI_Transmit +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • wiz_platform.o(i.wizchip_spi_cb_reg) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizphy_getphyconf (Thumb, 120 bytes, Stack size 16 bytes, wizchip_conf.o(i.wizphy_getphyconf)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizphy_getphyconf ⇒ WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   ctlwizchip +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizphy_getphylink (Thumb, 24 bytes, Stack size 8 bytes, wizchip_conf.o(i.wizphy_getphylink)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizphy_getphylink ⇒ WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   ctlwizchip +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizphy_getphypmode (Thumb, 30 bytes, Stack size 8 bytes, wizchip_conf.o(i.wizphy_getphypmode)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizphy_getphypmode ⇒ WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   ctlwizchip +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizphy_reset (Thumb, 52 bytes, Stack size 8 bytes, wizchip_conf.o(i.wizphy_reset)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizphy_reset ⇒ WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   ctlwizchip +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wizphy_setphypmode +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wizphy_setphyconf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizphy_setphyconf (Thumb, 88 bytes, Stack size 16 bytes, wizchip_conf.o(i.wizphy_setphyconf)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 40
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizphy_setphyconf ⇒ wizphy_reset ⇒ WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wizphy_reset +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   ctlwizchip +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      wizphy_setphypmode (Thumb, 100 bytes, Stack size 16 bytes, wizchip_conf.o(i.wizphy_setphypmode)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 40
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = wizphy_setphypmode ⇒ wizphy_reset ⇒ WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_WRITE +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   WIZCHIP_READ +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   wizphy_reset +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   ctlwizchip

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Local Symbols

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      rx_led_control (Thumb, 18 bytes, Stack size 8 bytes, rf433_rx_app.o(i.rx_led_control)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      rx_led_control (Thumb, 18 bytes, Stack size 8 bytes, rf433_rx_app.o(i.rx_led_control))

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 16
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = rx_led_control ⇒ gpio_led_rx_on
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   gpio_led_rx_on -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   gpio_led_rx_off +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   gpio_led_rx_on +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   gpio_led_rx_off
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   rf433_rx_app_task +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   rf433_rx_app_task
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                          rx_update_stats (Thumb, 56 bytes, Stack size 0 bytes, rf433_rx_app.o(i.rx_update_stats)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   rf433_rx_app_task +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            rx_update_stats (Thumb, 56 bytes, Stack size 0 bytes, rf433_rx_app.o(i.rx_update_stats)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_rx_app_task
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            tx_build_packet (Thumb, 54 bytes, Stack size 32 bytes, rf433_tx_app.o(i.tx_build_packet)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            tx_build_packet (Thumb, 54 bytes, Stack size 32 bytes, rf433_tx_app.o(i.tx_build_packet))

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 72
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = tx_build_packet ⇒ __2snprintf
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   __2snprintf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   __2snprintf
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_tx_app_task +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   rf433_tx_app_task
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                tx_led_control (Thumb, 18 bytes, Stack size 8 bytes, rf433_tx_app.o(i.tx_led_control)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                tx_led_control (Thumb, 18 bytes, Stack size 8 bytes, rf433_tx_app.o(i.tx_led_control))

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 16
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = tx_led_control ⇒ gpio_led_tx_on
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   gpio_led_tx_on -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   gpio_led_tx_off +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   gpio_led_tx_on +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   gpio_led_tx_off
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   rf433_tx_app_task +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_tx_app_task
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    calc_checksum (Thumb, 26 bytes, Stack size 8 bytes, cmd_parser.o(i.calc_checksum)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    calc_checksum (Thumb, 26 bytes, Stack size 8 bytes, io_monitor.o(i.calc_checksum))

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • Call Chain = calc_checksum
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   send_response_ok -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   send_response_err +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   send_di_event
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      hex_char_to_val (Thumb, 54 bytes, Stack size 0 bytes, cmd_parser.o(i.hex_char_to_val)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   hex_to_byte +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        send_di_event (Thumb, 114 bytes, Stack size 64 bytes, io_monitor.o(i.send_di_event)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • Max Depth = 256
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • Call Chain = send_di_event ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   UART2_Print_Printf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   MultiUART_SendString +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   calc_checksum +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   __2snprintf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   IO_Monitor_Task
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        hex_to_byte (Thumb, 28 bytes, Stack size 16 bytes, cmd_parser.o(i.hex_to_byte)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • Max Depth = 16
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • Call Chain = hex_to_byte +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          cmd_parser_response_callback (Thumb, 86 bytes, Stack size 24 bytes, cmd_router.o(i.cmd_parser_response_callback)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 376
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = cmd_parser_response_callback ⇒ DebugLog_Output ⇒ MultiUART_Send ⇒ tx_kickoff ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   hex_char_to_val -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   CmdParser_FeedByte -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          is_str_empty (Thumb, 16 bytes, Stack size 0 bytes, cmd_parser.o(i.is_str_empty)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   process_cmd_frame -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   is_str_numeric -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          is_str_numeric (Thumb, 48 bytes, Stack size 8 bytes, cmd_parser.o(i.is_str_numeric)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = is_str_numeric -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   is_str_empty -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __rt_ctype_table -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   process_cmd_frame -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          is_valid_cmd_char (Thumb, 38 bytes, Stack size 8 bytes, cmd_parser.o(i.is_valid_cmd_char)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = is_valid_cmd_char -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __rt_ctype_table -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   CmdParser_FeedByte -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          is_valid_param_char (Thumb, 38 bytes, Stack size 8 bytes, cmd_parser.o(i.is_valid_param_char)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = is_valid_param_char -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __rt_ctype_table -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   CmdParser_FeedByte -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          process_cmd_frame (Thumb, 400 bytes, Stack size 64 bytes, cmd_parser.o(i.process_cmd_frame)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 272
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = process_cmd_frame ⇒ Relay_SetState ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   Relay_SetState -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   IO_Monitor_GetState -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   IO_Monitor_GetAllStates -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   send_response_ok -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   send_response_err -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   is_str_numeric -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   is_str_empty -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   strcmp -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   atoi -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __2snprintf -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   CmdParser_Task -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          reset_parser (Thumb, 32 bytes, Stack size 8 bytes, cmd_parser.o(i.reset_parser)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = reset_parser -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __aeabi_memclr -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   CmdParser_Task -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   CmdParser_FeedByte -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          send_response_err (Thumb, 80 bytes, Stack size 48 bytes, cmd_parser.o(i.send_response_err)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 96
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = send_response_err ⇒ UART2_Print_String ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   UART2_Print_String -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   calc_checksum -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __2snprintf -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   CmdParser_FeedByte -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   process_cmd_frame -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          send_response_ok (Thumb, 80 bytes, Stack size 80 bytes, cmd_parser.o(i.send_response_ok)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 128
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = send_response_ok ⇒ UART2_Print_String ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   UART2_Print_String -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   calc_checksum -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __2snprintf -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   process_cmd_frame -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          calc_checksum (Thumb, 26 bytes, Stack size 8 bytes, io_monitor.o(i.calc_checksum)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = calc_checksum -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   send_di_event -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          send_di_event (Thumb, 110 bytes, Stack size 56 bytes, io_monitor.o(i.send_di_event)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 248
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = send_di_event ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   MultiUART_SendString -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   calc_checksum -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __2snprintf -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   IO_Monitor_Task -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          append_rx_log (Thumb, 54 bytes, Stack size 16 bytes, cmd_router.o(i.append_rx_log)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 16
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = append_rx_log -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   CmdRouter_Task -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          - -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          cmd_parser_response_callback (Thumb, 86 bytes, Stack size 24 bytes, cmd_router.o(i.cmd_parser_response_callback)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 360
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = cmd_parser_response_callback ⇒ DebugLog_Output ⇒ __2snprintf -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   MultiUART_GetPortName -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   DebugLog_Output -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   MultiUART_SendString -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   strlen +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   MultiUART_GetPortName +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   DebugLog_Output +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   MultiUART_SendString +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   strlen

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • cmd_router.o(i.CmdRouter_Init)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            flush_rx_log (Thumb, 162 bytes, Stack size 24 bytes, cmd_router.o(i.flush_rx_log)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 216
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = flush_rx_log ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   MultiUART_GetPortName -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   UART2_Print_Send -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   UART2_Print_String -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   UART2_Print_Printf -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   __2snprintf -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   CmdRouter_Task +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              init_modules (Thumb, 46 bytes, Stack size 0 bytes, debug_log.o(i.init_modules)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   DebugLog_Init +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   is_module_enabled
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              init_modules (Thumb, 46 bytes, Stack size 0 bytes, debug_log.o(i.init_modules)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   DebugLog_Init -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   is_module_enabled -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              - -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              is_module_enabled (Thumb, 72 bytes, Stack size 16 bytes, debug_log.o(i.is_module_enabled)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              is_module_enabled (Thumb, 72 bytes, Stack size 16 bytes, debug_log.o(i.is_module_enabled))

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • Max Depth = 28
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • Call Chain = is_module_enabled ⇒ strncmp
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   init_modules -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   strncmp +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   init_modules +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   strncmp
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   DebugLog_Output +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   DebugLog_Output
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  rx_ring_init (Thumb, 16 bytes, Stack size 0 bytes, multi_uart_router.o(i.rx_ring_init)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   MultiUART_Init +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    rx_ring_init (Thumb, 16 bytes, Stack size 0 bytes, multi_uart_router.o(i.rx_ring_init)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   MultiUART_Init
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    rx_ring_push (Thumb, 70 bytes, Stack size 8 bytes, multi_uart_router.o(i.rx_ring_push)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • Call Chain = rx_ring_push -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   MultiUART_FeedByte -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    - -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    tx_kickoff (Thumb, 98 bytes, Stack size 24 bytes, multi_uart_router.o(i.tx_kickoff)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    tx_kickoff (Thumb, 98 bytes, Stack size 24 bytes, multi_uart_router.o(i.tx_kickoff))

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • Max Depth = 32
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • Call Chain = tx_kickoff ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_UART_Transmit_IT +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   MultiUART_Task -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   MultiUART_Send +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   MultiUART_Task +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   MultiUART_Send
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        tx_ring_init (Thumb, 22 bytes, Stack size 0 bytes, multi_uart_router.o(i.tx_ring_init)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   MultiUART_Init +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          tx_ring_init (Thumb, 22 bytes, Stack size 0 bytes, multi_uart_router.o(i.tx_ring_init)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   MultiUART_Init
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          tx_ring_push (Thumb, 94 bytes, Stack size 16 bytes, multi_uart_router.o(i.tx_ring_push)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          tx_ring_push (Thumb, 94 bytes, Stack size 16 bytes, multi_uart_router.o(i.tx_ring_push))

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Max Depth = 16
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • Call Chain = tx_ring_push
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   MultiUART_Send +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   MultiUART_Send
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            RCC_Delay (Thumb, 36 bytes, Stack size 8 bytes, stm32f1xx_hal_rcc.o(i.RCC_Delay)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            SPI_EndRxTransaction (Thumb, 120 bytes, Stack size 24 bytes, stm32f1xx_hal_spi.o(i.SPI_EndRxTransaction)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 64
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = SPI_EndRxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_SPI_Receive +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            SPI_EndRxTxTransaction (Thumb, 40 bytes, Stack size 24 bytes, stm32f1xx_hal_spi.o(i.SPI_EndRxTxTransaction)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 64
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_SPI_TransmitReceive +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_SPI_Transmit +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            SPI_WaitFlagStateUntilTimeout (Thumb, 210 bytes, Stack size 40 bytes, stm32f1xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 40
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_GetTick +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   SPI_EndRxTxTransaction +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   SPI_EndRxTransaction +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            RCC_Delay (Thumb, 36 bytes, Stack size 8 bytes, stm32f1xx_hal_rcc.o(i.RCC_Delay))

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = RCC_Delay
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_RCC_OscConfig +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_RCC_OscConfig
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              __NVIC_GetPriorityGrouping (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_NVIC_SetPriority +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                __NVIC_GetPriorityGrouping (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_NVIC_SetPriority
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                __NVIC_SetPriority (Thumb, 32 bytes, Stack size 8 bytes, stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                __NVIC_SetPriority (Thumb, 32 bytes, Stack size 8 bytes, stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority))

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • Max Depth = 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • Call Chain = __NVIC_SetPriority
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_NVIC_SetPriority -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_SYSTICK_Config +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_NVIC_SetPriority +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_SYSTICK_Config
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  UART_DMAAbortOnError (Thumb, 20 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • Max Depth = 16
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • Call Chain = UART_DMAAbortOnError +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    TIM_ITRx_SetConfig (Thumb, 18 bytes, Stack size 0 bytes, stm32f1xx_hal_tim.o(i.TIM_ITRx_SetConfig)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_TIM_ConfigClockSource
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_UART_ErrorCallback + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      TIM_TI1_ConfigInputStage (Thumb, 38 bytes, Stack size 12 bytes, stm32f1xx_hal_tim.o(i.TIM_TI1_ConfigInputStage)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 12
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = TIM_TI1_ConfigInputStage +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_TIM_ConfigClockSource +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      TIM_TI2_ConfigInputStage (Thumb, 40 bytes, Stack size 12 bytes, stm32f1xx_hal_tim.o(i.TIM_TI2_ConfigInputStage)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 12
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = TIM_TI2_ConfigInputStage +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_TIM_ConfigClockSource +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      UART_DMAAbortOnError (Thumb, 20 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 56
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = UART_DMAAbortOnError ⇒ HAL_UART_ErrorCallback ⇒ HAL_UART_Receive_IT ⇒ UART_Start_Receive_IT +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_UART_ErrorCallback

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      UART_EndRxTransfer (Thumb, 108 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.UART_EndRxTransfer)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_UART_IRQHandler +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        UART_EndRxTransfer (Thumb, 108 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.UART_EndRxTransfer)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_UART_IRQHandler
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        UART_EndTransmit_IT (Thumb, 32 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        UART_EndTransmit_IT (Thumb, 32 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT))

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • Max Depth = 64
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • Call Chain = UART_EndTransmit_IT ⇒ HAL_UART_TxCpltCallback ⇒ MultiUART_TxCpltCallback ⇒ UART2_Print_TxCpltCallback ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_UART_TxCpltCallback +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_UART_TxCpltCallback
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_UART_IRQHandler +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_UART_IRQHandler
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            UART_Receive_IT (Thumb, 252 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(i.UART_Receive_IT)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 248
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ MultiUART_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              UART_Receive_IT (Thumb, 252 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(i.UART_Receive_IT)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • Max Depth = 56
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • Call Chain = UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ HAL_UART_Receive_IT ⇒ UART_Start_Receive_IT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_UART_RxCpltCallback -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   HAL_UARTEx_RxEventCallback +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_UART_RxCpltCallback +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_UARTEx_RxEventCallback
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   HAL_UART_IRQHandler +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_UART_IRQHandler
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  UART_SetConfig (Thumb, 248 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.UART_SetConfig)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  UART_SetConfig (Thumb, 248 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.UART_SetConfig))

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • Max Depth = 20
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • Call Chain = UART_SetConfig ⇒ HAL_RCC_GetPCLK2Freq
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_RCC_GetPCLK2Freq -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   HAL_RCC_GetPCLK1Freq +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_RCC_GetPCLK2Freq +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_RCC_GetPCLK1Freq
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   HAL_UART_Init +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_UART_Init
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      UART_Transmit_IT (Thumb, 96 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.UART_Transmit_IT)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   HAL_UART_IRQHandler +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        UART_Transmit_IT (Thumb, 96 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.UART_Transmit_IT)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_UART_IRQHandler
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        UART_WaitOnFlagUntilTimeout (Thumb, 146 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        UART_WaitOnFlagUntilTimeout (Thumb, 146 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout))

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • Max Depth = 24
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • Call Chain = UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   HAL_GetTick +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_GetTick
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   HAL_UART_Transmit +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   HAL_UART_Transmit
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            rf433_send_config_command (Thumb, 30 bytes, Stack size 8 bytes, rf433.o(i.rf433_send_config_command)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            rf433_send_config_command (Thumb, 30 bytes, Stack size 8 bytes, rf433.o(i.rf433_send_config_command))

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 88
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = rf433_send_config_command ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   rf433_hal_uart_tx +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_hal_uart_tx
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   rf433_set_config +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   rf433_set_config
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                rf433_fifo_clear (Thumb, 16 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_fifo_clear)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   rf433_hal_fifo_clear +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  rf433_fifo_clear (Thumb, 16 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_fifo_clear)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   rf433_hal_fifo_clear
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  rf433_fifo_get_length (Thumb, 20 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_fifo_get_length)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   rf433_hal_fifo_get_length +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    rf433_fifo_get_length (Thumb, 20 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_fifo_get_length)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_hal_fifo_get_length
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    rf433_fifo_read (Thumb, 100 bytes, Stack size 12 bytes, rf433_hal.o(i.rf433_fifo_read)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    rf433_fifo_read (Thumb, 100 bytes, Stack size 12 bytes, rf433_hal.o(i.rf433_fifo_read))

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • Max Depth = 12
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • Call Chain = rf433_fifo_read
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   rf433_hal_fifo_read +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   rf433_hal_fifo_read
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      rf433_fifo_write (Thumb, 82 bytes, Stack size 12 bytes, rf433_hal.o(i.rf433_fifo_write)) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Max Depth = 12
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • Call Chain = rf433_fifo_write +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        create_wiz_timer_node (Thumb, 40 bytes, Stack size 16 bytes, wiz_interface.o(i.create_wiz_timer_node)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • Max Depth = 40
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • Call Chain = create_wiz_timer_node ⇒ __2printf
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • >>   rf433_hal_uart_rxcplt_callback +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   malloc +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __2printf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   wiz_add_timer
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _fp_digits (Thumb, 366 bytes, Stack size 64 bytes, printfa.o(i._fp_digits), UNUSED) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Calls]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __aeabi_uldivmod -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __aeabi_dmul -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __aeabi_ddiv -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __aeabi_dadd -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __aeabi_d2ulz -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          • >>   __aeabi_cdrcmple +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            wiz_dhcp_process (Thumb, 162 bytes, Stack size 48 bytes, wiz_interface.o(i.wiz_dhcp_process)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Max Depth = 200
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Call Chain = wiz_dhcp_process ⇒ DHCP_run ⇒ parseDHCPMSG ⇒ recvfrom ⇒ wiz_recv_data ⇒ WIZCHIP_READ_BUF
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • >>   _printf_core +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   wizchip_setnetinfo +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   getSNfromDHCP +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   getIPfromDHCP +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   getGWfromDHCP +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   getDNSfromDHCP +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   WIZCHIP_READ_BUF +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   DHCP_stop +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   DHCP_run +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   DHCP_init +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   wiz_delete_timer +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   wiz_add_timer +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   __2printf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   network_init
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              _printf_core (Thumb, 1704 bytes, Stack size 136 bytes, printfa.o(i._printf_core), UNUSED) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              [Calls]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   __aeabi_uldivmod -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   __aeabi_uidivmod -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   _printf_pre_padding -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   _printf_post_padding -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • >>   _fp_digits +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                _fp_digits (Thumb, 366 bytes, Stack size 64 bytes, printfa.o(i._fp_digits), UNUSED) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                [Calls]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   __aeabi_uldivmod +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   __aeabi_dmul +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   __aeabi_ddiv +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   __aeabi_dadd +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   __aeabi_d2ulz +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   __aeabi_cdrcmple
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   __0vsnprintf -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   __0snprintf -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • >>   __0printf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   _printf_core
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  _printf_post_padding (Thumb, 36 bytes, Stack size 24 bytes, printfa.o(i._printf_post_padding), UNUSED) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • >>   _printf_core +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _printf_core (Thumb, 1704 bytes, Stack size 136 bytes, printfa.o(i._printf_core), UNUSED) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Calls]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   __aeabi_uldivmod +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   __aeabi_uidivmod +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   _printf_pre_padding +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   _printf_post_padding +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   _fp_digits +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   __0vsnprintf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   __0sprintf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   __0snprintf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   __0printf
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    _printf_pre_padding (Thumb, 46 bytes, Stack size 24 bytes, printfa.o(i._printf_pre_padding), UNUSED) -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    • >>   _printf_core +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _printf_post_padding (Thumb, 36 bytes, Stack size 24 bytes, printfa.o(i._printf_post_padding), UNUSED) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   _printf_core
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _snputc (Thumb, 22 bytes, Stack size 0 bytes, printfa.o(i._snputc)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _printf_pre_padding (Thumb, 46 bytes, Stack size 24 bytes, printfa.o(i._printf_pre_padding), UNUSED) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   _printf_core +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _snputc (Thumb, 22 bytes, Stack size 0 bytes, printfa.o(i._snputc))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 2]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • printfa.o(i.__0snprintf)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • printfa.o(i.__0vsnprintf)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _scanf_char_input (Thumb, 12 bytes, Stack size 0 bytes, scanf_char.o(.text)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _sputc (Thumb, 10 bytes, Stack size 0 bytes, printfa.o(i._sputc)) +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • >>   __0sprintf +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • printfa.o(i.__0sprintf) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      _scanf_char_input (Thumb, 12 bytes, Stack size 0 bytes, scanf_char.o(.text))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      • scanf_char.o(.text)

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      diff --git a/MDK-ARM/project/project.lnp b/MDK-ARM/project/project.lnp index b94c085..1a6060e 100644 --- a/MDK-ARM/project/project.lnp +++ b/MDK-ARM/project/project.lnp @@ -18,6 +18,7 @@ "project\multi_uart_router.o" "project\uart3_passthrough.o" "project\uart3_protocol_discriminator.o" +"project\tim.o" "project\stm32f1xx_hal_gpio_ex.o" "project\stm32f1xx_hal_spi.o" "project\stm32f1xx_hal.o" @@ -36,6 +37,15 @@ "project\system_stm32f1xx.o" "project\rf433.o" "project\rf433_hal.o" +"project\wiz_platform.o" +"project\wiz_interface.o" +"project\user_main.o" +"project\loopback.o" +"project\multicast.o" +"project\w5500.o" +"project\socket.o" +"project\wizchip_conf.o" +"project\dhcp.o" --library_type=microlib --strict --scatter "project\project.sct" --summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols --info sizes --info totals --info unused --info veneers diff --git a/MDK-ARM/project/project.map b/MDK-ARM/project/project.map index 9af43ef..1c446de 100644 --- a/MDK-ARM/project/project.map +++ b/MDK-ARM/project/project.map @@ -15,6 +15,7 @@ Section Cross References startup_stm32f103xb.o(RESET) refers to stm32f1xx_it.o(i.DebugMon_Handler) for DebugMon_Handler startup_stm32f103xb.o(RESET) refers to stm32f1xx_it.o(i.PendSV_Handler) for PendSV_Handler startup_stm32f103xb.o(RESET) refers to stm32f1xx_it.o(i.SysTick_Handler) for SysTick_Handler + startup_stm32f103xb.o(RESET) refers to stm32f1xx_it.o(i.TIM2_IRQHandler) for TIM2_IRQHandler startup_stm32f103xb.o(RESET) refers to stm32f1xx_it.o(i.USART1_IRQHandler) for USART1_IRQHandler startup_stm32f103xb.o(RESET) refers to stm32f1xx_it.o(i.USART2_IRQHandler) for USART2_IRQHandler startup_stm32f103xb.o(RESET) refers to stm32f1xx_it.o(i.USART3_IRQHandler) for USART3_IRQHandler @@ -54,6 +55,7 @@ Section Cross References rf433_tx_app.o(i.rf433_tx_app_init) refers to rf433.o(i.rf433_set_config) for rf433_set_config rf433_tx_app.o(i.rf433_tx_app_init) refers to rf433.o(i.rf433_set_work_mode) for rf433_set_work_mode rf433_tx_app.o(i.rf433_tx_app_init) refers to rf433_tx_app.o(.bss) for g_tx_app + rf433_tx_app.o(i.rf433_tx_app_init) refers to rf433.o(.constdata) for rf433_default_config rf433_tx_app.o(i.rf433_tx_app_manual_send) refers to rf433.o(i.rf433_transmit) for rf433_transmit rf433_tx_app.o(i.rf433_tx_app_manual_send) refers to rf433_tx_app.o(i.tx_led_control) for tx_led_control rf433_tx_app.o(i.rf433_tx_app_manual_send) refers to stm32f1xx_hal.o(i.HAL_Delay) for HAL_Delay @@ -70,14 +72,16 @@ Section Cross References rf433_tx_app.o(i.tx_build_packet) refers to printfa.o(i.__0snprintf) for __2snprintf rf433_tx_app.o(i.tx_led_control) refers to gpio.o(i.gpio_led_tx_on) for gpio_led_tx_on rf433_tx_app.o(i.tx_led_control) refers to gpio.o(i.gpio_led_tx_off) for gpio_led_tx_off - main.o(i.HAL_UART_RxCpltCallback) refers to rf433_hal.o(i.rf433_hal_uart_rxcplt_callback) for rf433_hal_uart_rxcplt_callback - main.o(i.HAL_UART_RxCpltCallback) refers to multi_uart_router.o(i.MultiUART_FeedByte) for MultiUART_FeedByte + main.o(i.HAL_UART_ErrorCallback) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) for HAL_UART_Receive_IT + main.o(i.HAL_UART_ErrorCallback) refers to rf433_hal.o(.data) for rf433_uart_rx_tmp + main.o(i.HAL_UART_ErrorCallback) refers to usart.o(.bss) for huart1 + main.o(i.HAL_UART_ErrorCallback) refers to main.o(.data) for uart3_rx_byte main.o(i.HAL_UART_RxCpltCallback) refers to stm32f1xx_hal.o(i.HAL_GetTick) for HAL_GetTick - main.o(i.HAL_UART_RxCpltCallback) refers to cmd_parser.o(i.CmdParser_FeedByte) for CmdParser_FeedByte main.o(i.HAL_UART_RxCpltCallback) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) for HAL_UART_Receive_IT + main.o(i.HAL_UART_RxCpltCallback) refers to main.o(.data) for u1_rx_len main.o(i.HAL_UART_RxCpltCallback) refers to rf433_hal.o(.data) for rf433_uart_rx_tmp - main.o(i.HAL_UART_RxCpltCallback) refers to main.o(.data) for uart2_rx_byte - main.o(i.HAL_UART_RxCpltCallback) refers to usart.o(.bss) for huart2 + main.o(i.HAL_UART_RxCpltCallback) refers to main.o(.bss) for u1_rx_buffer + main.o(i.HAL_UART_RxCpltCallback) refers to usart.o(.bss) for huart1 main.o(i.HAL_UART_TxCpltCallback) refers to multi_uart_router.o(i.MultiUART_TxCpltCallback) for MultiUART_TxCpltCallback main.o(i.HAL_UART_TxCpltCallback) refers to uart2_print.o(i.UART2_Print_TxCpltCallback) for UART2_Print_TxCpltCallback main.o(i.SystemClock_Config) refers to memseta.o(.text) for __aeabi_memclr4 @@ -91,6 +95,8 @@ Section Cross References main.o(i.main) refers to spi.o(i.MX_SPI2_Init) for MX_SPI2_Init main.o(i.main) refers to usart.o(i.MX_USART2_UART_Init) for MX_USART2_UART_Init main.o(i.main) refers to usart.o(i.MX_USART3_UART_Init) for MX_USART3_UART_Init + main.o(i.main) refers to tim.o(i.MX_TIM2_Init) for MX_TIM2_Init + main.o(i.main) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start_IT) for HAL_TIM_Base_Start_IT main.o(i.main) refers to uart2_print.o(i.UART2_Print_Init) for UART2_Print_Init main.o(i.main) refers to io_monitor.o(i.IO_Monitor_Init) for IO_Monitor_Init main.o(i.main) refers to cmd_parser.o(i.CmdParser_Init) for CmdParser_Init @@ -98,23 +104,30 @@ Section Cross References main.o(i.main) refers to multi_uart_router.o(i.MultiUART_Init) for MultiUART_Init main.o(i.main) refers to cmd_router.o(i.CmdRouter_Init) for CmdRouter_Init main.o(i.main) refers to debug_log.o(i.DebugLog_Init) for DebugLog_Init + main.o(i.main) refers to debug_log.o(i.DebugLog_SetLevel) for DebugLog_SetLevel + main.o(i.main) refers to printfa.o(i.__0printf) for __2printf main.o(i.main) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) for HAL_UART_Receive_IT main.o(i.main) refers to rf433.o(i.rf433_init) for rf433_init + main.o(i.main) refers to wiz_interface.o(i.wizchip_initialize) for wizchip_initialize + main.o(i.main) refers to wiz_interface.o(i.network_init) for network_init main.o(i.main) refers to rf433_tx_app.o(i.rf433_tx_app_init) for rf433_tx_app_init main.o(i.main) refers to rf433_tx_app.o(i.rf433_tx_app_start) for rf433_tx_app_start main.o(i.main) refers to rf433_rx_app.o(i.rf433_rx_app_init) for rf433_rx_app_init main.o(i.main) refers to rf433_rx_app.o(i.rf433_rx_app_start) for rf433_rx_app_start - main.o(i.main) refers to printfa.o(i.__0printf) for __2printf - main.o(i.main) refers to uart2_print.o(i.UART2_Print_Task) for UART2_Print_Task - main.o(i.main) refers to io_monitor.o(i.IO_Monitor_Task) for IO_Monitor_Task - main.o(i.main) refers to cmd_parser.o(i.CmdParser_Task) for CmdParser_Task - main.o(i.main) refers to multi_uart_router.o(i.MultiUART_Task) for MultiUART_Task - main.o(i.main) refers to cmd_router.o(i.CmdRouter_Task) for CmdRouter_Task main.o(i.main) refers to rf433_tx_app.o(i.rf433_tx_app_task) for rf433_tx_app_task main.o(i.main) refers to rf433_rx_app.o(i.rf433_rx_app_task) for rf433_rx_app_task + main.o(i.main) refers to loopback.o(i.loopback_udps) for loopback_udps + main.o(i.main) refers to uart2_print.o(i.UART2_Print_Task) for UART2_Print_Task + main.o(i.main) refers to multi_uart_router.o(i.MultiUART_Task) for MultiUART_Task + main.o(i.main) refers to io_monitor.o(i.IO_Monitor_Task) for IO_Monitor_Task + main.o(i.main) refers to stm32f1xx_hal.o(i.HAL_GetTick) for HAL_GetTick + main.o(i.main) refers to multi_uart_router.o(i.MultiUART_Send) for MultiUART_Send + main.o(i.main) refers to tim.o(.bss) for htim2 main.o(i.main) refers to main.o(.data) for uart2_rx_byte main.o(i.main) refers to usart.o(.bss) for huart2 main.o(i.main) refers to rf433_hal.o(.data) for rf433_uart_rx_tmp + main.o(i.main) refers to user_main.o(.data) for default_net_info + main.o(i.main) refers to main.o(.bss) for ethernet_buf main.o(i.main) refers to system_stm32f1xx.o(.data) for SystemCoreClock gpio.o(i.MX_GPIO_Init) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin gpio.o(i.MX_GPIO_Init) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) for HAL_GPIO_Init @@ -146,6 +159,8 @@ Section Cross References usart.o(i.uart1_reconfig) refers to usart.o(.bss) for huart1 stm32f1xx_it.o(i.SysTick_Handler) refers to systick.o(i.systick_interrupt_1ms_callback) for systick_interrupt_1ms_callback stm32f1xx_it.o(i.SysTick_Handler) refers to stm32f1xx_hal.o(i.HAL_IncTick) for HAL_IncTick + stm32f1xx_it.o(i.TIM2_IRQHandler) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_IRQHandler) for HAL_TIM_IRQHandler + stm32f1xx_it.o(i.TIM2_IRQHandler) refers to tim.o(.bss) for htim2 stm32f1xx_it.o(i.USART1_IRQHandler) refers to stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) for HAL_UART_IRQHandler stm32f1xx_it.o(i.USART1_IRQHandler) refers to usart.o(.bss) for huart1 stm32f1xx_it.o(i.USART2_IRQHandler) refers to stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) for HAL_UART_IRQHandler @@ -153,7 +168,6 @@ Section Cross References stm32f1xx_it.o(i.USART3_IRQHandler) refers to stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) for HAL_UART_IRQHandler stm32f1xx_it.o(i.USART3_IRQHandler) refers to usart.o(.bss) for huart3 cmd_parser.o(i.CmdParser_Acknowledge) refers to cmd_parser.o(i.reset_parser) for reset_parser - cmd_parser.o(i.CmdParser_FeedByte) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf cmd_parser.o(i.CmdParser_FeedByte) refers to cmd_parser.o(i.reset_parser) for reset_parser cmd_parser.o(i.CmdParser_FeedByte) refers to cmd_parser.o(i.is_valid_cmd_char) for is_valid_cmd_char cmd_parser.o(i.CmdParser_FeedByte) refers to cmd_parser.o(i.is_valid_param_char) for is_valid_param_char @@ -165,7 +179,6 @@ Section Cross References cmd_parser.o(i.CmdParser_HasCompleteFrame) refers to memcpya.o(.text) for __aeabi_memcpy cmd_parser.o(i.CmdParser_HasCompleteFrame) refers to cmd_parser.o(.bss) for ctx cmd_parser.o(i.CmdParser_Init) refers to memseta.o(.text) for __aeabi_memclr4 - cmd_parser.o(i.CmdParser_Init) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf cmd_parser.o(i.CmdParser_Init) refers to cmd_parser.o(.bss) for ctx cmd_parser.o(i.CmdParser_SetResponseCallback) refers to cmd_parser.o(.data) for g_response_callback cmd_parser.o(i.CmdParser_SetSourcePort) refers to cmd_parser.o(.data) for g_current_source_port @@ -177,7 +190,6 @@ Section Cross References cmd_parser.o(i.is_str_numeric) refers to ctype_o.o(.text) for __rt_ctype_table cmd_parser.o(i.is_valid_cmd_char) refers to ctype_o.o(.text) for __rt_ctype_table cmd_parser.o(i.is_valid_param_char) refers to ctype_o.o(.text) for __rt_ctype_table - cmd_parser.o(i.process_cmd_frame) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf cmd_parser.o(i.process_cmd_frame) refers to strcmp.o(.text) for strcmp cmd_parser.o(i.process_cmd_frame) refers to cmd_parser.o(i.is_str_numeric) for is_str_numeric cmd_parser.o(i.process_cmd_frame) refers to cmd_parser.o(i.send_response_err) for send_response_err @@ -245,15 +257,13 @@ Section Cross References uart2_print.o(i.UART2_Print_TxCpltCallback) refers to uart2_print.o(.bss) for tx_ring uart2_print.o(i.UART2_Print_TxCpltCallback) refers to usart.o(.bss) for huart2 uart2_print.o(i.fputc) refers to uart2_print.o(i.UART2_Print_Send) for UART2_Print_Send + uart2_print.o(i.fputc) refers to multi_uart_router.o(i.MultiUART_Send) for MultiUART_Send cmd_router.o(i.CmdRouter_BroadcastResponse) refers to multi_uart_router.o(i.MultiUART_Send) for MultiUART_Send cmd_router.o(i.CmdRouter_BroadcastResponse) refers to debug_log.o(i.DebugLog_Output) for DebugLog_Output cmd_router.o(i.CmdRouter_BroadcastResponse) refers to cmd_router.o(.data) for g_routed_count cmd_router.o(i.CmdRouter_GetProcessedCount) refers to cmd_router.o(.data) for g_processed_count cmd_router.o(i.CmdRouter_GetRoutedCount) refers to cmd_router.o(.data) for g_routed_count cmd_router.o(i.CmdRouter_Init) refers to cmd_parser.o(i.CmdParser_SetResponseCallback) for CmdParser_SetResponseCallback - cmd_router.o(i.CmdRouter_Init) refers to uart3_protocol_discriminator.o(i.UART3_Protocol_Init) for UART3_Protocol_Init - cmd_router.o(i.CmdRouter_Init) refers to uart3_passthrough.o(i.Passthrough_Init) for Passthrough_Init - cmd_router.o(i.CmdRouter_Init) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf cmd_router.o(i.CmdRouter_Init) refers to cmd_router.o(.bss) for g_port_states cmd_router.o(i.CmdRouter_Init) refers to cmd_router.o(.data) for g_rx_log_len cmd_router.o(i.CmdRouter_Init) refers to cmd_router.o(i.cmd_parser_response_callback) for cmd_parser_response_callback @@ -261,7 +271,6 @@ Section Cross References cmd_router.o(i.CmdRouter_SendResponse) refers to multi_uart_router.o(i.MultiUART_GetPortName) for MultiUART_GetPortName cmd_router.o(i.CmdRouter_SendResponse) refers to debug_log.o(i.DebugLog_Output) for DebugLog_Output cmd_router.o(i.CmdRouter_SendResponse) refers to cmd_router.o(.data) for g_routed_count - cmd_router.o(i.CmdRouter_SetResponseHandler) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf cmd_router.o(i.CmdRouter_SetResponseHandler) refers to cmd_router.o(.data) for g_response_handler cmd_router.o(i.CmdRouter_Task) refers to stm32f1xx_hal.o(i.HAL_GetTick) for HAL_GetTick cmd_router.o(i.CmdRouter_Task) refers to multi_uart_router.o(i.MultiUART_GetRxCount) for MultiUART_GetRxCount @@ -271,13 +280,6 @@ Section Cross References cmd_router.o(i.CmdRouter_Task) refers to multi_uart_router.o(i.MultiUART_ReadByte) for MultiUART_ReadByte cmd_router.o(i.CmdRouter_Task) refers to cmd_parser.o(i.CmdParser_HasCompleteFrame) for CmdParser_HasCompleteFrame cmd_router.o(i.CmdRouter_Task) refers to cmd_router.o(i.flush_rx_log) for flush_rx_log - cmd_router.o(i.CmdRouter_Task) refers to uart3_protocol_discriminator.o(i.UART3_Protocol_FeedByte) for UART3_Protocol_FeedByte - cmd_router.o(i.CmdRouter_Task) refers to debug_log.o(i.DebugLog_Output) for DebugLog_Output - cmd_router.o(i.CmdRouter_Task) refers to uart3_passthrough.o(i.Passthrough_PushByte) for Passthrough_PushByte - cmd_router.o(i.CmdRouter_Task) refers to uart3_protocol_discriminator.o(i.UART3_Protocol_CheckTimeout) for UART3_Protocol_CheckTimeout - cmd_router.o(i.CmdRouter_Task) refers to uart3_protocol_discriminator.o(i.UART3_Protocol_GetPassthroughData) for UART3_Protocol_GetPassthroughData - cmd_router.o(i.CmdRouter_Task) refers to uart3_passthrough.o(i.Passthrough_PushBuffer) for Passthrough_PushBuffer - cmd_router.o(i.CmdRouter_Task) refers to uart3_passthrough.o(i.Passthrough_Task) for Passthrough_Task cmd_router.o(i.CmdRouter_Task) refers to cmd_parser.o(i.CmdParser_Task) for CmdParser_Task cmd_router.o(i.CmdRouter_Task) refers to cmd_router.o(.data) for g_current_parsing_port cmd_router.o(i.CmdRouter_Task) refers to cmd_router.o(.bss) for g_port_states @@ -308,6 +310,7 @@ Section Cross References debug_log.o(i.DebugLog_Output) refers to printfa.o(i.__0snprintf) for __2snprintf debug_log.o(i.DebugLog_Output) refers to printfa.o(i.__0vsnprintf) for vsnprintf debug_log.o(i.DebugLog_Output) refers to uart2_print.o(i.UART2_Print_Send) for UART2_Print_Send + debug_log.o(i.DebugLog_Output) refers to multi_uart_router.o(i.MultiUART_Send) for MultiUART_Send debug_log.o(i.DebugLog_Output) refers to debug_log.o(.data) for g_current_level debug_log.o(i.DebugLog_Output) refers to debug_log.o(.constdata) for g_level_str debug_log.o(i.DebugLog_SetLevel) refers to debug_log.o(.data) for g_current_level @@ -318,7 +321,6 @@ Section Cross References debug_log.o(i.is_module_enabled) refers to debug_log.o(.bss) for g_modules debug_log.o(.constdata) refers to debug_log.o(.conststring) for .conststring multi_uart_router.o(i.MultiUART_FeedByte) refers to multi_uart_router.o(i.rx_ring_push) for rx_ring_push - multi_uart_router.o(i.MultiUART_FeedByte) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf multi_uart_router.o(i.MultiUART_FeedByte) refers to multi_uart_router.o(.bss) for g_port_ctx multi_uart_router.o(i.MultiUART_GetOverflowCount) refers to multi_uart_router.o(.bss) for g_port_ctx multi_uart_router.o(i.MultiUART_GetPortName) refers to multi_uart_router.o(.constdata) for g_port_name_map @@ -326,7 +328,6 @@ Section Cross References multi_uart_router.o(i.MultiUART_GetTxAvailable) refers to multi_uart_router.o(.bss) for g_port_ctx multi_uart_router.o(i.MultiUART_Init) refers to multi_uart_router.o(i.rx_ring_init) for rx_ring_init multi_uart_router.o(i.MultiUART_Init) refers to multi_uart_router.o(i.tx_ring_init) for tx_ring_init - multi_uart_router.o(i.MultiUART_Init) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf multi_uart_router.o(i.MultiUART_Init) refers to multi_uart_router.o(.bss) for g_port_ctx multi_uart_router.o(i.MultiUART_Init) refers to multi_uart_router.o(.constdata) for g_port_uart_map multi_uart_router.o(i.MultiUART_ReadByte) refers to multi_uart_router.o(.bss) for g_port_ctx @@ -379,6 +380,14 @@ Section Cross References uart3_protocol_discriminator.o(i.UART3_Protocol_Reset) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf uart3_protocol_discriminator.o(i.UART3_Protocol_Reset) refers to uart3_protocol_discriminator.o(.bss) for g_uart3_proto_ctx uart3_protocol_discriminator.o(i.check_scan_timeout) refers to uart3_protocol_discriminator.o(.bss) for g_uart3_proto_ctx + tim.o(i.HAL_TIM_Base_MspDeInit) refers to stm32f1xx_hal_cortex.o(i.HAL_NVIC_DisableIRQ) for HAL_NVIC_DisableIRQ + tim.o(i.HAL_TIM_Base_MspInit) refers to stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) for HAL_NVIC_SetPriority + tim.o(i.HAL_TIM_Base_MspInit) refers to stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) for HAL_NVIC_EnableIRQ + tim.o(i.MX_TIM2_Init) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Init) for HAL_TIM_Base_Init + tim.o(i.MX_TIM2_Init) refers to main.o(i.Error_Handler) for Error_Handler + tim.o(i.MX_TIM2_Init) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) for HAL_TIM_ConfigClockSource + tim.o(i.MX_TIM2_Init) refers to stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization) for HAL_TIMEx_MasterConfigSynchronization + tim.o(i.MX_TIM2_Init) refers to tim.o(.bss) for htim2 stm32f1xx_hal_spi.o(i.HAL_SPI_Abort) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) for HAL_DMA_Abort stm32f1xx_hal_spi.o(i.HAL_SPI_Abort) refers to system_stm32f1xx.o(.data) for SystemCoreClock stm32f1xx_hal_spi.o(i.HAL_SPI_Abort) refers to stm32f1xx_hal_spi.o(i.SPI_AbortTx_ISR) for SPI_AbortTx_ISR @@ -582,6 +591,196 @@ Section Cross References stm32f1xx_hal_flash_ex.o(i.HAL_FLASHEx_OBProgram) refers to stm32f1xx_hal_flash_ex.o(i.FLASH_OB_UserConfig) for FLASH_OB_UserConfig stm32f1xx_hal_flash_ex.o(i.HAL_FLASHEx_OBProgram) refers to stm32f1xx_hal_flash_ex.o(i.FLASH_OB_ProgramData) for FLASH_OB_ProgramData stm32f1xx_hal_flash_ex.o(i.HAL_FLASHEx_OBProgram) refers to stm32f1xx_hal_flash.o(.bss) for pFlash + stm32f1xx_hal_tim.o(i.HAL_TIM_Base_DeInit) refers to tim.o(i.HAL_TIM_Base_MspDeInit) for HAL_TIM_Base_MspDeInit + stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Init) refers to tim.o(i.HAL_TIM_Base_MspInit) for HAL_TIM_Base_MspInit + stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Init) refers to stm32f1xx_hal_tim.o(i.TIM_Base_SetConfig) for TIM_Base_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start_DMA) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Start_IT) for HAL_DMA_Start_IT + stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMAPeriodElapsedCplt) for TIM_DMAPeriodElapsedCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMAPeriodElapsedHalfCplt) for TIM_DMAPeriodElapsedHalfCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMAError) for TIM_DMAError + stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Stop_DMA) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) for HAL_DMA_Abort_IT + stm32f1xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) refers to stm32f1xx_hal_tim.o(i.TIM_ETR_SetConfig) for TIM_ETR_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) refers to stm32f1xx_hal_tim.o(i.TIM_TI1_ConfigInputStage) for TIM_TI1_ConfigInputStage + stm32f1xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) refers to stm32f1xx_hal_tim.o(i.TIM_ITRx_SetConfig) for TIM_ITRx_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) refers to stm32f1xx_hal_tim.o(i.TIM_TI2_ConfigInputStage) for TIM_TI2_ConfigInputStage + stm32f1xx_hal_tim.o(i.HAL_TIM_ConfigOCrefClear) refers to stm32f1xx_hal_tim.o(i.TIM_ETR_SetConfig) for TIM_ETR_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiReadStart) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Start_IT) for HAL_DMA_Start_IT + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiReadStart) refers to stm32f1xx_hal_tim.o(i.TIM_DMAPeriodElapsedCplt) for TIM_DMAPeriodElapsedCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiReadStart) refers to stm32f1xx_hal_tim.o(i.TIM_DMAPeriodElapsedHalfCplt) for TIM_DMAPeriodElapsedHalfCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiReadStart) refers to stm32f1xx_hal_tim.o(i.TIM_DMAError) for TIM_DMAError + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiReadStart) refers to stm32f1xx_hal_tim.o(i.TIM_DMACaptureCplt) for TIM_DMACaptureCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiReadStart) refers to stm32f1xx_hal_tim.o(i.TIM_DMACaptureHalfCplt) for TIM_DMACaptureHalfCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiReadStart) refers to stm32f1xx_hal_tim_ex.o(i.TIMEx_DMACommutationCplt) for TIMEx_DMACommutationCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiReadStart) refers to stm32f1xx_hal_tim_ex.o(i.TIMEx_DMACommutationHalfCplt) for TIMEx_DMACommutationHalfCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiReadStart) refers to stm32f1xx_hal_tim.o(i.TIM_DMATriggerCplt) for TIM_DMATriggerCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiReadStart) refers to stm32f1xx_hal_tim.o(i.TIM_DMATriggerHalfCplt) for TIM_DMATriggerHalfCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiWriteStart) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Start_IT) for HAL_DMA_Start_IT + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiWriteStart) refers to stm32f1xx_hal_tim.o(i.TIM_DMAPeriodElapsedCplt) for TIM_DMAPeriodElapsedCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiWriteStart) refers to stm32f1xx_hal_tim.o(i.TIM_DMAPeriodElapsedHalfCplt) for TIM_DMAPeriodElapsedHalfCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiWriteStart) refers to stm32f1xx_hal_tim.o(i.TIM_DMAError) for TIM_DMAError + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiWriteStart) refers to stm32f1xx_hal_tim.o(i.TIM_DMADelayPulseCplt) for TIM_DMADelayPulseCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiWriteStart) refers to stm32f1xx_hal_tim.o(i.TIM_DMADelayPulseHalfCplt) for TIM_DMADelayPulseHalfCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiWriteStart) refers to stm32f1xx_hal_tim_ex.o(i.TIMEx_DMACommutationCplt) for TIMEx_DMACommutationCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiWriteStart) refers to stm32f1xx_hal_tim_ex.o(i.TIMEx_DMACommutationHalfCplt) for TIMEx_DMACommutationHalfCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiWriteStart) refers to stm32f1xx_hal_tim.o(i.TIM_DMATriggerCplt) for TIM_DMATriggerCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiWriteStart) refers to stm32f1xx_hal_tim.o(i.TIM_DMATriggerHalfCplt) for TIM_DMATriggerHalfCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_ReadStart) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiReadStart) for HAL_TIM_DMABurst_MultiReadStart + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_ReadStop) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) for HAL_DMA_Abort_IT + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_WriteStart) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiWriteStart) for HAL_TIM_DMABurst_MultiWriteStart + stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_WriteStop) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) for HAL_DMA_Abort_IT + stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_DeInit) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_MspDeInit) for HAL_TIM_Encoder_MspDeInit + stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Init) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_MspInit) for HAL_TIM_Encoder_MspInit + stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Init) refers to stm32f1xx_hal_tim.o(i.TIM_Base_SetConfig) for TIM_Base_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Start) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Start_DMA) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Start_IT) for HAL_DMA_Start_IT + stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMACaptureCplt) for TIM_DMACaptureCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMACaptureHalfCplt) for TIM_DMACaptureHalfCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMAError) for TIM_DMAError + stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Start_IT) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Stop) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Stop_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Stop_DMA) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) for HAL_DMA_Abort_IT + stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Stop_IT) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_ConfigChannel) refers to stm32f1xx_hal_tim.o(i.TIM_TI1_SetConfig) for TIM_TI1_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_ConfigChannel) refers to stm32f1xx_hal_tim.o(i.TIM_TI2_SetConfig) for TIM_TI2_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_ConfigChannel) refers to stm32f1xx_hal_tim.o(i.TIM_TI3_SetConfig) for TIM_TI3_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_ConfigChannel) refers to stm32f1xx_hal_tim.o(i.TIM_TI4_SetConfig) for TIM_TI4_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_DeInit) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_IC_MspDeInit) for HAL_TIM_IC_MspDeInit + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Init) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_IC_MspInit) for HAL_TIM_IC_MspInit + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Init) refers to stm32f1xx_hal_tim.o(i.TIM_Base_SetConfig) for TIM_Base_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Start) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Start_DMA) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Start_IT) for HAL_DMA_Start_IT + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMACaptureCplt) for TIM_DMACaptureCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMACaptureHalfCplt) for TIM_DMACaptureHalfCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMAError) for TIM_DMAError + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Start_IT) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Stop) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Stop_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Stop_DMA) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) for HAL_DMA_Abort_IT + stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Stop_IT) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_IRQHandler) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_IC_CaptureCallback) for HAL_TIM_IC_CaptureCallback + stm32f1xx_hal_tim.o(i.HAL_TIM_IRQHandler) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_OC_DelayElapsedCallback) for HAL_TIM_OC_DelayElapsedCallback + stm32f1xx_hal_tim.o(i.HAL_TIM_IRQHandler) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_PulseFinishedCallback) for HAL_TIM_PWM_PulseFinishedCallback + stm32f1xx_hal_tim.o(i.HAL_TIM_IRQHandler) refers to wiz_platform.o(i.HAL_TIM_PeriodElapsedCallback) for HAL_TIM_PeriodElapsedCallback + stm32f1xx_hal_tim.o(i.HAL_TIM_IRQHandler) refers to stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_BreakCallback) for HAL_TIMEx_BreakCallback + stm32f1xx_hal_tim.o(i.HAL_TIM_IRQHandler) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_TriggerCallback) for HAL_TIM_TriggerCallback + stm32f1xx_hal_tim.o(i.HAL_TIM_IRQHandler) refers to stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_CommutCallback) for HAL_TIMEx_CommutCallback + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_ConfigChannel) refers to stm32f1xx_hal_tim.o(i.TIM_OC1_SetConfig) for TIM_OC1_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_ConfigChannel) refers to stm32f1xx_hal_tim.o(i.TIM_OC2_SetConfig) for TIM_OC2_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_ConfigChannel) refers to stm32f1xx_hal_tim.o(i.TIM_OC3_SetConfig) for TIM_OC3_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_ConfigChannel) refers to stm32f1xx_hal_tim.o(i.TIM_OC4_SetConfig) for TIM_OC4_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_DeInit) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_OC_MspDeInit) for HAL_TIM_OC_MspDeInit + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Init) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_OC_MspInit) for HAL_TIM_OC_MspInit + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Init) refers to stm32f1xx_hal_tim.o(i.TIM_Base_SetConfig) for TIM_Base_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Start) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Start_DMA) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Start_IT) for HAL_DMA_Start_IT + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMADelayPulseCplt) for TIM_DMADelayPulseCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMADelayPulseHalfCplt) for TIM_DMADelayPulseHalfCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMAError) for TIM_DMAError + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Start_IT) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Stop) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Stop_DMA) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) for HAL_DMA_Abort_IT + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Stop_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Stop_IT) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_ConfigChannel) refers to stm32f1xx_hal_tim.o(i.TIM_OC1_SetConfig) for TIM_OC1_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_ConfigChannel) refers to stm32f1xx_hal_tim.o(i.TIM_OC2_SetConfig) for TIM_OC2_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_ConfigChannel) refers to stm32f1xx_hal_tim.o(i.TIM_TI1_SetConfig) for TIM_TI1_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_ConfigChannel) refers to stm32f1xx_hal_tim.o(i.TIM_TI2_SetConfig) for TIM_TI2_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_DeInit) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_MspDeInit) for HAL_TIM_OnePulse_MspDeInit + stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_Init) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_MspInit) for HAL_TIM_OnePulse_MspInit + stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_Init) refers to stm32f1xx_hal_tim.o(i.TIM_Base_SetConfig) for TIM_Base_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_Start) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_Start_IT) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_Stop) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_Stop_IT) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_ConfigChannel) refers to stm32f1xx_hal_tim.o(i.TIM_OC1_SetConfig) for TIM_OC1_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_ConfigChannel) refers to stm32f1xx_hal_tim.o(i.TIM_OC2_SetConfig) for TIM_OC2_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_ConfigChannel) refers to stm32f1xx_hal_tim.o(i.TIM_OC3_SetConfig) for TIM_OC3_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_ConfigChannel) refers to stm32f1xx_hal_tim.o(i.TIM_OC4_SetConfig) for TIM_OC4_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_DeInit) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_MspDeInit) for HAL_TIM_PWM_MspDeInit + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Init) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_MspInit) for HAL_TIM_PWM_MspInit + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Init) refers to stm32f1xx_hal_tim.o(i.TIM_Base_SetConfig) for TIM_Base_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Start) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Start_DMA) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Start_IT) for HAL_DMA_Start_IT + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMADelayPulseCplt) for TIM_DMADelayPulseCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMADelayPulseHalfCplt) for TIM_DMADelayPulseHalfCplt + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMAError) for TIM_DMAError + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Start_IT) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Stop) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Stop_DMA) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) for HAL_DMA_Abort_IT + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Stop_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Stop_IT) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim.o(i.HAL_TIM_SlaveConfigSynchro) refers to stm32f1xx_hal_tim.o(i.TIM_SlaveTimer_SetConfig) for TIM_SlaveTimer_SetConfig + stm32f1xx_hal_tim.o(i.HAL_TIM_SlaveConfigSynchro_IT) refers to stm32f1xx_hal_tim.o(i.TIM_SlaveTimer_SetConfig) for TIM_SlaveTimer_SetConfig + stm32f1xx_hal_tim.o(i.TIM_DMACaptureCplt) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_IC_CaptureCallback) for HAL_TIM_IC_CaptureCallback + stm32f1xx_hal_tim.o(i.TIM_DMACaptureHalfCplt) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_IC_CaptureHalfCpltCallback) for HAL_TIM_IC_CaptureHalfCpltCallback + stm32f1xx_hal_tim.o(i.TIM_DMADelayPulseCplt) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_PulseFinishedCallback) for HAL_TIM_PWM_PulseFinishedCallback + stm32f1xx_hal_tim.o(i.TIM_DMADelayPulseHalfCplt) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_PulseFinishedHalfCpltCallback) for HAL_TIM_PWM_PulseFinishedHalfCpltCallback + stm32f1xx_hal_tim.o(i.TIM_DMAError) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_ErrorCallback) for HAL_TIM_ErrorCallback + stm32f1xx_hal_tim.o(i.TIM_DMAPeriodElapsedCplt) refers to wiz_platform.o(i.HAL_TIM_PeriodElapsedCallback) for HAL_TIM_PeriodElapsedCallback + stm32f1xx_hal_tim.o(i.TIM_DMAPeriodElapsedHalfCplt) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_PeriodElapsedHalfCpltCallback) for HAL_TIM_PeriodElapsedHalfCpltCallback + stm32f1xx_hal_tim.o(i.TIM_DMATriggerCplt) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_TriggerCallback) for HAL_TIM_TriggerCallback + stm32f1xx_hal_tim.o(i.TIM_DMATriggerHalfCplt) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_TriggerHalfCpltCallback) for HAL_TIM_TriggerHalfCpltCallback + stm32f1xx_hal_tim.o(i.TIM_SlaveTimer_SetConfig) refers to stm32f1xx_hal_tim.o(i.TIM_ETR_SetConfig) for TIM_ETR_SetConfig + stm32f1xx_hal_tim.o(i.TIM_SlaveTimer_SetConfig) refers to stm32f1xx_hal_tim.o(i.TIM_TI1_ConfigInputStage) for TIM_TI1_ConfigInputStage + stm32f1xx_hal_tim.o(i.TIM_SlaveTimer_SetConfig) refers to stm32f1xx_hal_tim.o(i.TIM_TI2_ConfigInputStage) for TIM_TI2_ConfigInputStage + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_ConfigCommutEvent_DMA) refers to stm32f1xx_hal_tim_ex.o(i.TIMEx_DMACommutationCplt) for TIMEx_DMACommutationCplt + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_ConfigCommutEvent_DMA) refers to stm32f1xx_hal_tim_ex.o(i.TIMEx_DMACommutationHalfCplt) for TIMEx_DMACommutationHalfCplt + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_ConfigCommutEvent_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMAError) for TIM_DMAError + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_DeInit) refers to stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_MspDeInit) for HAL_TIMEx_HallSensor_MspDeInit + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Init) refers to stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_MspInit) for HAL_TIMEx_HallSensor_MspInit + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Init) refers to stm32f1xx_hal_tim.o(i.TIM_Base_SetConfig) for TIM_Base_SetConfig + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Init) refers to stm32f1xx_hal_tim.o(i.TIM_TI1_SetConfig) for TIM_TI1_SetConfig + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Init) refers to stm32f1xx_hal_tim.o(i.TIM_OC2_SetConfig) for TIM_OC2_SetConfig + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Start) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Start_DMA) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Start_IT) for HAL_DMA_Start_IT + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMACaptureCplt) for TIM_DMACaptureCplt + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMACaptureHalfCplt) for TIM_DMACaptureHalfCplt + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMAError) for TIM_DMAError + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Start_IT) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Stop) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Stop_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Stop_DMA) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) for HAL_DMA_Abort_IT + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Stop_IT) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OCN_Start) refers to stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd) for TIM_CCxNChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OCN_Start_DMA) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Start_IT) for HAL_DMA_Start_IT + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OCN_Start_DMA) refers to stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd) for TIM_CCxNChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OCN_Start_DMA) refers to stm32f1xx_hal_tim_ex.o(i.TIM_DMADelayPulseNCplt) for TIM_DMADelayPulseNCplt + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OCN_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMADelayPulseHalfCplt) for TIM_DMADelayPulseHalfCplt + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OCN_Start_DMA) refers to stm32f1xx_hal_tim_ex.o(i.TIM_DMAErrorCCxN) for TIM_DMAErrorCCxN + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OCN_Start_IT) refers to stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd) for TIM_CCxNChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OCN_Stop) refers to stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd) for TIM_CCxNChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OCN_Stop_DMA) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) for HAL_DMA_Abort_IT + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OCN_Stop_DMA) refers to stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd) for TIM_CCxNChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OCN_Stop_IT) refers to stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd) for TIM_CCxNChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OnePulseN_Start) refers to stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd) for TIM_CCxNChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OnePulseN_Start) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OnePulseN_Start_IT) refers to stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd) for TIM_CCxNChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OnePulseN_Start_IT) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OnePulseN_Stop) refers to stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd) for TIM_CCxNChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OnePulseN_Stop) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OnePulseN_Stop_IT) refers to stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd) for TIM_CCxNChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OnePulseN_Stop_IT) refers to stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) for TIM_CCxChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Start) refers to stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd) for TIM_CCxNChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Start_DMA) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Start_IT) for HAL_DMA_Start_IT + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Start_DMA) refers to stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd) for TIM_CCxNChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Start_DMA) refers to stm32f1xx_hal_tim_ex.o(i.TIM_DMADelayPulseNCplt) for TIM_DMADelayPulseNCplt + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Start_DMA) refers to stm32f1xx_hal_tim.o(i.TIM_DMADelayPulseHalfCplt) for TIM_DMADelayPulseHalfCplt + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Start_DMA) refers to stm32f1xx_hal_tim_ex.o(i.TIM_DMAErrorCCxN) for TIM_DMAErrorCCxN + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Start_IT) refers to stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd) for TIM_CCxNChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Stop) refers to stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd) for TIM_CCxNChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Stop_DMA) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) for HAL_DMA_Abort_IT + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Stop_DMA) refers to stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd) for TIM_CCxNChannelCmd + stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Stop_IT) refers to stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd) for TIM_CCxNChannelCmd + stm32f1xx_hal_tim_ex.o(i.TIMEx_DMACommutationCplt) refers to stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_CommutCallback) for HAL_TIMEx_CommutCallback + stm32f1xx_hal_tim_ex.o(i.TIMEx_DMACommutationHalfCplt) refers to stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_CommutHalfCpltCallback) for HAL_TIMEx_CommutHalfCpltCallback + stm32f1xx_hal_tim_ex.o(i.TIM_DMADelayPulseNCplt) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_PulseFinishedCallback) for HAL_TIM_PWM_PulseFinishedCallback + stm32f1xx_hal_tim_ex.o(i.TIM_DMAErrorCCxN) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_ErrorCallback) for HAL_TIM_ErrorCallback stm32f1xx_hal_uart.o(i.HAL_HalfDuplex_Init) refers to usart.o(i.HAL_UART_MspInit) for HAL_UART_MspInit stm32f1xx_hal_uart.o(i.HAL_HalfDuplex_Init) refers to stm32f1xx_hal_uart.o(i.UART_SetConfig) for UART_SetConfig stm32f1xx_hal_uart.o(i.HAL_LIN_Init) refers to usart.o(i.HAL_UART_MspInit) for HAL_UART_MspInit @@ -614,7 +813,7 @@ Section Cross References stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) refers to stm32f1xx_hal_uart.o(i.UART_Receive_IT) for UART_Receive_IT stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) refers to stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) for UART_EndRxTransfer stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) for HAL_DMA_Abort_IT - stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) refers to stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) for HAL_UART_ErrorCallback + stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) refers to main.o(i.HAL_UART_ErrorCallback) for HAL_UART_ErrorCallback stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) for HAL_DMA_Abort stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) refers to stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback) for HAL_UARTEx_RxEventCallback stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) refers to stm32f1xx_hal_uart.o(i.UART_Transmit_IT) for UART_Transmit_IT @@ -632,10 +831,10 @@ Section Cross References stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_DMA) refers to stm32f1xx_hal_uart.o(i.UART_DMATransmitCplt) for UART_DMATransmitCplt stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_DMA) refers to stm32f1xx_hal_uart.o(i.UART_DMATxHalfCplt) for UART_DMATxHalfCplt stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_DMA) refers to stm32f1xx_hal_uart.o(i.UART_DMAError) for UART_DMAError - stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) refers to stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) for HAL_UART_ErrorCallback + stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) refers to main.o(i.HAL_UART_ErrorCallback) for HAL_UART_ErrorCallback stm32f1xx_hal_uart.o(i.UART_DMAError) refers to stm32f1xx_hal_uart.o(i.UART_EndTxTransfer) for UART_EndTxTransfer stm32f1xx_hal_uart.o(i.UART_DMAError) refers to stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) for UART_EndRxTransfer - stm32f1xx_hal_uart.o(i.UART_DMAError) refers to stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) for HAL_UART_ErrorCallback + stm32f1xx_hal_uart.o(i.UART_DMAError) refers to main.o(i.HAL_UART_ErrorCallback) for HAL_UART_ErrorCallback stm32f1xx_hal_uart.o(i.UART_DMAReceiveCplt) refers to stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback) for HAL_UARTEx_RxEventCallback stm32f1xx_hal_uart.o(i.UART_DMAReceiveCplt) refers to main.o(i.HAL_UART_RxCpltCallback) for HAL_UART_RxCpltCallback stm32f1xx_hal_uart.o(i.UART_DMARxAbortCallback) refers to stm32f1xx_hal_uart.o(i.HAL_UART_AbortCpltCallback) for HAL_UART_AbortCpltCallback @@ -738,6 +937,346 @@ Section Cross References rf433_hal.o(i.uart1_wait_response_blocked) refers to rf433_hal.o(i.rf433_hal_fifo_get_length) for rf433_hal_fifo_get_length rf433_hal.o(i.uart1_wait_response_blocked) refers to stm32f1xx_hal.o(i.HAL_Delay) for HAL_Delay rf433_hal.o(i.uart1_wait_response_blocked) refers to rf433_hal.o(i.rf433_hal_fifo_read) for rf433_hal_fifo_read + wiz_platform.o(i.HAL_TIM_PeriodElapsedCallback) refers to wiz_interface.o(i.wiz_timer_handler) for wiz_timer_handler + wiz_platform.o(i.wiz_tim_irq_disable) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Stop_IT) for HAL_TIM_Base_Stop_IT + wiz_platform.o(i.wiz_tim_irq_disable) refers to tim.o(.bss) for htim2 + wiz_platform.o(i.wiz_tim_irq_enable) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start_IT) for HAL_TIM_Base_Start_IT + wiz_platform.o(i.wiz_tim_irq_enable) refers to tim.o(.bss) for htim2 + wiz_platform.o(i.wizchip_deselect) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin + wiz_platform.o(i.wizchip_read_buff) refers to stm32f1xx_hal_spi.o(i.HAL_SPI_Receive) for HAL_SPI_Receive + wiz_platform.o(i.wizchip_read_buff) refers to spi.o(.bss) for hspi2 + wiz_platform.o(i.wizchip_read_byte) refers to stm32f1xx_hal_spi.o(i.HAL_SPI_Receive) for HAL_SPI_Receive + wiz_platform.o(i.wizchip_read_byte) refers to spi.o(.bss) for hspi2 + wiz_platform.o(i.wizchip_reset) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin + wiz_platform.o(i.wizchip_reset) refers to wiz_interface.o(i.wiz_user_delay_ms) for wiz_user_delay_ms + wiz_platform.o(i.wizchip_select) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin + wiz_platform.o(i.wizchip_spi_cb_reg) refers to wizchip_conf.o(i.reg_wizchip_cs_cbfunc) for reg_wizchip_cs_cbfunc + wiz_platform.o(i.wizchip_spi_cb_reg) refers to wizchip_conf.o(i.reg_wizchip_spi_cbfunc) for reg_wizchip_spi_cbfunc + wiz_platform.o(i.wizchip_spi_cb_reg) refers to wizchip_conf.o(i.reg_wizchip_spiburst_cbfunc) for reg_wizchip_spiburst_cbfunc + wiz_platform.o(i.wizchip_spi_cb_reg) refers to wiz_platform.o(i.wizchip_deselect) for wizchip_deselect + wiz_platform.o(i.wizchip_spi_cb_reg) refers to wiz_platform.o(i.wizchip_select) for wizchip_select + wiz_platform.o(i.wizchip_spi_cb_reg) refers to wiz_platform.o(i.wizchip_write_byte) for wizchip_write_byte + wiz_platform.o(i.wizchip_spi_cb_reg) refers to wiz_platform.o(i.wizchip_read_byte) for wizchip_read_byte + wiz_platform.o(i.wizchip_spi_cb_reg) refers to wiz_platform.o(i.wizchip_write_buff) for wizchip_write_buff + wiz_platform.o(i.wizchip_spi_cb_reg) refers to wiz_platform.o(i.wizchip_read_buff) for wizchip_read_buff + wiz_platform.o(i.wizchip_write_buff) refers to stm32f1xx_hal_spi.o(i.HAL_SPI_Transmit) for HAL_SPI_Transmit + wiz_platform.o(i.wizchip_write_buff) refers to spi.o(.bss) for hspi2 + wiz_platform.o(i.wizchip_write_byte) refers to stm32f1xx_hal_spi.o(i.HAL_SPI_Transmit) for HAL_SPI_Transmit + wiz_platform.o(i.wizchip_write_byte) refers to spi.o(.bss) for hspi2 + wiz_interface.o(i.create_wiz_timer_node) refers to malloc.o(i.malloc) for malloc + wiz_interface.o(i.create_wiz_timer_node) refers to printfa.o(i.__0printf) for __2printf + wiz_interface.o(i.network_init) refers to wizchip_conf.o(i.wizchip_setnetinfo) for wizchip_setnetinfo + wiz_interface.o(i.network_init) refers to wiz_interface.o(i.wiz_dhcp_process) for wiz_dhcp_process + wiz_interface.o(i.network_init) refers to wiz_interface.o(i.print_network_information) for print_network_information + wiz_interface.o(i.print_network_information) refers to wizchip_conf.o(i.wizchip_getnetinfo) for wizchip_getnetinfo + wiz_interface.o(i.print_network_information) refers to printfa.o(i.__0printf) for __2printf + wiz_interface.o(i.print_network_information) refers to wiz_interface.o(.conststring) for .conststring + wiz_interface.o(i.wiz_add_timer) refers to wiz_interface.o(i.create_wiz_timer_node) for create_wiz_timer_node + wiz_interface.o(i.wiz_add_timer) refers to wiz_interface.o(.data) for wiz_timer_head + wiz_interface.o(i.wiz_delete_timer) refers to malloc.o(i.free) for free + wiz_interface.o(i.wiz_delete_timer) refers to wiz_interface.o(.data) for wiz_timer_head + wiz_interface.o(i.wiz_dhcp_process) refers to wiz_interface.o(i.wiz_add_timer) for wiz_add_timer + wiz_interface.o(i.wiz_dhcp_process) refers to dhcp.o(i.DHCP_init) for DHCP_init + wiz_interface.o(i.wiz_dhcp_process) refers to printfa.o(i.__0printf) for __2printf + wiz_interface.o(i.wiz_dhcp_process) refers to dhcp.o(i.DHCP_run) for DHCP_run + wiz_interface.o(i.wiz_dhcp_process) refers to dhcp.o(i.DHCP_stop) for DHCP_stop + wiz_interface.o(i.wiz_dhcp_process) refers to wiz_interface.o(i.wiz_delete_timer) for wiz_delete_timer + wiz_interface.o(i.wiz_dhcp_process) refers to dhcp.o(i.getIPfromDHCP) for getIPfromDHCP + wiz_interface.o(i.wiz_dhcp_process) refers to dhcp.o(i.getGWfromDHCP) for getGWfromDHCP + wiz_interface.o(i.wiz_dhcp_process) refers to dhcp.o(i.getSNfromDHCP) for getSNfromDHCP + wiz_interface.o(i.wiz_dhcp_process) refers to dhcp.o(i.getDNSfromDHCP) for getDNSfromDHCP + wiz_interface.o(i.wiz_dhcp_process) refers to w5500.o(i.WIZCHIP_READ_BUF) for WIZCHIP_READ_BUF + wiz_interface.o(i.wiz_dhcp_process) refers to wizchip_conf.o(i.wizchip_setnetinfo) for wizchip_setnetinfo + wiz_interface.o(i.wiz_dhcp_process) refers to dhcp.o(i.DHCP_time_handler) for DHCP_time_handler + wiz_interface.o(i.wiz_phy_link_check) refers to wiz_interface.o(i.wiz_user_delay_ms) for wiz_user_delay_ms + wiz_interface.o(i.wiz_phy_link_check) refers to wizchip_conf.o(i.ctlwizchip) for ctlwizchip + wiz_interface.o(i.wiz_phy_link_check) refers to printfa.o(i.__0printf) for __2printf + wiz_interface.o(i.wiz_phy_link_check) refers to wiz_interface.o(i.wiz_print_phy_info) for wiz_print_phy_info + wiz_interface.o(i.wiz_print_phy_info) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + wiz_interface.o(i.wiz_print_phy_info) refers to printfa.o(i.__0printf) for __2printf + wiz_interface.o(i.wiz_timer_handler) refers to wiz_interface.o(.data) for wiz_delay_ms_count + wiz_interface.o(i.wiz_user_delay_ms) refers to wiz_interface.o(.data) for wiz_delay_ms_count + wiz_interface.o(i.wizchip_initialize) refers to printfa.o(i.__0printf) for __2printf + wiz_interface.o(i.wizchip_initialize) refers to wiz_platform.o(i.wizchip_spi_cb_reg) for wizchip_spi_cb_reg + wiz_interface.o(i.wizchip_initialize) refers to wiz_platform.o(i.wizchip_reset) for wizchip_reset + wiz_interface.o(i.wizchip_initialize) refers to wiz_interface.o(i.wizchip_version_check) for wizchip_version_check + wiz_interface.o(i.wizchip_initialize) refers to wiz_interface.o(i.wiz_phy_link_check) for wiz_phy_link_check + wiz_interface.o(i.wizchip_initialize) refers to wiz_interface.o(.conststring) for .conststring + wiz_interface.o(i.wizchip_version_check) refers to wiz_interface.o(i.wiz_user_delay_ms) for wiz_user_delay_ms + wiz_interface.o(i.wizchip_version_check) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + wiz_interface.o(i.wizchip_version_check) refers to printfa.o(i.__0printf) for __2printf + wiz_interface.o(i.wizchip_version_check) refers to wiz_interface.o(.conststring) for .conststring + user_main.o(i.user_run) refers to printfa.o(i.__0printf) for __2printf + user_main.o(i.user_run) refers to wiz_interface.o(i.wizchip_initialize) for wizchip_initialize + user_main.o(i.user_run) refers to wiz_interface.o(i.network_init) for network_init + user_main.o(i.user_run) refers to loopback.o(i.loopback_udps) for loopback_udps + user_main.o(i.user_run) refers to user_main.o(.data) for default_net_info + user_main.o(i.user_run) refers to user_main.o(.bss) for ethernet_buf + loopback.o(i.loopback_tcpc) refers to w5500.o(i.WIZCHIP_READ_BUF) for WIZCHIP_READ_BUF + loopback.o(i.loopback_tcpc) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + loopback.o(i.loopback_tcpc) refers to socket.o(i.send) for send + loopback.o(i.loopback_tcpc) refers to socket.o(i.close) for close + loopback.o(i.loopback_tcpc) refers to printfa.o(i.__0printf) for __2printf + loopback.o(i.loopback_tcpc) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + loopback.o(i.loopback_tcpc) refers to w5500.o(i.getSn_RX_RSR) for getSn_RX_RSR + loopback.o(i.loopback_tcpc) refers to socket.o(i.recv) for recv + loopback.o(i.loopback_tcpc) refers to socket.o(i.disconnect) for disconnect + loopback.o(i.loopback_tcpc) refers to socket.o(i.connect) for connect + loopback.o(i.loopback_tcpc) refers to socket.o(i.socket) for socket + loopback.o(i.loopback_tcpc) refers to loopback.o(.data) for any_port + loopback.o(i.loopback_tcps) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + loopback.o(i.loopback_tcps) refers to w5500.o(i.WIZCHIP_READ_BUF) for WIZCHIP_READ_BUF + loopback.o(i.loopback_tcps) refers to printfa.o(i.__0printf) for __2printf + loopback.o(i.loopback_tcps) refers to socket.o(i.send) for send + loopback.o(i.loopback_tcps) refers to socket.o(i.close) for close + loopback.o(i.loopback_tcps) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + loopback.o(i.loopback_tcps) refers to w5500.o(i.getSn_RX_RSR) for getSn_RX_RSR + loopback.o(i.loopback_tcps) refers to socket.o(i.recv) for recv + loopback.o(i.loopback_tcps) refers to socket.o(i.disconnect) for disconnect + loopback.o(i.loopback_tcps) refers to socket.o(i.listen) for listen + loopback.o(i.loopback_tcps) refers to socket.o(i.socket) for socket + loopback.o(i.loopback_udpc) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + loopback.o(i.loopback_udpc) refers to w5500.o(i.getSn_RX_RSR) for getSn_RX_RSR + loopback.o(i.loopback_udpc) refers to socket.o(i.recvfrom) for recvfrom + loopback.o(i.loopback_udpc) refers to printfa.o(i.__0printf) for __2printf + loopback.o(i.loopback_udpc) refers to socket.o(i.sendto) for sendto + loopback.o(i.loopback_udpc) refers to socket.o(i.socket) for socket + loopback.o(i.loopback_udpc) refers to loopback.o(.data) for any_port + loopback.o(i.loopback_udps) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + loopback.o(i.loopback_udps) refers to w5500.o(i.getSn_RX_RSR) for getSn_RX_RSR + loopback.o(i.loopback_udps) refers to socket.o(i.recvfrom) for recvfrom + loopback.o(i.loopback_udps) refers to printfa.o(i.__0printf) for __2printf + loopback.o(i.loopback_udps) refers to printfa.o(i.__0sprintf) for __2sprintf + loopback.o(i.loopback_udps) refers to memcpya.o(.text) for __aeabi_memcpy + loopback.o(i.loopback_udps) refers to multi_uart_router.o(i.MultiUART_Send) for MultiUART_Send + loopback.o(i.loopback_udps) refers to socket.o(i.sendto) for sendto + loopback.o(i.loopback_udps) refers to socket.o(i.socket) for socket + multicast.o(i.multicast_loopback) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + multicast.o(i.multicast_loopback) refers to w5500.o(i.getSn_RX_RSR) for getSn_RX_RSR + multicast.o(i.multicast_loopback) refers to socket.o(i.recvfrom) for recvfrom + multicast.o(i.multicast_loopback) refers to printfa.o(i.__0printf) for __2printf + multicast.o(i.multicast_loopback) refers to socket.o(i.sendto) for sendto + multicast.o(i.multicast_loopback) refers to w5500.o(i.WIZCHIP_WRITE_BUF) for WIZCHIP_WRITE_BUF + multicast.o(i.multicast_loopback) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + multicast.o(i.multicast_loopback) refers to socket.o(i.socket) for socket + multicast.o(i.multicast_recv) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + multicast.o(i.multicast_recv) refers to w5500.o(i.getSn_RX_RSR) for getSn_RX_RSR + multicast.o(i.multicast_recv) refers to socket.o(i.recvfrom) for recvfrom + multicast.o(i.multicast_recv) refers to printfa.o(i.__0printf) for __2printf + multicast.o(i.multicast_recv) refers to w5500.o(i.WIZCHIP_WRITE_BUF) for WIZCHIP_WRITE_BUF + multicast.o(i.multicast_recv) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + multicast.o(i.multicast_recv) refers to socket.o(i.socket) for socket + w5500.o(i.WIZCHIP_READ) refers to wizchip_conf.o(.data) for WIZCHIP + w5500.o(i.WIZCHIP_READ_BUF) refers to wizchip_conf.o(.data) for WIZCHIP + w5500.o(i.WIZCHIP_WRITE) refers to wizchip_conf.o(.data) for WIZCHIP + w5500.o(i.WIZCHIP_WRITE_BUF) refers to wizchip_conf.o(.data) for WIZCHIP + w5500.o(i.getSn_RX_RSR) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + w5500.o(i.getSn_TX_FSR) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + w5500.o(i.wiz_recv_data) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + w5500.o(i.wiz_recv_data) refers to w5500.o(i.WIZCHIP_READ_BUF) for WIZCHIP_READ_BUF + w5500.o(i.wiz_recv_data) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + w5500.o(i.wiz_recv_ignore) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + w5500.o(i.wiz_recv_ignore) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + w5500.o(i.wiz_send_data) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + w5500.o(i.wiz_send_data) refers to w5500.o(i.WIZCHIP_WRITE_BUF) for WIZCHIP_WRITE_BUF + w5500.o(i.wiz_send_data) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + socket.o(i.close) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + socket.o(i.close) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + socket.o(i.close) refers to socket.o(.data) for sock_io_mode + socket.o(i.close) refers to socket.o(.bss) for sock_remained_size + socket.o(i.connect) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + socket.o(i.connect) refers to w5500.o(i.WIZCHIP_WRITE_BUF) for WIZCHIP_WRITE_BUF + socket.o(i.connect) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + socket.o(i.connect) refers to socket.o(.data) for sock_io_mode + socket.o(i.ctlsocket) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + socket.o(i.ctlsocket) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + socket.o(i.ctlsocket) refers to socket.o(.data) for sock_io_mode + socket.o(i.disconnect) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + socket.o(i.disconnect) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + socket.o(i.disconnect) refers to socket.o(i.close) for close + socket.o(i.disconnect) refers to socket.o(.data) for sock_is_sending + socket.o(i.getsockopt) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + socket.o(i.getsockopt) refers to w5500.o(i.WIZCHIP_READ_BUF) for WIZCHIP_READ_BUF + socket.o(i.getsockopt) refers to w5500.o(i.getSn_TX_FSR) for getSn_TX_FSR + socket.o(i.getsockopt) refers to w5500.o(i.getSn_RX_RSR) for getSn_RX_RSR + socket.o(i.getsockopt) refers to socket.o(.bss) for sock_remained_size + socket.o(i.getsockopt) refers to socket.o(.data) for sock_pack_info + socket.o(i.listen) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + socket.o(i.listen) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + socket.o(i.listen) refers to socket.o(i.close) for close + socket.o(i.recv) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + socket.o(i.recv) refers to w5500.o(i.getSn_RX_RSR) for getSn_RX_RSR + socket.o(i.recv) refers to w5500.o(i.getSn_TX_FSR) for getSn_TX_FSR + socket.o(i.recv) refers to socket.o(i.close) for close + socket.o(i.recv) refers to w5500.o(i.wiz_recv_data) for wiz_recv_data + socket.o(i.recv) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + socket.o(i.recv) refers to socket.o(.data) for sock_io_mode + socket.o(i.recvfrom) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + socket.o(i.recvfrom) refers to w5500.o(i.getSn_RX_RSR) for getSn_RX_RSR + socket.o(i.recvfrom) refers to w5500.o(i.wiz_recv_data) for wiz_recv_data + socket.o(i.recvfrom) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + socket.o(i.recvfrom) refers to socket.o(i.close) for close + socket.o(i.recvfrom) refers to w5500.o(i.wiz_recv_ignore) for wiz_recv_ignore + socket.o(i.recvfrom) refers to socket.o(.bss) for sock_remained_size + socket.o(i.recvfrom) refers to socket.o(.data) for sock_io_mode + socket.o(i.send) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + socket.o(i.send) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + socket.o(i.send) refers to socket.o(i.close) for close + socket.o(i.send) refers to w5500.o(i.getSn_TX_FSR) for getSn_TX_FSR + socket.o(i.send) refers to w5500.o(i.wiz_send_data) for wiz_send_data + socket.o(i.send) refers to socket.o(.data) for sock_is_sending + socket.o(i.sendto) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + socket.o(i.sendto) refers to w5500.o(i.WIZCHIP_WRITE_BUF) for WIZCHIP_WRITE_BUF + socket.o(i.sendto) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + socket.o(i.sendto) refers to w5500.o(i.getSn_TX_FSR) for getSn_TX_FSR + socket.o(i.sendto) refers to w5500.o(i.wiz_send_data) for wiz_send_data + socket.o(i.sendto) refers to socket.o(.data) for sock_io_mode + socket.o(i.setsockopt) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + socket.o(i.setsockopt) refers to w5500.o(i.WIZCHIP_WRITE_BUF) for WIZCHIP_WRITE_BUF + socket.o(i.setsockopt) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + socket.o(i.socket) refers to w5500.o(i.WIZCHIP_READ_BUF) for WIZCHIP_READ_BUF + socket.o(i.socket) refers to socket.o(i.close) for close + socket.o(i.socket) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + socket.o(i.socket) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + socket.o(i.socket) refers to socket.o(.data) for sock_any_port + socket.o(i.socket) refers to socket.o(.bss) for sock_remained_size + wizchip_conf.o(i.ctlnetwork) refers to wizchip_conf.o(i.wizchip_setnetinfo) for wizchip_setnetinfo + wizchip_conf.o(i.ctlnetwork) refers to wizchip_conf.o(i.wizchip_getnetinfo) for wizchip_getnetinfo + wizchip_conf.o(i.ctlnetwork) refers to wizchip_conf.o(i.wizchip_setnetmode) for wizchip_setnetmode + wizchip_conf.o(i.ctlnetwork) refers to wizchip_conf.o(i.wizchip_getnetmode) for wizchip_getnetmode + wizchip_conf.o(i.ctlnetwork) refers to wizchip_conf.o(i.wizchip_settimeout) for wizchip_settimeout + wizchip_conf.o(i.ctlnetwork) refers to wizchip_conf.o(i.wizchip_gettimeout) for wizchip_gettimeout + wizchip_conf.o(i.ctlwizchip) refers to wizchip_conf.o(i.wizchip_sw_reset) for wizchip_sw_reset + wizchip_conf.o(i.ctlwizchip) refers to wizchip_conf.o(i.wizchip_init) for wizchip_init + wizchip_conf.o(i.ctlwizchip) refers to wizchip_conf.o(i.wizchip_clrinterrupt) for wizchip_clrinterrupt + wizchip_conf.o(i.ctlwizchip) refers to wizchip_conf.o(i.wizchip_getinterrupt) for wizchip_getinterrupt + wizchip_conf.o(i.ctlwizchip) refers to wizchip_conf.o(i.wizchip_setinterruptmask) for wizchip_setinterruptmask + wizchip_conf.o(i.ctlwizchip) refers to wizchip_conf.o(i.wizchip_getinterruptmask) for wizchip_getinterruptmask + wizchip_conf.o(i.ctlwizchip) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + wizchip_conf.o(i.ctlwizchip) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + wizchip_conf.o(i.ctlwizchip) refers to wizchip_conf.o(i.wizphy_reset) for wizphy_reset + wizchip_conf.o(i.ctlwizchip) refers to wizchip_conf.o(i.wizphy_setphyconf) for wizphy_setphyconf + wizchip_conf.o(i.ctlwizchip) refers to wizchip_conf.o(i.wizphy_getphyconf) for wizphy_getphyconf + wizchip_conf.o(i.ctlwizchip) refers to wizchip_conf.o(i.wizphy_setphypmode) for wizphy_setphypmode + wizchip_conf.o(i.ctlwizchip) refers to wizchip_conf.o(i.wizphy_getphypmode) for wizphy_getphypmode + wizchip_conf.o(i.ctlwizchip) refers to wizchip_conf.o(i.wizphy_getphylink) for wizphy_getphylink + wizchip_conf.o(i.ctlwizchip) refers to wizchip_conf.o(.data) for WIZCHIP + wizchip_conf.o(i.reg_wizchip_bus_cbfunc) refers to wizchip_conf.o(.data) for WIZCHIP + wizchip_conf.o(i.reg_wizchip_bus_cbfunc) refers to wizchip_conf.o(i.wizchip_bus_readdata) for wizchip_bus_readdata + wizchip_conf.o(i.reg_wizchip_bus_cbfunc) refers to wizchip_conf.o(i.wizchip_bus_writedata) for wizchip_bus_writedata + wizchip_conf.o(i.reg_wizchip_cris_cbfunc) refers to wizchip_conf.o(i.wizchip_cris_enter) for wizchip_cris_enter + wizchip_conf.o(i.reg_wizchip_cris_cbfunc) refers to wizchip_conf.o(.data) for WIZCHIP + wizchip_conf.o(i.reg_wizchip_cris_cbfunc) refers to wizchip_conf.o(i.wizchip_cris_exit) for wizchip_cris_exit + wizchip_conf.o(i.reg_wizchip_cs_cbfunc) refers to wizchip_conf.o(i.wizchip_cs_select) for wizchip_cs_select + wizchip_conf.o(i.reg_wizchip_cs_cbfunc) refers to wizchip_conf.o(.data) for WIZCHIP + wizchip_conf.o(i.reg_wizchip_cs_cbfunc) refers to wizchip_conf.o(i.wizchip_cs_deselect) for wizchip_cs_deselect + wizchip_conf.o(i.reg_wizchip_spi_cbfunc) refers to wizchip_conf.o(.data) for WIZCHIP + wizchip_conf.o(i.reg_wizchip_spi_cbfunc) refers to wizchip_conf.o(i.wizchip_spi_readbyte) for wizchip_spi_readbyte + wizchip_conf.o(i.reg_wizchip_spi_cbfunc) refers to wizchip_conf.o(i.wizchip_spi_writebyte) for wizchip_spi_writebyte + wizchip_conf.o(i.reg_wizchip_spiburst_cbfunc) refers to wizchip_conf.o(.data) for WIZCHIP + wizchip_conf.o(i.reg_wizchip_spiburst_cbfunc) refers to wizchip_conf.o(i.wizchip_spi_readburst) for wizchip_spi_readburst + wizchip_conf.o(i.reg_wizchip_spiburst_cbfunc) refers to wizchip_conf.o(i.wizchip_spi_writeburst) for wizchip_spi_writeburst + wizchip_conf.o(i.wizchip_clrinterrupt) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + wizchip_conf.o(i.wizchip_getinterrupt) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + wizchip_conf.o(i.wizchip_getinterruptmask) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + wizchip_conf.o(i.wizchip_getnetinfo) refers to w5500.o(i.WIZCHIP_READ_BUF) for WIZCHIP_READ_BUF + wizchip_conf.o(i.wizchip_getnetinfo) refers to wizchip_conf.o(.data) for _DNS_ + wizchip_conf.o(i.wizchip_getnetmode) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + wizchip_conf.o(i.wizchip_gettimeout) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + wizchip_conf.o(i.wizchip_init) refers to wizchip_conf.o(i.wizchip_sw_reset) for wizchip_sw_reset + wizchip_conf.o(i.wizchip_init) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + wizchip_conf.o(i.wizchip_setinterruptmask) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + wizchip_conf.o(i.wizchip_setnetinfo) refers to w5500.o(i.WIZCHIP_WRITE_BUF) for WIZCHIP_WRITE_BUF + wizchip_conf.o(i.wizchip_setnetinfo) refers to wizchip_conf.o(.data) for _DNS_ + wizchip_conf.o(i.wizchip_setnetmode) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + wizchip_conf.o(i.wizchip_setnetmode) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + wizchip_conf.o(i.wizchip_settimeout) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + wizchip_conf.o(i.wizchip_sw_reset) refers to w5500.o(i.WIZCHIP_READ_BUF) for WIZCHIP_READ_BUF + wizchip_conf.o(i.wizchip_sw_reset) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + wizchip_conf.o(i.wizchip_sw_reset) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + wizchip_conf.o(i.wizchip_sw_reset) refers to w5500.o(i.WIZCHIP_WRITE_BUF) for WIZCHIP_WRITE_BUF + wizchip_conf.o(i.wizphy_getphyconf) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + wizchip_conf.o(i.wizphy_getphylink) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + wizchip_conf.o(i.wizphy_getphypmode) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + wizchip_conf.o(i.wizphy_getphystat) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + wizchip_conf.o(i.wizphy_reset) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + wizchip_conf.o(i.wizphy_reset) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + wizchip_conf.o(i.wizphy_setphyconf) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + wizchip_conf.o(i.wizphy_setphyconf) refers to wizchip_conf.o(i.wizphy_reset) for wizphy_reset + wizchip_conf.o(i.wizphy_setphypmode) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + wizchip_conf.o(i.wizphy_setphypmode) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + wizchip_conf.o(i.wizphy_setphypmode) refers to wizchip_conf.o(i.wizphy_reset) for wizphy_reset + wizchip_conf.o(.data) refers to wizchip_conf.o(i.wizchip_cris_enter) for wizchip_cris_enter + wizchip_conf.o(.data) refers to wizchip_conf.o(i.wizchip_cris_exit) for wizchip_cris_exit + wizchip_conf.o(.data) refers to wizchip_conf.o(i.wizchip_cs_select) for wizchip_cs_select + wizchip_conf.o(.data) refers to wizchip_conf.o(i.wizchip_cs_deselect) for wizchip_cs_deselect + wizchip_conf.o(.data) refers to wizchip_conf.o(i.wizchip_bus_readdata) for wizchip_bus_readdata + wizchip_conf.o(.data) refers to wizchip_conf.o(i.wizchip_bus_writedata) for wizchip_bus_writedata + dhcp.o(i.DHCP_init) refers to w5500.o(i.WIZCHIP_READ_BUF) for WIZCHIP_READ_BUF + dhcp.o(i.DHCP_init) refers to w5500.o(i.WIZCHIP_WRITE_BUF) for WIZCHIP_WRITE_BUF + dhcp.o(i.DHCP_init) refers to dhcp.o(i.reset_DHCP_timeout) for reset_DHCP_timeout + dhcp.o(i.DHCP_init) refers to dhcp.o(.data) for DHCP_CHADDR + dhcp.o(i.DHCP_run) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + dhcp.o(i.DHCP_run) refers to socket.o(i.socket) for socket + dhcp.o(i.DHCP_run) refers to dhcp.o(i.parseDHCPMSG) for parseDHCPMSG + dhcp.o(i.DHCP_run) refers to dhcp.o(i.send_DHCP_DISCOVER) for send_DHCP_DISCOVER + dhcp.o(i.DHCP_run) refers to dhcp.o(i.send_DHCP_REQUEST) for send_DHCP_REQUEST + dhcp.o(i.DHCP_run) refers to dhcp.o(i.check_DHCP_timeout) for check_DHCP_timeout + dhcp.o(i.DHCP_run) refers to dhcp.o(i.check_DHCP_leasedIP) for check_DHCP_leasedIP + dhcp.o(i.DHCP_run) refers to dhcp.o(i.reset_DHCP_timeout) for reset_DHCP_timeout + dhcp.o(i.DHCP_run) refers to dhcp.o(.data) for dhcp_state + dhcp.o(i.DHCP_stop) refers to socket.o(i.close) for close + dhcp.o(i.DHCP_stop) refers to dhcp.o(.data) for DHCP_SOCKET + dhcp.o(i.DHCP_time_handler) refers to dhcp.o(.data) for dhcp_tick_1s + dhcp.o(i.check_DHCP_leasedIP) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + dhcp.o(i.check_DHCP_leasedIP) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + dhcp.o(i.check_DHCP_leasedIP) refers to socket.o(i.sendto) for sendto + dhcp.o(i.check_DHCP_leasedIP) refers to dhcp.o(i.send_DHCP_DECLINE) for send_DHCP_DECLINE + dhcp.o(i.check_DHCP_leasedIP) refers to dhcp.o(.data) for DHCP_allocated_ip + dhcp.o(i.check_DHCP_timeout) refers to dhcp.o(i.send_DHCP_DISCOVER) for send_DHCP_DISCOVER + dhcp.o(i.check_DHCP_timeout) refers to dhcp.o(i.send_DHCP_REQUEST) for send_DHCP_REQUEST + dhcp.o(i.check_DHCP_timeout) refers to dhcp.o(i.reset_DHCP_timeout) for reset_DHCP_timeout + dhcp.o(i.check_DHCP_timeout) refers to dhcp.o(.data) for dhcp_retry_count + dhcp.o(i.default_ip_assign) refers to w5500.o(i.WIZCHIP_WRITE_BUF) for WIZCHIP_WRITE_BUF + dhcp.o(i.default_ip_assign) refers to dhcp.o(.data) for DHCP_allocated_ip + dhcp.o(i.default_ip_conflict) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + dhcp.o(i.default_ip_conflict) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + dhcp.o(i.default_ip_conflict) refers to w5500.o(i.WIZCHIP_WRITE_BUF) for WIZCHIP_WRITE_BUF + dhcp.o(i.default_ip_conflict) refers to dhcp.o(.data) for DHCP_CHADDR + dhcp.o(i.default_ip_update) refers to w5500.o(i.WIZCHIP_WRITE) for WIZCHIP_WRITE + dhcp.o(i.default_ip_update) refers to w5500.o(i.WIZCHIP_READ) for WIZCHIP_READ + dhcp.o(i.default_ip_update) refers to dhcp.o(i.default_ip_assign) for default_ip_assign + dhcp.o(i.default_ip_update) refers to w5500.o(i.WIZCHIP_WRITE_BUF) for WIZCHIP_WRITE_BUF + dhcp.o(i.default_ip_update) refers to dhcp.o(.data) for DHCP_CHADDR + dhcp.o(i.getDHCPLeasetime) refers to dhcp.o(.data) for dhcp_lease_time + dhcp.o(i.getDNSfromDHCP) refers to dhcp.o(.data) for DHCP_allocated_dns + dhcp.o(i.getGWfromDHCP) refers to dhcp.o(.data) for DHCP_allocated_gw + dhcp.o(i.getIPfromDHCP) refers to dhcp.o(.data) for DHCP_allocated_ip + dhcp.o(i.getSNfromDHCP) refers to dhcp.o(.data) for DHCP_allocated_sn + dhcp.o(i.makeDHCPMSG) refers to w5500.o(i.WIZCHIP_READ_BUF) for WIZCHIP_READ_BUF + dhcp.o(i.makeDHCPMSG) refers to dhcp.o(.data) for pDHCPMSG + dhcp.o(i.parseDHCPMSG) refers to w5500.o(i.getSn_RX_RSR) for getSn_RX_RSR + dhcp.o(i.parseDHCPMSG) refers to socket.o(i.recvfrom) for recvfrom + dhcp.o(i.parseDHCPMSG) refers to dhcp.o(.data) for DHCP_SOCKET + dhcp.o(i.reg_dhcp_cbfunc) refers to dhcp.o(i.default_ip_assign) for default_ip_assign + dhcp.o(i.reg_dhcp_cbfunc) refers to dhcp.o(.data) for dhcp_ip_assign + dhcp.o(i.reg_dhcp_cbfunc) refers to dhcp.o(i.default_ip_update) for default_ip_update + dhcp.o(i.reg_dhcp_cbfunc) refers to dhcp.o(i.default_ip_conflict) for default_ip_conflict + dhcp.o(i.reset_DHCP_timeout) refers to dhcp.o(.data) for dhcp_tick_1s + dhcp.o(i.send_DHCP_DECLINE) refers to dhcp.o(i.makeDHCPMSG) for makeDHCPMSG + dhcp.o(i.send_DHCP_DECLINE) refers to socket.o(i.sendto) for sendto + dhcp.o(i.send_DHCP_DECLINE) refers to dhcp.o(.data) for pDHCPMSG + dhcp.o(i.send_DHCP_DISCOVER) refers to dhcp.o(i.makeDHCPMSG) for makeDHCPMSG + dhcp.o(i.send_DHCP_DISCOVER) refers to dhcp.o(i.NibbleToHex) for NibbleToHex + dhcp.o(i.send_DHCP_DISCOVER) refers to socket.o(i.sendto) for sendto + dhcp.o(i.send_DHCP_DISCOVER) refers to dhcp.o(.data) for DHCP_SIP + dhcp.o(i.send_DHCP_REQUEST) refers to dhcp.o(i.makeDHCPMSG) for makeDHCPMSG + dhcp.o(i.send_DHCP_REQUEST) refers to dhcp.o(i.NibbleToHex) for NibbleToHex + dhcp.o(i.send_DHCP_REQUEST) refers to socket.o(i.sendto) for sendto + dhcp.o(i.send_DHCP_REQUEST) refers to dhcp.o(.data) for dhcp_state + dhcp.o(.data) refers to dhcp.o(i.default_ip_assign) for default_ip_assign + dhcp.o(.data) refers to dhcp.o(i.default_ip_update) for default_ip_update + dhcp.o(.data) refers to dhcp.o(i.default_ip_conflict) for default_ip_conflict entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry10a.o(.ARM.Collect$$$$0000000F) for __rt_final_cpp entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry11a.o(.ARM.Collect$$$$00000011) for __rt_final_exit entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry12b.o(.ARM.Collect$$$$0000000E) for __rt_lib_shutdown_fini @@ -996,6 +1535,38 @@ Section Cross References printfa.o(i._printf_pre_padding) refers (Special) to iusefp.o(.text) for __I$use$fp printfa.o(i._snputc) refers (Special) to iusefp.o(.text) for __I$use$fp printfa.o(i._sputc) refers (Special) to iusefp.o(.text) for __I$use$fp + malloc.o(i.free) refers to mvars.o(.data) for __microlib_freelist + malloc.o(i.malloc) refers to mvars.o(.data) for __microlib_freelist_initialised + malloc.o(i.malloc) refers to mvars.o(.data) for __microlib_freelist + malloc.o(i.malloc) refers to startup_stm32f103xb.o(HEAP) for __heap_base + mallocr.o(i.__free$realloc) refers to mvars.o(.data) for __microlib_freelist + mallocr.o(i.__malloc$realloc) refers to mallocr.o(i.internal_alloc) for internal_alloc + mallocr.o(i.__malloc$realloc) refers to mvars.o(.data) for __microlib_freelist_initialised + mallocr.o(i.__malloc$realloc) refers to startup_stm32f103xb.o(HEAP) for __heap_base + mallocr.o(i.__malloc$realloc) refers to mvars.o(.data) for __microlib_freelist + mallocr.o(i.internal_alloc) refers to memcpya.o(.text) for __aeabi_memcpy + mallocr.o(i.internal_alloc) refers to mvars.o(.data) for __microlib_freelist + mallocr.o(i.realloc) refers to mallocr.o(i.__free$realloc) for __free$realloc + mallocr.o(i.realloc) refers to mallocr.o(i.internal_alloc) for internal_alloc + mallocr.o(i.realloc) refers to mallocr.o(i.__malloc$realloc) for __malloc$realloc + mallocr.o(i.realloc) refers to mvars.o(.data) for __microlib_freelist + malloca.o(i.__aligned_malloc) refers to mvars.o(.data) for __microlib_freelist_initialised + malloca.o(i.__aligned_malloc) refers to mvars.o(.data) for __microlib_freelist + malloca.o(i.__aligned_malloc) refers to startup_stm32f103xb.o(HEAP) for __heap_base + malloca.o(i.__free$memalign) refers to mvars.o(.data) for __microlib_freelist + malloca.o(i.__malloc$memalign) refers to malloca.o(i.__aligned_malloc) for __aligned_malloc + mallocra.o(i.__aligned_malloc$realloc) refers to mallocra.o(i.internal_alloc) for internal_alloc + mallocra.o(i.__aligned_malloc$realloc) refers to mvars.o(.data) for __microlib_freelist_initialised + mallocra.o(i.__aligned_malloc$realloc) refers to startup_stm32f103xb.o(HEAP) for __heap_base + mallocra.o(i.__aligned_malloc$realloc) refers to mvars.o(.data) for __microlib_freelist + mallocra.o(i.__free$realloc$memalign) refers to mvars.o(.data) for __microlib_freelist + mallocra.o(i.__malloc$realloc$memalign) refers to mallocra.o(i.__aligned_malloc$realloc) for __aligned_malloc$realloc + mallocra.o(i.__realloc$memalign) refers to mallocra.o(i.__free$realloc$memalign) for __free$realloc$memalign + mallocra.o(i.__realloc$memalign) refers to mallocra.o(i.internal_alloc) for internal_alloc + mallocra.o(i.__realloc$memalign) refers to mallocra.o(i.__malloc$realloc$memalign) for __malloc$realloc$memalign + mallocra.o(i.__realloc$memalign) refers to mvars.o(.data) for __microlib_freelist + mallocra.o(i.internal_alloc) refers to memcpya.o(.text) for __aeabi_memcpy + mallocra.o(i.internal_alloc) refers to mvars.o(.data) for __microlib_freelist __0sscanf.o(.text) refers to scanf_char.o(.text) for __vfscanf_char __0sscanf.o(.text) refers to _sgetc.o(.text) for _sgetc _scanf_int.o(.text) refers to _chval.o(.text) for _chval @@ -1039,7 +1610,6 @@ Section Cross References Removing Unused input sections from the image. - Removing startup_stm32f103xb.o(HEAP), (512 bytes). Removing systick.o(.rev16_text), (4 bytes). Removing systick.o(.revsh_text), (4 bytes). Removing systick.o(.rrx_text), (6 bytes). @@ -1083,18 +1653,35 @@ Removing Unused input sections from the image. Removing stm32f1xx_hal_msp.o(.revsh_text), (4 bytes). Removing stm32f1xx_hal_msp.o(.rrx_text), (6 bytes). Removing cmd_parser.o(i.CmdParser_Acknowledge), (8 bytes). + Removing cmd_parser.o(i.CmdParser_FeedByte), (716 bytes). Removing cmd_parser.o(i.CmdParser_GetErrorCount), (12 bytes). Removing cmd_parser.o(i.CmdParser_GetValidCount), (12 bytes). + Removing cmd_parser.o(i.CmdParser_HasCompleteFrame), (48 bytes). + Removing cmd_parser.o(i.CmdParser_SetSourcePort), (12 bytes). + Removing cmd_parser.o(i.CmdParser_Task), (36 bytes). + Removing cmd_parser.o(i.calc_checksum), (26 bytes). + Removing cmd_parser.o(i.hex_char_to_val), (54 bytes). + Removing cmd_parser.o(i.hex_to_byte), (28 bytes). + Removing cmd_parser.o(i.is_str_empty), (16 bytes). + Removing cmd_parser.o(i.is_str_numeric), (48 bytes). + Removing cmd_parser.o(i.is_valid_cmd_char), (38 bytes). + Removing cmd_parser.o(i.is_valid_param_char), (38 bytes). + Removing cmd_parser.o(i.process_cmd_frame), (344 bytes). + Removing cmd_parser.o(i.reset_parser), (36 bytes). + Removing cmd_parser.o(i.send_response_err), (108 bytes). + Removing cmd_parser.o(i.send_response_ok), (104 bytes). Removing io_monitor.o(.rev16_text), (4 bytes). Removing io_monitor.o(.revsh_text), (4 bytes). Removing io_monitor.o(.rrx_text), (6 bytes). Removing io_monitor.o(i.IO_Monitor_EnableReport), (72 bytes). Removing io_monitor.o(i.IO_Monitor_GetChangeCount), (24 bytes). + Removing io_monitor.o(i.IO_Monitor_GetState), (24 bytes). Removing io_monitor.o(i.IO_Monitor_SetEventCallback), (72 bytes). Removing relay_control.o(.rev16_text), (4 bytes). Removing relay_control.o(.revsh_text), (4 bytes). Removing relay_control.o(.rrx_text), (6 bytes). Removing relay_control.o(i.Relay_GetState), (12 bytes). + Removing relay_control.o(i.Relay_SetState), (208 bytes). Removing uart2_print.o(.rev16_text), (4 bytes). Removing uart2_print.o(.revsh_text), (4 bytes). Removing uart2_print.o(.rrx_text), (6 bytes). @@ -1108,26 +1695,51 @@ Removing Unused input sections from the image. Removing cmd_router.o(i.CmdRouter_GetProcessedCount), (12 bytes). Removing cmd_router.o(i.CmdRouter_GetRoutedCount), (12 bytes). Removing cmd_router.o(i.CmdRouter_SendResponse), (108 bytes). - Removing cmd_router.o(i.CmdRouter_SetResponseHandler), (76 bytes). + Removing cmd_router.o(i.CmdRouter_SetResponseHandler), (12 bytes). + Removing cmd_router.o(i.CmdRouter_Task), (308 bytes). + Removing cmd_router.o(i.append_rx_log), (68 bytes). + Removing cmd_router.o(i.flush_rx_log), (212 bytes). + Removing debug_log.o(.rev16_text), (4 bytes). + Removing debug_log.o(.revsh_text), (4 bytes). + Removing debug_log.o(.rrx_text), (6 bytes). Removing debug_log.o(i.DebugLog_EnableModule), (116 bytes). Removing debug_log.o(i.DebugLog_GetLevel), (12 bytes). - Removing debug_log.o(i.DebugLog_SetLevel), (12 bytes). Removing multi_uart_router.o(.rev16_text), (4 bytes). Removing multi_uart_router.o(.revsh_text), (4 bytes). Removing multi_uart_router.o(.rrx_text), (6 bytes). + Removing multi_uart_router.o(i.MultiUART_FeedByte), (72 bytes). Removing multi_uart_router.o(i.MultiUART_GetOverflowCount), (48 bytes). + Removing multi_uart_router.o(i.MultiUART_GetRxCount), (36 bytes). + Removing multi_uart_router.o(i.MultiUART_GetTxAvailable), (44 bytes). + Removing multi_uart_router.o(i.MultiUART_ReadByte), (92 bytes). Removing multi_uart_router.o(i.MultiUART_SendFmt), (66 bytes). Removing multi_uart_router.o(i.rx_ring_pop), (60 bytes). + Removing multi_uart_router.o(i.rx_ring_push), (70 bytes). Removing uart3_passthrough.o(.rev16_text), (4 bytes). Removing uart3_passthrough.o(.revsh_text), (4 bytes). Removing uart3_passthrough.o(.rrx_text), (6 bytes). + Removing uart3_passthrough.o(i.Passthrough_CanSend), (36 bytes). Removing uart3_passthrough.o(i.Passthrough_GetPendingCount), (12 bytes). Removing uart3_passthrough.o(i.Passthrough_GetStats), (28 bytes). + Removing uart3_passthrough.o(i.Passthrough_Init), (200 bytes). Removing uart3_passthrough.o(i.Passthrough_OnTxComplete), (8 bytes). + Removing uart3_passthrough.o(i.Passthrough_PushBuffer), (336 bytes). + Removing uart3_passthrough.o(i.Passthrough_PushByte), (228 bytes). Removing uart3_passthrough.o(i.Passthrough_ResetStats), (60 bytes). + Removing uart3_passthrough.o(i.Passthrough_Task), (220 bytes). + Removing uart3_passthrough.o(.bss), (560 bytes). + Removing uart3_protocol_discriminator.o(i.UART3_Protocol_CheckTimeout), (180 bytes). + Removing uart3_protocol_discriminator.o(i.UART3_Protocol_FeedByte), (808 bytes). + Removing uart3_protocol_discriminator.o(i.UART3_Protocol_GetPassthroughData), (132 bytes). Removing uart3_protocol_discriminator.o(i.UART3_Protocol_GetState), (12 bytes). + Removing uart3_protocol_discriminator.o(i.UART3_Protocol_Init), (76 bytes). Removing uart3_protocol_discriminator.o(i.UART3_Protocol_Reset), (72 bytes). Removing uart3_protocol_discriminator.o(i.check_scan_timeout), (40 bytes). + Removing uart3_protocol_discriminator.o(.bss), (148 bytes). + Removing tim.o(.rev16_text), (4 bytes). + Removing tim.o(.revsh_text), (4 bytes). + Removing tim.o(.rrx_text), (6 bytes). + Removing tim.o(i.HAL_TIM_Base_MspDeInit), (36 bytes). Removing stm32f1xx_hal_gpio_ex.o(.rev16_text), (4 bytes). Removing stm32f1xx_hal_gpio_ex.o(.revsh_text), (4 bytes). Removing stm32f1xx_hal_gpio_ex.o(.rrx_text), (6 bytes). @@ -1150,13 +1762,10 @@ Removing Unused input sections from the image. Removing stm32f1xx_hal_spi.o(i.HAL_SPI_IRQHandler), (308 bytes). Removing stm32f1xx_hal_spi.o(i.HAL_SPI_MspDeInit), (2 bytes). Removing stm32f1xx_hal_spi.o(i.HAL_SPI_MspInit), (2 bytes). - Removing stm32f1xx_hal_spi.o(i.HAL_SPI_Receive), (382 bytes). Removing stm32f1xx_hal_spi.o(i.HAL_SPI_Receive_DMA), (276 bytes). Removing stm32f1xx_hal_spi.o(i.HAL_SPI_Receive_IT), (216 bytes). Removing stm32f1xx_hal_spi.o(i.HAL_SPI_RxCpltCallback), (2 bytes). Removing stm32f1xx_hal_spi.o(i.HAL_SPI_RxHalfCpltCallback), (2 bytes). - Removing stm32f1xx_hal_spi.o(i.HAL_SPI_Transmit), (444 bytes). - Removing stm32f1xx_hal_spi.o(i.HAL_SPI_TransmitReceive), (576 bytes). Removing stm32f1xx_hal_spi.o(i.HAL_SPI_TransmitReceive_DMA), (352 bytes). Removing stm32f1xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT), (196 bytes). Removing stm32f1xx_hal_spi.o(i.HAL_SPI_Transmit_DMA), (248 bytes). @@ -1184,13 +1793,10 @@ Removing Unused input sections from the image. Removing stm32f1xx_hal_spi.o(i.SPI_DMATransmitCplt), (126 bytes). Removing stm32f1xx_hal_spi.o(i.SPI_DMATransmitReceiveCplt), (102 bytes). Removing stm32f1xx_hal_spi.o(i.SPI_DMATxAbortCallback), (156 bytes). - Removing stm32f1xx_hal_spi.o(i.SPI_EndRxTransaction), (120 bytes). - Removing stm32f1xx_hal_spi.o(i.SPI_EndRxTxTransaction), (40 bytes). Removing stm32f1xx_hal_spi.o(i.SPI_RxISR_16BIT), (36 bytes). Removing stm32f1xx_hal_spi.o(i.SPI_RxISR_8BIT), (36 bytes). Removing stm32f1xx_hal_spi.o(i.SPI_TxISR_16BIT), (36 bytes). Removing stm32f1xx_hal_spi.o(i.SPI_TxISR_8BIT), (36 bytes). - Removing stm32f1xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout), (216 bytes). Removing stm32f1xx_hal.o(.rev16_text), (4 bytes). Removing stm32f1xx_hal.o(.revsh_text), (4 bytes). Removing stm32f1xx_hal.o(.rrx_text), (6 bytes). @@ -1341,9 +1947,154 @@ Removing Unused input sections from the image. Removing stm32f1xx_hal_tim.o(.rev16_text), (4 bytes). Removing stm32f1xx_hal_tim.o(.revsh_text), (4 bytes). Removing stm32f1xx_hal_tim.o(.rrx_text), (6 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Base_DeInit), (120 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Base_GetState), (8 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Base_MspDeInit), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Base_MspInit), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start), (108 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start_DMA), (200 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Stop), (50 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Stop_DMA), (70 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Stop_IT), (62 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_ConfigOCrefClear), (278 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_ConfigTI1Input), (22 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurstState), (8 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiReadStart), (476 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_MultiWriteStart), (476 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_ReadStart), (42 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_ReadStop), (140 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_WriteStart), (42 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_DMABurst_WriteStop), (140 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_DeInit), (96 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_GetState), (8 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Init), (196 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_MspDeInit), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_MspInit), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Start), (204 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Start_DMA), (556 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Start_IT), (252 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Stop), (214 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Stop_DMA), (280 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_Encoder_Stop_IT), (256 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_ErrorCallback), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_GenerateEvent), (54 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_GetActiveChannel), (6 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_GetChannelState), (38 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_IC_CaptureHalfCpltCallback), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_IC_ConfigChannel), (222 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_IC_DeInit), (120 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_IC_GetState), (8 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Init), (102 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_IC_MspDeInit), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_IC_MspInit), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Start), (268 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Start_DMA), (560 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Start_IT), (352 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Stop), (138 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Stop_DMA), (244 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_IC_Stop_IT), (222 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OC_ConfigChannel), (112 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OC_DeInit), (120 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OC_GetState), (8 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Init), (102 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OC_MspDeInit), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OC_MspInit), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Start), (212 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Start_DMA), (532 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Start_IT), (292 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Stop), (156 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Stop_DMA), (264 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Stop_IT), (240 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_ConfigChannel), (310 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_DeInit), (96 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_GetState), (8 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_Init), (102 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_MspDeInit), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_MspInit), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_Start), (128 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_Start_IT), (152 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_Stop), (148 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_OnePulse_Stop_IT), (172 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_ConfigChannel), (260 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_DeInit), (120 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_GetState), (8 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Init), (102 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_MspDeInit), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_MspInit), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_PulseFinishedHalfCpltCallback), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Start), (212 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Start_DMA), (532 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Start_IT), (292 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Stop), (156 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Stop_DMA), (264 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Stop_IT), (240 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_PeriodElapsedCallback), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_PeriodElapsedHalfCpltCallback), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_ReadCapturedValue), (50 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_SlaveConfigSynchro), (108 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_SlaveConfigSynchro_IT), (108 bytes). + Removing stm32f1xx_hal_tim.o(i.HAL_TIM_TriggerHalfCpltCallback), (2 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd), (34 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_DMACaptureCplt), (122 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_DMACaptureHalfCplt), (64 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_DMADelayPulseCplt), (104 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_DMADelayPulseHalfCplt), (64 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_DMAError), (94 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_DMAPeriodElapsedCplt), (26 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_DMAPeriodElapsedHalfCplt), (14 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_DMATriggerCplt), (26 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_DMATriggerHalfCplt), (14 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_OC1_SetConfig), (96 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_OC2_SetConfig), (104 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_OC3_SetConfig), (104 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_OC4_SetConfig), (72 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_SlaveTimer_SetConfig), (178 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_TI1_SetConfig), (104 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_TI2_SetConfig), (58 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_TI3_SetConfig), (56 bytes). + Removing stm32f1xx_hal_tim.o(i.TIM_TI4_SetConfig), (60 bytes). Removing stm32f1xx_hal_tim_ex.o(.rev16_text), (4 bytes). Removing stm32f1xx_hal_tim_ex.o(.revsh_text), (4 bytes). Removing stm32f1xx_hal_tim_ex.o(.rrx_text), (6 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_CommutHalfCpltCallback), (2 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_ConfigBreakDeadTime), (116 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_ConfigCommutEvent), (134 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_ConfigCommutEvent_DMA), (164 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_ConfigCommutEvent_IT), (134 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_GetChannelNState), (38 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_DeInit), (96 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_GetState), (8 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Init), (234 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_MspDeInit), (2 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_MspInit), (2 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Start), (168 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Start_DMA), (232 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Start_IT), (180 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Stop), (78 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Stop_DMA), (84 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_HallSensor_Stop_IT), (90 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OCN_Start), (196 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OCN_Start_DMA), (456 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OCN_Start_IT), (276 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OCN_Stop), (136 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OCN_Stop_DMA), (220 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OCN_Stop_IT), (230 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OnePulseN_Start), (118 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OnePulseN_Start_IT), (142 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OnePulseN_Stop), (138 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_OnePulseN_Stop_IT), (162 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Start), (196 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Start_DMA), (456 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Start_IT), (276 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Stop), (136 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Stop_DMA), (220 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_PWMN_Stop_IT), (230 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_RemapConfig), (6 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.TIMEx_DMACommutationCplt), (20 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.TIMEx_DMACommutationHalfCplt), (20 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.TIM_CCxNChannelCmd), (34 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.TIM_DMADelayPulseNCplt), (104 bytes). + Removing stm32f1xx_hal_tim_ex.o(i.TIM_DMAErrorCCxN), (68 bytes). Removing stm32f1xx_hal_uart.o(.rev16_text), (4 bytes). Removing stm32f1xx_hal_uart.o(.revsh_text), (4 bytes). Removing stm32f1xx_hal_uart.o(.rrx_text), (6 bytes). @@ -1372,6 +2123,7 @@ Removing Unused input sections from the image. Removing stm32f1xx_hal_uart.o(i.HAL_UART_DMAResume), (170 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_DMAStop), (138 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_DeInit), (62 bytes). + Removing stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback), (2 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_GetError), (6 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_GetState), (20 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_MspDeInit), (2 bytes). @@ -1417,13 +2169,49 @@ Removing Unused input sections from the image. Removing rf433_hal.o(.rev16_text), (4 bytes). Removing rf433_hal.o(.revsh_text), (4 bytes). Removing rf433_hal.o(.rrx_text), (6 bytes). + Removing rf433_hal.o(i.rf433_fifo_write), (96 bytes). Removing rf433_hal.o(i.rf433_hal_check_rx_done), (12 bytes). Removing rf433_hal.o(i.rf433_hal_fifo_write), (16 bytes). Removing rf433_hal.o(i.rf433_hal_reset), (44 bytes). Removing rf433_hal.o(i.rf433_hal_uart_rx_callback), (28 bytes). + Removing rf433_hal.o(i.rf433_hal_uart_rxcplt_callback), (52 bytes). Removing rf433_hal.o(i.uart1_wait_response_blocked), (86 bytes). + Removing wiz_platform.o(.rev16_text), (4 bytes). + Removing wiz_platform.o(.revsh_text), (4 bytes). + Removing wiz_platform.o(.rrx_text), (6 bytes). + Removing wiz_platform.o(i.wiz_tim_irq_disable), (16 bytes). + Removing wiz_platform.o(i.wiz_tim_irq_enable), (16 bytes). + Removing user_main.o(i.user_run), (72 bytes). + Removing user_main.o(.bss), (2048 bytes). + Removing loopback.o(.rev16_text), (4 bytes). + Removing loopback.o(.revsh_text), (4 bytes). + Removing loopback.o(.rrx_text), (6 bytes). + Removing loopback.o(i.loopback_tcpc), (740 bytes). + Removing loopback.o(i.loopback_tcps), (620 bytes). + Removing loopback.o(i.loopback_udpc), (376 bytes). + Removing loopback.o(.data), (4 bytes). + Removing multicast.o(i.multicast_loopback), (468 bytes). + Removing multicast.o(i.multicast_recv), (476 bytes). + Removing socket.o(i.connect), (348 bytes). + Removing socket.o(i.ctlsocket), (300 bytes). + Removing socket.o(i.disconnect), (188 bytes). + Removing socket.o(i.getsockopt), (408 bytes). + Removing socket.o(i.listen), (158 bytes). + Removing socket.o(i.recv), (288 bytes). + Removing socket.o(i.send), (384 bytes). + Removing socket.o(i.setsockopt), (398 bytes). + Removing wizchip_conf.o(i.ctlnetwork), (80 bytes). + Removing wizchip_conf.o(i.reg_wizchip_bus_cbfunc), (52 bytes). + Removing wizchip_conf.o(i.reg_wizchip_cris_cbfunc), (40 bytes). + Removing wizchip_conf.o(i.wizchip_getnetmode), (10 bytes). + Removing wizchip_conf.o(i.wizchip_gettimeout), (40 bytes). + Removing wizchip_conf.o(i.wizchip_setnetmode), (38 bytes). + Removing wizchip_conf.o(i.wizchip_settimeout), (38 bytes). + Removing wizchip_conf.o(i.wizphy_getphystat), (28 bytes). + Removing dhcp.o(i.getDHCPLeasetime), (12 bytes). + Removing dhcp.o(i.reg_dhcp_cbfunc), (64 bytes). -383 unused section(s) (total 22736 bytes) removed from the image. +600 unused section(s) (total 53308 bytes) removed from the image. ============================================================================== @@ -1455,57 +2243,63 @@ Image Symbol Table ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c 0x00000000 Number 0 stm32f1xx_hal_tim.o ABSOLUTE ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c 0x00000000 Number 0 stm32f1xx_hal_tim_ex.o ABSOLUTE ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c 0x00000000 Number 0 stm32f1xx_hal_uart.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isblank_o.o ABSOLUTE + ../clib/../cmprslib/zerorunl2.c 0x00000000 Number 0 __dczerorl2.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_c.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isxdigit_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isupper_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 iscntrl_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isdigit_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isgraph_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 islower_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalnum_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isprint_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ispunct_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isxdigit_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_c.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_c.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isprint_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isgraph_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalnum_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalpha_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isblank_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 iscntrl_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isdigit_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_c.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 islower_o.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uldiv.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE ../clib/microlib/errno.c 0x00000000 Number 0 errno.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry12b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry12a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE - ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE - ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE + ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocra.o ABSOLUTE + ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloca.o ABSOLUTE + ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocr.o ABSOLUTE + ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloc.o ABSOLUTE + ../clib/microlib/malloc/mvars.c 0x00000000 Number 0 mvars.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE ../clib/microlib/printf/stubs.s 0x00000000 Number 0 stubs.o ABSOLUTE ../clib/microlib/stdio/streams.c 0x00000000 Number 0 stdout.o ABSOLUTE - ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE + ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE ../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE ../clib/microlib/string/strcmp.c 0x00000000 Number 0 strcmp.o ABSOLUTE ../clib/microlib/string/strlen.c 0x00000000 Number 0 strlen.o ABSOLUTE @@ -1514,11 +2308,11 @@ Image Symbol Table ../clib/microlib/stubs.s 0x00000000 Number 0 iusefp.o ABSOLUTE ../clib/scanf.c 0x00000000 Number 0 scanf_char.o ABSOLUTE ../clib/scanf.c 0x00000000 Number 0 _chval.o ABSOLUTE - ../clib/scanf.c 0x00000000 Number 0 _scanf_int.o ABSOLUTE ../clib/scanf.c 0x00000000 Number 0 _strtoul.o ABSOLUTE - ../clib/scanf.c 0x00000000 Number 0 _scanf.o ABSOLUTE ../clib/scanf.c 0x00000000 Number 0 _sgetc.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 _scanf_int.o ABSOLUTE ../clib/scanf.c 0x00000000 Number 0 atoi.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 _scanf.o ABSOLUTE ../clib/scanf.c 0x00000000 Number 0 __0sscanf.o ABSOLUTE ../clib/scanf.c 0x00000000 Number 0 strtol.o ABSOLUTE ../fplib/microlib/fpadd.c 0x00000000 Number 0 dadd.o ABSOLUTE @@ -1541,6 +2335,7 @@ Image Symbol Table ..\Core\Src\stm32f1xx_it.c 0x00000000 Number 0 stm32f1xx_it.o ABSOLUTE ..\Core\Src\system_stm32f1xx.c 0x00000000 Number 0 system_stm32f1xx.o ABSOLUTE ..\Core\Src\systick.c 0x00000000 Number 0 systick.o ABSOLUTE + ..\Core\Src\tim.c 0x00000000 Number 0 tim.o ABSOLUTE ..\Core\Src\uart2_print.c 0x00000000 Number 0 uart2_print.o ABSOLUTE ..\Core\Src\uart3_passthrough.c 0x00000000 Number 0 uart3_passthrough.o ABSOLUTE ..\Core\Src\uart3_protocol_discriminator.c 0x00000000 Number 0 uart3_protocol_discriminator.o ABSOLUTE @@ -1562,17 +2357,30 @@ Image Symbol Table ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c 0x00000000 Number 0 stm32f1xx_hal_tim.o ABSOLUTE ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c 0x00000000 Number 0 stm32f1xx_hal_tim_ex.o ABSOLUTE ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c 0x00000000 Number 0 stm32f1xx_hal_uart.o ABSOLUTE + ..\User\Loopback\loopback.c 0x00000000 Number 0 loopback.o ABSOLUTE + ..\User\ioLibrary_Driver\Application\multicast\multicast.c 0x00000000 Number 0 multicast.o ABSOLUTE + ..\User\ioLibrary_Driver\Ethernet\W5500\w5500.c 0x00000000 Number 0 w5500.o ABSOLUTE + ..\User\ioLibrary_Driver\Ethernet\socket.c 0x00000000 Number 0 socket.o ABSOLUTE + ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.c 0x00000000 Number 0 wizchip_conf.o ABSOLUTE + ..\User\ioLibrary_Driver\Internet\DHCP\dhcp.c 0x00000000 Number 0 dhcp.o ABSOLUTE + ..\User\user_main\user_main.c 0x00000000 Number 0 user_main.o ABSOLUTE + ..\User\wiz_interface\wiz_interface.c 0x00000000 Number 0 wiz_interface.o ABSOLUTE + ..\User\wiz_platform\wiz_platform.c 0x00000000 Number 0 wiz_platform.o ABSOLUTE ..\\Core\\Src\\cmd_router.c 0x00000000 Number 0 cmd_router.o ABSOLUTE + ..\\Core\\Src\\debug_log.c 0x00000000 Number 0 debug_log.o ABSOLUTE ..\\Core\\Src\\io_monitor.c 0x00000000 Number 0 io_monitor.o ABSOLUTE ..\\Core\\Src\\multi_uart_router.c 0x00000000 Number 0 multi_uart_router.o ABSOLUTE ..\\Core\\Src\\relay_control.c 0x00000000 Number 0 relay_control.o ABSOLUTE ..\\Core\\Src\\rf433_rx_app.c 0x00000000 Number 0 rf433_rx_app.o ABSOLUTE ..\\Core\\Src\\rf433_tx_app.c 0x00000000 Number 0 rf433_tx_app.o ABSOLUTE ..\\Core\\Src\\systick.c 0x00000000 Number 0 systick.o ABSOLUTE + ..\\Core\\Src\\tim.c 0x00000000 Number 0 tim.o ABSOLUTE ..\\Core\\Src\\uart2_print.c 0x00000000 Number 0 uart2_print.o ABSOLUTE ..\\Core\\Src\\uart3_passthrough.c 0x00000000 Number 0 uart3_passthrough.o ABSOLUTE ..\\Driver_RF433\\Src\\rf433.c 0x00000000 Number 0 rf433.o ABSOLUTE ..\\Driver_RF433\\Src\\rf433_hal.c 0x00000000 Number 0 rf433_hal.o ABSOLUTE + ..\\User\\Loopback\\loopback.c 0x00000000 Number 0 loopback.o ABSOLUTE + ..\\User\\wiz_platform\\wiz_platform.c 0x00000000 Number 0 wiz_platform.o ABSOLUTE cdrcmple.s 0x00000000 Number 0 cdrcmple.o ABSOLUTE dc.s 0x00000000 Number 0 dc.o ABSOLUTE handlers.s 0x00000000 Number 0 handlers.o ABSOLUTE @@ -1597,344 +2405,432 @@ Image Symbol Table .text 0x08000162 Section 0 memcpya.o(.text) .text 0x08000186 Section 0 memseta.o(.text) .text 0x080001aa Section 0 strlen.o(.text) - .text 0x080001b8 Section 0 strcmp.o(.text) - .text 0x080001d4 Section 0 strncmp.o(.text) - .text 0x080001f4 Section 0 __0sscanf.o(.text) - .text 0x0800022c Section 0 _scanf_int.o(.text) - .text 0x08000378 Section 0 atoi.o(.text) - .text 0x08000392 Section 0 uidiv.o(.text) - .text 0x080003be Section 0 uldiv.o(.text) - .text 0x08000420 Section 0 _chval.o(.text) - .text 0x0800043c Section 0 scanf_char.o(.text) - _scanf_char_input 0x0800043d Thumb Code 12 scanf_char.o(.text) - .text 0x08000464 Section 0 _sgetc.o(.text) - .text 0x080004a4 Section 0 strtol.o(.text) - .text 0x08000514 Section 0 iusefp.o(.text) - .text 0x08000514 Section 0 dadd.o(.text) - .text 0x08000662 Section 0 dmul.o(.text) - .text 0x08000746 Section 0 ddiv.o(.text) - .text 0x08000824 Section 0 dfixul.o(.text) - .text 0x08000854 Section 48 cdrcmple.o(.text) - .text 0x08000884 Section 36 init.o(.text) - .text 0x080008a8 Section 0 llshl.o(.text) - .text 0x080008c6 Section 0 llsshr.o(.text) - .text 0x080008ec Section 0 _scanf.o(.text) - .text 0x08000c1c Section 0 _strtoul.o(.text) - .text 0x08000cba Section 0 depilogue.o(.text) - i.BusFault_Handler 0x08000d74 Section 0 stm32f1xx_it.o(i.BusFault_Handler) - i.CmdParser_FeedByte 0x08000d78 Section 0 cmd_parser.o(i.CmdParser_FeedByte) - i.CmdParser_HasCompleteFrame 0x080010a8 Section 0 cmd_parser.o(i.CmdParser_HasCompleteFrame) - i.CmdParser_Init 0x080010d8 Section 0 cmd_parser.o(i.CmdParser_Init) - i.CmdParser_SetResponseCallback 0x08001104 Section 0 cmd_parser.o(i.CmdParser_SetResponseCallback) - i.CmdParser_SetSourcePort 0x08001110 Section 0 cmd_parser.o(i.CmdParser_SetSourcePort) - i.CmdParser_Task 0x0800111c Section 0 cmd_parser.o(i.CmdParser_Task) - i.CmdRouter_Init 0x08001140 Section 0 cmd_router.o(i.CmdRouter_Init) - i.CmdRouter_Task 0x08001220 Section 0 cmd_router.o(i.CmdRouter_Task) - i.DebugLog_Init 0x080013cc Section 0 debug_log.o(i.DebugLog_Init) - i.DebugLog_Output 0x0800140c Section 0 debug_log.o(i.DebugLog_Output) - i.DebugMon_Handler 0x080014bc Section 0 stm32f1xx_it.o(i.DebugMon_Handler) - i.Error_Handler 0x080014be Section 0 main.o(i.Error_Handler) - i.HAL_DMA_Abort 0x080014c4 Section 0 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) - i.HAL_DMA_Abort_IT 0x0800151c Section 0 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) - i.HAL_Delay 0x080015cc Section 0 stm32f1xx_hal.o(i.HAL_Delay) - i.HAL_GPIO_Init 0x080015f4 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) - i.HAL_GPIO_ReadPin 0x08001914 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin) - i.HAL_GPIO_WritePin 0x08001924 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) - i.HAL_GetTick 0x08001930 Section 0 stm32f1xx_hal.o(i.HAL_GetTick) - i.HAL_IncTick 0x0800193c Section 0 stm32f1xx_hal.o(i.HAL_IncTick) - i.HAL_Init 0x08001954 Section 0 stm32f1xx_hal.o(i.HAL_Init) - i.HAL_InitTick 0x0800197c Section 0 stm32f1xx_hal.o(i.HAL_InitTick) - i.HAL_MspInit 0x080019c8 Section 0 stm32f1xx_hal_msp.o(i.HAL_MspInit) - i.HAL_NVIC_EnableIRQ 0x08001a1c Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) - i.HAL_NVIC_SetPriority 0x08001a3c Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) - i.HAL_NVIC_SetPriorityGrouping 0x08001ab8 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping) - i.HAL_RCC_ClockConfig 0x08001ae0 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig) - i.HAL_RCC_GetHCLKFreq 0x08001c6c Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) - i.HAL_RCC_GetPCLK1Freq 0x08001c78 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) - i.HAL_RCC_GetPCLK2Freq 0x08001c98 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) - i.HAL_RCC_GetSysClockFreq 0x08001cb8 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) - i.HAL_RCC_OscConfig 0x08001d28 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) - i.HAL_SPI_Init 0x0800218c Section 0 stm32f1xx_hal_spi.o(i.HAL_SPI_Init) - i.HAL_SPI_MspInit 0x0800224c Section 0 spi.o(i.HAL_SPI_MspInit) - i.HAL_SYSTICK_Config 0x080022d4 Section 0 stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config) - i.HAL_UARTEx_RxEventCallback 0x08002308 Section 0 stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback) - i.HAL_UART_ErrorCallback 0x0800230a Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) - i.HAL_UART_IRQHandler 0x0800230c Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) - i.HAL_UART_Init 0x080025f0 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Init) - i.HAL_UART_MspInit 0x08002668 Section 0 usart.o(i.HAL_UART_MspInit) - i.HAL_UART_Receive_IT 0x080027f8 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) - i.HAL_UART_RxCpltCallback 0x08002824 Section 0 main.o(i.HAL_UART_RxCpltCallback) - i.HAL_UART_Transmit 0x080028a4 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) - i.HAL_UART_Transmit_IT 0x08002956 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT) - i.HAL_UART_TxCpltCallback 0x08002990 Section 0 main.o(i.HAL_UART_TxCpltCallback) - i.HardFault_Handler 0x080029d0 Section 0 stm32f1xx_it.o(i.HardFault_Handler) - i.IO_Monitor_GetAllStates 0x080029d4 Section 0 io_monitor.o(i.IO_Monitor_GetAllStates) - i.IO_Monitor_GetState 0x080029fc Section 0 io_monitor.o(i.IO_Monitor_GetState) - i.IO_Monitor_Init 0x08002a14 Section 0 io_monitor.o(i.IO_Monitor_Init) - i.IO_Monitor_Task 0x08002a94 Section 0 io_monitor.o(i.IO_Monitor_Task) - i.MX_GPIO_Init 0x08002b1c Section 0 gpio.o(i.MX_GPIO_Init) - i.MX_SPI2_Init 0x08002c2c Section 0 spi.o(i.MX_SPI2_Init) - i.MX_USART1_UART_Init 0x08002c70 Section 0 usart.o(i.MX_USART1_UART_Init) - i.MX_USART2_UART_Init 0x08002ca8 Section 0 usart.o(i.MX_USART2_UART_Init) - i.MX_USART3_UART_Init 0x08002ce0 Section 0 usart.o(i.MX_USART3_UART_Init) - i.MemManage_Handler 0x08002d18 Section 0 stm32f1xx_it.o(i.MemManage_Handler) - i.MultiUART_FeedByte 0x08002d1c Section 0 multi_uart_router.o(i.MultiUART_FeedByte) - i.MultiUART_GetPortName 0x08002d88 Section 0 multi_uart_router.o(i.MultiUART_GetPortName) - i.MultiUART_GetRxCount 0x08002da8 Section 0 multi_uart_router.o(i.MultiUART_GetRxCount) - i.MultiUART_GetTxAvailable 0x08002dcc Section 0 multi_uart_router.o(i.MultiUART_GetTxAvailable) - i.MultiUART_Init 0x08002df8 Section 0 multi_uart_router.o(i.MultiUART_Init) - i.MultiUART_ReadByte 0x08002e84 Section 0 multi_uart_router.o(i.MultiUART_ReadByte) - i.MultiUART_Send 0x08002ee0 Section 0 multi_uart_router.o(i.MultiUART_Send) - i.MultiUART_SendString 0x08002f44 Section 0 multi_uart_router.o(i.MultiUART_SendString) - i.MultiUART_Task 0x08002f64 Section 0 multi_uart_router.o(i.MultiUART_Task) - i.MultiUART_TxCpltCallback 0x08002f98 Section 0 multi_uart_router.o(i.MultiUART_TxCpltCallback) - i.NMI_Handler 0x08003010 Section 0 stm32f1xx_it.o(i.NMI_Handler) - i.Passthrough_CanSend 0x08003014 Section 0 uart3_passthrough.o(i.Passthrough_CanSend) - i.Passthrough_Init 0x08003038 Section 0 uart3_passthrough.o(i.Passthrough_Init) - i.Passthrough_PushBuffer 0x08003100 Section 0 uart3_passthrough.o(i.Passthrough_PushBuffer) - i.Passthrough_PushByte 0x08003250 Section 0 uart3_passthrough.o(i.Passthrough_PushByte) - i.Passthrough_Task 0x08003334 Section 0 uart3_passthrough.o(i.Passthrough_Task) - i.PendSV_Handler 0x08003410 Section 0 stm32f1xx_it.o(i.PendSV_Handler) - i.RCC_Delay 0x08003414 Section 0 stm32f1xx_hal_rcc.o(i.RCC_Delay) - RCC_Delay 0x08003415 Thumb Code 36 stm32f1xx_hal_rcc.o(i.RCC_Delay) - i.Relay_Init 0x0800343c Section 0 relay_control.o(i.Relay_Init) - i.Relay_SetState 0x08003488 Section 0 relay_control.o(i.Relay_SetState) - i.SVC_Handler 0x08003558 Section 0 stm32f1xx_it.o(i.SVC_Handler) - i.SysTick_Handler 0x0800355a Section 0 stm32f1xx_it.o(i.SysTick_Handler) - i.SystemClock_Config 0x08003566 Section 0 main.o(i.SystemClock_Config) - i.SystemInit 0x080035cc Section 0 system_stm32f1xx.o(i.SystemInit) - i.UART2_Print_Init 0x080035d0 Section 0 uart2_print.o(i.UART2_Print_Init) - i.UART2_Print_Printf 0x08003620 Section 0 uart2_print.o(i.UART2_Print_Printf) - i.UART2_Print_Send 0x08003660 Section 0 uart2_print.o(i.UART2_Print_Send) - i.UART2_Print_String 0x08003714 Section 0 uart2_print.o(i.UART2_Print_String) - i.UART2_Print_Task 0x08003730 Section 0 uart2_print.o(i.UART2_Print_Task) - i.UART2_Print_TxCpltCallback 0x0800379c Section 0 uart2_print.o(i.UART2_Print_TxCpltCallback) - i.UART3_Protocol_CheckTimeout 0x08003808 Section 0 uart3_protocol_discriminator.o(i.UART3_Protocol_CheckTimeout) - i.UART3_Protocol_FeedByte 0x080038bc Section 0 uart3_protocol_discriminator.o(i.UART3_Protocol_FeedByte) - i.UART3_Protocol_GetPassthroughData 0x08003be4 Section 0 uart3_protocol_discriminator.o(i.UART3_Protocol_GetPassthroughData) - i.UART3_Protocol_Init 0x08003c68 Section 0 uart3_protocol_discriminator.o(i.UART3_Protocol_Init) - i.UART_DMAAbortOnError 0x08003cb4 Section 0 stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) - UART_DMAAbortOnError 0x08003cb5 Thumb Code 20 stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) - i.UART_EndRxTransfer 0x08003cc8 Section 0 stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) - UART_EndRxTransfer 0x08003cc9 Thumb Code 108 stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) - i.UART_EndTransmit_IT 0x08003d34 Section 0 stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT) - UART_EndTransmit_IT 0x08003d35 Thumb Code 32 stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT) - i.UART_Receive_IT 0x08003d54 Section 0 stm32f1xx_hal_uart.o(i.UART_Receive_IT) - UART_Receive_IT 0x08003d55 Thumb Code 252 stm32f1xx_hal_uart.o(i.UART_Receive_IT) - i.UART_SetConfig 0x08003e50 Section 0 stm32f1xx_hal_uart.o(i.UART_SetConfig) - UART_SetConfig 0x08003e51 Thumb Code 248 stm32f1xx_hal_uart.o(i.UART_SetConfig) - i.UART_Start_Receive_IT 0x08003f4c Section 0 stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT) - i.UART_Transmit_IT 0x08003f8c Section 0 stm32f1xx_hal_uart.o(i.UART_Transmit_IT) - UART_Transmit_IT 0x08003f8d Thumb Code 96 stm32f1xx_hal_uart.o(i.UART_Transmit_IT) - i.UART_WaitOnFlagUntilTimeout 0x08003fec Section 0 stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) - UART_WaitOnFlagUntilTimeout 0x08003fed Thumb Code 146 stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) - i.USART1_IRQHandler 0x08004080 Section 0 stm32f1xx_it.o(i.USART1_IRQHandler) - i.USART2_IRQHandler 0x08004090 Section 0 stm32f1xx_it.o(i.USART2_IRQHandler) - i.USART3_IRQHandler 0x080040a0 Section 0 stm32f1xx_it.o(i.USART3_IRQHandler) - i.UsageFault_Handler 0x080040b0 Section 0 stm32f1xx_it.o(i.UsageFault_Handler) - i.__0printf 0x080040b4 Section 0 printfa.o(i.__0printf) - i.__0snprintf 0x080040d4 Section 0 printfa.o(i.__0snprintf) - i.__0vsnprintf 0x08004108 Section 0 printfa.o(i.__0vsnprintf) - i.__NVIC_GetPriorityGrouping 0x0800413c Section 0 stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping) - __NVIC_GetPriorityGrouping 0x0800413d Thumb Code 10 stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping) - i.__NVIC_SetPriority 0x0800414c Section 0 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) - __NVIC_SetPriority 0x0800414d Thumb Code 32 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) - i.__aeabi_errno_addr 0x08004174 Section 0 errno.o(i.__aeabi_errno_addr) - i.__scatterload_copy 0x0800417c Section 14 handlers.o(i.__scatterload_copy) - i.__scatterload_null 0x0800418a Section 2 handlers.o(i.__scatterload_null) - i.__scatterload_zeroinit 0x0800418c Section 14 handlers.o(i.__scatterload_zeroinit) - i._fp_digits 0x0800419c Section 0 printfa.o(i._fp_digits) - _fp_digits 0x0800419d Thumb Code 366 printfa.o(i._fp_digits) - i._printf_core 0x08004320 Section 0 printfa.o(i._printf_core) - _printf_core 0x08004321 Thumb Code 1704 printfa.o(i._printf_core) - i._printf_post_padding 0x080049d4 Section 0 printfa.o(i._printf_post_padding) - _printf_post_padding 0x080049d5 Thumb Code 36 printfa.o(i._printf_post_padding) - i._printf_pre_padding 0x080049f8 Section 0 printfa.o(i._printf_pre_padding) - _printf_pre_padding 0x080049f9 Thumb Code 46 printfa.o(i._printf_pre_padding) - i._snputc 0x08004a26 Section 0 printfa.o(i._snputc) - _snputc 0x08004a27 Thumb Code 22 printfa.o(i._snputc) - i.append_rx_log 0x08004a3c Section 0 cmd_router.o(i.append_rx_log) - append_rx_log 0x08004a3d Thumb Code 54 cmd_router.o(i.append_rx_log) - i.calc_checksum 0x08004a80 Section 0 cmd_parser.o(i.calc_checksum) - calc_checksum 0x08004a81 Thumb Code 26 cmd_parser.o(i.calc_checksum) - i.calc_checksum 0x08004a9a Section 0 io_monitor.o(i.calc_checksum) - calc_checksum 0x08004a9b Thumb Code 26 io_monitor.o(i.calc_checksum) - i.cmd_parser_response_callback 0x08004ab4 Section 0 cmd_router.o(i.cmd_parser_response_callback) - cmd_parser_response_callback 0x08004ab5 Thumb Code 86 cmd_router.o(i.cmd_parser_response_callback) - i.flush_rx_log 0x08004b28 Section 0 cmd_router.o(i.flush_rx_log) - flush_rx_log 0x08004b29 Thumb Code 162 cmd_router.o(i.flush_rx_log) - i.fputc 0x08004bfc Section 0 uart2_print.o(i.fputc) - i.gpio_led_rx_off 0x08004c0c Section 0 gpio.o(i.gpio_led_rx_off) - i.gpio_led_rx_on 0x08004c20 Section 0 gpio.o(i.gpio_led_rx_on) - i.gpio_led_tx_off 0x08004c34 Section 0 gpio.o(i.gpio_led_tx_off) - i.gpio_led_tx_on 0x08004c48 Section 0 gpio.o(i.gpio_led_tx_on) - i.hex_char_to_val 0x08004c5c Section 0 cmd_parser.o(i.hex_char_to_val) - hex_char_to_val 0x08004c5d Thumb Code 54 cmd_parser.o(i.hex_char_to_val) - i.hex_to_byte 0x08004c92 Section 0 cmd_parser.o(i.hex_to_byte) - hex_to_byte 0x08004c93 Thumb Code 28 cmd_parser.o(i.hex_to_byte) - i.init_modules 0x08004cb0 Section 0 debug_log.o(i.init_modules) - init_modules 0x08004cb1 Thumb Code 46 debug_log.o(i.init_modules) - i.is_module_enabled 0x08004ce8 Section 0 debug_log.o(i.is_module_enabled) - is_module_enabled 0x08004ce9 Thumb Code 72 debug_log.o(i.is_module_enabled) - i.is_str_empty 0x08004d34 Section 0 cmd_parser.o(i.is_str_empty) - is_str_empty 0x08004d35 Thumb Code 16 cmd_parser.o(i.is_str_empty) - i.is_str_numeric 0x08004d44 Section 0 cmd_parser.o(i.is_str_numeric) - is_str_numeric 0x08004d45 Thumb Code 48 cmd_parser.o(i.is_str_numeric) - i.is_valid_cmd_char 0x08004d74 Section 0 cmd_parser.o(i.is_valid_cmd_char) - is_valid_cmd_char 0x08004d75 Thumb Code 38 cmd_parser.o(i.is_valid_cmd_char) - i.is_valid_param_char 0x08004d9a Section 0 cmd_parser.o(i.is_valid_param_char) - is_valid_param_char 0x08004d9b Thumb Code 38 cmd_parser.o(i.is_valid_param_char) - i.main 0x08004dc0 Section 0 main.o(i.main) - i.process_cmd_frame 0x08004f34 Section 0 cmd_parser.o(i.process_cmd_frame) - process_cmd_frame 0x08004f35 Thumb Code 400 cmd_parser.o(i.process_cmd_frame) - i.reset_parser 0x08005258 Section 0 cmd_parser.o(i.reset_parser) - reset_parser 0x08005259 Thumb Code 32 cmd_parser.o(i.reset_parser) - i.rf433_fifo_clear 0x0800527c Section 0 rf433_hal.o(i.rf433_fifo_clear) - rf433_fifo_clear 0x0800527d Thumb Code 16 rf433_hal.o(i.rf433_fifo_clear) - i.rf433_fifo_get_length 0x08005298 Section 0 rf433_hal.o(i.rf433_fifo_get_length) - rf433_fifo_get_length 0x08005299 Thumb Code 20 rf433_hal.o(i.rf433_fifo_get_length) - i.rf433_fifo_read 0x080052b0 Section 0 rf433_hal.o(i.rf433_fifo_read) - rf433_fifo_read 0x080052b1 Thumb Code 100 rf433_hal.o(i.rf433_fifo_read) - i.rf433_fifo_write 0x08005320 Section 0 rf433_hal.o(i.rf433_fifo_write) - rf433_fifo_write 0x08005321 Thumb Code 82 rf433_hal.o(i.rf433_fifo_write) - i.rf433_hal_1ms_callback 0x08005380 Section 0 rf433_hal.o(i.rf433_hal_1ms_callback) - i.rf433_hal_aux_wait 0x080053a8 Section 0 rf433_hal.o(i.rf433_hal_aux_wait) - i.rf433_hal_deinit 0x080053e8 Section 0 rf433_hal.o(i.rf433_hal_deinit) - i.rf433_hal_fifo_clear 0x08005404 Section 0 rf433_hal.o(i.rf433_hal_fifo_clear) - i.rf433_hal_fifo_get_length 0x0800540c Section 0 rf433_hal.o(i.rf433_hal_fifo_get_length) - i.rf433_hal_fifo_read 0x08005418 Section 0 rf433_hal.o(i.rf433_hal_fifo_read) - i.rf433_hal_init 0x0800542c Section 0 rf433_hal.o(i.rf433_hal_init) - i.rf433_hal_set_work_mode 0x08005460 Section 0 rf433_hal.o(i.rf433_hal_set_work_mode) - i.rf433_hal_uart_rxcplt_callback 0x08005500 Section 0 rf433_hal.o(i.rf433_hal_uart_rxcplt_callback) - i.rf433_hal_uart_tx 0x08005534 Section 0 rf433_hal.o(i.rf433_hal_uart_tx) - i.rf433_init 0x08005564 Section 0 rf433.o(i.rf433_init) - i.rf433_rx_app_init 0x080055c4 Section 0 rf433_rx_app.o(i.rf433_rx_app_init) - i.rf433_rx_app_parse_packet 0x08005614 Section 0 rf433_rx_app.o(i.rf433_rx_app_parse_packet) - i.rf433_rx_app_start 0x08005664 Section 0 rf433_rx_app.o(i.rf433_rx_app_start) - i.rf433_rx_app_task 0x08005684 Section 0 rf433_rx_app.o(i.rf433_rx_app_task) - i.rf433_rx_start 0x08005724 Section 0 rf433.o(i.rf433_rx_start) - i.rf433_send_config_command 0x08005760 Section 0 rf433.o(i.rf433_send_config_command) - rf433_send_config_command 0x08005761 Thumb Code 30 rf433.o(i.rf433_send_config_command) - i.rf433_set_config 0x08005784 Section 0 rf433.o(i.rf433_set_config) - i.rf433_set_work_mode 0x080057dc Section 0 rf433.o(i.rf433_set_work_mode) - i.rf433_transmit 0x080057f4 Section 0 rf433.o(i.rf433_transmit) - i.rf433_tx_app_init 0x0800582c Section 0 rf433_tx_app.o(i.rf433_tx_app_init) - i.rf433_tx_app_start 0x08005878 Section 0 rf433_tx_app.o(i.rf433_tx_app_start) - i.rf433_tx_app_task 0x080058a4 Section 0 rf433_tx_app.o(i.rf433_tx_app_task) - i.rx_led_control 0x08005978 Section 0 rf433_rx_app.o(i.rx_led_control) - rx_led_control 0x08005979 Thumb Code 18 rf433_rx_app.o(i.rx_led_control) - i.rx_ring_init 0x0800598a Section 0 multi_uart_router.o(i.rx_ring_init) - rx_ring_init 0x0800598b Thumb Code 16 multi_uart_router.o(i.rx_ring_init) - i.rx_ring_push 0x0800599a Section 0 multi_uart_router.o(i.rx_ring_push) - rx_ring_push 0x0800599b Thumb Code 70 multi_uart_router.o(i.rx_ring_push) - i.rx_update_stats 0x080059e0 Section 0 rf433_rx_app.o(i.rx_update_stats) - rx_update_stats 0x080059e1 Thumb Code 56 rf433_rx_app.o(i.rx_update_stats) - i.send_di_event 0x08005a1c Section 0 io_monitor.o(i.send_di_event) - send_di_event 0x08005a1d Thumb Code 110 io_monitor.o(i.send_di_event) - i.send_response_err 0x08005ae4 Section 0 cmd_parser.o(i.send_response_err) - send_response_err 0x08005ae5 Thumb Code 80 cmd_parser.o(i.send_response_err) - i.send_response_ok 0x08005b50 Section 0 cmd_parser.o(i.send_response_ok) - send_response_ok 0x08005b51 Thumb Code 80 cmd_parser.o(i.send_response_ok) - i.systick_interrupt_1ms_callback 0x08005bb8 Section 0 systick.o(i.systick_interrupt_1ms_callback) - i.tx_build_packet 0x08005bd4 Section 0 rf433_tx_app.o(i.tx_build_packet) - tx_build_packet 0x08005bd5 Thumb Code 54 rf433_tx_app.o(i.tx_build_packet) - i.tx_kickoff 0x08005c1c Section 0 multi_uart_router.o(i.tx_kickoff) - tx_kickoff 0x08005c1d Thumb Code 98 multi_uart_router.o(i.tx_kickoff) - i.tx_led_control 0x08005c84 Section 0 rf433_tx_app.o(i.tx_led_control) - tx_led_control 0x08005c85 Thumb Code 18 rf433_tx_app.o(i.tx_led_control) - i.tx_ring_init 0x08005c96 Section 0 multi_uart_router.o(i.tx_ring_init) - tx_ring_init 0x08005c97 Thumb Code 22 multi_uart_router.o(i.tx_ring_init) - i.tx_ring_push 0x08005cac Section 0 multi_uart_router.o(i.tx_ring_push) - tx_ring_push 0x08005cad Thumb Code 94 multi_uart_router.o(i.tx_ring_push) - i.uart1_check_rx_done 0x08005d0c Section 0 rf433_hal.o(i.uart1_check_rx_done) - i.uart1_rx_timeout_1ms_callback 0x08005d5c Section 0 rf433_hal.o(i.uart1_rx_timeout_1ms_callback) - .constdata 0x08005d64 Section 16 debug_log.o(.constdata) - g_level_str 0x08005d64 Data 16 debug_log.o(.constdata) - .constdata 0x08005d74 Section 24 multi_uart_router.o(.constdata) - g_port_uart_map 0x08005d74 Data 12 multi_uart_router.o(.constdata) - g_port_name_map 0x08005d80 Data 12 multi_uart_router.o(.constdata) - .constdata 0x08005d8c Section 18 stm32f1xx_hal_rcc.o(.constdata) - aPLLMULFactorTable 0x08005d8c Data 16 stm32f1xx_hal_rcc.o(.constdata) - aPredivFactorTable 0x08005d9c Data 2 stm32f1xx_hal_rcc.o(.constdata) - .constdata 0x08005d9e Section 24 system_stm32f1xx.o(.constdata) - .constdata 0x08005db6 Section 33 rf433.o(.constdata) - rf433_default_config 0x08005db6 Data 5 rf433.o(.constdata) - request_config 0x08005dbb Data 3 rf433.o(.constdata) - request_name 0x08005dbe Data 13 rf433.o(.constdata) - request_version 0x08005dcb Data 12 rf433.o(.constdata) - .constdata 0x08005dd7 Section 129 ctype_o.o(.constdata) - .constdata 0x08005e58 Section 4 ctype_o.o(.constdata) - table 0x08005e58 Data 4 ctype_o.o(.constdata) - .conststring 0x08005e5c Section 30 debug_log.o(.conststring) - .conststring 0x08005e7c Section 22 multi_uart_router.o(.conststring) + .text 0x080001b8 Section 0 strncmp.o(.text) + .text 0x080001d8 Section 0 __0sscanf.o(.text) + .text 0x08000210 Section 0 _scanf_int.o(.text) + .text 0x0800035c Section 0 uidiv.o(.text) + .text 0x08000388 Section 0 uldiv.o(.text) + .text 0x080003ea Section 0 _chval.o(.text) + .text 0x08000408 Section 0 scanf_char.o(.text) + _scanf_char_input 0x08000409 Thumb Code 12 scanf_char.o(.text) + .text 0x08000430 Section 0 _sgetc.o(.text) + .text 0x08000470 Section 0 iusefp.o(.text) + .text 0x08000470 Section 0 dadd.o(.text) + .text 0x080005be Section 0 dmul.o(.text) + .text 0x080006a2 Section 0 ddiv.o(.text) + .text 0x08000780 Section 0 dfixul.o(.text) + .text 0x080007b0 Section 48 cdrcmple.o(.text) + .text 0x080007e0 Section 36 init.o(.text) + .text 0x08000804 Section 0 llshl.o(.text) + .text 0x08000822 Section 0 llsshr.o(.text) + .text 0x08000848 Section 0 _scanf.o(.text) + .text 0x08000b78 Section 0 depilogue.o(.text) + .text 0x08000c32 Section 0 __dczerorl2.o(.text) + i.BusFault_Handler 0x08000c88 Section 0 stm32f1xx_it.o(i.BusFault_Handler) + i.CmdParser_Init 0x08000c8c Section 0 cmd_parser.o(i.CmdParser_Init) + i.CmdParser_SetResponseCallback 0x08000ca4 Section 0 cmd_parser.o(i.CmdParser_SetResponseCallback) + i.CmdRouter_Init 0x08000cb0 Section 0 cmd_router.o(i.CmdRouter_Init) + i.DHCP_init 0x08000d28 Section 0 dhcp.o(i.DHCP_init) + i.DHCP_run 0x08000e08 Section 0 dhcp.o(i.DHCP_run) + i.DHCP_stop 0x08000fe0 Section 0 dhcp.o(i.DHCP_stop) + i.DHCP_time_handler 0x08000ffc Section 0 dhcp.o(i.DHCP_time_handler) + i.DebugLog_Init 0x0800100c Section 0 debug_log.o(i.DebugLog_Init) + i.DebugLog_Output 0x0800104c Section 0 debug_log.o(i.DebugLog_Output) + i.DebugLog_SetLevel 0x08001108 Section 0 debug_log.o(i.DebugLog_SetLevel) + i.DebugMon_Handler 0x08001114 Section 0 stm32f1xx_it.o(i.DebugMon_Handler) + i.Error_Handler 0x08001116 Section 0 main.o(i.Error_Handler) + i.HAL_DMA_Abort 0x0800111c Section 0 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) + i.HAL_DMA_Abort_IT 0x08001174 Section 0 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) + i.HAL_Delay 0x08001224 Section 0 stm32f1xx_hal.o(i.HAL_Delay) + i.HAL_GPIO_Init 0x0800124c Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) + i.HAL_GPIO_ReadPin 0x0800156c Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin) + i.HAL_GPIO_WritePin 0x0800157c Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) + i.HAL_GetTick 0x08001588 Section 0 stm32f1xx_hal.o(i.HAL_GetTick) + i.HAL_IncTick 0x08001594 Section 0 stm32f1xx_hal.o(i.HAL_IncTick) + i.HAL_Init 0x080015ac Section 0 stm32f1xx_hal.o(i.HAL_Init) + i.HAL_InitTick 0x080015d4 Section 0 stm32f1xx_hal.o(i.HAL_InitTick) + i.HAL_MspInit 0x08001620 Section 0 stm32f1xx_hal_msp.o(i.HAL_MspInit) + i.HAL_NVIC_EnableIRQ 0x08001674 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) + i.HAL_NVIC_SetPriority 0x08001694 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) + i.HAL_NVIC_SetPriorityGrouping 0x08001710 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping) + i.HAL_RCC_ClockConfig 0x08001738 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig) + i.HAL_RCC_GetHCLKFreq 0x080018c4 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) + i.HAL_RCC_GetPCLK1Freq 0x080018d0 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) + i.HAL_RCC_GetPCLK2Freq 0x080018f0 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) + i.HAL_RCC_GetSysClockFreq 0x08001910 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) + i.HAL_RCC_OscConfig 0x08001980 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) + i.HAL_SPI_Init 0x08001de4 Section 0 stm32f1xx_hal_spi.o(i.HAL_SPI_Init) + i.HAL_SPI_MspInit 0x08001ea4 Section 0 spi.o(i.HAL_SPI_MspInit) + i.HAL_SPI_Receive 0x08001f2c Section 0 stm32f1xx_hal_spi.o(i.HAL_SPI_Receive) + i.HAL_SPI_Transmit 0x080020aa Section 0 stm32f1xx_hal_spi.o(i.HAL_SPI_Transmit) + i.HAL_SPI_TransmitReceive 0x08002266 Section 0 stm32f1xx_hal_spi.o(i.HAL_SPI_TransmitReceive) + i.HAL_SYSTICK_Config 0x080024a6 Section 0 stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config) + i.HAL_TIMEx_BreakCallback 0x080024da Section 0 stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_BreakCallback) + i.HAL_TIMEx_CommutCallback 0x080024dc Section 0 stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_CommutCallback) + i.HAL_TIMEx_MasterConfigSynchronization 0x080024e0 Section 0 stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization) + i.HAL_TIM_Base_Init 0x08002564 Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Init) + i.HAL_TIM_Base_MspInit 0x080025cc Section 0 tim.o(i.HAL_TIM_Base_MspInit) + i.HAL_TIM_Base_Start_IT 0x0800260c Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start_IT) + i.HAL_TIM_ConfigClockSource 0x08002684 Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) + i.HAL_TIM_IC_CaptureCallback 0x08002790 Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_IC_CaptureCallback) + i.HAL_TIM_IRQHandler 0x08002792 Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_IRQHandler) + i.HAL_TIM_OC_DelayElapsedCallback 0x08002928 Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_OC_DelayElapsedCallback) + i.HAL_TIM_PWM_PulseFinishedCallback 0x0800292a Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_PulseFinishedCallback) + i.HAL_TIM_PeriodElapsedCallback 0x0800292c Section 0 wiz_platform.o(i.HAL_TIM_PeriodElapsedCallback) + i.HAL_TIM_TriggerCallback 0x0800293e Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_TriggerCallback) + i.HAL_UARTEx_RxEventCallback 0x08002940 Section 0 stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback) + i.HAL_UART_ErrorCallback 0x08002944 Section 0 main.o(i.HAL_UART_ErrorCallback) + i.HAL_UART_IRQHandler 0x080029ec Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) + i.HAL_UART_Init 0x08002cd0 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Init) + i.HAL_UART_MspInit 0x08002d48 Section 0 usart.o(i.HAL_UART_MspInit) + i.HAL_UART_Receive_IT 0x08002ed8 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) + i.HAL_UART_RxCpltCallback 0x08002f04 Section 0 main.o(i.HAL_UART_RxCpltCallback) + i.HAL_UART_Transmit 0x08002fc8 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) + i.HAL_UART_Transmit_IT 0x0800307a Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT) + i.HAL_UART_TxCpltCallback 0x080030b4 Section 0 main.o(i.HAL_UART_TxCpltCallback) + i.HardFault_Handler 0x080030f4 Section 0 stm32f1xx_it.o(i.HardFault_Handler) + i.IO_Monitor_GetAllStates 0x080030f8 Section 0 io_monitor.o(i.IO_Monitor_GetAllStates) + i.IO_Monitor_Init 0x08003120 Section 0 io_monitor.o(i.IO_Monitor_Init) + i.IO_Monitor_Task 0x080031a0 Section 0 io_monitor.o(i.IO_Monitor_Task) + i.MX_GPIO_Init 0x08003228 Section 0 gpio.o(i.MX_GPIO_Init) + i.MX_SPI2_Init 0x08003338 Section 0 spi.o(i.MX_SPI2_Init) + i.MX_TIM2_Init 0x0800337c Section 0 tim.o(i.MX_TIM2_Init) + i.MX_USART1_UART_Init 0x080033e8 Section 0 usart.o(i.MX_USART1_UART_Init) + i.MX_USART2_UART_Init 0x08003420 Section 0 usart.o(i.MX_USART2_UART_Init) + i.MX_USART3_UART_Init 0x08003458 Section 0 usart.o(i.MX_USART3_UART_Init) + i.MemManage_Handler 0x08003490 Section 0 stm32f1xx_it.o(i.MemManage_Handler) + i.MultiUART_GetPortName 0x08003494 Section 0 multi_uart_router.o(i.MultiUART_GetPortName) + i.MultiUART_Init 0x080034b4 Section 0 multi_uart_router.o(i.MultiUART_Init) + i.MultiUART_Send 0x08003510 Section 0 multi_uart_router.o(i.MultiUART_Send) + i.MultiUART_SendString 0x08003574 Section 0 multi_uart_router.o(i.MultiUART_SendString) + i.MultiUART_Task 0x08003594 Section 0 multi_uart_router.o(i.MultiUART_Task) + i.MultiUART_TxCpltCallback 0x080035c8 Section 0 multi_uart_router.o(i.MultiUART_TxCpltCallback) + i.NMI_Handler 0x08003640 Section 0 stm32f1xx_it.o(i.NMI_Handler) + i.NibbleToHex 0x08003644 Section 0 dhcp.o(i.NibbleToHex) + i.PendSV_Handler 0x0800365e Section 0 stm32f1xx_it.o(i.PendSV_Handler) + i.RCC_Delay 0x08003660 Section 0 stm32f1xx_hal_rcc.o(i.RCC_Delay) + RCC_Delay 0x08003661 Thumb Code 36 stm32f1xx_hal_rcc.o(i.RCC_Delay) + i.Relay_Init 0x08003688 Section 0 relay_control.o(i.Relay_Init) + i.SPI_EndRxTransaction 0x080036d4 Section 0 stm32f1xx_hal_spi.o(i.SPI_EndRxTransaction) + SPI_EndRxTransaction 0x080036d5 Thumb Code 120 stm32f1xx_hal_spi.o(i.SPI_EndRxTransaction) + i.SPI_EndRxTxTransaction 0x0800374c Section 0 stm32f1xx_hal_spi.o(i.SPI_EndRxTxTransaction) + SPI_EndRxTxTransaction 0x0800374d Thumb Code 40 stm32f1xx_hal_spi.o(i.SPI_EndRxTxTransaction) + i.SPI_WaitFlagStateUntilTimeout 0x08003774 Section 0 stm32f1xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout) + SPI_WaitFlagStateUntilTimeout 0x08003775 Thumb Code 210 stm32f1xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout) + i.SVC_Handler 0x0800384c Section 0 stm32f1xx_it.o(i.SVC_Handler) + i.SysTick_Handler 0x0800384e Section 0 stm32f1xx_it.o(i.SysTick_Handler) + i.SystemClock_Config 0x0800385a Section 0 main.o(i.SystemClock_Config) + i.SystemInit 0x080038c0 Section 0 system_stm32f1xx.o(i.SystemInit) + i.TIM2_IRQHandler 0x080038c4 Section 0 stm32f1xx_it.o(i.TIM2_IRQHandler) + i.TIM_Base_SetConfig 0x080038d4 Section 0 stm32f1xx_hal_tim.o(i.TIM_Base_SetConfig) + i.TIM_ETR_SetConfig 0x08003948 Section 0 stm32f1xx_hal_tim.o(i.TIM_ETR_SetConfig) + i.TIM_ITRx_SetConfig 0x0800395e Section 0 stm32f1xx_hal_tim.o(i.TIM_ITRx_SetConfig) + TIM_ITRx_SetConfig 0x0800395f Thumb Code 18 stm32f1xx_hal_tim.o(i.TIM_ITRx_SetConfig) + i.TIM_TI1_ConfigInputStage 0x08003970 Section 0 stm32f1xx_hal_tim.o(i.TIM_TI1_ConfigInputStage) + TIM_TI1_ConfigInputStage 0x08003971 Thumb Code 38 stm32f1xx_hal_tim.o(i.TIM_TI1_ConfigInputStage) + i.TIM_TI2_ConfigInputStage 0x08003996 Section 0 stm32f1xx_hal_tim.o(i.TIM_TI2_ConfigInputStage) + TIM_TI2_ConfigInputStage 0x08003997 Thumb Code 40 stm32f1xx_hal_tim.o(i.TIM_TI2_ConfigInputStage) + i.UART2_Print_Init 0x080039c0 Section 0 uart2_print.o(i.UART2_Print_Init) + i.UART2_Print_Printf 0x08003a10 Section 0 uart2_print.o(i.UART2_Print_Printf) + i.UART2_Print_Send 0x08003a50 Section 0 uart2_print.o(i.UART2_Print_Send) + i.UART2_Print_String 0x08003b04 Section 0 uart2_print.o(i.UART2_Print_String) + i.UART2_Print_Task 0x08003b20 Section 0 uart2_print.o(i.UART2_Print_Task) + i.UART2_Print_TxCpltCallback 0x08003b8c Section 0 uart2_print.o(i.UART2_Print_TxCpltCallback) + i.UART_DMAAbortOnError 0x08003bf8 Section 0 stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) + UART_DMAAbortOnError 0x08003bf9 Thumb Code 20 stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) + i.UART_EndRxTransfer 0x08003c0c Section 0 stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) + UART_EndRxTransfer 0x08003c0d Thumb Code 108 stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) + i.UART_EndTransmit_IT 0x08003c78 Section 0 stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT) + UART_EndTransmit_IT 0x08003c79 Thumb Code 32 stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT) + i.UART_Receive_IT 0x08003c98 Section 0 stm32f1xx_hal_uart.o(i.UART_Receive_IT) + UART_Receive_IT 0x08003c99 Thumb Code 252 stm32f1xx_hal_uart.o(i.UART_Receive_IT) + i.UART_SetConfig 0x08003d94 Section 0 stm32f1xx_hal_uart.o(i.UART_SetConfig) + UART_SetConfig 0x08003d95 Thumb Code 248 stm32f1xx_hal_uart.o(i.UART_SetConfig) + i.UART_Start_Receive_IT 0x08003e90 Section 0 stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT) + i.UART_Transmit_IT 0x08003ed0 Section 0 stm32f1xx_hal_uart.o(i.UART_Transmit_IT) + UART_Transmit_IT 0x08003ed1 Thumb Code 96 stm32f1xx_hal_uart.o(i.UART_Transmit_IT) + i.UART_WaitOnFlagUntilTimeout 0x08003f30 Section 0 stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) + UART_WaitOnFlagUntilTimeout 0x08003f31 Thumb Code 146 stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) + i.USART1_IRQHandler 0x08003fc4 Section 0 stm32f1xx_it.o(i.USART1_IRQHandler) + i.USART2_IRQHandler 0x08003fd4 Section 0 stm32f1xx_it.o(i.USART2_IRQHandler) + i.USART3_IRQHandler 0x08003fe4 Section 0 stm32f1xx_it.o(i.USART3_IRQHandler) + i.UsageFault_Handler 0x08003ff4 Section 0 stm32f1xx_it.o(i.UsageFault_Handler) + i.WIZCHIP_READ 0x08003ff8 Section 0 w5500.o(i.WIZCHIP_READ) + i.WIZCHIP_READ_BUF 0x0800406c Section 0 w5500.o(i.WIZCHIP_READ_BUF) + i.WIZCHIP_WRITE 0x080040f8 Section 0 w5500.o(i.WIZCHIP_WRITE) + i.WIZCHIP_WRITE_BUF 0x0800416c Section 0 w5500.o(i.WIZCHIP_WRITE_BUF) + i.__0printf 0x080041f4 Section 0 printfa.o(i.__0printf) + i.__0snprintf 0x08004214 Section 0 printfa.o(i.__0snprintf) + i.__0sprintf 0x08004248 Section 0 printfa.o(i.__0sprintf) + i.__0vsnprintf 0x08004270 Section 0 printfa.o(i.__0vsnprintf) + i.__NVIC_GetPriorityGrouping 0x080042a4 Section 0 stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping) + __NVIC_GetPriorityGrouping 0x080042a5 Thumb Code 10 stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping) + i.__NVIC_SetPriority 0x080042b4 Section 0 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) + __NVIC_SetPriority 0x080042b5 Thumb Code 32 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) + i.__scatterload_copy 0x080042dc Section 14 handlers.o(i.__scatterload_copy) + i.__scatterload_null 0x080042ea Section 2 handlers.o(i.__scatterload_null) + i.__scatterload_zeroinit 0x080042ec Section 14 handlers.o(i.__scatterload_zeroinit) + i._fp_digits 0x080042fc Section 0 printfa.o(i._fp_digits) + _fp_digits 0x080042fd Thumb Code 366 printfa.o(i._fp_digits) + i._printf_core 0x08004480 Section 0 printfa.o(i._printf_core) + _printf_core 0x08004481 Thumb Code 1704 printfa.o(i._printf_core) + i._printf_post_padding 0x08004b34 Section 0 printfa.o(i._printf_post_padding) + _printf_post_padding 0x08004b35 Thumb Code 36 printfa.o(i._printf_post_padding) + i._printf_pre_padding 0x08004b58 Section 0 printfa.o(i._printf_pre_padding) + _printf_pre_padding 0x08004b59 Thumb Code 46 printfa.o(i._printf_pre_padding) + i._snputc 0x08004b86 Section 0 printfa.o(i._snputc) + _snputc 0x08004b87 Thumb Code 22 printfa.o(i._snputc) + i._sputc 0x08004b9c Section 0 printfa.o(i._sputc) + _sputc 0x08004b9d Thumb Code 10 printfa.o(i._sputc) + i.calc_checksum 0x08004ba6 Section 0 io_monitor.o(i.calc_checksum) + calc_checksum 0x08004ba7 Thumb Code 26 io_monitor.o(i.calc_checksum) + i.check_DHCP_leasedIP 0x08004bc0 Section 0 dhcp.o(i.check_DHCP_leasedIP) + i.check_DHCP_timeout 0x08004c38 Section 0 dhcp.o(i.check_DHCP_timeout) + i.close 0x08004ce4 Section 0 socket.o(i.close) + i.cmd_parser_response_callback 0x08004d84 Section 0 cmd_router.o(i.cmd_parser_response_callback) + cmd_parser_response_callback 0x08004d85 Thumb Code 86 cmd_router.o(i.cmd_parser_response_callback) + i.create_wiz_timer_node 0x08004df8 Section 0 wiz_interface.o(i.create_wiz_timer_node) + create_wiz_timer_node 0x08004df9 Thumb Code 40 wiz_interface.o(i.create_wiz_timer_node) + i.ctlwizchip 0x08004e3c Section 0 wizchip_conf.o(i.ctlwizchip) + i.default_ip_assign 0x08004f5c Section 0 dhcp.o(i.default_ip_assign) + i.default_ip_conflict 0x08004f90 Section 0 dhcp.o(i.default_ip_conflict) + i.default_ip_update 0x08004fb4 Section 0 dhcp.o(i.default_ip_update) + i.fputc 0x08004fdc Section 0 uart2_print.o(i.fputc) + i.free 0x08004ff8 Section 0 malloc.o(i.free) + i.getDNSfromDHCP 0x08005048 Section 0 dhcp.o(i.getDNSfromDHCP) + i.getGWfromDHCP 0x08005068 Section 0 dhcp.o(i.getGWfromDHCP) + i.getIPfromDHCP 0x08005088 Section 0 dhcp.o(i.getIPfromDHCP) + i.getSNfromDHCP 0x080050a8 Section 0 dhcp.o(i.getSNfromDHCP) + i.getSn_RX_RSR 0x080050c8 Section 0 w5500.o(i.getSn_RX_RSR) + i.getSn_TX_FSR 0x08005134 Section 0 w5500.o(i.getSn_TX_FSR) + i.gpio_led_rx_off 0x080051a0 Section 0 gpio.o(i.gpio_led_rx_off) + i.gpio_led_rx_on 0x080051b4 Section 0 gpio.o(i.gpio_led_rx_on) + i.gpio_led_tx_off 0x080051c8 Section 0 gpio.o(i.gpio_led_tx_off) + i.gpio_led_tx_on 0x080051dc Section 0 gpio.o(i.gpio_led_tx_on) + i.init_modules 0x080051f0 Section 0 debug_log.o(i.init_modules) + init_modules 0x080051f1 Thumb Code 46 debug_log.o(i.init_modules) + i.is_module_enabled 0x08005228 Section 0 debug_log.o(i.is_module_enabled) + is_module_enabled 0x08005229 Thumb Code 72 debug_log.o(i.is_module_enabled) + i.loopback_udps 0x08005274 Section 0 loopback.o(i.loopback_udps) + i.main 0x08005418 Section 0 main.o(i.main) + i.makeDHCPMSG 0x08005754 Section 0 dhcp.o(i.makeDHCPMSG) + i.malloc 0x080058e4 Section 0 malloc.o(i.malloc) + i.network_init 0x08005950 Section 0 wiz_interface.o(i.network_init) + i.parseDHCPMSG 0x08005980 Section 0 dhcp.o(i.parseDHCPMSG) + i.print_network_information 0x08005c04 Section 0 wiz_interface.o(i.print_network_information) + i.recvfrom 0x08005dd4 Section 0 socket.o(i.recvfrom) + i.reg_wizchip_cs_cbfunc 0x080060e0 Section 0 wizchip_conf.o(i.reg_wizchip_cs_cbfunc) + i.reg_wizchip_spi_cbfunc 0x08006108 Section 0 wizchip_conf.o(i.reg_wizchip_spi_cbfunc) + i.reg_wizchip_spiburst_cbfunc 0x0800613c Section 0 wizchip_conf.o(i.reg_wizchip_spiburst_cbfunc) + i.reset_DHCP_timeout 0x08006170 Section 0 dhcp.o(i.reset_DHCP_timeout) + i.rf433_fifo_clear 0x08006190 Section 0 rf433_hal.o(i.rf433_fifo_clear) + rf433_fifo_clear 0x08006191 Thumb Code 16 rf433_hal.o(i.rf433_fifo_clear) + i.rf433_fifo_get_length 0x080061ac Section 0 rf433_hal.o(i.rf433_fifo_get_length) + rf433_fifo_get_length 0x080061ad Thumb Code 20 rf433_hal.o(i.rf433_fifo_get_length) + i.rf433_fifo_read 0x080061c4 Section 0 rf433_hal.o(i.rf433_fifo_read) + rf433_fifo_read 0x080061c5 Thumb Code 100 rf433_hal.o(i.rf433_fifo_read) + i.rf433_hal_1ms_callback 0x08006234 Section 0 rf433_hal.o(i.rf433_hal_1ms_callback) + i.rf433_hal_aux_wait 0x0800625c Section 0 rf433_hal.o(i.rf433_hal_aux_wait) + i.rf433_hal_deinit 0x0800629c Section 0 rf433_hal.o(i.rf433_hal_deinit) + i.rf433_hal_fifo_clear 0x080062b8 Section 0 rf433_hal.o(i.rf433_hal_fifo_clear) + i.rf433_hal_fifo_get_length 0x080062c0 Section 0 rf433_hal.o(i.rf433_hal_fifo_get_length) + i.rf433_hal_fifo_read 0x080062cc Section 0 rf433_hal.o(i.rf433_hal_fifo_read) + i.rf433_hal_init 0x080062e0 Section 0 rf433_hal.o(i.rf433_hal_init) + i.rf433_hal_set_work_mode 0x08006314 Section 0 rf433_hal.o(i.rf433_hal_set_work_mode) + i.rf433_hal_uart_tx 0x080063b4 Section 0 rf433_hal.o(i.rf433_hal_uart_tx) + i.rf433_init 0x080063e4 Section 0 rf433.o(i.rf433_init) + i.rf433_rx_app_init 0x08006444 Section 0 rf433_rx_app.o(i.rf433_rx_app_init) + i.rf433_rx_app_parse_packet 0x08006494 Section 0 rf433_rx_app.o(i.rf433_rx_app_parse_packet) + i.rf433_rx_app_start 0x080064e4 Section 0 rf433_rx_app.o(i.rf433_rx_app_start) + i.rf433_rx_app_task 0x08006504 Section 0 rf433_rx_app.o(i.rf433_rx_app_task) + i.rf433_rx_start 0x080065a4 Section 0 rf433.o(i.rf433_rx_start) + i.rf433_send_config_command 0x080065e0 Section 0 rf433.o(i.rf433_send_config_command) + rf433_send_config_command 0x080065e1 Thumb Code 30 rf433.o(i.rf433_send_config_command) + i.rf433_set_config 0x08006604 Section 0 rf433.o(i.rf433_set_config) + i.rf433_set_work_mode 0x0800665c Section 0 rf433.o(i.rf433_set_work_mode) + i.rf433_transmit 0x08006674 Section 0 rf433.o(i.rf433_transmit) + i.rf433_tx_app_init 0x080066ac Section 0 rf433_tx_app.o(i.rf433_tx_app_init) + i.rf433_tx_app_start 0x08006704 Section 0 rf433_tx_app.o(i.rf433_tx_app_start) + i.rf433_tx_app_task 0x08006730 Section 0 rf433_tx_app.o(i.rf433_tx_app_task) + i.rx_led_control 0x08006804 Section 0 rf433_rx_app.o(i.rx_led_control) + rx_led_control 0x08006805 Thumb Code 18 rf433_rx_app.o(i.rx_led_control) + i.rx_ring_init 0x08006816 Section 0 multi_uart_router.o(i.rx_ring_init) + rx_ring_init 0x08006817 Thumb Code 16 multi_uart_router.o(i.rx_ring_init) + i.rx_update_stats 0x08006828 Section 0 rf433_rx_app.o(i.rx_update_stats) + rx_update_stats 0x08006829 Thumb Code 56 rf433_rx_app.o(i.rx_update_stats) + i.send_DHCP_DECLINE 0x08006864 Section 0 dhcp.o(i.send_DHCP_DECLINE) + i.send_DHCP_DISCOVER 0x08006a64 Section 0 dhcp.o(i.send_DHCP_DISCOVER) + i.send_DHCP_REQUEST 0x08006cfc Section 0 dhcp.o(i.send_DHCP_REQUEST) + i.send_di_event 0x080070e4 Section 0 io_monitor.o(i.send_di_event) + send_di_event 0x080070e5 Thumb Code 114 io_monitor.o(i.send_di_event) + i.sendto 0x080071b0 Section 0 socket.o(i.sendto) + i.socket 0x080073bc Section 0 socket.o(i.socket) + i.systick_interrupt_1ms_callback 0x08007550 Section 0 systick.o(i.systick_interrupt_1ms_callback) + i.tx_build_packet 0x0800756c Section 0 rf433_tx_app.o(i.tx_build_packet) + tx_build_packet 0x0800756d Thumb Code 54 rf433_tx_app.o(i.tx_build_packet) + i.tx_kickoff 0x080075b4 Section 0 multi_uart_router.o(i.tx_kickoff) + tx_kickoff 0x080075b5 Thumb Code 98 multi_uart_router.o(i.tx_kickoff) + i.tx_led_control 0x0800761c Section 0 rf433_tx_app.o(i.tx_led_control) + tx_led_control 0x0800761d Thumb Code 18 rf433_tx_app.o(i.tx_led_control) + i.tx_ring_init 0x0800762e Section 0 multi_uart_router.o(i.tx_ring_init) + tx_ring_init 0x0800762f Thumb Code 22 multi_uart_router.o(i.tx_ring_init) + i.tx_ring_push 0x08007644 Section 0 multi_uart_router.o(i.tx_ring_push) + tx_ring_push 0x08007645 Thumb Code 94 multi_uart_router.o(i.tx_ring_push) + i.uart1_check_rx_done 0x080076a4 Section 0 rf433_hal.o(i.uart1_check_rx_done) + i.uart1_rx_timeout_1ms_callback 0x080076f4 Section 0 rf433_hal.o(i.uart1_rx_timeout_1ms_callback) + i.wiz_add_timer 0x080076fc Section 0 wiz_interface.o(i.wiz_add_timer) + i.wiz_delete_timer 0x08007734 Section 0 wiz_interface.o(i.wiz_delete_timer) + i.wiz_dhcp_process 0x08007778 Section 0 wiz_interface.o(i.wiz_dhcp_process) + wiz_dhcp_process 0x08007779 Thumb Code 162 wiz_interface.o(i.wiz_dhcp_process) + i.wiz_phy_link_check 0x0800784c Section 0 wiz_interface.o(i.wiz_phy_link_check) + i.wiz_print_phy_info 0x080078a0 Section 0 wiz_interface.o(i.wiz_print_phy_info) + i.wiz_recv_data 0x08007934 Section 0 w5500.o(i.wiz_recv_data) + i.wiz_recv_ignore 0x080079b8 Section 0 w5500.o(i.wiz_recv_ignore) + i.wiz_send_data 0x08007a1e Section 0 w5500.o(i.wiz_send_data) + i.wiz_timer_handler 0x08007aa4 Section 0 wiz_interface.o(i.wiz_timer_handler) + i.wiz_user_delay_ms 0x08007adc Section 0 wiz_interface.o(i.wiz_user_delay_ms) + i.wizchip_bus_readdata 0x08007af4 Section 0 wizchip_conf.o(i.wizchip_bus_readdata) + i.wizchip_bus_writedata 0x08007afa Section 0 wizchip_conf.o(i.wizchip_bus_writedata) + i.wizchip_clrinterrupt 0x08007afe Section 0 wizchip_conf.o(i.wizchip_clrinterrupt) + i.wizchip_cris_enter 0x08007b3a Section 0 wizchip_conf.o(i.wizchip_cris_enter) + i.wizchip_cris_exit 0x08007b3c Section 0 wizchip_conf.o(i.wizchip_cris_exit) + i.wizchip_cs_deselect 0x08007b3e Section 0 wizchip_conf.o(i.wizchip_cs_deselect) + i.wizchip_cs_select 0x08007b40 Section 0 wizchip_conf.o(i.wizchip_cs_select) + i.wizchip_deselect 0x08007b44 Section 0 wiz_platform.o(i.wizchip_deselect) + i.wizchip_getinterrupt 0x08007b58 Section 0 wizchip_conf.o(i.wizchip_getinterrupt) + i.wizchip_getinterruptmask 0x08007b82 Section 0 wizchip_conf.o(i.wizchip_getinterruptmask) + i.wizchip_getnetinfo 0x08007bac Section 0 wizchip_conf.o(i.wizchip_getnetinfo) + i.wizchip_init 0x08007c08 Section 0 wizchip_conf.o(i.wizchip_init) + i.wizchip_initialize 0x08007c98 Section 0 wiz_interface.o(i.wizchip_initialize) + i.wizchip_read_buff 0x08007da0 Section 0 wiz_platform.o(i.wizchip_read_buff) + i.wizchip_read_byte 0x08007dbc Section 0 wiz_platform.o(i.wizchip_read_byte) + i.wizchip_reset 0x08007dd8 Section 0 wiz_platform.o(i.wizchip_reset) + i.wizchip_select 0x08007e14 Section 0 wiz_platform.o(i.wizchip_select) + i.wizchip_setinterruptmask 0x08007e28 Section 0 wizchip_conf.o(i.wizchip_setinterruptmask) + i.wizchip_setnetinfo 0x08007e48 Section 0 wizchip_conf.o(i.wizchip_setnetinfo) + i.wizchip_spi_cb_reg 0x08007ea0 Section 0 wiz_platform.o(i.wizchip_spi_cb_reg) + i.wizchip_spi_readburst 0x08007ed4 Section 0 wizchip_conf.o(i.wizchip_spi_readburst) + i.wizchip_spi_readbyte 0x08007ed6 Section 0 wizchip_conf.o(i.wizchip_spi_readbyte) + i.wizchip_spi_writeburst 0x08007eda Section 0 wizchip_conf.o(i.wizchip_spi_writeburst) + i.wizchip_spi_writebyte 0x08007edc Section 0 wizchip_conf.o(i.wizchip_spi_writebyte) + i.wizchip_sw_reset 0x08007ede Section 0 wizchip_conf.o(i.wizchip_sw_reset) + i.wizchip_version_check 0x08007f50 Section 0 wiz_interface.o(i.wizchip_version_check) + i.wizchip_write_buff 0x08007f98 Section 0 wiz_platform.o(i.wizchip_write_buff) + i.wizchip_write_byte 0x08007fb4 Section 0 wiz_platform.o(i.wizchip_write_byte) + i.wizphy_getphyconf 0x08007fcc Section 0 wizchip_conf.o(i.wizphy_getphyconf) + i.wizphy_getphylink 0x08008044 Section 0 wizchip_conf.o(i.wizphy_getphylink) + i.wizphy_getphypmode 0x0800805c Section 0 wizchip_conf.o(i.wizphy_getphypmode) + i.wizphy_reset 0x0800807a Section 0 wizchip_conf.o(i.wizphy_reset) + i.wizphy_setphyconf 0x080080ae Section 0 wizchip_conf.o(i.wizphy_setphyconf) + i.wizphy_setphypmode 0x08008106 Section 0 wizchip_conf.o(i.wizphy_setphypmode) + .constdata 0x0800816c Section 16 debug_log.o(.constdata) + g_level_str 0x0800816c Data 16 debug_log.o(.constdata) + .constdata 0x0800817c Section 24 multi_uart_router.o(.constdata) + g_port_uart_map 0x0800817c Data 12 multi_uart_router.o(.constdata) + g_port_name_map 0x08008188 Data 12 multi_uart_router.o(.constdata) + .constdata 0x08008194 Section 18 stm32f1xx_hal_rcc.o(.constdata) + aPLLMULFactorTable 0x08008194 Data 16 stm32f1xx_hal_rcc.o(.constdata) + aPredivFactorTable 0x080081a4 Data 2 stm32f1xx_hal_rcc.o(.constdata) + .constdata 0x080081a6 Section 24 system_stm32f1xx.o(.constdata) + .constdata 0x080081be Section 33 rf433.o(.constdata) + request_config 0x080081c3 Data 3 rf433.o(.constdata) + request_name 0x080081c6 Data 13 rf433.o(.constdata) + request_version 0x080081d3 Data 12 rf433.o(.constdata) + .constdata 0x080081df Section 129 ctype_o.o(.constdata) + .constdata 0x08008260 Section 4 ctype_o.o(.constdata) + table 0x08008260 Data 4 ctype_o.o(.constdata) + .conststring 0x08008264 Section 30 debug_log.o(.conststring) + .conststring 0x08008284 Section 22 multi_uart_router.o(.conststring) + .conststring 0x0800829c Section 361 wiz_interface.o(.conststring) .data 0x20000000 Section 4 systick.o(.data) user_timerout_ms 0x20000000 Data 4 systick.o(.data) - .data 0x20000004 Section 2 main.o(.data) + .data 0x20000004 Section 18 main.o(.data) uart2_rx_byte 0x20000004 Data 1 main.o(.data) uart3_rx_byte 0x20000005 Data 1 main.o(.data) - .data 0x20000008 Section 5 cmd_parser.o(.data) - g_response_callback 0x20000008 Data 4 cmd_parser.o(.data) - g_current_source_port 0x2000000c Data 1 cmd_parser.o(.data) - .data 0x20000010 Section 76 io_monitor.o(.data) - di_channels 0x20000010 Data 64 io_monitor.o(.data) - last_scan_tick 0x20000050 Data 4 io_monitor.o(.data) - report_enabled 0x20000054 Data 1 io_monitor.o(.data) - g_event_callback 0x20000058 Data 4 io_monitor.o(.data) - .data 0x2000005c Section 8 relay_control.o(.data) - current_state 0x2000005c Data 1 relay_control.o(.data) - last_toggle_tick 0x20000060 Data 4 relay_control.o(.data) - .data 0x20000064 Section 20 cmd_router.o(.data) - g_response_handler 0x20000064 Data 4 cmd_router.o(.data) - g_processed_count 0x20000068 Data 4 cmd_router.o(.data) - g_routed_count 0x2000006c Data 4 cmd_router.o(.data) - g_current_parsing_port 0x20000070 Data 1 cmd_router.o(.data) - g_rx_log_len 0x20000072 Data 6 cmd_router.o(.data) - .data 0x20000078 Section 2 debug_log.o(.data) - g_current_level 0x20000078 Data 1 debug_log.o(.data) - g_modules_initialized 0x20000079 Data 1 debug_log.o(.data) - .data 0x2000007c Section 9 stm32f1xx_hal.o(.data) - .data 0x20000088 Section 4 system_stm32f1xx.o(.data) - .data 0x2000008c Section 16 rf433.o(.data) - rf433_initialized 0x2000008c Data 1 rf433.o(.data) - rf433_current_config 0x2000008d Data 5 rf433.o(.data) - rf433_rx_started 0x20000092 Data 1 rf433.o(.data) - rf433_rx_callback 0x20000094 Data 4 rf433.o(.data) - rf433_rx_user_data 0x20000098 Data 4 rf433.o(.data) - .data 0x2000009c Section 25 rf433_hal.o(.data) - rf433_hal_initialized 0x2000009c Data 1 rf433_hal.o(.data) - rf433_fifo_head 0x200000a0 Data 4 rf433_hal.o(.data) - rf433_fifo_tail 0x200000a4 Data 4 rf433_hal.o(.data) - rf433_fifo_count 0x200000a8 Data 4 rf433_hal.o(.data) - rf433_uart_rx_timeout 0x200000b0 Data 4 rf433_hal.o(.data) - rf433_uart_rx_done 0x200000b4 Data 1 rf433_hal.o(.data) - .data 0x200000b8 Section 4 stdout.o(.data) - .data 0x200000bc Section 4 errno.o(.data) - _errno 0x200000bc Data 4 errno.o(.data) - .bss 0x200000c0 Section 40 rf433_rx_app.o(.bss) - g_rx_app 0x200000c0 Data 40 rf433_rx_app.o(.bss) - .bss 0x200000e8 Section 28 rf433_tx_app.o(.bss) - g_tx_app 0x200000e8 Data 28 rf433_tx_app.o(.bss) - .bss 0x20000104 Section 88 spi.o(.bss) - .bss 0x2000015c Section 216 usart.o(.bss) - .bss 0x20000234 Section 96 cmd_parser.o(.bss) - ctx 0x20000234 Data 96 cmd_parser.o(.bss) - .bss 0x20000294 Section 266 uart2_print.o(.bss) - tx_ring 0x20000294 Data 266 uart2_print.o(.bss) - .bss 0x200003a0 Section 444 cmd_router.o(.bss) - g_port_states 0x200003a0 Data 48 cmd_router.o(.bss) - g_rx_log_buffer 0x200003d0 Data 384 cmd_router.o(.bss) - g_rx_log_last_tick 0x20000550 Data 12 cmd_router.o(.bss) - .bss 0x2000055c Section 272 debug_log.o(.bss) - g_modules 0x2000055c Data 272 debug_log.o(.bss) - .bss 0x2000066c Section 1284 multi_uart_router.o(.bss) - g_port_ctx 0x2000066c Data 1284 multi_uart_router.o(.bss) - .bss 0x20000b70 Section 560 uart3_passthrough.o(.bss) - .bss 0x20000da0 Section 148 uart3_protocol_discriminator.o(.bss) - .bss 0x20000e34 Section 1024 rf433.o(.bss) - rf433_buffer 0x20000e34 Data 1024 rf433.o(.bss) - .bss 0x20001234 Section 1024 rf433_hal.o(.bss) - rf433_fifo_buffer 0x20001234 Data 1024 rf433_hal.o(.bss) - STACK 0x20001638 Section 1024 startup_stm32f103xb.o(STACK) + u1_rx_len 0x20000006 Data 2 main.o(.data) + u1_last_rx_time 0x20000008 Data 4 main.o(.data) + u3_rx_len 0x2000000c Data 2 main.o(.data) + u3_last_rx_time 0x20000010 Data 4 main.o(.data) + local_port 0x20000014 Data 2 main.o(.data) + .data 0x20000018 Section 5 cmd_parser.o(.data) + g_response_callback 0x20000018 Data 4 cmd_parser.o(.data) + g_current_source_port 0x2000001c Data 1 cmd_parser.o(.data) + .data 0x20000020 Section 76 io_monitor.o(.data) + di_channels 0x20000020 Data 64 io_monitor.o(.data) + last_scan_tick 0x20000060 Data 4 io_monitor.o(.data) + report_enabled 0x20000064 Data 1 io_monitor.o(.data) + g_event_callback 0x20000068 Data 4 io_monitor.o(.data) + .data 0x2000006c Section 8 relay_control.o(.data) + current_state 0x2000006c Data 1 relay_control.o(.data) + last_toggle_tick 0x20000070 Data 4 relay_control.o(.data) + .data 0x20000074 Section 20 cmd_router.o(.data) + g_response_handler 0x20000074 Data 4 cmd_router.o(.data) + g_processed_count 0x20000078 Data 4 cmd_router.o(.data) + g_routed_count 0x2000007c Data 4 cmd_router.o(.data) + g_current_parsing_port 0x20000080 Data 1 cmd_router.o(.data) + g_rx_log_len 0x20000082 Data 6 cmd_router.o(.data) + .data 0x20000088 Section 2 debug_log.o(.data) + g_current_level 0x20000088 Data 1 debug_log.o(.data) + g_modules_initialized 0x20000089 Data 1 debug_log.o(.data) + .data 0x2000008c Section 9 stm32f1xx_hal.o(.data) + .data 0x20000098 Section 4 system_stm32f1xx.o(.data) + .data 0x2000009c Section 16 rf433.o(.data) + rf433_initialized 0x2000009c Data 1 rf433.o(.data) + rf433_current_config 0x2000009d Data 5 rf433.o(.data) + rf433_rx_started 0x200000a2 Data 1 rf433.o(.data) + rf433_rx_callback 0x200000a4 Data 4 rf433.o(.data) + rf433_rx_user_data 0x200000a8 Data 4 rf433.o(.data) + .data 0x200000ac Section 25 rf433_hal.o(.data) + rf433_hal_initialized 0x200000ac Data 1 rf433_hal.o(.data) + rf433_fifo_head 0x200000b0 Data 4 rf433_hal.o(.data) + rf433_fifo_tail 0x200000b4 Data 4 rf433_hal.o(.data) + rf433_fifo_count 0x200000b8 Data 4 rf433_hal.o(.data) + rf433_uart_rx_timeout 0x200000c0 Data 4 rf433_hal.o(.data) + rf433_uart_rx_done 0x200000c4 Data 1 rf433_hal.o(.data) + .data 0x200000c8 Section 8 wiz_interface.o(.data) + .data 0x200000d0 Section 26 user_main.o(.data) + .data 0x200000ea Section 14 socket.o(.data) + sock_any_port 0x200000ea Data 2 socket.o(.data) + sock_io_mode 0x200000ec Data 2 socket.o(.data) + sock_is_sending 0x200000ee Data 2 socket.o(.data) + .data 0x200000f8 Section 49 wizchip_conf.o(.data) + _DNS_ 0x20000124 Data 4 wizchip_conf.o(.data) + _DHCP_ 0x20000128 Data 1 wizchip_conf.o(.data) + .data 0x2000012c Section 80 dhcp.o(.data) + .data 0x2000017c Section 4 stdout.o(.data) + .data 0x20000180 Section 4 mvars.o(.data) + .data 0x20000184 Section 4 mvars.o(.data) + .bss 0x20000188 Section 40 rf433_rx_app.o(.bss) + g_rx_app 0x20000188 Data 40 rf433_rx_app.o(.bss) + .bss 0x200001b0 Section 28 rf433_tx_app.o(.bss) + g_tx_app 0x200001b0 Data 28 rf433_tx_app.o(.bss) + .bss 0x200001cc Section 2816 main.o(.bss) + u1_rx_buffer 0x200001cc Data 256 main.o(.bss) + u3_rx_buffer 0x200002cc Data 512 main.o(.bss) + ethernet_buf 0x200004cc Data 2048 main.o(.bss) + .bss 0x20000ccc Section 88 spi.o(.bss) + .bss 0x20000d24 Section 216 usart.o(.bss) + .bss 0x20000dfc Section 96 cmd_parser.o(.bss) + ctx 0x20000dfc Data 96 cmd_parser.o(.bss) + .bss 0x20000e5c Section 522 uart2_print.o(.bss) + tx_ring 0x20000e5c Data 522 uart2_print.o(.bss) + .bss 0x20001068 Section 444 cmd_router.o(.bss) + g_port_states 0x20001068 Data 48 cmd_router.o(.bss) + g_rx_log_buffer 0x20001098 Data 384 cmd_router.o(.bss) + g_rx_log_last_tick 0x20001218 Data 12 cmd_router.o(.bss) + .bss 0x20001224 Section 272 debug_log.o(.bss) + g_modules 0x20001224 Data 272 debug_log.o(.bss) + .bss 0x20001334 Section 1284 multi_uart_router.o(.bss) + g_port_ctx 0x20001334 Data 1284 multi_uart_router.o(.bss) + .bss 0x20001838 Section 72 tim.o(.bss) + .bss 0x20001880 Section 1024 rf433.o(.bss) + rf433_buffer 0x20001880 Data 1024 rf433.o(.bss) + .bss 0x20001c80 Section 1024 rf433_hal.o(.bss) + rf433_fifo_buffer 0x20001c80 Data 1024 rf433_hal.o(.bss) + .bss 0x20002080 Section 16 socket.o(.bss) + sock_remained_size 0x20002080 Data 16 socket.o(.bss) + HEAP 0x20002090 Section 512 startup_stm32f103xb.o(HEAP) + STACK 0x20002290 Section 1024 startup_stm32f103xb.o(STACK) Global Symbols @@ -1986,7 +2882,6 @@ Image Symbol Table __arm_fini_ - Undefined Weak Reference __cpp_initialize__aeabi_ - Undefined Weak Reference __cxa_finalize - Undefined Weak Reference - __decompress - Undefined Weak Reference _clock_init - Undefined Weak Reference _microlib_exit - Undefined Weak Reference _scanf_longlong - Undefined Weak Reference @@ -2039,7 +2934,6 @@ Image Symbol Table TIM1_CC_IRQHandler 0x0800011f Thumb Code 0 startup_stm32f103xb.o(.text) TIM1_TRG_COM_IRQHandler 0x0800011f Thumb Code 0 startup_stm32f103xb.o(.text) TIM1_UP_IRQHandler 0x0800011f Thumb Code 0 startup_stm32f103xb.o(.text) - TIM2_IRQHandler 0x0800011f Thumb Code 0 startup_stm32f103xb.o(.text) TIM3_IRQHandler 0x0800011f Thumb Code 0 startup_stm32f103xb.o(.text) TIM4_IRQHandler 0x0800011f Thumb Code 0 startup_stm32f103xb.o(.text) USBWakeUp_IRQHandler 0x0800011f Thumb Code 0 startup_stm32f103xb.o(.text) @@ -2061,201 +2955,314 @@ Image Symbol Table __aeabi_memclr8 0x08000195 Thumb Code 0 memseta.o(.text) _memset$wrapper 0x08000199 Thumb Code 18 memseta.o(.text) strlen 0x080001ab Thumb Code 14 strlen.o(.text) - strcmp 0x080001b9 Thumb Code 28 strcmp.o(.text) - strncmp 0x080001d5 Thumb Code 30 strncmp.o(.text) - __0sscanf 0x080001f5 Thumb Code 48 __0sscanf.o(.text) - _scanf_int 0x0800022d Thumb Code 332 _scanf_int.o(.text) - atoi 0x08000379 Thumb Code 26 atoi.o(.text) - __aeabi_uidiv 0x08000393 Thumb Code 0 uidiv.o(.text) - __aeabi_uidivmod 0x08000393 Thumb Code 44 uidiv.o(.text) - __aeabi_uldivmod 0x080003bf Thumb Code 98 uldiv.o(.text) - _chval 0x08000421 Thumb Code 28 _chval.o(.text) - __vfscanf_char 0x08000449 Thumb Code 20 scanf_char.o(.text) - _sgetc 0x08000465 Thumb Code 30 _sgetc.o(.text) - _sbackspace 0x08000483 Thumb Code 34 _sgetc.o(.text) - strtol 0x080004a5 Thumb Code 112 strtol.o(.text) - __I$use$fp 0x08000515 Thumb Code 0 iusefp.o(.text) - __aeabi_dadd 0x08000515 Thumb Code 322 dadd.o(.text) - __aeabi_dsub 0x08000657 Thumb Code 6 dadd.o(.text) - __aeabi_drsub 0x0800065d Thumb Code 6 dadd.o(.text) - __aeabi_dmul 0x08000663 Thumb Code 228 dmul.o(.text) - __aeabi_ddiv 0x08000747 Thumb Code 222 ddiv.o(.text) - __aeabi_d2ulz 0x08000825 Thumb Code 48 dfixul.o(.text) - __aeabi_cdrcmple 0x08000855 Thumb Code 48 cdrcmple.o(.text) - __scatterload 0x08000885 Thumb Code 28 init.o(.text) - __scatterload_rt2 0x08000885 Thumb Code 0 init.o(.text) - __aeabi_llsl 0x080008a9 Thumb Code 30 llshl.o(.text) - _ll_shift_l 0x080008a9 Thumb Code 0 llshl.o(.text) - __aeabi_lasr 0x080008c7 Thumb Code 36 llsshr.o(.text) - _ll_sshift_r 0x080008c7 Thumb Code 0 llsshr.o(.text) - __vfscanf 0x080008ed Thumb Code 810 _scanf.o(.text) - _strtoul 0x08000c1d Thumb Code 158 _strtoul.o(.text) - _double_round 0x08000cbb Thumb Code 30 depilogue.o(.text) - _double_epilogue 0x08000cd9 Thumb Code 156 depilogue.o(.text) - BusFault_Handler 0x08000d75 Thumb Code 4 stm32f1xx_it.o(i.BusFault_Handler) - CmdParser_FeedByte 0x08000d79 Thumb Code 730 cmd_parser.o(i.CmdParser_FeedByte) - CmdParser_HasCompleteFrame 0x080010a9 Thumb Code 42 cmd_parser.o(i.CmdParser_HasCompleteFrame) - CmdParser_Init 0x080010d9 Thumb Code 24 cmd_parser.o(i.CmdParser_Init) - CmdParser_SetResponseCallback 0x08001105 Thumb Code 6 cmd_parser.o(i.CmdParser_SetResponseCallback) - CmdParser_SetSourcePort 0x08001111 Thumb Code 6 cmd_parser.o(i.CmdParser_SetSourcePort) - CmdParser_Task 0x0800111d Thumb Code 32 cmd_parser.o(i.CmdParser_Task) - CmdRouter_Init 0x08001141 Thumb Code 110 cmd_router.o(i.CmdRouter_Init) - CmdRouter_Task 0x08001221 Thumb Code 326 cmd_router.o(i.CmdRouter_Task) - DebugLog_Init 0x080013cd Thumb Code 20 debug_log.o(i.DebugLog_Init) - DebugLog_Output 0x0800140d Thumb Code 148 debug_log.o(i.DebugLog_Output) - DebugMon_Handler 0x080014bd Thumb Code 2 stm32f1xx_it.o(i.DebugMon_Handler) - Error_Handler 0x080014bf Thumb Code 6 main.o(i.Error_Handler) - HAL_DMA_Abort 0x080014c5 Thumb Code 86 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) - HAL_DMA_Abort_IT 0x0800151d Thumb Code 172 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) - HAL_Delay 0x080015cd Thumb Code 36 stm32f1xx_hal.o(i.HAL_Delay) - HAL_GPIO_Init 0x080015f5 Thumb Code 766 stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) - HAL_GPIO_ReadPin 0x08001915 Thumb Code 16 stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin) - HAL_GPIO_WritePin 0x08001925 Thumb Code 12 stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) - HAL_GetTick 0x08001931 Thumb Code 6 stm32f1xx_hal.o(i.HAL_GetTick) - HAL_IncTick 0x0800193d Thumb Code 16 stm32f1xx_hal.o(i.HAL_IncTick) - HAL_Init 0x08001955 Thumb Code 34 stm32f1xx_hal.o(i.HAL_Init) - HAL_InitTick 0x0800197d Thumb Code 64 stm32f1xx_hal.o(i.HAL_InitTick) - HAL_MspInit 0x080019c9 Thumb Code 76 stm32f1xx_hal_msp.o(i.HAL_MspInit) - HAL_NVIC_EnableIRQ 0x08001a1d Thumb Code 32 stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) - HAL_NVIC_SetPriority 0x08001a3d Thumb Code 124 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) - HAL_NVIC_SetPriorityGrouping 0x08001ab9 Thumb Code 32 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping) - HAL_RCC_ClockConfig 0x08001ae1 Thumb Code 376 stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig) - HAL_RCC_GetHCLKFreq 0x08001c6d Thumb Code 6 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) - HAL_RCC_GetPCLK1Freq 0x08001c79 Thumb Code 22 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) - HAL_RCC_GetPCLK2Freq 0x08001c99 Thumb Code 22 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) - HAL_RCC_GetSysClockFreq 0x08001cb9 Thumb Code 92 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) - HAL_RCC_OscConfig 0x08001d29 Thumb Code 1114 stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) - HAL_SPI_Init 0x0800218d Thumb Code 190 stm32f1xx_hal_spi.o(i.HAL_SPI_Init) - HAL_SPI_MspInit 0x0800224d Thumb Code 124 spi.o(i.HAL_SPI_MspInit) - HAL_SYSTICK_Config 0x080022d5 Thumb Code 52 stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config) - HAL_UARTEx_RxEventCallback 0x08002309 Thumb Code 2 stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback) - HAL_UART_ErrorCallback 0x0800230b Thumb Code 2 stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) - HAL_UART_IRQHandler 0x0800230d Thumb Code 736 stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) - HAL_UART_Init 0x080025f1 Thumb Code 118 stm32f1xx_hal_uart.o(i.HAL_UART_Init) - HAL_UART_MspInit 0x08002669 Thumb Code 376 usart.o(i.HAL_UART_MspInit) - HAL_UART_Receive_IT 0x080027f9 Thumb Code 44 stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) - HAL_UART_RxCpltCallback 0x08002825 Thumb Code 96 main.o(i.HAL_UART_RxCpltCallback) - HAL_UART_Transmit 0x080028a5 Thumb Code 178 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) - HAL_UART_Transmit_IT 0x08002957 Thumb Code 56 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT) - HAL_UART_TxCpltCallback 0x08002991 Thumb Code 50 main.o(i.HAL_UART_TxCpltCallback) - HardFault_Handler 0x080029d1 Thumb Code 4 stm32f1xx_it.o(i.HardFault_Handler) - IO_Monitor_GetAllStates 0x080029d5 Thumb Code 34 io_monitor.o(i.IO_Monitor_GetAllStates) - IO_Monitor_GetState 0x080029fd Thumb Code 20 io_monitor.o(i.IO_Monitor_GetState) - IO_Monitor_Init 0x08002a15 Thumb Code 76 io_monitor.o(i.IO_Monitor_Init) - IO_Monitor_Task 0x08002a95 Thumb Code 122 io_monitor.o(i.IO_Monitor_Task) - MX_GPIO_Init 0x08002b1d Thumb Code 258 gpio.o(i.MX_GPIO_Init) - MX_SPI2_Init 0x08002c2d Thumb Code 58 spi.o(i.MX_SPI2_Init) - MX_USART1_UART_Init 0x08002c71 Thumb Code 46 usart.o(i.MX_USART1_UART_Init) - MX_USART2_UART_Init 0x08002ca9 Thumb Code 46 usart.o(i.MX_USART2_UART_Init) - MX_USART3_UART_Init 0x08002ce1 Thumb Code 46 usart.o(i.MX_USART3_UART_Init) - MemManage_Handler 0x08002d19 Thumb Code 4 stm32f1xx_it.o(i.MemManage_Handler) - MultiUART_FeedByte 0x08002d1d Thumb Code 74 multi_uart_router.o(i.MultiUART_FeedByte) - MultiUART_GetPortName 0x08002d89 Thumb Code 18 multi_uart_router.o(i.MultiUART_GetPortName) - MultiUART_GetRxCount 0x08002da9 Thumb Code 32 multi_uart_router.o(i.MultiUART_GetRxCount) - MultiUART_GetTxAvailable 0x08002dcd Thumb Code 38 multi_uart_router.o(i.MultiUART_GetTxAvailable) - MultiUART_Init 0x08002df9 Thumb Code 86 multi_uart_router.o(i.MultiUART_Init) - MultiUART_ReadByte 0x08002e85 Thumb Code 86 multi_uart_router.o(i.MultiUART_ReadByte) - MultiUART_Send 0x08002ee1 Thumb Code 96 multi_uart_router.o(i.MultiUART_Send) - MultiUART_SendString 0x08002f45 Thumb Code 32 multi_uart_router.o(i.MultiUART_SendString) - MultiUART_Task 0x08002f65 Thumb Code 48 multi_uart_router.o(i.MultiUART_Task) - MultiUART_TxCpltCallback 0x08002f99 Thumb Code 116 multi_uart_router.o(i.MultiUART_TxCpltCallback) - NMI_Handler 0x08003011 Thumb Code 4 stm32f1xx_it.o(i.NMI_Handler) - Passthrough_CanSend 0x08003015 Thumb Code 30 uart3_passthrough.o(i.Passthrough_CanSend) - Passthrough_Init 0x08003039 Thumb Code 130 uart3_passthrough.o(i.Passthrough_Init) - Passthrough_PushBuffer 0x08003101 Thumb Code 244 uart3_passthrough.o(i.Passthrough_PushBuffer) - Passthrough_PushByte 0x08003251 Thumb Code 182 uart3_passthrough.o(i.Passthrough_PushByte) - Passthrough_Task 0x08003335 Thumb Code 176 uart3_passthrough.o(i.Passthrough_Task) - PendSV_Handler 0x08003411 Thumb Code 2 stm32f1xx_it.o(i.PendSV_Handler) - Relay_Init 0x0800343d Thumb Code 32 relay_control.o(i.Relay_Init) - Relay_SetState 0x08003489 Thumb Code 94 relay_control.o(i.Relay_SetState) - SVC_Handler 0x08003559 Thumb Code 2 stm32f1xx_it.o(i.SVC_Handler) - SysTick_Handler 0x0800355b Thumb Code 12 stm32f1xx_it.o(i.SysTick_Handler) - SystemClock_Config 0x08003567 Thumb Code 102 main.o(i.SystemClock_Config) - SystemInit 0x080035cd Thumb Code 2 system_stm32f1xx.o(i.SystemInit) - UART2_Print_Init 0x080035d1 Thumb Code 38 uart2_print.o(i.UART2_Print_Init) - UART2_Print_Printf 0x08003621 Thumb Code 62 uart2_print.o(i.UART2_Print_Printf) - UART2_Print_Send 0x08003661 Thumb Code 170 uart2_print.o(i.UART2_Print_Send) - UART2_Print_String 0x08003715 Thumb Code 28 uart2_print.o(i.UART2_Print_String) - UART2_Print_Task 0x08003731 Thumb Code 98 uart2_print.o(i.UART2_Print_Task) - UART2_Print_TxCpltCallback 0x0800379d Thumb Code 98 uart2_print.o(i.UART2_Print_TxCpltCallback) - UART3_Protocol_CheckTimeout 0x08003809 Thumb Code 82 uart3_protocol_discriminator.o(i.UART3_Protocol_CheckTimeout) - UART3_Protocol_FeedByte 0x080038bd Thumb Code 294 uart3_protocol_discriminator.o(i.UART3_Protocol_FeedByte) - UART3_Protocol_GetPassthroughData 0x08003be5 Thumb Code 70 uart3_protocol_discriminator.o(i.UART3_Protocol_GetPassthroughData) - UART3_Protocol_Init 0x08003c69 Thumb Code 24 uart3_protocol_discriminator.o(i.UART3_Protocol_Init) - UART_Start_Receive_IT 0x08003f4d Thumb Code 64 stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT) - USART1_IRQHandler 0x08004081 Thumb Code 10 stm32f1xx_it.o(i.USART1_IRQHandler) - USART2_IRQHandler 0x08004091 Thumb Code 10 stm32f1xx_it.o(i.USART2_IRQHandler) - USART3_IRQHandler 0x080040a1 Thumb Code 10 stm32f1xx_it.o(i.USART3_IRQHandler) - UsageFault_Handler 0x080040b1 Thumb Code 4 stm32f1xx_it.o(i.UsageFault_Handler) - __0printf 0x080040b5 Thumb Code 22 printfa.o(i.__0printf) - __1printf 0x080040b5 Thumb Code 0 printfa.o(i.__0printf) - __2printf 0x080040b5 Thumb Code 0 printfa.o(i.__0printf) - __c89printf 0x080040b5 Thumb Code 0 printfa.o(i.__0printf) - printf 0x080040b5 Thumb Code 0 printfa.o(i.__0printf) - __0snprintf 0x080040d5 Thumb Code 48 printfa.o(i.__0snprintf) - __1snprintf 0x080040d5 Thumb Code 0 printfa.o(i.__0snprintf) - __2snprintf 0x080040d5 Thumb Code 0 printfa.o(i.__0snprintf) - __c89snprintf 0x080040d5 Thumb Code 0 printfa.o(i.__0snprintf) - snprintf 0x080040d5 Thumb Code 0 printfa.o(i.__0snprintf) - __0vsnprintf 0x08004109 Thumb Code 46 printfa.o(i.__0vsnprintf) - __1vsnprintf 0x08004109 Thumb Code 0 printfa.o(i.__0vsnprintf) - __2vsnprintf 0x08004109 Thumb Code 0 printfa.o(i.__0vsnprintf) - __c89vsnprintf 0x08004109 Thumb Code 0 printfa.o(i.__0vsnprintf) - vsnprintf 0x08004109 Thumb Code 0 printfa.o(i.__0vsnprintf) - __aeabi_errno_addr 0x08004175 Thumb Code 4 errno.o(i.__aeabi_errno_addr) - __rt_errno_addr 0x08004175 Thumb Code 0 errno.o(i.__aeabi_errno_addr) - __scatterload_copy 0x0800417d Thumb Code 14 handlers.o(i.__scatterload_copy) - __scatterload_null 0x0800418b Thumb Code 2 handlers.o(i.__scatterload_null) - __scatterload_zeroinit 0x0800418d Thumb Code 14 handlers.o(i.__scatterload_zeroinit) - fputc 0x08004bfd Thumb Code 16 uart2_print.o(i.fputc) - gpio_led_rx_off 0x08004c0d Thumb Code 14 gpio.o(i.gpio_led_rx_off) - gpio_led_rx_on 0x08004c21 Thumb Code 14 gpio.o(i.gpio_led_rx_on) - gpio_led_tx_off 0x08004c35 Thumb Code 16 gpio.o(i.gpio_led_tx_off) - gpio_led_tx_on 0x08004c49 Thumb Code 14 gpio.o(i.gpio_led_tx_on) - main 0x08004dc1 Thumb Code 186 main.o(i.main) - rf433_hal_1ms_callback 0x08005381 Thumb Code 30 rf433_hal.o(i.rf433_hal_1ms_callback) - rf433_hal_aux_wait 0x080053a9 Thumb Code 58 rf433_hal.o(i.rf433_hal_aux_wait) - rf433_hal_deinit 0x080053e9 Thumb Code 22 rf433_hal.o(i.rf433_hal_deinit) - rf433_hal_fifo_clear 0x08005405 Thumb Code 8 rf433_hal.o(i.rf433_hal_fifo_clear) - rf433_hal_fifo_get_length 0x0800540d Thumb Code 12 rf433_hal.o(i.rf433_hal_fifo_get_length) - rf433_hal_fifo_read 0x08005419 Thumb Code 20 rf433_hal.o(i.rf433_hal_fifo_read) - rf433_hal_init 0x0800542d Thumb Code 36 rf433_hal.o(i.rf433_hal_init) - rf433_hal_set_work_mode 0x08005461 Thumb Code 150 rf433_hal.o(i.rf433_hal_set_work_mode) - rf433_hal_uart_rxcplt_callback 0x08005501 Thumb Code 38 rf433_hal.o(i.rf433_hal_uart_rxcplt_callback) - rf433_hal_uart_tx 0x08005535 Thumb Code 44 rf433_hal.o(i.rf433_hal_uart_tx) - rf433_init 0x08005565 Thumb Code 84 rf433.o(i.rf433_init) - rf433_rx_app_init 0x080055c5 Thumb Code 74 rf433_rx_app.o(i.rf433_rx_app_init) - rf433_rx_app_parse_packet 0x08005615 Thumb Code 72 rf433_rx_app.o(i.rf433_rx_app_parse_packet) - rf433_rx_app_start 0x08005665 Thumb Code 28 rf433_rx_app.o(i.rf433_rx_app_start) - rf433_rx_app_task 0x08005685 Thumb Code 154 rf433_rx_app.o(i.rf433_rx_app_task) - rf433_rx_start 0x08005725 Thumb Code 50 rf433.o(i.rf433_rx_start) - rf433_set_config 0x08005785 Thumb Code 84 rf433.o(i.rf433_set_config) - rf433_set_work_mode 0x080057dd Thumb Code 24 rf433.o(i.rf433_set_work_mode) - rf433_transmit 0x080057f5 Thumb Code 50 rf433.o(i.rf433_transmit) - rf433_tx_app_init 0x0800582d Thumb Code 70 rf433_tx_app.o(i.rf433_tx_app_init) - rf433_tx_app_start 0x08005879 Thumb Code 40 rf433_tx_app.o(i.rf433_tx_app_start) - rf433_tx_app_task 0x080058a5 Thumb Code 206 rf433_tx_app.o(i.rf433_tx_app_task) - systick_interrupt_1ms_callback 0x08005bb9 Thumb Code 24 systick.o(i.systick_interrupt_1ms_callback) - uart1_check_rx_done 0x08005d0d Thumb Code 76 rf433_hal.o(i.uart1_check_rx_done) - uart1_rx_timeout_1ms_callback 0x08005d5d Thumb Code 8 rf433_hal.o(i.uart1_rx_timeout_1ms_callback) - AHBPrescTable 0x08005d9e Data 16 system_stm32f1xx.o(.constdata) - APBPrescTable 0x08005dae Data 8 system_stm32f1xx.o(.constdata) - __ctype_table 0x08005dd7 Data 129 ctype_o.o(.constdata) - Region$$Table$$Base 0x08005e94 Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x08005eb4 Number 0 anon$$obj.o(Region$$Table) - uwTick 0x2000007c Data 4 stm32f1xx_hal.o(.data) - uwTickPrio 0x20000080 Data 4 stm32f1xx_hal.o(.data) - uwTickFreq 0x20000084 Data 1 stm32f1xx_hal.o(.data) - SystemCoreClock 0x20000088 Data 4 system_stm32f1xx.o(.data) - rf433_uart_rx_tmp 0x200000ac Data 1 rf433_hal.o(.data) - __stdout 0x200000b8 Data 4 stdout.o(.data) - hspi2 0x20000104 Data 88 spi.o(.bss) - huart1 0x2000015c Data 72 usart.o(.bss) - huart2 0x200001a4 Data 72 usart.o(.bss) - huart3 0x200001ec Data 72 usart.o(.bss) - g_passthrough_ctx 0x20000b70 Data 560 uart3_passthrough.o(.bss) - g_uart3_proto_ctx 0x20000da0 Data 148 uart3_protocol_discriminator.o(.bss) - __initial_sp 0x20001a38 Data 0 startup_stm32f103xb.o(STACK) + strncmp 0x080001b9 Thumb Code 30 strncmp.o(.text) + __0sscanf 0x080001d9 Thumb Code 48 __0sscanf.o(.text) + _scanf_int 0x08000211 Thumb Code 332 _scanf_int.o(.text) + __aeabi_uidiv 0x0800035d Thumb Code 0 uidiv.o(.text) + __aeabi_uidivmod 0x0800035d Thumb Code 44 uidiv.o(.text) + __aeabi_uldivmod 0x08000389 Thumb Code 98 uldiv.o(.text) + _chval 0x080003eb Thumb Code 28 _chval.o(.text) + __vfscanf_char 0x08000415 Thumb Code 20 scanf_char.o(.text) + _sgetc 0x08000431 Thumb Code 30 _sgetc.o(.text) + _sbackspace 0x0800044f Thumb Code 34 _sgetc.o(.text) + __I$use$fp 0x08000471 Thumb Code 0 iusefp.o(.text) + __aeabi_dadd 0x08000471 Thumb Code 322 dadd.o(.text) + __aeabi_dsub 0x080005b3 Thumb Code 6 dadd.o(.text) + __aeabi_drsub 0x080005b9 Thumb Code 6 dadd.o(.text) + __aeabi_dmul 0x080005bf Thumb Code 228 dmul.o(.text) + __aeabi_ddiv 0x080006a3 Thumb Code 222 ddiv.o(.text) + __aeabi_d2ulz 0x08000781 Thumb Code 48 dfixul.o(.text) + __aeabi_cdrcmple 0x080007b1 Thumb Code 48 cdrcmple.o(.text) + __scatterload 0x080007e1 Thumb Code 28 init.o(.text) + __scatterload_rt2 0x080007e1 Thumb Code 0 init.o(.text) + __aeabi_llsl 0x08000805 Thumb Code 30 llshl.o(.text) + _ll_shift_l 0x08000805 Thumb Code 0 llshl.o(.text) + __aeabi_lasr 0x08000823 Thumb Code 36 llsshr.o(.text) + _ll_sshift_r 0x08000823 Thumb Code 0 llsshr.o(.text) + __vfscanf 0x08000849 Thumb Code 810 _scanf.o(.text) + _double_round 0x08000b79 Thumb Code 30 depilogue.o(.text) + _double_epilogue 0x08000b97 Thumb Code 156 depilogue.o(.text) + __decompress 0x08000c33 Thumb Code 0 __dczerorl2.o(.text) + __decompress1 0x08000c33 Thumb Code 86 __dczerorl2.o(.text) + BusFault_Handler 0x08000c89 Thumb Code 4 stm32f1xx_it.o(i.BusFault_Handler) + CmdParser_Init 0x08000c8d Thumb Code 18 cmd_parser.o(i.CmdParser_Init) + CmdParser_SetResponseCallback 0x08000ca5 Thumb Code 6 cmd_parser.o(i.CmdParser_SetResponseCallback) + CmdRouter_Init 0x08000cb1 Thumb Code 88 cmd_router.o(i.CmdRouter_Init) + DHCP_init 0x08000d29 Thumb Code 200 dhcp.o(i.DHCP_init) + DHCP_run 0x08000e09 Thumb Code 424 dhcp.o(i.DHCP_run) + DHCP_stop 0x08000fe1 Thumb Code 18 dhcp.o(i.DHCP_stop) + DHCP_time_handler 0x08000ffd Thumb Code 12 dhcp.o(i.DHCP_time_handler) + DebugLog_Init 0x0800100d Thumb Code 20 debug_log.o(i.DebugLog_Init) + DebugLog_Output 0x0800104d Thumb Code 158 debug_log.o(i.DebugLog_Output) + DebugLog_SetLevel 0x08001109 Thumb Code 6 debug_log.o(i.DebugLog_SetLevel) + DebugMon_Handler 0x08001115 Thumb Code 2 stm32f1xx_it.o(i.DebugMon_Handler) + Error_Handler 0x08001117 Thumb Code 6 main.o(i.Error_Handler) + HAL_DMA_Abort 0x0800111d Thumb Code 86 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) + HAL_DMA_Abort_IT 0x08001175 Thumb Code 172 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) + HAL_Delay 0x08001225 Thumb Code 36 stm32f1xx_hal.o(i.HAL_Delay) + HAL_GPIO_Init 0x0800124d Thumb Code 766 stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) + HAL_GPIO_ReadPin 0x0800156d Thumb Code 16 stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin) + HAL_GPIO_WritePin 0x0800157d Thumb Code 12 stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) + HAL_GetTick 0x08001589 Thumb Code 6 stm32f1xx_hal.o(i.HAL_GetTick) + HAL_IncTick 0x08001595 Thumb Code 16 stm32f1xx_hal.o(i.HAL_IncTick) + HAL_Init 0x080015ad Thumb Code 34 stm32f1xx_hal.o(i.HAL_Init) + HAL_InitTick 0x080015d5 Thumb Code 64 stm32f1xx_hal.o(i.HAL_InitTick) + HAL_MspInit 0x08001621 Thumb Code 76 stm32f1xx_hal_msp.o(i.HAL_MspInit) + HAL_NVIC_EnableIRQ 0x08001675 Thumb Code 32 stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) + HAL_NVIC_SetPriority 0x08001695 Thumb Code 124 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) + HAL_NVIC_SetPriorityGrouping 0x08001711 Thumb Code 32 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping) + HAL_RCC_ClockConfig 0x08001739 Thumb Code 376 stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig) + HAL_RCC_GetHCLKFreq 0x080018c5 Thumb Code 6 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) + HAL_RCC_GetPCLK1Freq 0x080018d1 Thumb Code 22 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) + HAL_RCC_GetPCLK2Freq 0x080018f1 Thumb Code 22 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) + HAL_RCC_GetSysClockFreq 0x08001911 Thumb Code 92 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) + HAL_RCC_OscConfig 0x08001981 Thumb Code 1114 stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) + HAL_SPI_Init 0x08001de5 Thumb Code 190 stm32f1xx_hal_spi.o(i.HAL_SPI_Init) + HAL_SPI_MspInit 0x08001ea5 Thumb Code 124 spi.o(i.HAL_SPI_MspInit) + HAL_SPI_Receive 0x08001f2d Thumb Code 382 stm32f1xx_hal_spi.o(i.HAL_SPI_Receive) + HAL_SPI_Transmit 0x080020ab Thumb Code 444 stm32f1xx_hal_spi.o(i.HAL_SPI_Transmit) + HAL_SPI_TransmitReceive 0x08002267 Thumb Code 576 stm32f1xx_hal_spi.o(i.HAL_SPI_TransmitReceive) + HAL_SYSTICK_Config 0x080024a7 Thumb Code 52 stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config) + HAL_TIMEx_BreakCallback 0x080024db Thumb Code 2 stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_BreakCallback) + HAL_TIMEx_CommutCallback 0x080024dd Thumb Code 2 stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_CommutCallback) + HAL_TIMEx_MasterConfigSynchronization 0x080024e1 Thumb Code 118 stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization) + HAL_TIM_Base_Init 0x08002565 Thumb Code 102 stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Init) + HAL_TIM_Base_MspInit 0x080025cd Thumb Code 58 tim.o(i.HAL_TIM_Base_MspInit) + HAL_TIM_Base_Start_IT 0x0800260d Thumb Code 106 stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start_IT) + HAL_TIM_ConfigClockSource 0x08002685 Thumb Code 268 stm32f1xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) + HAL_TIM_IC_CaptureCallback 0x08002791 Thumb Code 2 stm32f1xx_hal_tim.o(i.HAL_TIM_IC_CaptureCallback) + HAL_TIM_IRQHandler 0x08002793 Thumb Code 406 stm32f1xx_hal_tim.o(i.HAL_TIM_IRQHandler) + HAL_TIM_OC_DelayElapsedCallback 0x08002929 Thumb Code 2 stm32f1xx_hal_tim.o(i.HAL_TIM_OC_DelayElapsedCallback) + HAL_TIM_PWM_PulseFinishedCallback 0x0800292b Thumb Code 2 stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_PulseFinishedCallback) + HAL_TIM_PeriodElapsedCallback 0x0800292d Thumb Code 18 wiz_platform.o(i.HAL_TIM_PeriodElapsedCallback) + HAL_TIM_TriggerCallback 0x0800293f Thumb Code 2 stm32f1xx_hal_tim.o(i.HAL_TIM_TriggerCallback) + HAL_UARTEx_RxEventCallback 0x08002941 Thumb Code 2 stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback) + HAL_UART_ErrorCallback 0x08002945 Thumb Code 130 main.o(i.HAL_UART_ErrorCallback) + HAL_UART_IRQHandler 0x080029ed Thumb Code 736 stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) + HAL_UART_Init 0x08002cd1 Thumb Code 118 stm32f1xx_hal_uart.o(i.HAL_UART_Init) + HAL_UART_MspInit 0x08002d49 Thumb Code 376 usart.o(i.HAL_UART_MspInit) + HAL_UART_Receive_IT 0x08002ed9 Thumb Code 44 stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) + HAL_UART_RxCpltCallback 0x08002f05 Thumb Code 134 main.o(i.HAL_UART_RxCpltCallback) + HAL_UART_Transmit 0x08002fc9 Thumb Code 178 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) + HAL_UART_Transmit_IT 0x0800307b Thumb Code 56 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT) + HAL_UART_TxCpltCallback 0x080030b5 Thumb Code 50 main.o(i.HAL_UART_TxCpltCallback) + HardFault_Handler 0x080030f5 Thumb Code 4 stm32f1xx_it.o(i.HardFault_Handler) + IO_Monitor_GetAllStates 0x080030f9 Thumb Code 34 io_monitor.o(i.IO_Monitor_GetAllStates) + IO_Monitor_Init 0x08003121 Thumb Code 76 io_monitor.o(i.IO_Monitor_Init) + IO_Monitor_Task 0x080031a1 Thumb Code 122 io_monitor.o(i.IO_Monitor_Task) + MX_GPIO_Init 0x08003229 Thumb Code 258 gpio.o(i.MX_GPIO_Init) + MX_SPI2_Init 0x08003339 Thumb Code 58 spi.o(i.MX_SPI2_Init) + MX_TIM2_Init 0x0800337d Thumb Code 102 tim.o(i.MX_TIM2_Init) + MX_USART1_UART_Init 0x080033e9 Thumb Code 46 usart.o(i.MX_USART1_UART_Init) + MX_USART2_UART_Init 0x08003421 Thumb Code 46 usart.o(i.MX_USART2_UART_Init) + MX_USART3_UART_Init 0x08003459 Thumb Code 46 usart.o(i.MX_USART3_UART_Init) + MemManage_Handler 0x08003491 Thumb Code 4 stm32f1xx_it.o(i.MemManage_Handler) + MultiUART_GetPortName 0x08003495 Thumb Code 18 multi_uart_router.o(i.MultiUART_GetPortName) + MultiUART_Init 0x080034b5 Thumb Code 78 multi_uart_router.o(i.MultiUART_Init) + MultiUART_Send 0x08003511 Thumb Code 96 multi_uart_router.o(i.MultiUART_Send) + MultiUART_SendString 0x08003575 Thumb Code 32 multi_uart_router.o(i.MultiUART_SendString) + MultiUART_Task 0x08003595 Thumb Code 48 multi_uart_router.o(i.MultiUART_Task) + MultiUART_TxCpltCallback 0x080035c9 Thumb Code 116 multi_uart_router.o(i.MultiUART_TxCpltCallback) + NMI_Handler 0x08003641 Thumb Code 4 stm32f1xx_it.o(i.NMI_Handler) + NibbleToHex 0x08003645 Thumb Code 26 dhcp.o(i.NibbleToHex) + PendSV_Handler 0x0800365f Thumb Code 2 stm32f1xx_it.o(i.PendSV_Handler) + Relay_Init 0x08003689 Thumb Code 32 relay_control.o(i.Relay_Init) + SVC_Handler 0x0800384d Thumb Code 2 stm32f1xx_it.o(i.SVC_Handler) + SysTick_Handler 0x0800384f Thumb Code 12 stm32f1xx_it.o(i.SysTick_Handler) + SystemClock_Config 0x0800385b Thumb Code 102 main.o(i.SystemClock_Config) + SystemInit 0x080038c1 Thumb Code 2 system_stm32f1xx.o(i.SystemInit) + TIM2_IRQHandler 0x080038c5 Thumb Code 10 stm32f1xx_it.o(i.TIM2_IRQHandler) + TIM_Base_SetConfig 0x080038d5 Thumb Code 104 stm32f1xx_hal_tim.o(i.TIM_Base_SetConfig) + TIM_ETR_SetConfig 0x08003949 Thumb Code 22 stm32f1xx_hal_tim.o(i.TIM_ETR_SetConfig) + UART2_Print_Init 0x080039c1 Thumb Code 38 uart2_print.o(i.UART2_Print_Init) + UART2_Print_Printf 0x08003a11 Thumb Code 62 uart2_print.o(i.UART2_Print_Printf) + UART2_Print_Send 0x08003a51 Thumb Code 172 uart2_print.o(i.UART2_Print_Send) + UART2_Print_String 0x08003b05 Thumb Code 28 uart2_print.o(i.UART2_Print_String) + UART2_Print_Task 0x08003b21 Thumb Code 98 uart2_print.o(i.UART2_Print_Task) + UART2_Print_TxCpltCallback 0x08003b8d Thumb Code 98 uart2_print.o(i.UART2_Print_TxCpltCallback) + UART_Start_Receive_IT 0x08003e91 Thumb Code 64 stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT) + USART1_IRQHandler 0x08003fc5 Thumb Code 10 stm32f1xx_it.o(i.USART1_IRQHandler) + USART2_IRQHandler 0x08003fd5 Thumb Code 10 stm32f1xx_it.o(i.USART2_IRQHandler) + USART3_IRQHandler 0x08003fe5 Thumb Code 10 stm32f1xx_it.o(i.USART3_IRQHandler) + UsageFault_Handler 0x08003ff5 Thumb Code 4 stm32f1xx_it.o(i.UsageFault_Handler) + WIZCHIP_READ 0x08003ff9 Thumb Code 112 w5500.o(i.WIZCHIP_READ) + WIZCHIP_READ_BUF 0x0800406d Thumb Code 136 w5500.o(i.WIZCHIP_READ_BUF) + WIZCHIP_WRITE 0x080040f9 Thumb Code 112 w5500.o(i.WIZCHIP_WRITE) + WIZCHIP_WRITE_BUF 0x0800416d Thumb Code 132 w5500.o(i.WIZCHIP_WRITE_BUF) + __0printf 0x080041f5 Thumb Code 22 printfa.o(i.__0printf) + __1printf 0x080041f5 Thumb Code 0 printfa.o(i.__0printf) + __2printf 0x080041f5 Thumb Code 0 printfa.o(i.__0printf) + __c89printf 0x080041f5 Thumb Code 0 printfa.o(i.__0printf) + printf 0x080041f5 Thumb Code 0 printfa.o(i.__0printf) + __0snprintf 0x08004215 Thumb Code 48 printfa.o(i.__0snprintf) + __1snprintf 0x08004215 Thumb Code 0 printfa.o(i.__0snprintf) + __2snprintf 0x08004215 Thumb Code 0 printfa.o(i.__0snprintf) + __c89snprintf 0x08004215 Thumb Code 0 printfa.o(i.__0snprintf) + snprintf 0x08004215 Thumb Code 0 printfa.o(i.__0snprintf) + __0sprintf 0x08004249 Thumb Code 34 printfa.o(i.__0sprintf) + __1sprintf 0x08004249 Thumb Code 0 printfa.o(i.__0sprintf) + __2sprintf 0x08004249 Thumb Code 0 printfa.o(i.__0sprintf) + __c89sprintf 0x08004249 Thumb Code 0 printfa.o(i.__0sprintf) + sprintf 0x08004249 Thumb Code 0 printfa.o(i.__0sprintf) + __0vsnprintf 0x08004271 Thumb Code 46 printfa.o(i.__0vsnprintf) + __1vsnprintf 0x08004271 Thumb Code 0 printfa.o(i.__0vsnprintf) + __2vsnprintf 0x08004271 Thumb Code 0 printfa.o(i.__0vsnprintf) + __c89vsnprintf 0x08004271 Thumb Code 0 printfa.o(i.__0vsnprintf) + vsnprintf 0x08004271 Thumb Code 0 printfa.o(i.__0vsnprintf) + __scatterload_copy 0x080042dd Thumb Code 14 handlers.o(i.__scatterload_copy) + __scatterload_null 0x080042eb Thumb Code 2 handlers.o(i.__scatterload_null) + __scatterload_zeroinit 0x080042ed Thumb Code 14 handlers.o(i.__scatterload_zeroinit) + check_DHCP_leasedIP 0x08004bc1 Thumb Code 88 dhcp.o(i.check_DHCP_leasedIP) + check_DHCP_timeout 0x08004c39 Thumb Code 154 dhcp.o(i.check_DHCP_timeout) + close 0x08004ce5 Thumb Code 142 socket.o(i.close) + ctlwizchip 0x08004e3d Thumb Code 282 wizchip_conf.o(i.ctlwizchip) + default_ip_assign 0x08004f5d Thumb Code 38 dhcp.o(i.default_ip_assign) + default_ip_conflict 0x08004f91 Thumb Code 30 dhcp.o(i.default_ip_conflict) + default_ip_update 0x08004fb5 Thumb Code 34 dhcp.o(i.default_ip_update) + fputc 0x08004fdd Thumb Code 26 uart2_print.o(i.fputc) + free 0x08004ff9 Thumb Code 76 malloc.o(i.free) + getDNSfromDHCP 0x08005049 Thumb Code 26 dhcp.o(i.getDNSfromDHCP) + getGWfromDHCP 0x08005069 Thumb Code 26 dhcp.o(i.getGWfromDHCP) + getIPfromDHCP 0x08005089 Thumb Code 26 dhcp.o(i.getIPfromDHCP) + getSNfromDHCP 0x080050a9 Thumb Code 26 dhcp.o(i.getSNfromDHCP) + getSn_RX_RSR 0x080050c9 Thumb Code 108 w5500.o(i.getSn_RX_RSR) + getSn_TX_FSR 0x08005135 Thumb Code 108 w5500.o(i.getSn_TX_FSR) + gpio_led_rx_off 0x080051a1 Thumb Code 14 gpio.o(i.gpio_led_rx_off) + gpio_led_rx_on 0x080051b5 Thumb Code 14 gpio.o(i.gpio_led_rx_on) + gpio_led_tx_off 0x080051c9 Thumb Code 16 gpio.o(i.gpio_led_tx_off) + gpio_led_tx_on 0x080051dd Thumb Code 14 gpio.o(i.gpio_led_tx_on) + loopback_udps 0x08005275 Thumb Code 282 loopback.o(i.loopback_udps) + main 0x08005419 Thumb Code 364 main.o(i.main) + makeDHCPMSG 0x08005755 Thumb Code 386 dhcp.o(i.makeDHCPMSG) + malloc 0x080058e5 Thumb Code 92 malloc.o(i.malloc) + network_init 0x08005951 Thumb Code 46 wiz_interface.o(i.network_init) + parseDHCPMSG 0x08005981 Thumb Code 608 dhcp.o(i.parseDHCPMSG) + print_network_information 0x08005c05 Thumb Code 190 wiz_interface.o(i.print_network_information) + recvfrom 0x08005dd5 Thumb Code 768 socket.o(i.recvfrom) + reg_wizchip_cs_cbfunc 0x080060e1 Thumb Code 26 wizchip_conf.o(i.reg_wizchip_cs_cbfunc) + reg_wizchip_spi_cbfunc 0x08006109 Thumb Code 40 wizchip_conf.o(i.reg_wizchip_spi_cbfunc) + reg_wizchip_spiburst_cbfunc 0x0800613d Thumb Code 38 wizchip_conf.o(i.reg_wizchip_spiburst_cbfunc) + reset_DHCP_timeout 0x08006171 Thumb Code 20 dhcp.o(i.reset_DHCP_timeout) + rf433_hal_1ms_callback 0x08006235 Thumb Code 30 rf433_hal.o(i.rf433_hal_1ms_callback) + rf433_hal_aux_wait 0x0800625d Thumb Code 58 rf433_hal.o(i.rf433_hal_aux_wait) + rf433_hal_deinit 0x0800629d Thumb Code 22 rf433_hal.o(i.rf433_hal_deinit) + rf433_hal_fifo_clear 0x080062b9 Thumb Code 8 rf433_hal.o(i.rf433_hal_fifo_clear) + rf433_hal_fifo_get_length 0x080062c1 Thumb Code 12 rf433_hal.o(i.rf433_hal_fifo_get_length) + rf433_hal_fifo_read 0x080062cd Thumb Code 20 rf433_hal.o(i.rf433_hal_fifo_read) + rf433_hal_init 0x080062e1 Thumb Code 36 rf433_hal.o(i.rf433_hal_init) + rf433_hal_set_work_mode 0x08006315 Thumb Code 150 rf433_hal.o(i.rf433_hal_set_work_mode) + rf433_hal_uart_tx 0x080063b5 Thumb Code 44 rf433_hal.o(i.rf433_hal_uart_tx) + rf433_init 0x080063e5 Thumb Code 84 rf433.o(i.rf433_init) + rf433_rx_app_init 0x08006445 Thumb Code 74 rf433_rx_app.o(i.rf433_rx_app_init) + rf433_rx_app_parse_packet 0x08006495 Thumb Code 72 rf433_rx_app.o(i.rf433_rx_app_parse_packet) + rf433_rx_app_start 0x080064e5 Thumb Code 28 rf433_rx_app.o(i.rf433_rx_app_start) + rf433_rx_app_task 0x08006505 Thumb Code 154 rf433_rx_app.o(i.rf433_rx_app_task) + rf433_rx_start 0x080065a5 Thumb Code 50 rf433.o(i.rf433_rx_start) + rf433_set_config 0x08006605 Thumb Code 84 rf433.o(i.rf433_set_config) + rf433_set_work_mode 0x0800665d Thumb Code 24 rf433.o(i.rf433_set_work_mode) + rf433_transmit 0x08006675 Thumb Code 50 rf433.o(i.rf433_transmit) + rf433_tx_app_init 0x080066ad Thumb Code 80 rf433_tx_app.o(i.rf433_tx_app_init) + rf433_tx_app_start 0x08006705 Thumb Code 40 rf433_tx_app.o(i.rf433_tx_app_start) + rf433_tx_app_task 0x08006731 Thumb Code 206 rf433_tx_app.o(i.rf433_tx_app_task) + send_DHCP_DECLINE 0x08006865 Thumb Code 492 dhcp.o(i.send_DHCP_DECLINE) + send_DHCP_DISCOVER 0x08006a65 Thumb Code 638 dhcp.o(i.send_DHCP_DISCOVER) + send_DHCP_REQUEST 0x08006cfd Thumb Code 970 dhcp.o(i.send_DHCP_REQUEST) + sendto 0x080071b1 Thumb Code 518 socket.o(i.sendto) + socket 0x080073bd Thumb Code 384 socket.o(i.socket) + systick_interrupt_1ms_callback 0x08007551 Thumb Code 24 systick.o(i.systick_interrupt_1ms_callback) + uart1_check_rx_done 0x080076a5 Thumb Code 76 rf433_hal.o(i.uart1_check_rx_done) + uart1_rx_timeout_1ms_callback 0x080076f5 Thumb Code 8 rf433_hal.o(i.uart1_rx_timeout_1ms_callback) + wiz_add_timer 0x080076fd Thumb Code 52 wiz_interface.o(i.wiz_add_timer) + wiz_delete_timer 0x08007735 Thumb Code 64 wiz_interface.o(i.wiz_delete_timer) + wiz_phy_link_check 0x0800784d Thumb Code 56 wiz_interface.o(i.wiz_phy_link_check) + wiz_print_phy_info 0x080078a1 Thumb Code 54 wiz_interface.o(i.wiz_print_phy_info) + wiz_recv_data 0x08007935 Thumb Code 132 w5500.o(i.wiz_recv_data) + wiz_recv_ignore 0x080079b9 Thumb Code 102 w5500.o(i.wiz_recv_ignore) + wiz_send_data 0x08007a1f Thumb Code 132 w5500.o(i.wiz_send_data) + wiz_timer_handler 0x08007aa5 Thumb Code 48 wiz_interface.o(i.wiz_timer_handler) + wiz_user_delay_ms 0x08007add Thumb Code 18 wiz_interface.o(i.wiz_user_delay_ms) + wizchip_bus_readdata 0x08007af5 Thumb Code 6 wizchip_conf.o(i.wizchip_bus_readdata) + wizchip_bus_writedata 0x08007afb Thumb Code 4 wizchip_conf.o(i.wizchip_bus_writedata) + wizchip_clrinterrupt 0x08007aff Thumb Code 60 wizchip_conf.o(i.wizchip_clrinterrupt) + wizchip_cris_enter 0x08007b3b Thumb Code 2 wizchip_conf.o(i.wizchip_cris_enter) + wizchip_cris_exit 0x08007b3d Thumb Code 2 wizchip_conf.o(i.wizchip_cris_exit) + wizchip_cs_deselect 0x08007b3f Thumb Code 2 wizchip_conf.o(i.wizchip_cs_deselect) + wizchip_cs_select 0x08007b41 Thumb Code 2 wizchip_conf.o(i.wizchip_cs_select) + wizchip_deselect 0x08007b45 Thumb Code 14 wiz_platform.o(i.wizchip_deselect) + wizchip_getinterrupt 0x08007b59 Thumb Code 42 wizchip_conf.o(i.wizchip_getinterrupt) + wizchip_getinterruptmask 0x08007b83 Thumb Code 40 wizchip_conf.o(i.wizchip_getinterruptmask) + wizchip_getnetinfo 0x08007bad Thumb Code 82 wizchip_conf.o(i.wizchip_getnetinfo) + wizchip_init 0x08007c09 Thumb Code 144 wizchip_conf.o(i.wizchip_init) + wizchip_initialize 0x08007c99 Thumb Code 50 wiz_interface.o(i.wizchip_initialize) + wizchip_read_buff 0x08007da1 Thumb Code 22 wiz_platform.o(i.wizchip_read_buff) + wizchip_read_byte 0x08007dbd Thumb Code 22 wiz_platform.o(i.wizchip_read_byte) + wizchip_reset 0x08007dd9 Thumb Code 54 wiz_platform.o(i.wizchip_reset) + wizchip_select 0x08007e15 Thumb Code 16 wiz_platform.o(i.wizchip_select) + wizchip_setinterruptmask 0x08007e29 Thumb Code 30 wizchip_conf.o(i.wizchip_setinterruptmask) + wizchip_setnetinfo 0x08007e49 Thumb Code 80 wizchip_conf.o(i.wizchip_setnetinfo) + wizchip_spi_cb_reg 0x08007ea1 Thumb Code 28 wiz_platform.o(i.wizchip_spi_cb_reg) + wizchip_spi_readburst 0x08007ed5 Thumb Code 2 wizchip_conf.o(i.wizchip_spi_readburst) + wizchip_spi_readbyte 0x08007ed7 Thumb Code 4 wizchip_conf.o(i.wizchip_spi_readbyte) + wizchip_spi_writeburst 0x08007edb Thumb Code 2 wizchip_conf.o(i.wizchip_spi_writeburst) + wizchip_spi_writebyte 0x08007edd Thumb Code 2 wizchip_conf.o(i.wizchip_spi_writebyte) + wizchip_sw_reset 0x08007edf Thumb Code 114 wizchip_conf.o(i.wizchip_sw_reset) + wizchip_version_check 0x08007f51 Thumb Code 66 wiz_interface.o(i.wizchip_version_check) + wizchip_write_buff 0x08007f99 Thumb Code 22 wiz_platform.o(i.wizchip_write_buff) + wizchip_write_byte 0x08007fb5 Thumb Code 18 wiz_platform.o(i.wizchip_write_byte) + wizphy_getphyconf 0x08007fcd Thumb Code 120 wizchip_conf.o(i.wizphy_getphyconf) + wizphy_getphylink 0x08008045 Thumb Code 24 wizchip_conf.o(i.wizphy_getphylink) + wizphy_getphypmode 0x0800805d Thumb Code 30 wizchip_conf.o(i.wizphy_getphypmode) + wizphy_reset 0x0800807b Thumb Code 52 wizchip_conf.o(i.wizphy_reset) + wizphy_setphyconf 0x080080af Thumb Code 88 wizchip_conf.o(i.wizphy_setphyconf) + wizphy_setphypmode 0x08008107 Thumb Code 100 wizchip_conf.o(i.wizphy_setphypmode) + AHBPrescTable 0x080081a6 Data 16 system_stm32f1xx.o(.constdata) + APBPrescTable 0x080081b6 Data 8 system_stm32f1xx.o(.constdata) + rf433_default_config 0x080081be Data 5 rf433.o(.constdata) + __ctype_table 0x080081df Data 129 ctype_o.o(.constdata) + Region$$Table$$Base 0x08008408 Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x08008428 Number 0 anon$$obj.o(Region$$Table) + uwTick 0x2000008c Data 4 stm32f1xx_hal.o(.data) + uwTickPrio 0x20000090 Data 4 stm32f1xx_hal.o(.data) + uwTickFreq 0x20000094 Data 1 stm32f1xx_hal.o(.data) + SystemCoreClock 0x20000098 Data 4 system_stm32f1xx.o(.data) + rf433_uart_rx_tmp 0x200000bc Data 1 rf433_hal.o(.data) + wiz_timer_head 0x200000c8 Data 4 wiz_interface.o(.data) + wiz_delay_ms_count 0x200000cc Data 4 wiz_interface.o(.data) + default_net_info 0x200000d0 Data 23 user_main.o(.data) + local_port 0x200000e8 Data 2 user_main.o(.data) + sock_pack_info 0x200000f0 Data 8 socket.o(.data) + WIZCHIP 0x200000f8 Data 44 wizchip_conf.o(.data) + DHCP_SOCKET 0x2000012c Data 1 dhcp.o(.data) + DHCP_SIP 0x2000012d Data 4 dhcp.o(.data) + DHCP_REAL_SIP 0x20000131 Data 4 dhcp.o(.data) + OLD_allocated_ip 0x20000135 Data 4 dhcp.o(.data) + DHCP_allocated_ip 0x20000139 Data 4 dhcp.o(.data) + DHCP_allocated_gw 0x2000013d Data 4 dhcp.o(.data) + DHCP_allocated_sn 0x20000141 Data 4 dhcp.o(.data) + DHCP_allocated_dns 0x20000145 Data 4 dhcp.o(.data) + dhcp_state 0x20000149 Data 1 dhcp.o(.data) + dhcp_retry_count 0x2000014a Data 1 dhcp.o(.data) + dhcp_lease_time 0x2000014c Data 4 dhcp.o(.data) + dhcp_tick_1s 0x20000150 Data 4 dhcp.o(.data) + dhcp_tick_next 0x20000154 Data 4 dhcp.o(.data) + DHCP_XID 0x20000158 Data 4 dhcp.o(.data) + pDHCPMSG 0x2000015c Data 4 dhcp.o(.data) + HOST_NAME 0x20000160 Data 8 dhcp.o(.data) + DHCP_CHADDR 0x20000168 Data 6 dhcp.o(.data) + dhcp_ip_assign 0x20000170 Data 4 dhcp.o(.data) + dhcp_ip_update 0x20000174 Data 4 dhcp.o(.data) + dhcp_ip_conflict 0x20000178 Data 4 dhcp.o(.data) + __stdout 0x2000017c Data 4 stdout.o(.data) + __microlib_freelist 0x20000180 Data 4 mvars.o(.data) + __microlib_freelist_initialised 0x20000184 Data 4 mvars.o(.data) + hspi2 0x20000ccc Data 88 spi.o(.bss) + huart1 0x20000d24 Data 72 usart.o(.bss) + huart2 0x20000d6c Data 72 usart.o(.bss) + huart3 0x20000db4 Data 72 usart.o(.bss) + htim2 0x20001838 Data 72 tim.o(.bss) + __heap_base 0x20002090 Data 0 startup_stm32f103xb.o(HEAP) + __heap_limit 0x20002290 Data 0 startup_stm32f103xb.o(HEAP) + __initial_sp 0x20002690 Data 0 startup_stm32f103xb.o(STACK) @@ -2265,298 +3272,392 @@ Memory Map of the image Image Entry point : 0x080000ed - Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00005f74, Max: 0x00010000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x08000000, Size: 0x000085b0, Max: 0x00010000, ABSOLUTE, COMPRESSED[0x00008498]) - Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00005eb4, Max: 0x00010000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00008428, Max: 0x00010000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object 0x08000000 0x08000000 0x000000ec Data RO 3 RESET startup_stm32f103xb.o - 0x080000ec 0x080000ec 0x00000000 Code RO 3511 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) - 0x080000ec 0x080000ec 0x00000004 Code RO 3825 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) - 0x080000f0 0x080000f0 0x00000004 Code RO 3828 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 3830 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 3832 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) - 0x080000f4 0x080000f4 0x00000008 Code RO 3833 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) - 0x080000fc 0x080000fc 0x00000004 Code RO 3840 .ARM.Collect$$$$0000000E mc_w.l(entry12b.o) - 0x08000100 0x08000100 0x00000000 Code RO 3835 .ARM.Collect$$$$0000000F mc_w.l(entry10a.o) - 0x08000100 0x08000100 0x00000000 Code RO 3837 .ARM.Collect$$$$00000011 mc_w.l(entry11a.o) - 0x08000100 0x08000100 0x00000004 Code RO 3826 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) + 0x080000ec 0x080000ec 0x00000000 Code RO 5346 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) + 0x080000ec 0x080000ec 0x00000004 Code RO 5688 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) + 0x080000f0 0x080000f0 0x00000004 Code RO 5691 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) + 0x080000f4 0x080000f4 0x00000000 Code RO 5693 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) + 0x080000f4 0x080000f4 0x00000000 Code RO 5695 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) + 0x080000f4 0x080000f4 0x00000008 Code RO 5696 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) + 0x080000fc 0x080000fc 0x00000004 Code RO 5703 .ARM.Collect$$$$0000000E mc_w.l(entry12b.o) + 0x08000100 0x08000100 0x00000000 Code RO 5698 .ARM.Collect$$$$0000000F mc_w.l(entry10a.o) + 0x08000100 0x08000100 0x00000000 Code RO 5700 .ARM.Collect$$$$00000011 mc_w.l(entry11a.o) + 0x08000100 0x08000100 0x00000004 Code RO 5689 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) 0x08000104 0x08000104 0x00000024 Code RO 4 .text startup_stm32f103xb.o - 0x08000128 0x08000128 0x00000020 Code RO 3514 .text mc_w.l(llushr.o) - 0x08000148 0x08000148 0x00000008 Code RO 3516 .text mc_w.l(ctype_o.o) - 0x08000150 0x08000150 0x00000012 Code RO 3538 .text mc_w.l(isspace_o.o) - 0x08000162 0x08000162 0x00000024 Code RO 3544 .text mc_w.l(memcpya.o) - 0x08000186 0x08000186 0x00000024 Code RO 3546 .text mc_w.l(memseta.o) - 0x080001aa 0x080001aa 0x0000000e Code RO 3550 .text mc_w.l(strlen.o) - 0x080001b8 0x080001b8 0x0000001c Code RO 3552 .text mc_w.l(strcmp.o) - 0x080001d4 0x080001d4 0x0000001e Code RO 3554 .text mc_w.l(strncmp.o) - 0x080001f2 0x080001f2 0x00000002 PAD - 0x080001f4 0x080001f4 0x00000038 Code RO 3819 .text mc_w.l(__0sscanf.o) - 0x0800022c 0x0800022c 0x0000014c Code RO 3821 .text mc_w.l(_scanf_int.o) - 0x08000378 0x08000378 0x0000001a Code RO 3823 .text mc_w.l(atoi.o) - 0x08000392 0x08000392 0x0000002c Code RO 3842 .text mc_w.l(uidiv.o) - 0x080003be 0x080003be 0x00000062 Code RO 3844 .text mc_w.l(uldiv.o) - 0x08000420 0x08000420 0x0000001c Code RO 3853 .text mc_w.l(_chval.o) - 0x0800043c 0x0800043c 0x00000028 Code RO 3855 .text mc_w.l(scanf_char.o) - 0x08000464 0x08000464 0x00000040 Code RO 3857 .text mc_w.l(_sgetc.o) - 0x080004a4 0x080004a4 0x00000070 Code RO 3859 .text mc_w.l(strtol.o) - 0x08000514 0x08000514 0x00000000 Code RO 3861 .text mc_w.l(iusefp.o) - 0x08000514 0x08000514 0x0000014e Code RO 3862 .text mf_w.l(dadd.o) - 0x08000662 0x08000662 0x000000e4 Code RO 3864 .text mf_w.l(dmul.o) - 0x08000746 0x08000746 0x000000de Code RO 3866 .text mf_w.l(ddiv.o) - 0x08000824 0x08000824 0x00000030 Code RO 3868 .text mf_w.l(dfixul.o) - 0x08000854 0x08000854 0x00000030 Code RO 3870 .text mf_w.l(cdrcmple.o) - 0x08000884 0x08000884 0x00000024 Code RO 3872 .text mc_w.l(init.o) - 0x080008a8 0x080008a8 0x0000001e Code RO 3874 .text mc_w.l(llshl.o) - 0x080008c6 0x080008c6 0x00000024 Code RO 3876 .text mc_w.l(llsshr.o) - 0x080008ea 0x080008ea 0x00000002 PAD - 0x080008ec 0x080008ec 0x00000330 Code RO 3880 .text mc_w.l(_scanf.o) - 0x08000c1c 0x08000c1c 0x0000009e Code RO 3882 .text mc_w.l(_strtoul.o) - 0x08000cba 0x08000cba 0x000000ba Code RO 3884 .text mf_w.l(depilogue.o) - 0x08000d74 0x08000d74 0x00000004 Code RO 567 i.BusFault_Handler stm32f1xx_it.o - 0x08000d78 0x08000d78 0x00000330 Code RO 683 i.CmdParser_FeedByte cmd_parser.o - 0x080010a8 0x080010a8 0x00000030 Code RO 686 i.CmdParser_HasCompleteFrame cmd_parser.o - 0x080010d8 0x080010d8 0x0000002c Code RO 687 i.CmdParser_Init cmd_parser.o - 0x08001104 0x08001104 0x0000000c Code RO 688 i.CmdParser_SetResponseCallback cmd_parser.o - 0x08001110 0x08001110 0x0000000c Code RO 689 i.CmdParser_SetSourcePort cmd_parser.o - 0x0800111c 0x0800111c 0x00000024 Code RO 690 i.CmdParser_Task cmd_parser.o - 0x08001140 0x08001140 0x000000e0 Code RO 1016 i.CmdRouter_Init cmd_router.o - 0x08001220 0x08001220 0x000001ac Code RO 1019 i.CmdRouter_Task cmd_router.o - 0x080013cc 0x080013cc 0x00000040 Code RO 1101 i.DebugLog_Init debug_log.o - 0x0800140c 0x0800140c 0x000000b0 Code RO 1102 i.DebugLog_Output debug_log.o - 0x080014bc 0x080014bc 0x00000002 Code RO 568 i.DebugMon_Handler stm32f1xx_it.o - 0x080014be 0x080014be 0x00000006 Code RO 334 i.Error_Handler main.o - 0x080014c4 0x080014c4 0x00000056 Code RO 2159 i.HAL_DMA_Abort stm32f1xx_hal_dma.o - 0x0800151a 0x0800151a 0x00000002 PAD - 0x0800151c 0x0800151c 0x000000b0 Code RO 2160 i.HAL_DMA_Abort_IT stm32f1xx_hal_dma.o - 0x080015cc 0x080015cc 0x00000028 Code RO 1780 i.HAL_Delay stm32f1xx_hal.o - 0x080015f4 0x080015f4 0x00000320 Code RO 2095 i.HAL_GPIO_Init stm32f1xx_hal_gpio.o - 0x08001914 0x08001914 0x00000010 Code RO 2097 i.HAL_GPIO_ReadPin stm32f1xx_hal_gpio.o - 0x08001924 0x08001924 0x0000000c Code RO 2099 i.HAL_GPIO_WritePin stm32f1xx_hal_gpio.o - 0x08001930 0x08001930 0x0000000c Code RO 1784 i.HAL_GetTick stm32f1xx_hal.o - 0x0800193c 0x0800193c 0x00000018 Code RO 1790 i.HAL_IncTick stm32f1xx_hal.o - 0x08001954 0x08001954 0x00000028 Code RO 1791 i.HAL_Init stm32f1xx_hal.o - 0x0800197c 0x0800197c 0x0000004c Code RO 1792 i.HAL_InitTick stm32f1xx_hal.o - 0x080019c8 0x080019c8 0x00000054 Code RO 661 i.HAL_MspInit stm32f1xx_hal_msp.o - 0x08001a1c 0x08001a1c 0x00000020 Code RO 2255 i.HAL_NVIC_EnableIRQ stm32f1xx_hal_cortex.o - 0x08001a3c 0x08001a3c 0x0000007c Code RO 2261 i.HAL_NVIC_SetPriority stm32f1xx_hal_cortex.o - 0x08001ab8 0x08001ab8 0x00000028 Code RO 2262 i.HAL_NVIC_SetPriorityGrouping stm32f1xx_hal_cortex.o - 0x08001ae0 0x08001ae0 0x0000018c Code RO 1948 i.HAL_RCC_ClockConfig stm32f1xx_hal_rcc.o - 0x08001c6c 0x08001c6c 0x0000000c Code RO 1953 i.HAL_RCC_GetHCLKFreq stm32f1xx_hal_rcc.o - 0x08001c78 0x08001c78 0x00000020 Code RO 1955 i.HAL_RCC_GetPCLK1Freq stm32f1xx_hal_rcc.o - 0x08001c98 0x08001c98 0x00000020 Code RO 1956 i.HAL_RCC_GetPCLK2Freq stm32f1xx_hal_rcc.o - 0x08001cb8 0x08001cb8 0x00000070 Code RO 1957 i.HAL_RCC_GetSysClockFreq stm32f1xx_hal_rcc.o - 0x08001d28 0x08001d28 0x00000464 Code RO 1960 i.HAL_RCC_OscConfig stm32f1xx_hal_rcc.o - 0x0800218c 0x0800218c 0x000000be Code RO 1462 i.HAL_SPI_Init stm32f1xx_hal_spi.o - 0x0800224a 0x0800224a 0x00000002 PAD - 0x0800224c 0x0800224c 0x00000088 Code RO 462 i.HAL_SPI_MspInit spi.o - 0x080022d4 0x080022d4 0x00000034 Code RO 2266 i.HAL_SYSTICK_Config stm32f1xx_hal_cortex.o - 0x08002308 0x08002308 0x00000002 Code RO 2829 i.HAL_UARTEx_RxEventCallback stm32f1xx_hal_uart.o - 0x0800230a 0x0800230a 0x00000002 Code RO 2843 i.HAL_UART_ErrorCallback stm32f1xx_hal_uart.o - 0x0800230c 0x0800230c 0x000002e4 Code RO 2846 i.HAL_UART_IRQHandler stm32f1xx_hal_uart.o - 0x080025f0 0x080025f0 0x00000076 Code RO 2847 i.HAL_UART_Init stm32f1xx_hal_uart.o - 0x08002666 0x08002666 0x00000002 PAD - 0x08002668 0x08002668 0x00000190 Code RO 504 i.HAL_UART_MspInit usart.o - 0x080027f8 0x080027f8 0x0000002c Code RO 2852 i.HAL_UART_Receive_IT stm32f1xx_hal_uart.o - 0x08002824 0x08002824 0x00000080 Code RO 335 i.HAL_UART_RxCpltCallback main.o - 0x080028a4 0x080028a4 0x000000b2 Code RO 2855 i.HAL_UART_Transmit stm32f1xx_hal_uart.o - 0x08002956 0x08002956 0x00000038 Code RO 2857 i.HAL_UART_Transmit_IT stm32f1xx_hal_uart.o - 0x0800298e 0x0800298e 0x00000002 PAD - 0x08002990 0x08002990 0x00000040 Code RO 336 i.HAL_UART_TxCpltCallback main.o - 0x080029d0 0x080029d0 0x00000004 Code RO 569 i.HardFault_Handler stm32f1xx_it.o - 0x080029d4 0x080029d4 0x00000028 Code RO 817 i.IO_Monitor_GetAllStates io_monitor.o - 0x080029fc 0x080029fc 0x00000018 Code RO 819 i.IO_Monitor_GetState io_monitor.o - 0x08002a14 0x08002a14 0x00000080 Code RO 820 i.IO_Monitor_Init io_monitor.o - 0x08002a94 0x08002a94 0x00000088 Code RO 822 i.IO_Monitor_Task io_monitor.o - 0x08002b1c 0x08002b1c 0x00000110 Code RO 413 i.MX_GPIO_Init gpio.o - 0x08002c2c 0x08002c2c 0x00000044 Code RO 463 i.MX_SPI2_Init spi.o - 0x08002c70 0x08002c70 0x00000038 Code RO 505 i.MX_USART1_UART_Init usart.o - 0x08002ca8 0x08002ca8 0x00000038 Code RO 506 i.MX_USART2_UART_Init usart.o - 0x08002ce0 0x08002ce0 0x00000038 Code RO 507 i.MX_USART3_UART_Init usart.o - 0x08002d18 0x08002d18 0x00000004 Code RO 570 i.MemManage_Handler stm32f1xx_it.o - 0x08002d1c 0x08002d1c 0x0000006c Code RO 1157 i.MultiUART_FeedByte multi_uart_router.o - 0x08002d88 0x08002d88 0x00000020 Code RO 1159 i.MultiUART_GetPortName multi_uart_router.o - 0x08002da8 0x08002da8 0x00000024 Code RO 1160 i.MultiUART_GetRxCount multi_uart_router.o - 0x08002dcc 0x08002dcc 0x0000002c Code RO 1161 i.MultiUART_GetTxAvailable multi_uart_router.o - 0x08002df8 0x08002df8 0x0000008c Code RO 1162 i.MultiUART_Init multi_uart_router.o - 0x08002e84 0x08002e84 0x0000005c Code RO 1163 i.MultiUART_ReadByte multi_uart_router.o - 0x08002ee0 0x08002ee0 0x00000064 Code RO 1164 i.MultiUART_Send multi_uart_router.o - 0x08002f44 0x08002f44 0x00000020 Code RO 1166 i.MultiUART_SendString multi_uart_router.o - 0x08002f64 0x08002f64 0x00000034 Code RO 1167 i.MultiUART_Task multi_uart_router.o - 0x08002f98 0x08002f98 0x00000078 Code RO 1168 i.MultiUART_TxCpltCallback multi_uart_router.o - 0x08003010 0x08003010 0x00000004 Code RO 571 i.NMI_Handler stm32f1xx_it.o - 0x08003014 0x08003014 0x00000024 Code RO 1281 i.Passthrough_CanSend uart3_passthrough.o - 0x08003038 0x08003038 0x000000c8 Code RO 1284 i.Passthrough_Init uart3_passthrough.o - 0x08003100 0x08003100 0x00000150 Code RO 1286 i.Passthrough_PushBuffer uart3_passthrough.o - 0x08003250 0x08003250 0x000000e4 Code RO 1287 i.Passthrough_PushByte uart3_passthrough.o - 0x08003334 0x08003334 0x000000dc Code RO 1289 i.Passthrough_Task uart3_passthrough.o - 0x08003410 0x08003410 0x00000002 Code RO 572 i.PendSV_Handler stm32f1xx_it.o - 0x08003412 0x08003412 0x00000002 PAD - 0x08003414 0x08003414 0x00000028 Code RO 1961 i.RCC_Delay stm32f1xx_hal_rcc.o - 0x0800343c 0x0800343c 0x0000004c Code RO 889 i.Relay_Init relay_control.o - 0x08003488 0x08003488 0x000000d0 Code RO 890 i.Relay_SetState relay_control.o - 0x08003558 0x08003558 0x00000002 Code RO 573 i.SVC_Handler stm32f1xx_it.o - 0x0800355a 0x0800355a 0x0000000c Code RO 574 i.SysTick_Handler stm32f1xx_it.o - 0x08003566 0x08003566 0x00000066 Code RO 337 i.SystemClock_Config main.o - 0x080035cc 0x080035cc 0x00000002 Code RO 3191 i.SystemInit system_stm32f1xx.o - 0x080035ce 0x080035ce 0x00000002 PAD - 0x080035d0 0x080035d0 0x00000050 Code RO 928 i.UART2_Print_Init uart2_print.o - 0x08003620 0x08003620 0x0000003e Code RO 930 i.UART2_Print_Printf uart2_print.o - 0x0800365e 0x0800365e 0x00000002 PAD - 0x08003660 0x08003660 0x000000b4 Code RO 931 i.UART2_Print_Send uart2_print.o - 0x08003714 0x08003714 0x0000001c Code RO 932 i.UART2_Print_String uart2_print.o - 0x08003730 0x08003730 0x0000006c Code RO 933 i.UART2_Print_Task uart2_print.o - 0x0800379c 0x0800379c 0x0000006c Code RO 934 i.UART2_Print_TxCpltCallback uart2_print.o - 0x08003808 0x08003808 0x000000b4 Code RO 1356 i.UART3_Protocol_CheckTimeout uart3_protocol_discriminator.o - 0x080038bc 0x080038bc 0x00000328 Code RO 1357 i.UART3_Protocol_FeedByte uart3_protocol_discriminator.o - 0x08003be4 0x08003be4 0x00000084 Code RO 1358 i.UART3_Protocol_GetPassthroughData uart3_protocol_discriminator.o - 0x08003c68 0x08003c68 0x0000004c Code RO 1360 i.UART3_Protocol_Init uart3_protocol_discriminator.o - 0x08003cb4 0x08003cb4 0x00000014 Code RO 2860 i.UART_DMAAbortOnError stm32f1xx_hal_uart.o - 0x08003cc8 0x08003cc8 0x0000006c Code RO 2870 i.UART_EndRxTransfer stm32f1xx_hal_uart.o - 0x08003d34 0x08003d34 0x00000020 Code RO 2871 i.UART_EndTransmit_IT stm32f1xx_hal_uart.o - 0x08003d54 0x08003d54 0x000000fc Code RO 2873 i.UART_Receive_IT stm32f1xx_hal_uart.o - 0x08003e50 0x08003e50 0x000000fc Code RO 2874 i.UART_SetConfig stm32f1xx_hal_uart.o - 0x08003f4c 0x08003f4c 0x00000040 Code RO 2876 i.UART_Start_Receive_IT stm32f1xx_hal_uart.o - 0x08003f8c 0x08003f8c 0x00000060 Code RO 2877 i.UART_Transmit_IT stm32f1xx_hal_uart.o - 0x08003fec 0x08003fec 0x00000092 Code RO 2878 i.UART_WaitOnFlagUntilTimeout stm32f1xx_hal_uart.o - 0x0800407e 0x0800407e 0x00000002 PAD - 0x08004080 0x08004080 0x00000010 Code RO 575 i.USART1_IRQHandler stm32f1xx_it.o - 0x08004090 0x08004090 0x00000010 Code RO 576 i.USART2_IRQHandler stm32f1xx_it.o - 0x080040a0 0x080040a0 0x00000010 Code RO 577 i.USART3_IRQHandler stm32f1xx_it.o - 0x080040b0 0x080040b0 0x00000004 Code RO 578 i.UsageFault_Handler stm32f1xx_it.o - 0x080040b4 0x080040b4 0x00000020 Code RO 3791 i.__0printf mc_w.l(printfa.o) - 0x080040d4 0x080040d4 0x00000034 Code RO 3792 i.__0snprintf mc_w.l(printfa.o) - 0x08004108 0x08004108 0x00000034 Code RO 3796 i.__0vsnprintf mc_w.l(printfa.o) - 0x0800413c 0x0800413c 0x00000010 Code RO 2268 i.__NVIC_GetPriorityGrouping stm32f1xx_hal_cortex.o - 0x0800414c 0x0800414c 0x00000028 Code RO 2269 i.__NVIC_SetPriority stm32f1xx_hal_cortex.o - 0x08004174 0x08004174 0x00000008 Code RO 3846 i.__aeabi_errno_addr mc_w.l(errno.o) - 0x0800417c 0x0800417c 0x0000000e Code RO 3891 i.__scatterload_copy mc_w.l(handlers.o) - 0x0800418a 0x0800418a 0x00000002 Code RO 3892 i.__scatterload_null mc_w.l(handlers.o) - 0x0800418c 0x0800418c 0x0000000e Code RO 3893 i.__scatterload_zeroinit mc_w.l(handlers.o) - 0x0800419a 0x0800419a 0x00000002 PAD - 0x0800419c 0x0800419c 0x00000184 Code RO 3798 i._fp_digits mc_w.l(printfa.o) - 0x08004320 0x08004320 0x000006b4 Code RO 3799 i._printf_core mc_w.l(printfa.o) - 0x080049d4 0x080049d4 0x00000024 Code RO 3800 i._printf_post_padding mc_w.l(printfa.o) - 0x080049f8 0x080049f8 0x0000002e Code RO 3801 i._printf_pre_padding mc_w.l(printfa.o) - 0x08004a26 0x08004a26 0x00000016 Code RO 3802 i._snputc mc_w.l(printfa.o) - 0x08004a3c 0x08004a3c 0x00000044 Code RO 1020 i.append_rx_log cmd_router.o - 0x08004a80 0x08004a80 0x0000001a Code RO 691 i.calc_checksum cmd_parser.o - 0x08004a9a 0x08004a9a 0x0000001a Code RO 823 i.calc_checksum io_monitor.o - 0x08004ab4 0x08004ab4 0x00000074 Code RO 1021 i.cmd_parser_response_callback cmd_router.o - 0x08004b28 0x08004b28 0x000000d4 Code RO 1022 i.flush_rx_log cmd_router.o - 0x08004bfc 0x08004bfc 0x00000010 Code RO 935 i.fputc uart2_print.o - 0x08004c0c 0x08004c0c 0x00000014 Code RO 414 i.gpio_led_rx_off gpio.o - 0x08004c20 0x08004c20 0x00000014 Code RO 415 i.gpio_led_rx_on gpio.o - 0x08004c34 0x08004c34 0x00000014 Code RO 416 i.gpio_led_tx_off gpio.o - 0x08004c48 0x08004c48 0x00000014 Code RO 417 i.gpio_led_tx_on gpio.o - 0x08004c5c 0x08004c5c 0x00000036 Code RO 692 i.hex_char_to_val cmd_parser.o - 0x08004c92 0x08004c92 0x0000001c Code RO 693 i.hex_to_byte cmd_parser.o - 0x08004cae 0x08004cae 0x00000002 PAD - 0x08004cb0 0x08004cb0 0x00000038 Code RO 1104 i.init_modules debug_log.o - 0x08004ce8 0x08004ce8 0x0000004c Code RO 1105 i.is_module_enabled debug_log.o - 0x08004d34 0x08004d34 0x00000010 Code RO 694 i.is_str_empty cmd_parser.o - 0x08004d44 0x08004d44 0x00000030 Code RO 695 i.is_str_numeric cmd_parser.o - 0x08004d74 0x08004d74 0x00000026 Code RO 696 i.is_valid_cmd_char cmd_parser.o - 0x08004d9a 0x08004d9a 0x00000026 Code RO 697 i.is_valid_param_char cmd_parser.o - 0x08004dc0 0x08004dc0 0x00000174 Code RO 338 i.main main.o - 0x08004f34 0x08004f34 0x00000324 Code RO 698 i.process_cmd_frame cmd_parser.o - 0x08005258 0x08005258 0x00000024 Code RO 699 i.reset_parser cmd_parser.o - 0x0800527c 0x0800527c 0x0000001c Code RO 3367 i.rf433_fifo_clear rf433_hal.o - 0x08005298 0x08005298 0x00000018 Code RO 3368 i.rf433_fifo_get_length rf433_hal.o - 0x080052b0 0x080052b0 0x00000070 Code RO 3369 i.rf433_fifo_read rf433_hal.o - 0x08005320 0x08005320 0x00000060 Code RO 3370 i.rf433_fifo_write rf433_hal.o - 0x08005380 0x08005380 0x00000028 Code RO 3371 i.rf433_hal_1ms_callback rf433_hal.o - 0x080053a8 0x080053a8 0x00000040 Code RO 3372 i.rf433_hal_aux_wait rf433_hal.o - 0x080053e8 0x080053e8 0x0000001c Code RO 3374 i.rf433_hal_deinit rf433_hal.o - 0x08005404 0x08005404 0x00000008 Code RO 3375 i.rf433_hal_fifo_clear rf433_hal.o - 0x0800540c 0x0800540c 0x0000000c Code RO 3376 i.rf433_hal_fifo_get_length rf433_hal.o - 0x08005418 0x08005418 0x00000014 Code RO 3377 i.rf433_hal_fifo_read rf433_hal.o - 0x0800542c 0x0800542c 0x00000034 Code RO 3379 i.rf433_hal_init rf433_hal.o - 0x08005460 0x08005460 0x000000a0 Code RO 3381 i.rf433_hal_set_work_mode rf433_hal.o - 0x08005500 0x08005500 0x00000034 Code RO 3383 i.rf433_hal_uart_rxcplt_callback rf433_hal.o - 0x08005534 0x08005534 0x00000030 Code RO 3384 i.rf433_hal_uart_tx rf433_hal.o - 0x08005564 0x08005564 0x00000060 Code RO 3229 i.rf433_init rf433.o - 0x080055c4 0x080055c4 0x00000050 Code RO 145 i.rf433_rx_app_init rf433_rx_app.o - 0x08005614 0x08005614 0x00000050 Code RO 146 i.rf433_rx_app_parse_packet rf433_rx_app.o - 0x08005664 0x08005664 0x00000020 Code RO 148 i.rf433_rx_app_start rf433_rx_app.o - 0x08005684 0x08005684 0x000000a0 Code RO 150 i.rf433_rx_app_task rf433_rx_app.o - 0x08005724 0x08005724 0x0000003c Code RO 3236 i.rf433_rx_start rf433.o - 0x08005760 0x08005760 0x00000024 Code RO 3240 i.rf433_send_config_command rf433.o - 0x08005784 0x08005784 0x00000058 Code RO 3242 i.rf433_set_config rf433.o - 0x080057dc 0x080057dc 0x00000018 Code RO 3243 i.rf433_set_work_mode rf433.o - 0x080057f4 0x080057f4 0x00000038 Code RO 3244 i.rf433_transmit rf433.o - 0x0800582c 0x0800582c 0x0000004c Code RO 240 i.rf433_tx_app_init rf433_tx_app.o - 0x08005878 0x08005878 0x0000002c Code RO 243 i.rf433_tx_app_start rf433_tx_app.o - 0x080058a4 0x080058a4 0x000000d4 Code RO 245 i.rf433_tx_app_task rf433_tx_app.o - 0x08005978 0x08005978 0x00000012 Code RO 151 i.rx_led_control rf433_rx_app.o - 0x0800598a 0x0800598a 0x00000010 Code RO 1169 i.rx_ring_init multi_uart_router.o - 0x0800599a 0x0800599a 0x00000046 Code RO 1171 i.rx_ring_push multi_uart_router.o - 0x080059e0 0x080059e0 0x0000003c Code RO 152 i.rx_update_stats rf433_rx_app.o - 0x08005a1c 0x08005a1c 0x000000c8 Code RO 824 i.send_di_event io_monitor.o - 0x08005ae4 0x08005ae4 0x0000006c Code RO 700 i.send_response_err cmd_parser.o - 0x08005b50 0x08005b50 0x00000068 Code RO 701 i.send_response_ok cmd_parser.o - 0x08005bb8 0x08005bb8 0x0000001c Code RO 14 i.systick_interrupt_1ms_callback systick.o - 0x08005bd4 0x08005bd4 0x00000048 Code RO 246 i.tx_build_packet rf433_tx_app.o - 0x08005c1c 0x08005c1c 0x00000068 Code RO 1172 i.tx_kickoff multi_uart_router.o - 0x08005c84 0x08005c84 0x00000012 Code RO 247 i.tx_led_control rf433_tx_app.o - 0x08005c96 0x08005c96 0x00000016 Code RO 1173 i.tx_ring_init multi_uart_router.o - 0x08005cac 0x08005cac 0x0000005e Code RO 1174 i.tx_ring_push multi_uart_router.o - 0x08005d0a 0x08005d0a 0x00000002 PAD - 0x08005d0c 0x08005d0c 0x00000050 Code RO 3385 i.uart1_check_rx_done rf433_hal.o - 0x08005d5c 0x08005d5c 0x00000008 Code RO 3386 i.uart1_rx_timeout_1ms_callback rf433_hal.o - 0x08005d64 0x08005d64 0x00000010 Data RO 1107 .constdata debug_log.o - 0x08005d74 0x08005d74 0x00000018 Data RO 1176 .constdata multi_uart_router.o - 0x08005d8c 0x08005d8c 0x00000012 Data RO 1962 .constdata stm32f1xx_hal_rcc.o - 0x08005d9e 0x08005d9e 0x00000018 Data RO 3192 .constdata system_stm32f1xx.o - 0x08005db6 0x08005db6 0x00000021 Data RO 3247 .constdata rf433.o - 0x08005dd7 0x08005dd7 0x00000081 Data RO 3517 .constdata mc_w.l(ctype_o.o) - 0x08005e58 0x08005e58 0x00000004 Data RO 3518 .constdata mc_w.l(ctype_o.o) - 0x08005e5c 0x08005e5c 0x0000001e Data RO 1108 .conststring debug_log.o - 0x08005e7a 0x08005e7a 0x00000002 PAD - 0x08005e7c 0x08005e7c 0x00000016 Data RO 1177 .conststring multi_uart_router.o - 0x08005e92 0x08005e92 0x00000002 PAD - 0x08005e94 0x08005e94 0x00000020 Data RO 3889 Region$$Table anon$$obj.o + 0x08000128 0x08000128 0x00000020 Code RO 5349 .text mc_w.l(llushr.o) + 0x08000148 0x08000148 0x00000008 Code RO 5351 .text mc_w.l(ctype_o.o) + 0x08000150 0x08000150 0x00000012 Code RO 5373 .text mc_w.l(isspace_o.o) + 0x08000162 0x08000162 0x00000024 Code RO 5379 .text mc_w.l(memcpya.o) + 0x08000186 0x08000186 0x00000024 Code RO 5381 .text mc_w.l(memseta.o) + 0x080001aa 0x080001aa 0x0000000e Code RO 5385 .text mc_w.l(strlen.o) + 0x080001b8 0x080001b8 0x0000001e Code RO 5389 .text mc_w.l(strncmp.o) + 0x080001d6 0x080001d6 0x00000002 PAD + 0x080001d8 0x080001d8 0x00000038 Code RO 5682 .text mc_w.l(__0sscanf.o) + 0x08000210 0x08000210 0x0000014c Code RO 5684 .text mc_w.l(_scanf_int.o) + 0x0800035c 0x0800035c 0x0000002c Code RO 5705 .text mc_w.l(uidiv.o) + 0x08000388 0x08000388 0x00000062 Code RO 5707 .text mc_w.l(uldiv.o) + 0x080003ea 0x080003ea 0x0000001c Code RO 5718 .text mc_w.l(_chval.o) + 0x08000406 0x08000406 0x00000002 PAD + 0x08000408 0x08000408 0x00000028 Code RO 5720 .text mc_w.l(scanf_char.o) + 0x08000430 0x08000430 0x00000040 Code RO 5722 .text mc_w.l(_sgetc.o) + 0x08000470 0x08000470 0x00000000 Code RO 5726 .text mc_w.l(iusefp.o) + 0x08000470 0x08000470 0x0000014e Code RO 5727 .text mf_w.l(dadd.o) + 0x080005be 0x080005be 0x000000e4 Code RO 5729 .text mf_w.l(dmul.o) + 0x080006a2 0x080006a2 0x000000de Code RO 5731 .text mf_w.l(ddiv.o) + 0x08000780 0x08000780 0x00000030 Code RO 5733 .text mf_w.l(dfixul.o) + 0x080007b0 0x080007b0 0x00000030 Code RO 5735 .text mf_w.l(cdrcmple.o) + 0x080007e0 0x080007e0 0x00000024 Code RO 5737 .text mc_w.l(init.o) + 0x08000804 0x08000804 0x0000001e Code RO 5739 .text mc_w.l(llshl.o) + 0x08000822 0x08000822 0x00000024 Code RO 5741 .text mc_w.l(llsshr.o) + 0x08000846 0x08000846 0x00000002 PAD + 0x08000848 0x08000848 0x00000330 Code RO 5745 .text mc_w.l(_scanf.o) + 0x08000b78 0x08000b78 0x000000ba Code RO 5749 .text mf_w.l(depilogue.o) + 0x08000c32 0x08000c32 0x00000056 Code RO 5762 .text mc_w.l(__dczerorl2.o) + 0x08000c88 0x08000c88 0x00000004 Code RO 605 i.BusFault_Handler stm32f1xx_it.o + 0x08000c8c 0x08000c8c 0x00000018 Code RO 731 i.CmdParser_Init cmd_parser.o + 0x08000ca4 0x08000ca4 0x0000000c Code RO 732 i.CmdParser_SetResponseCallback cmd_parser.o + 0x08000cb0 0x08000cb0 0x00000078 Code RO 1063 i.CmdRouter_Init cmd_router.o + 0x08000d28 0x08000d28 0x000000e0 Code RO 5205 i.DHCP_init dhcp.o + 0x08000e08 0x08000e08 0x000001d8 Code RO 5206 i.DHCP_run dhcp.o + 0x08000fe0 0x08000fe0 0x0000001c Code RO 5207 i.DHCP_stop dhcp.o + 0x08000ffc 0x08000ffc 0x00000010 Code RO 5208 i.DHCP_time_handler dhcp.o + 0x0800100c 0x0800100c 0x00000040 Code RO 1151 i.DebugLog_Init debug_log.o + 0x0800104c 0x0800104c 0x000000bc Code RO 1152 i.DebugLog_Output debug_log.o + 0x08001108 0x08001108 0x0000000c Code RO 1153 i.DebugLog_SetLevel debug_log.o + 0x08001114 0x08001114 0x00000002 Code RO 606 i.DebugMon_Handler stm32f1xx_it.o + 0x08001116 0x08001116 0x00000006 Code RO 341 i.Error_Handler main.o + 0x0800111c 0x0800111c 0x00000056 Code RO 2263 i.HAL_DMA_Abort stm32f1xx_hal_dma.o + 0x08001172 0x08001172 0x00000002 PAD + 0x08001174 0x08001174 0x000000b0 Code RO 2264 i.HAL_DMA_Abort_IT stm32f1xx_hal_dma.o + 0x08001224 0x08001224 0x00000028 Code RO 1884 i.HAL_Delay stm32f1xx_hal.o + 0x0800124c 0x0800124c 0x00000320 Code RO 2199 i.HAL_GPIO_Init stm32f1xx_hal_gpio.o + 0x0800156c 0x0800156c 0x00000010 Code RO 2201 i.HAL_GPIO_ReadPin stm32f1xx_hal_gpio.o + 0x0800157c 0x0800157c 0x0000000c Code RO 2203 i.HAL_GPIO_WritePin stm32f1xx_hal_gpio.o + 0x08001588 0x08001588 0x0000000c Code RO 1888 i.HAL_GetTick stm32f1xx_hal.o + 0x08001594 0x08001594 0x00000018 Code RO 1894 i.HAL_IncTick stm32f1xx_hal.o + 0x080015ac 0x080015ac 0x00000028 Code RO 1895 i.HAL_Init stm32f1xx_hal.o + 0x080015d4 0x080015d4 0x0000004c Code RO 1896 i.HAL_InitTick stm32f1xx_hal.o + 0x08001620 0x08001620 0x00000054 Code RO 705 i.HAL_MspInit stm32f1xx_hal_msp.o + 0x08001674 0x08001674 0x00000020 Code RO 2359 i.HAL_NVIC_EnableIRQ stm32f1xx_hal_cortex.o + 0x08001694 0x08001694 0x0000007c Code RO 2365 i.HAL_NVIC_SetPriority stm32f1xx_hal_cortex.o + 0x08001710 0x08001710 0x00000028 Code RO 2366 i.HAL_NVIC_SetPriorityGrouping stm32f1xx_hal_cortex.o + 0x08001738 0x08001738 0x0000018c Code RO 2052 i.HAL_RCC_ClockConfig stm32f1xx_hal_rcc.o + 0x080018c4 0x080018c4 0x0000000c Code RO 2057 i.HAL_RCC_GetHCLKFreq stm32f1xx_hal_rcc.o + 0x080018d0 0x080018d0 0x00000020 Code RO 2059 i.HAL_RCC_GetPCLK1Freq stm32f1xx_hal_rcc.o + 0x080018f0 0x080018f0 0x00000020 Code RO 2060 i.HAL_RCC_GetPCLK2Freq stm32f1xx_hal_rcc.o + 0x08001910 0x08001910 0x00000070 Code RO 2061 i.HAL_RCC_GetSysClockFreq stm32f1xx_hal_rcc.o + 0x08001980 0x08001980 0x00000464 Code RO 2064 i.HAL_RCC_OscConfig stm32f1xx_hal_rcc.o + 0x08001de4 0x08001de4 0x000000be Code RO 1566 i.HAL_SPI_Init stm32f1xx_hal_spi.o + 0x08001ea2 0x08001ea2 0x00000002 PAD + 0x08001ea4 0x08001ea4 0x00000088 Code RO 500 i.HAL_SPI_MspInit spi.o + 0x08001f2c 0x08001f2c 0x0000017e Code RO 1569 i.HAL_SPI_Receive stm32f1xx_hal_spi.o + 0x080020aa 0x080020aa 0x000001bc Code RO 1574 i.HAL_SPI_Transmit stm32f1xx_hal_spi.o + 0x08002266 0x08002266 0x00000240 Code RO 1575 i.HAL_SPI_TransmitReceive stm32f1xx_hal_spi.o + 0x080024a6 0x080024a6 0x00000034 Code RO 2370 i.HAL_SYSTICK_Config stm32f1xx_hal_cortex.o + 0x080024da 0x080024da 0x00000002 Code RO 3602 i.HAL_TIMEx_BreakCallback stm32f1xx_hal_tim_ex.o + 0x080024dc 0x080024dc 0x00000002 Code RO 3603 i.HAL_TIMEx_CommutCallback stm32f1xx_hal_tim_ex.o + 0x080024de 0x080024de 0x00000002 PAD + 0x080024e0 0x080024e0 0x00000084 Code RO 3621 i.HAL_TIMEx_MasterConfigSynchronization stm32f1xx_hal_tim_ex.o + 0x08002564 0x08002564 0x00000066 Code RO 2887 i.HAL_TIM_Base_Init stm32f1xx_hal_tim.o + 0x080025ca 0x080025ca 0x00000002 PAD + 0x080025cc 0x080025cc 0x00000040 Code RO 1478 i.HAL_TIM_Base_MspInit tim.o + 0x0800260c 0x0800260c 0x00000078 Code RO 2892 i.HAL_TIM_Base_Start_IT stm32f1xx_hal_tim.o + 0x08002684 0x08002684 0x0000010c Code RO 2896 i.HAL_TIM_ConfigClockSource stm32f1xx_hal_tim.o + 0x08002790 0x08002790 0x00000002 Code RO 2921 i.HAL_TIM_IC_CaptureCallback stm32f1xx_hal_tim.o + 0x08002792 0x08002792 0x00000196 Code RO 2935 i.HAL_TIM_IRQHandler stm32f1xx_hal_tim.o + 0x08002928 0x08002928 0x00000002 Code RO 2938 i.HAL_TIM_OC_DelayElapsedCallback stm32f1xx_hal_tim.o + 0x0800292a 0x0800292a 0x00000002 Code RO 2965 i.HAL_TIM_PWM_PulseFinishedCallback stm32f1xx_hal_tim.o + 0x0800292c 0x0800292c 0x00000012 Code RO 4564 i.HAL_TIM_PeriodElapsedCallback wiz_platform.o + 0x0800293e 0x0800293e 0x00000002 Code RO 2978 i.HAL_TIM_TriggerCallback stm32f1xx_hal_tim.o + 0x08002940 0x08002940 0x00000002 Code RO 3881 i.HAL_UARTEx_RxEventCallback stm32f1xx_hal_uart.o + 0x08002942 0x08002942 0x00000002 PAD + 0x08002944 0x08002944 0x000000a8 Code RO 342 i.HAL_UART_ErrorCallback main.o + 0x080029ec 0x080029ec 0x000002e4 Code RO 3898 i.HAL_UART_IRQHandler stm32f1xx_hal_uart.o + 0x08002cd0 0x08002cd0 0x00000076 Code RO 3899 i.HAL_UART_Init stm32f1xx_hal_uart.o + 0x08002d46 0x08002d46 0x00000002 PAD + 0x08002d48 0x08002d48 0x00000190 Code RO 542 i.HAL_UART_MspInit usart.o + 0x08002ed8 0x08002ed8 0x0000002c Code RO 3904 i.HAL_UART_Receive_IT stm32f1xx_hal_uart.o + 0x08002f04 0x08002f04 0x000000c4 Code RO 343 i.HAL_UART_RxCpltCallback main.o + 0x08002fc8 0x08002fc8 0x000000b2 Code RO 3907 i.HAL_UART_Transmit stm32f1xx_hal_uart.o + 0x0800307a 0x0800307a 0x00000038 Code RO 3909 i.HAL_UART_Transmit_IT stm32f1xx_hal_uart.o + 0x080030b2 0x080030b2 0x00000002 PAD + 0x080030b4 0x080030b4 0x00000040 Code RO 344 i.HAL_UART_TxCpltCallback main.o + 0x080030f4 0x080030f4 0x00000004 Code RO 607 i.HardFault_Handler stm32f1xx_it.o + 0x080030f8 0x080030f8 0x00000028 Code RO 861 i.IO_Monitor_GetAllStates io_monitor.o + 0x08003120 0x08003120 0x00000080 Code RO 864 i.IO_Monitor_Init io_monitor.o + 0x080031a0 0x080031a0 0x00000088 Code RO 866 i.IO_Monitor_Task io_monitor.o + 0x08003228 0x08003228 0x00000110 Code RO 451 i.MX_GPIO_Init gpio.o + 0x08003338 0x08003338 0x00000044 Code RO 501 i.MX_SPI2_Init spi.o + 0x0800337c 0x0800337c 0x0000006c Code RO 1479 i.MX_TIM2_Init tim.o + 0x080033e8 0x080033e8 0x00000038 Code RO 543 i.MX_USART1_UART_Init usart.o + 0x08003420 0x08003420 0x00000038 Code RO 544 i.MX_USART2_UART_Init usart.o + 0x08003458 0x08003458 0x00000038 Code RO 545 i.MX_USART3_UART_Init usart.o + 0x08003490 0x08003490 0x00000004 Code RO 608 i.MemManage_Handler stm32f1xx_it.o + 0x08003494 0x08003494 0x00000020 Code RO 1221 i.MultiUART_GetPortName multi_uart_router.o + 0x080034b4 0x080034b4 0x0000005c Code RO 1224 i.MultiUART_Init multi_uart_router.o + 0x08003510 0x08003510 0x00000064 Code RO 1226 i.MultiUART_Send multi_uart_router.o + 0x08003574 0x08003574 0x00000020 Code RO 1228 i.MultiUART_SendString multi_uart_router.o + 0x08003594 0x08003594 0x00000034 Code RO 1229 i.MultiUART_Task multi_uart_router.o + 0x080035c8 0x080035c8 0x00000078 Code RO 1230 i.MultiUART_TxCpltCallback multi_uart_router.o + 0x08003640 0x08003640 0x00000004 Code RO 609 i.NMI_Handler stm32f1xx_it.o + 0x08003644 0x08003644 0x0000001a Code RO 5209 i.NibbleToHex dhcp.o + 0x0800365e 0x0800365e 0x00000002 Code RO 610 i.PendSV_Handler stm32f1xx_it.o + 0x08003660 0x08003660 0x00000028 Code RO 2065 i.RCC_Delay stm32f1xx_hal_rcc.o + 0x08003688 0x08003688 0x0000004c Code RO 936 i.Relay_Init relay_control.o + 0x080036d4 0x080036d4 0x00000078 Code RO 1603 i.SPI_EndRxTransaction stm32f1xx_hal_spi.o + 0x0800374c 0x0800374c 0x00000028 Code RO 1604 i.SPI_EndRxTxTransaction stm32f1xx_hal_spi.o + 0x08003774 0x08003774 0x000000d8 Code RO 1609 i.SPI_WaitFlagStateUntilTimeout stm32f1xx_hal_spi.o + 0x0800384c 0x0800384c 0x00000002 Code RO 611 i.SVC_Handler stm32f1xx_it.o + 0x0800384e 0x0800384e 0x0000000c Code RO 612 i.SysTick_Handler stm32f1xx_it.o + 0x0800385a 0x0800385a 0x00000066 Code RO 345 i.SystemClock_Config main.o + 0x080038c0 0x080038c0 0x00000002 Code RO 4243 i.SystemInit system_stm32f1xx.o + 0x080038c2 0x080038c2 0x00000002 PAD + 0x080038c4 0x080038c4 0x00000010 Code RO 613 i.TIM2_IRQHandler stm32f1xx_it.o + 0x080038d4 0x080038d4 0x00000074 Code RO 2980 i.TIM_Base_SetConfig stm32f1xx_hal_tim.o + 0x08003948 0x08003948 0x00000016 Code RO 2991 i.TIM_ETR_SetConfig stm32f1xx_hal_tim.o + 0x0800395e 0x0800395e 0x00000012 Code RO 2992 i.TIM_ITRx_SetConfig stm32f1xx_hal_tim.o + 0x08003970 0x08003970 0x00000026 Code RO 2998 i.TIM_TI1_ConfigInputStage stm32f1xx_hal_tim.o + 0x08003996 0x08003996 0x00000028 Code RO 3000 i.TIM_TI2_ConfigInputStage stm32f1xx_hal_tim.o + 0x080039be 0x080039be 0x00000002 PAD + 0x080039c0 0x080039c0 0x00000050 Code RO 975 i.UART2_Print_Init uart2_print.o + 0x08003a10 0x08003a10 0x0000003e Code RO 977 i.UART2_Print_Printf uart2_print.o + 0x08003a4e 0x08003a4e 0x00000002 PAD + 0x08003a50 0x08003a50 0x000000b4 Code RO 978 i.UART2_Print_Send uart2_print.o + 0x08003b04 0x08003b04 0x0000001c Code RO 979 i.UART2_Print_String uart2_print.o + 0x08003b20 0x08003b20 0x0000006c Code RO 980 i.UART2_Print_Task uart2_print.o + 0x08003b8c 0x08003b8c 0x0000006c Code RO 981 i.UART2_Print_TxCpltCallback uart2_print.o + 0x08003bf8 0x08003bf8 0x00000014 Code RO 3912 i.UART_DMAAbortOnError stm32f1xx_hal_uart.o + 0x08003c0c 0x08003c0c 0x0000006c Code RO 3922 i.UART_EndRxTransfer stm32f1xx_hal_uart.o + 0x08003c78 0x08003c78 0x00000020 Code RO 3923 i.UART_EndTransmit_IT stm32f1xx_hal_uart.o + 0x08003c98 0x08003c98 0x000000fc Code RO 3925 i.UART_Receive_IT stm32f1xx_hal_uart.o + 0x08003d94 0x08003d94 0x000000fc Code RO 3926 i.UART_SetConfig stm32f1xx_hal_uart.o + 0x08003e90 0x08003e90 0x00000040 Code RO 3928 i.UART_Start_Receive_IT stm32f1xx_hal_uart.o + 0x08003ed0 0x08003ed0 0x00000060 Code RO 3929 i.UART_Transmit_IT stm32f1xx_hal_uart.o + 0x08003f30 0x08003f30 0x00000092 Code RO 3930 i.UART_WaitOnFlagUntilTimeout stm32f1xx_hal_uart.o + 0x08003fc2 0x08003fc2 0x00000002 PAD + 0x08003fc4 0x08003fc4 0x00000010 Code RO 614 i.USART1_IRQHandler stm32f1xx_it.o + 0x08003fd4 0x08003fd4 0x00000010 Code RO 615 i.USART2_IRQHandler stm32f1xx_it.o + 0x08003fe4 0x08003fe4 0x00000010 Code RO 616 i.USART3_IRQHandler stm32f1xx_it.o + 0x08003ff4 0x08003ff4 0x00000004 Code RO 617 i.UsageFault_Handler stm32f1xx_it.o + 0x08003ff8 0x08003ff8 0x00000074 Code RO 4832 i.WIZCHIP_READ w5500.o + 0x0800406c 0x0800406c 0x0000008c Code RO 4833 i.WIZCHIP_READ_BUF w5500.o + 0x080040f8 0x080040f8 0x00000074 Code RO 4834 i.WIZCHIP_WRITE w5500.o + 0x0800416c 0x0800416c 0x00000088 Code RO 4835 i.WIZCHIP_WRITE_BUF w5500.o + 0x080041f4 0x080041f4 0x00000020 Code RO 5626 i.__0printf mc_w.l(printfa.o) + 0x08004214 0x08004214 0x00000034 Code RO 5627 i.__0snprintf mc_w.l(printfa.o) + 0x08004248 0x08004248 0x00000028 Code RO 5628 i.__0sprintf mc_w.l(printfa.o) + 0x08004270 0x08004270 0x00000034 Code RO 5631 i.__0vsnprintf mc_w.l(printfa.o) + 0x080042a4 0x080042a4 0x00000010 Code RO 2372 i.__NVIC_GetPriorityGrouping stm32f1xx_hal_cortex.o + 0x080042b4 0x080042b4 0x00000028 Code RO 2373 i.__NVIC_SetPriority stm32f1xx_hal_cortex.o + 0x080042dc 0x080042dc 0x0000000e Code RO 5756 i.__scatterload_copy mc_w.l(handlers.o) + 0x080042ea 0x080042ea 0x00000002 Code RO 5757 i.__scatterload_null mc_w.l(handlers.o) + 0x080042ec 0x080042ec 0x0000000e Code RO 5758 i.__scatterload_zeroinit mc_w.l(handlers.o) + 0x080042fa 0x080042fa 0x00000002 PAD + 0x080042fc 0x080042fc 0x00000184 Code RO 5633 i._fp_digits mc_w.l(printfa.o) + 0x08004480 0x08004480 0x000006b4 Code RO 5634 i._printf_core mc_w.l(printfa.o) + 0x08004b34 0x08004b34 0x00000024 Code RO 5635 i._printf_post_padding mc_w.l(printfa.o) + 0x08004b58 0x08004b58 0x0000002e Code RO 5636 i._printf_pre_padding mc_w.l(printfa.o) + 0x08004b86 0x08004b86 0x00000016 Code RO 5637 i._snputc mc_w.l(printfa.o) + 0x08004b9c 0x08004b9c 0x0000000a Code RO 5638 i._sputc mc_w.l(printfa.o) + 0x08004ba6 0x08004ba6 0x0000001a Code RO 867 i.calc_checksum io_monitor.o + 0x08004bc0 0x08004bc0 0x00000078 Code RO 5210 i.check_DHCP_leasedIP dhcp.o + 0x08004c38 0x08004c38 0x000000ac Code RO 5211 i.check_DHCP_timeout dhcp.o + 0x08004ce4 0x08004ce4 0x000000a0 Code RO 4895 i.close socket.o + 0x08004d84 0x08004d84 0x00000074 Code RO 1068 i.cmd_parser_response_callback cmd_router.o + 0x08004df8 0x08004df8 0x00000044 Code RO 4650 i.create_wiz_timer_node wiz_interface.o + 0x08004e3c 0x08004e3c 0x00000120 Code RO 4978 i.ctlwizchip wizchip_conf.o + 0x08004f5c 0x08004f5c 0x00000034 Code RO 5212 i.default_ip_assign dhcp.o + 0x08004f90 0x08004f90 0x00000024 Code RO 5213 i.default_ip_conflict dhcp.o + 0x08004fb4 0x08004fb4 0x00000028 Code RO 5214 i.default_ip_update dhcp.o + 0x08004fdc 0x08004fdc 0x0000001a Code RO 982 i.fputc uart2_print.o + 0x08004ff6 0x08004ff6 0x00000002 PAD + 0x08004ff8 0x08004ff8 0x00000050 Code RO 5654 i.free mc_w.l(malloc.o) + 0x08005048 0x08005048 0x00000020 Code RO 5216 i.getDNSfromDHCP dhcp.o + 0x08005068 0x08005068 0x00000020 Code RO 5217 i.getGWfromDHCP dhcp.o + 0x08005088 0x08005088 0x00000020 Code RO 5218 i.getIPfromDHCP dhcp.o + 0x080050a8 0x080050a8 0x00000020 Code RO 5219 i.getSNfromDHCP dhcp.o + 0x080050c8 0x080050c8 0x0000006c Code RO 4836 i.getSn_RX_RSR w5500.o + 0x08005134 0x08005134 0x0000006c Code RO 4837 i.getSn_TX_FSR w5500.o + 0x080051a0 0x080051a0 0x00000014 Code RO 452 i.gpio_led_rx_off gpio.o + 0x080051b4 0x080051b4 0x00000014 Code RO 453 i.gpio_led_rx_on gpio.o + 0x080051c8 0x080051c8 0x00000014 Code RO 454 i.gpio_led_tx_off gpio.o + 0x080051dc 0x080051dc 0x00000014 Code RO 455 i.gpio_led_tx_on gpio.o + 0x080051f0 0x080051f0 0x00000038 Code RO 1154 i.init_modules debug_log.o + 0x08005228 0x08005228 0x0000004c Code RO 1155 i.is_module_enabled debug_log.o + 0x08005274 0x08005274 0x000001a4 Code RO 4768 i.loopback_udps loopback.o + 0x08005418 0x08005418 0x0000033c Code RO 346 i.main main.o + 0x08005754 0x08005754 0x00000190 Code RO 5220 i.makeDHCPMSG dhcp.o + 0x080058e4 0x080058e4 0x0000006c Code RO 5655 i.malloc mc_w.l(malloc.o) + 0x08005950 0x08005950 0x0000002e Code RO 4651 i.network_init wiz_interface.o + 0x0800597e 0x0800597e 0x00000002 PAD + 0x08005980 0x08005980 0x00000284 Code RO 5221 i.parseDHCPMSG dhcp.o + 0x08005c04 0x08005c04 0x000001d0 Code RO 4652 i.print_network_information wiz_interface.o + 0x08005dd4 0x08005dd4 0x0000030c Code RO 4902 i.recvfrom socket.o + 0x080060e0 0x080060e0 0x00000028 Code RO 4981 i.reg_wizchip_cs_cbfunc wizchip_conf.o + 0x08006108 0x08006108 0x00000034 Code RO 4982 i.reg_wizchip_spi_cbfunc wizchip_conf.o + 0x0800613c 0x0800613c 0x00000034 Code RO 4983 i.reg_wizchip_spiburst_cbfunc wizchip_conf.o + 0x08006170 0x08006170 0x00000020 Code RO 5223 i.reset_DHCP_timeout dhcp.o + 0x08006190 0x08006190 0x0000001c Code RO 4417 i.rf433_fifo_clear rf433_hal.o + 0x080061ac 0x080061ac 0x00000018 Code RO 4418 i.rf433_fifo_get_length rf433_hal.o + 0x080061c4 0x080061c4 0x00000070 Code RO 4419 i.rf433_fifo_read rf433_hal.o + 0x08006234 0x08006234 0x00000028 Code RO 4421 i.rf433_hal_1ms_callback rf433_hal.o + 0x0800625c 0x0800625c 0x00000040 Code RO 4422 i.rf433_hal_aux_wait rf433_hal.o + 0x0800629c 0x0800629c 0x0000001c Code RO 4424 i.rf433_hal_deinit rf433_hal.o + 0x080062b8 0x080062b8 0x00000008 Code RO 4425 i.rf433_hal_fifo_clear rf433_hal.o + 0x080062c0 0x080062c0 0x0000000c Code RO 4426 i.rf433_hal_fifo_get_length rf433_hal.o + 0x080062cc 0x080062cc 0x00000014 Code RO 4427 i.rf433_hal_fifo_read rf433_hal.o + 0x080062e0 0x080062e0 0x00000034 Code RO 4429 i.rf433_hal_init rf433_hal.o + 0x08006314 0x08006314 0x000000a0 Code RO 4431 i.rf433_hal_set_work_mode rf433_hal.o + 0x080063b4 0x080063b4 0x00000030 Code RO 4434 i.rf433_hal_uart_tx rf433_hal.o + 0x080063e4 0x080063e4 0x00000060 Code RO 4281 i.rf433_init rf433.o + 0x08006444 0x08006444 0x00000050 Code RO 151 i.rf433_rx_app_init rf433_rx_app.o + 0x08006494 0x08006494 0x00000050 Code RO 152 i.rf433_rx_app_parse_packet rf433_rx_app.o + 0x080064e4 0x080064e4 0x00000020 Code RO 154 i.rf433_rx_app_start rf433_rx_app.o + 0x08006504 0x08006504 0x000000a0 Code RO 156 i.rf433_rx_app_task rf433_rx_app.o + 0x080065a4 0x080065a4 0x0000003c Code RO 4288 i.rf433_rx_start rf433.o + 0x080065e0 0x080065e0 0x00000024 Code RO 4292 i.rf433_send_config_command rf433.o + 0x08006604 0x08006604 0x00000058 Code RO 4294 i.rf433_set_config rf433.o + 0x0800665c 0x0800665c 0x00000018 Code RO 4295 i.rf433_set_work_mode rf433.o + 0x08006674 0x08006674 0x00000038 Code RO 4296 i.rf433_transmit rf433.o + 0x080066ac 0x080066ac 0x00000058 Code RO 246 i.rf433_tx_app_init rf433_tx_app.o + 0x08006704 0x08006704 0x0000002c Code RO 249 i.rf433_tx_app_start rf433_tx_app.o + 0x08006730 0x08006730 0x000000d4 Code RO 251 i.rf433_tx_app_task rf433_tx_app.o + 0x08006804 0x08006804 0x00000012 Code RO 157 i.rx_led_control rf433_rx_app.o + 0x08006816 0x08006816 0x00000010 Code RO 1231 i.rx_ring_init multi_uart_router.o + 0x08006826 0x08006826 0x00000002 PAD + 0x08006828 0x08006828 0x0000003c Code RO 158 i.rx_update_stats rf433_rx_app.o + 0x08006864 0x08006864 0x00000200 Code RO 5224 i.send_DHCP_DECLINE dhcp.o + 0x08006a64 0x08006a64 0x00000298 Code RO 5225 i.send_DHCP_DISCOVER dhcp.o + 0x08006cfc 0x08006cfc 0x000003e8 Code RO 5226 i.send_DHCP_REQUEST dhcp.o + 0x080070e4 0x080070e4 0x000000cc Code RO 868 i.send_di_event io_monitor.o + 0x080071b0 0x080071b0 0x0000020c Code RO 4904 i.sendto socket.o + 0x080073bc 0x080073bc 0x00000194 Code RO 4906 i.socket socket.o + 0x08007550 0x08007550 0x0000001c Code RO 14 i.systick_interrupt_1ms_callback systick.o + 0x0800756c 0x0800756c 0x00000048 Code RO 252 i.tx_build_packet rf433_tx_app.o + 0x080075b4 0x080075b4 0x00000068 Code RO 1234 i.tx_kickoff multi_uart_router.o + 0x0800761c 0x0800761c 0x00000012 Code RO 253 i.tx_led_control rf433_tx_app.o + 0x0800762e 0x0800762e 0x00000016 Code RO 1235 i.tx_ring_init multi_uart_router.o + 0x08007644 0x08007644 0x0000005e Code RO 1236 i.tx_ring_push multi_uart_router.o + 0x080076a2 0x080076a2 0x00000002 PAD + 0x080076a4 0x080076a4 0x00000050 Code RO 4435 i.uart1_check_rx_done rf433_hal.o + 0x080076f4 0x080076f4 0x00000008 Code RO 4436 i.uart1_rx_timeout_1ms_callback rf433_hal.o + 0x080076fc 0x080076fc 0x00000038 Code RO 4653 i.wiz_add_timer wiz_interface.o + 0x08007734 0x08007734 0x00000044 Code RO 4654 i.wiz_delete_timer wiz_interface.o + 0x08007778 0x08007778 0x000000d4 Code RO 4655 i.wiz_dhcp_process wiz_interface.o + 0x0800784c 0x0800784c 0x00000054 Code RO 4656 i.wiz_phy_link_check wiz_interface.o + 0x080078a0 0x080078a0 0x00000094 Code RO 4657 i.wiz_print_phy_info wiz_interface.o + 0x08007934 0x08007934 0x00000084 Code RO 4838 i.wiz_recv_data w5500.o + 0x080079b8 0x080079b8 0x00000066 Code RO 4839 i.wiz_recv_ignore w5500.o + 0x08007a1e 0x08007a1e 0x00000084 Code RO 4840 i.wiz_send_data w5500.o + 0x08007aa2 0x08007aa2 0x00000002 PAD + 0x08007aa4 0x08007aa4 0x00000038 Code RO 4658 i.wiz_timer_handler wiz_interface.o + 0x08007adc 0x08007adc 0x00000018 Code RO 4659 i.wiz_user_delay_ms wiz_interface.o + 0x08007af4 0x08007af4 0x00000006 Code RO 4984 i.wizchip_bus_readdata wizchip_conf.o + 0x08007afa 0x08007afa 0x00000004 Code RO 4985 i.wizchip_bus_writedata wizchip_conf.o + 0x08007afe 0x08007afe 0x0000003c Code RO 4986 i.wizchip_clrinterrupt wizchip_conf.o + 0x08007b3a 0x08007b3a 0x00000002 Code RO 4987 i.wizchip_cris_enter wizchip_conf.o + 0x08007b3c 0x08007b3c 0x00000002 Code RO 4988 i.wizchip_cris_exit wizchip_conf.o + 0x08007b3e 0x08007b3e 0x00000002 Code RO 4989 i.wizchip_cs_deselect wizchip_conf.o + 0x08007b40 0x08007b40 0x00000002 Code RO 4990 i.wizchip_cs_select wizchip_conf.o + 0x08007b42 0x08007b42 0x00000002 PAD + 0x08007b44 0x08007b44 0x00000014 Code RO 4567 i.wizchip_deselect wiz_platform.o + 0x08007b58 0x08007b58 0x0000002a Code RO 4991 i.wizchip_getinterrupt wizchip_conf.o + 0x08007b82 0x08007b82 0x00000028 Code RO 4992 i.wizchip_getinterruptmask wizchip_conf.o + 0x08007baa 0x08007baa 0x00000002 PAD + 0x08007bac 0x08007bac 0x0000005c Code RO 4993 i.wizchip_getnetinfo wizchip_conf.o + 0x08007c08 0x08007c08 0x00000090 Code RO 4996 i.wizchip_init wizchip_conf.o + 0x08007c98 0x08007c98 0x00000108 Code RO 4660 i.wizchip_initialize wiz_interface.o + 0x08007da0 0x08007da0 0x0000001c Code RO 4568 i.wizchip_read_buff wiz_platform.o + 0x08007dbc 0x08007dbc 0x0000001c Code RO 4569 i.wizchip_read_byte wiz_platform.o + 0x08007dd8 0x08007dd8 0x0000003c Code RO 4570 i.wizchip_reset wiz_platform.o + 0x08007e14 0x08007e14 0x00000014 Code RO 4571 i.wizchip_select wiz_platform.o + 0x08007e28 0x08007e28 0x0000001e Code RO 4997 i.wizchip_setinterruptmask wizchip_conf.o + 0x08007e46 0x08007e46 0x00000002 PAD + 0x08007e48 0x08007e48 0x00000058 Code RO 4998 i.wizchip_setnetinfo wizchip_conf.o + 0x08007ea0 0x08007ea0 0x00000034 Code RO 4572 i.wizchip_spi_cb_reg wiz_platform.o + 0x08007ed4 0x08007ed4 0x00000002 Code RO 5001 i.wizchip_spi_readburst wizchip_conf.o + 0x08007ed6 0x08007ed6 0x00000004 Code RO 5002 i.wizchip_spi_readbyte wizchip_conf.o + 0x08007eda 0x08007eda 0x00000002 Code RO 5003 i.wizchip_spi_writeburst wizchip_conf.o + 0x08007edc 0x08007edc 0x00000002 Code RO 5004 i.wizchip_spi_writebyte wizchip_conf.o + 0x08007ede 0x08007ede 0x00000072 Code RO 5005 i.wizchip_sw_reset wizchip_conf.o + 0x08007f50 0x08007f50 0x00000048 Code RO 4661 i.wizchip_version_check wiz_interface.o + 0x08007f98 0x08007f98 0x0000001c Code RO 4573 i.wizchip_write_buff wiz_platform.o + 0x08007fb4 0x08007fb4 0x00000018 Code RO 4574 i.wizchip_write_byte wiz_platform.o + 0x08007fcc 0x08007fcc 0x00000078 Code RO 5006 i.wizphy_getphyconf wizchip_conf.o + 0x08008044 0x08008044 0x00000018 Code RO 5007 i.wizphy_getphylink wizchip_conf.o + 0x0800805c 0x0800805c 0x0000001e Code RO 5008 i.wizphy_getphypmode wizchip_conf.o + 0x0800807a 0x0800807a 0x00000034 Code RO 5010 i.wizphy_reset wizchip_conf.o + 0x080080ae 0x080080ae 0x00000058 Code RO 5011 i.wizphy_setphyconf wizchip_conf.o + 0x08008106 0x08008106 0x00000064 Code RO 5012 i.wizphy_setphypmode wizchip_conf.o + 0x0800816a 0x0800816a 0x00000002 PAD + 0x0800816c 0x0800816c 0x00000010 Data RO 1157 .constdata debug_log.o + 0x0800817c 0x0800817c 0x00000018 Data RO 1238 .constdata multi_uart_router.o + 0x08008194 0x08008194 0x00000012 Data RO 2066 .constdata stm32f1xx_hal_rcc.o + 0x080081a6 0x080081a6 0x00000018 Data RO 4244 .constdata system_stm32f1xx.o + 0x080081be 0x080081be 0x00000021 Data RO 4299 .constdata rf433.o + 0x080081df 0x080081df 0x00000081 Data RO 5352 .constdata mc_w.l(ctype_o.o) + 0x08008260 0x08008260 0x00000004 Data RO 5353 .constdata mc_w.l(ctype_o.o) + 0x08008264 0x08008264 0x0000001e Data RO 1158 .conststring debug_log.o + 0x08008282 0x08008282 0x00000002 PAD + 0x08008284 0x08008284 0x00000016 Data RO 1239 .conststring multi_uart_router.o + 0x0800829a 0x0800829a 0x00000002 PAD + 0x0800829c 0x0800829c 0x00000169 Data RO 4662 .conststring wiz_interface.o + 0x08008405 0x08008405 0x00000003 PAD + 0x08008408 0x08008408 0x00000020 Data RO 5754 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08005eb4, Size: 0x00001a38, Max: 0x00005000, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08008428, Size: 0x00002690, Max: 0x00005000, ABSOLUTE, COMPRESSED[0x00000070]) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20000000 0x08005eb4 0x00000004 Data RW 16 .data systick.o - 0x20000004 0x08005eb8 0x00000002 Data RW 339 .data main.o - 0x20000006 0x08005eba 0x00000002 PAD - 0x20000008 0x08005ebc 0x00000005 Data RW 703 .data cmd_parser.o - 0x2000000d 0x08005ec1 0x00000003 PAD - 0x20000010 0x08005ec4 0x0000004c Data RW 825 .data io_monitor.o - 0x2000005c 0x08005f10 0x00000008 Data RW 891 .data relay_control.o - 0x20000064 0x08005f18 0x00000014 Data RW 1024 .data cmd_router.o - 0x20000078 0x08005f2c 0x00000002 Data RW 1109 .data debug_log.o - 0x2000007a 0x08005f2e 0x00000002 PAD - 0x2000007c 0x08005f30 0x00000009 Data RW 1798 .data stm32f1xx_hal.o - 0x20000085 0x08005f39 0x00000003 PAD - 0x20000088 0x08005f3c 0x00000004 Data RW 3193 .data system_stm32f1xx.o - 0x2000008c 0x08005f40 0x00000010 Data RW 3248 .data rf433.o - 0x2000009c 0x08005f50 0x00000019 Data RW 3389 .data rf433_hal.o - 0x200000b5 0x08005f69 0x00000003 PAD - 0x200000b8 0x08005f6c 0x00000004 Data RW 3841 .data mc_w.l(stdout.o) - 0x200000bc 0x08005f70 0x00000004 Data RW 3849 .data mc_w.l(errno.o) - 0x200000c0 - 0x00000028 Zero RW 153 .bss rf433_rx_app.o - 0x200000e8 - 0x0000001c Zero RW 248 .bss rf433_tx_app.o - 0x20000104 - 0x00000058 Zero RW 464 .bss spi.o - 0x2000015c - 0x000000d8 Zero RW 509 .bss usart.o - 0x20000234 - 0x00000060 Zero RW 702 .bss cmd_parser.o - 0x20000294 - 0x0000010a Zero RW 936 .bss uart2_print.o - 0x2000039e 0x08005f74 0x00000002 PAD - 0x200003a0 - 0x000001bc Zero RW 1023 .bss cmd_router.o - 0x2000055c - 0x00000110 Zero RW 1106 .bss debug_log.o - 0x2000066c - 0x00000504 Zero RW 1175 .bss multi_uart_router.o - 0x20000b70 - 0x00000230 Zero RW 1290 .bss uart3_passthrough.o - 0x20000da0 - 0x00000094 Zero RW 1363 .bss uart3_protocol_discriminator.o - 0x20000e34 - 0x00000400 Zero RW 3246 .bss rf433.o - 0x20001234 - 0x00000400 Zero RW 3388 .bss rf433_hal.o - 0x20001634 0x08005f74 0x00000004 PAD - 0x20001638 - 0x00000400 Zero RW 1 STACK startup_stm32f103xb.o + 0x20000000 COMPRESSED 0x00000004 Data RW 16 .data systick.o + 0x20000004 COMPRESSED 0x00000012 Data RW 348 .data main.o + 0x20000016 COMPRESSED 0x00000002 PAD + 0x20000018 COMPRESSED 0x00000005 Data RW 747 .data cmd_parser.o + 0x2000001d COMPRESSED 0x00000003 PAD + 0x20000020 COMPRESSED 0x0000004c Data RW 869 .data io_monitor.o + 0x2000006c COMPRESSED 0x00000008 Data RW 938 .data relay_control.o + 0x20000074 COMPRESSED 0x00000014 Data RW 1071 .data cmd_router.o + 0x20000088 COMPRESSED 0x00000002 Data RW 1159 .data debug_log.o + 0x2000008a COMPRESSED 0x00000002 PAD + 0x2000008c COMPRESSED 0x00000009 Data RW 1902 .data stm32f1xx_hal.o + 0x20000095 COMPRESSED 0x00000003 PAD + 0x20000098 COMPRESSED 0x00000004 Data RW 4245 .data system_stm32f1xx.o + 0x2000009c COMPRESSED 0x00000010 Data RW 4300 .data rf433.o + 0x200000ac COMPRESSED 0x00000019 Data RW 4439 .data rf433_hal.o + 0x200000c5 COMPRESSED 0x00000003 PAD + 0x200000c8 COMPRESSED 0x00000008 Data RW 4663 .data wiz_interface.o + 0x200000d0 COMPRESSED 0x0000001a Data RW 4745 .data user_main.o + 0x200000ea COMPRESSED 0x0000000e Data RW 4908 .data socket.o + 0x200000f8 COMPRESSED 0x00000031 Data RW 5013 .data wizchip_conf.o + 0x20000129 COMPRESSED 0x00000003 PAD + 0x2000012c COMPRESSED 0x00000050 Data RW 5227 .data dhcp.o + 0x2000017c COMPRESSED 0x00000004 Data RW 5704 .data mc_w.l(stdout.o) + 0x20000180 COMPRESSED 0x00000004 Data RW 5709 .data mc_w.l(mvars.o) + 0x20000184 COMPRESSED 0x00000004 Data RW 5710 .data mc_w.l(mvars.o) + 0x20000188 - 0x00000028 Zero RW 159 .bss rf433_rx_app.o + 0x200001b0 - 0x0000001c Zero RW 254 .bss rf433_tx_app.o + 0x200001cc - 0x00000b00 Zero RW 347 .bss main.o + 0x20000ccc - 0x00000058 Zero RW 502 .bss spi.o + 0x20000d24 - 0x000000d8 Zero RW 547 .bss usart.o + 0x20000dfc - 0x00000060 Zero RW 746 .bss cmd_parser.o + 0x20000e5c - 0x0000020a Zero RW 983 .bss uart2_print.o + 0x20001066 COMPRESSED 0x00000002 PAD + 0x20001068 - 0x000001bc Zero RW 1070 .bss cmd_router.o + 0x20001224 - 0x00000110 Zero RW 1156 .bss debug_log.o + 0x20001334 - 0x00000504 Zero RW 1237 .bss multi_uart_router.o + 0x20001838 - 0x00000048 Zero RW 1480 .bss tim.o + 0x20001880 - 0x00000400 Zero RW 4298 .bss rf433.o + 0x20001c80 - 0x00000400 Zero RW 4438 .bss rf433_hal.o + 0x20002080 - 0x00000010 Zero RW 4907 .bss socket.o + 0x20002090 - 0x00000200 Zero RW 2 HEAP startup_stm32f103xb.o + 0x20002290 - 0x00000400 Zero RW 1 STACK startup_stm32f103xb.o ============================================================================== @@ -2566,52 +3667,60 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug Object Name - 2268 594 0 5 96 11122 cmd_parser.o - 1048 310 0 20 444 5446 cmd_router.o - 372 86 46 2 272 3166 debug_log.o - 352 36 0 0 0 2705 gpio.o - 554 166 0 76 0 4668 io_monitor.o - 672 232 0 2 0 6988 main.o - 1062 136 46 0 1284 10037 multi_uart_router.o - 284 158 0 8 0 1298 relay_control.o - 360 38 33 16 1024 5072 rf433.o - 832 112 0 25 1024 10816 rf433_hal.o - 430 28 0 0 40 8033 rf433_rx_app.o - 422 34 0 0 28 4665 rf433_tx_app.o - 204 22 0 0 88 1597 spi.o - 36 8 236 0 1024 792 startup_stm32f103xb.o - 192 36 0 9 0 5809 stm32f1xx_hal.o - 304 22 0 0 0 29347 stm32f1xx_hal_cortex.o - 262 4 0 0 0 1723 stm32f1xx_hal_dma.o - 828 34 0 0 0 3275 stm32f1xx_hal_gpio.o - 84 8 0 0 0 874 stm32f1xx_hal_msp.o - 1748 98 18 0 0 5888 stm32f1xx_hal_rcc.o - 190 0 0 0 0 1107 stm32f1xx_hal_spi.o - 2110 8 0 0 0 12073 stm32f1xx_hal_uart.o - 86 18 0 0 0 5206 stm32f1xx_it.o - 2 0 24 4 0 1091 system_stm32f1xx.o - 28 4 0 4 0 400769 systick.o - 582 72 0 0 266 6836 uart2_print.o - 1020 258 0 0 560 5232 uart3_passthrough.o - 1196 726 0 0 148 4458 uart3_protocol_discriminator.o - 568 54 0 0 216 2980 usart.o + 36 12 0 5 96 2105 cmd_parser.o + 236 62 0 20 444 2409 cmd_router.o + 396 94 46 2 272 3762 debug_log.o + 4566 330 0 80 0 16620 dhcp.o + 352 36 0 0 0 2785 gpio.o + 534 162 0 76 0 4250 io_monitor.o + 420 138 0 0 0 1572 loopback.o + 1364 578 0 18 2816 11311 main.o + 664 46 46 0 1284 7017 multi_uart_router.o + 76 44 0 8 0 709 relay_control.o + 360 38 33 16 1024 5227 rf433.o + 684 84 0 25 1024 9859 rf433_hal.o + 430 28 0 0 40 8177 rf433_rx_app.o + 434 36 0 0 28 4832 rf433_tx_app.o + 1868 56 0 14 16 5114 socket.o + 204 22 0 0 88 1649 spi.o + 36 8 236 0 1536 808 startup_stm32f103xb.o + 192 36 0 9 0 5917 stm32f1xx_hal.o + 304 22 0 0 0 29435 stm32f1xx_hal_cortex.o + 262 4 0 0 0 1767 stm32f1xx_hal_dma.o + 828 34 0 0 0 3327 stm32f1xx_hal_gpio.o + 84 8 0 0 0 902 stm32f1xx_hal_msp.o + 1748 98 18 0 0 5996 stm32f1xx_hal_rcc.o + 1968 6 0 0 0 7654 stm32f1xx_hal_spi.o + 1138 26 0 0 0 9299 stm32f1xx_hal_tim.o + 136 14 0 0 0 2437 stm32f1xx_hal_tim_ex.o + 2108 8 0 0 0 11736 stm32f1xx_hal_uart.o + 102 24 0 0 0 5824 stm32f1xx_it.o + 2 0 24 4 0 1131 system_stm32f1xx.o + 28 4 0 4 0 433173 systick.o + 172 12 0 0 72 1658 tim.o + 592 70 0 0 522 6988 uart2_print.o + 568 54 0 0 216 3052 usart.o + 0 0 0 26 0 838 user_main.o + 1090 16 0 0 0 6826 w5500.o + 1562 716 361 8 0 8365 wiz_interface.o + 278 64 0 0 0 5462 wiz_platform.o + 1484 80 0 49 0 20529 wizchip_conf.o ---------------------------------------------------------------------- - 18116 3302 439 184 6520 563073 Object Totals + 27346 3070 803 380 9480 660522 Object Totals 0 0 32 0 0 0 (incl. Generated) - 20 0 4 13 6 0 (incl. Padding) + 40 0 7 16 2 0 (incl. Padding) ---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Member Name 56 8 0 0 0 84 __0sscanf.o + 86 0 0 0 0 0 __dczerorl2.o 28 0 0 0 0 68 _chval.o 816 6 0 0 0 112 _scanf.o 332 0 0 0 0 96 _scanf_int.o 64 0 0 0 0 84 _sgetc.o - 158 0 0 0 0 92 _strtoul.o - 26 0 0 0 0 80 atoi.o 8 4 133 0 0 68 ctype_o.o 0 0 0 0 0 0 entry.o 0 0 0 0 0 0 entry10a.o @@ -2622,7 +3731,6 @@ Image component sizes 0 0 0 0 0 0 entry7b.o 0 0 0 0 0 0 entry8b.o 8 4 0 0 0 0 entry9a.o - 8 4 0 4 0 68 errno.o 30 0 0 0 0 0 handlers.o 36 8 0 0 0 68 init.o 18 0 0 0 0 76 isspace_o.o @@ -2630,15 +3738,15 @@ Image component sizes 30 0 0 0 0 68 llshl.o 36 0 0 0 0 68 llsshr.o 32 0 0 0 0 68 llushr.o + 188 20 0 0 0 160 malloc.o 36 0 0 0 0 68 memcpya.o 36 0 0 0 0 108 memseta.o - 2344 100 0 0 0 700 printfa.o + 0 0 0 8 0 0 mvars.o + 2394 106 0 0 0 852 printfa.o 40 8 0 0 0 84 scanf_char.o 0 0 0 4 0 0 stdout.o - 28 0 0 0 0 76 strcmp.o 14 0 0 0 0 68 strlen.o 30 0 0 0 0 80 strncmp.o - 112 0 0 0 0 88 strtol.o 44 0 0 0 0 80 uidiv.o 98 0 0 0 0 92 uldiv.o 48 0 0 0 0 68 cdrcmple.o @@ -2649,18 +3757,18 @@ Image component sizes 228 0 0 0 0 96 dmul.o ---------------------------------------------------------------------- - 5556 146 133 8 0 3200 Library Totals - 6 0 0 0 0 0 (incl. Padding) + 5550 168 133 12 0 3108 Library Totals + 8 0 0 0 0 0 (incl. Padding) ---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Name - 4484 146 133 8 0 2544 mc_w.l + 4476 168 133 12 0 2452 mc_w.l 1066 0 0 0 0 656 mf_w.l ---------------------------------------------------------------------- - 5556 146 133 8 0 3200 Library Totals + 5550 168 133 12 0 3108 Library Totals ---------------------------------------------------------------------- @@ -2669,15 +3777,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 23672 3448 572 192 6520 556233 Grand Totals - 23672 3448 572 192 6520 556233 ELF Image Totals - 23672 3448 572 192 0 0 ROM Totals + 32896 3238 936 392 9480 649926 Grand Totals + 32896 3238 936 112 9480 649926 ELF Image Totals (compressed) + 32896 3238 936 112 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 24244 ( 23.68kB) - Total RW Size (RW Data + ZI Data) 6712 ( 6.55kB) - Total ROM Size (Code + RO Data + RW Data) 24436 ( 23.86kB) + Total RO Size (Code + RO Data) 33832 ( 33.04kB) + Total RW Size (RW Data + ZI Data) 9872 ( 9.64kB) + Total ROM Size (Code + RO Data + RW Data) 33944 ( 33.15kB) ============================================================================== diff --git a/MDK-ARM/project/project_project.dep b/MDK-ARM/project/project_project.dep index 25be48f..791af07 100644 --- a/MDK-ARM/project/project_project.dep +++ b/MDK-ARM/project/project_project.dep @@ -1,1051 +1,1311 @@ Dependencies for Project 'project', Target 'project': (DO NOT MODIFY !) CompilerVersion: 5060960::V5.06 update 7 (build 960)::.\ARMCC -F (startup_stm32f103xb.s)(0x69C3A262)(--cpu Cortex-M3 -g --apcs=interwork --pd "__MICROLIB SETA 1" -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include --pd "__UVISION_VERSION SETA 543" --pd "STM32F10X_MD SETA 1" --pd "_RTE_ SETA 1" --list startup_stm32f103xb.lst --xref -o project\startup_stm32f103xb.o --depend project\startup_stm32f103xb.d) -F (..\Core\Src\systick.c)(0x665ED1F4)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\systick.o --omf_browse project\systick.crf --depend project\systick.d) -I (../Core/Inc/main.h)(0x69C35425) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +F (startup_stm32f103xb.s)(0x69F98680)(--cpu Cortex-M3 -g --apcs=interwork --pd "__MICROLIB SETA 1" -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include --pd "__UVISION_VERSION SETA 543" --pd "STM32F10X_MD SETA 1" --pd "_RTE_ SETA 1" --list startup_stm32f103xb.lst --xref -o project\startup_stm32f103xb.o --depend project\startup_stm32f103xb.d) +F (..\Core\Src\systick.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\systick.o --omf_browse project\systick.crf --depend project\systick.d) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -F (..\Core\Src\rf433_rx_app.c)(0x69C25185)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\rf433_rx_app.o --omf_browse project\rf433_rx_app.crf --depend project\rf433_rx_app.d) -I (../Driver_RF433/Inc/rf433_config.h)(0x69C62F40) -I (../Core/Inc/rf433_rx_app.h)(0x69C22B79) -I (../Driver_RF433/Inc/rf433.h)(0x69C222AA) -I (../Driver_RF433/Inc/rf433_hal.h)(0x69C2716B) +F (..\Core\Src\rf433_rx_app.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\rf433_rx_app.o --omf_browse project\rf433_rx_app.crf --depend project\rf433_rx_app.d) +I (../Driver_RF433/Inc/rf433_config.h)(0x69F98677) +I (../Core/Inc/rf433_rx_app.h)(0x69F98677) +I (../Driver_RF433/Inc/rf433.h)(0x69F98677) +I (../Driver_RF433/Inc/rf433_hal.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) -I (../Core/Inc/main.h)(0x69C35425) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) -F (..\Core\Src\rf433_tx_app.c)(0x69C51895)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\rf433_tx_app.o --omf_browse project\rf433_tx_app.crf --depend project\rf433_tx_app.d) -I (../Driver_RF433/Inc/rf433_config.h)(0x69C62F40) -I (../Core/Inc/rf433_tx_app.h)(0x69C229F8) -I (../Driver_RF433/Inc/rf433.h)(0x69C222AA) -I (../Driver_RF433/Inc/rf433_hal.h)(0x69C2716B) +F (..\Core\Src\rf433_tx_app.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\rf433_tx_app.o --omf_browse project\rf433_tx_app.crf --depend project\rf433_tx_app.d) +I (../Driver_RF433/Inc/rf433_config.h)(0x69F98677) +I (../Core/Inc/rf433_tx_app.h)(0x69F98677) +I (../Driver_RF433/Inc/rf433.h)(0x69F98677) +I (../Driver_RF433/Inc/rf433_hal.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) -I (../Core/Inc/main.h)(0x69C35425) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) -I (../Core/Inc/uart2_print.h)(0x69C6683B) +I (../Core/Inc/uart2_print.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) -F (../Core/Src/main.c)(0x69C62F4C)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\main.o --omf_browse project\main.crf --depend project\main.d) -I (../Core/Inc/main.h)(0x69C35425) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +F (../Core/Src/main.c)(0x69FAA1DC)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\main.o --omf_browse project\main.crf --depend project\main.d) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -I (../Core/Inc/spi.h)(0x69C35422) -I (../Core/Inc/usart.h)(0x69C35423) -I (../Core/Inc/gpio.h)(0x665D64E1) -I (../Driver_RF433/Inc/rf433.h)(0x69C222AA) -I (../Driver_RF433/Inc/rf433_config.h)(0x69C62F40) -I (../Driver_RF433/Inc/rf433_hal.h)(0x69C2716B) -I (../Core/Inc/uart2_print.h)(0x69C6683B) +I (../Core/Inc/spi.h)(0x69F98677) +I (../Core/Inc/tim.h)(0x69F98677) +I (../Core/Inc/usart.h)(0x69F98677) +I (../Core/Inc/gpio.h)(0x69F98677) +I (../Driver_RF433/Inc/rf433.h)(0x69F98677) +I (../Driver_RF433/Inc/rf433_config.h)(0x69F98677) +I (../Driver_RF433/Inc/rf433_hal.h)(0x69F98677) +I (../Core/Inc/uart2_print.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) -I (../Core/Inc/io_monitor.h)(0x69C60329) -I (../Core/Inc/cmd_parser.h)(0x69C6683B) -I (../Core/Inc/relay_control.h)(0x69C6683B) -I (../Core/Inc/multi_uart_router.h)(0x69C6683A) -I (../Core/Inc/cmd_router.h)(0x69C6683A) -I (../Core/Inc/debug_log.h)(0x69C6683A) -I (../Core/Inc/rf433_tx_app.h)(0x69C229F8) -I (../Core/Inc/rf433_rx_app.h)(0x69C22B79) -F (../Core/Src/gpio.c)(0x69C3A25B)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\gpio.o --omf_browse project\gpio.crf --depend project\gpio.d) -I (../Core/Inc/gpio.h)(0x665D64E1) -I (../Core/Inc/main.h)(0x69C35425) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Core/Inc/io_monitor.h)(0x69F98677) +I (../Core/Inc/cmd_parser.h)(0x69F98677) +I (../Core/Inc/relay_control.h)(0x69F98677) +I (../Core/Inc/multi_uart_router.h)(0x69F98677) +I (../Core/Inc/cmd_router.h)(0x69F98677) +I (../Core/Inc/debug_log.h)(0x69F98677) +I (..\User\user_main\user_main.h)(0x69F98681) +I (..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h)(0x69F98681) +I (..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h)(0x69F98681) +I (..\User\wiz_platform\wiz_platform.h)(0x69F98681) +I (..\User\wiz_interface\wiz_interface.h)(0x69F98681) +I (..\User\Loopback\loopback.h)(0x69F98680) +I (../Core/Inc/rf433_tx_app.h)(0x69F98677) +I (../Core/Inc/rf433_rx_app.h)(0x69F98677) +F (../Core/Src/gpio.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\gpio.o --omf_browse project\gpio.crf --depend project\gpio.d) +I (../Core/Inc/gpio.h)(0x69F98677) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -F (../Core/Src/spi.c)(0x69C36DF6)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\spi.o --omf_browse project\spi.crf --depend project\spi.d) -I (../Core/Inc/spi.h)(0x69C35422) -I (../Core/Inc/main.h)(0x69C35425) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +F (../Core/Src/spi.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\spi.o --omf_browse project\spi.crf --depend project\spi.d) +I (../Core/Inc/spi.h)(0x69F98677) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -F (../Core/Src/usart.c)(0x69C6683B)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\usart.o --omf_browse project\usart.crf --depend project\usart.d) -I (../Core/Inc/usart.h)(0x69C35423) -I (../Core/Inc/main.h)(0x69C35425) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +F (../Core/Src/usart.c)(0x69F98875)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\usart.o --omf_browse project\usart.crf --depend project\usart.d) +I (../Core/Inc/usart.h)(0x69F98677) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -I (../Driver_RF433/Inc/rf433_hal.h)(0x69C2716B) -F (../Core/Src/stm32f1xx_it.c)(0x69C35423)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_it.o --omf_browse project\stm32f1xx_it.crf --depend project\stm32f1xx_it.d) -I (../Core/Inc/main.h)(0x69C35425) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Driver_RF433/Inc/rf433_hal.h)(0x69F98677) +F (../Core/Src/stm32f1xx_it.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_it.o --omf_browse project\stm32f1xx_it.crf --depend project\stm32f1xx_it.d) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -I (../Core/Inc/stm32f1xx_it.h)(0x69C35423) -F (../Core/Src/stm32f1xx_hal_msp.c)(0x665D64E3)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_msp.o --omf_browse project\stm32f1xx_hal_msp.crf --depend project\stm32f1xx_hal_msp.d) -I (../Core/Inc/main.h)(0x69C35425) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Core/Inc/stm32f1xx_it.h)(0x69F98677) +F (../Core/Src/stm32f1xx_hal_msp.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_msp.o --omf_browse project\stm32f1xx_hal_msp.crf --depend project\stm32f1xx_hal_msp.d) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -F (..\Core\Src\cmd_parser.c)(0x69C6683B)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\cmd_parser.o --omf_browse project\cmd_parser.crf --depend project\cmd_parser.d) -I (../Core/Inc/cmd_parser.h)(0x69C6683B) +F (..\Core\Src\cmd_parser.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\cmd_parser.o --omf_browse project\cmd_parser.crf --depend project\cmd_parser.d) +I (../Core/Inc/cmd_parser.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) -I (../Core/Inc/uart2_print.h)(0x69C6683B) +I (../Core/Inc/uart2_print.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) -I (../Core/Inc/io_monitor.h)(0x69C60329) -I (../Core/Inc/relay_control.h)(0x69C6683B) +I (../Core/Inc/io_monitor.h)(0x69F98677) +I (../Core/Inc/relay_control.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) I (C:\Keil_v5\ARM\ARMCC\include\ctype.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x5F63877C) -F (..\Core\Src\io_monitor.c)(0x69C665C2)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\io_monitor.o --omf_browse project\io_monitor.crf --depend project\io_monitor.d) -I (../Core/Inc/io_monitor.h)(0x69C60329) +F (..\Core\Src\io_monitor.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\io_monitor.o --omf_browse project\io_monitor.crf --depend project\io_monitor.d) +I (../Core/Inc/io_monitor.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) -I (../Core/Inc/uart2_print.h)(0x69C6683B) +I (../Core/Inc/uart2_print.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) -I (../Core/Inc/multi_uart_router.h)(0x69C6683A) -I (../Core/Inc/usart.h)(0x69C35423) -I (../Core/Inc/main.h)(0x69C35425) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Core/Inc/multi_uart_router.h)(0x69F98677) +I (../Core/Inc/usart.h)(0x69F98677) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) -F (..\Core\Src\relay_control.c)(0x69C66653)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\relay_control.o --omf_browse project\relay_control.crf --depend project\relay_control.d) -I (../Core/Inc/relay_control.h)(0x69C6683B) +I (../Core/Inc/data_source.h)(0x69F98677) +F (..\Core\Src\relay_control.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\relay_control.o --omf_browse project\relay_control.crf --depend project\relay_control.d) +I (../Core/Inc/relay_control.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) -I (../Core/Inc/uart2_print.h)(0x69C6683B) +I (../Core/Inc/uart2_print.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) -I (../Core/Inc/main.h)(0x69C35425) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -F (..\Core\Src\uart2_print.c)(0x69C5E7D1)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\uart2_print.o --omf_browse project\uart2_print.crf --depend project\uart2_print.d) -I (../Core/Inc/uart2_print.h)(0x69C6683B) +F (..\Core\Src\uart2_print.c)(0x69F98862)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\uart2_print.o --omf_browse project\uart2_print.crf --depend project\uart2_print.d) +I (../Core/Inc/uart2_print.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) -I (../Core/Inc/usart.h)(0x69C35423) -I (../Core/Inc/main.h)(0x69C35425) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Core/Inc/usart.h)(0x69F98677) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) -F (..\Core\Src\cmd_router.c)(0x69C669EE)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\cmd_router.o --omf_browse project\cmd_router.crf --depend project\cmd_router.d) -I (../Core/Inc/cmd_router.h)(0x69C6683A) +I (../Core/Inc/multi_uart_router.h)(0x69F98677) +F (..\Core\Src\cmd_router.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\cmd_router.o --omf_browse project\cmd_router.crf --depend project\cmd_router.d) +I (../Core/Inc/cmd_router.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) -I (../Core/Inc/multi_uart_router.h)(0x69C6683A) -I (../Core/Inc/usart.h)(0x69C35423) -I (../Core/Inc/main.h)(0x69C35425) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Core/Inc/multi_uart_router.h)(0x69F98677) +I (../Core/Inc/usart.h)(0x69F98677) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -I (../Core/Inc/cmd_parser.h)(0x69C6683B) -I (../Core/Inc/uart2_print.h)(0x69C6683B) +I (../Core/Inc/cmd_parser.h)(0x69F98677) +I (../Core/Inc/uart2_print.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) -I (../Core/Inc/debug_log.h)(0x69C6683A) -I (../Core/Inc/uart3_protocol_discriminator.h)(0x69C66893) -I (../Core/Inc/uart3_passthrough.h)(0x69C668E6) -I (../Core/Inc/uart3_smart_router_config.h)(0x69C6693B) +I (../Core/Inc/debug_log.h)(0x69F98677) +I (../Core/Inc/data_source.h)(0x69F98677) +I (../Core/Inc/uart3_protocol_discriminator.h)(0x69F98677) +I (../Core/Inc/uart3_passthrough.h)(0x69F98677) +I (../Core/Inc/uart3_smart_router_config.h)(0x69F99368) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) -F (..\Core\Src\debug_log.c)(0x69C6683A)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\debug_log.o --omf_browse project\debug_log.crf --depend project\debug_log.d) -I (../Core/Inc/debug_log.h)(0x69C6683A) +F (..\Core\Src\debug_log.c)(0x69F98860)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\debug_log.o --omf_browse project\debug_log.crf --depend project\debug_log.d) +I (../Core/Inc/debug_log.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) -I (../Core/Inc/uart2_print.h)(0x69C6683B) +I (../Core/Inc/uart2_print.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -F (..\Core\Src\multi_uart_router.c)(0x69C6662C)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\multi_uart_router.o --omf_browse project\multi_uart_router.crf --depend project\multi_uart_router.d) -I (../Core/Inc/multi_uart_router.h)(0x69C6683A) +I (../Core/Inc/multi_uart_router.h)(0x69F98677) +I (../Core/Inc/usart.h)(0x69F98677) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) +I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (..\Core\Src\multi_uart_router.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\multi_uart_router.o --omf_browse project\multi_uart_router.crf --depend project\multi_uart_router.d) +I (../Core/Inc/multi_uart_router.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) -I (../Core/Inc/usart.h)(0x69C35423) -I (../Core/Inc/main.h)(0x69C35425) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Core/Inc/usart.h)(0x69F98677) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -I (../Core/Inc/uart2_print.h)(0x69C6683B) +I (../Core/Inc/uart2_print.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) -F (..\Core\Src\uart3_passthrough.c)(0x69C66917)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\uart3_passthrough.o --omf_browse project\uart3_passthrough.crf --depend project\uart3_passthrough.d) -I (../Core/Inc/uart3_passthrough.h)(0x69C668E6) +F (..\Core\Src\uart3_passthrough.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\uart3_passthrough.o --omf_browse project\uart3_passthrough.crf --depend project\uart3_passthrough.d) +I (../Core/Inc/uart3_passthrough.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) -I (../Core/Inc/uart3_smart_router_config.h)(0x69C6693B) -I (../Core/Inc/multi_uart_router.h)(0x69C6683A) -I (../Core/Inc/usart.h)(0x69C35423) -I (../Core/Inc/main.h)(0x69C35425) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Core/Inc/uart3_smart_router_config.h)(0x69F99368) +I (../Core/Inc/multi_uart_router.h)(0x69F98677) +I (../Core/Inc/usart.h)(0x69F98677) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -I (../Core/Inc/uart2_print.h)(0x69C6683B) +I (../Core/Inc/uart2_print.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) -F (..\Core\Src\uart3_protocol_discriminator.c)(0x69C66F58)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\uart3_protocol_discriminator.o --omf_browse project\uart3_protocol_discriminator.crf --depend project\uart3_protocol_discriminator.d) -I (../Core/Inc/uart3_protocol_discriminator.h)(0x69C66893) +F (..\Core\Src\uart3_protocol_discriminator.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\uart3_protocol_discriminator.o --omf_browse project\uart3_protocol_discriminator.crf --depend project\uart3_protocol_discriminator.d) +I (../Core/Inc/uart3_protocol_discriminator.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) -I (../Core/Inc/uart3_smart_router_config.h)(0x69C6693B) -I (../Core/Inc/uart2_print.h)(0x69C6683B) +I (../Core/Inc/uart3_smart_router_config.h)(0x69F99368) +I (../Core/Inc/uart2_print.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) -F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c)(0x69AAA0CD)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_gpio_ex.o --omf_browse project\stm32f1xx_hal_gpio_ex.crf --depend project\stm32f1xx_hal_gpio_ex.d) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +F (..\Core\Src\tim.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\tim.o --omf_browse project\tim.crf --depend project\tim.d) +I (../Core/Inc/tim.h)(0x69F98677) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c)(0x69AAA0CD)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_spi.o --omf_browse project\stm32f1xx_hal_spi.crf --depend project\stm32f1xx_hal_spi.d) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) +F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c)(0x69F98678)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_gpio_ex.o --omf_browse project\stm32f1xx_hal_gpio_ex.crf --depend project\stm32f1xx_hal_gpio_ex.d) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c)(0x69AAA0CD)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal.o --omf_browse project\stm32f1xx_hal.crf --depend project\stm32f1xx_hal.d) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c)(0x69F98678)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_spi.o --omf_browse project\stm32f1xx_hal_spi.crf --depend project\stm32f1xx_hal_spi.d) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c)(0x69AAA0CD)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_rcc.o --omf_browse project\stm32f1xx_hal_rcc.crf --depend project\stm32f1xx_hal_rcc.d) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c)(0x69F98678)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal.o --omf_browse project\stm32f1xx_hal.crf --depend project\stm32f1xx_hal.d) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c)(0x69AAA0CD)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_rcc_ex.o --omf_browse project\stm32f1xx_hal_rcc_ex.crf --depend project\stm32f1xx_hal_rcc_ex.d) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c)(0x69F98678)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_rcc.o --omf_browse project\stm32f1xx_hal_rcc.crf --depend project\stm32f1xx_hal_rcc.d) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c)(0x69AAA0CD)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_gpio.o --omf_browse project\stm32f1xx_hal_gpio.crf --depend project\stm32f1xx_hal_gpio.d) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c)(0x69F98678)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_rcc_ex.o --omf_browse project\stm32f1xx_hal_rcc_ex.crf --depend project\stm32f1xx_hal_rcc_ex.d) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c)(0x69AAA0CD)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_dma.o --omf_browse project\stm32f1xx_hal_dma.crf --depend project\stm32f1xx_hal_dma.d) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c)(0x69F98678)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_gpio.o --omf_browse project\stm32f1xx_hal_gpio.crf --depend project\stm32f1xx_hal_gpio.d) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c)(0x69AAA0CD)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_cortex.o --omf_browse project\stm32f1xx_hal_cortex.crf --depend project\stm32f1xx_hal_cortex.d) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c)(0x69F98678)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_dma.o --omf_browse project\stm32f1xx_hal_dma.crf --depend project\stm32f1xx_hal_dma.d) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c)(0x69AAA0CD)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_pwr.o --omf_browse project\stm32f1xx_hal_pwr.crf --depend project\stm32f1xx_hal_pwr.d) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c)(0x69F98678)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_cortex.o --omf_browse project\stm32f1xx_hal_cortex.crf --depend project\stm32f1xx_hal_cortex.d) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c)(0x69AAA0CD)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_flash.o --omf_browse project\stm32f1xx_hal_flash.crf --depend project\stm32f1xx_hal_flash.d) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c)(0x69F98678)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_pwr.o --omf_browse project\stm32f1xx_hal_pwr.crf --depend project\stm32f1xx_hal_pwr.d) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c)(0x69AAA0CD)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_flash_ex.o --omf_browse project\stm32f1xx_hal_flash_ex.crf --depend project\stm32f1xx_hal_flash_ex.d) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c)(0x69F98678)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_flash.o --omf_browse project\stm32f1xx_hal_flash.crf --depend project\stm32f1xx_hal_flash.d) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c)(0x69AAA0CD)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_exti.o --omf_browse project\stm32f1xx_hal_exti.crf --depend project\stm32f1xx_hal_exti.d) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c)(0x69F98678)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_flash_ex.o --omf_browse project\stm32f1xx_hal_flash_ex.crf --depend project\stm32f1xx_hal_flash_ex.d) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c)(0x69AAA0CD)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_tim.o --omf_browse project\stm32f1xx_hal_tim.crf --depend project\stm32f1xx_hal_tim.d) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c)(0x69F98678)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_exti.o --omf_browse project\stm32f1xx_hal_exti.crf --depend project\stm32f1xx_hal_exti.d) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c)(0x69AAA0CD)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_tim_ex.o --omf_browse project\stm32f1xx_hal_tim_ex.crf --depend project\stm32f1xx_hal_tim_ex.d) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c)(0x69F98678)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_tim.o --omf_browse project\stm32f1xx_hal_tim.crf --depend project\stm32f1xx_hal_tim.d) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c)(0x69AAA0CD)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_uart.o --omf_browse project\stm32f1xx_hal_uart.crf --depend project\stm32f1xx_hal_uart.d) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c)(0x69F98678)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_tim_ex.o --omf_browse project\stm32f1xx_hal_tim_ex.crf --depend project\stm32f1xx_hal_tim_ex.d) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (../Core/Src/system_stm32f1xx.c)(0x6571D73D)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\system_stm32f1xx.o --omf_browse project\system_stm32f1xx.crf --depend project\system_stm32f1xx.d) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c)(0x69F98678)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_uart.o --omf_browse project\stm32f1xx_hal_uart.crf --depend project\stm32f1xx_hal_uart.d) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (..\Driver_RF433\Src\rf433.c)(0x69C630FE)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\rf433.o --omf_browse project\rf433.crf --depend project\rf433.d) -I (../Driver_RF433/Inc/rf433.h)(0x69C222AA) -I (../Driver_RF433/Inc/rf433_config.h)(0x69C62F40) -I (../Driver_RF433/Inc/rf433_hal.h)(0x69C2716B) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (../Core/Src/system_stm32f1xx.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\system_stm32f1xx.o --omf_browse project\system_stm32f1xx.crf --depend project\system_stm32f1xx.d) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) +I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (..\Driver_RF433\Src\rf433.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\rf433.o --omf_browse project\rf433.crf --depend project\rf433.d) +I (../Driver_RF433/Inc/rf433.h)(0x69F98677) +I (../Driver_RF433/Inc/rf433_config.h)(0x69F98677) +I (../Driver_RF433/Inc/rf433_hal.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (..\Driver_RF433\Src\rf433_hal.c)(0x69C276D2)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\rf433_hal.o --omf_browse project\rf433_hal.crf --depend project\rf433_hal.d) -I (../Driver_RF433/Inc/rf433_hal.h)(0x69C2716B) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (..\Driver_RF433\Src\rf433_hal.c)(0x69F98677)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\rf433_hal.o --omf_browse project\rf433_hal.crf --depend project\rf433_hal.d) +I (../Driver_RF433/Inc/rf433_hal.h)(0x69F98677) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) -I (../Core/Inc/main.h)(0x69C35425) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) -I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) -I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) -I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) -I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -I (../Core/Inc/gpio.h)(0x665D64E1) -I (../Core/Inc/usart.h)(0x69C35423) -F (..\Driver_RF433\Inc\rf433.h)(0x69C222AA)() -F (..\Driver_RF433\Inc\rf433_config.h)(0x69C62F40)() -F (..\Driver_RF433\Inc\rf433_hal.h)(0x69C2716B)() +I (../Core/Inc/gpio.h)(0x69F98677) +I (../Core/Inc/usart.h)(0x69F98677) +F (..\Driver_RF433\Inc\rf433.h)(0x69F98677)() +F (..\Driver_RF433\Inc\rf433_config.h)(0x69F98677)() +F (..\Driver_RF433\Inc\rf433_hal.h)(0x69F98677)() +F (..\User\wiz_platform\wiz_platform.c)(0x69F98681)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\wiz_platform.o --omf_browse project\wiz_platform.crf --depend project\wiz_platform.d) +I (..\User\wiz_platform\wiz_platform.h)(0x69F98681) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h)(0x69F98681) +I (..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h)(0x69F98681) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) +I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) +I (..\User\wiz_interface\wiz_interface.h)(0x69F98681) +I (../Driver_RF433/../Core/Inc/tim.h)(0x69F98677) +F (..\User\wiz_interface\wiz_interface.c)(0x69F98681)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\wiz_interface.o --omf_browse project\wiz_interface.crf --depend project\wiz_interface.d) +I (..\User\wiz_interface\wiz_interface.h)(0x69F98681) +I (..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h)(0x69F98681) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h)(0x69F98681) +I (..\User\wiz_platform\wiz_platform.h)(0x69F98681) +I (..\User\ioLibrary_Driver\Internet\DHCP\dhcp.h)(0x69F98681) +I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) +F (..\User\user_main\user_main.c)(0x69F98681)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\user_main.o --omf_browse project\user_main.crf --depend project\user_main.d) +I (..\User\user_main\user_main.h)(0x69F98681) +I (..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h)(0x69F98681) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h)(0x69F98681) +I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) +I (..\User\wiz_interface\wiz_interface.h)(0x69F98681) +I (..\User\Loopback\loopback.h)(0x69F98680) +F (..\User\Loopback\loopback.c)(0x69F98680)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\loopback.o --omf_browse project\loopback.crf --depend project\loopback.d) +I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) +I (..\User\Loopback\loopback.h)(0x69F98680) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (..\User\ioLibrary_Driver\Ethernet\socket.h)(0x69F98681) +I (..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h)(0x69F98681) +I (..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h)(0x69F98681) +I (../Core/Inc/multi_uart_router.h)(0x69F98677) +I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) +I (../Core/Inc/usart.h)(0x69F98677) +I (../Core/Inc/main.h)(0x69FAA5CB) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69F98678) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69F98677) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69F98678) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69F98678) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69F98678) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69F98678) +I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h)(0x69F98678) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69F98678) +F (..\User\ioLibrary_Driver\Application\multicast\multicast.c)(0x69F98680)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\multicast.o --omf_browse project\multicast.crf --depend project\multicast.d) +I (..\User\ioLibrary_Driver\Application\multicast\multicast.h)(0x69F98680) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) +I (..\User\ioLibrary_Driver\Ethernet\socket.h)(0x69F98681) +I (..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h)(0x69F98681) +I (..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h)(0x69F98681) +F (..\User\ioLibrary_Driver\Ethernet\W5500\w5500.c)(0x69F98681)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\w5500.o --omf_browse project\w5500.crf --depend project\w5500.d) +I (..\User\ioLibrary_Driver\Ethernet\W5500\w5500.h)(0x69F98681) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h)(0x69F98681) +I (..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h)(0x69F98681) +F (..\User\ioLibrary_Driver\Ethernet\socket.c)(0x69F98681)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\socket.o --omf_browse project\socket.crf --depend project\socket.d) +I (..\User\ioLibrary_Driver\Ethernet\socket.h)(0x69F98681) +I (..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h)(0x69F98681) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h)(0x69F98681) +F (..\User\ioLibrary_Driver\Ethernet\wizchip_conf.c)(0x69F98681)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\wizchip_conf.o --omf_browse project\wizchip_conf.crf --depend project\wizchip_conf.d) +I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) +I (..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h)(0x69F98681) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h)(0x69F98681) +F (..\User\ioLibrary_Driver\Internet\DHCP\dhcp.c)(0x69F98681)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I ..\User\wiz_platform -I ..\User\wiz_interface -I ..\User\user_main -I ..\User\Loopback -I ..\User\ioLibrary_Driver\Internet\DHCP -I ..\User\ioLibrary_Driver\Ethernet\W5500 -I ..\User\ioLibrary_Driver\Ethernet -I ..\User\ioLibrary_Driver\Application\loopback -I ..\User\ioLibrary_Driver\Application\multicast -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\dhcp.o --omf_browse project\dhcp.crf --depend project\dhcp.d) +I (..\User\ioLibrary_Driver\Ethernet\socket.h)(0x69F98681) +I (..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h)(0x69F98681) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h)(0x69F98681) +I (..\User\ioLibrary_Driver\Internet\DHCP\dhcp.h)(0x69F98681) diff --git a/MDK-ARM/project/relay_control.crf b/MDK-ARM/project/relay_control.crf index 52a668f..823183d 100644 Binary files a/MDK-ARM/project/relay_control.crf and b/MDK-ARM/project/relay_control.crf differ diff --git a/MDK-ARM/project/relay_control.d b/MDK-ARM/project/relay_control.d index 676ca1c..db10fab 100644 --- a/MDK-ARM/project/relay_control.d +++ b/MDK-ARM/project/relay_control.d @@ -30,5 +30,7 @@ project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h project\relay_control.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h diff --git a/MDK-ARM/project/relay_control.o b/MDK-ARM/project/relay_control.o index e4b188c..b396017 100644 Binary files a/MDK-ARM/project/relay_control.o and b/MDK-ARM/project/relay_control.o differ diff --git a/MDK-ARM/project/rf433.crf b/MDK-ARM/project/rf433.crf index 7564b6e..142e0f9 100644 Binary files a/MDK-ARM/project/rf433.crf and b/MDK-ARM/project/rf433.crf differ diff --git a/MDK-ARM/project/rf433.d b/MDK-ARM/project/rf433.d index df9bfc5..f32eb84 100644 --- a/MDK-ARM/project/rf433.d +++ b/MDK-ARM/project/rf433.d @@ -31,4 +31,6 @@ project\rf433.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h project\rf433.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\rf433.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\rf433.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\rf433.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\rf433.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\rf433.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/rf433.o b/MDK-ARM/project/rf433.o index ccbfaf2..a32f6b4 100644 Binary files a/MDK-ARM/project/rf433.o and b/MDK-ARM/project/rf433.o differ diff --git a/MDK-ARM/project/rf433_hal.crf b/MDK-ARM/project/rf433_hal.crf index f1823d6..6ac7eba 100644 Binary files a/MDK-ARM/project/rf433_hal.crf and b/MDK-ARM/project/rf433_hal.crf differ diff --git a/MDK-ARM/project/rf433_hal.d b/MDK-ARM/project/rf433_hal.d index ecabd25..45279d1 100644 --- a/MDK-ARM/project/rf433_hal.d +++ b/MDK-ARM/project/rf433_hal.d @@ -28,6 +28,8 @@ project\rf433_hal.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h project\rf433_hal.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\rf433_hal.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\rf433_hal.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\rf433_hal.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\rf433_hal.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\rf433_hal.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h project\rf433_hal.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h project\rf433_hal.o: ../Core/Inc/gpio.h diff --git a/MDK-ARM/project/rf433_hal.o b/MDK-ARM/project/rf433_hal.o index 57c5500..35c9a11 100644 Binary files a/MDK-ARM/project/rf433_hal.o and b/MDK-ARM/project/rf433_hal.o differ diff --git a/MDK-ARM/project/rf433_rx_app.crf b/MDK-ARM/project/rf433_rx_app.crf index 35757b7..9e9f9b2 100644 Binary files a/MDK-ARM/project/rf433_rx_app.crf and b/MDK-ARM/project/rf433_rx_app.crf differ diff --git a/MDK-ARM/project/rf433_rx_app.d b/MDK-ARM/project/rf433_rx_app.d index 2eb4dd5..5872ea5 100644 --- a/MDK-ARM/project/rf433_rx_app.d +++ b/MDK-ARM/project/rf433_rx_app.d @@ -31,6 +31,8 @@ project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash. project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h project\rf433_rx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h project\rf433_rx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h diff --git a/MDK-ARM/project/rf433_rx_app.o b/MDK-ARM/project/rf433_rx_app.o index 0b26a3d..cbee05e 100644 Binary files a/MDK-ARM/project/rf433_rx_app.o and b/MDK-ARM/project/rf433_rx_app.o differ diff --git a/MDK-ARM/project/rf433_tx_app.crf b/MDK-ARM/project/rf433_tx_app.crf index fd5a462..204dc67 100644 Binary files a/MDK-ARM/project/rf433_tx_app.crf and b/MDK-ARM/project/rf433_tx_app.crf differ diff --git a/MDK-ARM/project/rf433_tx_app.d b/MDK-ARM/project/rf433_tx_app.d index cf1cf8f..911a29b 100644 --- a/MDK-ARM/project/rf433_tx_app.d +++ b/MDK-ARM/project/rf433_tx_app.d @@ -31,6 +31,8 @@ project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash. project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h project\rf433_tx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h project\rf433_tx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h diff --git a/MDK-ARM/project/rf433_tx_app.o b/MDK-ARM/project/rf433_tx_app.o index 487f32f..146646f 100644 Binary files a/MDK-ARM/project/rf433_tx_app.o and b/MDK-ARM/project/rf433_tx_app.o differ diff --git a/MDK-ARM/project/socket.crf b/MDK-ARM/project/socket.crf new file mode 100644 index 0000000..618bd80 Binary files /dev/null and b/MDK-ARM/project/socket.crf differ diff --git a/MDK-ARM/project/socket.d b/MDK-ARM/project/socket.d new file mode 100644 index 0000000..71d7759 --- /dev/null +++ b/MDK-ARM/project/socket.d @@ -0,0 +1,6 @@ +project\socket.o: ..\User\ioLibrary_Driver\Ethernet\socket.c +project\socket.o: ..\User\ioLibrary_Driver\Ethernet\socket.h +project\socket.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h +project\socket.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\socket.o: ..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h +project\socket.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h diff --git a/MDK-ARM/project/socket.o b/MDK-ARM/project/socket.o new file mode 100644 index 0000000..f3ca218 Binary files /dev/null and b/MDK-ARM/project/socket.o differ diff --git a/MDK-ARM/project/socket_1.crf b/MDK-ARM/project/socket_1.crf new file mode 100644 index 0000000..9e97fd2 Binary files /dev/null and b/MDK-ARM/project/socket_1.crf differ diff --git a/MDK-ARM/project/spi.crf b/MDK-ARM/project/spi.crf index 4b28b19..adaa245 100644 Binary files a/MDK-ARM/project/spi.crf and b/MDK-ARM/project/spi.crf differ diff --git a/MDK-ARM/project/spi.d b/MDK-ARM/project/spi.d index 32a6908..4451a3d 100644 --- a/MDK-ARM/project/spi.d +++ b/MDK-ARM/project/spi.d @@ -27,6 +27,8 @@ project\spi.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h project\spi.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\spi.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\spi.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\spi.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\spi.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\spi.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h project\spi.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h project\spi.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h diff --git a/MDK-ARM/project/spi.o b/MDK-ARM/project/spi.o index 671a9aa..1263b6c 100644 Binary files a/MDK-ARM/project/spi.o and b/MDK-ARM/project/spi.o differ diff --git a/MDK-ARM/project/startup_stm32f103xb.o b/MDK-ARM/project/startup_stm32f103xb.o index 8d5bb14..226a42d 100644 Binary files a/MDK-ARM/project/startup_stm32f103xb.o and b/MDK-ARM/project/startup_stm32f103xb.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal.crf b/MDK-ARM/project/stm32f1xx_hal.crf index 6e4da77..eb8707a 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal.crf and b/MDK-ARM/project/stm32f1xx_hal.crf differ diff --git a/MDK-ARM/project/stm32f1xx_hal.d b/MDK-ARM/project/stm32f1xx_hal.d index c549ddc..0f9d36d 100644 --- a/MDK-ARM/project/stm32f1xx_hal.d +++ b/MDK-ARM/project/stm32f1xx_hal.d @@ -25,4 +25,6 @@ project\stm32f1xx_hal.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash project\stm32f1xx_hal.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\stm32f1xx_hal.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\stm32f1xx_hal.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\stm32f1xx_hal.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\stm32f1xx_hal.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\stm32f1xx_hal.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/stm32f1xx_hal.o b/MDK-ARM/project/stm32f1xx_hal.o index 3a4d7e2..9182f3d 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal.o and b/MDK-ARM/project/stm32f1xx_hal.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_cortex.crf b/MDK-ARM/project/stm32f1xx_hal_cortex.crf index 88e0c88..a746763 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_cortex.crf and b/MDK-ARM/project/stm32f1xx_hal_cortex.crf differ diff --git a/MDK-ARM/project/stm32f1xx_hal_cortex.d b/MDK-ARM/project/stm32f1xx_hal_cortex.d index c59702b..e74bd6a 100644 --- a/MDK-ARM/project/stm32f1xx_hal_cortex.d +++ b/MDK-ARM/project/stm32f1xx_hal_cortex.d @@ -25,4 +25,6 @@ project\stm32f1xx_hal_cortex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ha project\stm32f1xx_hal_cortex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\stm32f1xx_hal_cortex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\stm32f1xx_hal_cortex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\stm32f1xx_hal_cortex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\stm32f1xx_hal_cortex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\stm32f1xx_hal_cortex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/stm32f1xx_hal_cortex.o b/MDK-ARM/project/stm32f1xx_hal_cortex.o index 532cb15..d73962c 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_cortex.o and b/MDK-ARM/project/stm32f1xx_hal_cortex.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_dma.crf b/MDK-ARM/project/stm32f1xx_hal_dma.crf index 01df2c9..6dc64eb 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_dma.crf and b/MDK-ARM/project/stm32f1xx_hal_dma.crf differ diff --git a/MDK-ARM/project/stm32f1xx_hal_dma.d b/MDK-ARM/project/stm32f1xx_hal_dma.d index 8694c6a..80e16f7 100644 --- a/MDK-ARM/project/stm32f1xx_hal_dma.d +++ b/MDK-ARM/project/stm32f1xx_hal_dma.d @@ -25,4 +25,6 @@ project\stm32f1xx_hal_dma.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_f project\stm32f1xx_hal_dma.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\stm32f1xx_hal_dma.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\stm32f1xx_hal_dma.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\stm32f1xx_hal_dma.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\stm32f1xx_hal_dma.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\stm32f1xx_hal_dma.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/stm32f1xx_hal_dma.o b/MDK-ARM/project/stm32f1xx_hal_dma.o index 3ee1793..3795ae7 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_dma.o and b/MDK-ARM/project/stm32f1xx_hal_dma.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_exti.crf b/MDK-ARM/project/stm32f1xx_hal_exti.crf index 3005c41..60bbcbf 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_exti.crf and b/MDK-ARM/project/stm32f1xx_hal_exti.crf differ diff --git a/MDK-ARM/project/stm32f1xx_hal_exti.d b/MDK-ARM/project/stm32f1xx_hal_exti.d index 8b4a47f..7c89420 100644 --- a/MDK-ARM/project/stm32f1xx_hal_exti.d +++ b/MDK-ARM/project/stm32f1xx_hal_exti.d @@ -25,4 +25,6 @@ project\stm32f1xx_hal_exti.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_ project\stm32f1xx_hal_exti.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\stm32f1xx_hal_exti.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\stm32f1xx_hal_exti.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\stm32f1xx_hal_exti.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\stm32f1xx_hal_exti.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\stm32f1xx_hal_exti.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/stm32f1xx_hal_exti.o b/MDK-ARM/project/stm32f1xx_hal_exti.o index a03c4f6..39420fe 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_exti.o and b/MDK-ARM/project/stm32f1xx_hal_exti.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_flash.crf b/MDK-ARM/project/stm32f1xx_hal_flash.crf index 71fb057..b876d48 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_flash.crf and b/MDK-ARM/project/stm32f1xx_hal_flash.crf differ diff --git a/MDK-ARM/project/stm32f1xx_hal_flash.d b/MDK-ARM/project/stm32f1xx_hal_flash.d index 70d2ace..d0f3f66 100644 --- a/MDK-ARM/project/stm32f1xx_hal_flash.d +++ b/MDK-ARM/project/stm32f1xx_hal_flash.d @@ -25,4 +25,6 @@ project\stm32f1xx_hal_flash.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal project\stm32f1xx_hal_flash.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\stm32f1xx_hal_flash.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\stm32f1xx_hal_flash.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\stm32f1xx_hal_flash.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\stm32f1xx_hal_flash.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\stm32f1xx_hal_flash.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/stm32f1xx_hal_flash.o b/MDK-ARM/project/stm32f1xx_hal_flash.o index 983ab91..9211a91 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_flash.o and b/MDK-ARM/project/stm32f1xx_hal_flash.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_flash_ex.crf b/MDK-ARM/project/stm32f1xx_hal_flash_ex.crf index ad53243..718c19a 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_flash_ex.crf and b/MDK-ARM/project/stm32f1xx_hal_flash_ex.crf differ diff --git a/MDK-ARM/project/stm32f1xx_hal_flash_ex.d b/MDK-ARM/project/stm32f1xx_hal_flash_ex.d index b3a40a7..6bdc88f 100644 --- a/MDK-ARM/project/stm32f1xx_hal_flash_ex.d +++ b/MDK-ARM/project/stm32f1xx_hal_flash_ex.d @@ -25,4 +25,6 @@ project\stm32f1xx_hal_flash_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ project\stm32f1xx_hal_flash_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\stm32f1xx_hal_flash_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\stm32f1xx_hal_flash_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\stm32f1xx_hal_flash_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\stm32f1xx_hal_flash_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\stm32f1xx_hal_flash_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/stm32f1xx_hal_flash_ex.o b/MDK-ARM/project/stm32f1xx_hal_flash_ex.o index 0fd340e..2097423 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_flash_ex.o and b/MDK-ARM/project/stm32f1xx_hal_flash_ex.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_gpio.crf b/MDK-ARM/project/stm32f1xx_hal_gpio.crf index c35017d..cb79097 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_gpio.crf and b/MDK-ARM/project/stm32f1xx_hal_gpio.crf differ diff --git a/MDK-ARM/project/stm32f1xx_hal_gpio.d b/MDK-ARM/project/stm32f1xx_hal_gpio.d index 5c9638e..ec1933d 100644 --- a/MDK-ARM/project/stm32f1xx_hal_gpio.d +++ b/MDK-ARM/project/stm32f1xx_hal_gpio.d @@ -25,4 +25,6 @@ project\stm32f1xx_hal_gpio.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_ project\stm32f1xx_hal_gpio.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\stm32f1xx_hal_gpio.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\stm32f1xx_hal_gpio.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\stm32f1xx_hal_gpio.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\stm32f1xx_hal_gpio.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\stm32f1xx_hal_gpio.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/stm32f1xx_hal_gpio.o b/MDK-ARM/project/stm32f1xx_hal_gpio.o index b37f242..431953d 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_gpio.o and b/MDK-ARM/project/stm32f1xx_hal_gpio.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_gpio_ex.crf b/MDK-ARM/project/stm32f1xx_hal_gpio_ex.crf index 67803eb..9b6fb41 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_gpio_ex.crf and b/MDK-ARM/project/stm32f1xx_hal_gpio_ex.crf differ diff --git a/MDK-ARM/project/stm32f1xx_hal_gpio_ex.d b/MDK-ARM/project/stm32f1xx_hal_gpio_ex.d index b7b15ff..32d9555 100644 --- a/MDK-ARM/project/stm32f1xx_hal_gpio_ex.d +++ b/MDK-ARM/project/stm32f1xx_hal_gpio_ex.d @@ -25,4 +25,6 @@ project\stm32f1xx_hal_gpio_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_h project\stm32f1xx_hal_gpio_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\stm32f1xx_hal_gpio_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\stm32f1xx_hal_gpio_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\stm32f1xx_hal_gpio_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\stm32f1xx_hal_gpio_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\stm32f1xx_hal_gpio_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/stm32f1xx_hal_gpio_ex.o b/MDK-ARM/project/stm32f1xx_hal_gpio_ex.o index 230ab82..7b59dd2 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_gpio_ex.o and b/MDK-ARM/project/stm32f1xx_hal_gpio_ex.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_msp.crf b/MDK-ARM/project/stm32f1xx_hal_msp.crf index fa4ad6d..8131ec5 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_msp.crf and b/MDK-ARM/project/stm32f1xx_hal_msp.crf differ diff --git a/MDK-ARM/project/stm32f1xx_hal_msp.d b/MDK-ARM/project/stm32f1xx_hal_msp.d index b014d9d..23153a9 100644 --- a/MDK-ARM/project/stm32f1xx_hal_msp.d +++ b/MDK-ARM/project/stm32f1xx_hal_msp.d @@ -26,6 +26,8 @@ project\stm32f1xx_hal_msp.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_f project\stm32f1xx_hal_msp.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\stm32f1xx_hal_msp.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\stm32f1xx_hal_msp.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\stm32f1xx_hal_msp.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\stm32f1xx_hal_msp.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\stm32f1xx_hal_msp.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h project\stm32f1xx_hal_msp.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h project\stm32f1xx_hal_msp.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h diff --git a/MDK-ARM/project/stm32f1xx_hal_msp.o b/MDK-ARM/project/stm32f1xx_hal_msp.o index 319f850..ac89f67 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_msp.o and b/MDK-ARM/project/stm32f1xx_hal_msp.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_pwr.crf b/MDK-ARM/project/stm32f1xx_hal_pwr.crf index 2edb0e3..b9e284d 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_pwr.crf and b/MDK-ARM/project/stm32f1xx_hal_pwr.crf differ diff --git a/MDK-ARM/project/stm32f1xx_hal_pwr.d b/MDK-ARM/project/stm32f1xx_hal_pwr.d index ec1c8e9..ab4dd34 100644 --- a/MDK-ARM/project/stm32f1xx_hal_pwr.d +++ b/MDK-ARM/project/stm32f1xx_hal_pwr.d @@ -25,4 +25,6 @@ project\stm32f1xx_hal_pwr.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_f project\stm32f1xx_hal_pwr.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\stm32f1xx_hal_pwr.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\stm32f1xx_hal_pwr.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\stm32f1xx_hal_pwr.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\stm32f1xx_hal_pwr.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\stm32f1xx_hal_pwr.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/stm32f1xx_hal_pwr.o b/MDK-ARM/project/stm32f1xx_hal_pwr.o index 33ab0b1..68735fb 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_pwr.o and b/MDK-ARM/project/stm32f1xx_hal_pwr.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_rcc.crf b/MDK-ARM/project/stm32f1xx_hal_rcc.crf index 0d207e4..3a2bb39 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_rcc.crf and b/MDK-ARM/project/stm32f1xx_hal_rcc.crf differ diff --git a/MDK-ARM/project/stm32f1xx_hal_rcc.d b/MDK-ARM/project/stm32f1xx_hal_rcc.d index 59c0f03..f387430 100644 --- a/MDK-ARM/project/stm32f1xx_hal_rcc.d +++ b/MDK-ARM/project/stm32f1xx_hal_rcc.d @@ -25,4 +25,6 @@ project\stm32f1xx_hal_rcc.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_f project\stm32f1xx_hal_rcc.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\stm32f1xx_hal_rcc.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\stm32f1xx_hal_rcc.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\stm32f1xx_hal_rcc.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\stm32f1xx_hal_rcc.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\stm32f1xx_hal_rcc.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/stm32f1xx_hal_rcc.o b/MDK-ARM/project/stm32f1xx_hal_rcc.o index 978f7b2..cf14d5c 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_rcc.o and b/MDK-ARM/project/stm32f1xx_hal_rcc.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_rcc_ex.crf b/MDK-ARM/project/stm32f1xx_hal_rcc_ex.crf index fc5bb60..5291194 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_rcc_ex.crf and b/MDK-ARM/project/stm32f1xx_hal_rcc_ex.crf differ diff --git a/MDK-ARM/project/stm32f1xx_hal_rcc_ex.d b/MDK-ARM/project/stm32f1xx_hal_rcc_ex.d index 36149b0..1fa85cb 100644 --- a/MDK-ARM/project/stm32f1xx_hal_rcc_ex.d +++ b/MDK-ARM/project/stm32f1xx_hal_rcc_ex.d @@ -25,4 +25,6 @@ project\stm32f1xx_hal_rcc_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ha project\stm32f1xx_hal_rcc_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\stm32f1xx_hal_rcc_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\stm32f1xx_hal_rcc_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\stm32f1xx_hal_rcc_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\stm32f1xx_hal_rcc_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\stm32f1xx_hal_rcc_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/stm32f1xx_hal_rcc_ex.o b/MDK-ARM/project/stm32f1xx_hal_rcc_ex.o index eff0fb8..d6def08 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_rcc_ex.o and b/MDK-ARM/project/stm32f1xx_hal_rcc_ex.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_spi.crf b/MDK-ARM/project/stm32f1xx_hal_spi.crf index 8ef9810..c5ceb3e 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_spi.crf and b/MDK-ARM/project/stm32f1xx_hal_spi.crf differ diff --git a/MDK-ARM/project/stm32f1xx_hal_spi.d b/MDK-ARM/project/stm32f1xx_hal_spi.d index fc4df78..2f91459 100644 --- a/MDK-ARM/project/stm32f1xx_hal_spi.d +++ b/MDK-ARM/project/stm32f1xx_hal_spi.d @@ -25,4 +25,6 @@ project\stm32f1xx_hal_spi.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_f project\stm32f1xx_hal_spi.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\stm32f1xx_hal_spi.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\stm32f1xx_hal_spi.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\stm32f1xx_hal_spi.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\stm32f1xx_hal_spi.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\stm32f1xx_hal_spi.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/stm32f1xx_hal_spi.o b/MDK-ARM/project/stm32f1xx_hal_spi.o index 28e9392..18b81b3 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_spi.o and b/MDK-ARM/project/stm32f1xx_hal_spi.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_tim.crf b/MDK-ARM/project/stm32f1xx_hal_tim.crf index caefc96..62cf697 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_tim.crf and b/MDK-ARM/project/stm32f1xx_hal_tim.crf differ diff --git a/MDK-ARM/project/stm32f1xx_hal_tim.d b/MDK-ARM/project/stm32f1xx_hal_tim.d index 90ddcb2..4cc5ecc 100644 --- a/MDK-ARM/project/stm32f1xx_hal_tim.d +++ b/MDK-ARM/project/stm32f1xx_hal_tim.d @@ -25,4 +25,6 @@ project\stm32f1xx_hal_tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_f project\stm32f1xx_hal_tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\stm32f1xx_hal_tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\stm32f1xx_hal_tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\stm32f1xx_hal_tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\stm32f1xx_hal_tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\stm32f1xx_hal_tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/stm32f1xx_hal_tim.o b/MDK-ARM/project/stm32f1xx_hal_tim.o index 5be8d4c..e8b1da3 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_tim.o and b/MDK-ARM/project/stm32f1xx_hal_tim.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_tim_ex.crf b/MDK-ARM/project/stm32f1xx_hal_tim_ex.crf index e1a92fa..fbfdeb4 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_tim_ex.crf and b/MDK-ARM/project/stm32f1xx_hal_tim_ex.crf differ diff --git a/MDK-ARM/project/stm32f1xx_hal_tim_ex.d b/MDK-ARM/project/stm32f1xx_hal_tim_ex.d index 91827ea..6b54558 100644 --- a/MDK-ARM/project/stm32f1xx_hal_tim_ex.d +++ b/MDK-ARM/project/stm32f1xx_hal_tim_ex.d @@ -25,4 +25,6 @@ project\stm32f1xx_hal_tim_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ha project\stm32f1xx_hal_tim_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\stm32f1xx_hal_tim_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\stm32f1xx_hal_tim_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\stm32f1xx_hal_tim_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\stm32f1xx_hal_tim_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\stm32f1xx_hal_tim_ex.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/stm32f1xx_hal_tim_ex.o b/MDK-ARM/project/stm32f1xx_hal_tim_ex.o index f6c8529..53bedda 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_tim_ex.o and b/MDK-ARM/project/stm32f1xx_hal_tim_ex.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_uart.crf b/MDK-ARM/project/stm32f1xx_hal_uart.crf index 54cd5a4..80d87fd 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_uart.crf and b/MDK-ARM/project/stm32f1xx_hal_uart.crf differ diff --git a/MDK-ARM/project/stm32f1xx_hal_uart.d b/MDK-ARM/project/stm32f1xx_hal_uart.d index 89c6aa3..4c029d2 100644 --- a/MDK-ARM/project/stm32f1xx_hal_uart.d +++ b/MDK-ARM/project/stm32f1xx_hal_uart.d @@ -25,4 +25,6 @@ project\stm32f1xx_hal_uart.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_ project\stm32f1xx_hal_uart.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\stm32f1xx_hal_uart.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\stm32f1xx_hal_uart.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\stm32f1xx_hal_uart.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\stm32f1xx_hal_uart.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\stm32f1xx_hal_uart.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/stm32f1xx_hal_uart.o b/MDK-ARM/project/stm32f1xx_hal_uart.o index 9ad3b23..2c1eb32 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_uart.o and b/MDK-ARM/project/stm32f1xx_hal_uart.o differ diff --git a/MDK-ARM/project/stm32f1xx_it.crf b/MDK-ARM/project/stm32f1xx_it.crf index a9f1ab6..47dfdf6 100644 Binary files a/MDK-ARM/project/stm32f1xx_it.crf and b/MDK-ARM/project/stm32f1xx_it.crf differ diff --git a/MDK-ARM/project/stm32f1xx_it.d b/MDK-ARM/project/stm32f1xx_it.d index 21dab47..cbf031b 100644 --- a/MDK-ARM/project/stm32f1xx_it.d +++ b/MDK-ARM/project/stm32f1xx_it.d @@ -26,6 +26,8 @@ project\stm32f1xx_it.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash. project\stm32f1xx_it.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\stm32f1xx_it.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\stm32f1xx_it.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\stm32f1xx_it.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\stm32f1xx_it.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\stm32f1xx_it.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h project\stm32f1xx_it.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h project\stm32f1xx_it.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h diff --git a/MDK-ARM/project/stm32f1xx_it.o b/MDK-ARM/project/stm32f1xx_it.o index 687a169..696518b 100644 Binary files a/MDK-ARM/project/stm32f1xx_it.o and b/MDK-ARM/project/stm32f1xx_it.o differ diff --git a/MDK-ARM/project/system_stm32f1xx.crf b/MDK-ARM/project/system_stm32f1xx.crf index 99f9d99..0fc03d7 100644 Binary files a/MDK-ARM/project/system_stm32f1xx.crf and b/MDK-ARM/project/system_stm32f1xx.crf differ diff --git a/MDK-ARM/project/system_stm32f1xx.d b/MDK-ARM/project/system_stm32f1xx.d index 570e33a..4081fbc 100644 --- a/MDK-ARM/project/system_stm32f1xx.d +++ b/MDK-ARM/project/system_stm32f1xx.d @@ -25,4 +25,6 @@ project\system_stm32f1xx.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_fl project\system_stm32f1xx.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\system_stm32f1xx.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\system_stm32f1xx.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\system_stm32f1xx.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\system_stm32f1xx.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\system_stm32f1xx.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MDK-ARM/project/system_stm32f1xx.o b/MDK-ARM/project/system_stm32f1xx.o index e880a35..89887c1 100644 Binary files a/MDK-ARM/project/system_stm32f1xx.o and b/MDK-ARM/project/system_stm32f1xx.o differ diff --git a/MDK-ARM/project/systick.crf b/MDK-ARM/project/systick.crf index 3c58f64..e0267ac 100644 Binary files a/MDK-ARM/project/systick.crf and b/MDK-ARM/project/systick.crf differ diff --git a/MDK-ARM/project/systick.d b/MDK-ARM/project/systick.d index c8164a7..3a41cf7 100644 --- a/MDK-ARM/project/systick.d +++ b/MDK-ARM/project/systick.d @@ -26,6 +26,8 @@ project\systick.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h project\systick.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\systick.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\systick.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\systick.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\systick.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\systick.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h project\systick.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h project\systick.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h diff --git a/MDK-ARM/project/systick.o b/MDK-ARM/project/systick.o index 6b5119c..99f8112 100644 Binary files a/MDK-ARM/project/systick.o and b/MDK-ARM/project/systick.o differ diff --git a/MDK-ARM/project/tim.crf b/MDK-ARM/project/tim.crf index e40242c..a9444e4 100644 Binary files a/MDK-ARM/project/tim.crf and b/MDK-ARM/project/tim.crf differ diff --git a/MDK-ARM/project/tim.d b/MDK-ARM/project/tim.d index 208c2d4..c35d9cc 100644 --- a/MDK-ARM/project/tim.d +++ b/MDK-ARM/project/tim.d @@ -1,4 +1,4 @@ -project\tim.o: ../Core/Src/tim.c +project\tim.o: ..\Core\Src\tim.c project\tim.o: ../Core/Inc/tim.h project\tim.o: ../Core/Inc/main.h project\tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h @@ -25,13 +25,10 @@ project\tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h project\tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h project\tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h project\tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h -project\tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h project\tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h +project\tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h project\tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h project\tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h -project\tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h -project\tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h -project\tim.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h project\tim.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h project\tim.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h diff --git a/MDK-ARM/project/tim.o b/MDK-ARM/project/tim.o index c20f840..3ce49ed 100644 Binary files a/MDK-ARM/project/tim.o and b/MDK-ARM/project/tim.o differ diff --git a/MDK-ARM/project/uart2_print.crf b/MDK-ARM/project/uart2_print.crf index b3dc70d..4430ede 100644 Binary files a/MDK-ARM/project/uart2_print.crf and b/MDK-ARM/project/uart2_print.crf differ diff --git a/MDK-ARM/project/uart2_print.d b/MDK-ARM/project/uart2_print.d index 97e86ed..1e5eb0a 100644 --- a/MDK-ARM/project/uart2_print.d +++ b/MDK-ARM/project/uart2_print.d @@ -30,6 +30,9 @@ project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h project\uart2_print.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h project\uart2_print.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h +project\uart2_print.o: ../Core/Inc/multi_uart_router.h diff --git a/MDK-ARM/project/uart2_print.o b/MDK-ARM/project/uart2_print.o index 3bca33e..0beebbc 100644 Binary files a/MDK-ARM/project/uart2_print.o and b/MDK-ARM/project/uart2_print.o differ diff --git a/MDK-ARM/project/uart3_passthrough.crf b/MDK-ARM/project/uart3_passthrough.crf index c675b33..e4767e8 100644 Binary files a/MDK-ARM/project/uart3_passthrough.crf and b/MDK-ARM/project/uart3_passthrough.crf differ diff --git a/MDK-ARM/project/uart3_passthrough.d b/MDK-ARM/project/uart3_passthrough.d index 952d20b..de20fa7 100644 --- a/MDK-ARM/project/uart3_passthrough.d +++ b/MDK-ARM/project/uart3_passthrough.d @@ -31,6 +31,8 @@ project\uart3_passthrough.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_f project\uart3_passthrough.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\uart3_passthrough.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\uart3_passthrough.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\uart3_passthrough.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\uart3_passthrough.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\uart3_passthrough.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h project\uart3_passthrough.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h project\uart3_passthrough.o: ../Core/Inc/uart2_print.h diff --git a/MDK-ARM/project/uart3_passthrough.o b/MDK-ARM/project/uart3_passthrough.o index 7fe68f1..c425311 100644 Binary files a/MDK-ARM/project/uart3_passthrough.o and b/MDK-ARM/project/uart3_passthrough.o differ diff --git a/MDK-ARM/project/uart3_protocol_discriminator.crf b/MDK-ARM/project/uart3_protocol_discriminator.crf index 5f39eba..f637c4d 100644 Binary files a/MDK-ARM/project/uart3_protocol_discriminator.crf and b/MDK-ARM/project/uart3_protocol_discriminator.crf differ diff --git a/MDK-ARM/project/uart3_protocol_discriminator.o b/MDK-ARM/project/uart3_protocol_discriminator.o index cbee8e3..01af6ad 100644 Binary files a/MDK-ARM/project/uart3_protocol_discriminator.o and b/MDK-ARM/project/uart3_protocol_discriminator.o differ diff --git a/MDK-ARM/project/usart.crf b/MDK-ARM/project/usart.crf index 3b20cb8..68575dc 100644 Binary files a/MDK-ARM/project/usart.crf and b/MDK-ARM/project/usart.crf differ diff --git a/MDK-ARM/project/usart.d b/MDK-ARM/project/usart.d index 3029904..210da12 100644 --- a/MDK-ARM/project/usart.d +++ b/MDK-ARM/project/usart.d @@ -27,6 +27,8 @@ project\usart.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h project\usart.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h project\usart.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h project\usart.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\usart.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\usart.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h project\usart.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h project\usart.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h project\usart.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h diff --git a/MDK-ARM/project/usart.o b/MDK-ARM/project/usart.o index 5899d34..7929208 100644 Binary files a/MDK-ARM/project/usart.o and b/MDK-ARM/project/usart.o differ diff --git a/MDK-ARM/project/user_main.crf b/MDK-ARM/project/user_main.crf new file mode 100644 index 0000000..d4e1518 Binary files /dev/null and b/MDK-ARM/project/user_main.crf differ diff --git a/MDK-ARM/project/user_main.d b/MDK-ARM/project/user_main.d new file mode 100644 index 0000000..26124da --- /dev/null +++ b/MDK-ARM/project/user_main.d @@ -0,0 +1,9 @@ +project\user_main.o: ..\User\user_main\user_main.c +project\user_main.o: ..\User\user_main\user_main.h +project\user_main.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h +project\user_main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\user_main.o: ..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h +project\user_main.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h +project\user_main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h +project\user_main.o: ..\User\wiz_interface\wiz_interface.h +project\user_main.o: ..\User\Loopback\loopback.h diff --git a/MDK-ARM/project/user_main.o b/MDK-ARM/project/user_main.o new file mode 100644 index 0000000..1871714 Binary files /dev/null and b/MDK-ARM/project/user_main.o differ diff --git a/MDK-ARM/project/w5500.crf b/MDK-ARM/project/w5500.crf new file mode 100644 index 0000000..3b78a25 Binary files /dev/null and b/MDK-ARM/project/w5500.crf differ diff --git a/MDK-ARM/project/w5500.d b/MDK-ARM/project/w5500.d new file mode 100644 index 0000000..49e8a7f --- /dev/null +++ b/MDK-ARM/project/w5500.d @@ -0,0 +1,5 @@ +project\w5500.o: ..\User\ioLibrary_Driver\Ethernet\W5500\w5500.c +project\w5500.o: ..\User\ioLibrary_Driver\Ethernet\W5500\w5500.h +project\w5500.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\w5500.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h +project\w5500.o: ..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h diff --git a/MDK-ARM/project/w5500.o b/MDK-ARM/project/w5500.o new file mode 100644 index 0000000..945848c Binary files /dev/null and b/MDK-ARM/project/w5500.o differ diff --git a/MDK-ARM/project/wiz_interface.crf b/MDK-ARM/project/wiz_interface.crf new file mode 100644 index 0000000..44c059e Binary files /dev/null and b/MDK-ARM/project/wiz_interface.crf differ diff --git a/MDK-ARM/project/wiz_interface.d b/MDK-ARM/project/wiz_interface.d new file mode 100644 index 0000000..18e41d2 --- /dev/null +++ b/MDK-ARM/project/wiz_interface.d @@ -0,0 +1,11 @@ +project\wiz_interface.o: ..\User\wiz_interface\wiz_interface.c +project\wiz_interface.o: ..\User\wiz_interface\wiz_interface.h +project\wiz_interface.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h +project\wiz_interface.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\wiz_interface.o: ..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h +project\wiz_interface.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h +project\wiz_interface.o: ..\User\wiz_platform\wiz_platform.h +project\wiz_interface.o: ..\User\ioLibrary_Driver\Internet\DHCP\dhcp.h +project\wiz_interface.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h +project\wiz_interface.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdlib.h +project\wiz_interface.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h diff --git a/MDK-ARM/project/wiz_interface.o b/MDK-ARM/project/wiz_interface.o new file mode 100644 index 0000000..489c33f Binary files /dev/null and b/MDK-ARM/project/wiz_interface.o differ diff --git a/MDK-ARM/project/wiz_platform.crf b/MDK-ARM/project/wiz_platform.crf new file mode 100644 index 0000000..1c3ec58 Binary files /dev/null and b/MDK-ARM/project/wiz_platform.crf differ diff --git a/MDK-ARM/project/wiz_platform.d b/MDK-ARM/project/wiz_platform.d new file mode 100644 index 0000000..b7560a6 --- /dev/null +++ b/MDK-ARM/project/wiz_platform.d @@ -0,0 +1,39 @@ +project\wiz_platform.o: ..\User\wiz_platform\wiz_platform.c +project\wiz_platform.o: ..\User\wiz_platform\wiz_platform.h +project\wiz_platform.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\wiz_platform.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h +project\wiz_platform.o: ..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h +project\wiz_platform.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h +project\wiz_platform.o: ../Core/Inc/main.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\wiz_platform.o: ../Core/Inc/stm32f1xx_hal_conf.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h +project\wiz_platform.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h +project\wiz_platform.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h +project\wiz_platform.o: ../Drivers/CMSIS/Include/core_cm3.h +project\wiz_platform.o: ../Drivers/CMSIS/Include/cmsis_version.h +project\wiz_platform.o: ../Drivers/CMSIS/Include/cmsis_compiler.h +project\wiz_platform.o: ../Drivers/CMSIS/Include/cmsis_armcc.h +project\wiz_platform.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h +project\wiz_platform.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h +project\wiz_platform.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h +project\wiz_platform.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h +project\wiz_platform.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h +project\wiz_platform.o: ..\User\wiz_interface\wiz_interface.h +project\wiz_platform.o: ../Driver_RF433/../Core/Inc/tim.h diff --git a/MDK-ARM/project/wiz_platform.o b/MDK-ARM/project/wiz_platform.o new file mode 100644 index 0000000..36f44bb Binary files /dev/null and b/MDK-ARM/project/wiz_platform.o differ diff --git a/MDK-ARM/project/wizchip_conf.crf b/MDK-ARM/project/wizchip_conf.crf new file mode 100644 index 0000000..3738107 Binary files /dev/null and b/MDK-ARM/project/wizchip_conf.crf differ diff --git a/MDK-ARM/project/wizchip_conf.d b/MDK-ARM/project/wizchip_conf.d new file mode 100644 index 0000000..6c32a56 --- /dev/null +++ b/MDK-ARM/project/wizchip_conf.d @@ -0,0 +1,6 @@ +project\wizchip_conf.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.c +project\wizchip_conf.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h +project\wizchip_conf.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h +project\wizchip_conf.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\wizchip_conf.o: ..\User\ioLibrary_Driver\Ethernet\W5500/w5500.h +project\wizchip_conf.o: ..\User\ioLibrary_Driver\Ethernet\wizchip_conf.h diff --git a/MDK-ARM/project/wizchip_conf.o b/MDK-ARM/project/wizchip_conf.o new file mode 100644 index 0000000..ad95b89 Binary files /dev/null and b/MDK-ARM/project/wizchip_conf.o differ diff --git a/READMEw5500.md b/READMEw5500.md new file mode 100644 index 0000000..4ac14e7 --- /dev/null +++ b/READMEw5500.md @@ -0,0 +1,114 @@ +# W5500_HAL_Examples + +#### 介绍 +​ W5500是一款高性价比的以太网芯片,其全球独一无二的全硬件TCPIP协议栈专利技术,解决了嵌入式以太网的接入问题,简单易用,安全稳定,是物联网设备的首选解决方案。WIZnet提供完善的配套资料以及实时周到的技术支持服务,极大地缩短产品开发周期,全方位保障客户项目按时落地。 + +​ 例程使用STM32F103VCT6+HAL库进行驱动,涵盖了大部分以太网协议在W5500上的使用。 + +#### 例程说明 +1.Network_install:标准驱动例程 + +2.DHCP:通过DHCP方式从服务器获取网络配置信息 + +3.TCP_Client:以TCP客户端的方式和服务器进行数据回环测试 + +4.TCP_Server:作为TCP服务器,回环客户端发来的数据 + +5.UDP:以UDP方式回环接收到的数据 + +6.UDP_Multicast:以UDP组播方式进行通信 + +7.DNS:通过DNS解析wiznet.io的IP地址 + +8.HTTP_Client:HTTP发起请求示例 + +9.HTTP_Server:作为HTTP服务器,处理客户端请求 + +10.SNTP:获取网络时间 + +11.SMTP:通过SMTP协议快速发送邮件 + +12.NetBIOS:通过NetBIOS协议,让其他用户可以以类似域名的格式发起ping请求 + +13.UPnP:通过UPnP协议快速控制设备 + +14.TFTP:以客户端身份连接TFTP服务器下载文件 + +15.SNMP:通过SNMP协议管理网络设备 + +16.PING:IPRAW模式ping设备 + +17.ARP:硬件ARP示例 + +18.FTP_Server:FTP服务器模式示例,其他设备可以通过访问服务器下载文件 + +19.FTP_Client:FTP客户端模式示例,可以访问FTP服务器下载文件 + +20.WOL:通过网络唤醒设备 + +21.PHY_Mode_Config:软件控制PHY模式 + +22.MQTT&Aliyun:通过MQTT协议连接阿里云平台并实现数据交互 + +23.MQTT&OneNET:通过MQTT协议连接OneNET平台并实现数据交互 + +24.TCP_Client_Multi_socket:开启全部socket连接TCP服务器 + +25.TCP_Server_Multi_socket:作为TCP服务器,允许多个设备连接进行数据通信 + +26.Upper_computer_search_and_config:通过上位机修改配置 + +27.interrupt:中断回环数据示例 + +28.Ethernet_Rate_Test:以太网测速示例 + +29.Modbus_TCP_Server:Modbus TCP示例 + +30.HTTP_Server&NetBIOS:DHCP+HTTP Server+NetBIOS示例 + + +#### 例程目录介绍 + +├─Core +│ ├─Inc 头文件目录 +│ └─Src 源文件目录 +├─Drivers 设备驱动目录 +├─MDK-ARM Keil工程目录 +│ ├─Project 生成目录 +└─User 用户文件夹 + ├─ioLibrary_Driver 以太网驱动库 + ├─user_main 用户主程序 + ├─wiz_interface 以太网接口 + └─wiz_platform 硬件平台适配以太网目录 + +#### 移植说明 + +1. 将User目录全部添加至工程中,硬件初始化之后调用user_main文件中的user_run程序 +2. 适配wiz_platform.c文件中的相关接口 +3. 测试验证 + +#### 问题排查 + +1. 确认SPI读写是否正确,能否正常读取到芯片版本 +2. 确认PHY状态是否正常 +3. 查看设置网络地址以及回读网络地址是否一致 +4. 在同一个网络环境中,ping芯片看能否ping通(无法ping通请关闭防火墙以及排查是否存在地址冲突情况(静态配置网络信息)) +5. 应用协议不通建议先本地确认环境搭建正常,再跑例程测试 + + +#### 技术支持 + +1. 邮箱:support_wiznet@126.com +2. 微信:support_wiznet + +#### 相关资料 + +官网:[wiznet.io](https://wiznet.io/) + +github:[WIZnet (github.com)](https://github.com/Wiznet/) + +gitee:[WIZnet HK (wiznet-hk) - Gitee.com](https://gitee.com/wiznet-hk) + +CSDN:https://blog.csdn.net/WIZnet2012 + +哔哩哔哩:[WIZnet_HK的个人空间-WIZnet_HK个人主页-哔哩哔哩视频 (bilibili.com)](https://space.bilibili.com/3493140098976365) \ No newline at end of file diff --git a/User/Loopback/loopback.c b/User/Loopback/loopback.c new file mode 100644 index 0000000..6abd7c7 --- /dev/null +++ b/User/Loopback/loopback.c @@ -0,0 +1,355 @@ +#include +#include "loopback.h" +#include "socket.h" +#include "wizchip_conf.h" +/* 【新增】引入多串口路由模块 */ +#include "multi_uart_router.h" + +#if LOOPBACK_MODE == LOOPBACK_MAIN_NOBLCOK + +/** + * @brief tcp server loopback test + * @param sn: socket number + * @param buf: Data sending and receiving cache + * @param port: Listen port + * @return value for SOCK_ERRORs,return 1:no error + */ +int32_t loopback_tcps(uint8_t sn, uint8_t *buf, uint16_t port) +{ + int32_t ret; + uint16_t size = 0, sentsize = 0; + +#ifdef _LOOPBACK_DEBUG_ + uint8_t destip[4]; + uint16_t destport; +#endif + + switch (getSn_SR(sn)) + { + case SOCK_ESTABLISHED: + if (getSn_IR(sn) & Sn_IR_CON) + { +#ifdef _LOOPBACK_DEBUG_ + getSn_DIPR(sn, destip); + destport = getSn_DPORT(sn); + + printf("%d:Connected - %d.%d.%d.%d : %d\r\n", sn, destip[0], destip[1], destip[2], destip[3], destport); +#endif + // We need to send a packet of data to activate keepalive + ret = send(sn, (uint8_t *)"", 1); // Data send process + if (ret < 0) // Send Error occurred (sent data length < 0) + { + close(sn); // socket close + return ret; + } + setSn_IR(sn, Sn_IR_CON); + } + if ((size = getSn_RX_RSR(sn)) > 0) // Don't need to check SOCKERR_BUSY because it doesn't not occur. + { + if (size > DATA_BUF_SIZE) + size = DATA_BUF_SIZE; + ret = recv(sn, buf, size); + + if (ret <= 0) + return ret; // check SOCKERR_BUSY & SOCKERR_XXX. For showing the occurrence of SOCKERR_BUSY. + size = (uint16_t)ret; + sentsize = 0; + buf[size] = 0x00; + printf("rece data:%s\r\n", buf); + while (size != sentsize) + { + ret = send(sn, buf + sentsize, size - sentsize); + if (ret < 0) + { + close(sn); + return ret; + } + sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero. + } + } + break; + case SOCK_CLOSE_WAIT: +#ifdef _LOOPBACK_DEBUG_ + printf("%d:CloseWait\r\n", sn); +#endif + if ((ret = disconnect(sn)) != SOCK_OK) + return ret; +#ifdef _LOOPBACK_DEBUG_ + printf("%d:Socket Closed\r\n", sn); +#endif + break; + case SOCK_INIT: +#ifdef _LOOPBACK_DEBUG_ + printf("%d:Listen, TCP server loopback, port [%d]\r\n", sn, port); +#endif + if ((ret = listen(sn)) != SOCK_OK) + return ret; + break; + case SOCK_CLOSED: +#ifdef _LOOPBACK_DEBUG_ + printf("%d:TCP server loopback start\r\n", sn); +#endif + if ((ret = socket(sn, Sn_MR_TCP, port, 0x00)) != sn) + return ret; +#ifdef _LOOPBACK_DEBUG_ + printf("%d:Socket opened\r\n", sn); +#endif + break; + default: + break; + } + return 1; +} + +/** + * @brief tcp client loopback test + * @param sn: socket number + * @param buf: Data sending and receiving cache + * @param destip: Destination IP address + * @param destport: Destination port + * @return value for SOCK_ERRORs,return 1:no error + */ +int32_t loopback_tcpc(uint8_t sn, uint8_t *buf, uint8_t *destip, uint16_t destport) +{ + int32_t ret; // return value for SOCK_ERRORs + uint16_t size = 0, sentsize = 0; + + // Destination (TCP Server) IP info (will be connected) + // >> loopback_tcpc() function parameter + // >> Ex) + uint8_t dip[4] = {192, 168, 0, 214}; + uint16_t dport = 5000; + getSn_DIPR(sn, dip); + dport = getSn_DPORT(sn); + // Port number for TCP client (will be increased) + static uint16_t any_port = 50000; + + // Socket Status Transitions + // Check the W5500 Socket n status register (Sn_SR, The 'Sn_SR' controlled by Sn_CR command or Packet send/recv status) + switch (getSn_SR(sn)) + { + case SOCK_ESTABLISHED: + if (getSn_IR(sn) & Sn_IR_CON) // Socket n interrupt register mask; TCP CON interrupt = connection with peer is successful + { + // We need to send a packet of data to activate keepalive + ret = send(sn, (uint8_t *)"", 1); // Data send process + if (ret < 0) // Send Error occurred (sent data length < 0) + { + close(sn); // socket close + return ret; + } +#ifdef _LOOPBACK_DEBUG_ + printf("%d:Connected to - %d.%d.%d.%d : %d\r\n", sn, destip[0], destip[1], destip[2], destip[3], destport); +#endif + setSn_IR(sn, Sn_IR_CON); // this interrupt should be write the bit cleared to '1' + } + + ////////////////////////////////////////////////////////////////////////////////////////////// + // Data Transaction Parts; Handle the [data receive and send] process + ////////////////////////////////////////////////////////////////////////////////////////////// + if ((size = getSn_RX_RSR(sn)) > 0) // Sn_RX_RSR: Socket n Received Size Register, Receiving data length + { + if (size > DATA_BUF_SIZE) + size = DATA_BUF_SIZE; // DATA_BUF_SIZE means user defined buffer size (array) + ret = recv(sn, buf, size); // Data Receive process (H/W Rx socket buffer -> User's buffer) + buf[size] = 0x00; + printf("rece from %d.%d.%d.%d:%d data:%s\r\n", dip[0], dip[1], dip[2], dip[3], dport, buf); + if (ret <= 0) + return ret; // If the received data length <= 0, receive failed and process end + size = (uint16_t)ret; + sentsize = 0; + + // Data sentsize control + while (size != sentsize) + { + ret = send(sn, buf + sentsize, size - sentsize); // Data send process (User's buffer -> Destination through H/W Tx socket buffer) + if (ret < 0) // Send Error occurred (sent data length < 0) + { + close(sn); // socket close + return ret; + } + sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero. + } + } + ////////////////////////////////////////////////////////////////////////////////////////////// + break; + + case SOCK_CLOSE_WAIT: +#ifdef _LOOPBACK_DEBUG_ + printf("%d:CloseWait\r\n", sn); +#endif + if ((ret = disconnect(sn)) != SOCK_OK) + return ret; +#ifdef _LOOPBACK_DEBUG_ + printf("%d:Socket Closed\r\n", sn); +#endif + break; + + case SOCK_INIT: +#ifdef _LOOPBACK_DEBUG_ + printf("%d:Try to connect to the %d.%d.%d.%d : %d\r\n", sn, destip[0], destip[1], destip[2], destip[3], destport); +#endif + if ((ret = connect(sn, destip, destport)) != SOCK_OK) + return ret; // Try to TCP connect to the TCP server (destination) + break; + + case SOCK_CLOSED: + close(sn); + if ((ret = socket(sn, Sn_MR_TCP, any_port++, 0x00)) != sn) + { + if (any_port == 0xffff) + any_port = 50000; + return ret; // TCP socket open with 'any_port' port number + } +#ifdef _LOOPBACK_DEBUG_ + printf("%d:TCP client loopback start\r\n", sn); + printf("%d:Socket opened\r\n", sn); +#endif + break; + default: + break; + } + return 1; +} + +/** + * @brief udp server mode loopback test + * @param sn: socket number + * @param buf: Data sending and receiving cache + * @param port: Local port + * @return value for SOCK_ERRORs,return 1:no error + */ +int32_t loopback_udps(uint8_t sn, uint8_t *buf, uint16_t port) +{ + int32_t ret; + uint16_t size, sentsize; + uint8_t destip[4]; + uint16_t destport; + + switch (getSn_SR(sn)) + { + case SOCK_UDP: + if ((size = getSn_RX_RSR(sn)) > 0) + { + if (size > DATA_BUF_SIZE) + size = DATA_BUF_SIZE; + ret = recvfrom(sn, buf, size, destip, (uint16_t *)&destport); + buf[ret] = 0x00; + printf("recv form[%d.%d.%d.%d][%d]: %s\r\n", destip[0], destip[1], destip[2], destip[3], destport, buf); + if (ret <= 0) + { +#ifdef _LOOPBACK_DEBUG_ + printf("%d: recvfrom error. %ld\r\n", sn, ret); +#endif + return ret; + } + size = (uint16_t)ret; + + /* ========================================================== * + /* :只在数据前加一个 [NET] 标识,直接透传 */ + uint8_t tx_buf[2048]; // 申请一个足够大的临时数组存放拼接后的数据 + + // 1. 先把网络标识 "[NET]" 写进数组头部,tag_len 会自动等于 5 + int tag_len = sprintf((char*)tx_buf, "[NET]"); + + // 2. 把网络收到的真实数据 (buf) 紧挨着标识拼接到后面 + memcpy(tx_buf + tag_len, buf, size); + + // 3. 把拼接好的整串数据直接发给 RF433 + MultiUART_Send(PORT_UART1, tx_buf, tag_len + size); + /* ========================================================== */ + sentsize = 0; + while (sentsize != size) + { + ret = sendto(sn, buf + sentsize, size - sentsize, destip, destport); + if (ret < 0) + { +#ifdef _LOOPBACK_DEBUG_ + printf("%d: sendto error. %ld\r\n", sn, ret); +#endif + return ret; + } + sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero. + } + } + break; + case SOCK_CLOSED: +#ifdef _LOOPBACK_DEBUG_ + // printf("%d:UDP loopback start\r\n",sn); +#endif + if ((ret = socket(sn, Sn_MR_UDP, port, 0x00)) != sn) + return ret; +#ifdef _LOOPBACK_DEBUG_ + printf("%d:Opened, UDP loopback, port [%d]\r\n", sn, port); +#endif + break; + default: + break; + } + return 1; +} + +/** + * @brief udp client loopback test + * @param sn: socket number + * @param buf: Data sending and receiving cache + * @param destip: Destination IP address + * @param destport: Destination port + * @return value for SOCK_ERRORs,return 1:no error + */ +int32_t loopback_udpc(uint8_t sn, uint8_t *buf, uint8_t *destip, uint16_t destport) +{ + int32_t ret; + uint16_t size = 0, sentsize = 0; + static uint16_t any_port = 50000; + // uint8_t* strtest = "\r\nhello world"; + switch (getSn_SR(sn)) + { + case SOCK_UDP: + // sendto(sn, strtest, strlen(strtest), destip, destport); + if ((size = getSn_RX_RSR(sn)) > 0) + { + if (size > DATA_BUF_SIZE) + size = DATA_BUF_SIZE; + ret = recvfrom(sn, buf, size, destip, (uint16_t *)&destport); + buf[ret] = 0x00; + printf("recv form[%d.%d.%d.%d][%d]: %s\r\n", destip[0], destip[1], destip[2], destip[3], destport, buf); + if (ret <= 0) + { +#ifdef _LOOPBACK_DEBUG_ + printf("%d: recvfrom error. %ld\r\n", sn, ret); +#endif + return ret; + } + size = (uint16_t)ret; + sentsize = 0; + while (sentsize != size) + { + ret = sendto(sn, buf + sentsize, size - sentsize, destip, destport); + if (ret < 0) + { +#ifdef _LOOPBACK_DEBUG_ + printf("%d: sendto error. %ld\r\n", sn, ret); +#endif + return ret; + } + sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero. + } + } + break; + case SOCK_CLOSED: +#ifdef _LOOPBACK_DEBUG_ + // printf("%d:UDP loopback start\r\n",sn); +#endif + if ((ret = socket(sn, Sn_MR_UDP, any_port, 0x00)) != sn) + return ret; +#ifdef _LOOPBACK_DEBUG_ + printf("%d:Opened, UDP loopback, port [%d]\r\n", sn, any_port); +#endif + break; + default: + break; + } + return 1; +} +#endif diff --git a/User/Loopback/loopback.h b/User/Loopback/loopback.h new file mode 100644 index 0000000..dc3d0dd --- /dev/null +++ b/User/Loopback/loopback.h @@ -0,0 +1,41 @@ +#ifndef _LOOPBACK_H_ +#define _LOOPBACK_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include + + +/* Loopback test debug message printout enable */ +#define _LOOPBACK_DEBUG_ + +/* DATA_BUF_SIZE define for Loopback example */ +#ifndef DATA_BUF_SIZE +#define DATA_BUF_SIZE 2048 +#endif + +/************************/ +/* Select LOOPBACK_MODE */ +/************************/ +#define LOOPBACK_MAIN_NOBLOCK 0 +#define LOOPBACK_MODE LOOPBACK_MAIN_NOBLOCK + + /* TCP server Loopback test example */ + int32_t loopback_tcps(uint8_t sn, uint8_t *buf, uint16_t port); + + /* TCP client Loopback test example */ + int32_t loopback_tcpc(uint8_t sn, uint8_t *buf, uint8_t *destip, uint16_t destport); + + /* UDP Loopback test example */ + int32_t loopback_udps(uint8_t sn, uint8_t *buf, uint16_t port); + + /* UDP Client Loopback test example */ + int32_t loopback_udpc(uint8_t sn, uint8_t *buf, uint8_t *destip, uint16_t destport); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/User/ioLibrary_Driver/.gitattributes b/User/ioLibrary_Driver/.gitattributes new file mode 100644 index 0000000..412eeda --- /dev/null +++ b/User/ioLibrary_Driver/.gitattributes @@ -0,0 +1,22 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Custom for Visual Studio +*.cs diff=csharp +*.sln merge=union +*.csproj merge=union +*.vbproj merge=union +*.fsproj merge=union +*.dbproj merge=union + +# Standard to msysgit +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain diff --git a/User/ioLibrary_Driver/.gitignore b/User/ioLibrary_Driver/.gitignore new file mode 100644 index 0000000..a505ec0 --- /dev/null +++ b/User/ioLibrary_Driver/.gitignore @@ -0,0 +1,1940 @@ +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# ========================= +# Operating System Files +# ========================= + +# OSX +# ========================= + +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear on external disk +.Spotlight-V100 +.Trashes + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk +man/man3/wizchip_conf.h.3 +man/man3/wizchip_conf.c.3 +man/man3/wiz_PhyConf_t.3 +man/man3/wiz_NetTimeout_t.3 +man/man3/wiz_NetInfo_t.3 +man/man3/w5500.jpg.3 +man/man3/w5500.h.3 +man/man3/w5500.c.3 +man/man3/w5300.h.3 +man/man3/w5300.c.3 +man/man3/w5200_w5500.jpg.3 +man/man3/w5200.h.3 +man/man3/ftpc.h.3 +man/man3/ftpc.c.3 +man/man3/ftpc.3 +man/man3/extra_functions.3 +man/man3/doxygen_log.txt.3 +man/man3/dns.h.3 +man/man3/dns.c.3 +man/man3/dhdr.3 +man/man3/dhcp.h.3 +man/man3/dhcp.c.3 +man/man3/dataEntryType.3 +man/man3/_un_l2cval.3 +man/man3/_st_http_socket.3 +man/man3/_st_http_request.3 +man/man3/_ntpformat.3 +man/man3/_httpServer_webContent.3 +man/man3/W5100.3 +man/man3/Timer.3 +man/man3/StackTrace.h.3 +man/man3/Special_function_W5100S.3 +man/man3/Socket_register_group_W5300.3 +man/man3/Socket_register_group_W5200.3 +man/man3/Socket_register_group_W5100S.3 +man/man3/Socket_register_group_W5100.3 +man/man3/Socket_register_group.3 +man/man3/Socket_register_access_function_W5300.3 +man/man3/Socket_register_access_function_W5200.3 +man/man3/Socket_register_access_function_W5100S.3 +man/man3/Socket_register_access_function_W5100.3 +man/man3/Socket_register_access_function.3 +man/man3/Readme.txt.3 +man/man3/RIP_MSG.3 +man/man3/README.md.3 +man/man3/Network.3 +man/man3/MessageData.3 +man/man3/Main_page.txt.3 +man/man3/MQTTUnsubscribeServer.c.3 +man/man3/MQTTUnsubscribeClient.c.3 +man/man3/MQTTUnsubscribe.h.3 +man/man3/MQTTTransport.3 +man/man3/MQTTSubscribeServer.c.3 +man/man3/MQTTSubscribeClient.c.3 +man/man3/MQTTSubscribe.h.3 +man/man3/MQTTString.3 +man/man3/MQTTSerializePublish.c.3 +man/man3/MQTTPublish.h.3 +man/man3/MQTTPacket_willOptions.3 +man/man3/MQTTPacket_connectData.3 +man/man3/MQTTPacket.h.3 +man/man3/MQTTPacket.c.3 +man/man3/MQTTMessage.3 +man/man3/MQTTLenString.3 +man/man3/MQTTHeader.3 +man/man3/MQTTFormat.h.3 +man/man3/MQTTFormat.c.3 +man/man3/MQTTDeserializePublish.c.3 +man/man3/MQTTConnectServer.c.3 +man/man3/MQTTConnectFlags.3 +man/man3/MQTTConnectClient.c.3 +man/man3/MQTTConnect.h.3 +man/man3/MQTTConnackFlags.3 +man/man3/MQTTClient_MessageHandlers.3 +man/man3/MQTTClient.h.3 +man/man3/MQTTClient.c.3 +man/man3/MQTTClient.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_img_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_image_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Internet_httpServer_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Internet_TFTP_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Internet_SNTP_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Internet_SNMP_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Internet_MQTT_MQTTPacket_src_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Internet_MQTT_MQTTPacket_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Internet_MQTT_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Internet_FTPServer_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Internet_FTPClient_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Internet_DNS_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Internet_DHCP_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Internet_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Ethernet_W5500_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Ethernet_W5300_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Ethernet_W5200_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Ethernet_W5100_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Ethernet_W5100S_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Ethernet_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Application_loopback_.3 +man/man3/D__workspace_CoIDE WorkSpace_ioLibrary_Driver_Application_.3 +man/man3/DATA_TYPE.3 +man/man3/Common_register_group_W5300.3 +man/man3/Common_register_group_W5200.3 +man/man3/Common_register_group_W5100S.3 +man/man3/Common_register_group_W5100.3 +man/man3/Common_register_group.3 +man/man3/Common_register_access_function_W5300.3 +man/man3/Common_register_access_function_W5200.3 +man/man3/Common_register_access_function_W5100S.3 +man/man3/Common_register_access_function_W5100.3 +man/man3/Common_register_access_function.3 +man/man3/Command.3 +man/man3/Berkeley_SOCKET.jpg.3 +man/man3/Basic_IO_function_W5300.3 +man/man3/Basic_IO_function_W5200.3 +man/man3/Basic_IO_function_W5100S.3 +man/man3/Basic_IO_function_W5100.3 +man/man3/Basic_IO_function.3 +latex/wizchip__conf_8h__incl.pdf +latex/wizchip__conf_8h__incl.md5 +latex/wizchip__conf_8h__dep__incl.pdf +latex/wizchip__conf_8h__dep__incl.md5 +latex/wizchip__conf_8h.tex +latex/wizchip__conf_8c__incl.pdf +latex/wizchip__conf_8c__incl.md5 +latex/wizchip__conf_8c.tex +latex/w5500_8jpg.tex +latex/w5500_8h__incl.pdf +latex/w5500_8h__incl.md5 +latex/w5500_8h__dep__incl.pdf +latex/w5500_8h__dep__incl.md5 +latex/w5500_8h.tex +latex/w5500_8c__incl.pdf +latex/w5500_8c__incl.md5 +latex/w5500_8c.tex +latex/w5300_8h__incl.pdf +latex/w5300_8h__incl.md5 +latex/w5300_8h.tex +latex/w5300_8c__incl.pdf +latex/w5300_8c__incl.md5 +latex/w5300_8c.tex +latex/w5200__w5500_8jpg.tex +latex/w5200_8h__incl.pdf +latex/w5200_8h__incl.md5 +latex/w5200_8h__dep__incl.pdf +latex/w5200_8h__dep__incl.md5 +latex/w5200_8h.tex +latex/w5200_8c__incl.pdf +latex/w5200_8c__incl.md5 +latex/w5200_8c.tex +latex/w5100s_8h__incl.pdf +latex/w5100s_8h__incl.md5 +latex/w5100s_8h__dep__incl.pdf +latex/w5100s_8h__dep__incl.md5 +latex/w5100s_8h.tex +latex/w5100s_8c__incl.pdf +latex/w5100s_8c__incl.md5 +latex/w5100s_8c.tex +latex/w5100_8h__incl.pdf +latex/w5100_8h__incl.md5 +latex/w5100_8h__dep__incl.pdf +latex/w5100_8h__dep__incl.md5 +latex/w5100_8h.tex +latex/w5100_8c__incl.pdf +latex/w5100_8c__incl.md5 +latex/w5100_8c.tex +latex/union_m_q_t_t_header.tex +latex/union_m_q_t_t_connect_flags.tex +latex/union_m_q_t_t_connack_flags.tex +latex/union__un__l2cval.tex +latex/union_____w_i_z_c_h_i_p_1_1___i_f.tex +latex/todo.tex +latex/tftp_8h__incl.pdf +latex/tftp_8h__incl.md5 +latex/tftp_8h__dep__incl.pdf +latex/tftp_8h__dep__incl.md5 +latex/tftp_8h.tex +latex/tftp_8c__incl.pdf +latex/tftp_8c__incl.md5 +latex/tftp_8c.tex +latex/structwiz___phy_conf__t.tex +latex/structwiz___net_timeout__t.tex +latex/structwiz___net_info__t.tex +latex/structtlv_struct_type.tex +latex/structtftp__option.tex +latex/structtftp__error.tex +latex/structtftp__data.tex +latex/structmessage_struct.tex +latex/structftpd.tex +latex/structftpc.tex +latex/structdhdr.tex +latex/structdata_entry_type.tex +latex/struct_timer.tex +latex/struct_r_i_p___m_s_g.tex +latex/struct_network.tex +latex/struct_message_data__coll__graph.pdf +latex/struct_message_data__coll__graph.md5 +latex/struct_message_data.tex +latex/struct_m_q_t_t_transport.tex +latex/struct_m_q_t_t_string__coll__graph.pdf +latex/struct_m_q_t_t_string__coll__graph.md5 +latex/struct_m_q_t_t_string.tex +latex/struct_m_q_t_t_packet__will_options__coll__graph.pdf +latex/struct_m_q_t_t_packet__will_options__coll__graph.md5 +latex/struct_m_q_t_t_packet__will_options.tex +latex/struct_m_q_t_t_packet__connect_data__coll__graph.pdf +latex/struct_m_q_t_t_packet__connect_data__coll__graph.md5 +latex/struct_m_q_t_t_packet__connect_data.tex +latex/struct_m_q_t_t_message.tex +latex/struct_m_q_t_t_len_string.tex +latex/struct_m_q_t_t_client__coll__graph.pdf +latex/struct_m_q_t_t_client__coll__graph.md5 +latex/struct_m_q_t_t_client_1_1_message_handlers.tex +latex/struct_m_q_t_t_client.tex +latex/struct_command.tex +latex/struct__st__http__socket.tex +latex/struct__st__http__request.tex +latex/struct__ntpformat.tex +latex/struct__http_server__web_content.tex +latex/struct__datetime.tex +latex/struct____file.tex +latex/struct_____w_i_z_c_h_i_p__coll__graph.pdf +latex/struct_____w_i_z_c_h_i_p__coll__graph.md5 +latex/struct_____w_i_z_c_h_i_p_1_1___c_s.tex +latex/struct_____w_i_z_c_h_i_p_1_1___c_r_i_s.tex +latex/struct_____w_i_z_c_h_i_p.tex +latex/socket_8h__incl.pdf +latex/socket_8h__incl.md5 +latex/socket_8h__dep__incl.pdf +latex/socket_8h__dep__incl.md5 +latex/socket_8h.tex +latex/socket_8c__incl.pdf +latex/socket_8c__incl.md5 +latex/socket_8c.tex +latex/sntp_8h__incl.pdf +latex/sntp_8h__incl.md5 +latex/sntp_8h__dep__incl.pdf +latex/sntp_8h__dep__incl.md5 +latex/sntp_8h.tex +latex/sntp_8c__incl.pdf +latex/sntp_8c__incl.md5 +latex/sntp_8c.tex +latex/snmp__custom_8h__incl.pdf +latex/snmp__custom_8h__incl.md5 +latex/snmp__custom_8h__dep__incl.pdf +latex/snmp__custom_8h__dep__incl.md5 +latex/snmp__custom_8h.tex +latex/snmp__custom_8c__incl.pdf +latex/snmp__custom_8c__incl.md5 +latex/snmp__custom_8c.tex +latex/snmp_8h__dep__incl.pdf +latex/snmp_8h__dep__incl.md5 +latex/snmp_8h.tex +latex/snmp_8c__incl.pdf +latex/snmp_8c__incl.md5 +latex/snmp_8c.tex +latex/refman.tex +latex/netutil_8h__incl.pdf +latex/netutil_8h__incl.md5 +latex/netutil_8h__dep__incl.pdf +latex/netutil_8h__dep__incl.md5 +latex/netutil_8h.tex +latex/netutil_8c__incl.pdf +latex/netutil_8c__incl.md5 +latex/netutil_8c.tex +latex/mqtt__interface_8h__dep__incl.pdf +latex/mqtt__interface_8h__dep__incl.md5 +latex/mqtt__interface_8h.tex +latex/mqtt__interface_8c__incl.pdf +latex/mqtt__interface_8c__incl.md5 +latex/mqtt__interface_8c.tex +latex/modules.tex +latex/md__r_e_a_d_m_e.tex +latex/make.bat +latex/loopback_8h__incl.pdf +latex/loopback_8h__incl.md5 +latex/loopback_8h__dep__incl.pdf +latex/loopback_8h__dep__incl.md5 +latex/loopback_8h.tex +latex/loopback_8c__incl.pdf +latex/loopback_8c__incl.md5 +latex/loopback_8c.tex.tmp +latex/loopback_8c.tex +latex/license_8txt.tex +latex/index.tex +latex/http_util_8h__incl.pdf +latex/http_util_8h__incl.md5 +latex/http_util_8h__dep__incl.pdf +latex/http_util_8h__dep__incl.md5 +latex/http_util_8h.tex +latex/http_util_8c__incl.pdf +latex/http_util_8c__incl.md5 +latex/http_util_8c.tex +latex/http_server_8h__incl.pdf +latex/http_server_8h__incl.md5 +latex/http_server_8h__dep__incl.pdf +latex/http_server_8h__dep__incl.md5 +latex/http_server_8h.tex +latex/http_server_8c__incl.pdf +latex/http_server_8c__incl.md5 +latex/http_server_8c.tex +latex/http_parser_8h__incl.pdf +latex/http_parser_8h__incl.md5 +latex/http_parser_8h__dep__incl.pdf +latex/http_parser_8h__dep__incl.md5 +latex/http_parser_8h.tex +latex/http_parser_8c__incl.pdf +latex/http_parser_8c__incl.md5 +latex/http_parser_8c.tex +latex/group__snmp__module.tex +latex/group__extra__functions.tex +latex/group___w_i_znet__socket___a_p_is.tex +latex/group___w_i_z_c_h_i_p__register___w5300.tex +latex/group___w_i_z_c_h_i_p__register___w5300.pdf +latex/group___w_i_z_c_h_i_p__register___w5300.md5 +latex/group___w_i_z_c_h_i_p__register___w5200.tex +latex/group___w_i_z_c_h_i_p__register___w5200.pdf +latex/group___w_i_z_c_h_i_p__register___w5200.md5 +latex/group___w_i_z_c_h_i_p__register___w5100_s.tex +latex/group___w_i_z_c_h_i_p__register___w5100_s.pdf +latex/group___w_i_z_c_h_i_p__register___w5100_s.md5 +latex/group___w_i_z_c_h_i_p__register___w5100.tex +latex/group___w_i_z_c_h_i_p__register___w5100.pdf +latex/group___w_i_z_c_h_i_p__register___w5100.md5 +latex/group___w_i_z_c_h_i_p__register.tex +latex/group___w_i_z_c_h_i_p__register.pdf +latex/group___w_i_z_c_h_i_p__register.md5 +latex/group___w_i_z_c_h_i_p___i_o___functions___w5300.tex +latex/group___w_i_z_c_h_i_p___i_o___functions___w5300.pdf +latex/group___w_i_z_c_h_i_p___i_o___functions___w5300.md5 +latex/group___w_i_z_c_h_i_p___i_o___functions___w5200.tex +latex/group___w_i_z_c_h_i_p___i_o___functions___w5200.pdf +latex/group___w_i_z_c_h_i_p___i_o___functions___w5200.md5 +latex/group___w_i_z_c_h_i_p___i_o___functions___w5100_s.tex +latex/group___w_i_z_c_h_i_p___i_o___functions___w5100_s.pdf +latex/group___w_i_z_c_h_i_p___i_o___functions___w5100_s.md5 +latex/group___w_i_z_c_h_i_p___i_o___functions___w5100.tex +latex/group___w_i_z_c_h_i_p___i_o___functions___w5100.pdf +latex/group___w_i_z_c_h_i_p___i_o___functions___w5100.md5 +latex/group___w_i_z_c_h_i_p___i_o___functions.tex +latex/group___w_i_z_c_h_i_p___i_o___functions.pdf +latex/group___w_i_z_c_h_i_p___i_o___functions.md5 +latex/group___w5500.tex +latex/group___w5500.pdf +latex/group___w5500.md5 +latex/group___w5300.tex +latex/group___w5300.pdf +latex/group___w5300.md5 +latex/group___w5200.tex +latex/group___w5200.pdf +latex/group___w5200.md5 +latex/group___w5100_s.tex +latex/group___w5100_s.pdf +latex/group___w5100_s.md5 +latex/group___w5100.tex +latex/group___w5100.pdf +latex/group___w5100.md5 +latex/group___special__function___w5100_s.tex +latex/group___special__function___w5100_s.pdf +latex/group___special__function___w5100_s.md5 +latex/group___socket__register__group___w5300.tex +latex/group___socket__register__group___w5300.pdf +latex/group___socket__register__group___w5300.md5 +latex/group___socket__register__group___w5200.tex +latex/group___socket__register__group___w5200.pdf +latex/group___socket__register__group___w5200.md5 +latex/group___socket__register__group___w5100_s.tex +latex/group___socket__register__group___w5100_s.pdf +latex/group___socket__register__group___w5100_s.md5 +latex/group___socket__register__group___w5100.tex +latex/group___socket__register__group___w5100.pdf +latex/group___socket__register__group___w5100.md5 +latex/group___socket__register__group.tex +latex/group___socket__register__group.pdf +latex/group___socket__register__group.md5 +latex/group___socket__register__access__function___w5300.tex +latex/group___socket__register__access__function___w5300.pdf +latex/group___socket__register__access__function___w5300.md5 +latex/group___socket__register__access__function___w5200.tex +latex/group___socket__register__access__function___w5200.pdf +latex/group___socket__register__access__function___w5200.md5 +latex/group___socket__register__access__function___w5100_s.tex +latex/group___socket__register__access__function___w5100_s.pdf +latex/group___socket__register__access__function___w5100_s.md5 +latex/group___socket__register__access__function___w5100.tex +latex/group___socket__register__access__function___w5100.pdf +latex/group___socket__register__access__function___w5100.md5 +latex/group___socket__register__access__function.tex +latex/group___socket__register__access__function.pdf +latex/group___socket__register__access__function.md5 +latex/group___d_a_t_a___t_y_p_e.tex +latex/group___common__register__group___w5300.tex +latex/group___common__register__group___w5300.pdf +latex/group___common__register__group___w5300.md5 +latex/group___common__register__group___w5200.tex +latex/group___common__register__group___w5200.pdf +latex/group___common__register__group___w5200.md5 +latex/group___common__register__group___w5100_s.tex +latex/group___common__register__group___w5100_s.pdf +latex/group___common__register__group___w5100_s.md5 +latex/group___common__register__group___w5100.tex +latex/group___common__register__group___w5100.pdf +latex/group___common__register__group___w5100.md5 +latex/group___common__register__group.tex +latex/group___common__register__group.pdf +latex/group___common__register__group.md5 +latex/group___common__register__access__function___w5300.tex +latex/group___common__register__access__function___w5300.pdf +latex/group___common__register__access__function___w5300.md5 +latex/group___common__register__access__function___w5200.tex +latex/group___common__register__access__function___w5200.pdf +latex/group___common__register__access__function___w5200.md5 +latex/group___common__register__access__function___w5100_s.tex +latex/group___common__register__access__function___w5100_s.pdf +latex/group___common__register__access__function___w5100_s.md5 +latex/group___common__register__access__function___w5100.tex +latex/group___common__register__access__function___w5100.pdf +latex/group___common__register__access__function___w5100.md5 +latex/group___common__register__access__function.tex +latex/group___common__register__access__function.pdf +latex/group___common__register__access__function.md5 +latex/group___basic___i_o__function___w5300.tex +latex/group___basic___i_o__function___w5300.pdf +latex/group___basic___i_o__function___w5300.md5 +latex/group___basic___i_o__function___w5200.tex +latex/group___basic___i_o__function___w5200.pdf +latex/group___basic___i_o__function___w5200.md5 +latex/group___basic___i_o__function___w5100_s.tex +latex/group___basic___i_o__function___w5100_s.pdf +latex/group___basic___i_o__function___w5100_s.md5 +latex/group___basic___i_o__function___w5100.tex +latex/group___basic___i_o__function___w5100.pdf +latex/group___basic___i_o__function___w5100.md5 +latex/group___basic___i_o__function.tex +latex/group___basic___i_o__function.pdf +latex/group___basic___i_o__function.md5 +latex/ftpd_8h__incl.pdf +latex/ftpd_8h__incl.md5 +latex/ftpd_8h__dep__incl.pdf +latex/ftpd_8h__dep__incl.md5 +latex/ftpd_8h.tex +latex/ftpd_8c__incl.pdf +latex/ftpd_8c__incl.md5 +latex/ftpd_8c.tex +latex/ftpc_8h__incl.pdf +latex/ftpc_8h__incl.md5 +latex/ftpc_8h__dep__incl.pdf +latex/ftpc_8h__dep__incl.md5 +latex/ftpc_8h.tex +latex/ftpc_8c__incl.pdf +latex/ftpc_8c__incl.md5 +latex/ftpc_8c.tex +latex/files.tex +latex/doxygen__log_8txt.tex +latex/doxygen.sty +latex/dns_8h__incl.pdf +latex/dns_8h__incl.md5 +latex/dns_8h__dep__incl.pdf +latex/dns_8h__dep__incl.md5 +latex/dns_8h.tex +latex/dns_8c__incl.pdf +latex/dns_8c__incl.md5 +latex/dns_8c.tex +latex/dir_fe682d1d76c251404f71241aa833642c_dep.pdf +latex/dir_fe682d1d76c251404f71241aa833642c_dep.md5 +latex/dir_fe682d1d76c251404f71241aa833642c.tex +latex/dir_fca0adf6655fb1759a15e5776097c124_dep.pdf +latex/dir_fca0adf6655fb1759a15e5776097c124_dep.md5 +latex/dir_fca0adf6655fb1759a15e5776097c124.tex +latex/dir_f841453af36a2df9a2123f87589fe4f8_dep.pdf +latex/dir_f841453af36a2df9a2123f87589fe4f8_dep.md5 +latex/dir_f841453af36a2df9a2123f87589fe4f8.tex +latex/dir_f10a527ab5b3936e2edf95a019a13ec7_dep.pdf +latex/dir_f10a527ab5b3936e2edf95a019a13ec7_dep.md5 +latex/dir_f10a527ab5b3936e2edf95a019a13ec7.tex +latex/dir_eb1463819d84903762eb6f59cc0c4383_dep.pdf +latex/dir_eb1463819d84903762eb6f59cc0c4383_dep.md5 +latex/dir_eb1463819d84903762eb6f59cc0c4383.tex +latex/dir_e5121bff4754a4ad570fa548a998f0c5_dep.pdf +latex/dir_e5121bff4754a4ad570fa548a998f0c5_dep.md5 +latex/dir_e5121bff4754a4ad570fa548a998f0c5.tex +latex/dir_b88037d6581d528000057b4eaec3e673_dep.pdf +latex/dir_b88037d6581d528000057b4eaec3e673_dep.md5 +latex/dir_b88037d6581d528000057b4eaec3e673.tex +latex/dir_a5a06f90a751e77147778694c516f622_dep.pdf +latex/dir_a5a06f90a751e77147778694c516f622_dep.md5 +latex/dir_a5a06f90a751e77147778694c516f622.tex +latex/dir_a483286db9c12f74c7364bdaa9e78c36_dep.pdf +latex/dir_a483286db9c12f74c7364bdaa9e78c36_dep.md5 +latex/dir_a483286db9c12f74c7364bdaa9e78c36.tex +latex/dir_a138ed074e64356ad02dbb8d94382c4f_dep.pdf +latex/dir_a138ed074e64356ad02dbb8d94382c4f_dep.md5 +latex/dir_a138ed074e64356ad02dbb8d94382c4f.tex +latex/dir_97b8cbb23222306012bd2d84398746c9_dep.pdf +latex/dir_97b8cbb23222306012bd2d84398746c9_dep.md5 +latex/dir_97b8cbb23222306012bd2d84398746c9.tex +latex/dir_6e6e4d5e89221ed61dd87b2954f72a78_dep.pdf +latex/dir_6e6e4d5e89221ed61dd87b2954f72a78_dep.md5 +latex/dir_6e6e4d5e89221ed61dd87b2954f72a78.tex +latex/dir_6de1940466803d61d2f9d1259cb01031.tex +latex/dir_5a912e51f6f9520965e8671f07512599_dep.pdf +latex/dir_5a912e51f6f9520965e8671f07512599_dep.md5 +latex/dir_5a912e51f6f9520965e8671f07512599.tex +latex/dir_4c7002aef9ece892c0aedd728ed93eff.tex +latex/dir_498fbcdef69ea105b96b8673d051b2e3_dep.pdf +latex/dir_498fbcdef69ea105b96b8673d051b2e3_dep.md5 +latex/dir_498fbcdef69ea105b96b8673d051b2e3.tex +latex/dir_46819ec1095f3903911c103f5ebbb29f_dep.pdf +latex/dir_46819ec1095f3903911c103f5ebbb29f_dep.md5 +latex/dir_46819ec1095f3903911c103f5ebbb29f.tex +latex/dir_4396dcc0e095a5bc10b1affe087807cf_dep.pdf +latex/dir_4396dcc0e095a5bc10b1affe087807cf_dep.md5 +latex/dir_4396dcc0e095a5bc10b1affe087807cf.tex +latex/dir_337e147d8ae2958ef29ccaa8e2f968db_dep.pdf +latex/dir_337e147d8ae2958ef29ccaa8e2f968db_dep.md5 +latex/dir_337e147d8ae2958ef29ccaa8e2f968db.tex +latex/dir_2c7bb40a7e5a6685f00216dd2909cd99_dep.pdf +latex/dir_2c7bb40a7e5a6685f00216dd2909cd99_dep.md5 +latex/dir_2c7bb40a7e5a6685f00216dd2909cd99.tex +latex/dir_2c1dd796c287ab9a5cf44281d8a3cbeb.tex +latex/dir_072fcb7a67163ce1d8f22ad4144c7e08.tex +latex/dhcp_8h__dep__incl.pdf +latex/dhcp_8h__dep__incl.md5 +latex/dhcp_8h.tex +latex/dhcp_8c__incl.pdf +latex/dhcp_8c__incl.md5 +latex/dhcp_8c.tex +latex/annotated.tex +latex/_w_i_znet___s_o_c_k_e_t_8jpg.tex +latex/_stack_trace_8h__incl.pdf +latex/_stack_trace_8h__incl.md5 +latex/_stack_trace_8h__dep__incl.pdf +latex/_stack_trace_8h__dep__incl.md5 +latex/_stack_trace_8h.tex +latex/_readme_8txt.tex +latex/_r_e_a_d_m_e_8md.tex +latex/_main__page_8txt.tex +latex/_m_q_t_t_unsubscribe_server_8c__incl.pdf +latex/_m_q_t_t_unsubscribe_server_8c__incl.md5 +latex/_m_q_t_t_unsubscribe_server_8c.tex +latex/_m_q_t_t_unsubscribe_client_8c__incl.pdf +latex/_m_q_t_t_unsubscribe_client_8c__incl.md5 +latex/_m_q_t_t_unsubscribe_client_8c.tex +latex/_m_q_t_t_unsubscribe_8h__dep__incl.pdf +latex/_m_q_t_t_unsubscribe_8h__dep__incl.md5 +latex/_m_q_t_t_unsubscribe_8h.tex +latex/_m_q_t_t_subscribe_server_8c__incl.pdf +latex/_m_q_t_t_subscribe_server_8c__incl.md5 +latex/_m_q_t_t_subscribe_server_8c.tex +latex/_m_q_t_t_subscribe_client_8c__incl.pdf +latex/_m_q_t_t_subscribe_client_8c__incl.md5 +latex/_m_q_t_t_subscribe_client_8c.tex +latex/_m_q_t_t_subscribe_8h__dep__incl.pdf +latex/_m_q_t_t_subscribe_8h__dep__incl.md5 +latex/_m_q_t_t_subscribe_8h.tex +latex/_m_q_t_t_serialize_publish_8c__incl.pdf +latex/_m_q_t_t_serialize_publish_8c__incl.md5 +latex/_m_q_t_t_serialize_publish_8c.tex +latex/_m_q_t_t_publish_8h__dep__incl.pdf +latex/_m_q_t_t_publish_8h__dep__incl.md5 +latex/_m_q_t_t_publish_8h.tex +latex/_m_q_t_t_packet_8h__incl.pdf +latex/_m_q_t_t_packet_8h__incl.md5 +latex/_m_q_t_t_packet_8h__dep__incl.pdf +latex/_m_q_t_t_packet_8h__dep__incl.md5 +latex/_m_q_t_t_packet_8h.tex +latex/_m_q_t_t_packet_8c__incl.pdf +latex/_m_q_t_t_packet_8c__incl.md5 +latex/_m_q_t_t_packet_8c.tex +latex/_m_q_t_t_format_8h__incl.pdf +latex/_m_q_t_t_format_8h__incl.md5 +latex/_m_q_t_t_format_8h__dep__incl.pdf +latex/_m_q_t_t_format_8h__dep__incl.md5 +latex/_m_q_t_t_format_8h.tex +latex/_m_q_t_t_format_8c__incl.pdf +latex/_m_q_t_t_format_8c__incl.md5 +latex/_m_q_t_t_format_8c.tex +latex/_m_q_t_t_deserialize_publish_8c__incl.pdf +latex/_m_q_t_t_deserialize_publish_8c__incl.md5 +latex/_m_q_t_t_deserialize_publish_8c.tex +latex/_m_q_t_t_connect_server_8c__incl.pdf +latex/_m_q_t_t_connect_server_8c__incl.md5 +latex/_m_q_t_t_connect_server_8c.tex +latex/_m_q_t_t_connect_client_8c__incl.pdf +latex/_m_q_t_t_connect_client_8c__incl.md5 +latex/_m_q_t_t_connect_client_8c.tex +latex/_m_q_t_t_connect_8h__dep__incl.pdf +latex/_m_q_t_t_connect_8h__dep__incl.md5 +latex/_m_q_t_t_connect_8h.tex +latex/_m_q_t_t_client_8h__incl.pdf +latex/_m_q_t_t_client_8h__incl.md5 +latex/_m_q_t_t_client_8h__dep__incl.pdf +latex/_m_q_t_t_client_8h__dep__incl.md5 +latex/_m_q_t_t_client_8h.tex +latex/_m_q_t_t_client_8c__incl.pdf +latex/_m_q_t_t_client_8c__incl.md5 +latex/_m_q_t_t_client_8c.tex +latex/_f_t_p_server_2stdio__private_8h__incl.pdf +latex/_f_t_p_server_2stdio__private_8h__incl.md5 +latex/_f_t_p_server_2stdio__private_8h__dep__incl.pdf +latex/_f_t_p_server_2stdio__private_8h__dep__incl.md5 +latex/_f_t_p_server_2stdio__private_8h.tex +latex/_f_t_p_client_2stdio__private_8h__incl.pdf +latex/_f_t_p_client_2stdio__private_8h__incl.md5 +latex/_f_t_p_client_2stdio__private_8h__dep__incl.pdf +latex/_f_t_p_client_2stdio__private_8h__dep__incl.md5 +latex/_f_t_p_client_2stdio__private_8h.tex +latex/_berkeley___s_o_c_k_e_t_8jpg.tex +latex/Makefile +image/w5500.jpg +image/w5200_w5500.jpg +image/WIZnet_SOCKET.jpg +image/Berkeley_SOCKET.jpg +html/wizchip__conf_8h_source.html +html/wizchip__conf_8h__incl.png +html/wizchip__conf_8h__incl.md5 +html/wizchip__conf_8h__incl.map +html/wizchip__conf_8h__dep__incl.png +html/wizchip__conf_8h__dep__incl.md5 +html/wizchip__conf_8h__dep__incl.map +html/wizchip__conf_8h.html +html/wizchip__conf_8c_source.html +html/wizchip__conf_8c__incl.png +html/wizchip__conf_8c__incl.md5 +html/wizchip__conf_8c__incl.map +html/wizchip__conf_8c.html +html/w5500_8jpg_source.html +html/w5500_8jpg.html +html/w5500_8h_source.html +html/w5500_8h__incl.png +html/w5500_8h__incl.md5 +html/w5500_8h__incl.map +html/w5500_8h__dep__incl.png +html/w5500_8h__dep__incl.md5 +html/w5500_8h__dep__incl.map +html/w5500_8h.html +html/w5500_8c_source.html +html/w5500_8c__incl.png +html/w5500_8c__incl.md5 +html/w5500_8c__incl.map +html/w5500_8c.html +html/w5300_8h_source.html +html/w5300_8h__incl.png +html/w5300_8h__incl.md5 +html/w5300_8h__incl.map +html/w5300_8h.html +html/w5300_8c_source.html +html/w5300_8c__incl.png +html/w5300_8c__incl.md5 +html/w5300_8c__incl.map +html/w5300_8c.html +html/w5200_w5500.jpg +html/w5200__w5500_8jpg_source.html +html/w5200__w5500_8jpg.html +html/w5200_8h_source.html +html/w5200_8h__incl.png +html/w5200_8h__incl.md5 +html/w5200_8h__incl.map +html/w5200_8h__dep__incl.png +html/w5200_8h__dep__incl.md5 +html/w5200_8h__dep__incl.map +html/w5200_8h.html +html/w5200_8c_source.html +html/w5200_8c__incl.png +html/w5200_8c__incl.md5 +html/w5200_8c__incl.map +html/w5200_8c.html +html/w5100s_8h_source.html +html/w5100s_8h__incl.png +html/w5100s_8h__incl.md5 +html/w5100s_8h__incl.map +html/w5100s_8h__dep__incl.png +html/w5100s_8h__dep__incl.md5 +html/w5100s_8h__dep__incl.map +html/w5100s_8h.html +html/w5100s_8c_source.html +html/w5100s_8c__incl.png +html/w5100s_8c__incl.md5 +html/w5100s_8c__incl.map +html/w5100s_8c.html +html/w5100_8h_source.html +html/w5100_8h__incl.png +html/w5100_8h__incl.md5 +html/w5100_8h__incl.map +html/w5100_8h__dep__incl.png +html/w5100_8h__dep__incl.md5 +html/w5100_8h__dep__incl.map +html/w5100_8h.html +html/w5100_8c_source.html +html/w5100_8c__incl.png +html/w5100_8c__incl.md5 +html/w5100_8c__incl.map +html/w5100_8c.html +html/union_m_q_t_t_header.html +html/union_m_q_t_t_connect_flags.html +html/union_m_q_t_t_connack_flags.html +html/union__un__l2cval.html +html/union_____w_i_z_c_h_i_p_1_1___i_f.html +html/todo.html +html/tftp_8h_source.html +html/tftp_8h__incl.png +html/tftp_8h__incl.md5 +html/tftp_8h__incl.map +html/tftp_8h__dep__incl.png +html/tftp_8h__dep__incl.md5 +html/tftp_8h__dep__incl.map +html/tftp_8h.html +html/tftp_8c_source.html +html/tftp_8c__incl.png +html/tftp_8c__incl.md5 +html/tftp_8c__incl.map +html/tftp_8c.html +html/tabs.css +html/tab_s.png +html/tab_h.png +html/tab_b.png +html/tab_a.png +html/sync_on.png +html/sync_off.png +html/structwiz___phy_conf__t.html +html/structwiz___net_timeout__t.html +html/structwiz___net_info__t.html +html/structtlv_struct_type.html +html/structtftp__option.html +html/structtftp__error.html +html/structtftp__data.html +html/structmessage_struct.html +html/structftpd.html +html/structftpc.html +html/structdhdr.html +html/structdata_entry_type.html +html/struct_timer.html +html/struct_r_i_p___m_s_g.html +html/struct_network.html +html/struct_message_data__coll__graph.png +html/struct_message_data__coll__graph.md5 +html/struct_message_data__coll__graph.map +html/struct_message_data.html +html/struct_m_q_t_t_transport.html +html/struct_m_q_t_t_string__coll__graph.png +html/struct_m_q_t_t_string__coll__graph.md5 +html/struct_m_q_t_t_string__coll__graph.map +html/struct_m_q_t_t_string.html +html/struct_m_q_t_t_packet__will_options__coll__graph.png +html/struct_m_q_t_t_packet__will_options__coll__graph.md5 +html/struct_m_q_t_t_packet__will_options__coll__graph.map +html/struct_m_q_t_t_packet__will_options.html +html/struct_m_q_t_t_packet__connect_data__coll__graph.png +html/struct_m_q_t_t_packet__connect_data__coll__graph.md5 +html/struct_m_q_t_t_packet__connect_data__coll__graph.map +html/struct_m_q_t_t_packet__connect_data.html +html/struct_m_q_t_t_message.html +html/struct_m_q_t_t_len_string.html +html/struct_m_q_t_t_client__coll__graph.png +html/struct_m_q_t_t_client__coll__graph.md5 +html/struct_m_q_t_t_client__coll__graph.map +html/struct_m_q_t_t_client_1_1_message_handlers.html +html/struct_m_q_t_t_client.html +html/struct_command.html +html/struct__st__http__socket.html +html/struct__st__http__request.html +html/struct__ntpformat.html +html/struct__http_server__web_content.html +html/struct__datetime.html +html/struct____file.html +html/struct_____w_i_z_c_h_i_p__coll__graph.png +html/struct_____w_i_z_c_h_i_p__coll__graph.md5 +html/struct_____w_i_z_c_h_i_p__coll__graph.map +html/struct_____w_i_z_c_h_i_p_1_1___c_s.html +html/struct_____w_i_z_c_h_i_p_1_1___c_r_i_s.html +html/struct_____w_i_z_c_h_i_p.html +html/splitbar.png +html/socket_8h_source.html +html/socket_8h__incl.png +html/socket_8h__incl.md5 +html/socket_8h__incl.map +html/socket_8h__dep__incl.png +html/socket_8h__dep__incl.md5 +html/socket_8h__dep__incl.map +html/socket_8h.html +html/socket_8c_source.html +html/socket_8c__incl.png +html/socket_8c__incl.md5 +html/socket_8c__incl.map +html/socket_8c.html +html/sntp_8h_source.html +html/sntp_8h__incl.png +html/sntp_8h__incl.md5 +html/sntp_8h__incl.map +html/sntp_8h__dep__incl.png +html/sntp_8h__dep__incl.md5 +html/sntp_8h__dep__incl.map +html/sntp_8h.html +html/sntp_8c_source.html +html/sntp_8c__incl.png +html/sntp_8c__incl.md5 +html/sntp_8c__incl.map +html/sntp_8c.html +html/snmp__custom_8h_source.html +html/snmp__custom_8h__incl.png +html/snmp__custom_8h__incl.md5 +html/snmp__custom_8h__incl.map +html/snmp__custom_8h__dep__incl.png +html/snmp__custom_8h__dep__incl.md5 +html/snmp__custom_8h__dep__incl.map +html/snmp__custom_8h.html +html/snmp__custom_8c_source.html +html/snmp__custom_8c__incl.png +html/snmp__custom_8c__incl.md5 +html/snmp__custom_8c__incl.map +html/snmp__custom_8c.html +html/snmp_8h_source.html +html/snmp_8h__dep__incl.png +html/snmp_8h__dep__incl.md5 +html/snmp_8h__dep__incl.map +html/snmp_8h.html +html/snmp_8c_source.html +html/snmp_8c__incl.png +html/snmp_8c__incl.md5 +html/snmp_8c__incl.map +html/snmp_8c.html +html/search/variables_f.js +html/search/variables_f.html +html/search/variables_e.js +html/search/variables_e.html +html/search/variables_d.js +html/search/variables_d.html +html/search/variables_c.js +html/search/variables_c.html +html/search/variables_b.js +html/search/variables_b.html +html/search/variables_a.js +html/search/variables_a.html +html/search/variables_9.js +html/search/variables_9.html +html/search/variables_8.js +html/search/variables_8.html +html/search/variables_7.js +html/search/variables_7.html +html/search/variables_6.js +html/search/variables_6.html +html/search/variables_5.js +html/search/variables_5.html +html/search/variables_4.js +html/search/variables_4.html +html/search/variables_3.js +html/search/variables_3.html +html/search/variables_2.js +html/search/variables_2.html +html/search/variables_18.js +html/search/variables_18.html +html/search/variables_17.js +html/search/variables_17.html +html/search/variables_16.js +html/search/variables_16.html +html/search/variables_15.js +html/search/variables_15.html +html/search/variables_14.js +html/search/variables_14.html +html/search/variables_13.js +html/search/variables_13.html +html/search/variables_12.js +html/search/variables_12.html +html/search/variables_11.js +html/search/variables_11.html +html/search/variables_10.js +html/search/variables_10.html +html/search/variables_1.js +html/search/variables_1.html +html/search/variables_0.js +html/search/variables_0.html +html/search/typedefs_9.js +html/search/typedefs_9.html +html/search/typedefs_8.js +html/search/typedefs_8.html +html/search/typedefs_7.js +html/search/typedefs_7.html +html/search/typedefs_6.js +html/search/typedefs_6.html +html/search/typedefs_5.js +html/search/typedefs_5.html +html/search/typedefs_4.js +html/search/typedefs_4.html +html/search/typedefs_3.js +html/search/typedefs_3.html +html/search/typedefs_2.js +html/search/typedefs_2.html +html/search/typedefs_1.js +html/search/typedefs_1.html +html/search/typedefs_0.js +html/search/typedefs_0.html +html/search/searchdata.js +html/search/search_r.png +html/search/search_m.png +html/search/search_l.png +html/search/search.js +html/search/search.css +html/search/pages_2.js +html/search/pages_2.html +html/search/pages_1.js +html/search/pages_1.html +html/search/pages_0.js +html/search/pages_0.html +html/search/nomatches.html +html/search/mag_sel.png +html/search/groups_6.js +html/search/groups_6.html +html/search/groups_5.js +html/search/groups_5.html +html/search/groups_4.js +html/search/groups_4.html +html/search/groups_3.js +html/search/groups_3.html +html/search/groups_2.js +html/search/groups_2.html +html/search/groups_1.js +html/search/groups_1.html +html/search/groups_0.js +html/search/groups_0.html +html/search/functions_f.js +html/search/functions_f.html +html/search/functions_e.js +html/search/functions_e.html +html/search/functions_d.js +html/search/functions_d.html +html/search/functions_c.js +html/search/functions_c.html +html/search/functions_b.js +html/search/functions_b.html +html/search/functions_a.js +html/search/functions_a.html +html/search/functions_9.js +html/search/functions_9.html +html/search/functions_8.js +html/search/functions_8.html +html/search/functions_7.js +html/search/functions_7.html +html/search/functions_6.js +html/search/functions_6.html +html/search/functions_5.js +html/search/functions_5.html +html/search/functions_4.js +html/search/functions_4.html +html/search/functions_3.js +html/search/functions_3.html +html/search/functions_2.js +html/search/functions_2.html +html/search/functions_11.js +html/search/functions_11.html +html/search/functions_10.js +html/search/functions_10.html +html/search/functions_1.js +html/search/functions_1.html +html/search/functions_0.js +html/search/functions_0.html +html/search/files_a.js +html/search/files_a.html +html/search/files_9.js +html/search/files_9.html +html/search/files_8.js +html/search/files_8.html +html/search/files_7.js +html/search/files_7.html +html/search/files_6.js +html/search/files_6.html +html/search/files_5.js +html/search/files_5.html +html/search/files_4.js +html/search/files_4.html +html/search/files_3.js +html/search/files_3.html +html/search/files_2.js +html/search/files_2.html +html/search/files_1.js +html/search/files_1.html +html/search/files_0.js +html/search/files_0.html +html/search/enumvalues_f.js +html/search/enumvalues_f.html +html/search/enumvalues_e.js +html/search/enumvalues_e.html +html/search/enumvalues_d.js +html/search/enumvalues_d.html +html/search/enumvalues_c.js +html/search/enumvalues_c.html +html/search/enumvalues_b.js +html/search/enumvalues_b.html +html/search/enumvalues_a.js +html/search/enumvalues_a.html +html/search/enumvalues_9.js +html/search/enumvalues_9.html +html/search/enumvalues_8.js +html/search/enumvalues_8.html +html/search/enumvalues_7.js +html/search/enumvalues_7.html +html/search/enumvalues_6.js +html/search/enumvalues_6.html +html/search/enumvalues_5.js +html/search/enumvalues_5.html +html/search/enumvalues_4.js +html/search/enumvalues_4.html +html/search/enumvalues_3.js +html/search/enumvalues_3.html +html/search/enumvalues_2.js +html/search/enumvalues_2.html +html/search/enumvalues_12.js +html/search/enumvalues_12.html +html/search/enumvalues_11.js +html/search/enumvalues_11.html +html/search/enumvalues_10.js +html/search/enumvalues_10.html +html/search/enumvalues_1.js +html/search/enumvalues_1.html +html/search/enumvalues_0.js +html/search/enumvalues_0.html +html/search/enums_9.js +html/search/enums_9.html +html/search/enums_8.js +html/search/enums_8.html +html/search/enums_7.js +html/search/enums_7.html +html/search/enums_6.js +html/search/enums_6.html +html/search/enums_5.js +html/search/enums_5.html +html/search/enums_4.js +html/search/enums_4.html +html/search/enums_3.js +html/search/enums_3.html +html/search/enums_2.js +html/search/enums_2.html +html/search/enums_1.js +html/search/enums_1.html +html/search/enums_0.js +html/search/enums_0.html +html/search/defines_f.js +html/search/defines_f.html +html/search/defines_e.js +html/search/defines_e.html +html/search/defines_d.js +html/search/defines_d.html +html/search/defines_c.js +html/search/defines_c.html +html/search/defines_b.js +html/search/defines_b.html +html/search/defines_a.js +html/search/defines_a.html +html/search/defines_9.js +html/search/defines_9.html +html/search/defines_8.js +html/search/defines_8.html +html/search/defines_7.js +html/search/defines_7.html +html/search/defines_6.js +html/search/defines_6.html +html/search/defines_5.js +html/search/defines_5.html +html/search/defines_4.js +html/search/defines_4.html +html/search/defines_3.js +html/search/defines_3.html +html/search/defines_2.js +html/search/defines_2.html +html/search/defines_15.js +html/search/defines_15.html +html/search/defines_14.js +html/search/defines_14.html +html/search/defines_13.js +html/search/defines_13.html +html/search/defines_12.js +html/search/defines_12.html +html/search/defines_11.js +html/search/defines_11.html +html/search/defines_10.js +html/search/defines_10.html +html/search/defines_1.js +html/search/defines_1.html +html/search/defines_0.js +html/search/defines_0.html +html/search/close.png +html/search/classes_8.js +html/search/classes_8.html +html/search/classes_7.js +html/search/classes_7.html +html/search/classes_6.js +html/search/classes_6.html +html/search/classes_5.js +html/search/classes_5.html +html/search/classes_4.js +html/search/classes_4.html +html/search/classes_3.js +html/search/classes_3.html +html/search/classes_2.js +html/search/classes_2.html +html/search/classes_1.js +html/search/classes_1.html +html/search/classes_0.js +html/search/classes_0.html +html/search/all_f.js +html/search/all_f.html +html/search/all_e.js +html/search/all_e.html +html/search/all_d.js +html/search/all_d.html +html/search/all_c.js +html/search/all_c.html +html/search/all_b.js +html/search/all_b.html +html/search/all_a.js +html/search/all_a.html +html/search/all_9.js +html/search/all_9.html +html/search/all_8.js +html/search/all_8.html +html/search/all_7.js +html/search/all_7.html +html/search/all_6.js +html/search/all_6.html +html/search/all_5.js +html/search/all_5.html +html/search/all_4.js +html/search/all_4.html +html/search/all_3.js +html/search/all_3.html +html/search/all_2.js +html/search/all_2.html +html/search/all_1a.js +html/search/all_1a.html +html/search/all_19.js +html/search/all_19.html +html/search/all_18.js +html/search/all_18.html +html/search/all_17.js +html/search/all_17.html +html/search/all_16.js +html/search/all_16.html +html/search/all_15.js +html/search/all_15.html +html/search/all_14.js +html/search/all_14.html +html/search/all_13.js +html/search/all_13.html +html/search/all_12.js +html/search/all_12.html +html/search/all_11.js +html/search/all_11.html +html/search/all_10.js +html/search/all_10.html +html/search/all_1.js +html/search/all_1.html +html/search/all_0.js +html/search/all_0.html +html/pages.html +html/open.png +html/netutil_8h_source.html +html/netutil_8h__incl.png +html/netutil_8h__incl.md5 +html/netutil_8h__incl.map +html/netutil_8h__dep__incl.png +html/netutil_8h__dep__incl.md5 +html/netutil_8h__dep__incl.map +html/netutil_8h.html +html/netutil_8c_source.html +html/netutil_8c__incl.png +html/netutil_8c__incl.md5 +html/netutil_8c__incl.map +html/netutil_8c.html +html/nav_h.png +html/nav_g.png +html/nav_f.png +html/mqtt__interface_8h_source.html +html/mqtt__interface_8h__dep__incl.png +html/mqtt__interface_8h__dep__incl.md5 +html/mqtt__interface_8h__dep__incl.map +html/mqtt__interface_8h.html +html/mqtt__interface_8c_source.html +html/mqtt__interface_8c__incl.png +html/mqtt__interface_8c__incl.md5 +html/mqtt__interface_8c__incl.map +html/mqtt__interface_8c.html +html/modules.html +html/menudata.js +html/menu.js +html/md__r_e_a_d_m_e.html +html/loopback_8h_source.html +html/loopback_8h__incl.png +html/loopback_8h__incl.md5 +html/loopback_8h__incl.map +html/loopback_8h__dep__incl.png +html/loopback_8h__dep__incl.md5 +html/loopback_8h__dep__incl.map +html/loopback_8h.html +html/loopback_8c_source.html +html/loopback_8c__incl.png +html/loopback_8c__incl.md5 +html/loopback_8c__incl.map +html/loopback_8c.html +html/license_8txt.html +html/jquery.js +html/index.html +html/http_util_8h_source.html +html/http_util_8h__incl.png +html/http_util_8h__incl.md5 +html/http_util_8h__incl.map +html/http_util_8h__dep__incl.png +html/http_util_8h__dep__incl.md5 +html/http_util_8h__dep__incl.map +html/http_util_8h.html +html/http_util_8c_source.html +html/http_util_8c__incl.png +html/http_util_8c__incl.md5 +html/http_util_8c__incl.map +html/http_util_8c.html +html/http_server_8h_source.html +html/http_server_8h__incl.png +html/http_server_8h__incl.md5 +html/http_server_8h__incl.map +html/http_server_8h__dep__incl.png +html/http_server_8h__dep__incl.md5 +html/http_server_8h__dep__incl.map +html/http_server_8h.html +html/http_server_8c_source.html +html/http_server_8c__incl.png +html/http_server_8c__incl.md5 +html/http_server_8c__incl.map +html/http_server_8c.html +html/http_parser_8h_source.html +html/http_parser_8h__incl.png +html/http_parser_8h__incl.md5 +html/http_parser_8h__incl.map +html/http_parser_8h__dep__incl.png +html/http_parser_8h__dep__incl.md5 +html/http_parser_8h__dep__incl.map +html/http_parser_8h.html +html/http_parser_8c_source.html +html/http_parser_8c__incl.png +html/http_parser_8c__incl.md5 +html/http_parser_8c__incl.map +html/http_parser_8c.html +html/group__snmp__module.html +html/group__extra__functions.html +html/group___w_i_znet__socket___a_p_is.html +html/group___w_i_z_c_h_i_p__register___w5300.png +html/group___w_i_z_c_h_i_p__register___w5300.md5 +html/group___w_i_z_c_h_i_p__register___w5300.map +html/group___w_i_z_c_h_i_p__register___w5300.html +html/group___w_i_z_c_h_i_p__register___w5200.png +html/group___w_i_z_c_h_i_p__register___w5200.md5 +html/group___w_i_z_c_h_i_p__register___w5200.map +html/group___w_i_z_c_h_i_p__register___w5200.html +html/group___w_i_z_c_h_i_p__register___w5100_s.png +html/group___w_i_z_c_h_i_p__register___w5100_s.md5 +html/group___w_i_z_c_h_i_p__register___w5100_s.map +html/group___w_i_z_c_h_i_p__register___w5100_s.html +html/group___w_i_z_c_h_i_p__register___w5100.png +html/group___w_i_z_c_h_i_p__register___w5100.md5 +html/group___w_i_z_c_h_i_p__register___w5100.map +html/group___w_i_z_c_h_i_p__register___w5100.html +html/group___w_i_z_c_h_i_p__register.png +html/group___w_i_z_c_h_i_p__register.md5 +html/group___w_i_z_c_h_i_p__register.map +html/group___w_i_z_c_h_i_p__register.html +html/group___w_i_z_c_h_i_p___i_o___functions___w5300.png +html/group___w_i_z_c_h_i_p___i_o___functions___w5300.md5 +html/group___w_i_z_c_h_i_p___i_o___functions___w5300.map +html/group___w_i_z_c_h_i_p___i_o___functions___w5300.html +html/group___w_i_z_c_h_i_p___i_o___functions___w5200.png +html/group___w_i_z_c_h_i_p___i_o___functions___w5200.md5 +html/group___w_i_z_c_h_i_p___i_o___functions___w5200.map +html/group___w_i_z_c_h_i_p___i_o___functions___w5200.html +html/group___w_i_z_c_h_i_p___i_o___functions___w5100_s.png +html/group___w_i_z_c_h_i_p___i_o___functions___w5100_s.md5 +html/group___w_i_z_c_h_i_p___i_o___functions___w5100_s.map +html/group___w_i_z_c_h_i_p___i_o___functions___w5100_s.html +html/group___w_i_z_c_h_i_p___i_o___functions___w5100.png +html/group___w_i_z_c_h_i_p___i_o___functions___w5100.md5 +html/group___w_i_z_c_h_i_p___i_o___functions___w5100.map +html/group___w_i_z_c_h_i_p___i_o___functions___w5100.html +html/group___w_i_z_c_h_i_p___i_o___functions.png +html/group___w_i_z_c_h_i_p___i_o___functions.md5 +html/group___w_i_z_c_h_i_p___i_o___functions.map +html/group___w_i_z_c_h_i_p___i_o___functions.html +html/group___w5500.png +html/group___w5500.md5 +html/group___w5500.map +html/group___w5500.html +html/group___w5300.png +html/group___w5300.md5 +html/group___w5300.map +html/group___w5300.html +html/group___w5200.png +html/group___w5200.md5 +html/group___w5200.map +html/group___w5200.html +html/group___w5100_s.png +html/group___w5100_s.md5 +html/group___w5100_s.map +html/group___w5100_s.html +html/group___w5100.png +html/group___w5100.md5 +html/group___w5100.map +html/group___w5100.html +html/group___special__function___w5100_s.png +html/group___special__function___w5100_s.md5 +html/group___special__function___w5100_s.map +html/group___special__function___w5100_s.html +html/group___socket__register__group___w5300.png +html/group___socket__register__group___w5300.md5 +html/group___socket__register__group___w5300.map +html/group___socket__register__group___w5300.html +html/group___socket__register__group___w5200.png +html/group___socket__register__group___w5200.md5 +html/group___socket__register__group___w5200.map +html/group___socket__register__group___w5200.html +html/group___socket__register__group___w5100_s.png +html/group___socket__register__group___w5100_s.md5 +html/group___socket__register__group___w5100_s.map +html/group___socket__register__group___w5100_s.html +html/group___socket__register__group___w5100.png +html/group___socket__register__group___w5100.md5 +html/group___socket__register__group___w5100.map +html/group___socket__register__group___w5100.html +html/group___socket__register__group.png +html/group___socket__register__group.md5 +html/group___socket__register__group.map +html/group___socket__register__group.html +html/group___socket__register__access__function___w5300.png +html/group___socket__register__access__function___w5300.md5 +html/group___socket__register__access__function___w5300.map +html/group___socket__register__access__function___w5300.html +html/group___socket__register__access__function___w5200.png +html/group___socket__register__access__function___w5200.md5 +html/group___socket__register__access__function___w5200.map +html/group___socket__register__access__function___w5200.html +html/group___socket__register__access__function___w5100_s.png +html/group___socket__register__access__function___w5100_s.md5 +html/group___socket__register__access__function___w5100_s.map +html/group___socket__register__access__function___w5100_s.html +html/group___socket__register__access__function___w5100.png +html/group___socket__register__access__function___w5100.md5 +html/group___socket__register__access__function___w5100.map +html/group___socket__register__access__function___w5100.html +html/group___socket__register__access__function.png +html/group___socket__register__access__function.md5 +html/group___socket__register__access__function.map +html/group___socket__register__access__function.html +html/group___d_a_t_a___t_y_p_e.html +html/group___common__register__group___w5300.png +html/group___common__register__group___w5300.md5 +html/group___common__register__group___w5300.map +html/group___common__register__group___w5300.html +html/group___common__register__group___w5200.png +html/group___common__register__group___w5200.md5 +html/group___common__register__group___w5200.map +html/group___common__register__group___w5200.html +html/group___common__register__group___w5100_s.png +html/group___common__register__group___w5100_s.md5 +html/group___common__register__group___w5100_s.map +html/group___common__register__group___w5100_s.html +html/group___common__register__group___w5100.png +html/group___common__register__group___w5100.md5 +html/group___common__register__group___w5100.map +html/group___common__register__group___w5100.html +html/group___common__register__group.png +html/group___common__register__group.md5 +html/group___common__register__group.map +html/group___common__register__group.html +html/group___common__register__access__function___w5300.png +html/group___common__register__access__function___w5300.md5 +html/group___common__register__access__function___w5300.map +html/group___common__register__access__function___w5300.html +html/group___common__register__access__function___w5200.png +html/group___common__register__access__function___w5200.md5 +html/group___common__register__access__function___w5200.map +html/group___common__register__access__function___w5200.html +html/group___common__register__access__function___w5100_s.png +html/group___common__register__access__function___w5100_s.md5 +html/group___common__register__access__function___w5100_s.map +html/group___common__register__access__function___w5100_s.html +html/group___common__register__access__function___w5100.png +html/group___common__register__access__function___w5100.md5 +html/group___common__register__access__function___w5100.map +html/group___common__register__access__function___w5100.html +html/group___common__register__access__function.png +html/group___common__register__access__function.md5 +html/group___common__register__access__function.map +html/group___common__register__access__function.html +html/group___basic___i_o__function___w5300.png +html/group___basic___i_o__function___w5300.md5 +html/group___basic___i_o__function___w5300.map +html/group___basic___i_o__function___w5300.html +html/group___basic___i_o__function___w5200.png +html/group___basic___i_o__function___w5200.md5 +html/group___basic___i_o__function___w5200.map +html/group___basic___i_o__function___w5200.html +html/group___basic___i_o__function___w5100_s.png +html/group___basic___i_o__function___w5100_s.md5 +html/group___basic___i_o__function___w5100_s.map +html/group___basic___i_o__function___w5100_s.html +html/group___basic___i_o__function___w5100.png +html/group___basic___i_o__function___w5100.md5 +html/group___basic___i_o__function___w5100.map +html/group___basic___i_o__function___w5100.html +html/group___basic___i_o__function.png +html/group___basic___i_o__function.md5 +html/group___basic___i_o__function.map +html/group___basic___i_o__function.html +html/graph_legend.png +html/graph_legend.md5 +html/graph_legend.html +html/globals_x.html +html/globals_w.html +html/globals_vars.html +html/globals_v.html +html/globals_u.html +html/globals_type.html +html/globals_t.html +html/globals_s.html +html/globals_r.html +html/globals_q.html +html/globals_p.html +html/globals_o.html +html/globals_n.html +html/globals_m.html +html/globals_l.html +html/globals_k.html +html/globals_i.html +html/globals_h.html +html/globals_g.html +html/globals_func_w.html +html/globals_func_u.html +html/globals_func_t.html +html/globals_func_s.html +html/globals_func_r.html +html/globals_func_p.html +html/globals_func_n.html +html/globals_func_m.html +html/globals_func_l.html +html/globals_func_k.html +html/globals_func_i.html +html/globals_func_h.html +html/globals_func_g.html +html/globals_func_f.html +html/globals_func_d.html +html/globals_func_c.html +html/globals_func_b.html +html/globals_func.html +html/globals_f.html +html/globals_eval_x.html +html/globals_eval_v.html +html/globals_eval_u.html +html/globals_eval_t.html +html/globals_eval_s.html +html/globals_eval_r.html +html/globals_eval_q.html +html/globals_eval_p.html +html/globals_eval_n.html +html/globals_eval_m.html +html/globals_eval_l.html +html/globals_eval_i.html +html/globals_eval_h.html +html/globals_eval_f.html +html/globals_eval_e.html +html/globals_eval_d.html +html/globals_eval_c.html +html/globals_eval_b.html +html/globals_eval.html +html/globals_enum.html +html/globals_e.html +html/globals_defs_w.html +html/globals_defs_v.html +html/globals_defs_u.html +html/globals_defs_t.html +html/globals_defs_s.html +html/globals_defs_r.html +html/globals_defs_q.html +html/globals_defs_p.html +html/globals_defs_o.html +html/globals_defs_n.html +html/globals_defs_m.html +html/globals_defs_l.html +html/globals_defs_i.html +html/globals_defs_h.html +html/globals_defs_g.html +html/globals_defs_f.html +html/globals_defs_e.html +html/globals_defs_d.html +html/globals_defs_c.html +html/globals_defs_b.html +html/globals_defs_a.html +html/globals_defs.html +html/globals_d.html +html/globals_c.html +html/globals_b.html +html/globals_a.html +html/globals.html +html/functions_y.html +html/functions_x.html +html/functions_w.html +html/functions_vars_y.html +html/functions_vars_x.html +html/functions_vars_w.html +html/functions_vars_v.html +html/functions_vars_u.html +html/functions_vars_t.html +html/functions_vars_s.html +html/functions_vars_r.html +html/functions_vars_q.html +html/functions_vars_p.html +html/functions_vars_o.html +html/functions_vars_n.html +html/functions_vars_m.html +html/functions_vars_l.html +html/functions_vars_k.html +html/functions_vars_i.html +html/functions_vars_h.html +html/functions_vars_g.html +html/functions_vars_f.html +html/functions_vars_e.html +html/functions_vars_d.html +html/functions_vars_c.html +html/functions_vars_b.html +html/functions_vars_a.html +html/functions_vars.html +html/functions_v.html +html/functions_u.html +html/functions_t.html +html/functions_s.html +html/functions_r.html +html/functions_q.html +html/functions_p.html +html/functions_o.html +html/functions_n.html +html/functions_m.html +html/functions_l.html +html/functions_k.html +html/functions_i.html +html/functions_h.html +html/functions_g.html +html/functions_f.html +html/functions_e.html +html/functions_d.html +html/functions_c.html +html/functions_b.html +html/functions_a.html +html/functions.html +html/ftpd_8h_source.html +html/ftpd_8h__incl.png +html/ftpd_8h__incl.md5 +html/ftpd_8h__incl.map +html/ftpd_8h__dep__incl.png +html/ftpd_8h__dep__incl.md5 +html/ftpd_8h__dep__incl.map +html/ftpd_8h.html +html/ftpd_8c_source.html +html/ftpd_8c__incl.png +html/ftpd_8c__incl.md5 +html/ftpd_8c__incl.map +html/ftpd_8c.html +html/ftpc_8h_source.html +html/ftpc_8h__incl.png +html/ftpc_8h__incl.md5 +html/ftpc_8h__incl.map +html/ftpc_8h__dep__incl.png +html/ftpc_8h__dep__incl.md5 +html/ftpc_8h__dep__incl.map +html/ftpc_8h.html +html/ftpc_8c_source.html +html/ftpc_8c__incl.png +html/ftpc_8c__incl.md5 +html/ftpc_8c__incl.map +html/ftpc_8c.html +html/folderopen.png +html/folderclosed.png +html/files.html +html/dynsections.js +html/doxygen__log_8txt.html +html/doxygen.png +html/doxygen.css +html/doc.png +html/dns_8h_source.html +html/dns_8h__incl.png +html/dns_8h__incl.md5 +html/dns_8h__incl.map +html/dns_8h__dep__incl.png +html/dns_8h__dep__incl.md5 +html/dns_8h__dep__incl.map +html/dns_8h.html +html/dns_8c_source.html +html/dns_8c__incl.png +html/dns_8c__incl.md5 +html/dns_8c__incl.map +html/dns_8c.html +html/dir_fe682d1d76c251404f71241aa833642c_dep.png +html/dir_fe682d1d76c251404f71241aa833642c_dep.md5 +html/dir_fe682d1d76c251404f71241aa833642c_dep.map +html/dir_fe682d1d76c251404f71241aa833642c.html +html/dir_fca0adf6655fb1759a15e5776097c124_dep.png +html/dir_fca0adf6655fb1759a15e5776097c124_dep.md5 +html/dir_fca0adf6655fb1759a15e5776097c124_dep.map +html/dir_fca0adf6655fb1759a15e5776097c124.html +html/dir_f841453af36a2df9a2123f87589fe4f8_dep.png +html/dir_f841453af36a2df9a2123f87589fe4f8_dep.md5 +html/dir_f841453af36a2df9a2123f87589fe4f8_dep.map +html/dir_f841453af36a2df9a2123f87589fe4f8.html +html/dir_f10a527ab5b3936e2edf95a019a13ec7_dep.png +html/dir_f10a527ab5b3936e2edf95a019a13ec7_dep.md5 +html/dir_f10a527ab5b3936e2edf95a019a13ec7_dep.map +html/dir_f10a527ab5b3936e2edf95a019a13ec7.html +html/dir_eb1463819d84903762eb6f59cc0c4383_dep.png +html/dir_eb1463819d84903762eb6f59cc0c4383_dep.md5 +html/dir_eb1463819d84903762eb6f59cc0c4383_dep.map +html/dir_eb1463819d84903762eb6f59cc0c4383.html +html/dir_e5121bff4754a4ad570fa548a998f0c5_dep.png +html/dir_e5121bff4754a4ad570fa548a998f0c5_dep.md5 +html/dir_e5121bff4754a4ad570fa548a998f0c5_dep.map +html/dir_e5121bff4754a4ad570fa548a998f0c5.html +html/dir_b88037d6581d528000057b4eaec3e673_dep.png +html/dir_b88037d6581d528000057b4eaec3e673_dep.md5 +html/dir_b88037d6581d528000057b4eaec3e673_dep.map +html/dir_b88037d6581d528000057b4eaec3e673.html +html/dir_a5a06f90a751e77147778694c516f622_dep.png +html/dir_a5a06f90a751e77147778694c516f622_dep.md5 +html/dir_a5a06f90a751e77147778694c516f622_dep.map +html/dir_a5a06f90a751e77147778694c516f622.html +html/dir_a483286db9c12f74c7364bdaa9e78c36_dep.png +html/dir_a483286db9c12f74c7364bdaa9e78c36_dep.md5 +html/dir_a483286db9c12f74c7364bdaa9e78c36_dep.map +html/dir_a483286db9c12f74c7364bdaa9e78c36.html +html/dir_a138ed074e64356ad02dbb8d94382c4f_dep.png +html/dir_a138ed074e64356ad02dbb8d94382c4f_dep.md5 +html/dir_a138ed074e64356ad02dbb8d94382c4f_dep.map +html/dir_a138ed074e64356ad02dbb8d94382c4f.html +html/dir_97b8cbb23222306012bd2d84398746c9_dep.png +html/dir_97b8cbb23222306012bd2d84398746c9_dep.md5 +html/dir_97b8cbb23222306012bd2d84398746c9_dep.map +html/dir_97b8cbb23222306012bd2d84398746c9.html +html/dir_6e6e4d5e89221ed61dd87b2954f72a78_dep.png +html/dir_6e6e4d5e89221ed61dd87b2954f72a78_dep.md5 +html/dir_6e6e4d5e89221ed61dd87b2954f72a78_dep.map +html/dir_6e6e4d5e89221ed61dd87b2954f72a78.html +html/dir_6de1940466803d61d2f9d1259cb01031.html +html/dir_5a912e51f6f9520965e8671f07512599_dep.png +html/dir_5a912e51f6f9520965e8671f07512599_dep.md5 +html/dir_5a912e51f6f9520965e8671f07512599_dep.map +html/dir_5a912e51f6f9520965e8671f07512599.html +html/dir_4c7002aef9ece892c0aedd728ed93eff.html +html/dir_498fbcdef69ea105b96b8673d051b2e3_dep.png +html/dir_498fbcdef69ea105b96b8673d051b2e3_dep.md5 +html/dir_498fbcdef69ea105b96b8673d051b2e3_dep.map +html/dir_498fbcdef69ea105b96b8673d051b2e3.html +html/dir_46819ec1095f3903911c103f5ebbb29f_dep.png +html/dir_46819ec1095f3903911c103f5ebbb29f_dep.md5 +html/dir_46819ec1095f3903911c103f5ebbb29f_dep.map +html/dir_46819ec1095f3903911c103f5ebbb29f.html +html/dir_4396dcc0e095a5bc10b1affe087807cf_dep.png +html/dir_4396dcc0e095a5bc10b1affe087807cf_dep.md5 +html/dir_4396dcc0e095a5bc10b1affe087807cf_dep.map +html/dir_4396dcc0e095a5bc10b1affe087807cf.html +html/dir_337e147d8ae2958ef29ccaa8e2f968db_dep.png +html/dir_337e147d8ae2958ef29ccaa8e2f968db_dep.md5 +html/dir_337e147d8ae2958ef29ccaa8e2f968db_dep.map +html/dir_337e147d8ae2958ef29ccaa8e2f968db.html +html/dir_2c7bb40a7e5a6685f00216dd2909cd99_dep.png +html/dir_2c7bb40a7e5a6685f00216dd2909cd99_dep.md5 +html/dir_2c7bb40a7e5a6685f00216dd2909cd99_dep.map +html/dir_2c7bb40a7e5a6685f00216dd2909cd99.html +html/dir_2c1dd796c287ab9a5cf44281d8a3cbeb.html +html/dir_072fcb7a67163ce1d8f22ad4144c7e08.html +html/dir_000020_000002.html +html/dir_000019_000002.html +html/dir_000018_000002.html +html/dir_000017_000002.html +html/dir_000015_000016.html +html/dir_000015_000002.html +html/dir_000014_000015.html +html/dir_000014_000002.html +html/dir_000013_000002.html +html/dir_000012_000002.html +html/dir_000011_000002.html +html/dir_000010_000002.html +html/dir_000009_000002.html +html/dir_000002_000007.html +html/dir_000002_000004.html +html/dir_000001_000002.html +html/dhcp_8h_source.html +html/dhcp_8h__dep__incl.png +html/dhcp_8h__dep__incl.md5 +html/dhcp_8h__dep__incl.map +html/dhcp_8h.html +html/dhcp_8c_source.html +html/dhcp_8c__incl.png +html/dhcp_8c__incl.md5 +html/dhcp_8c__incl.map +html/dhcp_8c.html +html/closed.png +html/classes.html +html/bdwn.png +html/bc_s.png +html/annotated.html +html/_w_i_znet___s_o_c_k_e_t_8jpg_source.html +html/_w_i_znet___s_o_c_k_e_t_8jpg.html +html/_stack_trace_8h_source.html +html/_stack_trace_8h__incl.png +html/_stack_trace_8h__incl.md5 +html/_stack_trace_8h__incl.map +html/_stack_trace_8h__dep__incl.png +html/_stack_trace_8h__dep__incl.md5 +html/_stack_trace_8h__dep__incl.map +html/_stack_trace_8h.html +html/_readme_8txt.html +html/_r_e_a_d_m_e_8md_source.html +html/_r_e_a_d_m_e_8md.html +html/_main__page_8txt.html +html/_m_q_t_t_unsubscribe_server_8c_source.html +html/_m_q_t_t_unsubscribe_server_8c__incl.png +html/_m_q_t_t_unsubscribe_server_8c__incl.md5 +html/_m_q_t_t_unsubscribe_server_8c__incl.map +html/_m_q_t_t_unsubscribe_server_8c.html +html/_m_q_t_t_unsubscribe_client_8c_source.html +html/_m_q_t_t_unsubscribe_client_8c__incl.png +html/_m_q_t_t_unsubscribe_client_8c__incl.md5 +html/_m_q_t_t_unsubscribe_client_8c__incl.map +html/_m_q_t_t_unsubscribe_client_8c.html +html/_m_q_t_t_unsubscribe_8h_source.html +html/_m_q_t_t_unsubscribe_8h__dep__incl.png +html/_m_q_t_t_unsubscribe_8h__dep__incl.md5 +html/_m_q_t_t_unsubscribe_8h__dep__incl.map +html/_m_q_t_t_unsubscribe_8h.html +html/_m_q_t_t_subscribe_server_8c_source.html +html/_m_q_t_t_subscribe_server_8c__incl.png +html/_m_q_t_t_subscribe_server_8c__incl.md5 +html/_m_q_t_t_subscribe_server_8c__incl.map +html/_m_q_t_t_subscribe_server_8c.html +html/_m_q_t_t_subscribe_client_8c_source.html +html/_m_q_t_t_subscribe_client_8c__incl.png +html/_m_q_t_t_subscribe_client_8c__incl.md5 +html/_m_q_t_t_subscribe_client_8c__incl.map +html/_m_q_t_t_subscribe_client_8c.html +html/_m_q_t_t_subscribe_8h_source.html +html/_m_q_t_t_subscribe_8h__dep__incl.png +html/_m_q_t_t_subscribe_8h__dep__incl.md5 +html/_m_q_t_t_subscribe_8h__dep__incl.map +html/_m_q_t_t_subscribe_8h.html +html/_m_q_t_t_serialize_publish_8c_source.html +html/_m_q_t_t_serialize_publish_8c__incl.png +html/_m_q_t_t_serialize_publish_8c__incl.md5 +html/_m_q_t_t_serialize_publish_8c__incl.map +html/_m_q_t_t_serialize_publish_8c.html +html/_m_q_t_t_publish_8h_source.html +html/_m_q_t_t_publish_8h__dep__incl.png +html/_m_q_t_t_publish_8h__dep__incl.md5 +html/_m_q_t_t_publish_8h__dep__incl.map +html/_m_q_t_t_publish_8h.html +html/_m_q_t_t_packet_8h_source.html +html/_m_q_t_t_packet_8h__incl.png +html/_m_q_t_t_packet_8h__incl.md5 +html/_m_q_t_t_packet_8h__incl.map +html/_m_q_t_t_packet_8h__dep__incl.png +html/_m_q_t_t_packet_8h__dep__incl.md5 +html/_m_q_t_t_packet_8h__dep__incl.map +html/_m_q_t_t_packet_8h.html +html/_m_q_t_t_packet_8c_source.html +html/_m_q_t_t_packet_8c__incl.png +html/_m_q_t_t_packet_8c__incl.md5 +html/_m_q_t_t_packet_8c__incl.map +html/_m_q_t_t_packet_8c.html +html/_m_q_t_t_format_8h_source.html +html/_m_q_t_t_format_8h__incl.png +html/_m_q_t_t_format_8h__incl.md5 +html/_m_q_t_t_format_8h__incl.map +html/_m_q_t_t_format_8h__dep__incl.png +html/_m_q_t_t_format_8h__dep__incl.md5 +html/_m_q_t_t_format_8h__dep__incl.map +html/_m_q_t_t_format_8h.html +html/_m_q_t_t_format_8c_source.html +html/_m_q_t_t_format_8c__incl.png +html/_m_q_t_t_format_8c__incl.md5 +html/_m_q_t_t_format_8c__incl.map +html/_m_q_t_t_format_8c.html +html/_m_q_t_t_deserialize_publish_8c_source.html +html/_m_q_t_t_deserialize_publish_8c__incl.png +html/_m_q_t_t_deserialize_publish_8c__incl.md5 +html/_m_q_t_t_deserialize_publish_8c__incl.map +html/_m_q_t_t_deserialize_publish_8c.html +html/_m_q_t_t_connect_server_8c_source.html +html/_m_q_t_t_connect_server_8c__incl.png +html/_m_q_t_t_connect_server_8c__incl.md5 +html/_m_q_t_t_connect_server_8c__incl.map +html/_m_q_t_t_connect_server_8c.html +html/_m_q_t_t_connect_client_8c_source.html +html/_m_q_t_t_connect_client_8c__incl.png +html/_m_q_t_t_connect_client_8c__incl.md5 +html/_m_q_t_t_connect_client_8c__incl.map +html/_m_q_t_t_connect_client_8c.html +html/_m_q_t_t_connect_8h_source.html +html/_m_q_t_t_connect_8h__dep__incl.png +html/_m_q_t_t_connect_8h__dep__incl.md5 +html/_m_q_t_t_connect_8h__dep__incl.map +html/_m_q_t_t_connect_8h.html +html/_m_q_t_t_client_8h_source.html +html/_m_q_t_t_client_8h__incl.png +html/_m_q_t_t_client_8h__incl.md5 +html/_m_q_t_t_client_8h__incl.map +html/_m_q_t_t_client_8h__dep__incl.png +html/_m_q_t_t_client_8h__dep__incl.md5 +html/_m_q_t_t_client_8h__dep__incl.map +html/_m_q_t_t_client_8h.html +html/_m_q_t_t_client_8c_source.html +html/_m_q_t_t_client_8c__incl.png +html/_m_q_t_t_client_8c__incl.md5 +html/_m_q_t_t_client_8c__incl.map +html/_m_q_t_t_client_8c.html +html/_f_t_p_server_2stdio__private_8h_source.html +html/_f_t_p_server_2stdio__private_8h__incl.png +html/_f_t_p_server_2stdio__private_8h__incl.md5 +html/_f_t_p_server_2stdio__private_8h__incl.map +html/_f_t_p_server_2stdio__private_8h__dep__incl.png +html/_f_t_p_server_2stdio__private_8h__dep__incl.md5 +html/_f_t_p_server_2stdio__private_8h__dep__incl.map +html/_f_t_p_server_2stdio__private_8h.html +html/_f_t_p_client_2stdio__private_8h_source.html +html/_f_t_p_client_2stdio__private_8h__incl.png +html/_f_t_p_client_2stdio__private_8h__incl.md5 +html/_f_t_p_client_2stdio__private_8h__incl.map +html/_f_t_p_client_2stdio__private_8h__dep__incl.png +html/_f_t_p_client_2stdio__private_8h__dep__incl.md5 +html/_f_t_p_client_2stdio__private_8h__dep__incl.map +html/_f_t_p_client_2stdio__private_8h.html +html/_berkeley___s_o_c_k_e_t_8jpg_source.html +html/_berkeley___s_o_c_k_e_t_8jpg.html +html/WIZnet_SOCKET.jpg +html/Berkeley_SOCKET.jpg +Main_page.txt +Doxyfile +man/man3/sntp.c.3 +man/man3/snmp_module.3 +man/man3/snmp_custom.h.3 +man/man3/snmp_custom.c.3 +man/man3/snmp.h.3 +man/man3/snmp.c.3 +man/man3/netutil.h.3 +man/man3/netutil.c.3 +man/man3/mqtt_interface.h.3 +man/man3/mqtt_interface.c.3 +man/man3/messageStruct.3 +man/man3/md__r_e_a_d_m_e.3 +man/man3/loopback.h.3 +man/man3/loopback.c.3 +man/man3/license.txt.3 +man/man3/httpUtil.h.3 +man/man3/_datetime.3 +man/man3/__file.3 +man/man3/__WIZCHIP__IF.3 +man/man3/__WIZCHIP__CS.3 +man/man3/__WIZCHIP__CRIS.3 +man/man3/__WIZCHIP.3 +man/man3/WIZnet_socket_APIs.3 +man/man3/WIZnet_SOCKET.jpg.3 +man/man3/WIZCHIP_register.3 +man/man3/WIZCHIP_IO_Functions_W5300.3 +man/man3/WIZCHIP_IO_Functions_W5200.3 +man/man3/WIZCHIP_IO_Functions_W5100S.3 +man/man3/W5500.3 +man/man3/W5300.3 +man/man3/W5100S.3 +man/man3/w5200.c.3 +man/man3/w5100s.h.3 +man/man3/w5100s.c.3 +man/man3/w5100.h.3 +man/man3/w5100.c.3 +man/man3/todo.3 +man/man3/tlvStructType.3 +man/man3/tftp_option.3 +man/man3/tftp_error.3 +man/man3/tftp_data.3 +man/man3/tftp.h.3 +man/man3/tftp.c.3 +man/man3/stdio_private.h.3 +man/man3/socket.h.3 +man/man3/socket.c.3 +man/man3/sntp.h.3 +man/man3/httpUtil.c.3 +man/man3/httpServer.h.3 +man/man3/httpServer.c.3 +man/man3/httpParser.h.3 +man/man3/httpParser.c.3 +man/man3/ftpd.h.3 +man/man3/ftpd.c.3 +man/man3/ftpd.3 +man/man3/WIZCHIP_register_W5300.3 +man/man3/WIZCHIP_register_W5200.3 +man/man3/WIZCHIP_register_W5100S.3 +man/man3/WIZCHIP_register_W5100.3 +man/man3/WIZCHIP_IO_Functions_W5100.3 +man/man3/WIZCHIP_IO_Functions.3 +man/man3/W5200.3 diff --git a/User/ioLibrary_Driver/.gitmodules b/User/ioLibrary_Driver/.gitmodules new file mode 100644 index 0000000..e69de29 diff --git a/User/ioLibrary_Driver/Application/loopback/loopback.h b/User/ioLibrary_Driver/Application/loopback/loopback.h new file mode 100644 index 0000000..8f5a3d6 --- /dev/null +++ b/User/ioLibrary_Driver/Application/loopback/loopback.h @@ -0,0 +1,38 @@ +#ifndef _LOOPBACK_H_ +#define _LOOPBACK_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* Loopback test debug message printout enable */ +#define _LOOPBACK_DEBUG_ + +/* DATA_BUF_SIZE define for Loopback example */ +#ifndef DATA_BUF_SIZE + #define DATA_BUF_SIZE 2048 +#endif + +/************************/ +/* Select LOOPBACK_MODE */ +/************************/ +#define LOOPBACK_MAIN_NOBLOCK 0 +#define LOOPBACK_MODE LOOPBACK_MAIN_NOBLOCK + + +/* TCP server Loopback test example */ +int32_t loopback_tcps(uint8_t sn, uint8_t* buf, uint16_t port); + +/* TCP client Loopback test example */ +int32_t loopback_tcpc(uint8_t sn, uint8_t* buf, uint8_t* destip, uint16_t destport); + +/* UDP Loopback test example */ +int32_t loopback_udps(uint8_t sn, uint8_t* buf, uint16_t port); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/User/ioLibrary_Driver/Application/multicast/multicast.c b/User/ioLibrary_Driver/Application/multicast/multicast.c new file mode 100644 index 0000000..6b9aff0 --- /dev/null +++ b/User/ioLibrary_Driver/Application/multicast/multicast.c @@ -0,0 +1,113 @@ +#include "multicast.h" +#include +#include "socket.h" +#include "wizchip_conf.h" + + +int32_t multicast_loopback(uint8_t sn, uint8_t* buf, uint8_t* multicast_ip, uint16_t multicast_port) +{ + int32_t ret; + uint16_t size, sentsize; + uint8_t destip[4]; + uint16_t destport, port=3000; + + switch(getSn_SR(sn)) + { + case SOCK_UDP : + if((size = getSn_RX_RSR(sn)) > 0) + { + if(size > DATA_BUF_SIZE) size = DATA_BUF_SIZE; + ret = recvfrom(sn, buf, size, destip, (uint16_t*)&destport); + if(ret <= 0) + { +#ifdef _MULTICAST_DEBUG_ + printf("%d: recvfrom error. %ld\r\n",sn,ret); +#endif + return ret; + } + size = (uint16_t) ret; + sentsize = 0; + while(sentsize != size) + { + ret = sendto(sn, buf+sentsize, size-sentsize, destip, destport); + if(ret < 0) + { +#ifdef _MULTICAST_DEBUG_ + printf("%d: sendto error. %ld\r\n",sn,ret); +#endif + return ret; + } + sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero. + } + } + + break; + case SOCK_CLOSED: +#ifdef _MULTICAST_DEBUG_ + printf("%d:Multicast Loopback start\r\n",sn); +#endif + setSn_DIPR(0, multicast_ip); + setSn_DPORT(0, multicast_port); + if((ret = socket(sn, Sn_MR_UDP, port, Sn_MR_MULTI)) != sn) + return ret; +#ifdef _MULTICAST_DEBUG_ + printf("%d:Opened, UDP Multicast Socket\r\n", sn); + printf("%d:Multicast Group IP - %d.%d.%d.%d\r\n", sn, multicast_ip[0], multicast_ip[1], multicast_ip[2], multicast_ip[3]); + printf("%d:Multicast Group Port - %d\r\n", sn, multicast_port); +#endif + break; + default : + break; + } + return 1; +} + +int32_t multicast_recv(uint8_t sn, uint8_t* buf, uint8_t* multicast_ip, uint16_t multicast_port) +{ + int32_t ret; + uint16_t size, port=3000; + uint8_t destip[4]; + uint16_t destport; + + switch(getSn_SR(sn)) + { + case SOCK_UDP : + if((size = getSn_RX_RSR(sn)) > 0) + { + if(size > DATA_BUF_SIZE) size = DATA_BUF_SIZE; + ret = recvfrom(sn, buf, size, destip, (uint16_t*)&destport); + if(ret <= 0) + { +#ifdef _MULTICAST_DEBUG_ + printf("%d: recvfrom error. %ld\r\n",sn,ret); +#endif + return ret; + } + size = (uint16_t) ret; +#ifdef _MULTICAST_DEBUG_ + printf("\r\nrecv size : %d\r\n", size); + for(int i=0; i + +/* Multicast test debug message printout enable */ +#define _MULTICAST_DEBUG_ + +#ifndef DATA_BUF_SIZE + #define DATA_BUF_SIZE 2048 +#endif + +/* UDP Multicast Loopback test example */ +int32_t multicast_loopback(uint8_t sn, uint8_t* buf, uint8_t* multicast_ip, uint16_t multicast_port); + +/* UDP Multicast Recv test example */ +int32_t multicast_recv(uint8_t sn, uint8_t* buf, uint8_t* multicast_ip, uint16_t multicast_port); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/User/ioLibrary_Driver/Ethernet/Socket_APIs_V3.0.3.chm b/User/ioLibrary_Driver/Ethernet/Socket_APIs_V3.0.3.chm new file mode 100644 index 0000000..35ed512 Binary files /dev/null and b/User/ioLibrary_Driver/Ethernet/Socket_APIs_V3.0.3.chm differ diff --git a/User/ioLibrary_Driver/Ethernet/W5100/w5100.c b/User/ioLibrary_Driver/Ethernet/W5100/w5100.c new file mode 100644 index 0000000..ab3ebf8 --- /dev/null +++ b/User/ioLibrary_Driver/Ethernet/W5100/w5100.c @@ -0,0 +1,386 @@ +//***************************************************************************** +// +//! \file w5100.c +//! \brief W5100 HAL Interface. +//! \version 1.0.0 +//! \date 2013/10/21 +//! \par Revision history +//! <2013/10/21> 1st Release +//! \author MidnightCow +//! +//! Copyright (c) 2013, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** + +#include "w5100.h" + +#if (_WIZCHIP_ == 5100) +/** +@brief This function writes the data into W5100 registers. +*/ +void WIZCHIP_WRITE(uint32_t AddrSel, uint8_t wb ) +{ + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); + +#if( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_)) + WIZCHIP.IF.SPI._write_byte(0xF0); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF) >> 0); + WIZCHIP.IF.SPI._write_byte(wb); // Data write (write 1byte data) +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_) ) + //M20150601 : Rename the function for integrating with ioLibrary + //WIZCHIP.IF.BUS._write_byte(AddrSel,wb); + WIZCHIP.IF.BUS._write_data(AddrSel,wb); +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_) ) + + //add indirect bus + //M20150601 : Rename the function for integrating with ioLibrary + //WIZCHIP.IF.BUS._write_byte(IDM_AR0,(AddrSel & 0xFF00) >> 8); + //WIZCHIP.IF.BUS._write_byte(IDM_AR1,(AddrSel & 0x00FF)); + //WIZCHIP.IF.BUS._write_byte(IDM_DR,wb); + WIZCHIP.IF.BUS._write_data(IDM_AR0,(AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.BUS._write_data(IDM_AR1,(AddrSel & 0x00FF)); + WIZCHIP.IF.BUS._write_data(IDM_DR,wb); +#else + #error "Unknown _WIZCHIP_IO_MODE_ in W5100. !!!" +#endif + + WIZCHIP.CS._deselect(); + WIZCHIP_CRITICAL_EXIT(); +} +/** +@brief This function reads the value from W5100 registers. +*/ +uint8_t WIZCHIP_READ(uint32_t AddrSel) +{ + uint8_t ret; + + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); + +#if( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_)) + WIZCHIP.IF.SPI._write_byte(0x0F); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF) >> 0); + ret = WIZCHIP.IF.SPI._read_byte(); +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_) ) + //M20150601 : Rename the function for integrating with ioLibrary + //ret = WIZCHIP.IF.BUS._read_byte(AddrSel); + ret = WIZCHIP.IF.BUS._read_data(AddrSel); +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_) ) + + //add indirect bus + //M20150601 : Rename the function for integrating with ioLibrary + //WIZCHIP.IF.BUS._write_byte(IDM_AR0,(AddrSel & 0xFF00) >> 8); + //WIZCHIP.IF.BUS._write_byte(IDM_AR1,(AddrSel & 0x00FF)); + //ret = WIZCHIP.IF.BUS._read_byte(IDM_DR); + WIZCHIP.IF.BUS._write_data(IDM_AR0,(AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.BUS._write_data(IDM_AR1,(AddrSel & 0x00FF)); + ret = WIZCHIP.IF.BUS._read_data(IDM_DR); + +#else + #error "Unknown _WIZCHIP_IO_MODE_ in W5100. !!!" +#endif + + WIZCHIP.CS._deselect(); + WIZCHIP_CRITICAL_EXIT(); + return ret; +} + + +/** +@brief This function writes into W5100 memory(Buffer) +*/ +void WIZCHIP_WRITE_BUF(uint32_t AddrSel, uint8_t* pBuf, uint16_t len) +{ + uint16_t i = 0; + + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); //M20150601 : Moved here. + +#if( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_)) + for(i = 0; i < len; i++) + { + //M20160715 : Depricated "M20150601 : Remove _select() to top-side" + // CS should be controlled every SPI frames + WIZCHIP.CS._select(); + WIZCHIP.IF.SPI._write_byte(0xF0); + WIZCHIP.IF.SPI._write_byte((((uint16_t)(AddrSel+i)) & 0xFF00) >> 8); + WIZCHIP.IF.SPI._write_byte((((uint16_t)(AddrSel+i)) & 0x00FF) >> 0); + WIZCHIP.IF.SPI._write_byte(pBuf[i]); // Data write (write 1byte data) + //M20160715 : Depricated "M20150601 : Remove _select() to top-side" + WIZCHIP.CS._deselect(); + } +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_) ) + for(i = 0; i < len; i++) + //M20150601 : Rename the function for integrating with ioLibrary + // WIZCHIP.IF.BUS._write_byte(AddrSel+i,pBuf[i]); + WIZCHIP.IF.BUS._write_data(AddrSel+i,pBuf[i]); +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_) ) + //M20150601 : Rename the function for integrating with ioLibrary + /* + WIZCHIP_WRITE(MR,WIZCHIP_READ(MR) | MR_AI); + WIZCHIP.IF.BUS._write_byte(IDM_AR0,(AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.BUS._write_byte(IDM_AR1,(AddrSel & 0x00FF)); + for(i = 0 ; i < len; i++) + WIZCHIP.IF.BUS._write_byte(IDM_DR,pBuf[i]); + WIZCHIP_WRITE(MR, WIZCHIP_READ(MR) & ~MR_AI); + */ + setMR(getMR()|MR_AI); + WIZCHIP.IF.BUS._write_data(IDM_AR0,(AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.BUS._write_data(IDM_AR1,(AddrSel & 0x00FF)); + for(i = 0 ; i < len; i++) + WIZCHIP.IF.BUS._write_data(IDM_DR,pBuf[i]); + setMR(getMR() & ~MR_AI); + +#else + #error "Unknown _WIZCHIP_IO_MODE_ in W5100. !!!!" +#endif + + WIZCHIP.CS._deselect(); //M20150601 : Moved here. + WIZCHIP_CRITICAL_EXIT(); +} + +/** +@brief This function reads into W5100 memory(Buffer) +*/ + +void WIZCHIP_READ_BUF (uint32_t AddrSel, uint8_t* pBuf, uint16_t len) +{ + uint16_t i = 0; + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); //M20150601 : Moved here. + + #if( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_)) + for(i = 0; i < len; i++) + { + //M20160715 : Depricated "M20150601 : Remove _select() to top-side" + // CS should be controlled every SPI frames + WIZCHIP.CS._select(); + WIZCHIP.IF.SPI._write_byte(0x0F); + WIZCHIP.IF.SPI._write_byte((uint16_t)((AddrSel+i) & 0xFF00) >> 8); + WIZCHIP.IF.SPI._write_byte((uint16_t)((AddrSel+i) & 0x00FF) >> 0); + pBuf[i] = WIZCHIP.IF.SPI._read_byte(); + //M20160715 : Depricated "M20150601 : Remove _select() to top-side" + WIZCHIP.CS._deselect(); + } +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_) ) + for(i = 0 ; i < len; i++) + //M20150601 : Rename the function for integrating with ioLibrary + // pBuf[i] = WIZCHIP.IF.BUS._read_byte(AddrSel+i); + pBuf[i] = WIZCHIP.IF.BUS._read_data(AddrSel+i); +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_) ) + //M20150601 : Rename the function for integrating with ioLibrary + /* + WIZCHIP_WRITE(MR, WIZCHIP_READ(MR) | MR_AI); + WIZCHIP.IF.BUS._write_byte(IDM_AR0,(AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.BUS._write_byte(IDM_AR1,(AddrSel & 0x00FF)); + for(i = 0 ; i < len; i++) + pBuf[i] = WIZCHIP.IF.BUS._read_byte(IDM_DR); + WIZCHIP_WRITE(MR, WIZCHIP_READ(MR) & ~MR_AI); + */ + setMR(getMR() | MR_AI); + WIZCHIP.IF.BUS._write_data(IDM_AR0,(AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.BUS._write_data(IDM_AR1,(AddrSel & 0x00FF)); + for(i = 0 ; i < len; i++) + pBuf[i] = WIZCHIP.IF.BUS._read_data(IDM_DR); + setMR(getMR() & ~MR_AI); + +#else + #error "Unknown _WIZCHIP_IO_MODE_ in W5100. !!!!" +#endif + + WIZCHIP.CS._deselect(); //M20150601 : Moved Here. + WIZCHIP_CRITICAL_EXIT(); +} + +/////////////////////////////////// +// Socket N regsiter IO function // +/////////////////////////////////// + +uint16_t getSn_TX_FSR(uint8_t sn) +{ + uint16_t val=0,val1=0; + do + { + val1 = WIZCHIP_READ(Sn_TX_FSR(sn)); + val1 = (val1 << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_FSR(sn),1)); + if (val1 != 0) + { + val = WIZCHIP_READ(Sn_TX_FSR(sn)); + val = (val << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_FSR(sn),1)); + } + }while (val != val1); + return val; +} + + +uint16_t getSn_RX_RSR(uint8_t sn) +{ + uint16_t val=0,val1=0; + do + { + val1 = WIZCHIP_READ(Sn_RX_RSR(sn)); + val1 = (val1 << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RSR(sn),1)); + if (val1 != 0) + { + val = WIZCHIP_READ(Sn_RX_RSR(sn)); + val = (val << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RSR(sn),1)); + } + }while (val != val1); + return val; +} + +///////////////////////////////////// +// Sn_TXBUF & Sn_RXBUF IO function // +///////////////////////////////////// +uint32_t getSn_RxBASE(uint8_t sn) +{ + int8_t i; +#if ( _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_) + uint32_t rxbase = _W5100_IO_BASE_ + _WIZCHIP_IO_RXBUF_; +#else + uint32_t rxbase = _WIZCHIP_IO_RXBUF_; +#endif + for(i = 0; i < sn; i++) + rxbase += getSn_RxMAX(i); + + return rxbase; +} + +uint32_t getSn_TxBASE(uint8_t sn) +{ + int8_t i; +#if ( _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_) + uint32_t txbase = _W5100_IO_BASE_ + _WIZCHIP_IO_TXBUF_; +#else + uint32_t txbase = _WIZCHIP_IO_TXBUF_; +#endif + for(i = 0; i < sn; i++) + txbase += getSn_TxMAX(i); + return txbase; +} + +/** +@brief This function is being called by send() and sendto() function also. for copy the data form application buffer to Transmite buffer of the chip. + +This function read the Tx write pointer register and after copy the data in buffer update the Tx write pointer +register. User should read upper byte first and lower byte later to get proper value. +And this function is being used for copy the data form application buffer to Transmite +buffer of the chip. It calculate the actual physical address where one has to write +the data in transmite buffer. Here also take care of the condition while it exceed +the Tx memory uper-bound of socket. + +*/ +void wiz_send_data(uint8_t sn, uint8_t *wizdata, uint16_t len) +{ + uint16_t ptr; + uint16_t size; + uint16_t dst_mask; + uint16_t dst_ptr; + + ptr = getSn_TX_WR(sn); + + dst_mask = ptr & getSn_TxMASK(sn); + dst_ptr = getSn_TxBASE(sn) + dst_mask; + + if (dst_mask + len > getSn_TxMAX(sn)) + { + size = getSn_TxMAX(sn) - dst_mask; + WIZCHIP_WRITE_BUF(dst_ptr, wizdata, size); + wizdata += size; + size = len - size; + dst_ptr = getSn_TxBASE(sn); + WIZCHIP_WRITE_BUF(dst_ptr, wizdata, size); + } + else + { + WIZCHIP_WRITE_BUF(dst_ptr, wizdata, len); + } + + ptr += len; + + setSn_TX_WR(sn, ptr); +} + + +/** +@brief This function is being called by recv() also. This function is being used for copy the data form Receive buffer of the chip to application buffer. + +This function read the Rx read pointer register +and after copy the data from receive buffer update the Rx write pointer register. +User should read upper byte first and lower byte later to get proper value. +It calculate the actual physical address where one has to read +the data from Receive buffer. Here also take care of the condition while it exceed +the Rx memory uper-bound of socket. +*/ +void wiz_recv_data(uint8_t sn, uint8_t *wizdata, uint16_t len) +{ + uint16_t ptr; + uint16_t size; + uint16_t src_mask; + uint16_t src_ptr; + + ptr = getSn_RX_RD(sn); + + src_mask = (uint32_t)ptr & getSn_RxMASK(sn); + src_ptr = (getSn_RxBASE(sn) + src_mask); + + + if( (src_mask + len) > getSn_RxMAX(sn) ) + { + size = getSn_RxMAX(sn) - src_mask; + WIZCHIP_READ_BUF((uint32_t)src_ptr, (uint8_t*)wizdata, size); + wizdata += size; + size = len - size; + src_ptr = getSn_RxBASE(sn); + WIZCHIP_READ_BUF(src_ptr, (uint8_t*)wizdata, size); + } + else + { + WIZCHIP_READ_BUF(src_ptr, (uint8_t*)wizdata, len); + } + + ptr += len; + + setSn_RX_RD(sn, ptr); +} + +void wiz_recv_ignore(uint8_t sn, uint16_t len) +{ + uint16_t ptr; + + ptr = getSn_RX_RD(sn); + + ptr += len; + setSn_RX_RD(sn,ptr); +} + +#endif diff --git a/User/ioLibrary_Driver/Ethernet/W5100/w5100.h b/User/ioLibrary_Driver/Ethernet/W5100/w5100.h new file mode 100644 index 0000000..3396955 --- /dev/null +++ b/User/ioLibrary_Driver/Ethernet/W5100/w5100.h @@ -0,0 +1,1865 @@ +//* **************************************************************************** +//! \file w5100.h +//! \brief W5100 HAL Header File. +//! \version 1.0.0 +//! \date 2013/10/21 +//! \par Revision history +//! <2013/10/21> 1st Release +//! \author MidnightCow +//! \copyright +//! +//! Copyright (c) 2013, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** + +#ifndef _W5100_H_ +#define _W5100_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "wizchip_conf.h" + +/// \cond DOXY_APPLY_CODE +#if (_WIZCHIP_ == 5100) +/// \endcond + +#define _WIZCHIP_SN_BASE_ (0x0400) +#define _WIZCHIP_SN_SIZE_ (0x0100) +#define _WIZCHIP_IO_TXBUF_ (0x4000) /* Internal Tx buffer address of the iinchip */ +#define _WIZCHIP_IO_RXBUF_ (0x6000) /* Internal Rx buffer address of the iinchip */ + + +#define WIZCHIP_CREG_BLOCK 0x00 ///< Common register block +#define WIZCHIP_SREG_BLOCK(N) (_WIZCHIP_SN_BASE_+ _WIZCHIP_SN_SIZE_*N) ///< Socket N register block + +#define WIZCHIP_OFFSET_INC(ADDR, N) (ADDR + N) ///< Increase offset address + +#if (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_) + #define _W5100_IO_BASE_ _WIZCHIP_IO_BASE_ +#elif (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_) + #define IDM_OR ((_WIZCHIP_IO_BASE + 0x0000)) + #define IDM_AR0 ((_WIZCHIP_IO_BASE_ + 0x0001)) + #define IDM_AR1 ((_WIZCHIP_IO_BASE_ + 0x0002)) + #define IDM_DR ((_WIZCHIP_IO_BASE_ + 0x0003)) + #define _W5100_IO_BASE_ 0x0000 +#elif (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_) + #define _W5100_IO_BASE_ 0x0000 +#endif + +/////////////////////////////////////// +// Definition For Legacy Chip Driver // +/////////////////////////////////////// +#define IINCHIP_READ(ADDR) WIZCHIP_READ(ADDR) ///< The defined for legacy chip driver +#define IINCHIP_WRITE(ADDR,VAL) WIZCHIP_WRITE(ADDR,VAL) ///< The defined for legacy chip driver +#define IINCHIP_READ_BUF(ADDR,BUF,LEN) WIZCHIP_READ_BUF(ADDR,BUF,LEN) ///< The defined for legacy chip driver +#define IINCHIP_WRITE_BUF(ADDR,BUF,LEN) WIZCHIP_WRITE(ADDR,BUF,LEN) ///< The defined for legacy chip driver + + +//----------- defgroup -------------------------------- + +/** + * @defgroup W5100 W5100 + * @brief WHIZCHIP register defines and I/O functions of @b W5100. + * + * - @ref WIZCHIP_register_W5100 : @ref Common_register_group_W5100 and @ref Socket_register_group_W5100 + * - @ref WIZCHIP_IO_Functions_W5100 : @ref Basic_IO_function_W5100, @ref Common_register_access_function_W5100 and @ref Socket_register_group_W5100 + */ + + /** + * @defgroup WIZCHIP_register_W5100 WIZCHIP register + * @ingroup W5100 + * @brief WIZCHIP register defines register group of W5100 . + * + * - \ref Common_register_group_W5100 : Common register group W5100 + * - \ref Socket_register_group_W5100 : \c SOCKET n register group W5100 + */ + + +/** + * @defgroup WIZCHIP_IO_Functions_W5100 WIZCHIP I/O functions + * @ingroup W5100 + * @brief This supports the basic I/O functions for \ref WIZCHIP_register_W5100. + * + * - Basic I/O function \n + * WIZCHIP_READ(), WIZCHIP_WRITE(), WIZCHIP_READ_BUF(), WIZCHIP_WRITE_BUF() \n\n + * + * - \ref Common_register_group_W5100 access functions \n + * -# @b Mode \n + * getMR(), setMR() + * -# @b Interrupt \n + * getIR(), setIR(), getIMR(), setIMR(), + * -# Network Information \n + * getSHAR(), setSHAR(), getGAR(), setGAR(), getSUBR(), setSUBR(), getSIPR(), setSIPR() + * -# @b Retransmission \n + * getRCR(), setRCR(), getRTR(), setRTR() + * -# @b PPPoE \n + * getPTIMER(), setPTIMER(), getPMAGIC(), getPMAGIC() + * + * - \ref Socket_register_group_W5100 access functions \n + * -# SOCKET control \n + * getSn_MR(), setSn_MR(), getSn_CR(), setSn_CR(), getSn_IR(), setSn_IR() + * -# SOCKET information \n + * getSn_SR(), getSn_DHAR(), setSn_DHAR(), getSn_PORT(), setSn_PORT(), getSn_DIPR(), setSn_DIPR(), getSn_DPORT(), setSn_DPORT() + * getSn_MSSR(), setSn_MSSR() + * -# SOCKET communication \n + * getSn_RXMEM_SIZE(), setSn_RXMEM_SIZE(), getSn_TXMEM_SIZE(), setSn_TXMEM_SIZE() \n + * getSn_TX_RD(), getSn_TX_WR(), setSn_TX_WR() \n + * getSn_RX_RD(), setSn_RX_RD(), getSn_RX_WR() \n + * getSn_TX_FSR(), getSn_RX_RSR() + * -# IP header field \n + * getSn_FRAG(), setSn_FRAG(), getSn_TOS(), setSn_TOS() \n + * getSn_TTL(), setSn_TTL() + */ + +/** + * @defgroup Common_register_group_W5100 Common register + * @ingroup WIZCHIP_register_W5100 + * @brief Common register group\n + * It set the basic for the networking\n + * It set the configuration such as interrupt, network information, ICMP, etc. + * @details + * @sa MR : Mode register. + * @sa GAR, SUBR, SHAR, SIPR + * @sa IR, Sn_IR, _IMR_ : Interrupt. + * @sa _RTR_, _RCR_ : Data retransmission. + * @sa PTIMER, PMAGIC : PPPoE. + */ + + + /** + * @defgroup Socket_register_group_W5100 Socket register + * @ingroup WIZCHIP_register_W5100 + * @brief Socket register group\n + * Socket register configures and control SOCKETn which is necessary to data communication. + * @details + * @sa Sn_MR, Sn_CR, Sn_IR : SOCKETn Control + * @sa Sn_SR, Sn_PORT, Sn_DHAR, Sn_DIPR, Sn_DPORT : SOCKETn Information + * @sa Sn_MSSR, Sn_TOS, Sn_TTL, Sn_FRAG : Internet protocol. + * @sa Sn_RXMEM_SIZE, Sn_TXMEM_SIZE, Sn_TX_FSR, Sn_TX_RD, Sn_TX_WR, Sn_RX_RSR, Sn_RX_RD, Sn_RX_WR : Data communication + */ + + /** + * @defgroup Basic_IO_function_W5100 Basic I/O function + * @ingroup WIZCHIP_IO_Functions_W5100 + * @brief These are basic input/output functions to read values from register or write values to register. + */ + +/** + * @defgroup Common_register_access_function_W5100 Common register access functions + * @ingroup WIZCHIP_IO_Functions_W5100 + * @brief These are functions to access common registers. + */ + +/** + * @defgroup Socket_register_access_function_W5100 Socket register access functions + * @ingroup WIZCHIP_IO_Functions_W5100 + * @brief These are functions to access socket registers. + */ + + //----------------------------------------------------------------------------------- + +//----------------------------- W5100 Common Registers IOMAP ----------------------------- +/** + * @ingroup Common_register_group_W5100 + * @brief Mode Register address(R/W)\n + * \ref MR is used for S/W reset, ping block mode, PPPoE mode and etc. + * @details Each bit of \ref MR defined as follows. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      RST Reserved WOL PB PPPoE Reserved AI IND
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref MR_RST : Reset + * - \ref MR_PB : Ping block + * - \ref MR_PPPOE : PPPoE mode + * - \ref MR_AI : Address Auto-Increment in Indirect Bus Interface + * - \ref MR_IND : Indirect Bus Interface mode + */ +#if _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_ + #define MR (_WIZCHIP_IO_BASE_ + (0x0000)) // Mode +#else + #define MR (_W5100_IO_BASE_ + (0x0000)) // Mode +#endif + +/** + * @ingroup Common_register_group_W5100 + * @brief Gateway IP Register address(R/W) + * @details \ref GAR configures the default gateway address. + */ +#define GAR (_W5100_IO_BASE_ + (0x0001)) // GW Address + +/** + * @ingroup Common_register_group_W5100 + * @brief Subnet mask Register address(R/W) + * @details \ref SUBR configures the subnet mask address. + */ +#define SUBR (_W5100_IO_BASE_ + (0x0005)) // SN Mask Address + +/** + * @ingroup Common_register_group_W5100 + * @brief Source MAC Register address(R/W) + * @details \ref SHAR configures the source hardware address. + */ +#define SHAR (_W5100_IO_BASE_ + (0x0009)) // Source Hardware Address + +/** + * @ingroup Common_register_group_W5100 + * @brief Source IP Register address(R/W) + * @details \ref SIPR configures the source IP address. + */ +#define SIPR (_W5100_IO_BASE_ + (0x000F)) // Source IP Address + +// Reserved (_W5100_IO_BASE_ + (0x0013)) +// Reserved (_W5100_IO_BASE_ + (0x0014)) + +/** + * @ingroup Common_register_group_W5100 + * @brief Interrupt Register(R/W) + * @details \ref IR indicates the interrupt status. Each bit of \ref IR will be still until the bit will be written to by the host. + * If \ref IR is not equal to x00 INTn PIN is asserted to low until it is x00\n\n + * Each bit of \ref IR defined as follows. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      CONFLICT UNREACH PPPoE Reserved S3_INT S2_INT S1_INT S0_INT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref IR_CONFLICT : IP conflict + * - \ref IR_UNREACH : Destination unreachable + * - \ref IR_PPPoE : PPPoE connection close + * - \ref IR_SOCK(3) : SOCKET 3 Interrupt + * - \ref IR_SOCK(2) : SOCKET 2 Interrupt + * - \ref IR_SOCK(1) : SOCKET 1 Interrupt + * - \ref IR_SOCK(0) : SOCKET 0 Interrupt + */ +#define IR (_W5100_IO_BASE_ + (0x0015)) // Interrupt + +/** + * @ingroup Common_register_group_W5100 + * @brief Socket Interrupt Mask Register(R/W) + * @details Each bit of \ref _IMR_ corresponds to each bit of \ref IR. + * When a bit of \ref _IMR_ is and the corresponding bit of \ref IR is set, Interrupt will be issued. + */ +#define _IMR_ (_W5100_IO_BASE_ + (0x0016)) // Socket Interrupt Mask + +/** + * @ingroup Common_register_group_W5100 + * @brief Timeout register address( 1 is 100us )(R/W) + * @details \ref _RTR_ configures the retransmission timeout period. The unit of timeout period is 100us and the default of \ref _RTR_ is x07D0or 000 + * And so the default timeout period is 200ms(100us X 2000). During the time configured by \ref _RTR_, W5100 waits for the peer response + * to the packet that is transmitted by \ref Sn_CR (CONNECT, DISCON, CLOSE, SEND, SEND_MAC, SEND_KEEP command). + * If the peer does not respond within the \ref _RTR_ time, W5100 retransmits the packet or issues timeout. + */ +#define _RTR_ (_W5100_IO_BASE_ + (0x0017)) // Retry Time + +/** + * @ingroup Common_register_group_W5100 + * @brief Retry count register(R/W) + * @details \ref _RCR_ configures the number of time of retransmission. + * When retransmission occurs as many as ref _RCR_+1 Timeout interrupt is issued (\ref Sn_IR_TIMEOUT = '1'). + */ +#define _RCR_ (_W5100_IO_BASE_ + (0x0019)) // Retry Count +#define RMSR (_W5100_IO_BASE_ + (0x001A)) // Receicve Memory Size +#define TMSR (_W5100_IO_BASE_ + (0x001B)) // Trnasmit Memory Size + + +/** + * @ingroup Common_register_group_W5100 + * @brief PPP LCP Request Timer register in PPPoE mode(R) + * @details \ref PATR notifies authentication method that has been agreed at the connection with + * PPPoE Server. W5100 supports two types of Authentication method - PAP and CHAP. + */ +#define PATR (_W5100_IO_BASE_ + (0x001C)) + + +/** + * @ingroup Common_register_group_W5100 + * @brief PPP LCP Request Timer register in PPPoE mode(R) + * @details \ref PTIMER configures the time for sending LCP echo request. The unit of time is 25ms. + */ +#define PTIMER (_W5100_IO_BASE_ + (0x0028)) // PPP LCP RequestTimer + +/** + * @ingroup Common_register_group_W5100 + * @brief PPP LCP Magic number register in PPPoE mode(R) + * @details \ref PMAGIC configures the 4bytes magic number to be used in LCP negotiation. + */ +#define PMAGIC (_W5100_IO_BASE_ + (0x0029)) // PPP LCP Magic number + +#define UIPR0 (_W5100_IO_BASE_ + (0x002A)) +#define UPORT0 (_W5100_IO_BASE + (0x002E)) + + + +//----------------------------- W5100 Socket Registers ----------------------------- + +//--------------------------- For Backward Compatibility --------------------------- + +/** + * @ingroup Socket_register_group_W5100 + * @brief socket Mode register(R/W) + * @details \ref Sn_MR configures the option or protocol type of Socket n.\n\n + * Each bit of \ref Sn_MR defined as the following. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      MULTI MF ND/MC Reserved Protocol[3] Protocol[2] Protocol[1] Protocol[0]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref Sn_MR_MULTI : Support UDP Multicasting + * - \ref Sn_MR_MF : Support MACRAW + * - \ref Sn_MR_ND : No Delayed Ack(TCP) flag + * - \ref Sn_MR_MC : IGMP version used in UDP mulitcasting + * - Protocol + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Protocol[3] Protocol[2] Protocol[1] Protocol[0] @b Meaning
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 0 0 0 Closed
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 0 0 1 TCP
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 0 1 0 UDP
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 1 0 0 MACRAW
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - In case of Socket 0 + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Protocol[3] Protocol[2] Protocol[1] Protocol[0] @b Meaning
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 1 0 0 MACRAW
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 1 0 1 PPPoE
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref Sn_MR_MACRAW : MAC LAYER RAW SOCK \n + * - \ref Sn_MR_UDP : UDP + * - \ref Sn_MR_TCP : TCP + * - \ref Sn_MR_CLOSE : Unused socket + * @note MACRAW mode should be only used in Socket 0. + */ +#define Sn_MR(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0000)) // socket Mode register + +/** + * @ingroup Socket_register_group_W5100 + * @brief Socket command register(R/W) + * @details This is used to set the command for Socket n such as OPEN, CLOSE, CONNECT, LISTEN, SEND, and RECEIVE.\n + * After W5100 accepts the command, the \ref Sn_CR register is automatically cleared to 0x00. + * Even though \ref Sn_CR is cleared to 0x00, the command is still being processed.\n + * To check whether the command is completed or not, please check the \ref Sn_IR or \ref Sn_SR. + * - \ref Sn_CR_OPEN : Initialize or open socket. + * - \ref Sn_CR_LISTEN : Wait connection request in TCP mode(Server mode) + * - \ref Sn_CR_CONNECT : Send connection request in TCP mode(Client mode) + * - \ref Sn_CR_DISCON : Send closing request in TCP mode. + * - \ref Sn_CR_CLOSE : Close socket. + * - \ref Sn_CR_SEND : Update TX buffer pointer and send data. + * - \ref Sn_CR_SEND_MAC : Send data with MAC address, so without ARP process. + * - \ref Sn_CR_SEND_KEEP : Send keep alive message. + * - \ref Sn_CR_RECV : Update RX buffer pointer and receive data. + * - In case of S0_MR(P3:P0) = S0_MR_PPPoE + * + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Value Symbol Description
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0x23 PCON PPPoE connection begins by transmitting PPPoE discovery packet
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0x24 PDISCON Closes PPPoE connection
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0x25 PCR In each phase, it transmits REQ message.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0x26 PCN In each phase, it transmits NAK message.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0x27 PCJ In each phase, it transmits REJECT message.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + */ +#define Sn_CR(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0001)) // channel Sn_CR register + +/** + * @ingroup Socket_register_group_W5100 + * @brief Socket interrupt register(R) + * @details \ref Sn_IR indicates the status of Socket Interrupt such as establishment, termination, receiving data, timeout).\n + * When an interrupt occurs and the corresponding bit \ref IR_SOCK(N) in \ref _IMR_ are set, \ref IR_SOCK(N) in \ref IR becomes '1'.\n + * In order to clear the \ref Sn_IR bit, the host should write the bit to \n + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      PRECV PFAIL PNEXT SEND_OK TIMEOUT RECV DISCON CON
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref Sn_IR_PRECV : PPP Receive Interrupt + * - \ref Sn_IR_PFAIL : PPP Fail Interrupt + * - \ref Sn_IR_PNEXT : PPP Next Phase Interrupt + * - \ref Sn_IR_SENDOK : SEND_OK Interrupt + * - \ref Sn_IR_TIMEOUT : TIMEOUT Interrupt + * - \ref Sn_IR_RECV : RECV Interrupt + * - \ref Sn_IR_DISCON : DISCON Interrupt + * - \ref Sn_IR_CON : CON Interrupt + */ +#define Sn_IR(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0002)) // channel interrupt register + +/** + * @ingroup Socket_register_group_W5100 + * @brief Socket status register(R) + * @details \ref Sn_SR indicates the status of Socket n.\n + * The status of Socket n is changed by \ref Sn_CR or some special control packet as SYN, FIN packet in TCP. + * @par Normal status + * - \ref SOCK_CLOSED : Closed + * - \ref SOCK_INIT : Initiate state + * - \ref SOCK_LISTEN : Listen state + * - \ref SOCK_ESTABLISHED : Success to connect + * - \ref SOCK_CLOSE_WAIT : Closing state + * - \ref SOCK_UDP : UDP socket + * - \ref SOCK_MACRAW : MAC raw mode socket + *@par Temporary status during changing the status of Socket n. + * - \ref SOCK_SYNSENT : This indicates Socket n sent the connect-request packet (SYN packet) to a peer. + * - \ref SOCK_SYNRECV : It indicates Socket n successfully received the connect-request packet (SYN packet) from a peer. + * - \ref SOCK_FIN_WAIT : Connection state + * - \ref SOCK_CLOSING : Closing state + * - \ref SOCK_TIME_WAIT : Closing state + * - \ref SOCK_LAST_ACK : Closing state + */ +#define Sn_SR(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0003)) // channel status register + +/** + * @ingroup Socket_register_group_W5100 + * @brief source port register(R/W) + * @details \ref Sn_PORT configures the source port number of Socket n. + * It is valid when Socket n is used in TCP/UDP mode. It should be set before OPEN command is ordered. +*/ +#define Sn_PORT(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0004)) // source port register + +/** + * @ingroup Socket_register_group_W5100 + * @brief Peer MAC register address(R/W) + * @details \ref Sn_DHAR configures the destination hardware address of Socket n when using SEND_MAC command in UDP mode or + * it indicates that it is acquired in ARP-process by CONNECT/SEND command. + */ +#define Sn_DHAR(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0006)) // Peer MAC register address + +/** + * @ingroup Socket_register_group_W5100 + * @brief Peer IP register address(R/W) + * @details \ref Sn_DIPR configures or indicates the destination IP address of Socket n. It is valid when Socket n is used in TCP/UDP mode. + * In TCP client mode, it configures an IP address of TCP server before CONNECT command. + * In TCP server mode, it indicates an IP address of TCP client after successfully establishing connection. + * In UDP mode, it configures an IP address of peer to be received the UDP packet by SEND or SEND_MAC command. + */ +#define Sn_DIPR(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x000C)) // Peer IP register address + +/** + * @ingroup Socket_register_group_W5100 + * @brief Peer port register address(R/W) + * @details \ref Sn_DPORT configures or indicates the destination port number of Socket n. It is valid when Socket n is used in TCP/UDP mode. + * In TCP clientmode, it configures the listen port number of TCP server before CONNECT command. + * In TCP Servermode, it indicates the port number of TCP client after successfully establishing connection. + * In UDP mode, it configures the port number of peer to be transmitted the UDP packet by SEND/SEND_MAC command. + */ +#define Sn_DPORT(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0010)) // Peer port register address + +/** + * @ingroup Socket_register_group_W5100 + * @brief Maximum Segment Size(Sn_MSSR0) register address(R/W) + * @details \ref Sn_MSSR configures or indicates the MTU(Maximum Transfer Unit) of Socket n. + */ +#define Sn_MSSR(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0012)) // Maximum Segment Size(Sn_MSSR0) register address + +/** + * @ingroup Socket_register_group_W5100 + * @brief IP Protocol(PROTO) Register(R/W) + * @details \ref Sn_PROTO that sets the protocol number field of the IP header at the IP layer. It is + * valid only in IPRAW mode, and ignored in other modes. + */ +#define Sn_PROTO(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0014)) // Protocol of IP Header field register in IP raw mode + +/** + * @ingroup Socket_register_group_W5100 + * @brief IP Type of Service(TOS) Register(R/W) + * @details \ref Sn_TOS configures the TOS(Type Of Service field in IP Header) of Socket n. + * It is set before OPEN command. + */ +#define Sn_TOS(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + 0x0015) // IP Type of Service(TOS) Register + +/** + * @ingroup Socket_register_group_W5100 + * @brief IP Time to live(TTL) Register(R/W) + * @details \ref Sn_TTL configures the TTL(Time To Live field in IP header) of Socket n. + * It is set before OPEN command. + */ +#define Sn_TTL(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0016)) // IP Time to live(TTL) Register + +// Reserved (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0017)) +// Reserved (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0018)) +// Reserved (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0019)) +// Reserved (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x001A)) +// Reserved (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x001B)) +// Reserved (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x001C)) +// Reserved (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x001D)) + +/** + * @ingroup Socket_register_group_W5100 + * @brief Transmit free memory size register(R) + * @details \ref Sn_TX_FSR indicates the free size of Socket n TX Buffer Block. It is initialized to the configured size by \ref Sn_TXMEM_SIZE. + * Data bigger than \ref Sn_TX_FSR should not be saved in the Socket n TX Buffer because the bigger data overwrites the previous saved data not yet sent. + * Therefore, check before saving the data to the Socket n TX Buffer, and if data is equal or smaller than its checked size, + * transmit the data with SEND/SEND_MAC command after saving the data in Socket n TX buffer. But, if data is bigger than its checked size, + * transmit the data after dividing into the checked size and saving in the Socket n TX buffer. + */ +#define Sn_TX_FSR(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0020)) // Transmit free memory size register + +/** + * @ingroup Socket_register_group_W5100 + * @brief Transmit memory read pointer register address(R) + * @details \ref Sn_TX_RD is initialized by OPEN command. However, if Sn_MR(P[3:0]) is TCP mode(001), it is re-initialized while connecting with TCP. + * After its initialization, it is auto-increased by SEND command. + * SEND command transmits the saved data from the current \ref Sn_TX_RD to the \ref Sn_TX_WR in the Socket n TX Buffer. + * After transmitting the saved data, the SEND command increases the \ref Sn_TX_RD as same as the \ref Sn_TX_WR. + * If its increment value exceeds the maximum value 0xFFFF, (greater than 0x10000 and the carry bit occurs), + * then the carry bit is ignored and will automatically update with the lower 16bits value. + */ +#define Sn_TX_RD(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0022)) // Transmit memory read pointer register address + +/** + * @ingroup Socket_register_group_W5100 + * @brief Transmit memory write pointer register address(R/W) + * @details \ref Sn_TX_WR is initialized by OPEN command. However, if Sn_MR(P[3:0]) is TCP mode(001), it is re-initialized while connecting with TCP.\n + * It should be read or be updated like as follows.\n + * 1. Read the starting address for saving the transmitting data.\n + * 2. Save the transmitting data from the starting address of Socket n TX buffer.\n + * 3. After saving the transmitting data, update \ref Sn_TX_WR to the increased value as many as transmitting data size. + * If the increment value exceeds the maximum value 0xFFFF(greater than 0x10000 and the carry bit occurs), + * then the carry bit is ignored and will automatically update with the lower 16bits value.\n + * 4. Transmit the saved data in Socket n TX Buffer by using SEND/SEND command + */ +#define Sn_TX_WR(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0024)) // Transmit memory write pointer register address + +/** + * @ingroup Socket_register_group_W5100 + * @brief Received data size register(R) + * @details \ref Sn_RX_RSR indicates the data size received and saved in Socket n RX Buffer. + * \ref Sn_RX_RSR does not exceed the \ref Sn_RXMEM_SIZE and is calculated as the difference between + * Socket n RX Write Pointer (\ref Sn_RX_WR)and Socket n RX Read Pointer (\ref Sn_RX_RD) + */ +#define Sn_RX_RSR(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0026)) // Received data size register + +/** + * @ingroup Socket_register_group_W5100 + * @brief Read point of Receive memory(R/W) + * @details \ref Sn_RX_RD is initialized by OPEN command. Make sure to be read or updated as follows.\n + * 1. Read the starting save address of the received data.\n + * 2. Read data from the starting address of Socket n RX Buffer.\n + * 3. After reading the received data, Update \ref Sn_RX_RD to the increased value as many as the reading size. + * If the increment value exceeds the maximum value 0xFFFF, that is, is greater than 0x10000 and the carry bit occurs, + * update with the lower 16bits value ignored the carry bit.\n + * 4. Order RECV command is for notifying the updated \ref Sn_RX_RD to W5100. + */ +#define Sn_RX_RD(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0028)) // Read point of Receive memory + +/** + * @ingroup Socket_register_group_W5100 + * @brief Write point of Receive memory(R) + * @details \ref Sn_RX_WR is initialized by OPEN command and it is auto-increased by the data reception. + * If the increased value exceeds the maximum value 0xFFFF, (greater than 0x10000 and the carry bit occurs), + * then the carry bit is ignored and will automatically update with the lower 16bits value. + */ +#define Sn_RX_WR(sn) (_W5100_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x002A)) // Write point of Receive memory + + +//----------------------------- W5100 Register values ----------------------------- + +/* MODE register values */ +/** + * @brief Reset + * @details If this bit is All internal registers will be initialized. It will be automatically cleared as after S/W reset. + */ +#define MR_RST 0x80 ///< reset + + +/** + * @brief Ping block + * @details 0 : Disable Ping block\n + * 1 : Enable Ping block\n + * If the bit is it blocks the response to a ping request. + */ +#define MR_PB 0x10 ///< ping block + +/** + * @brief Enable PPPoE + * @details 0 : DisablePPPoE mode\n + * 1 : EnablePPPoE mode\n + * If you use ADSL, this bit should be '1'. + */ +#define MR_PPPOE 0x08 ///< enable pppoe + +/** + * @brief Address Auto-Increment in Indirect Bus Interface + * @details 0 : Disable auto-increment \n + * 1 : Enable auto-incremente \n + * At the Indirect Bus Interface mode, if this bit is set as ��1��, the address will + * be automatically increased by 1 whenever read and write are performed. + */ +#define MR_AI 0x02 ///< auto-increment in indirect mode + +/** + * @brief Indirect Bus Interface mode + * @details 0 : Disable Indirect bus Interface mode \n + * 1 : Enable Indirect bus Interface mode \n + * If this bit is set as ��1��, Indirect Bus Interface mode is set. + */ +#define MR_IND 0x01 ///< enable indirect mode + +/* IR register values */ +/** + * @brief Check IP conflict. + * @details Bit is set as when own source IP address is same with the sender IP address in the received ARP request. + */ +#define IR_CONFLICT 0x80 ///< check ip confict + +/** + * @brief Get the destination unreachable message in UDP sending. + * @details When receiving the ICMP (Destination port unreachable) packet, this bit is set as + * When this bit is Destination Information such as IP address and Port number may be checked with the corresponding @ref UIPR & @ref UPORTR. + */ +#define IR_UNREACH 0x40 ///< check destination unreachable + +/** + * @brief Get the PPPoE close message. + * @details When PPPoE is disconnected during PPPoE mode, this bit is set. + */ +#define IR_PPPoE 0x20 ///< get the PPPoE close message + +#define IR_SOCK(sn) (0x01 << sn) ///< check socket interrupt + + +// Sn_MR values +/* Sn_MR Default values */ +/** + * @brief Unused socket + * @details This configures the protocol mode of Socket n. + */ +#define Sn_MR_CLOSE 0x00 ///< unused socket + +/** + * @brief TCP + * @details This configures the protocol mode of Socket n. + */ +#define Sn_MR_TCP 0x01 ///< TCP + +/** + * @brief UDP + * @details This configures the protocol mode of Socket n. + */ +#define Sn_MR_UDP 0x02 ///< UDP +#define Sn_MR_IPRAW 0x03 ///< IP LAYER RAW SOCK + +/** + * @brief MAC LAYER RAW SOCK + * @details This configures the protocol mode of Socket n. + * @note MACRAW mode should be only used in Socket 0. + */ +#define Sn_MR_MACRAW 0x04 ///< MAC LAYER RAW SOCK + +/** + * @brief PPPoE + * @details This configures the protocol mode of Socket n. + * @note PPPoE mode should be only used in Socket 0. + */ +#define Sn_MR_PPPoE 0x05 ///< PPPoE + +/** + * @brief No Delayed Ack(TCP), Multicast flag + * @details 0 : Disable No Delayed ACK option\n + * 1 : Enable No Delayed ACK option\n + * This bit is applied only during TCP mode (P[3:0] = 001).\n + * When this bit is It sends the ACK packet without delay as soon as a Data packet is received from a peer.\n + * When this bit is It sends the ACK packet after waiting for the timeout time configured by \ref _RTR_. + */ +#define Sn_MR_ND 0x20 ///< No Delayed Ack(TCP) flag + +/** + * @brief Support UDP Multicasting + * @details 0 : using IGMP version 2\n + * 1 : using IGMP version 1\n + * This bit is applied only during UDP mode(P[3:0] = 010 and MULTI = '1') + * It configures the version for IGMP messages (Join/Leave/Report). + */ +#define Sn_MR_MC Sn_MR_ND ///< Select IGMP version 1(0) or 2(1) + +/** + * @brief MAC filter enable in @ref Sn_MR_MACRAW mode + * @details 0 : disable MAC Filtering\n + * 1 : enable MAC Filtering\n + * This bit is applied only during MACRAW mode(P[3:0] = 100.\n + * When set as W5100 can only receive broadcasting packet or packet sent to itself. + * When this bit is W5100 can receive all packets on Ethernet. + * If user wants to implement Hybrid TCP/IP stack, + * it is recommended that this bit is set as for reducing host overhead to process the all received packets. + */ +#define Sn_MR_MF 0x40 ///< Use MAC filter +#define Sn_MR_MFEN Sn_MR_MF + + +/* Sn_MR Default values */ +/** + * @brief Support UDP Multicasting + * @details 0 : disable Multicasting\n + * 1 : enable Multicasting\n + * This bit is applied only during UDP mode(P[3:0] = 010).\n + * To use multicasting, \ref Sn_DIPR & \ref Sn_DPORT should be respectively configured with the multicast group IP address & port number + * before Socket n is opened by OPEN command of \ref Sn_CR. + */ +#define Sn_MR_MULTI 0x80 ///< support multicating + +/* Sn_CR values */ +/** + * @brief Initialize or open socket + * @details Socket n is initialized and opened according to the protocol selected in Sn_MR(P3:P0). + * The table below shows the value of \ref Sn_SR corresponding to \ref Sn_MR.\n + * + * + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \b Sn_MR (P[3:0]) \b Sn_SR
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_CLOSE (000) --
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_TCP (001) SOCK_INIT (0x13)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_UDP (010) SOCK_UDP (0x22)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      S0_MR_IPRAW (011) SOCK_IPRAW (0x32)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      S0_MR_MACRAW (100) SOCK_MACRAW (0x42)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      S0_MR_PPPoE (101) SOCK_PPPoE (0x5F)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + */ +#define Sn_CR_OPEN 0x01 ///< initialize or open socket + +/** + * @brief Wait connection request in TCP mode(Server mode) + * @details This is valid only in TCP mode (Sn_MR(P3:P0) = \ref Sn_MR_TCP).// + * In this mode, Socket n operates as a 'TCP server' and waits for connection-request (SYN packet) from any 'TCP client'.// + * The \ref Sn_SR changes the state from SOCK_INIT to SOCKET_LISTEN.// + * When a 'TCP client' connection request is successfully established, + * the \ref Sn_SR changes from SOCK_LISTEN to SOCK_ESTABLISHED and the Sn_IR(0) becomes + * But when a 'TCP client' connection request is failed, Sn_IR(3) becomes and the status of \ref Sn_SR changes to SOCK_CLOSED. + */ +#define Sn_CR_LISTEN 0x02 ///< wait connection request in tcp mode(Server mode) + +/** + * @brief Send connection request in TCP mode(Client mode) + * @details To connect, a connect-request (SYN packet) is sent to TCP serverconfigured by \ref Sn_DIPR & Sn_DPORT(destination address & port). + * If the connect-request is successful, the \ref Sn_SR is changed to \ref SOCK_ESTABLISHED and the Sn_IR(0) becomes \n\n + * The connect-request fails in the following three cases.\n + * 1. When a @b ARPTO occurs (\ref Sn_IR[3] = '1') because destination hardware address is not acquired through the ARP-process.\n + * 2. When a @b SYN/ACK packet is not received and @b TCPTO (Sn_IR(3) ='1')\n + * 3. When a @b RST packet is received instead of a @b SYN/ACK packet. In these cases, \ref Sn_SR is changed to \ref SOCK_CLOSED. + * @note This is valid only in TCP mode and operates when Socket n acts as TCP client + */ +#define Sn_CR_CONNECT 0x04 ///< send connection request in tcp mode(Client mode) + +/** + * @brief Send closing request in TCP mode + * @details Regardless of TCP serveror TCP client the DISCON command processes the disconnect-process (Active closeor Passive close.\n + * @par Active close + * it transmits disconnect-request(FIN packet) to the connected peer\n + * @par Passive close + * When FIN packet is received from peer, a FIN packet is replied back to the peer.\n + * @details When the disconnect-process is successful (that is, FIN/ACK packet is received successfully), \ref Sn_SR is changed to \ref SOCK_CLOSED.\n + * Otherwise, TCPTO occurs (Sn_IR(3)='1') and then \ref Sn_SR is changed to \ref SOCK_CLOSED. + * @note Valid only in TCP mode. + */ +#define Sn_CR_DISCON 0x08 ///< send closing reqeuset in tcp mode + +/** + * @brief Close socket + * @details Sn_SR is changed to \ref SOCK_CLOSED. + */ +#define Sn_CR_CLOSE 0x10 + +/** + * @brief Update TX buffer pointer and send data + * @details SEND transmits all the data in the Socket n TX buffer.\n + * For more details, please refer to Socket n TX Free Size Register (\ref Sn_TX_FSR), Socket n, + * TX Write Pointer Register(\ref Sn_TX_WR), and Socket n TX Read Pointer Register(\ref Sn_TX_RD). + */ +#define Sn_CR_SEND 0x20 + +/** + * @brief Send data with MAC address, so without ARP process + * @details The basic operation is same as SEND.\n + * Normally SEND transmits data after destination hardware address is acquired by the automatic ARP-process(Address Resolution Protocol).\n + * But SEND_MAC transmits data without the automatic ARP-process.\n + * In this case, the destination hardware address is acquired from \ref Sn_DHAR configured by host, instead of APR-process. + * @note Valid only in UDP mode. + */ +#define Sn_CR_SEND_MAC 0x21 + +/** + * @brief Send keep alive message + * @details It checks the connection status by sending 1byte keep-alive packet.\n + * If the peer can not respond to the keep-alive packet during timeout time, the connection is terminated and the timeout interrupt will occur. + * @note Valid only in TCP mode. + */ +#define Sn_CR_SEND_KEEP 0x22 + +/** + * @brief Update RX buffer pointer and receive data + * @details RECV completes the processing of the received data in Socket n RX Buffer by using a RX read pointer register (\ref Sn_RX_RD).\n + * For more details, refer to Socket n RX Received Size Register (\ref Sn_RX_RSR), Socket n RX Write Pointer Register (\ref Sn_RX_WR), + * and Socket n RX Read Pointer Register (\ref Sn_RX_RD). + */ +#define Sn_CR_RECV 0x40 + +/** + * @brief PPPoE connection + * @details PPPoE connection begins by transmitting PPPoE discovery packet + */ +#define Sn_CR_PCON 0x23 + +/** + * @brief Closes PPPoE connection + * @details Closes PPPoE connection + */ +#define Sn_CR_PDISCON 0x24 + +/** + * @brief REQ message transmission + * @details In each phase, it transmits REQ message. + */ +#define Sn_CR_PCR 0x25 + +/** + * @brief NAK massage transmission + * @details In each phase, it transmits NAK message. + */ +#define Sn_CR_PCN 0x26 + +/** + * @brief REJECT message transmission + * @details In each phase, it transmits REJECT message. + */ +#define Sn_CR_PCJ 0x27 + +/* Sn_IR values */ +/** + * @brief PPP Receive Interrupt + * @details PPP Receive Interrupts when the option which is not supported is received. + */ +#define Sn_IR_PRECV 0x80 + +/** + * @brief PPP Fail Interrupt + * @details PPP Fail Interrupts when PAP Authentication is failed. + */ +#define Sn_IR_PFAIL 0x40 + +/** + * @brief PPP Next Phase Interrupt + * @details PPP Next Phase Interrupts when the phase is changed during ADSL connection process. + */ +#define Sn_IR_PNEXT 0x20 + +/** + * @brief SEND_OK Interrupt + * @details This is issued when SEND command is completed. + */ +#define Sn_IR_SENDOK 0x10 ///< complete sending + +/** + * @brief TIMEOUT Interrupt + * @details This is issued when ARPTO or TCPTO occurs. + */ +#define Sn_IR_TIMEOUT 0x08 ///< assert timeout + +/** + * @brief RECV Interrupt + * @details This is issued whenever data is received from a peer. + */ +#define Sn_IR_RECV 0x04 + +/** + * @brief DISCON Interrupt + * @details This is issued when FIN or FIN/ACK packet is received from a peer. + */ +#define Sn_IR_DISCON 0x02 + +/** + * @brief CON Interrupt + * @details This is issued one time when the connection with peer is successful and then \ref Sn_SR is changed to \ref SOCK_ESTABLISHED. + */ +#define Sn_IR_CON 0x01 + +/* Sn_SR values */ +/** + * @brief Closed + * @details This indicates that Socket n is released.\n + * When DICON, CLOSE command is ordered, or when a timeout occurs, it is changed to \ref SOCK_CLOSED regardless of previous status. + */ +#define SOCK_CLOSED 0x00 ///< closed + +/** + * @brief Initiate state + * @details This indicates Socket n is opened with TCP mode.\n + * It is changed to \ref SOCK_INIT when Sn_MR(P[3:0]) = 001)and OPEN command is ordered.\n + * After \ref SOCK_INIT, user can use LISTEN /CONNECT command. + */ +#define SOCK_INIT 0x13 ///< init state + +/** + * @brief Listen state + * @details This indicates Socket n is operating as TCP servermode and waiting for connection-request (SYN packet) from a peer (TCP client).\n + * It will change to \ref SOCK_ESTABLISHED when the connection-request is successfully accepted.\n + * Otherwise it will change to \ref SOCK_CLOSED after TCPTO occurred (Sn_IR(TIMEOUT) = '1'). + */ +#define SOCK_LISTEN 0x14 + +/** + * @brief Connection state + * @details This indicates Socket n sent the connect-request packet (SYN packet) to a peer.\n + * It is temporarily shown when \ref Sn_SR is changed from \ref SOCK_INIT to \ref SOCK_ESTABLISHED by CONNECT command.\n + * If connect-accept(SYN/ACK packet) is received from the peer at SOCK_SYNSENT, it changes to \ref SOCK_ESTABLISHED.\n + * Otherwise, it changes to \ref SOCK_CLOSED after TCPTO (\ref Sn_IR[TIMEOUT] = '1') is occurred. + */ +#define SOCK_SYNSENT 0x15 + +/** + * @brief Connection state + * @details It indicates Socket n successfully received the connect-request packet (SYN packet) from a peer.\n + * If socket n sends the response (SYN/ACK packet) to the peer successfully, it changes to \ref SOCK_ESTABLISHED. \n + * If not, it changes to \ref SOCK_CLOSED after timeout occurs (\ref Sn_IR[TIMEOUT] = '1'). + */ +#define SOCK_SYNRECV 0x16 + +/** + * @brief Success to connect + * @details This indicates the status of the connection of Socket n.\n + * It changes to \ref SOCK_ESTABLISHED when the TCP SERVERprocessed the SYN packet from the TCP CLIENTduring \ref SOCK_LISTEN, or + * when the CONNECT command is successful.\n + * During \ref SOCK_ESTABLISHED, DATA packet can be transferred using SEND or RECV command. + */ +#define SOCK_ESTABLISHED 0x17 + +/** + * @brief Closing state + * @details These indicate Socket n is closing.\n + * These are shown in disconnect-process such as active-close and passive-close.\n + * When Disconnect-process is successfully completed, or when timeout occurs, these change to \ref SOCK_CLOSED. + */ +#define SOCK_FIN_WAIT 0x18 + +/** + * @brief Closing state + * @details These indicate Socket n is closing.\n + * These are shown in disconnect-process such as active-close and passive-close.\n + * When Disconnect-process is successfully completed, or when timeout occurs, these change to \ref SOCK_CLOSED. + */ +#define SOCK_CLOSING 0x1A + +/** + * @brief Closing state + * @details These indicate Socket n is closing.\n + * These are shown in disconnect-process such as active-close and passive-close.\n + * When Disconnect-process is successfully completed, or when timeout occurs, these change to \ref SOCK_CLOSED. + */ +#define SOCK_TIME_WAIT 0x1B + +/** + * @brief Closing state + * @details This indicates Socket n received the disconnect-request (FIN packet) from the connected peer.\n + * This is half-closing status, and data can be transferred.\n + * For full-closing, DISCON command is used. But For just-closing, @ref Sn_CR_CLOSE command is used. + */ +#define SOCK_CLOSE_WAIT 0x1C + +/** + * @brief Closing state + * @details This indicates Socket n is waiting for the response (FIN/ACK packet) to the disconnect-request (FIN packet) by passive-close.\n + * It changes to \ref SOCK_CLOSED when Socket n received the response successfully, or when timeout occurs (\ref Sn_IR[TIMEOUT] = '1'). + */ +#define SOCK_LAST_ACK 0x1D + +/** + * @brief UDP socket + * @details This indicates Socket n is opened in UDP mode(Sn_MR(P[3:0]) = 010).\n + * It changes to SOCK_UDP when Sn_MR(P[3:0]) = 010 and @ref Sn_CR_OPEN command is ordered.\n + * Unlike TCP mode, data can be transfered without the connection-process. + */ +#define SOCK_UDP 0x22 ///< udp socket + +/** + * @brief IP raw mode socket + * @details TThe socket is opened in IPRAW mode. The SOCKET status is change to SOCK_IPRAW when @ref Sn_MR (P3:P0) is + * Sn_MR_IPRAW and @ref Sn_CR_OPEN command is used.\n + * IP Packet can be transferred without a connection similar to the UDP mode. +*/ +#define SOCK_IPRAW 0x32 ///< ip raw mode socket + +/** + * @brief MAC raw mode socket + * @details This indicates Socket 0 is opened in MACRAW mode (@ref Sn_MR(P[3:0]) = '100' and n=0) and is valid only in Socket 0.\n + * It changes to SOCK_MACRAW when @ref Sn_MR(P[3:0]) = '100' and @ref Sn_CR_OPEN command is ordered.\n + * Like UDP mode socket, MACRAW mode Socket 0 can transfer a MAC packet (Ethernet frame) without the connection-process. + */ +#define SOCK_MACRAW 0x42 ///< mac raw mode socket + +/** + * @brief PPPoE mode socket + * @details It is the status that SOCKET0 is open as PPPoE mode. It is changed to SOCK_PPPoE in case of S0_CR=OPEN and S0_MR + * (P3:P0)=S0_MR_PPPoE.\n + * It is temporarily used at the PPPoE +connection. + */ +#define SOCK_PPPOE 0x5F ///< pppoe socket + +// IP PROTOCOL +#define IPPROTO_IP 0 ///< Dummy for IP +#define IPPROTO_ICMP 1 ///< Control message protocol +#define IPPROTO_IGMP 2 ///< Internet group management protocol +#define IPPROTO_GGP 3 ///< GW^2 (deprecated) +#define IPPROTO_TCP 6 ///< TCP +#define IPPROTO_PUP 12 ///< PUP +#define IPPROTO_UDP 17 ///< UDP +#define IPPROTO_IDP 22 ///< XNS idp +#define IPPROTO_ND 77 ///< UNOFFICIAL net disk protocol +#define IPPROTO_RAW 255 ///< Raw IP packet + +/** + * @brief Enter a critical section + * + * @details It is provided to protect your shared code which are executed without distribution. \n \n + * + * In non-OS environment, It can be just implemented by disabling whole interrupt.\n + * In OS environment, You can replace it to critical section api supported by OS. + * + * \sa WIZCHIP_READ(), WIZCHIP_WRITE(), WIZCHIP_READ_BUF(), WIZCHIP_WRITE_BUF() + * \sa WIZCHIP_CRITICAL_EXIT() + */ +#define WIZCHIP_CRITICAL_ENTER() WIZCHIP.CRIS._enter() + +#ifdef _exit +#undef _exit +#endif + +/** + * @brief Exit a critical section + * + * @details It is provided to protect your shared code which are executed without distribution. \n\n + * + * In non-OS environment, It can be just implemented by disabling whole interrupt. \n + * In OS environment, You can replace it to critical section api supported by OS. + * + * @sa WIZCHIP_READ(), WIZCHIP_WRITE(), WIZCHIP_READ_BUF(), WIZCHIP_WRITE_BUF() + * @sa WIZCHIP_CRITICAL_ENTER() + */ +#define WIZCHIP_CRITICAL_EXIT() WIZCHIP.CRIS._exit() + + + +//////////////////////// +// Basic I/O Function // +//////////////////////// +// +//M20150601 : uint16_t AddrSel --> uint32_t AddrSel +// +/** + * @ingroup Basic_IO_function_W5100 + * @brief It reads 1 byte value from a register. + * @param AddrSel Register address + * @return The value of register + */ +uint8_t WIZCHIP_READ (uint32_t AddrSel); + +/** + * @ingroup Basic_IO_function_W5100 + * @brief It writes 1 byte value to a register. + * @param AddrSel Register address + * @param wb Write data + * @return void + */ +void WIZCHIP_WRITE(uint32_t AddrSel, uint8_t wb ); + +/** + * @ingroup Basic_IO_function_W5100 + * @brief It reads sequence data from registers. + * @param AddrSel Register address + * @param pBuf Pointer buffer to read data + * @param len Data length + */ +void WIZCHIP_READ_BUF (uint32_t AddrSel, uint8_t* pBuf, uint16_t len); + +/** + * @ingroup Basic_IO_function_W5100 + * @brief It writes sequence data to registers. + * @param AddrSel Register address + * @param pBuf Pointer buffer to write data + * @param len Data length + */ +void WIZCHIP_WRITE_BUF(uint32_t AddrSel, uint8_t* pBuf, uint16_t len); + + +///////////////////////////////// +// Common Register IO function // +///////////////////////////////// + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Set Mode Register + * @param (uint8_t)mr The value to be set. + * @sa getMR() + */ +#if (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_) + #define setMR(mr) WIZCHIP_WRITE(MR,mr) +#else + #define setMR(mr) (*((uint8_t*)MR) = mr) +#endif + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Get @ref MR. + * @return uint8_t. The value of Mode register. + * @sa setMR() + */ +#if (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_) + #define getMR() WIZCHIP_READ(MR) +#else + #define getMR() (*(uint8_t*)MR) +#endif + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Set @ref GAR. + * @param (uint8_t*)gar Pointer variable to set gateway IP address. It should be allocated 4 bytes. + * @sa getGAR() + */ +#define setGAR(gar) \ + WIZCHIP_WRITE_BUF(GAR,gar,4) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Get @ref GAR. + * @param (uint8_t*)gar Pointer variable to get gateway IP address. It should be allocated 4 bytes. + * @sa setGAR() + */ +#define getGAR(gar) \ + WIZCHIP_READ_BUF(GAR,gar,4) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Set @ref SUBR. + * @param (uint8_t*)subr Pointer variable to set subnet mask address. It should be allocated 4 bytes. + * @note If subr is null pointer, set the backup subnet to SUBR. \n + * If subr is 0.0.0.0, back up SUBR and clear it. \n + * Otherwize, set subr to SUBR + * @sa getSUBR() + */ +#define setSUBR(subr) \ + WIZCHIP_WRITE_BUF(SUBR,subr,4) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Get @ref SUBR. + * @param (uint8_t*)subr Pointer variable to get subnet mask address. It should be allocated 4 bytes. + * @sa setSUBR() + */ +#define getSUBR(subr) \ + WIZCHIP_READ_BUF(SUBR, subr, 4) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Set @ref SHAR. + * @param (uint8_t*)shar Pointer variable to set local MAC address. It should be allocated 6 bytes. + * @sa getSHAR() + */ +#define setSHAR(shar) \ + WIZCHIP_WRITE_BUF(SHAR, shar, 6) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Get @ref SHAR. + * @param (uint8_t*)shar Pointer variable to get local MAC address. It should be allocated 6 bytes. + * @sa setSHAR() + */ +#define getSHAR(shar) \ + WIZCHIP_READ_BUF(SHAR, shar, 6) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Set @ref SIPR. + * @param (uint8_t*)sipr Pointer variable to set local IP address. It should be allocated 4 bytes. + * @sa getSIPR() +*/ +#define setSIPR(sipr) \ + WIZCHIP_WRITE_BUF(SIPR, sipr, 4) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Get @ref SIPR. + * @param (uint8_t*)sipr Pointer variable to get local IP address. It should be allocated 4 bytes. + * @sa setSIPR() + */ +#define getSIPR(sipr) \ + WIZCHIP_READ_BUF(SIPR, sipr, 4) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Set \ref IR register + * @param (uint8_t)ir Value to set \ref IR register. + * @sa getIR() + */ +#define setIR(ir) \ + WIZCHIP_WRITE(IR, (ir & 0xA0)) +/** + * @ingroup Common_register_access_function_W5100 + * @brief Get \ref IR register + * @return uint8_t. Value of \ref IR register. + * @sa setIR() + */ +#define getIR() \ + (WIZCHIP_READ(IR) & 0xA0) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Set \ref _IMR_ register + * @param (uint8_t)imr Value to set @ref _IMR_ register. + * @sa getIMR() + */ +#define setIMR(imr) \ + WIZCHIP_WRITE(_IMR_, imr) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Get \ref _IMR_ register + * @return uint8_t. Value of @ref _IMR_ register. + * @sa setIMR() + */ +#define getIMR() \ + WIZCHIP_READ(_IMR_) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Set \ref _RTR_ register + * @param (uint16_t)rtr Value to set @ref _RTR_ register. + * @sa getRTR() + */ +#define setRTR(rtr) {\ + WIZCHIP_WRITE(_RTR_, (uint8_t)(rtr >> 8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_RTR_,1), (uint8_t) rtr); \ + } + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Get \ref _RTR_ register + * @return uint16_t. Value of @ref _RTR_ register. + * @sa setRTR() + */ +#define getRTR() \ + (((uint16_t)WIZCHIP_READ(_RTR_) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_RTR_,1))) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Set \ref _RCR_ register + * @param (uint8_t)rcr Value to set @ref _RCR_ register. + * @sa getRCR() + */ +#define setRCR(rcr) \ + WIZCHIP_WRITE(_RCR_, rcr) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Get \ref _RCR_ register + * @return uint8_t. Value of @ref _RCR_ register. + * @sa setRCR() + */ +#define getRCR() \ + WIZCHIP_READ(_RCR_) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Get \ref RMSR register + * @sa getRMSR() + */ +#define setRMSR(rmsr) \ + WIZCHIP_WRITE(RMSR) // Receicve Memory Size + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Get \ref RMSR register + * @return uint8_t. Value of @ref RMSR register. + * @sa setRMSR() + */ + #define getRMSR() \ + WIZCHIP_READ() // Receicve Memory Size + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Get \ref TMSR register + * @sa getTMSR() + */ +#define setTMSR(rmsr) \ + WIZCHIP_WRITE(TMSR) // Receicve Memory Size + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Get \ref TMSR register + * @return uint8_t. Value of @ref TMSR register. + * @sa setTMSR() + */ + + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Get \ref PATR register + * @return uint16_t. Value to set \ref PATR register + */ +#define getPATR() \ + (((uint16_t)WIZCHIP_READ(PATR) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(PATR,1))) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Get \ref PPPALGO register + * @return uint8_t. Value to set \ref PPPALGO register + */ +#define getPPPALGO() \ + WIZCHIP_READ(PPPALGO) + + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Set \ref PTIMER register + * @param (uint8_t)ptimer Value to set \ref PTIMER register. + * @sa getPTIMER() + */ +#define setPTIMER(ptimer) \ + WIZCHIP_WRITE(PTIMER, ptimer) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Get \ref PTIMER register + * @return uint8_t. Value of @ref PTIMER register. + * @sa setPTIMER() + */ +#define getPTIMER() \ + WIZCHIP_READ(PTIMER) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Set \ref PMAGIC register + * @param (uint8_t)pmagic Value to set @ref PMAGIC register. + * @sa getPMAGIC() + */ +#define setPMAGIC(pmagic) \ + WIZCHIP_WRITE(PMAGIC, pmagic) + +/** + * @ingroup Common_register_access_function_W5100 + * @brief Get \ref PMAGIC register + * @return uint8_t. Value of @ref PMAGIC register. + * @sa setPMAGIC() + */ +#define getPMAGIC() \ + WIZCHIP_READ(PMAGIC) + +/////////////////////////////////// +// Socket N register I/O function // +/////////////////////////////////// +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Set @ref Sn_MR register + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ expect bit 4. + * @param mr Value to set @ref Sn_MR + * @sa getSn_MR() + */ +#define setSn_MR(sn, mr) \ + WIZCHIP_WRITE(Sn_MR(sn),mr) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_MR register + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ expect bit 4. + * @return Value of @ref Sn_MR. + * @sa setSn_MR() + */ +#define getSn_MR(sn) \ + WIZCHIP_READ(Sn_MR(sn)) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Set @ref Sn_CR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)cr Value to set @ref Sn_CR + * @sa getSn_CR() + */ +#define setSn_CR(sn, cr) \ + WIZCHIP_WRITE(Sn_CR(sn), cr) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_CR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_CR. + * @sa setSn_CR() + */ +#define getSn_CR(sn) \ + WIZCHIP_READ(Sn_CR(sn)) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Set @ref Sn_IR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)ir Value to set @ref Sn_IR + * @sa getSn_IR() + */ +#define setSn_IR(sn, ir) \ + WIZCHIP_WRITE(Sn_IR(sn), ir) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_IR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_IR. + * @sa setSn_IR() + */ +#define getSn_IR(sn) \ + WIZCHIP_READ(Sn_IR(sn)) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_SR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_SR. + */ +#define getSn_SR(sn) \ + WIZCHIP_READ(Sn_SR(sn)) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Set @ref Sn_PORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)port Value to set @ref Sn_PORT. + * @sa getSn_PORT() + */ +#define setSn_PORT(sn, port) { \ + WIZCHIP_WRITE(Sn_PORT(sn), (uint8_t)(port >> 8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_PORT(sn),1), (uint8_t) port); \ + } + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_PORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_PORT. + * @sa setSn_PORT() + */ +#define getSn_PORT(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_PORT(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_PORT(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Set @ref Sn_DHAR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t*)dhar Pointer variable to set socket n destination hardware address. It should be allocated 6 bytes. + * @sa getSn_DHAR() + */ +#define setSn_DHAR(sn, dhar) \ + WIZCHIP_WRITE_BUF(Sn_DHAR(sn), dhar, 6) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_DHAR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t*)dhar Pointer variable to get socket n destination hardware address. It should be allocated 6 bytes. + * @sa setSn_DHAR() + */ +#define getSn_DHAR(sn, dhar) \ + WIZCHIP_READ_BUF(Sn_DHAR(sn), dhar, 6) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Set @ref Sn_DIPR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t*)dipr Pointer variable to set socket n destination IP address. It should be allocated 4 bytes. + * @sa getSn_DIPR() + */ +#define setSn_DIPR(sn, dipr) \ + WIZCHIP_WRITE_BUF(Sn_DIPR(sn), dipr, 4) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_DIPR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t*)dipr Pointer variable to get socket n destination IP address. It should be allocated 4 bytes. + * @sa SetSn_DIPR() + */ +#define getSn_DIPR(sn, dipr) \ + WIZCHIP_READ_BUF(Sn_DIPR(sn), dipr, 4) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Set @ref Sn_DPORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)dport Value to set @ref Sn_DPORT + * @sa getSn_DPORT() + */ +#define setSn_DPORT(sn, dport) { \ + WIZCHIP_WRITE(Sn_DPORT(sn), (uint8_t) (dport>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_DPORT(sn),1), (uint8_t) dport); \ + } + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_DPORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_DPORT. + * @sa setSn_DPORT() + */ +#define getSn_DPORT(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_DPORT(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_DPORT(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Set @ref Sn_MSSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)mss Value to set @ref Sn_MSSR + * @sa setSn_MSSR() + */ +#define setSn_MSSR(sn, mss) { \ + WIZCHIP_WRITE(Sn_MSSR(sn), (uint8_t)(mss>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_MSSR(sn),1), (uint8_t) mss); \ + } + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_MSSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_MSSR. + * @sa setSn_MSSR() + */ +#define getSn_MSSR(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_MSSR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_MSSR(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Set @ref Sn_PROTO register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)proto Value to set \ref Sn_PROTO + * @sa getSn_PROTO() + */ +#define setSn_PROTO(sn, proto) \ + WIZCHIP_WRITE(Sn_TOS(sn), tos) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_PROTO register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_PROTO. + * @sa setSn_PROTO() + */ +#define getSn_PROTO(sn) \ + WIZCHIP_READ(Sn_TOS(sn)) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Set @ref Sn_TOS register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)tos Value to set @ref Sn_TOS + * @sa getSn_TOS() + */ +#define setSn_TOS(sn, tos) \ + WIZCHIP_WRITE(Sn_TOS(sn), tos) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_TOS register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ . + * @return uint8_t. Value of Sn_TOS. + * @sa setSn_TOS() + */ +#define getSn_TOS(sn) \ + WIZCHIP_READ(Sn_TOS(sn)) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Set @ref Sn_TTL register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ . + * @param (uint8_t)ttl Value to set @ref Sn_TTL + * @sa getSn_TTL() + */ +#define setSn_TTL(sn, ttl) \ + WIZCHIP_WRITE(Sn_TTL(sn), ttl) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_TTL register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ . + * @return uint8_t. Value of @ref Sn_TTL. + * @sa setSn_TTL() + */ +#define getSn_TTL(sn) \ + WIZCHIP_READ(Sn_TTL(sn)) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Set @ref Sn_RXMEM_SIZE register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ . + * @param (uint8_t)rxmemsize Value to set \ref Sn_RXMEM_SIZE + * @sa getSn_RXMEM_SIZE() + */ +#define setSn_RXMEM_SIZE(sn, rxmemsize) \ + WIZCHIP_WRITE(RMSR, (WIZCHIP_READ(RMSR) & ~(0x03 << (2*sn))) | (rxmemsize << (2*sn))) +#define setSn_RXBUF_SIZE(sn,rxmemsize) setSn_RXMEM_SIZE(sn,rxmemsize) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_RXMEM_SIZE register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_RXMEM. + * @sa setSn_RXMEM_SIZE() + */ +#define getSn_RXMEM_SIZE(sn) \ + ((WIZCHIP_READ(RMSR) & (0x03 << (2*sn))) >> (2*sn)) +#define getSn_RXBUF_SIZE(sn) getSn_RXMEM_SIZE(sn) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Set @ref Sn_TXMEM_SIZE register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)txmemsize Value to set \ref Sn_TXMEM_SIZE + * @sa getSn_TXMEM_SIZE() + */ +#define setSn_TXMEM_SIZE(sn, txmemsize) \ + WIZCHIP_WRITE(TMSR, (WIZCHIP_READ(TMSR) & ~(0x03 << (2*sn))) | (txmemsize << (2*sn))) +#define setSn_TXBUF_SIZE(sn, txmemsize) setSn_TXMEM_SIZE(sn,txmemsize) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_TXMEM_SIZE register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_TXMEM_SIZE. + * @sa setSn_TXMEM_SIZE() + */ +#define getSn_TXMEM_SIZE(sn) \ + ((WIZCHIP_READ(TMSR) & (0x03 << (2*sn))) >> (2*sn)) +#define getSn_TXBUF_SIZE(sn) getSn_TXMEM_SIZE(sn) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_TX_FSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_TX_FSR. + */ +uint16_t getSn_TX_FSR(uint8_t sn); + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_TX_RD register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_TX_RD. + */ +#define getSn_TX_RD(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_TX_RD(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_RD(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Set @ref Sn_TX_WR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)txwr Value to set @ref Sn_TX_WR + * @sa GetSn_TX_WR() + */ +#define setSn_TX_WR(sn, txwr) { \ + WIZCHIP_WRITE(Sn_TX_WR(sn), (uint8_t)(txwr>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_TX_WR(sn),1), (uint8_t) txwr); \ + } + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_TX_WR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_TX_WR. + * @sa setSn_TX_WR() + */ +#define getSn_TX_WR(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_TX_WR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_WR(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_RX_RSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_RX_RSR. + */ +uint16_t getSn_RX_RSR(uint8_t sn); + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Set @ref Sn_RX_RD register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)rxrd Value to set @ref Sn_RX_RD + * @sa getSn_RX_RD() + */ +#define setSn_RX_RD(sn, rxrd) { \ + WIZCHIP_WRITE(Sn_RX_RD(sn), (uint8_t)(rxrd>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_RX_RD(sn),1), (uint8_t) rxrd); \ + } + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_RX_RD register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @regurn uint16_t. Value of @ref Sn_RX_RD. + * @sa setSn_RX_RD() + */ +#define getSn_RX_RD(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_RX_RD(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RD(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Set @ref Sn_RX_WR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)rxwr Value to set \ref Sn_RX_WR + * @sa getSn_RX_WR() + */ +#define setSn_RX_WR(sn, rxwr) { \ + WIZCHIP_WRITE(Sn_RX_WR(sn), (uint8_t)(rxwr>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_RX_WR(sn),1), (uint8_t) rxwr); \ + } + + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_RX_WR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_RX_WR. + */ +#define getSn_RX_WR(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_RX_WR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_WR(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Set @ref Sn_FRAG register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)frag Value to set \ref Sn_FRAG + * @sa getSn_FRAG() + */ +#define setSn_FRAG(sn, frag) { \ + WIZCHIP_WRITE(Sn_FRAG(sn), (uint8_t)(frag >>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_FRAG(sn),1), (uint8_t) frag); \ + } + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get @ref Sn_FRAG register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_FRAG. + * @sa setSn_FRAG() + */ +#define getSn_FRAG(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_FRAG(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_FRAG(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get the max RX buffer size of socket sn + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Max buffer size + */ +#define getSn_RxMAX(sn) \ + ((uint16_t)(1 << getSn_RXMEM_SIZE(sn)) << 10) + + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get the max TX buffer size of socket sn + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Max buffer size + */ +#define getSn_TxMAX(sn) \ + ((uint16_t)(1 << getSn_TXMEM_SIZE(sn)) << 10) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get the mask of socket sn RX buffer. + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Mask value + */ +#define getSn_RxMASK(sn) \ + (getSn_RxMAX(sn) - 1) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get the mask of socket sn TX buffer + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Mask value + */ +#define getSn_TxMASK(sn) \ + (getSn_TxMAX(sn) - 1) + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get the base address of socket sn RX buffer. + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of Socket n RX buffer base address. + */ +uint32_t getSn_RxBASE(uint8_t sn); + +/** + * @ingroup Socket_register_access_function_W5100 + * @brief Get the base address of socket sn TX buffer. + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of Socket n TX buffer base address. + */ +uint32_t getSn_TxBASE(uint8_t sn); + +///////////////////////////////////// +// Sn_TXBUF & Sn_RXBUF IO function // +///////////////////////////////////// +/** + * @ingroup Basic_IO_function_W5100 + * @brief It copies data to internal TX memory + * + * @details This function reads the Tx write pointer register and after that, + * it copies the wizdata(pointer buffer) of the length of len(variable) bytes to internal TX memory + * and updates the Tx write pointer register. + * This function is being called by send() and sendto() function also. + * + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param wizdata Pointer buffer to write data + * @param len Data length + * @sa wiz_recv_data() + */ +void wiz_send_data(uint8_t sn, uint8_t *wizdata, uint16_t len); + +/** + * @ingroup Basic_IO_function_W5100 + * @brief It copies data to your buffer from internal RX memory + * + * @details This function read the Rx read pointer register and after that, + * it copies the received data from internal RX memory + * to wizdata(pointer variable) of the length of len(variable) bytes. + * This function is being called by recv() also. + * + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param wizdata Pointer buffer to read data + * @param len Data length + * @sa wiz_send_data() + */ +void wiz_recv_data(uint8_t sn, uint8_t *wizdata, uint16_t len); + +/** + * @ingroup Basic_IO_function_W5100 + * @brief It discard the received data in RX memory. + * @details It discards the data of the length of len(variable) bytes in internal RX memory. + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param len Data length + */ +void wiz_recv_ignore(uint8_t sn, uint16_t len); + +/// @cond DOXY_APPLY_CODE +#endif +/// @endcond + +#ifdef __cplusplus +} +#endif + +#endif //_W5100_H_ + + + diff --git a/User/ioLibrary_Driver/Ethernet/W5100S/w5100s.c b/User/ioLibrary_Driver/Ethernet/W5100S/w5100s.c new file mode 100644 index 0000000..8583eb1 --- /dev/null +++ b/User/ioLibrary_Driver/Ethernet/W5100S/w5100s.c @@ -0,0 +1,514 @@ +//***************************************************************************** +// +//! \file w5100S.c +//! \brief W5100S HAL Interface. +//! \version 1.0.0 +//! \date 2018/03/29 +//! \par Revision history +//! <2018/03/29> 1st Release +//! \author Peter +//! +//! Copyright (c) 2013, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** + +#include "w5100s.h" + +#if (_WIZCHIP_ == W5100S) +/** +@brief This function writes the data into W5100S registers. +*/ +void WIZCHIP_WRITE(uint32_t AddrSel, uint8_t wb ) +{ + uint8_t spi_data[4]; + + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); + +#if( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_)) + if(!WIZCHIP.IF.SPI._write_burst) // byte operation + { + WIZCHIP.IF.SPI._write_byte(0xF0); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF) >> 0); + WIZCHIP.IF.SPI._write_byte(wb); // Data write (write 1byte data) + } + else // burst operation + { + spi_data[0] = 0xF0; + spi_data[1] = (AddrSel & 0xFF00) >> 8; + spi_data[2] = (AddrSel & 0x00FF) >> 0; + spi_data[3] = wb; + WIZCHIP.IF.SPI._write_burst(spi_data, 4); + } +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_5500_) ) + if(!WIZCHIP.IF.SPI._write_burst) // byte operation + { + WIZCHIP.IF.SPI._write_byte((AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF) >> 0); + WIZCHIP.IF.SPI._write_byte(0xF0); + WIZCHIP.IF.SPI._write_byte(wb); // Data write (write 1byte data) + } + else // burst operation + { + spi_data[0] = (AddrSel & 0xFF00) >> 8; + spi_data[1] = (AddrSel & 0x00FF) >> 0; + spi_data[2] = 0xF0; + spi_data[3] = wb; + WIZCHIP.IF.SPI._write_burst(spi_data, 4); + + } +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_) ) + + //add indirect bus + //M20150601 : Rename the function for integrating with ioLibrary + //WIZCHIP.IF.BUS._write_byte(IDM_AR0,(AddrSel & 0xFF00) >> 8); + //WIZCHIP.IF.BUS._write_byte(IDM_AR1,(AddrSel & 0x00FF)); + //WIZCHIP.IF.BUS._write_byte(IDM_DR,wb); + WIZCHIP.IF.BUS._write_data(IDM_AR0,(AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.BUS._write_data(IDM_AR1,(AddrSel & 0x00FF)); + WIZCHIP.IF.BUS._write_data(IDM_DR,wb); +#else + #error "Unknown _WIZCHIP_IO_MODE_ in W5100. !!!" +#endif + + WIZCHIP.CS._deselect(); + WIZCHIP_CRITICAL_EXIT(); +} +/** +@brief This function reads the value from W5100S registers. +*/ +uint8_t WIZCHIP_READ(uint32_t AddrSel) +{ + uint8_t ret; + uint8_t spi_data[3]; + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); + +#if( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_)) + if(!WIZCHIP.IF.SPI._read_burst || !WIZCHIP.IF.SPI._write_burst) // byte operation + { + WIZCHIP.IF.SPI._write_byte(0x0F); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF) >> 0); + } + else + { + spi_data[0] = 0x0F; + spi_data[1] = (AddrSel & 0xFF00) >> 8; + spi_data[2] = (AddrSel & 0x00FF) >> 0; + WIZCHIP.IF.SPI._write_burst(spi_data, 3); + } + ret = WIZCHIP.IF.SPI._read_byte(); +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_5500_) ) + if(!WIZCHIP.IF.SPI._read_burst || !WIZCHIP.IF.SPI._write_burst) // burst operation + { + WIZCHIP.IF.SPI._write_byte((AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF) >> 0); + WIZCHIP.IF.SPI._write_byte(0x0F); + } + else + { + spi_data[0] = (AddrSel & 0xFF00) >> 8; + spi_data[1] = (AddrSel & 0x00FF) >> 0; + spi_data[2] = 0x0F + WIZCHIP.IF.SPI._write_burst(spi_data, 3); + } + ret = WIZCHIP.IF.SPI._read_byte(); +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_) ) + + //add indirect bus + //M20150601 : Rename the function for integrating with ioLibrary + //WIZCHIP.IF.BUS._write_byte(IDM_AR0,(AddrSel & 0xFF00) >> 8); + //WIZCHIP.IF.BUS._write_byte(IDM_AR1,(AddrSel & 0x00FF)); + //ret = WIZCHIP.IF.BUS._read_byte(IDM_DR); + WIZCHIP.IF.BUS._write_data(IDM_AR0,(AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.BUS._write_data(IDM_AR1,(AddrSel & 0x00FF)); + ret = WIZCHIP.IF.BUS._read_data(IDM_DR); + +#else + #error "Unknown _WIZCHIP_IO_MODE_ in W5100S. !!!" +#endif + + WIZCHIP.CS._deselect(); + WIZCHIP_CRITICAL_EXIT(); + return ret; +} + + +/** +@brief This function writes into W5100S memory(Buffer) +*/ +void WIZCHIP_WRITE_BUF(uint32_t AddrSel, uint8_t* pBuf, uint16_t len) +{ + uint8_t spi_data[3]; + uint16_t i = 0; + + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); //M20150601 : Moved here. + +#if((_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_)) + + if(!WIZCHIP.IF.SPI._write_burst) // byte operation + { + WIZCHIP.IF.SPI._write_byte(0xF0); + WIZCHIP.IF.SPI._write_byte((((uint16_t)(AddrSel+i)) & 0xFF00) >> 8); + WIZCHIP.IF.SPI._write_byte((((uint16_t)(AddrSel+i)) & 0x00FF) >> 0); + + for(i = 0; i < len; i++) + { + WIZCHIP.IF.SPI._write_byte(pBuf[i]); // Data write (write 1byte data) + } + } + else // burst operation + { + spi_data[0] = 0xF0; + spi_data[1] = (((uint16_t)(AddrSel+i)) & 0xFF00) >> 8; + spi_data[2] = (((uint16_t)(AddrSel+i)) & 0x00FF) >> 0; + WIZCHIP.IF.SPI._write_burst(spi_data, 3); + WIZCHIP.IF.SPI._write_burst(pBuf, len); + } + +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_5500_) ) + if(!WIZCHIP.IF.SPI._write_burst) // byte operation + { + WIZCHIP.IF.SPI._write_byte((((uint16_t)(AddrSel+i)) & 0xFF00) >> 8); + WIZCHIP.IF.SPI._write_byte((((uint16_t)(AddrSel+i)) & 0x00FF) >> 0); + WIZCHIP.IF.SPI._write_byte(0xF0); + + for(i = 0; i < len; i++) + { + WIZCHIP.IF.SPI._write_byte(pBuf[i]); // Data write (write 1byte data) + } + } + else // burst operation + { + spi_data[0] = (((uint16_t)(AddrSel+i)) & 0xFF00) >> 8; + spi_data[1] = (((uint16_t)(AddrSel+i)) & 0x00FF) >> 0; + spi_data[2] = 0xF0; + WIZCHIP.IF.SPI._write_burst(spi_data, 3); + WIZCHIP.IF.SPI._write_burst(pBuf, len); + } +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_) ) + //M20150601 : Rename the function for integrating with ioLibrary + /* + WIZCHIP_WRITE(MR,WIZCHIP_READ(MR) | MR_AI); + WIZCHIP.IF.BUS._write_byte(IDM_AR0,(AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.BUS._write_byte(IDM_AR1,(AddrSel & 0x00FF)); + for(i = 0 ; i < len; i++) + WIZCHIP.IF.BUS._write_byte(IDM_DR,pBuf[i]); + WIZCHIP_WRITE(MR, WIZCHIP_READ(MR) & ~MR_AI); + */ + setMR(getMR()|MR_AI); + WIZCHIP.IF.BUS._write_data(IDM_AR0,(AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.BUS._write_data(IDM_AR1,(AddrSel & 0x00FF)); + for(i = 0 ; i < len; i++) + WIZCHIP.IF.BUS._write_data(IDM_DR,pBuf[i]); + setMR(getMR() & ~MR_AI); + +#else + #error "Unknown _WIZCHIP_IO_MODE_ in W5100S. !!!!" +#endif + + WIZCHIP.CS._deselect(); //M20150601 : Moved here. + WIZCHIP_CRITICAL_EXIT(); +} + +/** +@brief This function reads into W5100S memory(Buffer) +*/ + +void WIZCHIP_READ_BUF (uint32_t AddrSel, uint8_t* pBuf, uint16_t len) +{ + uint8_t spi_data[3]; + uint16_t i = 0; + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); //M20150601 : Moved here. + +#if( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_) ) + if(!WIZCHIP.IF.SPI._read_burst || !WIZCHIP.IF.SPI._write_burst) // byte operation + { + WIZCHIP.IF.SPI._write_byte(0x0F); + WIZCHIP.IF.SPI._write_byte((uint16_t)((AddrSel+i) & 0xFF00) >> 8); + WIZCHIP.IF.SPI._write_byte((uint16_t)((AddrSel+i) & 0x00FF) >> 0); + + for(i = 0; i < len; i++) + { + pBuf[i] = WIZCHIP.IF.SPI._read_byte(); + } + } + else // burst operation + { + spi_data[0] = 0x0F; + spi_data[1] = (uint16_t)((AddrSel+i) & 0xFF00) >> 8; + spi_data[2] = (uint16_t)((AddrSel+i) & 0x00FF) >> 0; + WIZCHIP.IF.SPI._write_burst(spi_data, 3); + WIZCHIP.IF.SPI._read_burst(pBuf, len); + + } +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_5500_) ) + if(!WIZCHIP.IF.SPI._read_burst || !WIZCHIP.IF.SPI._write_burst) // byte operation + { + WIZCHIP.IF.SPI._write_byte((uint16_t)((AddrSel+i) & 0xFF00) >> 8); + WIZCHIP.IF.SPI._write_byte((uint16_t)((AddrSel+i) & 0x00FF) >> 0); + WIZCHIP.IF.SPI._write_byte(0x0F); + + for(i = 0; i < len; i++) + { + pBuf[i] = WIZCHIP.IF.SPI._read_byte(); + } + } + else // burst operation + { + spi_data[0] = (uint16_t)((AddrSel+i) & 0xFF00) >> 8; + spi_data[1] = (uint16_t)((AddrSel+i) & 0x00FF) >> 0; + spi_data[2] = 0x0F; + WIZCHIP.IF.SPI._write_burst(spi_data, 3); + WIZCHIP.IF.SPI._read_burst(pBuf, len); + } + + +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_) ) + //M20150601 : Rename the function for integrating with ioLibrary + /* + WIZCHIP_WRITE(MR, WIZCHIP_READ(MR) | MR_AI); + WIZCHIP.IF.BUS._write_byte(IDM_AR0,(AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.BUS._write_byte(IDM_AR1,(AddrSel & 0x00FF)); + for(i = 0 ; i < len; i++) + pBuf[i] = WIZCHIP.IF.BUS._read_byte(IDM_DR); + WIZCHIP_WRITE(MR, WIZCHIP_READ(MR) & ~MR_AI); + */ + setMR(getMR() | MR_AI); + WIZCHIP.IF.BUS._write_data(IDM_AR0,(AddrSel & 0xFF00) >> 8); + WIZCHIP.IF.BUS._write_data(IDM_AR1,(AddrSel & 0x00FF)); + for(i = 0 ; i < len; i++) + pBuf[i] = WIZCHIP.IF.BUS._read_data(IDM_DR); + setMR(getMR() & ~MR_AI); + +#else + #error "Unknown _WIZCHIP_IO_MODE_ in W5100S. !!!!" +#endif + + WIZCHIP.CS._deselect(); //M20150601 : Moved Here. + WIZCHIP_CRITICAL_EXIT(); +} + +/////////////////////////////////// +// Socket N regsiter IO function // +/////////////////////////////////// + +uint16_t getSn_TX_FSR(uint8_t sn) +{ + uint16_t val=0,val1=0; + do + { + val1 = WIZCHIP_READ(Sn_TX_FSR(sn)); + val1 = (val1 << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_FSR(sn),1)); + if (val1 != 0) + { + val = WIZCHIP_READ(Sn_TX_FSR(sn)); + val = (val << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_FSR(sn),1)); + } + }while (val != val1); + return val; +} + + +uint16_t getSn_RX_RSR(uint8_t sn) +{ + uint16_t val=0,val1=0; + do + { + val1 = WIZCHIP_READ(Sn_RX_RSR(sn)); + val1 = (val1 << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RSR(sn),1)); + if (val1 != 0) + { + val = WIZCHIP_READ(Sn_RX_RSR(sn)); + val = (val << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RSR(sn),1)); + } + }while (val != val1); + return val; +} + +///////////////////////////////////// +// Sn_TXBUF & Sn_RXBUF IO function // +///////////////////////////////////// +uint32_t getSn_RxBASE(uint8_t sn) +{ + int8_t i; +#if ( _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_) + uint32_t rxbase = _W5100S_IO_BASE_ + _WIZCHIP_IO_RXBUF_; +#else + uint32_t rxbase = _WIZCHIP_IO_RXBUF_; +#endif + for(i = 0; i < sn; i++) + rxbase += getSn_RxMAX(i); + + return rxbase; +} + +uint32_t getSn_TxBASE(uint8_t sn) +{ + int8_t i; +#if ( _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_) + uint32_t txbase = _W5100S_IO_BASE_ + _WIZCHIP_IO_TXBUF_; +#else + uint32_t txbase = _WIZCHIP_IO_TXBUF_; +#endif + for(i = 0; i < sn; i++) + txbase += getSn_TxMAX(i); + return txbase; +} + +/** +@brief This function is being called by send() and sendto() function also. for copy the data form application buffer to Transmite buffer of the chip. + +This function read the Tx write pointer register and after copy the data in buffer update the Tx write pointer +register. User should read upper byte first and lower byte later to get proper value. +And this function is being used for copy the data form application buffer to Transmite +buffer of the chip. It calculate the actual physical address where one has to write +the data in transmite buffer. Here also take care of the condition while it exceed +the Tx memory uper-bound of socket. + +*/ +void wiz_send_data(uint8_t sn, uint8_t *wizdata, uint16_t len) +{ + uint16_t ptr; + uint16_t size; + uint16_t dst_mask; + uint16_t dst_ptr; + + ptr = getSn_TX_WR(sn); + + dst_mask = ptr & getSn_TxMASK(sn); + dst_ptr = getSn_TxBASE(sn) + dst_mask; + + if (dst_mask + len > getSn_TxMAX(sn)) + { + size = getSn_TxMAX(sn) - dst_mask; + WIZCHIP_WRITE_BUF(dst_ptr, wizdata, size); + wizdata += size; + size = len - size; + dst_ptr = getSn_TxBASE(sn); + WIZCHIP_WRITE_BUF(dst_ptr, wizdata, size); + } + else + { + WIZCHIP_WRITE_BUF(dst_ptr, wizdata, len); + } + + ptr += len; + + setSn_TX_WR(sn, ptr); +} + + +/** +@brief This function is being called by recv() also. This function is being used for copy the data form Receive buffer of the chip to application buffer. + +This function read the Rx read pointer register +and after copy the data from receive buffer update the Rx write pointer register. +User should read upper byte first and lower byte later to get proper value. +It calculate the actual physical address where one has to read +the data from Receive buffer. Here also take care of the condition while it exceed +the Rx memory uper-bound of socket. +*/ +void wiz_recv_data(uint8_t sn, uint8_t *wizdata, uint16_t len) +{ + uint16_t ptr; + uint16_t size; + uint16_t src_mask; + uint16_t src_ptr; + + ptr = getSn_RX_RD(sn); + + src_mask = (uint32_t)ptr & getSn_RxMASK(sn); + src_ptr = (getSn_RxBASE(sn) + src_mask); + + + if( (src_mask + len) > getSn_RxMAX(sn) ) + { + size = getSn_RxMAX(sn) - src_mask; + WIZCHIP_READ_BUF((uint32_t)src_ptr, (uint8_t*)wizdata, size); + wizdata += size; + size = len - size; + src_ptr = getSn_RxBASE(sn); + WIZCHIP_READ_BUF(src_ptr, (uint8_t*)wizdata, size); + } + else + { + WIZCHIP_READ_BUF(src_ptr, (uint8_t*)wizdata, len); + } + + ptr += len; + + setSn_RX_RD(sn, ptr); +} + +void wiz_recv_ignore(uint8_t sn, uint16_t len) +{ + uint16_t ptr; + + ptr = getSn_RX_RD(sn); + + ptr += len; + setSn_RX_RD(sn,ptr); +} + +void wiz_mdio_write(uint8_t PHYMDIO_regadr, uint16_t var) +{ + WIZCHIP_WRITE(PHYRAR,PHYMDIO_regadr); + WIZCHIP_WRITE(PHYDIR, (uint8_t)(var >> 8)); + WIZCHIP_WRITE(PHYDIR+1, (uint8_t)(var)); + WIZCHIP_WRITE(PHYACR, PHYACR_WRITE); + while(WIZCHIP_READ(PHYACR)); //wait for command complete +} + +uint16_t wiz_mdio_read(uint8_t PHYMDIO_regadr) +{ + WIZCHIP_WRITE(PHYRAR,PHYMDIO_regadr); + WIZCHIP_WRITE(PHYACR, PHYACR_READ); + while(WIZCHIP_READ(PHYACR)); //wait for command complete + return ((uint16_t)WIZCHIP_READ(PHYDOR) << 8) | WIZCHIP_READ(PHYDOR+1); +} + +void wiz_delay_ms(uint32_t milliseconds) +{ + uint32_t i; + for(i = 0 ; i < milliseconds ; i++) + { + //Write any values to clear the TCNTCLKR register + setTCNTCLKR(0xff); + + // Wait until counter register value reaches 10.(10 = 1ms : TCNTR is 100us tick counter register) + while(getTCNTR() < 0x0a){} + } +} + +#endif diff --git a/User/ioLibrary_Driver/Ethernet/W5100S/w5100s.h b/User/ioLibrary_Driver/Ethernet/W5100S/w5100s.h new file mode 100644 index 0000000..3daa8b4 --- /dev/null +++ b/User/ioLibrary_Driver/Ethernet/W5100S/w5100s.h @@ -0,0 +1,3322 @@ +//* **************************************************************************** +//! \file w5100S.h +//! \brief W5100S HAL Header File. +//! \version 1.0.0 +//! \date 2018/03/29 +//! \par Revision history +//! <2018/03/29> 1st Release +//! \author Peter +//! \copyright +//! +//! Copyright (c) 2013, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** + + +#ifndef _W5100S_H_ +#define _W5100S_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "wizchip_conf.h" + +/// \cond DOXY_APPLY_CODE +#if (_WIZCHIP_ == W5100S) +/// \endcond + +#define _WIZCHIP_SN_BASE_ (0x0400) +#define _WIZCHIP_SN_SIZE_ (0x0100) +#define _WIZCHIP_IO_TXBUF_ (0x4000) /* Internal Tx buffer address of the iinchip */ +#define _WIZCHIP_IO_RXBUF_ (0x6000) /* Internal Rx buffer address of the iinchip */ + + +#define WIZCHIP_CREG_BLOCK 0x00 ///< Common register block +#define WIZCHIP_SREG_BLOCK(N) (_WIZCHIP_SN_BASE_+ _WIZCHIP_SN_SIZE_*N) ///< Socket N register block + +#define WIZCHIP_OFFSET_INC(ADDR, N) (ADDR + N) ///< Increase offset address + +#if (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_) + #define _W5100S_IO_BASE_ _WIZCHIP_IO_BASE_ +#elif (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_) + #define IDM_OR ((_WIZCHIP_IO_BASE + 0x0000)) + #define IDM_AR0 ((_WIZCHIP_IO_BASE_ + 0x0001)) + #define IDM_AR1 ((_WIZCHIP_IO_BASE_ + 0x0002)) + #define IDM_DR ((_WIZCHIP_IO_BASE_ + 0x0003)) + #define _W5100S_IO_BASE_ 0x0000 +#elif (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_) + #define _W5100S_IO_BASE_ 0x0000 +#endif + +/////////////////////////////////////// +// Definition For Legacy Chip Driver // +/////////////////////////////////////// +#define IINCHIP_READ(ADDR) WIZCHIP_READ(ADDR) ///< The defined for legacy chip driver +#define IINCHIP_WRITE(ADDR,VAL) WIZCHIP_WRITE(ADDR,VAL) ///< The defined for legacy chip driver +#define IINCHIP_READ_BUF(ADDR,BUF,LEN) WIZCHIP_READ_BUF(ADDR,BUF,LEN) ///< The defined for legacy chip driver +#define IINCHIP_WRITE_BUF(ADDR,BUF,LEN) WIZCHIP_WRITE(ADDR,BUF,LEN) ///< The defined for legacy chip driver + + +//----------- defgroup -------------------------------- + +/** + * @defgroup W5100S W5100S + * @brief WHIZCHIP register defines and I/O functions of @b W5100S. + * + * - @ref WIZCHIP_register_W5100S: @ref Common_register_group_W5100S and @ref Socket_register_group_W5100S + * - @ref WIZCHIP_IO_Functions_W5100S: @ref Basic_IO_function_W5100S, @ref Common_register_access_function_W5100S and @ref Special_function_W5100S + */ + + /** + * @defgroup WIZCHIP_register_W5100S WIZCHIP register + * @ingroup W5100S + * @brief WIZCHIP register defines register group of W5100S . + * + * - \ref Common_register_group_W5100S : Common register group W5100S + * - \ref Socket_register_group_W5100S : \c SOCKET n register group W5100S + */ + + +/** + * @defgroup WIZCHIP_IO_Functions_W5100S WIZCHIP I/O functions + * @ingroup W5100S + * @brief This supports the basic I/O functions for \ref WIZCHIP_register_W5100S. + * + * - Basic I/O function \n + * WIZCHIP_READ(), WIZCHIP_WRITE(), WIZCHIP_READ_BUF(), WIZCHIP_WRITE_BUF(), wiz_recv_data(), wiz_recv_ignore(), wiz_send_data() \n\n + * + * - \ref Common_register_group_W5100S access functions \n + * -# @b Mode \n + * getMR(), setMR() + * -# @b Interrupt \n + * getIR(), setIR(), getIMR(), setIMR(), + * -# Network Information \n + * getSHAR(), setSHAR(), getGAR(), setGAR(), getSUBR(), setSUBR(), getSIPR(), setSIPR() + * -# @b Retransmission \n + * getRCR(), setRCR(), getRTR(), setRTR() + * -# @b PPPoE \n + * getPTIMER(), setPTIMER(), getPMAGIC(), getPMAGIC() + * + * - \ref Socket_register_group_W5100S access functions \n + * -# SOCKET control \n + * getSn_MR(), setSn_MR(), getSn_CR(), setSn_CR(), getSn_IR(), setSn_IR() + * -# SOCKET information \n + * getSn_SR(), getSn_DHAR(), setSn_DHAR(), getSn_PORT(), setSn_PORT(), getSn_DIPR(), setSn_DIPR(), getSn_DPORT(), setSn_DPORT() + * getSn_MSSR(), setSn_MSSR() + * -# SOCKET communication \n + * getSn_RXMEM_SIZE(), setSn_RXMEM_SIZE(), getSn_TXMEM_SIZE(), setSn_TXMEM_SIZE() \n + * getSn_TX_RD(), getSn_TX_WR(), setSn_TX_WR() \n + * getSn_RX_RD(), setSn_RX_RD(), getSn_RX_WR() \n + * getSn_TX_FSR(), getSn_RX_RSR() + * -# IP header field \n + * getSn_FRAG(), setSn_FRAG(), getSn_TOS(), setSn_TOS() \n + * getSn_TTL(), setSn_TTL() + */ + +/** + * @defgroup Common_register_group_W5100S Common register + * @ingroup WIZCHIP_register_W5100S + * @brief Common register group\n + * It set the basic for the networking\n + * It set the configuration such as interrupt, network information, ICMP, etc. + * @details + * @sa MR : Mode register. + * @sa GAR, SUBR, SHAR, SIPR + * @sa IR, Sn_IR, _IMR_ : Interrupt. + * @sa _RTR_, _RCR_ : Data retransmission. + * @sa PTIMER, PMAGIC : PPPoE. + */ + + + /** + * @defgroup Socket_register_group_W5100S Socket register + * @ingroup WIZCHIP_register_W5100S + * @brief Socket register group\n + * Socket register configures and control SOCKETn which is necessary to data communication. + * @details + * @sa Sn_MR, Sn_CR, Sn_IR : SOCKETn Control + * @sa Sn_SR, Sn_PORT, Sn_DHAR, Sn_DIPR, Sn_DPORT : SOCKETn Information + * @sa Sn_MSSR, Sn_TOS, Sn_TTL, Sn_FRAGR : Internet protocol. + * @sa Sn_RXMEM_SIZE, Sn_TXMEM_SIZE, Sn_TX_FSR, Sn_TX_RD, Sn_TX_WR, Sn_RX_RSR, Sn_RX_RD, Sn_RX_WR : Data communication + */ + + /** + * @defgroup Basic_IO_function_W5100S Basic I/O function + * @ingroup WIZCHIP_IO_Functions_W5100S + * @brief These are basic input/output functions to read values from register or write values to register. + */ + +/** + * @defgroup Common_register_access_function_W5100S Common register access functions + * @ingroup WIZCHIP_IO_Functions_W5100S + * @brief These are functions to access common registers. + */ + +/** + * @defgroup Socket_register_access_function_W5100S Socket register access functions + * @ingroup WIZCHIP_IO_Functions_W5100S + * @brief These are functions to access socket registers. + */ + + /** + * @defgroup Special_function_W5100S Special functions + * @ingroup WIZCHIP_IO_Functions_W5100S + * @brief These are special functions to access to the PHY + */ + + //----------------------------------------------------------------------------------- + +//----------------------------- W5100S Common Registers IOMAP ----------------------------- +/** + * @ingroup Common_register_group_W5100S + * @brief Mode Register address(R/W)\n + * \ref MR is used for S/W reset, ping block mode, PPPoE mode and etc. + * @details Each bit of \ref MR defined as follows. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      RST Reserved WOL PB PPPoE Reserved AI IND
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref MR_RST : Reset + * - \ref MR_PB : Ping block + * - \ref MR_PPPOE : PPPoE mode + * - \ref MR_AI : Address Auto-Increment in Indirect Bus Interface + * - \ref MR_IND : Indirect Bus Interface mode + */ +#if _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_ + #define MR (_WIZCHIP_IO_BASE_ + (0x0000)) // Mode +#else + #define MR (_W5100S_IO_BASE_ + (0x0000)) // Mode +#endif + +/** + * @ingroup Common_register_group_W5100S + * @brief Gateway IP Register address(R/W) + * @details \ref GAR configures the default gateway address. + */ +#define GAR (_W5100S_IO_BASE_ + (0x0001)) // GW Address + +/** + * @ingroup Common_register_group_W5100S + * @brief Subnet mask Register address(R/W) + * @details \ref SUBR configures the subnet mask address. + */ +#define SUBR (_W5100S_IO_BASE_ + (0x0005)) // SN Mask Address + +/** + * @ingroup Common_register_group_W5100S + * @brief Source MAC Register address(R/W) + * @details \ref SHAR configures the source hardware address. + */ +#define SHAR (_W5100S_IO_BASE_ + (0x0009)) // Source Hardware Address + +/** + * @ingroup Common_register_group_W5100S + * @brief Source IP Register address(R/W) + * @details \ref SIPR configures the source IP address. + */ +#define SIPR (_W5100S_IO_BASE_ + (0x000F)) // Source IP Address + +// Reserved (_W5100S_IO_BASE_ + (0x0013)) +// Reserved (_W5100S_IO_BASE_ + (0x0014)) + +/** + * @ingroup Common_register_group_W5100S + * @brief Interrupt Register(R/W) + * @details \ref IR indicates the interrupt status. Each bit of \ref IR will be still until the bit will be written to by the host. + * If \ref IR is not equal to x00 INTn PIN is asserted to low until it is x00\n\n + * Each bit of \ref IR defined as follows. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      CONFLICT UNREACH PPPoE Reserved S3_INT S2_INT S1_INT S0_INT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref IR_CONFLICT : IP conflict + * - \ref IR_UNREACH : Destination unreachable + * - \ref IR_PPPoE : PPPoE connection close + * - \ref IR_SOCK(3) : SOCKET 3 Interrupt + * - \ref IR_SOCK(2) : SOCKET 2 Interrupt + * - \ref IR_SOCK(1) : SOCKET 1 Interrupt + * - \ref IR_SOCK(0) : SOCKET 0 Interrupt + */ +#define IR (_W5100S_IO_BASE_ + (0x0015)) // Interrupt + +/** + * @ingroup Common_register_group_W5100S + * @brief Socket Interrupt Mask Register(R/W) + * @details Each bit of \ref _IMR_ corresponds to each bit of \ref IR. + * When a bit of \ref _IMR_ is and the corresponding bit of \ref IR is set, Interrupt will be issued. + */ +#define _IMR_ (_W5100S_IO_BASE_ + (0x0016)) // Socket Interrupt Mask + +/** + * @ingroup Common_register_group_W5100S + * @brief Timeout register address( 1 is 100us )(R/W) + * @details \ref _RTR_ configures the retransmission timeout period. The unit of timeout period is 100us and the default of \ref _RTR_ is x07D0or 000 + * And so the default timeout period is 200ms(100us X 2000). During the time configured by \ref _RTR_, W5100S waits for the peer response + * to the packet that is transmitted by \ref Sn_CR (CONNECT, DISCON, CLOSE, SEND, SEND_MAC, SEND_KEEP command). + * If the peer does not respond within the \ref _RTR_ time, W5100S retransmits the packet or issues timeout. + */ +#define _RTR_ (_W5100S_IO_BASE_ + (0x0017)) // Retry Time + +/** + * @ingroup Common_register_group_W5100S + * @brief Retry count register(R/W) + * @details \ref _RCR_ configures the number of time of retransmission. + * When retransmission occurs as many as ref _RCR_+1 Timeout interrupt is issued (\ref Sn_IR_TIMEOUT = '1'). + */ +#define _RCR_ (_W5100S_IO_BASE_ + (0x0019)) // Retry Count + +/** + * @ingroup Common_register_group_W5100S + * @brief Receive Memory Size Register + * @details \ref RMSR register configures RX bufffer Size of the SOCKET + * The sum of the RX buffers can not exceed 8kB. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      S3-1 S3-0 S2-1 S2-0 S1-1 S1-0 S0-1 S0-0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Memory SizeSn-1Sn-0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      1KB00
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      2KB01
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      4KB10
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      8KB11
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + */ +#define RMSR (_W5100S_IO_BASE_ + (0x001A)) // Receive Memory Size + +/** + * @ingroup Common_register_group_W5100S + * @brief Transmit Memory Size Register + * @details \ref TMSR register configures TX bufffer Size of the SOCKET + * The sum of the TX buffers can not exceed 8kB. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      S3-1 S3-0 S2-1 S2-0 S1-1 S1-0 S0-1 S0-0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Memory SizeSn-1Sn-0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      1KB00
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      2KB01
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      4KB10
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      8KB11
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + */ +#define TMSR (_W5100S_IO_BASE_ + (0x001B)) // Transmit Memory Size + +/** + * @ingroup Common_register_group_W5100S + * @brief Interrupt register 2 + * @details \ref IR2 indicates the interrupt status. + * Each bit of IR2 will be still until the bit will be written to by the host. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7:1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Reserved WOL
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref IR2_WOL : WOL MAGIC PACKET Interrupt Mask + */ +#define IR2 (_W5100S_IO_BASE_ + (0x0020)) + +/** + * @ingroup Common_register_group_W5100S + * @brief Interrupt mask register 2 + * @details \ref IMR2 Each bit of IMR2 corresponds to each bit of IR2. + * When a bit of IMR2 is and the corresponding bit of IR2 is set, Interrupt will be issued. + */ +#define IMR2 (_W5100S_IO_BASE_ + (0x0021)) + + +/** + * @ingroup Common_register_group_W5100S + * @brief PPP LCP Request Timer register in PPPoE mode(R) + * @details \ref PTIMER configures the time for sending LCP echo request. The unit of time is 25ms. + */ +#define PTIMER (_W5100S_IO_BASE_ + (0x0028)) // PPP LCP RequestTimer + +/** + * @ingroup Common_register_group_W5100S + * @brief PPP LCP Magic number register in PPPoE mode(R) + * @details \ref PMAGIC configures the 4bytes magic number to be used in LCP negotiation. + */ +#define PMAGIC (_W5100S_IO_BASE_ + (0x0029)) // PPP LCP Magic number + +/** + * @ingroup Common_register_group_W5100S + * @brief Unreachable IP address register + * @details \ref + */ +#define UIPR (_W5100S_IO_BASE_ + (0x002A)) + +/** + * @ingroup Common_register_group_W5100S + * @brief Unreachable Port register + * @details \ref + */ +#define UPORTR (_W5100S_IO_BASE_ + (0x002E)) + +/* register for W5100S only */ + +/*------------------------------------------ Common registers ------------------------------------------*/ + +/** + * @ingroup Common_register_group_W5100S + * @brief MR2 Mode register 2 + * @details \reg + */ +#define MR2 (_W5100S_IO_BASE_ + (0x0030)) + + +/** + * @ingroup Common_register_group_W5100S + * @brief Destination Hardware address in PPPoE + * @details \reg + */ +#define PHAR (_W5100S_IO_BASE_ + (0x0032)) + +/** + * @ingroup Common_register_group_W5100S + * @brief Session ID in PPPoE + * @details \reg + */ +#define PSIDR (_W5100S_IO_BASE_ + (0x0038)) + +/** + * @ingroup Common_register_group_W5100S + * @brief Maximum receive Unit in PPPoE + * @details \reg + */ +#define PMRUR (_W5100S_IO_BASE_ + (0x003A)) + + +/*------------------------------------------ PHY registers ------------------------------------------*/ + +/** + * @ingroup Common_register_group_W5100S + * @brief PHY status register + * @details \reg + */ +#define PHYSR (_W5100S_IO_BASE_ + (0x003C)) + +/** + * @ingroup Common_register_group_W5100S + * @brief PHY status register(hidden) + * @details \reg + */ +#define PHYSR1 (_W5100S_IO_BASE_ + (0x003D)) + +/** + * @ingroup Common_register_group_W5100S + * @brief PHY Address value + * @details \reg + */ +#define PHYAR (_W5100S_IO_BASE_ + (0x003E)) + +/** + * @ingroup Common_register_group_W5100S + * @brief PHY Register address + * @details \reg + */ +#define PHYRAR (_W5100S_IO_BASE_ + (0x003F)) + +/** + * @ingroup Common_register_group_W5100S + * @brief PHY Data input register + * @details \reg + */ +#define PHYDIR (_W5100S_IO_BASE_ + (0x0040)) + +/** + * @ingroup Common_register_group_W5100S + * @brief PHY data output register + * @details \reg + */ +#define PHYDOR (_W5100S_IO_BASE_ + (0x0042)) + +/** + * @ingroup Common_register_group_W5100S + * @brief PHY Action register + * @details \reg + */ +#define PHYACR (_W5100S_IO_BASE_ + (0x0044)) + +/** + * @ingroup Common_register_group_W5100S + * @brief PHY Division register + * @details \reg + */ +#define PHYDIVR (_W5100S_IO_BASE_ + (0x0045)) + +/** + * @ingroup Common_register_group_W5100S + * @brief PHY Control register 0 + * @details \reg + */ +#define PHYCR0 (_W5100S_IO_BASE_ + (0x0046)) +/** + * @ingroup Common_register_group_W5100S + * @brief PHY Control register 1 + * @details \reg + */ +#define PHYCR1 (_W5100S_IO_BASE_ + (0x0047)) + +/*------------------------------------------ Socket Less registers ------------------------------------------*/ + +/** + * @ingroup Common_register_group_W5100S + * @brief Socket-less control register + * @details \reg + */ +#define SLCR (_W5100S_IO_BASE_ + (0x004C)) + +/** + * @ingroup Common_register_group_W5100S + * @brief Socket-less retry time register + * @details \reg + */ +#define SLRTR (_W5100S_IO_BASE_ + (0x004D)) + + +/** + * @ingroup Common_register_group_W5100S + * @brief Socket-less retry count register + * @details \reg + */ +#define SLRCR (_W5100S_IO_BASE_ + (0x004F)) + +/** + * @ingroup Common_register_group_W5100S + * @brief Socket-less peer IP address register + * @details \reg + */ +#define SLPIPR (_W5100S_IO_BASE_ + (0x0050)) + +/** + * @ingroup Common_register_group_W5100S + * @brief Socket-less peer hardware address register + * @details \reg + */ +#define SLPHAR (_W5100S_IO_BASE_ + (0x0054)) + +/** + * @ingroup Common_register_group_W5100S + * @brief Ping sequence number register + * @details \reg + */ +#define PINGSEQR (_W5100S_IO_BASE_ + (0x005A)) + +/** + * @ingroup Common_register_group_W5100S + * @brief Ping ID register + * @details \reg + */ +#define PINGIDR (_W5100S_IO_BASE_ + (0x005C)) + +/** + * @ingroup Common_register_group_W5100S + * @brief Socket-less interrupt mask register + * @details \reg + */ +#define SLIMR (_W5100S_IO_BASE_ + (0x005E)) + +/** + * @ingroup Common_register_group_W5100S + * @brief Socket-less interrupt register + * @details \reg + */ +#define SLIR (_W5100S_IO_BASE_ + (0x005F)) + +/** + * @ingroup Common_register_group_W5100S + * @brief DBGOUT(hidden) + * @details \reg + */ +#define DBGOUT (_W5100S_IO_BASE_ + (0x0060)) + +/** + * @ingroup Common_register_group_W5100S + * @brief NICMAXCOLR(hidden) + * @details \reg + */ +#define NICMAXCOLR (_W5100S_IO_BASE_ + (0x0063)) +/*------------------------------------------ CFG registers ------------------------------------------*/ + +/** + * @ingroup Common_register_group_W5100S + * @brief Chip Configuration locking register + * @details \reg + */ +#define CHIPLCKR (_W5100S_IO_BASE_ + (0x0070)) + +/** + * @ingroup Common_register_group_W5100S + * @brief Network Configuration locking register + * @details \reg + */ +#define NETLCKR (_W5100S_IO_BASE_ + (0x0071)) + +/** + * @ingroup Common_register_group_W5100S + * @brief PHY Configuration locking register + * @details \reg + */ +#define PHYLCKR (_W5100S_IO_BASE_ + (0x0072)) + +/** + * @ingroup Common_register_group_W5100S + * @brief version register + * @details \reg + */ +#define VERR (_W5100S_IO_BASE_ + (0x0080)) + +/** + * @ingroup Common_register_group_W5100S + * @brief Core 100us Counter register + * @details \reg + */ +#define TCNTR (_W5100S_IO_BASE_ + (0x0082)) + +/** + * @ingroup Common_register_group_W5100S + * @brief Core 100us Counter clear register + * @details \reg + */ +#define TCNTCLKR (_W5100S_IO_BASE_ + (0x0088)) + +//----------------------------- W5100S Socket Registers ----------------------------- + +//--------------------------- For Backward Compatibility --------------------------- + +/** + * @ingroup Socket_register_group_W5100S + * @brief socket Mode register(R/W) + * @details \ref Sn_MR configures the option or protocol type of Socket n.\n\n + * Each bit of \ref Sn_MR defined as the following. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      MULTI MF ND/MC Reserved Protocol[3] Protocol[2] Protocol[1] Protocol[0]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref Sn_MR_MULTI : Support UDP Multicasting + * - \ref Sn_MR_MF : Support MACRAW + * - \ref Sn_MR_ND : No Delayed Ack(TCP) flag + * - \ref Sn_MR_MC : IGMP version used in UDP mulitcasting + * - Protocol + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Protocol[3] Protocol[2] Protocol[1] Protocol[0] @b Meaning
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 0 0 0 Closed
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 0 0 1 TCP
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 0 1 0 UDP
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 1 0 0 MACRAW
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - In case of Socket 0 + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Protocol[3] Protocol[2] Protocol[1] Protocol[0] @b Meaning
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 1 0 0 MACRAW
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 1 0 1 PPPoE
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref Sn_MR_MACRAW : MAC LAYER RAW SOCK \n + * - \ref Sn_MR_UDP : UDP + * - \ref Sn_MR_TCP : TCP + * - \ref Sn_MR_CLOSE : Unused socket + * @note MACRAW mode should be only used in Socket 0. + */ +#define Sn_MR(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0000)) // socket Mode register + +/** + * @ingroup Socket_register_group_W5100S + * @brief Socket command register(R/W) + * @details This is used to set the command for Socket n such as OPEN, CLOSE, CONNECT, LISTEN, SEND, and RECEIVE.\n + * After W5100S accepts the command, the \ref Sn_CR register is automatically cleared to 0x00. + * Even though \ref Sn_CR is cleared to 0x00, the command is still being processed.\n + * To check whether the command is completed or not, please check the \ref Sn_IR or \ref Sn_SR. + * - \ref Sn_CR_OPEN : Initialize or open socket. + * - \ref Sn_CR_LISTEN : Wait connection request in TCP mode(Server mode) + * - \ref Sn_CR_CONNECT : Send connection request in TCP mode(Client mode) + * - \ref Sn_CR_DISCON : Send closing request in TCP mode. + * - \ref Sn_CR_CLOSE : Close socket. + * - \ref Sn_CR_SEND : Update TX buffer pointer and send data. + * - \ref Sn_CR_SEND_MAC : Send data with MAC address, so without ARP process. + * - \ref Sn_CR_SEND_KEEP : Send keep alive message. + * - \ref Sn_CR_RECV : Update RX buffer pointer and receive data. + * - In case of S0_MR(P3:P0) = S0_MR_PPPoE + * + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Value Symbol Description
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0x23 PCON PPPoE connection begins by transmitting PPPoE discovery packet
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0x24 PDISCON Closes PPPoE connection
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0x25 PCR In each phase, it transmits REQ message.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0x26 PCN In each phase, it transmits NAK message.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0x27 PCJ In each phase, it transmits REJECT message.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + */ +#define Sn_CR(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0001)) // channel Sn_CR register + +/** + * @ingroup Socket_register_group_W5100S + * @brief Socket interrupt register(R) + * @details \ref Sn_IR indicates the status of Socket Interrupt such as establishment, termination, receiving data, timeout).\n + * When an interrupt occurs and the corresponding bit \ref IR_SOCK(N) in \ref _IMR_ are set, \ref IR_SOCK(N) in \ref IR becomes '1'.\n + * In order to clear the \ref Sn_IR bit, the host should write the bit to \n + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      PRECV PFAIL PNEXT SEND_OK TIMEOUT RECV DISCON CON
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref Sn_IR_PRECV : PPP Receive Interrupt + * - \ref Sn_IR_PFAIL : PPP Fail Interrupt + * - \ref Sn_IR_PNEXT : PPP Next Phase Interrupt + * - \ref Sn_IR_SENDOK : SEND_OK Interrupt + * - \ref Sn_IR_TIMEOUT : TIMEOUT Interrupt + * - \ref Sn_IR_RECV : RECV Interrupt + * - \ref Sn_IR_DISCON : DISCON Interrupt + * - \ref Sn_IR_CON : CON Interrupt + */ +#define Sn_IR(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0002)) // channel interrupt register + +/** + * @ingroup Socket_register_group_W5100S + * @brief Socket status register(R) + * @details \ref Sn_SR indicates the status of Socket n.\n + * The status of Socket n is changed by \ref Sn_CR or some special control packet as SYN, FIN packet in TCP. + * @par Normal status + * - \ref SOCK_CLOSED : Closed + * - \ref SOCK_INIT : Initiate state + * - \ref SOCK_LISTEN : Listen state + * - \ref SOCK_ESTABLISHED : Success to connect + * - \ref SOCK_CLOSE_WAIT : Closing state + * - \ref SOCK_UDP : UDP socket + * - \ref SOCK_MACRAW : MAC raw mode socket + *@par Temporary status during changing the status of Socket n. + * - \ref SOCK_SYNSENT : This indicates Socket n sent the connect-request packet (SYN packet) to a peer. + * - \ref SOCK_SYNRECV : It indicates Socket n successfully received the connect-request packet (SYN packet) from a peer. + * - \ref SOCK_FIN_WAIT : Connection state + * - \ref SOCK_CLOSING : Closing state + * - \ref SOCK_TIME_WAIT : Closing state + * - \ref SOCK_LAST_ACK : Closing state + */ +#define Sn_SR(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0003)) // channel status register + +/** + * @ingroup Socket_register_group_W5100S + * @brief source port register(R/W) + * @details \ref Sn_PORT configures the source port number of Socket n. + * It is valid when Socket n is used in TCP/UDP mode. It should be set before OPEN command is ordered. +*/ +#define Sn_PORT(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0004)) // source port register + +/** + * @ingroup Socket_register_group_W5100S + * @brief Peer MAC register address(R/W) + * @details \ref Sn_DHAR configures the destination hardware address of Socket n when using SEND_MAC command in UDP mode or + * it indicates that it is acquired in ARP-process by CONNECT/SEND command. + */ +#define Sn_DHAR(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0006)) // Peer MAC register address + +/** + * @ingroup Socket_register_group_W5100S + * @brief Peer IP register address(R/W) + * @details \ref Sn_DIPR configures or indicates the destination IP address of Socket n. It is valid when Socket n is used in TCP/UDP mode. + * In TCP client mode, it configures an IP address of TCP server before CONNECT command. + * In TCP server mode, it indicates an IP address of TCP client after successfully establishing connection. + * In UDP mode, it configures an IP address of peer to be received the UDP packet by SEND or SEND_MAC command. + */ +#define Sn_DIPR(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x000C)) // Peer IP register address + +/** + * @ingroup Socket_register_group_W5100S + * @brief Peer port register address(R/W) + * @details \ref Sn_DPORT configures or indicates the destination port number of Socket n. It is valid when Socket n is used in TCP/UDP mode. + * In TCP clientmode, it configures the listen port number of TCP server before CONNECT command. + * In TCP Servermode, it indicates the port number of TCP client after successfully establishing connection. + * In UDP mode, it configures the port number of peer to be transmitted the UDP packet by SEND/SEND_MAC command. + */ +#define Sn_DPORT(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0010)) // Peer port register address + +/** + * @ingroup Socket_register_group_W5100S + * @brief Maximum Segment Size(Sn_MSSR0) register address(R/W) + * @details \ref Sn_MSSR configures or indicates the MTU(Maximum Transfer Unit) of Socket n. + */ +#define Sn_MSSR(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0012)) // Maximum Segment Size(Sn_MSSR0) register address + +/** + * @ingroup Socket_register_group_W5100S + * @brief IP Protocol(PROTO) Register(R/W) + * @details \ref Sn_PROTO that sets the protocol number field of the IP header at the IP layer. It is + * valid only in IPRAW mode, and ignored in other modes. + */ +#define Sn_PROTO(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0014)) // Protocol of IP Header field register in IP raw mode + +/** + * @ingroup Socket_register_group_W5100S + * @brief IP Type of Service(TOS) Register(R/W) + * @details \ref Sn_TOS configures the TOS(Type Of Service field in IP Header) of Socket n. + * It is set before OPEN command. + */ +#define Sn_TOS(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + 0x0015) // IP Type of Service(TOS) Register + +/** + * @ingroup Socket_register_group_W5100S + * @brief IP Time to live(TTL) Register(R/W) + * @details \ref Sn_TTL configures the TTL(Time To Live field in IP header) of Socket n. + * It is set before OPEN command. + */ +#define Sn_TTL(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0016)) // IP Time to live(TTL) Register + +// Reserved (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0017)) +// Reserved (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0018)) +// Reserved (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0019)) +// Reserved (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x001A)) +// Reserved (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x001B)) +// Reserved (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x001C)) +// Reserved (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x001D)) + + + +/** + * @ingroup Socket_register_group_W5100S + * @brief Receive memory size register(R/W) + * @details @ref Sn_RXBUF_SIZE configures the RX buffer block size of Socket n. + * Socket n RX Buffer Block size can be configured with 1,2,4 and 8Kbytes. + * If a different size is configured, the data cannot be normally received from a peer. + * Although Socket n RX Buffer Block size is initially configured to 2Kbytes, + * user can re-configure its size using @ref Sn_RXBUF_SIZE. The total sum of @ref Sn_RXBUF_SIZE can not be exceed 8Kbytes. + * When exceeded, the data reception error is occurred. + */ +#define Sn_RXBUF_SIZE(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x001E)) + +/** + * @ingroup Socket_register_group_W5100S + * @brief Transmit memory size register(R/W) + * @details @ref Sn_TXBUF_SIZE configures the TX buffer block size of Socket n. Socket n TX Buffer Block size can be configured with 1,2,4 and 8Kbytes. + * If a different size is configured, the data cannot be normally transmitted to a peer. + * Although Socket n TX Buffer Block size is initially configured to 2Kbytes, + * user can be re-configure its size using @ref Sn_TXBUF_SIZE. The total sum of @ref Sn_TXBUF_SIZE can not be exceed 8Kbytes. + * When exceeded, the data transmission error is occurred. + */ +#define Sn_TXBUF_SIZE(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x001F)) + + +/** + * @ingroup Socket_register_group_W5100S + * @brief Transmit free memory size register(R) + * @details \ref Sn_TX_FSR indicates the free size of Socket n TX Buffer Block. It is initialized to the configured size by \ref Sn_TXMEM_SIZE. + * Data bigger than \ref Sn_TX_FSR should not be saved in the Socket n TX Buffer because the bigger data overwrites the previous saved data not yet sent. + * Therefore, check before saving the data to the Socket n TX Buffer, and if data is equal or smaller than its checked size, + * transmit the data with SEND/SEND_MAC command after saving the data in Socket n TX buffer. But, if data is bigger than its checked size, + * transmit the data after dividing into the checked size and saving in the Socket n TX buffer. + */ +#define Sn_TX_FSR(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0020)) // Transmit free memory size register + +/** + * @ingroup Socket_register_group_W5100S + * @brief Transmit memory read pointer register address(R) + * @details \ref Sn_TX_RD is initialized by OPEN command. However, if Sn_MR(P[3:0]) is TCP mode(001), it is re-initialized while connecting with TCP. + * After its initialization, it is auto-increased by SEND command. + * SEND command transmits the saved data from the current \ref Sn_TX_RD to the \ref Sn_TX_WR in the Socket n TX Buffer. + * After transmitting the saved data, the SEND command increases the \ref Sn_TX_RD as same as the \ref Sn_TX_WR. + * If its increment value exceeds the maximum value 0xFFFF, (greater than 0x10000 and the carry bit occurs), + * then the carry bit is ignored and will automatically update with the lower 16bits value. + */ +#define Sn_TX_RD(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0022)) // Transmit memory read pointer register address + +/** + * @ingroup Socket_register_group_W5100S + * @brief Transmit memory write pointer register address(R/W) + * @details \ref Sn_TX_WR is initialized by OPEN command. However, if Sn_MR(P[3:0]) is TCP mode(001), it is re-initialized while connecting with TCP.\n + * It should be read or be updated like as follows.\n + * 1. Read the starting address for saving the transmitting data.\n + * 2. Save the transmitting data from the starting address of Socket n TX buffer.\n + * 3. After saving the transmitting data, update \ref Sn_TX_WR to the increased value as many as transmitting data size. + * If the increment value exceeds the maximum value 0xFFFF(greater than 0x10000 and the carry bit occurs), + * then the carry bit is ignored and will automatically update with the lower 16bits value.\n + * 4. Transmit the saved data in Socket n TX Buffer by using SEND/SEND command + */ +#define Sn_TX_WR(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0024)) // Transmit memory write pointer register address + +/** + * @ingroup Socket_register_group_W5100S + * @brief Received data size register(R) + * @details \ref Sn_RX_RSR indicates the data size received and saved in Socket n RX Buffer. + * \ref Sn_RX_RSR does not exceed the \ref Sn_RXMEM_SIZE and is calculated as the difference between + * Socket n RX Write Pointer (\ref Sn_RX_WR)and Socket n RX Read Pointer (\ref Sn_RX_RD) + */ +#define Sn_RX_RSR(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0026)) // Received data size register + +/** + * @ingroup Socket_register_group_W5100S + * @brief Read point of Receive memory(R/W) + * @details \ref Sn_RX_RD is initialized by OPEN command. Make sure to be read or updated as follows.\n + * 1. Read the starting save address of the received data.\n + * 2. Read data from the starting address of Socket n RX Buffer.\n + * 3. After reading the received data, Update \ref Sn_RX_RD to the increased value as many as the reading size. + * If the increment value exceeds the maximum value 0xFFFF, that is, is greater than 0x10000 and the carry bit occurs, + * update with the lower 16bits value ignored the carry bit.\n + * 4. Order RECV command is for notifying the updated \ref Sn_RX_RD to W5100S. + */ +#define Sn_RX_RD(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0028)) // Read point of Receive memory + +/** + * @ingroup Socket_register_group_W5100S + * @brief Write point of Receive memory(R) + * @details \ref Sn_RX_WR is initialized by OPEN command and it is auto-increased by the data reception. + * If the increased value exceeds the maximum value 0xFFFF, (greater than 0x10000 and the carry bit occurs), + * then the carry bit is ignored and will automatically update with the lower 16bits value. + */ +#define Sn_RX_WR(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x002A)) // Write point of Receive memory + + +//todo +/** + * @ingroup Socket_register_group_W5100S + * @brief Socket interrupt mask register + * @details Register address to configure the interrupt mask of the socket + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ expect bit 4. + * + */ +#define Sn_IMR(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x002C)) + +/** + * @ingroup Socket_register_group_W5100S + * @brief Socket fragment field register + * @details Register to configure the Fragment field of IP Header + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ expect bit 4. + */ +#define Sn_FRAGR(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x002D)) // and +1 + +/** + * @ingroup Socket_register_group_W5100S + * @brief Socket Mode register 2 + * @details Register to set mode 2 + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ expect bit 4. + */ +#define Sn_MR2(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x002F)) + +/** + * @ingroup Socket_register_group_W5100S + * @brief Socket n Keep Alive Timer Register + * @details Register to set the transmission period of keep alive packet. + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ expect bit 4. + */ +#define Sn_KPALVTR(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0030)) + +/** todo delete + * @ingroup Socket_register_group_W5100S + * @brief Socket n Timer Status Register + * @details + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ expect bit 4. + */ +//#define Sn_TSR(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0031)) + +/** + * @ingroup Socket_register_group_W5100S + * @brief Socket n Retry Time-value Register + * @details Register to set the retry time value + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ expect bit 4. + */ +#define Sn_RTR(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0032)) + +/** + * @ingroup Socket_register_group_W5100S + * @brief Socket n Retry Count-value Register + * @details Register to set the retry count value + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ expect bit 4. + */ +#define Sn_RCR(sn) (_W5100S_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0034)) + + +/*----------------------------- W5100S Register values -----------------------------*/ + +/* MODE register values */ +/** + * @brief Reset + * @details If this bit is All internal registers will be initialized. It will be automatically cleared as after S/W reset. + */ +#define MR_RST 0x80 ///< reset + + +/** + * @brief Ping block + * @details 0 : Disable Ping block\n + * 1 : Enable Ping block\n + * If the bit is it blocks the response to a ping request. + */ +#define MR_PB 0x10 ///< ping block + +/** + * @brief Enable PPPoE + * @details 0 : DisablePPPoE mode\n + * 1 : EnablePPPoE mode\n + * If you use ADSL, this bit should be '1'. + */ +#define MR_PPPOE 0x08 ///< enable pppoe + +/** + * @brief Address Auto-Increment in Indirect Bus Interface + * @details 0 : Disable auto-increment \n + * 1 : Enable auto-incremente \n + * At the Indirect Bus Interface mode, if this bit is set as the address will + * be automatically increased by 1 whenever read and write are performed. + */ +#define MR_AI 0x02 ///< auto-increment in indirect mode + +/** + * @brief Indirect Bus Interface mode + * @details 0 : Disable Indirect bus Interface mode \n + * 1 : Enable Indirect bus Interface mode \n + * If this bit is set as Indirect Bus Interface mode is set. + */ +#define MR_IND 0x01 ///< enable indirect mode + +/* IR register values */ +/** + * @brief Check IP conflict. + * @details Bit is set as when own source IP address is same with the sender IP address in the received ARP request. + */ +#define IR_CONFLICT 0x80 ///< check ip confict + +/** + * @brief Get the destination unreachable message in UDP sending. + * @details When receiving the ICMP (Destination port unreachable) packet, this bit is set as + * When this bit is Destination Information such as IP address and Port number may be checked with the corresponding @ref UIPR & @ref UPORTR. + */ +#define IR_UNREACH 0x40 ///< check destination unreachable + +/** + * @brief Get the PPPoE close message. + * @details When PPPoE is disconnected during PPPoE mode, this bit is set. + */ +#define IR_PPPoE 0x20 ///< get the PPPoE close message + +/** + * @brief Socket interrupt bit + * @details Indicates whether each socket interrupt has occured. + */ +#define IR_SOCK(sn) (0x01 << sn) ///< check socket interrupt + +/** + * @brief IP conflict interrupt mask bit + * @details If this bit is set, IP conflict interrupt is enabled. + */ +#define IMR_CONFLICT 0x80 + +/** + * @brief Destination port unreachable interrupt mask bit + * @details If this bit is set, destination port unreachable interrupt is enabled. + */ +#define IMR_UNREACH 0x40 + +/** + * @brief PADT/LCPT interrupt mask bit(PPPoE) + * @details If this bit is set, PADT/LCPT interrupt is enabled. + */ +#define IMR_PPPoE 0x20 + +/** + * @brief Socket interrupt mask bit + * @details If this bit is set, each socket interrupt is enabled. + */ +#define IMR_SOCK(sn) (0x01 << sn) + +/** + * @brief Socket-less command register bit + * @details ARP command + */ +#define SLCMD_ARP (1<<1) + +/** + * @brief Socket-less command register bit + * @details ARP command + */ +#define SLCMD_PING (1<<0) + +/** + * @brief Socket-less command interrupt and interrupt mask register bit + * @details Request command time out interrupt and interrupt mask + */ +#define SLIR_TIMEOUT (1<<2) + +/** +* @brief Socket less command interrupt and interrupt mask register bit +* @details Socket less command ARP interrupt and interrupt mask +*/ +#define SLIR_ARP (1<<1) + +/** +* @brief Socket less command interrupt and interrupt mask register bit +* @details Socket less command PING interrupt and interruptmask +*/ +#define SLIR_PING (1<<0) + + + +// Sn_MR values +/* Sn_MR Default values */ +/** + * @brief Unused socket + * @details This configures the protocol mode of Socket n. + */ +#define Sn_MR_CLOSE 0x00 ///< unused socket + +/** + * @brief TCP + * @details This configures the protocol mode of Socket n. + */ +#define Sn_MR_TCP 0x01 ///< TCP + +/** + * @brief UDP + * @details This configures the protocol mode of Socket n. + */ +#define Sn_MR_UDP 0x02 ///< UDP +#define Sn_MR_IPRAW 0x03 ///< IP LAYER RAW SOCK + +/** + * @brief MAC LAYER RAW SOCK + * @details This configures the protocol mode of Socket n. + * @note MACRAW mode should be only used in Socket 0. + */ +#define Sn_MR_MACRAW 0x04 ///< MAC LAYER RAW SOCK + +/** + * @brief PPPoE + * @details This configures the protocol mode of Socket n. + * @note PPPoE mode should be only used in Socket 0. + */ +#define Sn_MR_PPPoE 0x05 ///< PPPoE + +/** + * @brief No Delayed Ack(TCP), Multicast flag + * @details 0 : Disable No Delayed ACK option\n + * 1 : Enable No Delayed ACK option\n + * This bit is applied only during TCP mode (P[3:0] = 001).\n + * When this bit is It sends the ACK packet without delay as soon as a Data packet is received from a peer.\n + * When this bit is It sends the ACK packet after waiting for the timeout time configured by \ref _RTR_. + */ +#define Sn_MR_ND 0x20 ///< No Delayed Ack(TCP) flag + +/** + * @brief Support UDP Multicasting + * @details 0 : using IGMP version 2\n + * 1 : using IGMP version 1\n + * This bit is applied only during UDP mode(P[3:0] = 010 and MULTI = '1') + * It configures the version for IGMP messages (Join/Leave/Report). + */ +#define Sn_MR_MC Sn_MR_ND ///< Select IGMP version 1(0) or 2(1) + +/** + * @brief MAC filter enable in @ref Sn_MR_MACRAW mode + * @details 0 : disable MAC Filtering\n + * 1 : enable MAC Filtering\n + * This bit is applied only during MACRAW mode(P[3:0] = 100.\n + * When set as W5100S can only receive broadcasting packet or packet sent to itself. + * When this bit is W5100S can receive all packets on Ethernet. + * If user wants to implement Hybrid TCP/IP stack, + * it is recommended that this bit is set as for reducing host overhead to process the all received packets. + */ +#define Sn_MR_MF 0x40 ///< Use MAC filter +#define Sn_MR_MFEN Sn_MR_MF + + +/* Sn_MR Default values */ +/** + * @brief Support UDP Multicasting + * @details 0 : disable Multicasting\n + * 1 : enable Multicasting\n + * This bit is applied only during UDP mode(P[3:0] = 010).\n + * To use multicasting, \ref Sn_DIPR & \ref Sn_DPORT should be respectively configured with the multicast group IP address & port number + * before Socket n is opened by OPEN command of \ref Sn_CR. + */ +#define Sn_MR_MULTI 0x80 ///< support multicating + +/* Sn_CR values */ +/** + * @brief Initialize or open socket + * @details Socket n is initialized and opened according to the protocol selected in Sn_MR(P3:P0). + * The table below shows the value of \ref Sn_SR corresponding to \ref Sn_MR.\n + * + * + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \b Sn_MR (P[3:0]) \b Sn_SR
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_CLOSE (000) --
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_TCP (001) SOCK_INIT (0x13)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_UDP (010) SOCK_UDP (0x22)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      S0_MR_IPRAW (011) SOCK_IPRAW (0x32)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      S0_MR_MACRAW (100) SOCK_MACRAW (0x42)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      S0_MR_PPPoE (101) SOCK_PPPoE (0x5F)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + */ +#define Sn_CR_OPEN 0x01 ///< initialize or open socket + +/** + * @brief Wait connection request in TCP mode(Server mode) + * @details This is valid only in TCP mode (Sn_MR(P3:P0) = \ref Sn_MR_TCP).// + * In this mode, Socket n operates as a 'TCP server' and waits for connection-request (SYN packet) from any 'TCP client'.// + * The \ref Sn_SR changes the state from SOCK_INIT to SOCKET_LISTEN.// + * When a 'TCP client' connection request is successfully established, + * the \ref Sn_SR changes from SOCK_LISTEN to SOCK_ESTABLISHED and the Sn_IR(0) becomes + * But when a 'TCP client' connection request is failed, Sn_IR(3) becomes and the status of \ref Sn_SR changes to SOCK_CLOSED. + */ +#define Sn_CR_LISTEN 0x02 ///< wait connection request in tcp mode(Server mode) + +/** + * @brief Send connection request in TCP mode(Client mode) + * @details To connect, a connect-request (SYN packet) is sent to TCP serverconfigured by \ref Sn_DIPR & Sn_DPORT(destination address & port). + * If the connect-request is successful, the \ref Sn_SR is changed to \ref SOCK_ESTABLISHED and the Sn_IR(0) becomes \n\n + * The connect-request fails in the following three cases.\n + * 1. When a @b ARPTO occurs (\ref Sn_IR[3] = '1') because destination hardware address is not acquired through the ARP-process.\n + * 2. When a @b SYN/ACK packet is not received and @b TCPTO (Sn_IR(3) ='1')\n + * 3. When a @b RST packet is received instead of a @b SYN/ACK packet. In these cases, \ref Sn_SR is changed to \ref SOCK_CLOSED. + * @note This is valid only in TCP mode and operates when Socket n acts as TCP client + */ +#define Sn_CR_CONNECT 0x04 ///< send connection request in tcp mode(Client mode) + +/** + * @brief Send closing request in TCP mode + * @details Regardless of TCP serveror TCP client the DISCON command processes the disconnect-process (Active closeor Passive close.\n + * @par Active close + * it transmits disconnect-request(FIN packet) to the connected peer\n + * @par Passive close + * When FIN packet is received from peer, a FIN packet is replied back to the peer.\n + * @details When the disconnect-process is successful (that is, FIN/ACK packet is received successfully), \ref Sn_SR is changed to \ref SOCK_CLOSED.\n + * Otherwise, TCPTO occurs (Sn_IR(3)='1') and then \ref Sn_SR is changed to \ref SOCK_CLOSED. + * @note Valid only in TCP mode. + */ +#define Sn_CR_DISCON 0x08 ///< send closing reqeuset in tcp mode + +/** + * @brief Close socket + * @details Sn_SR is changed to \ref SOCK_CLOSED. + */ +#define Sn_CR_CLOSE 0x10 + +/** + * @brief Update TX buffer pointer and send data + * @details SEND transmits all the data in the Socket n TX buffer.\n + * For more details, please refer to Socket n TX Free Size Register (\ref Sn_TX_FSR), Socket n, + * TX Write Pointer Register(\ref Sn_TX_WR), and Socket n TX Read Pointer Register(\ref Sn_TX_RD). + */ +#define Sn_CR_SEND 0x20 + +/** + * @brief Send data with MAC address, so without ARP process + * @details The basic operation is same as SEND.\n + * Normally SEND transmits data after destination hardware address is acquired by the automatic ARP-process(Address Resolution Protocol).\n + * But SEND_MAC transmits data without the automatic ARP-process.\n + * In this case, the destination hardware address is acquired from \ref Sn_DHAR configured by host, instead of APR-process. + * @note Valid only in UDP mode. + */ +#define Sn_CR_SEND_MAC 0x21 + +/** + * @brief Send keep alive message + * @details It checks the connection status by sending 1byte keep-alive packet.\n + * If the peer can not respond to the keep-alive packet during timeout time, the connection is terminated and the timeout interrupt will occur. + * @note Valid only in TCP mode. + */ +#define Sn_CR_SEND_KEEP 0x22 + +/** + * @brief Update RX buffer pointer and receive data + * @details RECV completes the processing of the received data in Socket n RX Buffer by using a RX read pointer register (\ref Sn_RX_RD).\n + * For more details, refer to Socket n RX Received Size Register (\ref Sn_RX_RSR), Socket n RX Write Pointer Register (\ref Sn_RX_WR), + * and Socket n RX Read Pointer Register (\ref Sn_RX_RD). + */ +#define Sn_CR_RECV 0x40 + +/** + * @brief + * @details + */ +#define Sn_CR_IGMP_JOIN 0x23 + +/** + * @brief + * @details + */ +#define Sn_CR_IGMP_LEAVE 0x24 + + +/* Sn_IR values */ + +/** + * @brief SEND_OK Interrupt + * @details This is issued when SEND command is completed. + */ +#define Sn_IR_SENDOK 0x10 ///< complete sending + +/** + * @brief TIMEOUT Interrupt + * @details This is issued when ARPTO or TCPTO occurs. + */ +#define Sn_IR_TIMEOUT 0x08 ///< assert timeout + +/** + * @brief RECV Interrupt + * @details This is issued whenever data is received from a peer. + */ +#define Sn_IR_RECV 0x04 + +/** + * @brief DISCON Interrupt + * @details This is issued when FIN or FIN/ACK packet is received from a peer. + */ +#define Sn_IR_DISCON 0x02 + +/** + * @brief CON Interrupt + * @details This is issued one time when the connection with peer is successful and then \ref Sn_SR is changed to \ref SOCK_ESTABLISHED. + */ +#define Sn_IR_CON 0x01 + +/* Sn_SR values */ +/** + * @brief Closed + * @details This indicates that Socket n is released.\n + * When DICON, CLOSE command is ordered, or when a timeout occurs, it is changed to \ref SOCK_CLOSED regardless of previous status. + */ +#define SOCK_CLOSED 0x00 ///< closed + +/** + * @brief Initiate state + * @details This indicates Socket n is opened with TCP mode.\n + * It is changed to \ref SOCK_INIT when Sn_MR(P[3:0]) = 001)and OPEN command is ordered.\n + * After \ref SOCK_INIT, user can use LISTEN /CONNECT command. + */ +#define SOCK_INIT 0x13 ///< init state + +/** + * @brief Listen state + * @details This indicates Socket n is operating as TCP servermode and waiting for connection-request (SYN packet) from a peer (TCP client).\n + * It will change to \ref SOCK_ESTABLISHED when the connection-request is successfully accepted.\n + * Otherwise it will change to \ref SOCK_CLOSED after TCPTO occurred (Sn_IR(TIMEOUT) = '1'). + */ +#define SOCK_LISTEN 0x14 + +/** + * @brief Connection state + * @details This indicates Socket n sent the connect-request packet (SYN packet) to a peer.\n + * It is temporarily shown when \ref Sn_SR is changed from \ref SOCK_INIT to \ref SOCK_ESTABLISHED by CONNECT command.\n + * If connect-accept(SYN/ACK packet) is received from the peer at SOCK_SYNSENT, it changes to \ref SOCK_ESTABLISHED.\n + * Otherwise, it changes to \ref SOCK_CLOSED after TCPTO (\ref Sn_IR[TIMEOUT] = '1') is occurred. + */ +#define SOCK_SYNSENT 0x15 + +/** + * @brief Connection state + * @details It indicates Socket n successfully received the connect-request packet (SYN packet) from a peer.\n + * If socket n sends the response (SYN/ACK packet) to the peer successfully, it changes to \ref SOCK_ESTABLISHED. \n + * If not, it changes to \ref SOCK_CLOSED after timeout occurs (\ref Sn_IR[TIMEOUT] = '1'). + */ +#define SOCK_SYNRECV 0x16 + +/** + * @brief Success to connect + * @details This indicates the status of the connection of Socket n.\n + * It changes to \ref SOCK_ESTABLISHED when the TCP SERVERprocessed the SYN packet from the TCP CLIENTduring \ref SOCK_LISTEN, or + * when the CONNECT command is successful.\n + * During \ref SOCK_ESTABLISHED, DATA packet can be transferred using SEND or RECV command. + */ +#define SOCK_ESTABLISHED 0x17 + +/** + * @brief Closing state + * @details These indicate Socket n is closing.\n + * These are shown in disconnect-process such as active-close and passive-close.\n + * When Disconnect-process is successfully completed, or when timeout occurs, these change to \ref SOCK_CLOSED. + */ +#define SOCK_FIN_WAIT 0x18 + +/** + * @brief Closing state + * @details These indicate Socket n is closing.\n + * These are shown in disconnect-process such as active-close and passive-close.\n + * When Disconnect-process is successfully completed, or when timeout occurs, these change to \ref SOCK_CLOSED. + */ +#define SOCK_CLOSING 0x1A + +/** + * @brief Closing state + * @details These indicate Socket n is closing.\n + * These are shown in disconnect-process such as active-close and passive-close.\n + * When Disconnect-process is successfully completed, or when timeout occurs, these change to \ref SOCK_CLOSED. + */ +#define SOCK_TIME_WAIT 0x1B + +/** + * @brief Closing state + * @details This indicates Socket n received the disconnect-request (FIN packet) from the connected peer.\n + * This is half-closing status, and data can be transferred.\n + * For full-closing, DISCON command is used. But For just-closing, @ref Sn_CR_CLOSE command is used. + */ +#define SOCK_CLOSE_WAIT 0x1C + +/** + * @brief Closing state + * @details This indicates Socket n is waiting for the response (FIN/ACK packet) to the disconnect-request (FIN packet) by passive-close.\n + * It changes to \ref SOCK_CLOSED when Socket n received the response successfully, or when timeout occurs (\ref Sn_IR[TIMEOUT] = '1'). + */ +#define SOCK_LAST_ACK 0x1D + +/** + * @brief UDP socket + * @details This indicates Socket n is opened in UDP mode(Sn_MR(P[3:0]) = 010).\n + * It changes to SOCK_UDP when Sn_MR(P[3:0]) = 010 and @ref Sn_CR_OPEN command is ordered.\n + * Unlike TCP mode, data can be transfered without the connection-process. + */ +#define SOCK_UDP 0x22 ///< udp socket + +/** + * @brief IP raw mode socket + * @details TThe socket is opened in IPRAW mode. The SOCKET status is change to SOCK_IPRAW when @ref Sn_MR (P3:P0) is + * Sn_MR_IPRAW and @ref Sn_CR_OPEN command is used.\n + * IP Packet can be transferred without a connection similar to the UDP mode. +*/ +#define SOCK_IPRAW 0x32 ///< ip raw mode socket + +/** + * @brief MAC raw mode socket + * @details This indicates Socket 0 is opened in MACRAW mode (@ref Sn_MR(P[3:0]) = '100' and n=0) and is valid only in Socket 0.\n + * It changes to SOCK_MACRAW when @ref Sn_MR(P[3:0]) = '100' and @ref Sn_CR_OPEN command is ordered.\n + * Like UDP mode socket, MACRAW mode Socket 0 can transfer a MAC packet (Ethernet frame) without the connection-process. + */ +#define SOCK_MACRAW 0x42 ///< mac raw mode socket + +/** + * @brief PPPoE mode socket + * @details It is the status that SOCKET0 is open as PPPoE mode. It is changed to SOCK_PPPoE in case of S0_CR=OPEN and S0_MR + * (P3:P0)=S0_MR_PPPoE.\n + * It is temporarily used at the PPPoE +connection. + */ +#define SOCK_PPPOE 0x5F ///< pppoe socket + +// IP PROTOCOL +#define IPPROTO_IP 0 ///< Dummy for IP +#define IPPROTO_ICMP 1 ///< Control message protocol +#define IPPROTO_IGMP 2 ///< Internet group management protocol +#define IPPROTO_GGP 3 ///< GW^2 (deprecated) +#define IPPROTO_TCP 6 ///< TCP +#define IPPROTO_PUP 12 ///< PUP +#define IPPROTO_UDP 17 ///< UDP +#define IPPROTO_IDP 22 ///< XNS idp +#define IPPROTO_ND 77 ///< UNOFFICIAL net disk protocol +#define IPPROTO_RAW 255 ///< Raw IP packet + + + +/*----------------------------- W5100S !!Only!! Register values -----------------------------*/ + +//todo +/* MODE2 register values */ + +/** + * @brief Clock select bit + * @details With this bit, system clock can be selected to be 25Mhz or 100Mhz + * 1: 25Mhz + * 0: 100Mhz (default) + */ +#define MR2_CLKSEL (1<<7) + +/** + * @brief Interrupt pin enable bit + * @details This bit enables interrupt. + * 1: Enable interrupt + * 0: Disable interrupt + */ +#define MR2_G_IEN (1<<6) + + +/** + * @brief No TCP Reset Packet send + * @details This bit prevents sending reset packet. + * 1: Block TCP reset packet send + * 0: TCP Reset packet send + */ +#define MR2_NOTCPRST (1<<5) + +/** + * @brief Unreachable Packet Send Block bit + * @details This bit prevents sending Destination Port Unreachable Packet. + * 1: Block Destination Port Unreachable Packet Send + * 0: Destination Port Unreachable Packet Send + */ +#define MR2_UDPURB (1<<4) + +/** + * @brief Wake On LAN + * @details This bit enables WOL packet to be received. + * 1: WOL packet can be received. + * 0: WOL packet cannot be received. + */ +#define MR2_WOL (1<<3) + +/**todo + * @brief MACRAW No Size Check + * @details + */ +#define MR2_MNOSCHK (1<<2) + +/** + * @brief UDP force ARP + * @details This bit can enables to force ARP for each send command. + * 1: UDP Force ARP Enable + * 0: UDP Force ARP Disable. + * + */ +#define MR2_UDPFARP (1<<1) + +/**todo + * @brief Skip SRC Hardware Address + * @details This bit can enables to receive without checking the hardware address of the peer. + * 1: + */ +#define MR2_SSRCHA (1<<0) + + + +/* Common interrupt register 2 values */ + +/**todo + * @brief magic packet + * @details + */ +#define IR2_MGC (1<<1) + +/**todo + * @brief Magic packet interrupt mask bit + * @details If this bit is set, each socket interrupt is enabled. + */ +#define IMR2_MGC (1<<1) + +/**todo + * @brief + * @details + */ +//#define IR2_MGD (1<<1) /* Reserved */ + + +/* PHY status register 0 values */ + +/**todo + * @brief Ethernet CABLE OFF Signal + * @details + */ +#define PHYSR_CABOFF (1<<7) + +/**todo + * @brief + * @details + */ +#define PHYSR_MD2 (1<<5) + +/**todo + * @brief + * @details + */ +#define PHYSR_MD1 (1<<4) + +/**todo + * @brief + * @details + */ +#define PHYSR_MD0 (1<<3) + +/**todo + * @brief + * @details + */ +#define PHYSR_DUP (1<<2) + +/**todo + * @brief + * @details + */ +#define PHYSR_SPD (1<<1) + +/**todo + * @brief LINKDONE register + * @details If 1 Linked successfully, if 0 no link + */ +#define PHYSR_LNK (1<<0) + + +/* PHY status register 10 values */ + +/** + * @brieftodo + * @details + */ +#define PHYSR1_RXPG (1<<2) + +/** + * @brieftodo + * @details + */ +#define PHYSR1_LPI (1<<1) + +/** + * @brieftodo + * @details + */ +#define PHYSR1_CLDN (1<<0) + +#define PHYCR_AUTONEGO_ENABLE (0<<2) +#define PHYCR_AUTONEGO_DISABLE (1<<2) + +#define PHYCR_SPD_10 (1<<1) +#define PHYCR_SPD_100 (0<<1) + +#define PHYCR_HALF_DUP (1<<0) +#define PHYCR_FULL_DUP (0<<0) + +#define PHYCR1_RST (0<<0) + +#define PHYCR1_PWDN_ENABLE (1<<5) +#define PHYCR1_PWDN_DISABLE (0<<5) + + +/* Socket n MODE register 2 values */ + +/** + * @brief Broadcast Blocking bit in MACRAW mode + * @details In MACRAW mode, this bit is set to ????to block the broadcast packet. + */ +#define Sn_MR2_MBBLK (1<<6) + +/** + * @brief Multicast Blocking bit in MACRAW mode + * @details In MACRAW mode, this bit is set to ????to block the multicast packet. + */ +#define Sn_MR2_MMBLK (1<<5) + +/** + * @brief IPv6 packet Blocking bit in MACRAW mode + * @details In MACRAW mode, this bit is set to ????to block the IPv6 packet. + */ +#define Sn_MR2_IPV6BLK (1<<4) + + +/** + * @brief Broadcast Blocking bit in UDP mode + * @details In UDP mode, this bit is set to ????to block the broadcast packet. + */ +#define Sn_MR2_UBBLK (1<<1) + + +/** + * @brief TCP Force PSH bit + * @details When the SOCKET transmits data in TCP mode, PSH Flag is set to all packets. + */ +#define Sn_MR2_FPSH Sn_MR2_UBBLK + +/** + * @brief Unicast Blocking bit in UDP mode + * @details In UDP mode, this bit is set to ????to block the Unicast packet. + */ +#define Sn_MR2_UUBLK (1<<0) + +/*----------------------------For PHY Control-------------------------------*/ + +/********************/ +/* Register Address */ +/********************/ + +//Basic mode control register, basic register +#define PHYMDIO_BMCR 0x00 + +//Basic mode status register, basic register +#define PHYMDIO_BMSR 0x01 + +//--------------------------------------Not used-------------------------------------------// +////PHY identifier register 1, extended register +//#define PHY_IDR1 0x02 //not used +// +////PHY identifier register 2, extended register +//#define PHY_IDR2 0x03 //not used +// +////Auto-negotiation advertisement register, extended register +//#define PHY_ANAR 0x04 //not used +// +////Auto-negotiation link partner ability register, extended register +//#define PHY_ANLPAR 0x05 //not used +// +////Auto-negotiation expansion register, extended register +//#define PHY_ANER 0x06 //not used +// +////Auto-negotiation next page transmit +//#define PHY_ANNP 0x07 //not used +// +////Auto-negotiation link partner of the next page receive +//#define PHY_ANLPNP 0x08 //not used +// +////MMD access control register +//#define PHY_REGCR 0x09 //not used +// +////MMD access address data register +//#define PHY_ADDAR 0x0e //not used +//--------------------------------------Not used-------------------------------------------// + +/********************/ +/* Bit definitions */ +/********************/ + +//For BMCR register +#define BMCR_RESET (1<<15) +#define BMCR_MLOOPBACK (1<<14) +#define BMCR_SPEED (1<<13) +#define BMCR_AUTONEGO (1<<12) +#define BMCR_PWDN (1<<11) +#define BMCR_ISOLATE (1<<10) +#define BMCR_RSTNEGO (1<<9) +#define BMCR_DUP (1<<8) +#define BMCR_COLTEST (1<<7) + +//For BMSR register +#define BMSR_AUTONEGO_COMPL (1<<5) +#define BMSR_REMOTE_FAULT (1<<4) +#define BMSR_LINK_STATUS (1<<2) +#define BMSR_JAB_DETECT (1<<1) +#define EXTENDED_CAPA (1<<0) + +//--------------------------------------Not used-------------------------------------------// +////For ANAR register +//#define ANAR_NP (1<<15) +//#define ANAR_ACK (1<<14) +//#define ANAR_RF (1<<13) +//#define ANAR_ASM (3<<10) +//#define ANAR_T4 (1<<9) +//#define ANAR_TX_FD (1<<8) +//#define ANAR_TX_HD (1<<7) +//#define ANAR_10_FD (1<<6) +//#define ANAR_10_HD (1<<5) +//#define ANAR_SELECTOR (0x1F<<0) +// +////For ANAR register +//#define ANLPAR_NP (1<<15) +//#define ANLPAR_ACK (1<<14) +//#define ANLPAR_RF (1<<13) +//#define ANLPAR_LP_DIR (1<<11) +//#define ANLPAR_PAUSE (1<<10) +//#define ANLPAR_T4 (1<<9) +//#define ANLPAR_TX_FD (1<<8) +//#define ANLPAR_TX_HD (1<<7) +//#define ANLPAR_10_FD (1<<6) +//#define ANLPAR_10_HD (1<<5) +//#define ANLPAR_SELECTOR (0x1F<<0) + +/**/ +/* MDIO register*/ +//PCS_CTL_1 | PCS control 1 register +//PCS_STS_1 | PCS status 1 register +//EEE_ABILITY | EEE capability register +//WAKE_ER_CNTR | EEE wake error counter +//EEE_ADVR | EEE Advertisement register +//EEE_LPAR | EEE link partner ability register + +//--------------------------------------Not used-------------------------------------------// + +/********************/ +/*Functions for PHY */ +/********************/ +//todo move this definition to bit area +#define PHYACR_READ 0x02 +#define PHYACR_WRITE 0x01 + + + + +/** + * @brief Enter a critical section + * + * @details It is provided to protect your shared code which are executed without distribution. \n \n + * + * In non-OS environment, It can be just implemented by disabling whole interrupt.\n + * In OS environment, You can replace it to critical section api supported by OS. + * + * \sa WIZCHIP_READ(), WIZCHIP_WRITE(), WIZCHIP_READ_BUF(), WIZCHIP_WRITE_BUF() + * \sa WIZCHIP_CRITICAL_EXIT() + */ +#define WIZCHIP_CRITICAL_ENTER() WIZCHIP.CRIS._enter() + +#ifdef _exit +#undef _exit +#endif + +/** + * @brief Exit a critical section + * + * @details It is provided to protect your shared code which are executed without distribution. \n\n + * + * In non-OS environment, It can be just implemented by disabling whole interrupt. \n + * In OS environment, You can replace it to critical section api supported by OS. + * + * @sa WIZCHIP_READ(), WIZCHIP_WRITE(), WIZCHIP_READ_BUF(), WIZCHIP_WRITE_BUF() + * @sa WIZCHIP_CRITICAL_ENTER() + */ +#define WIZCHIP_CRITICAL_EXIT() WIZCHIP.CRIS._exit() + + + +//////////////////////// +// Basic I/O Function // +//////////////////////// +// +//M20150601 : uint16_t AddrSel --> uint32_t AddrSel +// +/** + * @ingroup Basic_IO_function_W5100S + * @brief It reads 1 byte value from a register. + * @param AddrSel Register address + * @return The value of register + */ +uint8_t WIZCHIP_READ (uint32_t AddrSel); + +/** + * @ingroup Basic_IO_function_W5100S + * @brief It writes 1 byte value to a register. + * @param AddrSel Register address + * @param wb Write data + * @return void + */ +void WIZCHIP_WRITE(uint32_t AddrSel, uint8_t wb ); + +/** + * @ingroup Basic_IO_function_W5100S + * @brief It reads sequence data from registers. + * @param AddrSel Register address + * @param pBuf Pointer buffer to read data + * @param len Data length + */ +void WIZCHIP_READ_BUF (uint32_t AddrSel, uint8_t* pBuf, uint16_t len); + +/** + * @ingroup Basic_IO_function_W5100S + * @brief It writes sequence data to registers. + * @param AddrSel Register address + * @param pBuf Pointer buffer to write data + * @param len Data length + */ +void WIZCHIP_WRITE_BUF(uint32_t AddrSel, uint8_t* pBuf, uint16_t len); + + +///////////////////////////////// +// Common Register IO function // +///////////////////////////////// + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set Mode Register + * @param (uint8_t)mr The value to be set. + * @sa getMR() + */ +#if (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_) + #define setMR(mr) WIZCHIP_WRITE(MR,mr) +#else + #define setMR(mr) (*((uint8_t*)MR) = mr) +#endif + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get @ref MR. + * @return uint8_t. The value of Mode register. + * @sa setMR() + */ +#if (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_) + #define getMR() WIZCHIP_READ(MR) +#else + #define getMR() (*(uint8_t*)MR) +#endif + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set @ref GAR. + * @param (uint8_t*)gar Pointer variable to set gateway IP address. It should be allocated 4 bytes. + * @sa getGAR() + */ +#define setGAR(gar) \ + WIZCHIP_WRITE_BUF(GAR,gar,4) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get @ref GAR. + * @param (uint8_t*)gar Pointer variable to get gateway IP address. It should be allocated 4 bytes. + * @sa setGAR() + */ +#define getGAR(gar) \ + WIZCHIP_READ_BUF(GAR,gar,4) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set @ref SUBR. + * @param (uint8_t*)subr Pointer variable to set subnet mask address. It should be allocated 4 bytes. + * @note If subr is null pointer, set the backup subnet to SUBR. \n + * If subr is 0.0.0.0, back up SUBR and clear it. \n + * Otherwize, set subr to SUBR + * @sa getSUBR() + */ +#define setSUBR(subr) \ + WIZCHIP_WRITE_BUF(SUBR,subr,4) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get @ref SUBR. + * @param (uint8_t*)subr Pointer variable to get subnet mask address. It should be allocated 4 bytes. + * @sa setSUBR() + */ +#define getSUBR(subr) \ + WIZCHIP_READ_BUF(SUBR, subr, 4) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set @ref SHAR. + * @param (uint8_t*)shar Pointer variable to set local MAC address. It should be allocated 6 bytes. + * @sa getSHAR() + */ +#define setSHAR(shar) \ + WIZCHIP_WRITE_BUF(SHAR, shar, 6) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get @ref SHAR. + * @param (uint8_t*)shar Pointer variable to get local MAC address. It should be allocated 6 bytes. + * @sa setSHAR() + */ +#define getSHAR(shar) \ + WIZCHIP_READ_BUF(SHAR, shar, 6) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set @ref SIPR. + * @param (uint8_t*)sipr Pointer variable to set local IP address. It should be allocated 4 bytes. + * @sa getSIPR() +*/ +#define setSIPR(sipr) \ + WIZCHIP_WRITE_BUF(SIPR, sipr, 4) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get @ref SIPR. + * @param (uint8_t*)sipr Pointer variable to get local IP address. It should be allocated 4 bytes. + * @sa setSIPR() + */ +#define getSIPR(sipr) \ + WIZCHIP_READ_BUF(SIPR, sipr, 4) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref IR register + * @param (uint8_t)ir Value to set \ref IR register. + * @sa getIR() + */ +#define setIR(ir) \ + WIZCHIP_WRITE(IR, (ir & 0xE0)) //peter 2016.11.07 unreachable interrupt bit added + //WIZCHIP_WRITE(IR, (ir & 0xA0)) +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref IR register + * @return uint8_t. Value of \ref IR register. + * @sa setIR() + */ +#define getIR() \ + WIZCHIP_READ(IR) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref _IMR_ register + * @param (uint8_t)imr Value to set @ref _IMR_ register. + * @sa getIMR() + */ +#define setIMR(imr) \ + WIZCHIP_WRITE(_IMR_, imr) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref _IMR_ register + * @return uint8_t. Value of @ref _IMR_ register. + * @sa setIMR() + */ +#define getIMR() \ + WIZCHIP_READ(_IMR_) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref _RTR_ register + * @param (uint16_t)rtr Value to set @ref _RTR_ register. + * @sa getRTR() + */ +#define setRTR(rtr) {\ + WIZCHIP_WRITE(_RTR_, (uint8_t)(rtr >> 8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_RTR_,1), (uint8_t) rtr); \ + } + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref _RTR_ register + * @return uint16_t. Value of @ref _RTR_ register. + * @sa setRTR() + */ +#define getRTR() \ + (((uint16_t)WIZCHIP_READ(_RTR_) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_RTR_,1))) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref _RCR_ register + * @param (uint8_t)rcr Value to set @ref _RCR_ register. + * @sa getRCR() + */ +#define setRCR(rcr) \ + WIZCHIP_WRITE(_RCR_, rcr) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref _RCR_ register + * @return uint8_t. Value of @ref _RCR_ register. + * @sa setRCR() + */ +#define getRCR() \ + WIZCHIP_READ(_RCR_) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref RMSR register + * @sa getRMSR() + */ +#define setRMSR(rmsr) \ + WIZCHIP_WRITE(RMSR,rmsr) // Receicve Memory Size + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref RMSR register + * @return uint8_t. Value of @ref RMSR register. + * @sa setRMSR() + */ + #define getRMSR() \ + WIZCHIP_READ(RMSR) // Receicve Memory Size + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref TMSR register + * @sa getTMSR() + */ +#define setTMSR(tmsr) \ + WIZCHIP_WRITE(TMSR,tmsr) // Receicve Memory Size + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref TMSR register + * @return uint8_t. Value of @ref TMSR register. + * @sa setTMSR() + */ +#define getTMSR() \ + WIZCHIP_READ(TMSR) + + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PATR register + * @return uint16_t. Value to set \ref PATR register + */ +#define getPATR() \ + (((uint16_t)WIZCHIP_READ(PATR) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(PATR,1))) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PPPALGO register + * @return uint8_t. Value to set \ref PPPALGO register + */ +#define getPPPALGO() \ + WIZCHIP_READ(PPPALGO) + + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref PTIMER register + * @param (uint8_t)ptimer Value to set \ref PTIMER register. + * @sa getPTIMER() + */ +#define setPTIMER(ptimer) \ + WIZCHIP_WRITE(PTIMER, ptimer) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PTIMER register + * @return uint8_t. Value of @ref PTIMER register. + * @sa setPTIMER() + */ +#define getPTIMER() \ + WIZCHIP_READ(PTIMER) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref PMAGIC register + * @param (uint8_t)pmagic Value to set @ref PMAGIC register. + * @sa getPMAGIC() + */ +#define setPMAGIC(pmagic) \ + WIZCHIP_WRITE(PMAGIC, pmagic) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PMAGIC register + * @return uint8_t. Value of @ref PMAGIC register. + * @sa setPMAGIC() + */ +#define getPMAGIC() \ + WIZCHIP_READ(PMAGIC) + + +//todo Functions for W5100S + +/*----------------------------------------------------------------------*/ +/* W5100S only */ +/*----------------------------------------------------------------------*/ + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref IR2 register + * @param (uint8_t)ir2 Value to set @ref IR2 register. + * @sa getIR2() + */ +#define setIR2(ir2) \ + WIZCHIP_WRITE(IR2, ir2) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref IR2 register + * @return uint8_t. Value of @ref IR2 register. + * @sa setIR2() + */ +#define getIR2() \ + WIZCHIP_READ(IR2) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref IMR2 register + * @param (uint8_t)imr2 Value to set @ref IMR2 register. + * @sa setIMR2() + */ +#define setIMR2(imr2) \ + WIZCHIP_WRITE(IMR2,imr2) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref IMR2 register + * @return uint8_t. Value of @ref IMR2 register. + * @sa getIMR2() + */ +#define getIMR2() \ + WIZCHIP_READ(IMR2) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref UIPR(Unreachable IP Address Register) registers + * @param (uint8_t*)uipr Value to set @ref UIPR registers. + * @sa setUIPR() + */ +#define setUIPR(uipr) \ + WIZCHIP_WRITE_BUF(UIPR,uipr,4) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref UIPR(Unreachable IP Address Register) registers + * @param (uint8_t*)uipr Value to get @ref UIPR registers + * @sa setUIPR() + */ +#define getUIPR(uipr) \ + WIZCHIP_READ_BUF(UIPR,uipr,4) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref UPORTR(Unreachable Port Address Register) register + * @param (uint16_t)uportr Value to set @ref UPORTR register. + * @sa getUPORTR() + */ +#define setUPORTR(uportr) {\ + WIZCHIP_WRITE(UPORTR, (uint8_t)(uportr >> 8)); \ + WIZCHIP_WRITE(UPORTR+1, (uint8_t) uportr); \ + } + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref UPORTR(Unreachable Port Address Register) register + * @return uint16_t. Value of @ref UPORTR register. + * @sa setUPORTR() + */ +#define getUPORTR() \ + (((uint16_t)WIZCHIP_READ(UPORTR) << 8) + WIZCHIP_READ(UPORTR+1)) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref MR2 register + * @param (uint8_t)mr2 Value to set @ref MR2 registers. + * @sa getMR2() + */ +#define setMR2(mr2) \ + WIZCHIP_WRITE(MR2,mr2) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref MR2 register + * @return uint8_t. Value of @ref MR2 register. + * @sa setMR2() + */ +#define getMR2() \ + WIZCHIP_READ(MR2) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref PHAR registers + * @param (uint8_t*)phar Value to set @ref PHAR registers. + * @sa getPHAR() + */ +#define setPHAR(phar) \ + WIZCHIP_WRITE_BUF(PHAR,phar,6) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PHAR registers + * @param (uint8_t*)phar Pointer variable to get @ref PHAR registers. + * @sa setPHAR() + */ +#define getPHAR(phar) \ + WIZCHIP_READ_BUF(PHAR,phar,6) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref PSIDR register + * @param (uint16_t)psidr Value to set @ref PSIDR register. + * @sa getPSIDR() + */ +#define setPSIDR(psidr) {\ + WIZCHIP_WRITE(PSIDR, (uint8_t)(psidr >> 8)); \ + WIZCHIP_WRITE(PSIDR+1, (uint8_t) psidr); \ + } + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PSIDR register + * @return uint16_t. Value of @ref PSIDR register. + * @sa setPSIDR() + */ +#define getPSIDR() \ + (((uint16_t)WIZCHIP_READ(PSIDR) << 8) + WIZCHIP_READ(PSIDR+1)) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref PMRUR register + * @param (uint16_t)pmrur Value to set @ref PMRUR register. + * @sa getPMRUR() + */ +#define setPMRUR(pmrur) {\ + WIZCHIP_WRITE(PMRUR, (uint8_t)(pmrur >> 8)); \ + WIZCHIP_WRITE(PMRUR+1, (uint8_t) pmrur); \ + } + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PMRUR register + * @return uint16_t. Value of @ref PMRUR register. + * @sa setPMRUR() + */ +#define getPMRUR() \ + (((uint16_t)WIZCHIP_READ(PMRUR) << 8) + WIZCHIP_READ(PMRUR+1)) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PHYSR register + * @return uint8_t. Value of @ref PHYSR register. + * @sa setPHYSR() + */ +#define getPHYSR() \ + WIZCHIP_READ(PHYSR) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PHYSR1 register + * @return uint8_t. Value of @ref PHYSR1 register. + * @sa setPHYSR1() + */ +#define getPHYSR1() \ + WIZCHIP_READ(PHYSR1) + +/** + * For internal uses + * The address of the PHY is fixed as "0x0A". + */ +#define getPHYAR() \ + WIZCHIP_READ(PHYAR) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PHYRAR register + * @return uint8_t. Value of @ref PHYRAR register. + * @sa setPHYRAR() + */ +#define getPHYRAR() \ + WIZCHIP_READ(PHYRAR) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref PHYRR register + * @param (uint8_t)phyrar Value to set @ref PHYRR register. + * @sa getPHYRR() + */ +#define setPHYRR(phyrar) \ + WIZCHIP_WRITE(PHYRAR, phyrar) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PHYDIR register + * @return uint16_t. Value of @ref PHYDIR register. + * @sa setPHYRAR() + */ +//read the value of the phy data input register +#define getPHYDIR() \ + (((uint16_t)WIZCHIP_READ(PHYDIR+1) << 8) + WIZCHIP_READ(PHYDIR)) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref PHYDIR register + * @param (uint16_t)phydir Value to set @ref PHYDIR register. + * @sa getPHYDIR() + */ +//write the value of the phy data input register +#define setPHYDIR(phydir) {\ + WIZCHIP_WRITE(PHYDIR+1, (uint8_t)(phydir >> 8)); \ + WIZCHIP_WRITE(PHYDIR, (uint8_t) phydir); \ + } + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PHYDOR register + * @return uint16_t. Value of @ref PHYDOR register. + * @sa setPHYDOR() + */ +//read the value of the phy data output register +#define getPHYDOR() \ + (((uint16_t)WIZCHIP_READ(PHYDOR+1) << 8) + WIZCHIP_READ(PHYDOR)) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref PHYDOR register + * @param (uint16_t)phydor Value to set @ref PHYDOR register. + * @sa getPHYDOR() + */ +//write the value of the phy data output register +#define setPHYDOR(phydor) {\ + WIZCHIP_WRITE(PHYDOR, (uint8_t)(phydor >> 8)); \ + WIZCHIP_WRITE(PHYDOR+1, (uint8_t) phydor); \ + } + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PHYACR register + * @return uint8_t. Value of @ref PHYACR register. + * @sa setPHYACR() + */ +//read the value of the phy action register ***This register will be cleared automatically*** +#define getPHYACR() \ + WIZCHIP_READ(PHYACR) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref PHYACR register + * @param (uint8_t)phyacr Value to set @ref PHYACR register. + * @sa getPHYACR() + */ +//write the value of the phy action register +#define setPHYACR(phyacr) \ + WIZCHIP_WRITE(PHYACR,phyacr) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref PHYDIVR register + * @param (uint8_t)phydivr Value to set @ref PHYDIVR register. + * @sa getPHYDIVR() + */ +#define setPHYDIVR(phydivr) \ + WIZCHIP_WRITE(PHYDIVR, phydivr) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PHYDIVR register + * @return uint8_t. Value of @ref PHYDIVR register. + * @sa setPHYDIVR() + */ +#define getPHYDIVR() \ + WIZCHIP_READ(PHYDIVR) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref PHYCR0 register + * @param (uint8_t)phych0 Value to set @ref PHYCR0 register. + * @sa getPHYCR0() + */ +#define setPHYCR0(phych0) \ + WIZCHIP_WRITE(PHYCR0,phych0) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PHYCR0 register + * @return uint8_t. Value of @ref PHYCR0 register. + * @sa setPHYCR0() + */ +#define getPHYCR0() \ + WIZCHIP_READ(PHYCR0) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref PHYCR1 register + * @param (uint8_t)phycr1 Value to set @ref PHYCR1 register. + * @sa getPHYCR1() + */ +#define setPHYCR1(phycr1) \ + WIZCHIP_WRITE(PHYCR1,phycr1) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PHYCR1 register + * @return uint8_t. Value of @ref PHYCR1 register. + * @sa setPHYCR1() + */ +#define getPHYCR1() \ + WIZCHIP_READ(PHYCR1) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref SLCR register + * @param (uint8_t)rqcr Value to set @ref SLCR register. + * @sa getSLCR() + */ +#define setSLCR(rqcr) \ + WIZCHIP_WRITE(SLCR, rqcr) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref SLCR register + * @return uint8_t. Value of @ref SLCR register. + * @sa setSLCR() + */ +#define getSLCR() \ + WIZCHIP_READ(SLCR) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref SLRTR register + * @param (uint16_t)slrtr Value to set @ref SLRTR register. + * @sa getSLRTR() + */ +#define setSLRTR(slrtr) \ + WIZCHIP_WRITE(SLRTR, (uint8_t)(slrtr >> 8)); \ + WIZCHIP_WRITE(SLRTR+1, (uint8_t) slrtr); \ + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref SLRTR register + * @return uint16_t. Value of @ref SLRTR register. + * @sa setSLRTR() + */ +#define getSLRTR() \ + (((uint16_t)WIZCHIP_READ(SLRTR) << 8) + WIZCHIP_READ(SLRTR+1)) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref SLRCR register + * @param (uint8_t)slrcr Value to set @ref SLRCR register. + * @sa getSLRCR() + */ +#define setSLRCR(slrcr) \ + WIZCHIP_WRITE(SLRCR,slrcr) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref SLRCR register + * @return uint8_t. Value of @ref SLRCR register. + * @sa setSLRCR() + */ +#define getSLRCR() \ + WIZCHIP_READ(SLRCR) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref SLPIPR registers + * @param (uint8_t*)slpipr Values to set @ref SLPIPR registers. + * @sa getSLPIPR() + */ +#define setSLPIPR(slpipr) \ + WIZCHIP_WRITE_BUF(SLPIPR,slpipr,4) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref SLPIPR registers + * @param (uint8_t*)slpipr Values to get @ref SLPIPR registers. + * @sa getSLPIPR() + */ +#define getSLPIPR(slpipr) \ + WIZCHIP_READ_BUF(SLPIPR,slpipr,4) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref SLPHAR registers + * @param (uint8_t*)slphar Values to set @ref SLPHAR registers. + * @sa getSLPHAR() + */ +#define setSLPHAR(slphar) \ + WIZCHIP_WRITE_BUF(SLPHAR,slphar,6) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref SLPHAR registers + * @param (uint8_t*)slphar Values to get @ref SLPHAR registers. + * @sa getSLPHAR() + */ +#define getSLPHAR(slphar) \ + WIZCHIP_READ_BUF(SLPHAR,slphar,6) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref PINGSEQR register + * @param (uint16_t)pingseqr Value to set @ref PINGSEQR register. + * @sa getPINGSEQR() + */ +#define setPINGSEQR(pingseqr) {\ + WIZCHIP_WRITE(PINGSEQR, (uint8_t)(pingseqr >> 8)); \ + WIZCHIP_WRITE(PINGSEQR+1, (uint8_t) pingseqr); \ + } + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PINGSEQR register + * @return uint16_t. Value of @ref PINGSEQR register. + * @sa setPINGSEQR() + */ +#define getPINGSEQR() \ + (((uint16_t)WIZCHIP_READ(PINGSEQR) << 8) + WIZCHIP_READ(PINGSEQR+1)) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref PINGIDR register + * @param (uint16_t)pingidr Value to set @ref PINGIDR register. + * @sa getPINGIDR() + */ +#define setPINGIDR(pingidr) {\ + WIZCHIP_WRITE(PINGIDR, (uint8_t)(pingidr >> 8)); \ + WIZCHIP_WRITE(PINGIDR+1, (uint8_t) pingidr); \ + } + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref PINGIDR register + * @return uint16_t. Value of @ref PINGIDR register. + * @sa setPINGIDR() + */ +#define getPINGIDR() \ + (((uint16_t)WIZCHIP_READ(PINGIDR) << 8) + WIZCHIP_READ(PINGIDR+1)) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref SLIMR register + * @param (uint8_t)slimr Value to set @ref SLIMR register. + * @sa getSLIMR() + */ +#define setSLIMR(slimr) \ + WIZCHIP_WRITE(SLIMR, slimr) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref SLIMR register + * @return uint8_t. Value of @ref SLIMR register. + * @sa setSLIMR() + */ +#define getSLIMR() \ + WIZCHIP_READ(SLIMR) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref SLIR register + * @param (uint8_t)slir Value to set @ref SLIR register. + * @sa getSLIMR() + */ +#define setSLIR(slir) \ + WIZCHIP_WRITE(SLIR, slir) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref SLIMR register + * @return uint8_t. Value of @ref SLIMR register. + * @sa setSLIMR() + */ +#define getSLIR() \ + WIZCHIP_READ(SLIR) + +/*Hidden functions for W5100S*/ +#define setDBGOUT(dbgout) {\ + WIZCHIP_WRITE(DBGOUT,(uint8_t)(dbgout >> 16)); \ + WIZCHIP_WRITE(DBGOUT,(uint8_t)(dbgout >> 8)); \ + WIZCHIP_WRITE(DBGOUT,(uint8_t)(dbgout)); \ + } + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref NICMAXCOLR register + * @param (uint8_t)nicmaxcolr Value to set @ref NICMAXCOLR register. + * @sa getNICMAXCOLR() + */ +#define setNICMAXCOLR(nicmaxcolr) \ + WIZCHIP_WRITE(NICMAXCOLR,nicmaxcolr) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref NICMAXCOLR register + * @return uint8_t. Value of @ref NICMAXCOLR register. + * @sa setNICMAXCOLR() + */ +#define getNICMAXCOLR() \ + WIZCHIP_READ(NICMAXCOLR) + +/*Clock lock/unlock*/ + +/** + * @ingroup Common_register_access_function_W5100S + * @brief LOCK Chip Information + * @sa CHIPULLOCK() + */ +#define CHIPLOCK() \ + WIZCHIP_WRITE(CHIPLCKR,0xff) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Unlock Chip Information + * @sa CHIPLOCK() + */ +#define CHIPUNLOCK() \ + WIZCHIP_WRITE(CHIPLCKR,0xCE) + + +/** + * @ingroup Common_register_access_function_W5100S + * @brief LOCK Chip Information + * @sa CHIPULLOCK() + */ +/*Network information lock/unlock*/ +#define NETLOCK() \ + WIZCHIP_WRITE(NETLCKR,0x3A) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Unlock Chip Information + * @sa CHIPLOCK() + */ +#define NETUNLOCK() \ + WIZCHIP_WRITE(NETLCKR,0xC5) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Lock PHYCR0,CR1 Information + * @sa CHIPULLOCK() + */ +/*PHY CR0,CR1 lock/unlock*/ +#define PHYLOCK() \ + WIZCHIP_WRITE(PHYLCKR,0xff) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Lock PHYCR0,CR1 Information + * @sa CHIPULLOCK() + */ +#define PHYUNLOCK() \ + WIZCHIP_WRITE(PHYLCKR,0x53) + +/** + * @ingroup Version register_access_function_W5100SS + * @brief Get version information. + * @return uint16_t. It must be "0x51" + */ +#define getVER() \ + (WIZCHIP_READ(VERR)) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Get \ref TCNTR register + * @return uint16_t. Value of @ref TCNTR register. + * @sa setNTCNTR() + */ +/*Get 100us internal counter*/ +#define getTCNTR() \ + (((uint16_t)WIZCHIP_READ(TCNTR) << 8) + WIZCHIP_READ(TCNTR+1)) + +/** + * @ingroup Common_register_access_function_W5100S + * @brief Set \ref TCNTR register + * @param (uint8_t) + Value to set @ref TCNTR register. + * @sa getTCNTCLKR() + */ +/*Reset 100us internal counter(TCNTR)*/ +#define setTCNTCLKR(var) \ + WIZCHIP_WRITE(TCNTCLKR, var) + +/*w5100s only end*/ + + + + + +/////////////////////////////////// +// Socket N register I/O function // +/////////////////////////////////// +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set @ref Sn_MR register + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ expect bit 4. + * @param mr Value to set @ref Sn_MR + * @sa getSn_MR() + */ +#define setSn_MR(sn, mr) \ + WIZCHIP_WRITE(Sn_MR(sn),mr) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_MR register + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ expect bit 4. + * @return Value of @ref Sn_MR. + * @sa setSn_MR() + */ +#define getSn_MR(sn) \ + WIZCHIP_READ(Sn_MR(sn)) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set @ref Sn_CR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)cr Value to set @ref Sn_CR + * @sa getSn_CR() + */ +#define setSn_CR(sn, cr) \ + WIZCHIP_WRITE(Sn_CR(sn), cr) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_CR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_CR. + * @sa setSn_CR() + */ +#define getSn_CR(sn) \ + WIZCHIP_READ(Sn_CR(sn)) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set @ref Sn_IR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)ir Value to set @ref Sn_IR + * @sa getSn_IR() + */ +#define setSn_IR(sn, ir) \ + WIZCHIP_WRITE(Sn_IR(sn), ir) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_IR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_IR. + * @sa setSn_IR() + */ +#define getSn_IR(sn) \ + WIZCHIP_READ(Sn_IR(sn)) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_SR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_SR. + */ +#define getSn_SR(sn) \ + WIZCHIP_READ(Sn_SR(sn)) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set @ref Sn_PORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)port Value to set @ref Sn_PORT. + * @sa getSn_PORT() + */ +#define setSn_PORT(sn, port) { \ + WIZCHIP_WRITE(Sn_PORT(sn), (uint8_t)(port >> 8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_PORT(sn),1), (uint8_t) port); \ + } + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_PORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_PORT. + * @sa setSn_PORT() + */ +#define getSn_PORT(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_PORT(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_PORT(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set @ref Sn_DHAR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t*)dhar Pointer variable to set socket n destination hardware address. It should be allocated 6 bytes. + * @sa getSn_DHAR() + */ +#define setSn_DHAR(sn, dhar) \ + WIZCHIP_WRITE_BUF(Sn_DHAR(sn), dhar, 6) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_DHAR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t*)dhar Pointer variable to get socket n destination hardware address. It should be allocated 6 bytes. + * @sa setSn_DHAR() + */ +#define getSn_DHAR(sn, dhar) \ + WIZCHIP_READ_BUF(Sn_DHAR(sn), dhar, 6) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set @ref Sn_DIPR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t*)dipr Pointer variable to set socket n destination IP address. It should be allocated 4 bytes. + * @sa getSn_DIPR() + */ +#define setSn_DIPR(sn, dipr) \ + WIZCHIP_WRITE_BUF(Sn_DIPR(sn), dipr, 4) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_DIPR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t*)dipr Pointer variable to get socket n destination IP address. It should be allocated 4 bytes. + * @sa SetSn_DIPR() + */ +#define getSn_DIPR(sn, dipr) \ + WIZCHIP_READ_BUF(Sn_DIPR(sn), dipr, 4) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set @ref Sn_DPORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)dport Value to set @ref Sn_DPORT + * @sa getSn_DPORT() + */ +#define setSn_DPORT(sn, dport) { \ + WIZCHIP_WRITE(Sn_DPORT(sn), (uint8_t) (dport>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_DPORT(sn),1), (uint8_t) dport); \ + } + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_DPORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_DPORT. + * @sa setSn_DPORT() + */ +#define getSn_DPORT(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_DPORT(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_DPORT(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set @ref Sn_MSSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)mss Value to set @ref Sn_MSSR + * @sa setSn_MSSR() + */ +#define setSn_MSSR(sn, mss) { \ + WIZCHIP_WRITE(Sn_MSSR(sn), (uint8_t)(mss>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_MSSR(sn),1), (uint8_t) mss); \ + } + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_MSSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_MSSR. + * @sa setSn_MSSR() + */ +#define getSn_MSSR(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_MSSR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_MSSR(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set @ref Sn_PROTO register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)proto Value to set \ref Sn_PROTO + * @sa getSn_PROTO() + */ +#define setSn_PROTO(sn, proto) \ + WIZCHIP_WRITE(Sn_PROTO(sn), proto) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_PROTO register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_PROTO. + * @sa setSn_PROTO() + */ +#define getSn_PROTO(sn) \ + WIZCHIP_READ(Sn_PROTO(sn)) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set @ref Sn_TOS register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)tos Value to set @ref Sn_TOS + * @sa getSn_TOS() + */ +#define setSn_TOS(sn, tos) \ + WIZCHIP_WRITE(Sn_TOS(sn), tos) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_TOS register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ . + * @return uint8_t. Value of Sn_TOS. + * @sa setSn_TOS() + */ +#define getSn_TOS(sn) \ + WIZCHIP_READ(Sn_TOS(sn)) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set @ref Sn_TTL register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ . + * @param (uint8_t)ttl Value to set @ref Sn_TTL + * @sa getSn_TTL() + */ +#define setSn_TTL(sn, ttl) \ + WIZCHIP_WRITE(Sn_TTL(sn), ttl) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_TTL register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ . + * @return uint8_t. Value of @ref Sn_TTL. + * @sa setSn_TTL() + */ +#define getSn_TTL(sn) \ + WIZCHIP_READ(Sn_TTL(sn)) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set @ref Sn_RXMEM_SIZE register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ . + * @param (uint8_t)rxmemsize Value to set \ref Sn_RXMEM_SIZE + * @sa getSn_RXMEM_SIZE() + */ +#define setSn_RXMEM_SIZE(sn, rxmemsize) \ + WIZCHIP_WRITE(RMSR, (WIZCHIP_READ(RMSR) & ~(0x03 << (2*sn))) | (rxmemsize << (2*sn))) +#define setSn_RXBUF_SIZE(sn,rxmemsize) setSn_RXMEM_SIZE(sn,rxmemsize) +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_RXMEM_SIZE register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_RXMEM. + * @sa setSn_RXMEM_SIZE() + */ +#define getSn_RXMEM_SIZE(sn) \ + ((WIZCHIP_READ(RMSR) & (0x03 << (2*sn))) >> (2*sn)) +#define getSn_RXBUF_SIZE(sn) getSn_RXMEM_SIZE(sn) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set @ref Sn_TXMEM_SIZE register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)txmemsize Value to set \ref Sn_TXMEM_SIZE + * @sa getSn_TXMEM_SIZE() + */ +#define setSn_TXMEM_SIZE(sn, txmemsize) \ + WIZCHIP_WRITE(TMSR, (WIZCHIP_READ(TMSR) & ~(0x03 << (2*sn))) | (txmemsize << (2*sn))) +#define setSn_TXBUF_SIZE(sn, txmemsize) setSn_TXMEM_SIZE(sn,txmemsize) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_TXMEM_SIZE register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_TXMEM_SIZE. + * @sa setSn_TXMEM_SIZE() + */ +#define getSn_TXMEM_SIZE(sn) \ + ((WIZCHIP_READ(TMSR) & (0x03 << (2*sn))) >> (2*sn)) +#define getSn_TXBUF_SIZE(sn) getSn_TXMEM_SIZE(sn) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_TX_FSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_TX_FSR. + */ +uint16_t getSn_TX_FSR(uint8_t sn); + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_TX_RD register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_TX_RD. + */ +#define getSn_TX_RD(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_TX_RD(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_RD(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set @ref Sn_TX_WR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)txwr Value to set @ref Sn_TX_WR + * @sa GetSn_TX_WR() + */ +#define setSn_TX_WR(sn, txwr) { \ + WIZCHIP_WRITE(Sn_TX_WR(sn), (uint8_t)(txwr>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_TX_WR(sn),1), (uint8_t) txwr); \ + } + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_TX_WR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_TX_WR. + * @sa setSn_TX_WR() + */ +#define getSn_TX_WR(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_TX_WR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_WR(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_RX_RSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_RX_RSR. + */ +uint16_t getSn_RX_RSR(uint8_t sn); + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set @ref Sn_RX_RD register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)rxrd Value to set @ref Sn_RX_RD + * @sa getSn_RX_RD() + */ +#define setSn_RX_RD(sn, rxrd) { \ + WIZCHIP_WRITE(Sn_RX_RD(sn), (uint8_t)(rxrd>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_RX_RD(sn),1), (uint8_t) rxrd); \ + } + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_RX_RD register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @regurn uint16_t. Value of @ref Sn_RX_RD. + * @sa setSn_RX_RD() + */ +#define getSn_RX_RD(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_RX_RD(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RD(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set @ref Sn_RX_WR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)rxwr Value to set \ref Sn_RX_WR + * @sa getSn_RX_WR() + */ +#define setSn_RX_WR(sn, rxwr) { \ + WIZCHIP_WRITE(Sn_RX_WR(sn), (uint8_t)(rxwr>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_RX_WR(sn),1), (uint8_t) rxwr); \ + } + + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_RX_WR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_RX_WR. + */ +#define getSn_RX_WR(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_RX_WR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_WR(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set @ref Sn_FRAGR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)frag Value to set \ref Sn_FRAGR + * @sa getSn_FRAG() + */ +#define setSn_FRAGR(sn, fragr) { \ + WIZCHIP_WRITE(Sn_FRAGR(sn), (uint8_t)(fragr >>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_FRAGR(sn),1), (uint8_t) fragr); \ + } + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get @ref Sn_FRAGR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_FRAGR. + * @sa setSn_FRAG() + */ +#define getSn_FRAGR(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_FRAGR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_FRAGR(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get the max RX buffer size of socket sn + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Max buffer size + */ +#define getSn_RxMAX(sn) \ + ((uint16_t)(0x0001 << getSn_RXMEM_SIZE(sn)) << 10) + + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get the max TX buffer size of socket sn + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Max buffer size + */ +#define getSn_TxMAX(sn) \ + ((uint16_t)(0x0001 << getSn_TXMEM_SIZE(sn)) << 10) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get the mask of socket sn RX buffer. + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Mask value + */ +#define getSn_RxMASK(sn) \ + (getSn_RxMAX(sn) - 1) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get the mask of socket sn TX buffer + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Mask value + */ +#define getSn_TxMASK(sn) \ + (getSn_TxMAX(sn) - 1) + + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get the base address of socket sn RX buffer. + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of Socket n RX buffer base address. + */ +uint32_t getSn_RxBASE(uint8_t sn); + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get the base address of socket sn TX buffer. + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of Socket n TX buffer base address. + */ +uint32_t getSn_TxBASE(uint8_t sn); + + +/*socket register W5100S only*/ + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set the interrupt mask register of socket sn. + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)imr Value to set \ref Sn_IMR + * @sa getSn_IMR(sn) + */ +#define setSn_IMR(sn,imr) \ + WIZCHIP_WRITE(Sn_IMR(sn),imr) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get the interrupt mask register of socket sn. + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of Socket n interrupt mask register. + */ +#define getSn_IMR(sn) \ + WIZCHIP_READ(Sn_IMR(sn)) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set the Sn_MR2 value of socket sn. + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param mr2 Value of Sn_MR2 register to set. + */ +#define setSn_MR2(sn,mr2) \ + WIZCHIP_WRITE(Sn_MR2(sn), mr2) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get the Sn_MR2 value of socket sn. + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of Socket n Sn_MR2 register. + */ +#define getSn_MR2(sn) \ + WIZCHIP_READ(Sn_MR2(sn)) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set the Sn_KPALVTR value of socket sn. + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param kpalvtr Value of the Sn_KPALVTR register to set. + */ +#define setSn_KPALVTR(sn,kpalvtr) \ + WIZCHIP_WRITE(Sn_KPALVTR(sn), kpalvtr) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get the Sn_KPALVTR value of socket sn + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of the Sn_KPALVTR register. + */ +#define getSn_KPALVTR(sn) \ + WIZCHIP_READ(Sn_KPALVTR(sn)) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get the Sn_TSR register of socket sn. + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of the Socket n Sn_TSR register. + */ +#define getSn_TSR(sn) \ + WIZCHIP_READ(Sn_TSR(sn)) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set the Sn_RTR register of socket sn. + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)rtr Value of the Socket n Sn_RTR register to set. + */ +#define setSn_RTR(sn,rtr) { \ + WIZCHIP_WRITE(Sn_RTR(sn), (uint8_t)(rtr >> 8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_RTR(sn),1), (uint8_t) rtr); \ + } + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get the Sn_RTR register of socket sn. + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of the Socket n Sn_RTR register. + */ +#define getSn_RTR(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_RTR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RTR(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Set the Sn_RCR register of socket sn. + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of the Socket n Sn_RCR register to set. + */ +#define setSn_RCR(sn,rcr) \ + WIZCHIP_WRITE(Sn_RCR(sn),rcr) + +/** + * @ingroup Socket_register_access_function_W5100S + * @brief Get the Sn_RCR of socket sn. + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of the Socket n Sn_RCR. + */ +#define getSn_RCR(sn) \ + WIZCHIP_READ(Sn_RCR(sn)) + +///////////////////////////////////// +// Sn_TXBUF & Sn_RXBUF IO function // +///////////////////////////////////// +/** + * @ingroup Basic_IO_function_W5100S + * @brief It copies data to internal TX memory + * + * @details This function reads the Tx write pointer register and after that, + * it copies the wizdata(pointer buffer) of the length of len(variable) bytes to internal TX memory + * and updates the Tx write pointer register. + * This function is being called by send() and sendto() function also. + * + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param wizdata Pointer buffer to write data + * @param len Data length + * @sa wiz_recv_data() + */ +void wiz_send_data(uint8_t sn, uint8_t *wizdata, uint16_t len); + +/** + * @ingroup Basic_IO_function_W5100S + * @brief It copies data to your buffer from internal RX memory + * + * @details This function read the Rx read pointer register and after that, + * it copies the received data from internal RX memory + * to wizdata(pointer variable) of the length of len(variable) bytes. + * This function is being called by recv() also. + * + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param wizdata Pointer buffer to read data + * @param len Data length + * @sa wiz_send_data() + */ +void wiz_recv_data(uint8_t sn, uint8_t *wizdata, uint16_t len); + +/** + * @ingroup Basic_IO_function_W5100S + * @brief It discard the received data in RX memory. + * @details It discards the data of the length of len(variable) bytes in internal RX memory. + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param len Data length + */ +void wiz_recv_ignore(uint8_t sn, uint16_t len); + +/** + * @ingroup Special_function_W5100S + * @brief Write data to the PHY via MDC/MDIO interface. + * @details Write command data to the PHY via MDC/MDIO interface. + * @param (uint8_t)PHYMDIO_regadr Address of the PHY register. It should be PHYMDIO_BMCR or PHYMDIO_BMSR. + * @param (uint16_t)var Data to write to the PHY register. Please refer to the bit definitions of the BMCR and BMSR register. + */ +void wiz_mdio_write(uint8_t PHYMDIO_regadr, uint16_t var); + +/** + * @ingroup Special_function_W5100S + * @brief Read data from the PHY via MDC/MDIO interface. + * @details Read command or status data from the PHY via MDC/MDIO interface. + * @param (uint8_t)PHYMDIO_regadr Address of the PHY register. It should be PHYMDIO_BMCR or PHYMDIO_BMSR. + * @return The value of the PHY register + */ +uint16_t wiz_mdio_read(uint8_t PHYMDIO_regadr); + +/** + * @ingroup Special_function_W5100S + * @brief Delay function + * @details Delay function using internal 100us timer of the W5100S + * @param (uint32_t)ms Time to delay in milliseconds. + */ +void wiz_delay_ms(uint32_t ms); + +/// @cond DOXY_APPLY_CODE +#endif +/// @endcond + +#ifdef __cplusplus +} +#endif + +#endif //_W5100S_H_ + + + diff --git a/User/ioLibrary_Driver/Ethernet/W5200/w5200.c b/User/ioLibrary_Driver/Ethernet/W5200/w5200.c new file mode 100644 index 0000000..52bd5f5 --- /dev/null +++ b/User/ioLibrary_Driver/Ethernet/W5200/w5200.c @@ -0,0 +1,353 @@ +//***************************************************************************** +// +//! \file w5200.c +//! \brief W5200 HAL Interface. +//! \version 1.0.0 +//! \date 2013/10/21 +//! \par Revision history +//! <2013/10/21> 1st Release +//! \author MidnightCow +//! +//! Copyright (c) 2013, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** + +#include "w5200.h" + +#if (_WIZCHIP_ == 5200) +/** +@brief This function writes the data into W5200 registers. +*/ +void WIZCHIP_WRITE(uint32_t AddrSel, uint8_t wb ) +{ + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); + +#if( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_)) + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); + WIZCHIP.IF.SPI._write_byte(_W5200_SPI_WRITE_); // Data write command and Write data length upper + WIZCHIP.IF.SPI._write_byte(0x01); // Write data length lower + WIZCHIP.IF.SPI._write_byte(wb); // Data write (write 1byte data) + +#elif ( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_BUS_) ) + + //add indirect bus + //M20150601 : Rename the function for integrating with W5300 + //WIZCHIP.IF.BUS._write_byte(IDM_AR0,(AddrSel & 0x0000FF00) >> 8); + //WIZCHIP.IF.BUS._write_byte(IDM_AR1,(AddrSel & 0x000000FF)); + //WIZCHIP.IF.BUS._write_byte(IDM_DR,wb); + WIZCHIP.IF.BUS._write_data(IDM_AR0,(AddrSel & 0x0000FF00) >> 8); + WIZCHIP.IF.BUS._write_data(IDM_AR1,(AddrSel & 0x000000FF)); + WIZCHIP.IF.BUS._write_data(IDM_DR,wb); + +#else + #error "Unknown _WIZCHIP_IO_MODE_ in W5200. !!!" +#endif + + WIZCHIP.CS._deselect(); + WIZCHIP_CRITICAL_EXIT(); +} +/** +@brief This function reads the value from W5200 registers. +*/ +uint8_t WIZCHIP_READ(uint32_t AddrSel) +{ + uint8_t ret; + + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); + +#if( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_)) + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); + WIZCHIP.IF.SPI._write_byte(_W5200_SPI_READ_); // Read data length upper + WIZCHIP.IF.SPI._write_byte(0x01); // Data length lower + ret = WIZCHIP.IF.SPI._read_byte(); + +#elif ( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_BUS_) ) + + //add indirect bus + //M20150601 : Rename the function for integrating with W5300 + //WIZCHIP.IF.BUS._write_byte(IDM_AR0,(AddrSel & 0x0000FF00) >> 8); + //WIZCHIP.IF.BUS._write_byte(IDM_AR1,(AddrSel & 0x000000FF)); + //ret = WIZCHIP.IF.BUS._read_byte(IDM_DR); + WIZCHIP.IF.BUS._write_data(IDM_AR0,(AddrSel & 0x0000FF00) >> 8); + WIZCHIP.IF.BUS._write_data(IDM_AR1,(AddrSel & 0x000000FF)); + ret = WIZCHIP.IF.BUS._read_data(IDM_DR); + +#else + #error "Unknown _WIZCHIP_IO_MODE_ in W5200. !!!" +#endif + + WIZCHIP.CS._deselect(); + WIZCHIP_CRITICAL_EXIT(); + return ret; +} + + +/** +@brief This function writes into W5200 memory(Buffer) +*/ +void WIZCHIP_WRITE_BUF(uint32_t AddrSel, uint8_t* pBuf, uint16_t len) +{ + uint16_t i = 0; + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); + +#if( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_)) + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); + WIZCHIP.IF.SPI._write_byte(_W5200_SPI_WRITE_ | ((len & 0x7F00) >> 8)); // Write data op code and length upper + WIZCHIP.IF.SPI._write_byte((len & 0x00FF) >> 0); // length lower + for(i = 0; i < len; i++) + WIZCHIP.IF.SPI._write_byte(pBuf[i]); + +#elif ( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_BUS_) ) + //M20150601 : Rename the function for integrating with W5300 + /* + WIZCHIP_WRITE(MR,WIZCHIP_READ(MR) | MR_AI); + WIZCHIP.IF.BUS._write_byte(IDM_AR0,(AddrSel & 0x0000FF00) >> 8); + WIZCHIP.IF.BUS._write_byte(IDM_AR1,(AddrSel & 0x000000FF)); + for(i = 0 ; i < len; i++) + WIZCHIP.IF.BUS._write_byte(IDM_DR,pBuf[i]); + WIZCHIP_WRITE(MR, WIZCHIP_READ(MR) & ~MR_AI); + */ + setMR(getMR() | MR_AI); + WIZCHIP.IF.BUS._write_data(IDM_AR0,(AddrSel & 0x0000FF00) >> 8); + WIZCHIP.IF.BUS._write_data(IDM_AR1,(AddrSel & 0x000000FF)); + for(i = 0 ; i < len; i++) + WIZCHIP.IF.BUS._write_data(IDM_DR,pBuf[i]); + WIZCHIP_WRITE(MR, WIZCHIP_READ(MR) & ~MR_AI); +#else + #error "Unknown _WIZCHIP_IO_MODE_ in W5200. !!!!" +#endif + + WIZCHIP.CS._deselect(); + WIZCHIP_CRITICAL_EXIT(); +} + +/** +@brief This function reads into W5200 memory(Buffer) +*/ +void WIZCHIP_READ_BUF (uint32_t AddrSel, uint8_t* pBuf, uint16_t len) +{ + uint16_t i = 0; + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); + +#if( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_)) + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); + WIZCHIP.IF.SPI._write_byte( _W5200_SPI_READ_ | ((len & 0x7F00) >> 8)); // Write data op code and length upper + WIZCHIP.IF.SPI._write_byte((len & 0x00FF) >> 0); // length lower + for(i = 0; i < len; i++) + pBuf[i] = WIZCHIP.IF.SPI._read_byte(); + +#elif ( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_BUS_) ) + //M20150601 : Rename the function for integrating with W5300 + /* + WIZCHIP_WRITE(MR, WIZCHIP_READ(MR) | MR_AI); + WIZCHIP.IF.BUS._write_byte(IDM_AR0,(AddrSel & 0x0000FF00) >> 8); + WIZCHIP.IF.BUS._write_byte(IDM_AR1,(AddrSel & 0x000000FF)); + for(i = 0 ; i < len; i++) + pBuf[i] = WIZCHIP.IF.BUS._read_byte(IDM_DR); + WIZCHIP_WRITE(MR, WIZCHIP_READ(MR) & ~MR_AI); + */ + setMR(getMR() | MR_AI); + WIZCHIP.IF.BUS._write_data(IDM_AR0,(AddrSel & 0x0000FF00) >> 8); + WIZCHIP.IF.BUS._write_data(IDM_AR1,(AddrSel & 0x000000FF)); + for(i = 0 ; i < len; i++) + pBuf[i] = WIZCHIP.IF.BUS._read_data(IDM_DR); + setMR(getMR() & ~MR_AI); +#else + #error "Unknown _WIZCHIP_IO_MODE_ in W5200. !!!!" +#endif + + WIZCHIP.CS._deselect(); + WIZCHIP_CRITICAL_EXIT(); +} + +/////////////////////////////////// +// Socket N regsiter IO function // +/////////////////////////////////// + +uint16_t getSn_TX_FSR(uint8_t sn) +{ + uint16_t val=0,val1=0; + do + { + val1 = WIZCHIP_READ(Sn_TX_FSR(sn)); + val1 = (val1 << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_FSR(sn),1)); + if (val1 != 0) + { + val = WIZCHIP_READ(Sn_TX_FSR(sn)); + val = (val << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_FSR(sn),1)); + } + }while (val != val1); + return val; +} + + +uint16_t getSn_RX_RSR(uint8_t sn) +{ + uint16_t val=0,val1=0; + do + { + val1 = WIZCHIP_READ(Sn_RX_RSR(sn)); + val1 = (val1 << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RSR(sn),1)); + if (val1 != 0) + { + val = WIZCHIP_READ(Sn_RX_RSR(sn)); + val = (val << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RSR(sn),1)); + } + }while (val != val1); + return val; +} + +///////////////////////////////////// +// Sn_TXBUF & Sn_RXBUF IO function // +///////////////////////////////////// + +uint16_t getSn_RxBASE(uint8_t sn) +{ + int8_t i; + uint16_t rxbase = _WIZCHIP_IO_RXBUF_; + for(i = 0; i < sn; i++) + rxbase += getSn_RxMAX(i); + return rxbase; +} + +uint16_t getSn_TxBASE(uint8_t sn) +{ + int8_t i; + uint16_t txbase = _WIZCHIP_IO_TXBUF_; + for(i = 0; i < sn; i++) + txbase += getSn_TxMAX(i); + return txbase; +} + +/** +@brief This function is being called by send() and sendto() function also. for copy the data form application buffer to Transmite buffer of the chip. + +This function read the Tx write pointer register and after copy the data in buffer update the Tx write pointer +register. User should read upper byte first and lower byte later to get proper value. +And this function is being used for copy the data form application buffer to Transmite +buffer of the chip. It calculate the actual physical address where one has to write +the data in transmite buffer. Here also take care of the condition while it exceed +the Tx memory uper-bound of socket. + +*/ + +void wiz_send_data(uint8_t sn, uint8_t *wizdata, uint16_t len) +{ + + uint16_t ptr; + uint16_t size; + uint16_t dst_mask; + uint8_t * dst_ptr; + + ptr = getSn_TX_WR(sn); + + + dst_mask = (uint32_t)ptr & getSn_TxMASK(sn); + dst_ptr = (uint8_t*)((uint32_t)getSn_TxBASE(sn) + dst_mask); + + if (dst_mask + len > getSn_TxMAX(sn)) + { + size = getSn_TxMAX(sn) - dst_mask; + WIZCHIP_WRITE_BUF((uint32_t)dst_ptr, wizdata, size); + wizdata += size; + size = len - size; + dst_ptr = (uint8_t*)((uint32_t)getSn_TxBASE(sn)); + WIZCHIP_WRITE_BUF((uint32_t)dst_ptr, wizdata, size); + } + else + { + WIZCHIP_WRITE_BUF((uint32_t)dst_ptr, wizdata, len); + } + + ptr += len; + + setSn_TX_WR(sn, ptr); +} + + +/** +@brief This function is being called by recv() also. This function is being used for copy the data form Receive buffer of the chip to application buffer. + +This function read the Rx read pointer register +and after copy the data from receive buffer update the Rx write pointer register. +User should read upper byte first and lower byte later to get proper value. +It calculate the actual physical address where one has to read +the data from Receive buffer. Here also take care of the condition while it exceed +the Rx memory uper-bound of socket. +*/ +void wiz_recv_data(uint8_t sn, uint8_t *wizdata, uint16_t len) +{ + uint16_t ptr; + uint16_t size; + uint16_t src_mask; + uint8_t * src_ptr; + + ptr = getSn_RX_RD(sn); + + src_mask = (uint32_t)ptr & getSn_RxMASK(sn); + src_ptr = (uint8_t *)((uint32_t)getSn_RxBASE(sn) + src_mask); + + if( (src_mask + len) > getSn_RxMAX(sn) ) + { + size = getSn_RxMAX(sn) - src_mask; + WIZCHIP_READ_BUF((uint32_t)src_ptr, (uint8_t*)wizdata, size); + wizdata += size; + size = len - size; + src_ptr = (uint8_t*)((uint32_t)getSn_RxBASE(sn)); + WIZCHIP_READ_BUF((uint32_t)src_ptr, (uint8_t*)wizdata, size); + } + else + { + WIZCHIP_READ_BUF((uint32_t)src_ptr, (uint8_t*)wizdata, len); + } + + ptr += len; + + setSn_RX_RD(sn, ptr); +} + +void wiz_recv_ignore(uint8_t sn, uint16_t len) +{ + uint16_t ptr; + + ptr = getSn_RX_RD(sn); + + ptr += len; + setSn_RX_RD(sn,ptr); +} + +#endif diff --git a/User/ioLibrary_Driver/Ethernet/W5200/w5200.h b/User/ioLibrary_Driver/Ethernet/W5200/w5200.h new file mode 100644 index 0000000..0fcfe3e --- /dev/null +++ b/User/ioLibrary_Driver/Ethernet/W5200/w5200.h @@ -0,0 +1,2110 @@ +//* **************************************************************************** +//! \file w5200.h +//! \brief W5200 HAL Header File. +//! \version 1.0.0 +//! \date 2015/03/23 +//! \par Revision history +//! <2013/10/21> 1st Release +//! \author MidnightCow +//! \copyright +//! +//! Copyright (c) 2013, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** + +#ifndef _W5200_H +#define _W5200_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "wizchip_conf.h" + +/// \cond DOXY_APPLY_CODE +#if (_WIZCHIP_ == 5200) +/// \endcond + +#define _WIZCHIP_SN_BASE_ (0x4000) +#define _WIZCHIP_SN_SIZE_ (0x0100) +#define _WIZCHIP_IO_TXBUF_ (0x8000) /* Internal Tx buffer address of the iinchip */ +#define _WIZCHIP_IO_RXBUF_ (0xC000) /* Internal Rx buffer address of the iinchip */ + +#define _W5200_SPI_READ_ (0x00 << 7) ///< SPI interface Read operation in Control Phase +#define _W5200_SPI_WRITE_ (0x01 << 7) ///< SPI interface Write operation in Control Phase + +#define WIZCHIP_CREG_BLOCK 0x00 ///< Common register block +#define WIZCHIP_SREG_BLOCK(N) (_WIZCHIP_SN_BASE_+ _WIZCHIP_SN_SIZE_*N) ///< Socket N register block + +#define WIZCHIP_OFFSET_INC(ADDR, N) (ADDR + N) ///< Increase offset address + +#if (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_BUS_) + #define IDM_AR0 ((_WIZCHIP_IO_BASE_ + 0x0001)) + #define IDM_AR1 ((_WIZCHIP_IO_BASE_ + 0x0002)) + #define IDM_DR ((_WIZCHIP_IO_BASE_ + 0x0003)) + #define _W5200_IO_BASE_ 0x0000 +#elif (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_) + #define _W5200_IO_BASE_ 0x0000 +#endif + +/////////////////////////////////////// +// Definition For Legacy Chip Driver // +/////////////////////////////////////// +#define IINCHIP_READ(ADDR) WIZCHIP_READ(ADDR) ///< The defined for legacy chip driver +#define IINCHIP_WRITE(ADDR,VAL) WIZCHIP_WRITE(ADDR,VAL) ///< The defined for legacy chip driver +#define IINCHIP_READ_BUF(ADDR,BUF,LEN) WIZCHIP_READ_BUF(ADDR,BUF,LEN) ///< The defined for legacy chip driver +#define IINCHIP_WRITE_BUF(ADDR,BUF,LEN) WIZCHIP_WRITE(ADDR,BUF,LEN) ///< The defined for legacy chip driver + + +//----------- defgroup -------------------------------- + +/** + * @defgroup W5200 W5200 + * @brief WHIZCHIP register defines and I/O functions of @b W5200. + * + * - @ref WIZCHIP_register_W5200 : @ref Common_register_group_W5200 and @ref Socket_register_group_W5200 + * - @ref WIZCHIP_IO_Functions_W5200 : @ref Basic_IO_function_W5200, @ref Common_register_access_function_W5200 and @ref Socket_register_group_W5200 + */ + + /** + * @defgroup WIZCHIP_register_W5200 WIZCHIP register + * @ingroup W5200 + * @brief WIZCHIP register defines register group of W5200 . + * + * - \ref Common_register_group_W5200 : Common register group w5200 + * - \ref Socket_register_group_W5200 : \c SOCKET n register group w5200 + */ + + +/** + * @defgroup WIZCHIP_IO_Functions_W5200 WIZCHIP I/O functions + * @ingroup W5200 + * @brief This supports the basic I/O functions for \ref WIZCHIP_register_W5200. + * + * - Basic I/O function \n + * WIZCHIP_READ(), WIZCHIP_WRITE(), WIZCHIP_READ_BUF(), WIZCHIP_WRITE_BUF() \n\n + * + * - \ref Common_register_group_W5200 access functions \n + * -# @b Mode \n + * getMR(), setMR() + * -# @b Interrupt \n + * getIR(), setIR(), getIMR(), setIMR(), getIR2(), setIR2(), getIMR2(), setIMR2(), getINTLEVEL(), setINTLEVEL() + * -# Network Information \n + * getSHAR(), setSHAR(), getGAR(), setGAR(), getSUBR(), setSUBR(), getSIPR(), setSIPR() + * -# @b Retransmission \n + * getRCR(), setRCR(), getRTR(), setRTR() + * -# @b PPPoE \n + * getPTIMER(), setPTIMER(), getPMAGIC(), getPMAGIC() + * -# @b etc. \n + * getPHYSTATUS(), getVERSIONR() \n\n + * + * - \ref Socket_register_group_W5200 access functions \n + * -# SOCKET control \n + * getSn_MR(), setSn_MR(), getSn_CR(), setSn_CR(), getSn_IMR(), setSn_IMR(), getSn_IR(), setSn_IR() + * -# SOCKET information \n + * getSn_SR(), getSn_DHAR(), setSn_DHAR(), getSn_PORT(), setSn_PORT(), getSn_DIPR(), setSn_DIPR(), getSn_DPORT(), setSn_DPORT() + * getSn_MSSR(), setSn_MSSR() + * -# SOCKET communication \n + * getSn_RXMEM_SIZE(), setSn_RXMEM_SIZE(), getSn_TXMEM_SIZE(), setSn_TXMEM_SIZE() \n + * getSn_TX_RD(), getSn_TX_WR(), setSn_TX_WR() \n + * getSn_RX_RD(), setSn_RX_RD(), getSn_RX_WR() \n + * getSn_TX_FSR(), getSn_RX_RSR() + * -# IP header field \n + * getSn_FRAG(), setSn_FRAG(), getSn_TOS(), setSn_TOS() \n + * getSn_TTL(), setSn_TTL() + */ + +/** + * @defgroup Common_register_group_W5200 Common register + * @ingroup WIZCHIP_register_W5200 + * @brief Common register group\n + * It set the basic for the networking\n + * It set the configuration such as interrupt, network information, ICMP, etc. + * @details + * @sa MR : Mode register. + * @sa GAR, SUBR, SHAR, SIPR + * @sa INTLEVEL, IR, _IMR_, IR2, IMR2 : Interrupt. + * @sa _RTR_, _RCR_ : Data retransmission. + * @sa PTIMER, PMAGIC : PPPoE. + * @sa PHYSTATUS, VERSIONR : etc. + */ + + + /** + * @defgroup Socket_register_group_W5200 Socket register + * @ingroup WIZCHIP_register_W5200 + * @brief Socket register group\n + * Socket register configures and control SOCKETn which is necessary to data communication. + * @details + * @sa Sn_MR, Sn_CR, Sn_IR, Sn_IMR : SOCKETn Control + * @sa Sn_SR, Sn_PORT, Sn_DHAR, Sn_DIPR, Sn_DPORT : SOCKETn Information + * @sa Sn_MSSR, Sn_TOS, Sn_TTL, Sn_FRAG : Internet protocol. + * @sa Sn_RXMEM_SIZE, Sn_TXMEM_SIZE, Sn_TX_FSR, Sn_TX_RD, Sn_TX_WR, Sn_RX_RSR, Sn_RX_RD, Sn_RX_WR : Data communication + */ + + /** + * @defgroup Basic_IO_function_W5200 Basic I/O function + * @ingroup WIZCHIP_IO_Functions_W5200 + * @brief These are basic input/output functions to read values from register or write values to register. + */ + +/** + * @defgroup Common_register_access_function_W5200 Common register access functions + * @ingroup WIZCHIP_IO_Functions_W5200 + * @brief These are functions to access common registers. + */ + +/** + * @defgroup Socket_register_access_function_W5200 Socket register access functions + * @ingroup WIZCHIP_IO_Functions_W5200 + * @brief These are functions to access socket registers. + */ + + //----------------------------------------------------------------------------------- + +//----------------------------- W5200 Common Registers IOMAP ----------------------------- +/** + * @ingroup Common_register_group_W5200 + * @brief Mode Register address(R/W)\n + * \ref MR is used for S/W reset, ping block mode, PPPoE mode and etc. + * @details Each bit of \ref MR defined as follows. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      RST Reserved WOL PB PPPoE Reserved AI IND
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref MR_RST : Reset + * - \ref MR_WOL : Wake on LAN + * - \ref MR_PB : Ping block + * - \ref MR_PPPOE : PPPoE mode + * - \ref MR_AI : Address Auto-Increment in Indirect Bus Interface + * - \ref MR_IND : Indirect Bus Interface mode + */ +#if (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_BUS_) + #define MR (_WIZCHIP_IO_BASE_ + (0x0000)) // Mode +#else + #define MR (_W5200_IO_BASE_ + (0x0000)) // Mode +#endif + +/** + * @ingroup Common_register_group_W5200 + * @brief Gateway IP Register address(R/W) + * @details \ref GAR configures the default gateway address. + */ +#define GAR (_W5200_IO_BASE_ + (0x0001)) // GW Address + +/** + * @ingroup Common_register_group_W5200 + * @brief Subnet mask Register address(R/W) + * @details \ref SUBR configures the subnet mask address. + */ +#define SUBR (_W5200_IO_BASE_ + (0x0005)) // SN Mask Address + +/** + * @ingroup Common_register_group_W5200 + * @brief Source MAC Register address(R/W) + * @details \ref SHAR configures the source hardware address. + */ +#define SHAR (_W5200_IO_BASE_ + (0x0009)) // Source Hardware Address + +/** + * @ingroup Common_register_group_W5200 + * @brief Source IP Register address(R/W) + * @details \ref SIPR configures the source IP address. + */ +#define SIPR (_W5200_IO_BASE_ + (0x000F)) // Source IP Address + +// Reserved (_W5200_IO_BASE_ + (0x0013)) +// Reserved (_W5200_IO_BASE_ + (0x0014)) + +/** + * @ingroup Common_register_group_W5200 + * @brief Interrupt Register(R/W) + * @details \ref IR indicates the interrupt status. Each bit of \ref IR will be still until the bit will be written to by the host. + * If \ref IR is not equal to x00 INTn PIN is asserted to low until it is x00\n\n + * Each bit of \ref IR defined as follows. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      CONFLICT Reserved PPPoE Reserved Reserved Reserved Reserved Reserved
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref IR_CONFLICT : IP conflict + * - \ref IR_PPPoE : PPPoE connection close + */ +#define IR (_W5200_IO_BASE_ + (0x0015)) // Interrupt + +/** + * @ingroup Common_register_group_W5200 + * @brief Socket Interrupt Mask Register(R/W) + * @details Each bit of \ref _IMR_ corresponds to each bit of \ref IR2. + * When a bit of \ref _IMR_ is and the corresponding bit of \ref IR2 is Interrupt will be issued. + * In other words, if a bit of \ref _IMR_, an interrupt will be not issued even if the corresponding bit of \ref IR2 is set + * @note This Register is same operated as SMIR of W5100, W5300 and W5550.\n + * So, \ref setSIMR() set a value to _IMR_ for integrating with ioLibrary + */ +#define _IMR_ (_W5200_IO_BASE_ + (0x0016)) // Socket Interrupt Mask + +/** + * @ingroup Common_register_group_W5200 + * @brief Timeout register address( 1 is 100us )(R/W) + * @details \ref _RTR_ configures the retransmission timeout period. The unit of timeout period is 100us and the default of \ref _RTR_ is x07D0. + * And so the default timeout period is 200ms(100us X 2000). During the time configured by \ref _RTR_, W5200 waits for the peer response + * to the packet that is transmitted by \ref Sn_CR (CONNECT, DISCON, CLOSE, SEND, SEND_MAC, SEND_KEEP command). + * If the peer does not respond within the \ref _RTR_ time, W5200 retransmits the packet or issues timeout. + */ +#define _RTR_ (_W5200_IO_BASE_ + (0x0017)) // Retry Time + +/** + * @ingroup Common_register_group_W5200 + * @brief Retry count register(R/W) + * @details \ref _RCR_ configures the number of time of retransmission. + * When retransmission occurs as many as ref _RCR_+1 Timeout interrupt is issued (\ref Sn_IR_TIMEOUT = '1'). + */ +#define _RCR_ (_W5200_IO_BASE_ + (0x0019)) // Retry Count + +// Reserved (_W5200_IO_BASE_ + (0x001A)) +// Reserved (_W5200_IO_BASE_ + (0x001B)) + +/** + * @ingroup Common_register_group_W5200 + * @brief PPP LCP Request Timer register in PPPoE mode(R) + * @details \ref PATR notifies authentication method that has been agreed at the connection with + * PPPoE Server. W5200 supports two types of Authentication method - PAP and CHAP. + */ +#define PATR (_W5200_IO_BASE_ + (0x001C)) + +/** + * @ingroup Common_register_group_W5200 + * @brief PPP LCP Request Timer register in PPPoE mode(R) + * @details \ref PPPALGO notifies authentication algorithm in PPPoE mode. For detailed information, + * please refer to PPPoE application note. + */ +#define PPPALGO (_W5200_IO_BASE_ + (0x001E)) // Authentication Algorithm in PPPoE + +/** + * @ingroup Common_register_group_W5200 + * @brief chip version register address(R) + * @details \ref VERSIONR always indicates the W5200 version as @b 0x03. + */ +#define VERSIONR (_W5200_IO_BASE_ + (0x001F)) // Chip version + +// Reserved (_W5200_IO_BASE_ + (0x0020)) +// Reserved (_W5200_IO_BASE_ + (0x0021)) +// Reserved (_W5200_IO_BASE_ + (0x0022)) +// Reserved (_W5200_IO_BASE_ + (0x0023)) +// Reserved (_W5200_IO_BASE_ + (0x0024)) +// Reserved (_W5200_IO_BASE_ + (0x0025)) +// Reserved (_W5200_IO_BASE_ + (0x0026)) +// Reserved (_W5200_IO_BASE_ + (0x0027)) + +/** + * @ingroup Common_register_group_W5200 + * @brief PPP LCP Request Timer register in PPPoE mode(R) + * @details \ref PTIMER configures the time for sending LCP echo request. The unit of time is 25ms. + */ +#define PTIMER (_W5200_IO_BASE_ + (0x0028)) // PPP LCP RequestTimer + +/** + * @ingroup Common_register_group_W5200 + * @brief PPP LCP Magic number register in PPPoE mode(R) + * @details \ref PMAGIC configures the 4bytes magic number to be used in LCP negotiation. + */ +#define PMAGIC (_W5200_IO_BASE_ + (0x0029)) // PPP LCP Magic number + +// Reserved (_W5200_IO_BASE_ + (0x002A)) +// Reserved (_W5200_IO_BASE_ + (0x002B)) +// Reserved (_W5200_IO_BASE_ + (0x002C)) +// Reserved (_W5200_IO_BASE_ + (0x002D)) +// Reserved (_W5200_IO_BASE_ + (0x002E)) +// Reserved (_W5200_IO_BASE_ + (0x002F)) + +/** + * @ingroup Common_register_group_W5200 + * @brief Set Interrupt low level timer register address(R/W) + * @details \ref INTLEVEL configures the Interrupt Assert Time. + */ +#define INTLEVEL (_W5200_IO_BASE_ + (0x0030)) // Interrupt Low Level Timer + +// Reserved (_W5200_IO_BASE_ + (0x0032)) +// Reserved (_W5200_IO_BASE_ + (0x0033)) + +/** + * @ingroup Common_register_group_W5200 + * @brief Socket Interrupt Register(R/W) + * @details \ref IR2 indicates the interrupt status of Socket.\n + * Each bit of \ref IR2 be still until \ref Sn_IR is cleared by the host.\n + * If \ref Sn_IR is not equal to x00 the n-th bit of \ref IR2 is and INTn PIN is asserted until \ref IR2 is x00 */ +#define IR2 (_W5200_IO_BASE_ + (0x0034)) // Socket Interrupt + +/** + * @ingroup Common_register_group_W5200 + * @brief PHYSTATUS(R/W) + * @details \ref PHYSTATUS is the Register to indicate W5200 status of PHY. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Reserved Reserved LINK POWERSAVE POWERDOWN Reserved Reserved Reserved
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref PHYSTATUS_LINK : Link Status Register[Read Only] + * - \ref PHYSTATUS_POWERSAVE : Power save mode of PHY[R/W] + * - \ref PHYSTATUS_POWERDOWN : Power down mode of PHY[R/W] + */ +#define PHYSTATUS (_W5200_IO_BASE_ + (0x0035)) // PHY Status + +/** + * @ingroup Common_register_group_W5200 + * @brief Interrupt mask register(R/W) + * @details \ref IMR2 is used to mask interrupts. Each bit of \ref _IMR_ corresponds to each bit of \ref IR. + * When a bit of \ref IMR2 is and the corresponding bit of \ref IR is an interrupt will be issued. In other words, + * if a bit of \ref IMR2 is an interrupt will not be issued even if the corresponding bit of \ref IR is \n\n + * Each bit of \ref IMR2 defined as the following. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      IM_IR7 Reserved IM_IR5 Reserved Reserved Reserved Reserved Reserved
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref IM_IR7 : IP Conflict Interrupt Mask + * - \ref IM_IR5 : PPPoE Close Interrupt Mask + * @note This Register is same operated as _IMR_ of W5100, W5300 and W5550.\n + * So, \ref setIMR() set a value to IMR2 for integrating with ioLibrary + */ +#define IMR2 (_W5200_IO_BASE_ + (0x0036)) // Interrupt Mask + + +//----------------------------- W5200 Socket Registers ----------------------------- + +//--------------------------- For Backward Compatibility --------------------------- + +/** + * @ingroup Socket_register_group_W5200 + * @brief socket Mode register(R/W) + * @details \ref Sn_MR configures the option or protocol type of Socket n.\n\n + * Each bit of \ref Sn_MR defined as the following. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      MULTI MF ND/MC Reserved Protocol[3] Protocol[2] Protocol[1] Protocol[0]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref Sn_MR_MULTI : Support UDP Multicasting + * - \ref Sn_MR_MF : Support MACRAW + * - \ref Sn_MR_ND : No Delayed Ack(TCP) flag + * - \ref Sn_MR_MC : IGMP version used in UDP mulitcasting + * - Protocol + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Protocol[3] Protocol[2] Protocol[1] Protocol[0] @b Meaning
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 0 0 0 Closed
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 0 0 1 TCP
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 0 1 0 UDP
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 1 0 0 MACRAW
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - In case of Socket 0 + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Protocol[3] Protocol[2] Protocol[1] Protocol[0] @b Meaning
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 1 0 0 MACRAW
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 1 0 1 PPPoE
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref Sn_MR_MACRAW : MAC LAYER RAW SOCK \n + * - \ref Sn_MR_UDP : UDP + * - \ref Sn_MR_TCP : TCP + * - \ref Sn_MR_CLOSE : Unused socket + * @note MACRAW mode should be only used in Socket 0. + */ +#define Sn_MR(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0000)) // socket Mode register + +/** + * @ingroup Socket_register_group_W5200 + * @brief Socket command register(R/W) + * @details This is used to set the command for Socket n such as OPEN, CLOSE, CONNECT, LISTEN, SEND, and RECEIVE.\n + * After W5200 accepts the command, the \ref Sn_CR register is automatically cleared to 0x00. + * Even though \ref Sn_CR is cleared to 0x00, the command is still being processed.\n + * To check whether the command is completed or not, please check the \ref Sn_IR or \ref Sn_SR. + * - \ref Sn_CR_OPEN : Initialize or open socket. + * - \ref Sn_CR_LISTEN : Wait connection request in TCP mode(Server mode) + * - \ref Sn_CR_CONNECT : Send connection request in TCP mode(Client mode) + * - \ref Sn_CR_DISCON : Send closing request in TCP mode. + * - \ref Sn_CR_CLOSE : Close socket. + * - \ref Sn_CR_SEND : Update TX buffer pointer and send data. + * - \ref Sn_CR_SEND_MAC : Send data with MAC address, so without ARP process. + * - \ref Sn_CR_SEND_KEEP : Send keep alive message. + * - \ref Sn_CR_RECV : Update RX buffer pointer and receive data. + * - In case of S0_MR(P3:P0) = S0_MR_PPPoE + * + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Value Symbol Description
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0x23 PCON PPPoE connection begins by transmitting PPPoE discovery packet
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0x24 PDISCON Closes PPPoE connection
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0x25 PCR In each phase, it transmits REQ message.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0x26 PCN In each phase, it transmits NAK message.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0x27 PCJ In each phase, it transmits REJECT message.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + */ +#define Sn_CR(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0001)) // channel Sn_CR register + +/** + * @ingroup Socket_register_group_W5200 + * @brief Socket interrupt register(R) + * @details \ref Sn_IR indicates the status of Socket Interrupt such as establishment, termination, receiving data, timeout).\n + * When an interrupt occurs and the corresponding bit of \ref Sn_IMR is the corresponding bit of \ref Sn_IR becomes \n + * In order to clear the \ref Sn_IR bit, the host should write the bit to \n + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      PRECV PFAIL PNEXT SEND_OK TIMEOUT RECV DISCON CON
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref Sn_IR_PRECV : PPP Receive Interrupt + * - \ref Sn_IR_PFAIL : PPP Fail Interrupt + * - \ref Sn_IR_PNEXT : PPP Next Phase Interrupt + * - \ref Sn_IR_SENDOK : SEND_OK Interrupt + * - \ref Sn_IR_TIMEOUT : TIMEOUT Interrupt + * - \ref Sn_IR_RECV : RECV Interrupt + * - \ref Sn_IR_DISCON : DISCON Interrupt + * - \ref Sn_IR_CON : CON Interrupt + */ +#define Sn_IR(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0002)) // channel interrupt register + +/** + * @ingroup Socket_register_group_W5200 + * @brief Socket status register(R) + * @details \ref Sn_SR indicates the status of Socket n.\n + * The status of Socket n is changed by \ref Sn_CR or some special control packet as SYN, FIN packet in TCP. + * @par Normal status + * - \ref SOCK_CLOSED : Closed + * - \ref SOCK_INIT : Initiate state + * - \ref SOCK_LISTEN : Listen state + * - \ref SOCK_ESTABLISHED : Success to connect + * - \ref SOCK_CLOSE_WAIT : Closing state + * - \ref SOCK_UDP : UDP socket + * - \ref SOCK_MACRAW : MAC raw mode socket + *@par Temporary status during changing the status of Socket n. + * - \ref SOCK_SYNSENT : This indicates Socket n sent the connect-request packet (SYN packet) to a peer. + * - \ref SOCK_SYNRECV : It indicates Socket n successfully received the connect-request packet (SYN packet) from a peer. + * - \ref SOCK_FIN_WAIT : Connection state + * - \ref SOCK_CLOSING : Closing state + * - \ref SOCK_TIME_WAIT : Closing state + * - \ref SOCK_LAST_ACK : Closing state + */ +#define Sn_SR(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0003)) // channel status register + +/** + * @ingroup Socket_register_group_W5200 + * @brief source port register(R/W) + * @details \ref Sn_PORT configures the source port number of Socket n. + * It is valid when Socket n is used in TCP/UDP mode. It should be set before OPEN command is ordered. +*/ +#define Sn_PORT(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0004)) // source port register + +/** + * @ingroup Socket_register_group_W5200 + * @brief Peer MAC register address(R/W) + * @details \ref Sn_DHAR configures the destination hardware address of Socket n when using SEND_MAC command in UDP mode or + * it indicates that it is acquired in ARP-process by CONNECT/SEND command. + */ +#define Sn_DHAR(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0006)) // Peer MAC register address + +/** + * @ingroup Socket_register_group_W5200 + * @brief Peer IP register address(R/W) + * @details \ref Sn_DIPR configures or indicates the destination IP address of Socket n. It is valid when Socket n is used in TCP/UDP mode. + * In TCP client mode, it configures an IP address of TCP server before CONNECT command. + * In TCP server mode, it indicates an IP address of TCP client after successfully establishing connection. + * In UDP mode, it configures an IP address of peer to be received the UDP packet by SEND or SEND_MAC command. + */ +#define Sn_DIPR(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x000C)) // Peer IP register address + +/** + * @ingroup Socket_register_group_W5200 + * @brief Peer port register address(R/W) + * @details \ref Sn_DPORT configures or indicates the destination port number of Socket n. It is valid when Socket n is used in TCP/UDP mode. + * In TCP clientmode, it configures the listen port number of TCP server before CONNECT command. + * In TCP Servermode, it indicates the port number of TCP client after successfully establishing connection. + * In UDP mode, it configures the port number of peer to be transmitted the UDP packet by SEND/SEND_MAC command. + */ +#define Sn_DPORT(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0010)) // Peer port register address + +/** + * @ingroup Socket_register_group_W5200 + * @brief Maximum Segment Size(Sn_MSSR0) register address(R/W) + * @details \ref Sn_MSSR configures or indicates the MTU(Maximum Transfer Unit) of Socket n. + */ +#define Sn_MSSR(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0012)) // Maximum Segment Size(Sn_MSSR0) register address + +/** + * @ingroup Socket_register_group_W5200 + * @brief IP Protocol(PROTO) Register(R/W) + * @details \ref Sn_PROTO that sets the protocol number field of the IP header at the IP layer. It is + * valid only in IPRAW mode, and ignored in other modes. + */ +#define Sn_PROTO(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0014)) // Protocol of IP Header field register in IP raw mode + +/** + * @ingroup Socket_register_group_W5200 + * @brief IP Type of Service(TOS) Register(R/W) + * @details \ref Sn_TOS configures the TOS(Type Of Service field in IP Header) of Socket n. + * It is set before OPEN command. + */ +#define Sn_TOS(sn) (WIZCHIP_SREG_BLOCK(sn) + 0x0015) // IP Type of Service(TOS) Register + +/** + * @ingroup Socket_register_group_W5200 + * @brief IP Time to live(TTL) Register(R/W) + * @details \ref Sn_TTL configures the TTL(Time To Live field in IP header) of Socket n. + * It is set before OPEN command. + */ +#define Sn_TTL(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0016)) // IP Time to live(TTL) Register + +// Reserved (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0017)) +// Reserved (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0018)) +// Reserved (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0019)) +// Reserved (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x001A)) +// Reserved (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x001B)) +// Reserved (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x001C)) +// Reserved (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x001D)) + +/** + * @ingroup Socket_register_group_W5200 + * @brief Receive memory size register(R/W) + * @details \ref Sn_RXMEM_SIZE configures the RX buffer block size of Socket n. + * Socket n RX Buffer Block size can be configured with 1,2,4,8, and 16 Kbytes. + * If a different size is configured, the data cannot be normally received from a peer. + * Although Socket n RX Buffer Block size is initially configured to 2Kbytes, + * user can re-configure its size using \ref Sn_RXMEM_SIZE. The total sum of \ref Sn_RXMEM_SIZE can not be exceed 16Kbytes. + * When exceeded, the data reception error is occurred. + */ +#define Sn_RXMEM_SIZE(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x001E)) // Receive memory size reigster + +/** + * @ingroup Socket_register_group_W5200 + * @brief Transmit memory size register(R/W) + * @details \ref Sn_TXMEM_SIZE configures the TX buffer block size of Socket n. Socket n TX Buffer Block size can be configured with 1,2,4,8, and 16 Kbytes. + * If a different size is configured, the data can't be normally transmitted to a peer. + * Although Socket n TX Buffer Block size is initially configured to 2Kbytes, + * user can be re-configure its size using \ref Sn_TXMEM_SIZE. The total sum of \ref Sn_TXMEM_SIZE can not be exceed 16Kbytes. + * When exceeded, the data transmission error is occurred. + */ +#define Sn_TXMEM_SIZE(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x001F)) // Transmit memory size reigster + +/** + * @ingroup Socket_register_group_W5200 + * @brief Transmit free memory size register(R) + * @details \ref Sn_TX_FSR indicates the free size of Socket n TX Buffer Block. It is initialized to the configured size by \ref Sn_TXMEM_SIZE. + * Data bigger than \ref Sn_TX_FSR should not be saved in the Socket n TX Buffer because the bigger data overwrites the previous saved data not yet sent. + * Therefore, check before saving the data to the Socket n TX Buffer, and if data is equal or smaller than its checked size, + * transmit the data with SEND/SEND_MAC command after saving the data in Socket n TX buffer. But, if data is bigger than its checked size, + * transmit the data after dividing into the checked size and saving in the Socket n TX buffer. + */ +#define Sn_TX_FSR(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0020)) // Transmit free memory size register + +/** + * @ingroup Socket_register_group_W5200 + * @brief Transmit memory read pointer register address(R) + * @details \ref Sn_TX_RD is initialized by OPEN command. However, if Sn_MR(P[3:0]) is TCP mode(001), it is re-initialized while connecting with TCP. + * After its initialization, it is auto-increased by SEND command. + * SEND command transmits the saved data from the current \ref Sn_TX_RD to the \ref Sn_TX_WR in the Socket n TX Buffer. + * After transmitting the saved data, the SEND command increases the \ref Sn_TX_RD as same as the \ref Sn_TX_WR. + * If its increment value exceeds the maximum value 0xFFFF, (greater than 0x10000 and the carry bit occurs), + * then the carry bit is ignored and will automatically update with the lower 16bits value. + */ +#define Sn_TX_RD(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0022)) // Transmit memory read pointer register address + +/** + * @ingroup Socket_register_group_W5200 + * @brief Transmit memory write pointer register address(R/W) + * @details \ref Sn_TX_WR is initialized by OPEN command. However, if Sn_MR(P[3:0]) is TCP mode(001), it is re-initialized while connecting with TCP.\n + * It should be read or be updated like as follows.\n + * 1. Read the starting address for saving the transmitting data.\n + * 2. Save the transmitting data from the starting address of Socket n TX buffer.\n + * 3. After saving the transmitting data, update \ref Sn_TX_WR to the increased value as many as transmitting data size. + * If the increment value exceeds the maximum value 0xFFFF(greater than 0x10000 and the carry bit occurs), + * then the carry bit is ignored and will automatically update with the lower 16bits value.\n + * 4. Transmit the saved data in Socket n TX Buffer by using SEND/SEND command + */ +#define Sn_TX_WR(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0024)) // Transmit memory write pointer register address + +/** + * @ingroup Socket_register_group_W5200 + * @brief Received data size register(R) + * @details \ref Sn_RX_RSR indicates the data size received and saved in Socket n RX Buffer. + * \ref Sn_RX_RSR does not exceed the \ref Sn_RXMEM_SIZE and is calculated as the difference between + * Socket n RX Write Pointer (\ref Sn_RX_WR)and Socket n RX Read Pointer (\ref Sn_RX_RD) + */ +#define Sn_RX_RSR(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0026)) // Received data size register + +/** + * @ingroup Socket_register_group_W5200 + * @brief Read point of Receive memory(R/W) + * @details \ref Sn_RX_RD is initialized by OPEN command. Make sure to be read or updated as follows.\n + * 1. Read the starting save address of the received data.\n + * 2. Read data from the starting address of Socket n RX Buffer.\n + * 3. After reading the received data, Update \ref Sn_RX_RD to the increased value as many as the reading size. + * If the increment value exceeds the maximum value 0xFFFF, that is, is greater than 0x10000 and the carry bit occurs, + * update with the lower 16bits value ignored the carry bit.\n + * 4. Order RECV command is for notifying the updated \ref Sn_RX_RD to W5200. + */ +#define Sn_RX_RD(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x0028)) // Read point of Receive memory + +/** + * @ingroup Socket_register_group_W5200 + * @brief Write point of Receive memory(R) + * @details \ref Sn_RX_WR is initialized by OPEN command and it is auto-increased by the data reception. + * If the increased value exceeds the maximum value 0xFFFF, (greater than 0x10000 and the carry bit occurs), + * then the carry bit is ignored and will automatically update with the lower 16bits value. + */ +#define Sn_RX_WR(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x002A)) // Write point of Receive memory + +/** + * @ingroup Socket_register_group_W5200 + * @brief socket interrupt mask register(R) + * @details \ref Sn_IMR masks the interrupt of Socket n. + * Each bit corresponds to each bit of \ref Sn_IR. When a Socket n Interrupt is occurred and the corresponding bit of \ref Sn_IMR is + * the corresponding bit of \ref Sn_IR becomes When both the corresponding bit of \ref Sn_IMR and \ref Sn_IR are and the n-th bit of \ref IR is + * Host is interrupted by asserted INTn PIN to low. + */ +#define Sn_IMR(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x002C)) // socket interrupt mask register + +/** + * @ingroup Socket_register_group_W5200 + * @brief Fragment field value in IP header register(R/W) + * @details \ref Sn_FRAG configures the FRAG(Fragment field in IP header). + */ +#define Sn_FRAG(sn) (_W5200_IO_BASE_ + WIZCHIP_SREG_BLOCK(sn) + (0x002D)) // frag field value in IP header register + + +//----------------------------- W5200 Register values ----------------------------- + +/* MODE register values */ +/** + * @brief Reset + * @details If this bit is All internal registers will be initialized. It will be automatically cleared as after S/W reset. + */ +#define MR_RST 0x80 ///< reset + +/** + * @brief Wake on LAN + * @details 0 : Disable WOL mode\n + * 1 : Enable WOL mode\n + * If WOL mode is enabled and the received magic packet over UDP has been normally processed, the Interrupt PIN (INTn) asserts to low. + * When using WOL mode, the UDP Socket should be opened with any source port number. (Refer to Socket n Mode Register (\ref Sn_MR) for opening Socket.) + * @note The magic packet over UDP supported by W5200 consists of 6 bytes synchronization stream (xFFFFFFFFFFFF and + * 16 times Target MAC address stream in UDP payload. The options such like password are ignored. You can use any UDP source port number for WOL mode. + */ +#define MR_WOL 0x20 ///< Wake on Lan + +/** + * @brief Ping block + * @details 0 : Disable Ping block\n + * 1 : Enable Ping block\n + * If the bit is it blocks the response to a ping request. + */ +#define MR_PB 0x10 ///< ping block + +/** + * @brief Enable PPPoE + * @details 0 : DisablePPPoE mode\n + * 1 : EnablePPPoE mode\n + * If you use ADSL, this bit should be '1'. + */ +#define MR_PPPOE 0x08 ///< enable pppoe + +/** + * @brief Address Auto-Increment in Indirect Bus Interface + * @details 0 : Disable auto-increment \n + * 1 : Enable auto-incremente \n + * At the Indirect Bus Interface mode, if this bit is set as ��1��, the address will + * be automatically increased by 1 whenever read and write are performed. + */ +#define MR_AI 0x02 ///< auto-increment in indirect mode + +/** + * @brief Indirect Bus Interface mode + * @details 0 : Disable Indirect bus Interface mode \n + * 1 : Enable Indirect bus Interface mode \n + * If this bit is set as ��1��, Indirect Bus Interface mode is set. + */ +#define MR_IND 0x01 ///< enable indirect mode + +/* IR register values */ +/** + * @brief Check IP conflict. + * @details Bit is set as when own source IP address is same with the sender IP address in the received ARP request. + */ +#define IR_CONFLICT 0x80 ///< check ip confict + +/** + * @brief Get the PPPoE close message. + * @details When PPPoE is disconnected during PPPoE mode, this bit is set. + */ +#define IR_PPPoE 0x20 ///< get the PPPoE close message + +/** + * @brief Link Status [Read Only] + * @details 0: Link down \n 1: Link up \n + */ +#define PHYSTATUS_LINK 0x20 + +/** + * @brief Power save mode of PHY + * @details 0: Disable Power save mode \n 1: Enable Power save mode \n + */ +#define PHYSTATUS_POWERSAVE 0x10 + +/** + * @brief Power down mode of PHY + * @details 0: Disable Power down mode \n 1: Enable Power down mode\n + */ +#define PHYSTATUS_POWERDOWN 0x08 + +// Sn_MR values +/* Sn_MR Default values */ +/** + * @brief Unused socket + * @details This configures the protocol mode of Socket n. + */ +#define Sn_MR_CLOSE 0x00 ///< unused socket + +/** + * @brief TCP + * @details This configures the protocol mode of Socket n. + */ +#define Sn_MR_TCP 0x01 ///< TCP + +/** + * @brief UDP + * @details This configures the protocol mode of Socket n. + */ +#define Sn_MR_UDP 0x02 ///< UDP +#define Sn_MR_IPRAW 0x03 ///< IP LAYER RAW SOCK + +/** + * @brief MAC LAYER RAW SOCK + * @details This configures the protocol mode of Socket n. + * @note MACRAW mode should be only used in Socket 0. + */ +#define Sn_MR_MACRAW 0x04 ///< MAC LAYER RAW SOCK + +/** + * @brief PPPoE + * @details This configures the protocol mode of Socket n. + * @note PPPoE mode should be only used in Socket 0. + */ +#define Sn_MR_PPPOE 0x05 ///< PPPoE + +/** + * @brief No Delayed Ack(TCP), Multicast flag + * @details 0 : Disable No Delayed ACK option\n + * 1 : Enable No Delayed ACK option\n + * This bit is applied only during TCP mode (P[3:0] = 001).\n + * When this bit is It sends the ACK packet without delay as soon as a Data packet is received from a peer.\n + * When this bit is It sends the ACK packet after waiting for the timeout time configured by \ref _RTR_. + */ +#define Sn_MR_ND 0x20 ///< No Delayed Ack(TCP) flag + +/* Sn_MR Default values */ +/** + * @brief Support UDP Multicasting + * @details 0 : disable Multicasting\n + * 1 : enable Multicasting\n + * This bit is applied only during UDP mode(P[3:0] = 010).\n + * To use multicasting, \ref Sn_DIPR & \ref Sn_DPORT should be respectively configured with the multicast group IP address & port number + * before Socket n is opened by OPEN command of \ref Sn_CR. + */ +#define Sn_MR_MC Sn_MR_ND ///< Select IGMP version 1(0) or 2(1) + +/** + * @brief Multicast Blocking in \ref Sn_MR_MACRAW mode + * @details 0 : using IGMP version 2\n + * 1 : using IGMP version 1\n + * This bit is applied only during UDP mode(P[3:0] = 010 and MULTI = '1') + * It configures the version for IGMP messages (Join/Leave/Report). + */ +#define Sn_MR_MF 0x40 ///< Use MAC filter +#define Sn_MR_MFEN Sn_MR_MF + +/* Sn_MR Default values */ +/** + * @brief Support UDP Multicasting + * @details 0 : disable Multicasting\n + * 1 : enable Multicasting\n + * This bit is applied only during UDP mode(P[3:0] = 010).\n + * To use multicasting, \ref Sn_DIPR & \ref Sn_DPORT should be respectively configured with the multicast group IP address & port number + * before Socket n is opened by OPEN command of \ref Sn_CR. + */ +#define Sn_MR_MULTI 0x80 ///< support multicating + +/* Sn_CR values */ +/** + * @brief Initialize or open socket + * @details Socket n is initialized and opened according to the protocol selected in Sn_MR(P3:P0). + * The table below shows the value of \ref Sn_SR corresponding to \ref Sn_MR.\n + * + * + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \b Sn_MR (P[3:0]) \b Sn_SR
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_CLOSE (000) --
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_TCP (001) SOCK_INIT (0x13)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_UDP (010) SOCK_UDP (0x22)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      S0_MR_IPRAW (011) SOCK_IPRAW (0x32)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      S0_MR_MACRAW (100) SOCK_MACRAW (0x42)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      S0_MR_PPPoE (101) SOCK_PPPoE (0x5F)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + */ +#define Sn_CR_OPEN 0x01 ///< initialize or open socket + +/** + * @brief Wait connection request in TCP mode(Server mode) + * @details This is valid only in TCP mode (Sn_MR(P3:P0) = \ref Sn_MR_TCP).// + * In this mode, Socket n operates as a 'TCP server' and waits for connection-request (SYN packet) from any 'TCP client'.// + * The \ref Sn_SR changes the state from SOCK_INIT to SOCKET_LISTEN.// + * When a 'TCP client' connection request is successfully established, + * the \ref Sn_SR changes from SOCK_LISTEN to SOCK_ESTABLISHED and the Sn_IR(0) becomes + * But when a 'TCP client' connection request is failed, Sn_IR(3) becomes and the status of \ref Sn_SR changes to SOCK_CLOSED. + */ +#define Sn_CR_LISTEN 0x02 ///< wait connection request in tcp mode(Server mode) + +/** + * @brief Send connection request in TCP mode(Client mode) + * @details To connect, a connect-request (SYN packet) is sent to TCP serverconfigured by \ref Sn_DIPR & Sn_DPORT(destination address & port). + * If the connect-request is successful, the \ref Sn_SR is changed to \ref SOCK_ESTABLISHED and the Sn_IR(0) becomes \n\n + * The connect-request fails in the following three cases.\n + * 1. When a @b ARPTO occurs (\ref Sn_IR[3] = '1') because destination hardware address is not acquired through the ARP-process.\n + * 2. When a @b SYN/ACK packet is not received and @b TCPTO (Sn_IR(3) ='1')\n + * 3. When a @b RST packet is received instead of a @b SYN/ACK packet. In these cases, \ref Sn_SR is changed to \ref SOCK_CLOSED. + * @note This is valid only in TCP mode and operates when Socket n acts as TCP client + */ +#define Sn_CR_CONNECT 0x04 ///< send connection request in tcp mode(Client mode) + +/** + * @brief Send closing request in TCP mode + * @details Regardless of TCP serveror TCP client the DISCON command processes the disconnect-process (Active closeor Passive close.\n + * @par Active close + * it transmits disconnect-request(FIN packet) to the connected peer\n + * @par Passive close + * When FIN packet is received from peer, a FIN packet is replied back to the peer.\n + * @details When the disconnect-process is successful (that is, FIN/ACK packet is received successfully), \ref Sn_SR is changed to \ref SOCK_CLOSED.\n + * Otherwise, TCPTO occurs (Sn_IR(3)='1') and then \ref Sn_SR is changed to \ref SOCK_CLOSED. + * @note Valid only in TCP mode. + */ +#define Sn_CR_DISCON 0x08 ///< send closing reqeuset in tcp mode + +/** + * @brief Close socket + * @details Sn_SR is changed to \ref SOCK_CLOSED. + */ +#define Sn_CR_CLOSE 0x10 + +/** + * @brief Update TX buffer pointer and send data + * @details SEND transmits all the data in the Socket n TX buffer.\n + * For more details, please refer to Socket n TX Free Size Register (\ref Sn_TX_FSR), Socket n, + * TX Write Pointer Register(\ref Sn_TX_WR), and Socket n TX Read Pointer Register(\ref Sn_TX_RD). + */ +#define Sn_CR_SEND 0x20 + +/** + * @brief Send data with MAC address, so without ARP process + * @details The basic operation is same as SEND.\n + * Normally SEND transmits data after destination hardware address is acquired by the automatic ARP-process(Address Resolution Protocol).\n + * But SEND_MAC transmits data without the automatic ARP-process.\n + * In this case, the destination hardware address is acquired from \ref Sn_DHAR configured by host, instead of APR-process. + * @note Valid only in UDP mode. + */ +#define Sn_CR_SEND_MAC 0x21 + +/** + * @brief Send keep alive message + * @details It checks the connection status by sending 1byte keep-alive packet.\n + * If the peer can not respond to the keep-alive packet during timeout time, the connection is terminated and the timeout interrupt will occur. + * @note Valid only in TCP mode. + */ +#define Sn_CR_SEND_KEEP 0x22 + +/** + * @brief Update RX buffer pointer and receive data + * @details RECV completes the processing of the received data in Socket n RX Buffer by using a RX read pointer register (\ref Sn_RX_RD).\n + * For more details, refer to Socket n RX Received Size Register (\ref Sn_RX_RSR), Socket n RX Write Pointer Register (\ref Sn_RX_WR), + * and Socket n RX Read Pointer Register (\ref Sn_RX_RD). + */ +#define Sn_CR_RECV 0x40 + +/** + * @brief PPPoE connection + * @details PPPoE connection begins by transmitting PPPoE discovery packet + */ +#define Sn_CR_PCON 0x23 + +/** + * @brief Closes PPPoE connection + * @details Closes PPPoE connection + */ +#define Sn_CR_PDISCON 0x24 + +/** + * @brief REQ message transmission + * @details In each phase, it transmits REQ message. + */ +#define Sn_CR_PCR 0x25 + +/** + * @brief NAK massage transmission + * @details In each phase, it transmits NAK message. + */ +#define Sn_CR_PCN 0x26 + +/** + * @brief REJECT message transmission + * @details In each phase, it transmits REJECT message. + */ +#define Sn_CR_PCJ 0x27 + +/* Sn_IR values */ +/** + * @brief PPP Receive Interrupt + * @details PPP Receive Interrupts when the option which is not supported is received. + */ +#define Sn_IR_PRECV 0x80 + +/** + * @brief PPP Fail Interrupt + * @details PPP Fail Interrupts when PAP Authentication is failed. + */ +#define Sn_IR_PFAIL 0x40 + +/** + * @brief PPP Next Phase Interrupt + * @details PPP Next Phase Interrupts when the phase is changed during ADSL connection process. + */ +#define Sn_IR_PNEXT 0x20 + +/** + * @brief SEND_OK Interrupt + * @details This is issued when SEND command is completed. + */ +#define Sn_IR_SENDOK 0x10 ///< complete sending + +/** + * @brief TIMEOUT Interrupt + * @details This is issued when ARPTO or TCPTO occurs. + */ +#define Sn_IR_TIMEOUT 0x08 ///< assert timeout + +/** + * @brief RECV Interrupt + * @details This is issued whenever data is received from a peer. + */ +#define Sn_IR_RECV 0x04 + +/** + * @brief DISCON Interrupt + * @details This is issued when FIN or FIN/ACK packet is received from a peer. + */ +#define Sn_IR_DISCON 0x02 + +/** + * @brief CON Interrupt + * @details This is issued one time when the connection with peer is successful and then \ref Sn_SR is changed to \ref SOCK_ESTABLISHED. + */ +#define Sn_IR_CON 0x01 + +/* Sn_SR values */ +/** + * @brief Closed + * @details This indicates that Socket n is released.\n + * When DICON, CLOSE command is ordered, or when a timeout occurs, it is changed to \ref SOCK_CLOSED regardless of previous status. + */ +#define SOCK_CLOSED 0x00 ///< closed + +/** + * @brief Initiate state + * @details This indicates Socket n is opened with TCP mode.\n + * It is changed to \ref SOCK_INIT when Sn_MR(P[3:0]) = 001)and OPEN command is ordered.\n + * After \ref SOCK_INIT, user can use LISTEN /CONNECT command. + */ +#define SOCK_INIT 0x13 ///< init state + +/** + * @brief Listen state + * @details This indicates Socket n is operating as TCP servermode and waiting for connection-request (SYN packet) from a peer (TCP client).\n + * It will change to \ref SOCK_ESTABLISHED when the connection-request is successfully accepted.\n + * Otherwise it will change to \ref SOCK_CLOSED after TCPTO occurred (Sn_IR(TIMEOUT) = '1'). + */ +#define SOCK_LISTEN 0x14 + +/** + * @brief Connection state + * @details This indicates Socket n sent the connect-request packet (SYN packet) to a peer.\n + * It is temporarily shown when \ref Sn_SR is changed from \ref SOCK_INIT to \ref SOCK_ESTABLISHED by CONNECT command.\n + * If connect-accept(SYN/ACK packet) is received from the peer at SOCK_SYNSENT, it changes to \ref SOCK_ESTABLISHED.\n + * Otherwise, it changes to \ref SOCK_CLOSED after TCPTO (\ref Sn_IR[TIMEOUT] = '1') is occurred. + */ +#define SOCK_SYNSENT 0x15 + +/** + * @brief Connection state + * @details It indicates Socket n successfully received the connect-request packet (SYN packet) from a peer.\n + * If socket n sends the response (SYN/ACK packet) to the peer successfully, it changes to \ref SOCK_ESTABLISHED. \n + * If not, it changes to \ref SOCK_CLOSED after timeout occurs (\ref Sn_IR[TIMEOUT] = '1'). + */ +#define SOCK_SYNRECV 0x16 + +/** + * @brief Success to connect + * @details This indicates the status of the connection of Socket n.\n + * It changes to \ref SOCK_ESTABLISHED when the TCP SERVERprocessed the SYN packet from the TCP CLIENTduring \ref SOCK_LISTEN, or + * when the CONNECT command is successful.\n + * During \ref SOCK_ESTABLISHED, DATA packet can be transferred using SEND or RECV command. + */ +#define SOCK_ESTABLISHED 0x17 + +/** + * @brief Closing state + * @details These indicate Socket n is closing.\n + * These are shown in disconnect-process such as active-close and passive-close.\n + * When Disconnect-process is successfully completed, or when timeout occurs, these change to \ref SOCK_CLOSED. + */ +#define SOCK_FIN_WAIT 0x18 + +/** + * @brief Closing state + * @details These indicate Socket n is closing.\n + * These are shown in disconnect-process such as active-close and passive-close.\n + * When Disconnect-process is successfully completed, or when timeout occurs, these change to \ref SOCK_CLOSED. + */ +#define SOCK_CLOSING 0x1A + +/** + * @brief Closing state + * @details These indicate Socket n is closing.\n + * These are shown in disconnect-process such as active-close and passive-close.\n + * When Disconnect-process is successfully completed, or when timeout occurs, these change to \ref SOCK_CLOSED. + */ +#define SOCK_TIME_WAIT 0x1B + +/** + * @brief Closing state + * @details This indicates Socket n received the disconnect-request (FIN packet) from the connected peer.\n + * This is half-closing status, and data can be transferred.\n + * For full-closing, DISCON command is used. But For just-closing, CLOSE command is used. + */ +#define SOCK_CLOSE_WAIT 0x1C + +/** + * @brief Closing state + * @details This indicates Socket n is waiting for the response (FIN/ACK packet) to the disconnect-request (FIN packet) by passive-close.\n + * It changes to \ref SOCK_CLOSED when Socket n received the response successfully, or when timeout occurs (\ref Sn_IR[TIMEOUT] = '1'). + */ +#define SOCK_LAST_ACK 0x1D + +/** + * @brief UDP socket + * @details This indicates Socket n is opened in UDP mode(Sn_MR(P[3:0]) = 010).\n + * It changes to SOCK_UDP when Sn_MR(P[3:0]) = 010 and OPEN command is ordered.\n + * Unlike TCP mode, data can be transfered without the connection-process. + */ +#define SOCK_UDP 0x22 ///< udp socket + +/** +* @brief IP raw mode socket + * @details TThe socket is opened in IPRAW mode. The SOCKET status is change to SOCK_IPRAW when Sn_MR (P3:P0) is + * Sn_MR_IPRAW and OPEN command is used.\n + * IP Packet can be transferred without a connection similar to the UDP mode. +*/ +#define SOCK_IPRAW 0x32 ///< ip raw mode socket + +/** + * @brief MAC raw mode socket + * @details This indicates Socket 0 is opened in MACRAW mode (S0_MR(P[3:0]) = 100and is valid only in Socket 0.\n + * It changes to SOCK_MACRAW when S0_MR(P[3:0] = 100)and OPEN command is ordered.\n + * Like UDP mode socket, MACRAW mode Socket 0 can transfer a MAC packet (Ethernet frame) without the connection-process. + */ +#define SOCK_MACRAW 0x42 ///< mac raw mode socket + +/** + * @brief PPPoE mode socket + * @details It is the status that SOCKET0 is open as PPPoE mode. It is changed to SOCK_PPPoE in case of S0_CR=OPEN and S0_MR + * (P3:P0)=S0_MR_PPPoE.\n + * It is temporarily used at the PPPoE +connection. + */ +#define SOCK_PPPOE 0x5F ///< pppoe socket + +// IP PROTOCOL +#define IPPROTO_IP 0 ///< Dummy for IP +#define IPPROTO_ICMP 1 ///< Control message protocol +#define IPPROTO_IGMP 2 ///< Internet group management protocol +#define IPPROTO_GGP 3 ///< GW^2 (deprecated) +#define IPPROTO_TCP 6 ///< TCP +#define IPPROTO_PUP 12 ///< PUP +#define IPPROTO_UDP 17 ///< UDP +#define IPPROTO_IDP 22 ///< XNS idp +#define IPPROTO_ND 77 ///< UNOFFICIAL net disk protocol +#define IPPROTO_RAW 255 ///< Raw IP packet + +/** + * @brief Enter a critical section + * + * @details It is provided to protect your shared code which are executed without distribution. \n \n + * + * In non-OS environment, It can be just implemented by disabling whole interrupt.\n + * In OS environment, You can replace it to critical section api supported by OS. + * + * \sa WIZCHIP_READ(), WIZCHIP_WRITE(), WIZCHIP_READ_BUF(), WIZCHIP_WRITE_BUF() + * \sa WIZCHIP_CRITICAL_EXIT() + */ +#define WIZCHIP_CRITICAL_ENTER() WIZCHIP.CRIS._enter() + +#ifdef _exit +#undef _exit +#endif + +/** + * @brief Exit a critical section + * + * @details It is provided to protect your shared code which are executed without distribution. \n\n + * + * In non-OS environment, It can be just implemented by disabling whole interrupt. \n + * In OS environment, You can replace it to critical section api supported by OS. + * + * @sa WIZCHIP_READ(), WIZCHIP_WRITE(), WIZCHIP_READ_BUF(), WIZCHIP_WRITE_BUF() + * @sa WIZCHIP_CRITICAL_ENTER() + */ +#define WIZCHIP_CRITICAL_EXIT() WIZCHIP.CRIS._exit() + + + +//////////////////////// +// Basic I/O Function // +//////////////////////// +/** + * @ingroup Basic_IO_function_W5200 + * @brief It reads 1 byte value from a register. + * @param AddrSel Register address + * @return The value of register + */ +uint8_t WIZCHIP_READ (uint32_t AddrSel); + +/** + * @ingroup Basic_IO_function_W5200 + * @brief It writes 1 byte value to a register. + * @param AddrSel Register address + * @param wb Write data + * @return void + */ +void WIZCHIP_WRITE(uint32_t AddrSel, uint8_t wb ); + +/** + * @ingroup Basic_IO_function_W5200 + * @brief It reads sequence data from registers. + * @param AddrSel Register address + * @param pBuf Pointer buffer to read data + * @param len Data length + */ +void WIZCHIP_READ_BUF (uint32_t AddrSel, uint8_t* pBuf, uint16_t len); + +/** + * @ingroup Basic_IO_function_W5200 + * @brief It writes sequence data to registers. + * @param AddrSel Register address + * @param pBuf Pointer buffer to write data + * @param len Data length + */ +void WIZCHIP_WRITE_BUF(uint32_t AddrSel, uint8_t* pBuf, uint16_t len); + + +///////////////////////////////// +// Common Register IO function // +///////////////////////////////// + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Set Mode Register + * @param (uint8_t)mr The value to be set. + * @sa getMR() + */ +#if (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_) + #define setMR(mr) WIZCHIP_WRITE(MR,mr) +#else + #define setMR(mr) (*((uint8_t*)MR) = mr) +#endif + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get @ref MR. + * @return uint8_t. The value of Mode register. + * @sa setMR() + */ +#if (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_) + #define getMR() WIZCHIP_READ(MR) +#else + #define getMR() (*(uint8_t*)MR) +#endif + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Set @ref GAR. + * @param (uint8_t*)gar Pointer variable to set gateway IP address. It should be allocated 4 bytes. + * @sa getGAR() + */ +#define setGAR(gar) \ + WIZCHIP_WRITE_BUF(GAR,gar,4) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get @ref GAR. + * @param (uint8_t*)gar Pointer variable to get gateway IP address. It should be allocated 4 bytes. + * @sa setGAR() + */ +#define getGAR(gar) \ + WIZCHIP_READ_BUF(GAR,gar,4) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Set @ref SUBR. + * @param (uint8_t*)subr Pointer variable to set subnet mask address. It should be allocated 4 bytes. + * @note If subr is null pointer, set the backup subnet to SUBR. \n + * If subr is 0.0.0.0, back up SUBR and clear it. \n + * Otherwize, set subr to SUBR + * @sa getSUBR() + */ +#define setSUBR(subr) \ + WIZCHIP_WRITE_BUF(SUBR, subr,4) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get @ref SUBR. + * @param (uint8_t*)subr Pointer variable to get subnet mask address. It should be allocated 4 bytes. + * @sa setSUBR() + */ +#define getSUBR(subr) \ + WIZCHIP_READ_BUF(SUBR, subr, 4) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Set @ref SHAR. + * @param (uint8_t*)shar Pointer variable to set local MAC address. It should be allocated 6 bytes. + * @sa getSHAR() + */ +#define setSHAR(shar) \ + WIZCHIP_WRITE_BUF(SHAR, shar, 6) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get @ref SHAR. + * @param (uint8_t*)shar Pointer variable to get local MAC address. It should be allocated 6 bytes. + * @sa setSHAR() + */ +#define getSHAR(shar) \ + WIZCHIP_READ_BUF(SHAR, shar, 6) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Set @ref SIPR. + * @param (uint8_t*)sipr Pointer variable to set local IP address. It should be allocated 4 bytes. + * @sa getSIPR() +*/ +#define setSIPR(sipr) \ + WIZCHIP_WRITE_BUF(SIPR, sipr, 4) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get @ref SIPR. + * @param (uint8_t*)sipr Pointer variable to get local IP address. It should be allocated 4 bytes. + * @sa setSIPR() + */ +#define getSIPR(sipr) \ + WIZCHIP_READ_BUF(SIPR, sipr, 4) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Set \ref IR register + * @param (uint8_t)ir Value to set \ref IR register. + * @sa getIR() + */ +#define setIR(ir) \ + WIZCHIP_WRITE(IR, (ir & 0xA0)) +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get \ref IR register + * @return uint8_t. Value of \ref IR register. + * @sa setIR() + */ +#define getIR() \ + (WIZCHIP_READ(IR) & 0xA0) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Set \ref IMR2 register + * @param (uint8_t)imr Value to set @ref IMR2 register. + * @sa getIMR() + */ +//M20150410 : Replace _IMR_ with IMR2 for integrating with ioLibrary +/* +#define setIMR(imr) \ + WIZCHIP_WRITE(_IMR_, imr) +*/ +#define setIMR(imr) \ + WIZCHIP_WRITE(IMR2, imr & 0xA0) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get \ref IMR2 register + * @return uint8_t. Value of @ref IMR2 register. + * @sa setIMR() + */ +//M20150410 : Replace _IMR_ with IMR2 for integrating with ioLibrary +/* +#define getIMR() \ + WIZCHIP_READ(_IMR_) +*/ +#define getIMR() \ + (WIZCHIP_READ(IMR2) & 0xA0) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Set \ref _RTR_ register + * @param (uint16_t)rtr Value to set @ref _RTR_ register. + * @sa getRTR() + */ +#define setRTR(rtr) {\ + WIZCHIP_WRITE(_RTR_, (uint8_t)(rtr >> 8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_RTR_,1), (uint8_t) rtr); \ + } + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get \ref _RTR_ register + * @return uint16_t. Value of @ref _RTR_ register. + * @sa setRTR() + */ +#define getRTR() \ + (((uint16_t)WIZCHIP_READ(_RTR_) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_RTR_,1))) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Set \ref _RCR_ register + * @param (uint8_t)rcr Value to set @ref _RCR_ register. + * @sa getRCR() + */ +#define setRCR(rcr) \ + WIZCHIP_WRITE(_RCR_, rcr) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get \ref _RCR_ register + * @return uint8_t. Value of @ref _RCR_ register. + * @sa setRCR() + */ +#define getRCR() \ + WIZCHIP_READ(_RCR_) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get \ref PATR register + * @return uint16_t. Value to set \ref PATR register + */ +#define getPATR() \ + (((uint16_t)WIZCHIP_READ(PATR) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(PATR,1))) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get \ref PPPALGO register + * @return uint8_t. Value to set \ref PPPALGO register + */ +#define getPPPALGO() \ + WIZCHIP_READ(PPPALGO) + + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get \ref VERSIONR register + * @return uint8_t. Value to set \ref VERSIONR register + */ +#define getVERSIONR() \ + WIZCHIP_READ(VERSIONR) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Set \ref PTIMER register + * @param (uint8_t)ptimer Value to set \ref PTIMER register. + * @sa getPTIMER() + */ +#define setPTIMER(ptimer) \ + WIZCHIP_WRITE(PTIMER, ptimer) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get \ref PTIMER register + * @return uint8_t. Value of @ref PTIMER register. + * @sa setPTIMER() + */ +#define getPTIMER() \ + WIZCHIP_READ(PTIMER) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Set \ref PMAGIC register + * @param (uint8_t)pmagic Value to set @ref PMAGIC register. + * @sa getPMAGIC() + */ +#define setPMAGIC(pmagic) \ + WIZCHIP_WRITE(PMAGIC, pmagic) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get \ref PMAGIC register + * @return uint8_t. Value of @ref PMAGIC register. + * @sa setPMAGIC() + */ +#define getPMAGIC() \ + WIZCHIP_READ(PMAGIC) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Set @ref INTLEVEL register + * @param (uint16_t)intlevel Value to set @ref INTLEVEL register. + * @sa getINTLEVEL() + */ +#define setINTLEVEL(intlevel) {\ + WIZCHIP_WRITE(INTLEVEL, (uint8_t)(intlevel >> 8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(INTLEVEL,1), (uint8_t) intlevel); \ + } +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get @ref INTLEVEL register + * @return uint16_t. Value of @ref INTLEVEL register. + * @sa setINTLEVEL() + */ +#define getINTLEVEL() \ + (((uint16_t)WIZCHIP_READ(INTLEVEL) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(INTLEVEL,1))) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Set \ref IR2 register + * @param (uint8_t)ir2 Value to set \ref IR2 register. + * @sa getIR2() + */ +#define setIR2(ir2) \ + WIZCHIP_WRITE(IR2, ir2) +#define setSIR(ir2) setIR2(ir2) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get \ref IR2 register + * @return uint8_t. Value of \ref IR2 register. + * @sa setIR2() + */ +#define getIR2() \ + WIZCHIP_READ(IR2) +#define getSIR() getIR2() + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get \ref PHYSTATUS register + * @return uint8_t. Value to set \ref PHYSTATUS register. + */ +#define getPHYSTATUS() \ + WIZCHIP_READ(PHYSTATUS) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Set \ref _IMR_ register + * @param (uint8_t)imr2 Value to set \ref IMR2 register. + * @sa getIMR2() + * @note If possible, Don't use this function. Instead, Use setSIMR() for compatible with ioLibrary. + */ + //M20150410 : Replace IMR2 with _IMR_ for integrating with ioLibrary +/* +#define setIMR2(imr2) \ + WIZCHIP_WRITE(IMR2, (imr2 & 0xA0)) +*/ +#define setIMR2(imr2) \ + WIZCHIP_WRITE(_IMR_, imr2) +#define setSIMR(imr2) setIMR2(imr2) + +/** + * @ingroup Common_register_access_function_W5200 + * @brief Get \ref _IMR_ register + * @return uint8_t. Value of \ref IMR2 register. + * @sa setIMR2() + */ + //M20150410 : Replace IMR2 with _IMR_ for integrating with ioLibrary +/* +#define getIMR2() \ + (WIZCHIP_READ(IMR2) & 0xA0) +*/ +#define getIMR2() \ + WIZCHIP_READ(_IMR_) +#define getSIMR() getIMR2() +/////////////////////////////////// +// Socket N register I/O function // +/////////////////////////////////// +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_MR register + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ expect bit 4. + * @param mr Value to set @ref Sn_MR + * @sa getSn_MR() + */ +#define setSn_MR(sn, mr) \ + WIZCHIP_WRITE(Sn_MR(sn),mr) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_MR register + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ expect bit 4. + * @return Value of @ref Sn_MR. + * @sa setSn_MR() + */ +#define getSn_MR(sn) \ + WIZCHIP_READ(Sn_MR(sn)) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_CR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)cr Value to set @ref Sn_CR + * @sa getSn_CR() + */ +#define setSn_CR(sn, cr) \ + WIZCHIP_WRITE(Sn_CR(sn), cr) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_CR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_CR. + * @sa setSn_CR() + */ +#define getSn_CR(sn) \ + WIZCHIP_READ(Sn_CR(sn)) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_IR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)ir Value to set @ref Sn_IR + * @sa getSn_IR() + */ +#define setSn_IR(sn, ir) \ + WIZCHIP_WRITE(Sn_IR(sn), ir) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_IR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_IR. + * @sa setSn_IR() + */ +#define getSn_IR(sn) \ + WIZCHIP_READ(Sn_IR(sn)) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_IMR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)imr Value to set @ref Sn_IMR + * @sa getSn_IMR() +*/ +#define setSn_IMR(sn, imr) \ + WIZCHIP_WRITE(Sn_IMR(sn), imr) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_IMR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_IMR. + * @sa setSn_IMR() + */ +#define getSn_IMR(sn) \ + WIZCHIP_READ(Sn_IMR(sn)) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_SR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_SR. + */ +#define getSn_SR(sn) \ + WIZCHIP_READ(Sn_SR(sn)) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_PORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)port Value to set @ref Sn_PORT. + * @sa getSn_PORT() + */ +#define setSn_PORT(sn, port) { \ + WIZCHIP_WRITE(Sn_PORT(sn), (uint8_t)(port >> 8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_PORT(sn),1), (uint8_t) port); \ + } + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_PORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_PORT. + * @sa setSn_PORT() + */ +#define getSn_PORT(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_PORT(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_PORT(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_DHAR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t*)dhar Pointer variable to set socket n destination hardware address. It should be allocated 6 bytes. + * @sa getSn_DHAR() + */ +#define setSn_DHAR(sn, dhar) \ + WIZCHIP_WRITE_BUF(Sn_DHAR(sn), dhar, 6) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_DHAR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t*)dhar Pointer variable to get socket n destination hardware address. It should be allocated 6 bytes. + * @sa setSn_DHAR() + */ +#define getSn_DHAR(sn, dhar) \ + WIZCHIP_READ_BUF(Sn_DHAR(sn), dhar, 6) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_DIPR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t*)dipr Pointer variable to set socket n destination IP address. It should be allocated 4 bytes. + * @sa getSn_DIPR() + */ +#define setSn_DIPR(sn, dipr) \ + WIZCHIP_WRITE_BUF(Sn_DIPR(sn), dipr, 4) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_DIPR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t*)dipr Pointer variable to get socket n destination IP address. It should be allocated 4 bytes. + * @sa SetSn_DIPR() + */ +#define getSn_DIPR(sn, dipr) \ + WIZCHIP_READ_BUF(Sn_DIPR(sn), dipr, 4) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_DPORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)dport Value to set @ref Sn_DPORT + * @sa getSn_DPORT() + */ +#define setSn_DPORT(sn, dport) { \ + WIZCHIP_WRITE(Sn_DPORT(sn), (uint8_t) (dport>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_DPORT(sn),1), (uint8_t) dport); \ + } + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_DPORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_DPORT. + * @sa setSn_DPORT() + */ +#define getSn_DPORT(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_DPORT(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_DPORT(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_MSSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)mss Value to set @ref Sn_MSSR + * @sa setSn_MSSR() + */ +#define setSn_MSSR(sn, mss) { \ + WIZCHIP_WRITE(Sn_MSSR(sn), (uint8_t)(mss>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_MSSR(sn),1), (uint8_t) mss); \ + } + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_MSSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_MSSR. + * @sa setSn_MSSR() + */ +#define getSn_MSSR(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_MSSR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_MSSR(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_PROTO register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)proto Value to set \ref Sn_PROTO + * @sa getSn_PROTO() + */ +//M20150601 : Fixed Wrong Register address +/* +#define setSn_PROTO(sn, proto) \ + WIZCHIP_WRITE(Sn_TOS(sn), tos) +*/ +#define setSn_PROTO(sn, proto) \ + WIZCHIP_WRITE(Sn_PROTO(sn), proto) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_PROTO register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_PROTO. + * @sa setSn_PROTO() + */ +//M20150601 : Fixed Wrong Register address +/* +#define getSn_PROTO(sn) \ + WIZCHIP_READ(Sn_TOS(sn)) +*/ +#define getSn_PROTO(sn) \ + WIZCHIP_READ(Sn_PROTO(sn)) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_TOS register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)tos Value to set @ref Sn_TOS + * @sa getSn_TOS() + */ +#define setSn_TOS(sn, tos) \ + WIZCHIP_WRITE(Sn_TOS(sn), tos) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_TOS register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ . + * @return uint8_t. Value of Sn_TOS. + * @sa setSn_TOS() + */ +#define getSn_TOS(sn) \ + WIZCHIP_READ(Sn_TOS(sn)) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_TTL register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ . + * @param (uint8_t)ttl Value to set @ref Sn_TTL + * @sa getSn_TTL() + */ +#define setSn_TTL(sn, ttl) \ + WIZCHIP_WRITE(Sn_TTL(sn), ttl) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_TTL register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ . + * @return uint8_t. Value of @ref Sn_TTL. + * @sa setSn_TTL() + */ +#define getSn_TTL(sn) \ + WIZCHIP_READ(Sn_TTL(sn)) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_RXMEM_SIZE register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ . + * @param (uint8_t)rxmemsize Value to set \ref Sn_RXMEM_SIZE + * @sa getSn_RXMEM_SIZE() + */ +#define setSn_RXMEM_SIZE(sn, rxmemsize) \ + WIZCHIP_WRITE(Sn_RXMEM_SIZE(sn),rxmemsize) + +#define setSn_RXBUF_SIZE(sn,rxmemsize) setSn_RXMEM_SIZE(sn,rxmemsize) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_RXMEM_SIZE register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_RXMEM. + * @sa setSn_RXMEM_SIZE() + */ +#define getSn_RXMEM_SIZE(sn) \ + WIZCHIP_READ(Sn_RXMEM_SIZE(sn)) + +#define getSn_RXBUF_SIZE(sn) getSn_RXMEM_SIZE(sn) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_TXMEM_SIZE register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)txmemsize Value to set \ref Sn_TXMEM_SIZE + * @sa getSn_TXMEM_SIZE() + */ +#define setSn_TXMEM_SIZE(sn, txmemsize) \ + WIZCHIP_WRITE(Sn_TXMEM_SIZE(sn), txmemsize) + +#define setSn_TXBUF_SIZE(sn, txmemsize) setSn_TXMEM_SIZE(sn,txmemsize) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_TXMEM_SIZE register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_TXMEM_SIZE. + * @sa setSn_TXMEM_SIZE() + */ +#define getSn_TXMEM_SIZE(sn) \ + WIZCHIP_READ(Sn_TXMEM_SIZE(sn)) + +#define getSn_TXBUF_SIZE(sn) getSn_TXMEM_SIZE(sn) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_TX_FSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_TX_FSR. + */ +uint16_t getSn_TX_FSR(uint8_t sn); + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_TX_RD register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_TX_RD. + */ +#define getSn_TX_RD(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_TX_RD(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_RD(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_TX_WR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)txwr Value to set @ref Sn_TX_WR + * @sa GetSn_TX_WR() + */ +#define setSn_TX_WR(sn, txwr) { \ + WIZCHIP_WRITE(Sn_TX_WR(sn), (uint8_t)(txwr>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_TX_WR(sn),1), (uint8_t) txwr); \ + } + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_TX_WR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_TX_WR. + * @sa setSn_TX_WR() + */ +#define getSn_TX_WR(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_TX_WR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_WR(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_RX_RSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_RX_RSR. + */ +uint16_t getSn_RX_RSR(uint8_t sn); + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_RX_RD register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)rxrd Value to set @ref Sn_RX_RD + * @sa getSn_RX_RD() + */ +#define setSn_RX_RD(sn, rxrd) { \ + WIZCHIP_WRITE(Sn_RX_RD(sn), (uint8_t)(rxrd>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_RX_RD(sn),1), (uint8_t) rxrd); \ + } + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_RX_RD register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_RX_RD. + * @sa setSn_RX_RD() + */ +#define getSn_RX_RD(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_RX_RD(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RD(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_RX_WR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)rxwr Value to set \ref Sn_RX_WR + * @sa getSn_RX_WR() + */ +#define setSn_RX_WR(sn, rxwr) { \ + WIZCHIP_WRITE(Sn_RX_WR(sn), (uint8_t)(rxwr>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_RX_WR(sn),1), (uint8_t) rxwr); \ + } + + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_RX_WR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_RX_WR. + */ +#define getSn_RX_WR(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_RX_WR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_WR(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_IMR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)imr Value to set \ref Sn_IMR + * @sa getSn_IMR() + */ +#define setSn_IMR(sn ,imr) \ + WIZCHIP_WRITE(Sn_IMR(sn), imr) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_IMR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_IMR. + * @sa setSn_IMR() + */ +#define getSn_IMR(sn) \ + WIZCHIP_READ(Sn_IMR(sn)) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Set @ref Sn_FRAG register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint16_t)frag Value to set \ref Sn_FRAG + * @sa getSn_FRAG() + */ +#define setSn_FRAG(sn, frag) { \ + WIZCHIP_WRITE(Sn_FRAG(sn), (uint8_t)(frag >>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_FRAG(sn),1), (uint8_t) frag); \ + } + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get @ref Sn_FRAG register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of @ref Sn_FRAG. + * @sa setSn_FRAG() + */ +#define getSn_FRAG(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_FRAG(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_FRAG(sn),1))) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get the max RX buffer size of socket sn + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Max buffer size + */ +#define getSn_RxMAX(sn) \ + ((uint16_t)getSn_RXMEM_SIZE(sn) << 10) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get the max TX buffer size of socket sn + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Max buffer size + */ +#define getSn_TxMAX(sn) \ + ((uint16_t)getSn_TXMEM_SIZE(sn) << 10) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get the mask of socket sn RX buffer. + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Mask value + */ +#define getSn_RxMASK(sn) \ + ((uint16_t)getSn_RxMAX(sn) - 1) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get the mask of socket sn TX buffer + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Mask value + */ +#define getSn_TxMASK(sn) \ + ((uint16_t)getSn_TxMAX(sn) - 1) + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get the base address of socket sn RX buffer. + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of Socket n RX buffer base address. + */ +uint16_t getSn_RxBASE(uint8_t sn); + +/** + * @ingroup Socket_register_access_function_W5200 + * @brief Get the base address of socket sn TX buffer. + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint16_t. Value of Socket n TX buffer base address. + */ +uint16_t getSn_TxBASE(uint8_t sn); + +///////////////////////////////////// +// Sn_TXBUF & Sn_RXBUF IO function // +///////////////////////////////////// +/** + * @ingroup Basic_IO_function_W5200 + * @brief It copies data to internal TX memory + * + * @details This function reads the Tx write pointer register and after that, + * it copies the wizdata(pointer buffer) of the length of len(variable) bytes to internal TX memory + * and updates the Tx write pointer register. + * This function is being called by send() and sendto() function also. + * + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param wizdata Pointer buffer to write data + * @param len Data length + * @sa wiz_recv_data() + */ +void wiz_send_data(uint8_t sn, uint8_t *wizdata, uint16_t len); + +/** + * @ingroup Basic_IO_function_W5200 + * @brief It copies data to your buffer from internal RX memory + * + * @details This function read the Rx read pointer register and after that, + * it copies the received data from internal RX memory + * to wizdata(pointer variable) of the length of len(variable) bytes. + * This function is being called by recv() also. + * + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param wizdata Pointer buffer to read data + * @param len Data length + * @sa wiz_send_data() + */ +void wiz_recv_data(uint8_t sn, uint8_t *wizdata, uint16_t len); + +/** + * @ingroup Basic_IO_function_W5200 + * @brief It discard the received data in RX memory. + * @details It discards the data of the length of len(variable) bytes in internal RX memory. + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param len Data length + */ +void wiz_recv_ignore(uint8_t sn, uint16_t len); + +/// \cond DOXY_APPLY_CODE +#endif +/// \endcond + +#ifdef __cplusplus +} +#endif + +#endif //_W5200_H_ + + + diff --git a/User/ioLibrary_Driver/Ethernet/W5300/w5300.c b/User/ioLibrary_Driver/Ethernet/W5300/w5300.c new file mode 100644 index 0000000..4b5e60b --- /dev/null +++ b/User/ioLibrary_Driver/Ethernet/W5300/w5300.c @@ -0,0 +1,225 @@ +//***************************************************************************** +// +//! \file w5300.h +//! \brief W5300 HAL implement File. +//! \version 1.0.0 +//! \date 2015/05/01 +//! \par Revision history +//! <2015/05/01> 1st Released for integrating with ioLibrary +//! Download the latest version directly from GitHub. Please visit the our GitHub repository for ioLibrary. +//! >> https://github.com/Wiznet/ioLibrary_Driver +//! \author MidnightCow +//! \copyright +//! +//! Copyright (c) 2015, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** + +#include +#include "wizchip_conf.h" + +#if _WIZCHIP_ == 5300 + + extern uint8_t sock_remained_byte[_WIZCHIP_SOCK_NUM_]; + extern uint8_t sock_pack_info[_WIZCHIP_SOCK_NUM_]; + + +/*********************** + * Basic I/O Function * + ***********************/ + +void WIZCHIP_WRITE(uint32_t AddrSel, uint16_t wb ) +{ + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); + +#if ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_) ) + #if(_WIZCHIP_IO_BUS_WIDTH_ == 8) + WIZCHIP.IF.BUS._write_data(AddrSel, (uint8_t)(wb>>8)); + WIZCHIP.IF.BUS._write_data(WIZCHIP_OFFSET_INC(AddrSel,1),(uint8_t)wb); + #elif(_WIZCHIP_IO_BUS_WIDTH_ == 16) + WIZCHIP.IF.BUS._write_data(AddrSel, wb); + #else + #error "Abnoraml _WIZCHIP_IO_BUS_WIDTH_. Should be 8 or 16" + #endif +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_) ) + #if(_WIZCHIP_IO_BUS_WIDTH_ == 8) + WIZCHIP.IF.BUS._write_data(IDM_AR, (uint8_t)(AddrSel >> 8)); + WIZCHIP.IF.BUS._write_data(WIZCHIP_OFFSET_INC(IDM_AR,1),(uint8_t)AddrSel); + WIZCHIP.IF.BUS._write_data(IDM_DR,(uint8_t)(wb>>8)); + WIZCHIP.IF.BUS._write_data(WIZCHIP_OFFSET_INC(IDM_DR,1),(uint8_t)wb); + #elif(_WIZCHIP_IO_BUS_WIDTH_ == 16) + WIZCHIP.IF.BUS._write_data(IDM_AR, (uint16_t)AddrSel); + WIZCHIP.IF.BUS._write_data(IDM_DR, wb); + #else + #error "Abnoraml _WIZCHIP_IO_BUS_WIDTH_. Should be 8 or 16" + #endif +#else + #error "Unknown _WIZCHIP_IO_MODE_ in W5300. !!!" +#endif + + WIZCHIP.CS._deselect(); + WIZCHIP_CRITICAL_EXIT(); +} + +uint16_t WIZCHIP_READ(uint32_t AddrSel) +{ + uint16_t ret; + + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); + +#if ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_) ) + #if (_WIZCHIP_IO_BUS_WIDTH_ == 8) + ret = (((uint16_t)WIZCHIP.IF.BUS._read_data(AddrSel)) << 8) | + (((uint16_t)WIZCHIP.IF.BUS._read_data(WIZCHIP_OFFSET_INC(AddrSel,1))) & 0x00FF) ; + #elif(_WIZCHIP_IO_BUS_WIDTH_ == 16) + ret = WIZCHIP.IF.BUS._read_data(AddrSel); + #else + #error "Abnoraml _WIZCHIP_IO_BUS_WIDTH_. Should be 8 or 16" + #endif +#elif ( (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_) ) + #if(_WIZCHIP_IO_BUS_WIDTH_ == 8) + WIZCHIP.IF.BUS._write_data(IDM_AR, (uint8_t)(AddrSel >> 8)); + WIZCHIP.IF.BUS._write_data(WIZCHIP_OFFSET_INC(IDM_AR,1),(uint8_t)AddrSel); + ret = (((uint16_t)WIZCHIP.IF.BUS._read_data(IDM_DR)) << 8) | + (((uint16_t)WIZCHIP.IF.BUS._read_data(WIZCHIP_OFFSET_INC(IDM_DR,1))) & 0x00FF); + #elif(_WIZCHIP_IO_BUS_WIDTH_ == 16) + WIZCHIP.IF.BUS._write_data(IDM_AR, (uint16_t)AddrSel); + ret = WIZCHIP.IF.BUS._read_data(IDM_DR); + #else + #error "Abnoraml _WIZCHIP_IO_BUS_WIDTH_. Should be 8 or 16" + #endif +#else + #error "Unknown _WIZCHIP_IO_MODE_ in W5300. !!!" +#endif + + WIZCHIP.CS._deselect(); + WIZCHIP_CRITICAL_EXIT(); + return ret; +} + + +void setTMSR(uint8_t sn,uint8_t tmsr) +{ + uint16_t tmem; + tmem = WIZCHIP_READ(WIZCHIP_OFFSET_INC(TMS01R, (sn & 0xFE))); + if(sn & 0x01) tmem = (tmem & 0xFF00) | (((uint16_t)tmsr ) & 0x00FF) ; + else tmem = (tmem & 0x00FF) | (((uint16_t)tmsr) << 8) ; + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(TMS01R, (sn & 0xFE)),tmem); +} + +uint8_t getTMSR(uint8_t sn) +{ + if(sn & 0x01) + return (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(TMS01R, (sn & 0xFE))) & 0x00FF); + return (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(TMS01R, (sn & 0xFE))) >> 8); +} + +void setRMSR(uint8_t sn,uint8_t rmsr) +{ + uint16_t rmem; + rmem = WIZCHIP_READ(WIZCHIP_OFFSET_INC(RMS01R, (sn & 0xFE))); + if(sn & 0x01) rmem = (rmem & 0xFF00) | (((uint16_t)rmsr ) & 0x00FF) ; + else rmem = (rmem & 0x00FF) | (((uint16_t)rmsr) << 8) ; + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(RMS01R, (sn & 0xFE)),rmem); +} + +uint8_t getRMSR(uint8_t sn) +{ + if(sn & 0x01) + return (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(RMS01R, (sn & 0xFE))) & 0x00FF); + return (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(RMS01R, (sn & 0xFE))) >> 8); +} + +uint32_t getSn_TX_FSR(uint8_t sn) +{ + uint32_t free_tx_size=0; + uint32_t free_tx_size1=1; + while(1) + { + free_tx_size = (((uint32_t)WIZCHIP_READ(Sn_TX_FSR(sn))) << 16) | + (((uint32_t)WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_FSR(sn),2))) & 0x0000FFFF); // read + if(free_tx_size == free_tx_size1) break; // if first == sencond, Sn_TX_FSR value is valid. + free_tx_size1 = free_tx_size; // save second value into first + } + return free_tx_size; +} + +uint32_t getSn_RX_RSR(uint8_t sn) +{ + uint32_t received_rx_size=0; + uint32_t received_rx_size1=1; + while(1) + { + received_rx_size = (((uint32_t)WIZCHIP_READ(Sn_RX_RSR(sn))) << 16) | + (((uint32_t)WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RSR(sn),2))) & 0x0000FFFF); + if(received_rx_size == received_rx_size1) break; + received_rx_size1 = received_rx_size; // if first == sencond, Sn_RX_RSR value is valid. + } // save second value into first + return received_rx_size + (uint32_t)((sock_pack_info[sn] & 0x02) ? 1 : 0); +} + + +void wiz_send_data(uint8_t sn, uint8_t *wizdata, uint32_t len) +{ + uint32_t i = 0; + if(len == 0) return; + + for(i = 0; i < len ; i += 2) + setSn_TX_FIFOR(sn, (((uint16_t)wizdata[i]) << 8) | (((uint16_t)wizdata[i+1]) & 0x00FF)) +} + +void wiz_recv_data(uint8_t sn, uint8_t *wizdata, uint32_t len) +{ + uint16_t rd = 0; + uint32_t i = 0; + + if(len == 0) return; + + for(i = 0; i < len; i++) + { + if((i & 0x01)==0) + { + rd = getSn_RX_FIFOR(sn); + wizdata[i] = (uint8_t)(rd >> 8); + } + else wizdata[i] = (uint8_t)rd; // For checking the memory access violation + } + sock_remained_byte[sn] = (uint8_t)rd; // back up the remaind fifo byte. +} + +void wiz_recv_ignore(uint8_t sn, uint32_t len) +{ + uint32_t i = 0; + for(i = 0; i < len ; i += 2) getSn_RX_FIFOR(sn); +} + + +#endif diff --git a/User/ioLibrary_Driver/Ethernet/W5300/w5300.h b/User/ioLibrary_Driver/Ethernet/W5300/w5300.h new file mode 100644 index 0000000..a8bcd18 --- /dev/null +++ b/User/ioLibrary_Driver/Ethernet/W5300/w5300.h @@ -0,0 +1,2336 @@ +#ifndef _W5300_H_ +#define _W5300_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//***************************************************************************** +// +//! \file w5300.h +//! \brief W5300 HAL Header File. +//! \version 1.0.0 +//! \date 2015/05/01 +//! \par Revision history +//! <2015/05/01> 1st Released for integrating with ioLibrary +//! Download the latest version directly from GitHub. Please visit the our GitHub repository for ioLibrary. +//! >> https://github.com/Wiznet/ioLibrary_Driver +//! \author MidnightCow +//! \copyright +//! +//! Copyright (c) 2015, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** + +#include +#include "wizchip_conf.h" + +/// \cond DOXY_APPLY_CODE +#if (_WIZCHIP_ == 5300) +/// \endcond + +#define _WIZCHIP_SN_BASE_ (0x0200) +#define _WIZCHIP_SN_SIZE_ (0x0040) + + +#define WIZCHIP_CREG_BLOCK 0x00 ///< Common register block +#define WIZCHIP_SREG_BLOCK(N) (_WIZCHIP_SN_BASE_+ _WIZCHIP_SN_SIZE_*N) ///< Socket N register block + +#define WIZCHIP_OFFSET_INC(ADDR, N) (ADDR + N) ///< Increase offset address + +#if (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_) + #define _W5300_IO_BASE_ _WIZCHIP_IO_BASE_ +#elif (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_) + #define IDM_AR ((_WIZCHIP_IO_BASE_ + 0x0002)) ///< Indirect mode address register + #define IDM_DR ((_WIZCHIP_IO_BASE_ + 0x0004)) ///< Indirect mode data register + #define _W5300_IO_BASE_ 0x0000 +#elif (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_) + #error "Unkonw _WIZCHIP_IO_MODE_" +#endif + +/////////////////////////////////////// +// Definition For Legacy Chip Driver // +/////////////////////////////////////// +#define IINCHIP_READ(ADDR) WIZCHIP_READ(ADDR) ///< The defined for legacy chip driver +#define IINCHIP_WRITE(ADDR,VAL) WIZCHIP_WRITE(ADDR,VAL) ///< The defined for legacy chip driver +//#define IINCHIP_READ_BUF(ADDR,BUF,LEN) WIZCHIP_READ_BUF(ADDR,BUF,LEN) ///< The defined for legacy chip driver +//#define IINCHIP_WRITE_BUF(ADDR,BUF,LEN) WIZCHIP_WRITE(ADDR,BUF,LEN) ///< The defined for legacy chip driver + +//-------------------------- defgroup --------------------------------- +/** + * @defgroup W5300 W5300 + * + * @brief WHIZCHIP register defines and I/O functions of @b W5300. + * + * - @ref WIZCHIP_register_W5300 : @ref Common_register_group_W5300 and @ref Socket_register_group_W5300 + * - @ref WIZCHIP_IO_Functions_W5300 : @ref Basic_IO_function_W5300, @ref Common_register_access_function_W5300 and @ref Socket_register_access_function_W5300 + */ + + +/** + * @defgroup WIZCHIP_register_W5300 WIZCHIP register + * @ingroup W5300 + * + * @brief WHIZCHIP register defines register group of @b W5300. + * + * - @ref Common_register_group_W5300 : Common register group + * - @ref Socket_register_group_W5300 : \c SOCKET n register group + */ + + +/** + * @defgroup WIZCHIP_IO_Functions_W5300 WIZCHIP I/O functions + * @ingroup W5300 + * + * @brief This supports the basic I/O functions for @ref WIZCHIP_register_W5300. + * + * - Basic I/O function \n + * WIZCHIP_READ(), WIZCHIP_WRITE() \n\n + * + * - @ref Common_register_group_W5300 access functions \n + * -# @b Mode \n + * getMR(), setMR() + * -# @b Interrupt \n + * getIR(), setIR(), getIMR(), setIMR(), getSIR(), setSIR(), getSIMR(), setSIMR() + * -# Network Information \n + * getSHAR(), setSHAR(), getGAR(), setGAR(), getSUBR(), setSUBR(), getSIPR(), setSIPR() + * -# @b Retransmission \n + * getRCR(), setRCR(), getRTR(), setRTR() + * -# @b PPPoE \n + * getPTIMER(), setPTIMER(), getPMAGIC(), getPMAGIC(), getPSID(), setPSID(), getPHAR(), setPHAR(), getPMRU(), setPMRU() + * -# ICMP packet \n + * getUIPR(), getUPORTR() + * -# @b Socket Memory \n + * getMTYPER(), setMTYPER() \n + * getTMS01R(), getTMS23R(), getTMS45R(), getTMS67R(), setTMS01R(), setTMS23R(), setTMS45R(), setTMS67R() \n + * getRMS01R(), getRMS23R(), getRMS45R(), getRMS67R(), setRMS01R(), setRMS23R(), setRMS45R(), setRMS67R() \n + * -# @b etc. \n + * getPn_BRDYR(), setPn_BRDYR(), getPn_BDPTHR(), setPn_BDPTHR(), getIDR() \n\n + * + * - \ref Socket_register_group_W5300 access functions \n + * -# SOCKET control \n + * getSn_MR(), setSn_MR(), getSn_CR(), setSn_CR(), getSn_IMR(), setSn_IMR(), getSn_IR(), setSn_IR() + * -# SOCKET information \n + * getSn_SR(), getSn_DHAR(), setSn_DHAR(), getSn_PORT(), setSn_PORT(), getSn_DIPR(), setSn_DIPR(), getSn_DPORT(), setSn_DPORT() + * getSn_MSSR(), setSn_MSSR() + * -# SOCKET communication \n + * getSn_RXBUF_SIZE(), setSn_RXBUF_SIZE(), getSn_TXBUF_SIZE(), setSn_TXBUF_SIZE() \n + * getSn_TX_RD(), getSn_TX_WR(), setSn_TX_WR() \n + * getSn_RX_RD(), setSn_RX_RD(), getSn_RX_WR() \n + * getSn_TX_FSR(), getSn_RX_RSR(), getSn_KPALVTR(), setSn_KPALVTR() + * -# IP header field \n + * getSn_FRAG(), setSn_FRAG(), getSn_TOS(), setSn_TOS() \n + * getSn_TTL(), setSn_TTL() + */ + + +/** + * @defgroup Common_register_group_W5300 Common register + * @ingroup WIZCHIP_register_W5300 + * + * @brief Common register group\n + * It set the basic for the networking\n + * It set the configuration such as interrupt, network information, ICMP, etc. + * @details + * @sa MR : Mode register. + * @sa GAR, SUBR, SHAR, SIPR : Network Configuration + * @sa IR, _IMR_ : Interrupt. + * @sa MTYPER, TMS01R,TMS23R, TMS45R, TMS67R,RMS01R,RMS23R, RMS45R, RMS67R : Socket TX/RX memory + * @sa _RTR_, _RCR_ : Data retransmission. + * @sa PTIMER, PMAGIC, PSID, PDHAR : PPPoE. + * @sa UIPR, UPORTR, FMTUR : ICMP message. + * @sa Pn_BRDYR, Pn_BDPTHR, IDR : etc. + */ + + +/** + * @defgroup Socket_register_group_W5300 Socket register + * @ingroup WIZCHIP_register_W5300 + * + * @brief Socket register group.\n + * Socket register configures and control SOCKETn which is necessary to data communication. + * @details + * @sa Sn_MR, Sn_CR, Sn_IR, Sn_IMR : SOCKETn Control + * @sa Sn_SR, Sn_PORT, Sn_DHAR, Sn_DIPR, Sn_DPORT : SOCKETn Information + * @sa Sn_MSSR, Sn_TOS, Sn_TTL, Sn_KPALVTR, Sn_FRAG : Internet protocol. + * @sa Sn_TX_WRSR, Sn_TX_FSR, Sn_TX_RD, Sn_TX_WR, Sn_RX_RSR, Sn_RX_RD, Sn_RX_WR, Sn_TX_FIFOR, Sn_RX_FIFOR : Data communication + */ + + + /** + * @defgroup Basic_IO_function_W5300 Basic I/O function + * @ingroup WIZCHIP_IO_Functions_W5300 + * @brief These are basic input/output functions to read values from register or write values to register. + */ + +/** + * @defgroup Common_register_access_function_W5300 Common register access functions + * @ingroup WIZCHIP_IO_Functions_W5300 + * @brief These are functions to access common registers. + */ + +/** + * @defgroup Socket_register_access_function_W5300 Socket register access functions + * @ingroup WIZCHIP_IO_Functions_W5300 + * @brief These are functions to access socket registers. + */ + +//------------------------------- defgroup end -------------------------------------------- + +//----------------------------- W5300 Common Registers ----------------------------- +/** + * @ingroup Common_register_group_W5300 + * @brief Mode Register address(R/W)\n + * @ref MR is used for S/W reset, ping block mode, PPPoE mode and etc. + * @details Each bit of @ref MR defined as follows. + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      15 14 13 12 11 10 9 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      DBW MPF WDFRDF Reserved FS
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      RST Reserved WOL PB PPPoE Reserved FARP Reserved
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref MR_DBW : Data bus width (0 : 8 Bit, 1 : 16 Bit), Read Only + * - \ref MR_MPF : Received a Pause Frame from MAC layer (0 : Normal Frame, 1 : Pause Frame), Read Only + * - \ref MR_WDF : Write Data Fetch time (When CS signal is low, W5300 Fetch a written data by Host after PLL_CLK * MR_WDF) + * - \ref MR_RDH : Read Data Hold time (0 : No use data hold time, 1 : Use data hold time, 2 PLL_CLK) + * - \ref MR_FS : FIFO Swap (0 : Disable Swap, 1 : Enable Swap) + * - \ref MR_RST : Reset + * - \ref MR_WOL : Wake on LAN + * - \ref MR_PB : Ping block + * - \ref MR_PPPOE : PPPoE mode + * - \ref MR_FARP : Force ARP mode + */ +#define MR (_WIZCHIP_IO_BASE_) + +/** + * @ingroup Common_register_group_W5300 + * @brief Interrupt Register(R/W) + * @details \ref IR indicates the interrupt status. Each bit of \ref IR will be still until the bit will be written to by the host. + * If \ref IR is not equal to 0x0000 INTn PIN is asserted to low until it is 0x0000\n\n + * Each bit of \ref IR defined as follows. + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      15 14 13 12 11 10 9 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      IPCF DPUR PPPT FMTU Reserved Reserved Reserved Reserved
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      S7_INT S6_INT S5_INT S4_INT S3_INT S2_INT S1_INT S0_INT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref IR_IPCF : IP conflict + * - \ref IR_DPUR : Destination Port Unreachable + * - \ref IR_PPPT : PPPoE Termination + * - \ref IR_FMTU : Fragmented MTU + * - \ref IR_SnINT(n) : Interrupted from SOCKETn + * + * @note : In W5300, IR is operated same as IR and SIR in other WIZCHIP(5100,5200,W5500) + */ +#define IR (_W5300_IO_BASE_ + 0x02) + +/** + * @ingroup Common_register_group_W5300 + * @brief Socket Interrupt Mask Register(R/W) + * @details Each bit of \ref _IMR_ corresponds to each bit of \ref IR. + * When a bit of _IMR_ is and the corresponding bit of \ref IR is Interrupt will be issued. + * In other words, if a bit of _IMR_, an interrupt will be not issued even if the corresponding bit of \ref IR is set + * @note : In W5300, _IMR_ is operated same as _IMR_ and SIMR in other WIZCHIP(5100,5200,W5500) + */ +#define _IMR_ (_W5300_IO_BASE_ + 0x04) + + +//#define ICFGR (_W5300_IO_BASE_ + 0x06) +//#define INTLEVEL ICFGR + +/** + * @ingroup Common_register_group_W5300 + * @brief Source MAC Register address(R/W) + * @details @ref SHAR configures the source hardware address. + */ +#define SHAR (_W5300_IO_BASE_ + 0x08) + + +/** + * @ingroup Common_register_group_W5300 + * @brief Gateway IP Register address(R/W) + * @details @ref GAR configures the default gateway address. + */ + #define GAR (_W5300_IO_BASE_ + 0x10) + +/** + * @ingroup Common_register_group_W5300 + * @brief Subnet mask Register address(R/W) + * @details @ref SUBR configures the subnet mask address. + */ +#define SUBR (_W5300_IO_BASE_ + 0x14) + +/** + * @ingroup Common_register_group_W5300 + * @brief Source IP Register address(R/W) + * @details @ref SIPR configures the source IP address. + */ +#define SIPR (_W5300_IO_BASE_ + 0x18) + +/** + * @ingroup Common_register_group_W5300 + * @brief Timeout register address( 1 is 100us )(R/W) + * @details @ref _RTR_ configures the retransmission timeout period. The unit of timeout period is 100us and the default of @ref _RTR_ is x07D0. + * And so the default timeout period is 200ms(100us X 2000). During the time configured by @ref _RTR_, W5300 waits for the peer response + * to the packet that is transmitted by \ref Sn_CR (CONNECT, DISCON, CLOSE, SEND, SEND_MAC, SEND_KEEP command). + * If the peer does not respond within the @ref _RTR_ time, W5300 retransmits the packet or issues timeout. + */ + #define _RTR_ (_W5300_IO_BASE_ + 0x1C) + +/** + * @ingroup Common_register_group_W5300 + * @brief Retry count register(R/W) + * @details @ref _RCR_ configures the number of time of retransmission. + * When retransmission occurs as many as ref _RCR_+1 Timeout interrupt is issued (@ref Sn_IR_TIMEOUT = '1'). + */ +#define _RCR_ (_W5300_IO_BASE_ + 0x1E) + +/** + * @ingroup Common_register_group_W5300 + * @brief TX memory size of \c SOCKET 0 & 1 + * @details TMS01R configures the TX buffer block size of \c SOCKET 0 & 1. The default value is configured with 8KB and can be configure from 0 to 64KB with unit 1KB. + * But the sum of all SOCKET TX buffer size should be multiple of 8 and the sum of all SOCKET TX and RX memory size can't exceed 128KB. + * When exceeded nor multiple of 8, the data transmittion is invalid. + */ +#define TMS01R (_W5300_IO_BASE_ + 0x20) + +/** + * @ingroup Common_register_group_W5300 + * @brief TX memory size of \c SOCKET 2 & 3 + * @details refer to \ref TMS01R + */ +#define TMS23R (TMS01R + 2) + +/** + * @ingroup Common_register_group_W5300 + * @brief TX memory size of \c SOCKET 4 & 5 + * @details refer to \ref TMS01R + */ +#define TMS45R (TMS01R + 4) + +/** + * @ingroup Common_register_group_W5300 + * @brief TX memory size of \c SOCKET 6 & 7 + * @details refer to \ref TMS01R + */ +#define TMS67R (TMS01R + 6) + +/** + * @ingroup Common_register_group_W5300 + * @brief TX memory size of \c SOCKET 0. + * @details refer to \ref TMS01R + */ +#define TMSR0 TMS01R + +/** + * @ingroup Common_register_group_W5300 + * @brief TX memory size of \c SOCKET 1. + * @details refer to \ref TMS01R + */ +#define TMSR1 (TMSR0 + 1) + +/** + * @ingroup Common_register_group_W5300 + * @brief TX memory size of \c SOCKET 2. + * @details refer to \ref TMS01R + */ +#define TMSR2 (TMSR0 + 2) + +/** + * @ingroup Common_register_group_W5300 + * @brief TX memory size of \c SOCKET 3. + * @details refer to \ref TMS01R + */ +#define TMSR3 (TMSR0 + 3) + +/** + * @ingroup Common_register_group_W5300 + * @brief TX memory size of \c SOCKET 4. + * @details refer to \ref TMS01R + */ +#define TMSR4 (TMSR0 + 4) + +/** + * @ingroup Common_register_group_W5300 + * @brief TX memory size of \c SOCKET 5. + * @details refer to \ref TMS01R + */ +#define TMSR5 (TMSR0 + 5) + +/** + * @ingroup Common_register_group_W5300 + * @brief TX memory size of \c SOCKET 6. + * @details refer to \ref TMS01R + */ +#define TMSR6 (TMSR0 + 6) + +/** + * @ingroup Common_register_group_W5300 + * @brief TX memory size of \c SOCKET 7. + * @details refer to \ref TMS01R + */ +#define TMSR7 (TMSR0 + 7) + + +/** + * @ingroup Common_register_group_W5300 + * @brief RX memory size of \c SOCKET 0 & 1 + * @details RMS01R configures the RX buffer block size of \c SOCKET 0 & 1. The default value is configured with 8KB and can be configure from 0 to 64KB with unit 1KB. + * But the sum of all SOCKET RX buffer size should be multiple of 8 and the sum of all SOCKET RX and TX memory size can't exceed 128KB. + * When exceeded nor multiple of 8, the data reception is invalid. + */ +#define RMS01R (_W5300_IO_BASE_ + 0x28) + +/** + * @ingroup Common_register_group_W5300 + * @brief RX memory size of \c SOCKET 2 & 3 + * @details Refer to \ref RMS01R + */ +#define RMS23R (RMS01R + 2) + +/** + * @ingroup Common_register_group_W5300 + * @brief RX memory size of \c SOCKET 4 & 5 + * @details Refer to \ref RMS01R + */ +#define RMS45R (RMS01R + 4) + +/** + * @ingroup Common_register_group_W5300 + * @brief RX memory size of \c SOCKET 6 & 7 + * @details Refer to \ref RMS01R + */ +#define RMS67R (RMS01R + 6) + +/** + * @ingroup Common_register_group_W5300 + * @brief RX memory size of \c SOCKET 0. + * @details refer to \ref RMS01R + */ +#define RMSR0 RMS01R + +/** + * @ingroup Common_register_group_W5300 + * @brief RX memory size of \c SOCKET 1. + * @details refer to \ref RMS01R + */ +#define RMSR1 (RMSR0 + 1) + +/** + * @ingroup Common_register_group_5300 + * @brief RX memory size of \c SOCKET 2. + * @details refer to \ref RMS01R + */ +#define RMSR2 (RMSR0 + 2) + +/** + * @ingroup Common_register_group_W5300 + * @brief RX memory size of \c SOCKET 3. + * @details refer to \ref RMS01R + */ +#define RMSR3 (RMSR0 + 3) + +/** + * @ingroup Common_register_group_W5300 + * @brief RX memory size of \c SOCKET 4. + * @details refer to \ref RMS01R + */ +#define RMSR4 (RMSR0 + 4) + +/** + * @ingroup Common_register_group_W5300 + * @brief RX memory size of \c SOCKET 5. + * @details refer to \ref RMS01R + */ +#define RMSR5 (RMSR0 + 5) + +/** + * @ingroup Common_register_group_W5300 + * @brief RX memory size of \c SOCKET 6. + * @details refer to \ref RMS01R + */ +#define RMSR6 (RMSR0 + 6) + +/** + * @ingroup Common_register_group_W5300 + * @brief RX memory size of \c SOCKET 7. + * @details refer to \ref RMS01R + */ +#define RMSR7 (RMSR0 + 7) + + + +/** + * @ingroup Common_register_group_W5300 + * @brief Memory Type Register + * @details W5300’s 128Kbytes data memory (Internal TX/RX memory) is composed of 16 memory blocks + * of 8Kbytes. MTYPER configures type of each 8KB memory block in order to select RX or TX memory. + * The type of 8KB memory block corresponds to each bit of MTYPER. When the bit is ‘1’, it is used as TX + * memory, and the bit is ‘0’, it is used as RX memory. MTYPER is configured as TX memory type + * from the lower bit. The rest of the bits not configured as TX memory, should be set as ‘0’. + */ +#define MTYPER (_W5300_IO_BASE_ + 0x30) + +/** + * @ingroup Common_register_group_W5300 + * @brief PPPoE Authentication Type register + * @details It notifies authentication method negotiated with PPPoE server. + * W5300 supports 2 types of authentication methods. + * - PAP : 0xC023 + * - CHAP : 0xC223 + */ +#define PATR (_W5300_IO_BASE_ + 0x32) + +//#define PPPALGOR (_W5300_IO_BASE_ + 0x34) + +/** + * @ingroup Common_register_group_W5300 + * @brief PPP Link Control Protocol Request Timer Register + * @details It configures transmitting timer of link control protocol (LCP) echo request. Value 1 is about 25ms. + */ +#define PTIMER (_W5300_IO_BASE_ + 0x36) + +/** + * @ingroup Common_register_group_W5300 + * @brief PPP LCP magic number register + * @details It configures byte value to be used for 4bytes “Magic Number” during LCP negotiation with PPPoE server. + */ +#define PMAGICR (_W5300_IO_BASE_ + 0x38) + +//#define PSTATER (_W5300_IO_BASE_ + 0x3A) + +/** + * @ingroup Common_register_group_W5300 + * @brief PPPoE session ID register + * @details It notifies PPP session ID to be used for communication with PPPoE server (acquired by PPPoE-process of W5300). + */ +#define PSIDR (_W5300_IO_BASE_ + 0x3C) + +/** + * @ingroup Common_register_group_W5300 + * @brief PPPoE destination hardware address register + * @details It notifies hardware address of PPPoE server (acquired by PPPoE-process of W5300). + */ +#define PDHAR (_W5300_IO_BASE_ + 0x40) + +/** + * @ingroup Common_register_group_W5300 + * @brief Unreachable IP address register + * @details When trying to transmit UDP data to destination port number which is not open, + * W5300 can receive ICMP (Destination port unreachable) packet. \n + * In this case, \ref IR_DPUR bit of \ref IR becomes '1'. + * And destination IP address and unreachable port number of ICMP packet can be acquired through UIPR and \ref UPORTR. + */ +#define UIPR (_W5300_IO_BASE_ + 0x48) + +/** + * @ingroup Common_register_group_W5300 + * @brief Unreachable port number register + * @details Refer to \ref UIPR. + */ +#define UPORTR (_W5300_IO_BASE_ + 0x4C) + +/** + * @ingroup Common_register_group_W5300 + * @brief Fragment MTU register + * @details When communicating with the peer having a different MTU, W5300 can receive an ICMP(Fragment MTU) packet. + * At this case, IR(FMTU) becomes ‘1’ and destination IP address and fragment MTU value of ICMP packet can be acquired through UIPR and FMTUR. + * In order to keep communicating with the peer having Fragment MTU, set the FMTUR first in Sn_MSSR of the SOCKETn, and try the next communication. + */ +#define FMTUR (_W5300_IO_BASE_ + 0x4E) + +//#define Sn_RTCR(n) (_W5300_IO_BASE_ + 0x50 + n*2) + +/** + * @ingroup Common_register_group_W5300 + * @brief PIN 'BRDYn' configure register + * @details It configures the PIN "BRDYn" which is monitoring TX/RX memory status of the specified SOCKET. + * If the free buffer size of TX memory is same or bigger than the buffer depth of \ref Pn_BDPTHR, + * or received buffer size of RX memory is same or bigger than the \ref Pn_BDPTHR, + * PIN "BRDYn" is signaled. + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      15 14 13 12 11 10 9 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Reserved, Read as 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      PEN MT PPL Reserved SN
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * + * - \ref Pn_PEN Enable PIN 'BRDYn' (0 : Disable, 1 : Enable) + * - \ref Pn_MT Monitoring Memory type (0 : RX memory, 1 : TX Memory) + * - \ref Pn_PPL PIN Polarity bit of Pn_BRDYR. (0 : Low sensitive, 1 : High sensitive) + * - \ref Pn_SN(n) Monitoring SOCKET number of Pn_BRDYR + */ +#define Pn_BRDYR(n) (_W5300_IO_BASE_ + 0x60 + n*4) + +/** + * @ingroup Common_register_group_W5300 + * @brief PIN 'BRDYn' buffer depth Register + * @details It configures buffer depth of PIN "BRDYn". + * When monitoring TX memory and \ref Sn_TX_FSR is same or bigger than Pn_BDPTHR, the PIN "BRDYn" is signaled. + * When monitoring RX memory and if \ref Sn_RX_RSR is same or bigger than Pn_BDPTHR, PIN "BRDYn" is signaled. + * The value for Pn_BDPTHR can't exceed TX/RX memory size allocated by TMSR or RMSR such like as \ref TMS01R or \ref RMS01R. + */ +#define Pn_BDPTHR(n) (_W5300_IO_BASE_ + 0x60 + n*4 + 2) + +/** + * @ingroup Common_register_group_W5300 + * @brief W5300 identification register. + * @details Read Only. 0x5300. + */ +#define IDR (_W5300_IO_BASE_ + 0xFE) +#define VERSIONR IDR + + +//----------------------------- W5300 SOCKET Registers ----------------------------- + +/** + * @ingroup Socket_register_group_W5300 + * @brief Socket Mode register(R/W) + * @details @ref Sn_MR configures the option or protocol type of Socket n.\n\n + * Each bit of @ref Sn_MR defined as the following. + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      15 14 13 12 11 10 9 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Reserved. Read as 0 ALIGN
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      MULTI MF ND/IGMPv Reserved PROTOCOL[3:0]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - @ref Sn_MR_ALIGN : Alignment bit of Sn_MR, Only valid in \ref Sn_MR_TCP. (C0 : Include TCP PACK_INFO, 1 : Not include TCP PACK_INFO) + * - @ref Sn_MR_MULTI : Support UDP Multicasting + * - @ref Sn_MR_MF : Enable MAC Filter (0 : Disable, 1 - Enable), When enabled, W5300 can receive only both own and broadcast packet. + * - @ref Sn_MR_ND : No Delayed Ack(TCP) flag + * - @ref Sn_MR_IGMPv : IGMP version used in UDP mulitcasting. (0 : Version 2, 1 : Version 2) + * - PROTOCOL[3:0] + * + * + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Protocol[3] Protocol[2] Protocol[1] Protocol[0] @b Meaning
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 0 0 0 Closed
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 0 0 1 TCP
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 0 1 0 UDP
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 0 1 1 IPCRAW
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 1 0 0 MACRAW
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 1 0 1 PPPoE
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * + * - @ref Sn_MR_PPPoE : PPPoE + * - @ref Sn_MR_MACRAW : MAC LAYER RAW SOCK + * - @ref Sn_MR_IPRAW : IP LAYER RAW SOCK + * - @ref Sn_MR_UDP : UDP + * - @ref Sn_MR_TCP : TCP + * - @ref Sn_MR_CLOSE : Unused socket + * @note MACRAW mode should be only used in Socket 0. + */ +#define Sn_MR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x00) + +/** + * @ingroup Socket_register_group_W5300 + * @brief Socket command register(R/W) + * @details This is used to set the command for Socket n such as OPEN, CLOSE, CONNECT, LISTEN, SEND, and RECEIVE.\n + * After W5500 accepts the command, the @ref Sn_CR register is automatically cleared to 0x00. + * Even though @ref Sn_CR is cleared to 0x00, the command is still being processed.\n + * To check whether the command is completed or not, please check the @ref Sn_IR or @ref Sn_SR. + * - @ref Sn_CR_OPEN : Initialize or open socket. + * - @ref Sn_CR_LISTEN : Wait connection request in TCP mode(Server mode) + * - @ref Sn_CR_CONNECT : Send connection request in TCP mode(Client mode) + * - @ref Sn_CR_DISCON : Send closing request in TCP mode. + * - @ref Sn_CR_CLOSE : Close socket. + * - @ref Sn_CR_SEND : Update TX buffer pointer and send data. + * - @ref Sn_CR_SEND_MAC : Send data with MAC address, so without ARP process. + * - @ref Sn_CR_SEND_KEEP : Send keep alive message. + * - @ref Sn_CR_RECV : Update RX buffer pointer and receive data. + * - @ref Sn_CR_PCON : PPPoE connection begins by transmitting PPPoE discovery packet. + * - @ref Sn_CR_PDISCON : Closes PPPoE connection. + * - @ref Sn_CR_PCR : In each phase, it transmits REQ message. + * - @ref Sn_CR_PCN : In each phase, it transmits NAK message. + * - @ref Sn_CR_PCJ : In each phase, it transmits REJECT message. + */ +#define Sn_CR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x02) + +/** + * @ingroup Socket_register_group_W5300 + * @brief socket interrupt mask register(R) + * @details @ref Sn_IMR masks the interrupt of Socket n. + * Each bit corresponds to each bit of @ref Sn_IR. When a Socket n Interrupt is occurred and the corresponding bit of @ref Sn_IMR is + * the corresponding bit of @ref Sn_IR becomes When both the corresponding bit of @ref Sn_IMR and @ref Sn_IR are and the n-th bit of @ref IR is + * Host is interrupted by asserted INTn PIN to low. + */ +#define Sn_IMR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x04) + +/** + * @ingroup Socket_register_group_W5300 + * @brief Socket interrupt register(R) + * @details @ref Sn_IR indicates the status of Socket Interrupt such as establishment, termination, receiving data, timeout).\n + * When an interrupt occurs and the corresponding bit of @ref Sn_IMR is the corresponding bit of @ref Sn_IR becomes \n + * In order to clear the @ref Sn_IR bit, the host should write the bit to \n + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      15 14 13 12 11 10 9 8
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Reserved. Read as 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      PRECV PFAIL PNEXT SENDOK TIMEOUT RECV DISCON CON
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref Sn_IR_PRECV : PPP receive + * - \ref Sn_IR_PFAIL : PPP fail + * - \ref Sn_IR_PNEXT : PPP next phase + * - \ref Sn_IR_SENDOK : SENDOK + * - \ref Sn_IR_TIMEOUT : TIMEOUT + * - \ref Sn_IR_RECV : RECV + * - \ref Sn_IR_DISCON : DISCON + * - \ref Sn_IR_CON : CON + */ +#define Sn_IR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x06) + +/** + * @ingroup Socket_register_group_W5300 + * @brief Socket status register(R) + * @details @ref Sn_SSR indicates the status of Socket n.\n + * The status of Socket n is changed by @ref Sn_CR or some special control packet as SYN, FIN packet in TCP. + * @par Normal status + * - @ref SOCK_CLOSED : Closed + * - @ref SOCK_INIT : Initiate state + * - @ref SOCK_LISTEN : Listen state + * - @ref SOCK_ESTABLISHED : Success to connect + * - @ref SOCK_CLOSE_WAIT : Closing state + * - @ref SOCK_UDP : UDP socket + * - @ref SOCK_IPRAW : IPRAW socket + * - @ref SOCK_MACRAW : MAC raw mode socket + * - @ref SOCK_PPPoE : PPPoE mode Socket + *@par Temporary status during changing the status of Socket n. + * - @ref SOCK_SYNSENT : This indicates Socket n sent the connect-request packet (SYN packet) to a peer. + * - @ref SOCK_SYNRECV : It indicates Socket n successfully received the connect-request packet (SYN packet) from a peer. + * - @ref SOCK_FIN_WAIT : Connection state + * - @ref SOCK_CLOSING : Closing state + * - @ref SOCK_TIME_WAIT : Closing state + * - @ref SOCK_LAST_ACK : Closing state + * - @ref SOCK_ARP : ARP request state + */ +#define Sn_SSR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x08) +#define Sn_SR(n) Sn_SSR(n) ///< For Compatible ioLibrary. Refer to @ref Sn_SSR(n) + +/** + * @ingroup Socket_register_group_W5300 + * @brief source port register(R/W) + * @details @ref Sn_PORTR configures the source port number of Socket n. + * It is valid when Socket n is used in TCP/UPD mode. It should be set before OPEN command is ordered. + */ +#define Sn_PORTR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x0A) +#define Sn_PORT(n) Sn_PORTR(n) ///< For compatible ioLibrary. Refer to @ref Sn_PORTR(n). + +/** + * @ingroup Socket_register_group_W5300 + * @brief Peer MAC register address(R/W) + * @details @ref Sn_DHAR configures the destination hardware address of Socket n when using SEND_MAC command in UDP mode or + * it indicates that it is acquired in ARP-process by CONNECT/SEND command. + */ +#define Sn_DHAR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x0C) + +/** + * @ingroup Socket_register_group_W5300 + * @brief Peer port register address(R/W) + * @details @ref Sn_DPORTR configures or indicates the destination port number of Socket n. It is valid when Socket n is used in TCP/UDP mode. + * In TCP clientmode, it configures the listen port number of TCP serverbefore CONNECT command. + * In TCP Servermode, it indicates the port number of TCP client after successfully establishing connection. + * In UDP mode, it configures the port number of peer to be transmitted the UDP packet by SEND/SEND_MAC command. + */ +#define Sn_DPORTR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x12) +#define Sn_DPORT(n) Sn_DPORTR(n) ///< For compatible ioLibrary. Refer to \ref Sn_DPORTR. + + +/** + * @ingroup Socket_register_group_W5300 + * @brief Peer IP register address(R/W) + * @details @ref Sn_DIPR configures or indicates the destination IP address of Socket n. It is valid when Socket n is used in TCP/UDP mode. + * In TCP client mode, it configures an IP address of TCP serverbefore CONNECT command. + * In TCP server mode, it indicates an IP address of TCP clientafter successfully establishing connection. + * In UDP mode, it configures an IP address of peer to be received the UDP packet by SEND or SEND_MAC command. + */ + #define Sn_DIPR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x14) + +/** + * @ingroup Socket_register_group_W5300 + * @brief Maximum Segment Size(Sn_MSSR0) register address(R/W) + * @details @ref Sn_MSSR configures or indicates the MTU(Maximum Transfer Unit) of Socket n. + */ +#define Sn_MSSR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x18) + +/** + * @ingroup Socket_register_group_W5300 + * @brief Keep Alive Timer register(R/W) + * @details @ref Sn_KPALVTR configures the transmitting timer of KEEP ALIVE(KA)packet of SOCKETn. It is valid only in TCP mode, + * and ignored in other modes. The time unit is 5s. + * KA packet is transmittable after @ref Sn_SR is changed to SOCK_ESTABLISHED and after the data is transmitted or received to/from a peer at least once. + * In case of '@ref Sn_KPALVTR > 0', W5500 automatically transmits KA packet after time-period for checking the TCP connection (Auto-keepalive-process). + * In case of '@ref Sn_KPALVTR = 0', Auto-keep-alive-process will not operate, + * and KA packet can be transmitted by SEND_KEEP command by the host (Manual-keep-alive-process). + * Manual-keep-alive-process is ignored in case of '@ref Sn_KPALVTR > 0'. + */ +#define Sn_KPALVTR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x1A) + +/** + * @ingroup Socket_register_group_W5300 + * @brief IP Protocol(PROTO) Register(R/W) + * @details \ref Sn_PROTO that sets the protocol number field of the IP header at the IP layer. It is + * valid only in IPRAW mode, and ignored in other modes. + */ +#define Sn_PROTOR(n) Sn_KPALVTR(n) + + +/** + * @ingroup Socket_register_group_W5300 + * @brief IP Type of Service(TOS) Register(R/W) + * @details @ref Sn_TOSR configures the TOS(Type Of Service field in IP Header) of Socket n. + * It is set before OPEN command. + */ +#define Sn_TOSR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x1C) +#define Sn_TOS(n) Sn_TOSR(n) ///< For compatible ioLibrary. Refer to Sn_TOSR + +/** + * @ingroup Socket_register_group_W5300 + * @brief IP Time to live(TTL) Register(R/W) + * @details @ref Sn_TTLR configures the TTL(Time To Live field in IP header) of Socket n. + * It is set before OPEN command. + */ +#define Sn_TTLR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x1E) +#define Sn_TTL(n) Sn_TTLR(n) ///< For compatible ioLibrary. Refer to Sn_TTLR + +/** + * @ingroup Socket_register_group_W5300 + * @brief SOCKETn TX write size register(R/W) + * @details It sets the byte size of the data written in internal TX memory through @ref Sn_TX_FIFOR. + * It is set before SEND or SEND_MAC command, and can't be bigger than internal TX memory + * size set by TMSR such as @ref TMS01R, TMS23R and etc. + */ +#define Sn_TX_WRSR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x20) + +/** + * @ingroup Socket_register_group_W5300 + * @brief Transmit free memory size register(R) + * @details Sn_TX_FSR indicates the free size of Socket n TX Buffer Block. It is initialized to the configured size by TMSR such as @ref TMS01SR. + * Data bigger than Sn_TX_FSR should not be saved in the Socket n TX Buffer because the bigger data overwrites the previous saved data not yet sent. + * Therefore, check before saving the data to the Socket n TX Buffer, and if data is equal or smaller than its checked size, + * transmit the data with SEND/SEND_MAC command after saving the data in Socket n TX buffer. But, if data is bigger than its checked size, + * transmit the data after dividing into the checked size and saving in the Socket n TX buffer. + */ +#define Sn_TX_FSR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x0024) + +/** + * @ingroup Socket_register_group_w5300 + * @brief Received data size register(R) + * @details @ref Sn_RX_RSR indicates the data size received and saved in Socket n RX Buffer. + * @ref Sn_RX_RSR does not exceed the RMSR such as @ref RMS01SR and is calculated as the difference between + * ?Socket n RX Write Pointer (@ref Sn_RX_WR)and Socket n RX Read Pointer (@ref Sn_RX_RD) + */ +#define Sn_RX_RSR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x0028) + +/** + * @ingroup Socket_register_group_W5300 + * @brief Fragment field value in IP header register(R/W) + * @details @ref Sn_FRAGR configures the FRAG(Fragment field in IP header). + */ +#define Sn_FRAGR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x002C) +#define Sn_FRAG(n) Sn_FRAGR(n) + +/** + * @ingroup Socket_register_group_W5300 + * @brief SOCKET n TX FIFO regsiter + * @details It indirectly accesses internal TX memory of SOCKETn. + * The internal TX memory can't be accessed directly by the host, but can be accessed through Sn_TX_FIFOR. + * If @ref MR(MT) = '0', only the Host-Write of internal TX memory is allowed through Sn_TX_FIFOR. + * But if @ref MR(MT) is '1', both of Host-Read and Host-Write are allowed. + */ +#define Sn_TX_FIFOR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x2E) + +/** + * @ingroup Socket_register_group_W5300 + * @brief SOCKET n RX FIFO register + * @details It indirectly accesses to internal RX memory of SOCKETn. + * The internal RX memory can't be directly accessed by the host, but can be accessed through Sn_RX_FIFOR. + * If MR(MT) = '0', only the Host-Read of internal RX memory is allowed through Sn_RX_FIFOR. + * But if MR(MT) is '1', both of Host-Read and Host-Write are allowed. + */ +#define Sn_RX_FIFOR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x30) + +//#define Sn_TX_SADR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x32) + +//#define Sn_RX_SADR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x34) + +//#define Sn_TX_RD(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x36) + +//#define Sn_TX_WR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x38) + +//#define Sn_TX_ACK(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x3A) + +//#define Sn_RX_RD(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x3C) + +//#define Sn_RX_WR(n) (_W5300_IO_BASE_ + WIZCHIP_SREG_BLOCK(n) + 0x3E) + + +/************************************/ +/* The bit of MR regsiter defintion */ +/************************************/ +#define MR_DBW (1 << 15) /**< Data bus width bit of \ref MR. Read Only. (0 : 8Bit, 1 : 16Bit)*/ +#define MR_MPF (1 << 14) /**< Mac layer pause frame bit of \ref MR. (0 : Disable, 1 : Enable)*/ +#define MR_WDF(X) ((X & 0x07) << 11) /**< Write data fetch time bit of \ref MR. Fetch Data from DATA bus after PLL_CLK * MR_WDF[2:0]*/ +#define MR_RDH (1 << 10) /**< Read data hold time bit of \ref MR. Hold Data on DATA bus during 2 * PLL_CLK after CS high*/ +#define MR_FS (1 << 8) /**< FIFO swap bit of \ref MR. Swap MSB & LSB of \ref Sn_TX_FIFOR & Sn_RX_FIFOR (0 : No swap, 1 : Swap) */ +#define MR_RST (1 << 7) /**< S/W reset bit of \ref MR. (0 : Normal Operation, 1 : Reset (automatically clear after reset))*/ +#define MR_MT (1 << 5) /**< Memory test bit of \ref MR. (0 : Normal, 1 : Internal Socket memory write & read Test)*/ +#define MR_PB (1 << 4) /**< Ping block bit of \ref MR. (0 : Unblock, 1 : Block)*/ +#define MR_PPPoE (1 << 3) /**< PPPoE bit of \ref MR. (0 : No use PPPoE, 1: Use PPPoE)*/ +#define MR_DBS (1 << 2) /**< Data bus swap of \ref MR. Valid only 16bit mode (0 : No swap, 1 : Swap)*/ +#define MR_IND (1 << 0) /**< Indirect mode bit of \ref MR. (0 : Direct mode, 1 : Indirect mode) */ + + +/************************************/ +/* The bit of IR regsiter definition */ +/************************************/ +#define IR_IPCF (1 << 7) /**< IP conflict bit of \ref IR. To clear, Write the bit to '1'. */ +#define IR_DPUR (1 << 6) /**< Destination port unreachable bit of \ref IR. To clear, Write the bit to '1'. */ +#define IR_PPPT (1 << 5) /**< PPPoE terminate bit of \ref IR. To clear, Write the bit to '1'. */ +#define IR_FMTU (1 << 4) /**< Fragment MTU bit of IR. To clear, Write the bit to '1'. */ +#define IR_SnINT(n) (0x01 << n) /**< SOCKETn interrupt occurrence bit of \ref IR. To clear, Clear \ref Sn_IR*/ + +/*****************************************/ +/* The bit of Pn_BRDYR regsiter definition*/ +/*****************************************/ +#define Pn_PEN (1 << 7) /**< PIN 'BRDYn' enable bit of Pn_BRDYR. */ +#define Pn_MT (1 << 6) /**< PIN memory type bit of Pn_BRDYR. */ +#define Pn_PPL (1 << 5) /**< PIN Polarity bit of Pn_BRDYR. */ +#define Pn_SN(n) ((n & 0x07) << 0) /**< What socket to monitor. */ + + +/***************************************/ +/* The bit of Sn_MR regsiter definition */ +/***************************************/ +/** + * @brief Alignment bit of \ref Sn_MR. + * @details It is valid only in the TCP (\ref Sn_MR_TCP) with TCP communication, + * when every the received DATA packet size is of even number and set as '1', + * data receiving performance can be improved by removing PACKET-INFO(data size) that is attached to every the received DATA packet. + */ +#define Sn_MR_ALIGN (1 << 8) + +/** + * @brief Multicasting bit of \ref Sn_MR + * @details It is valid only in UDP (\ref Sn_MR_UDP). + * In order to implement multicasting, set the IP address and port number in @ref Sn_DIPR and @ref Sn_DPORTR respectively before "OPEN" command(@ref Sn_CR_OPEN).\n + * 0 : Disable, 1 : Enable + */ +#define Sn_MR_MULTI (1 << 7) + +/** + * @brief MAC filter bit of \ref Sn_MR + * @details It is valid in MACRAW(@ref Sn_MR_MACRAW). + * When this bit is set as ‘1’, W5300 can receive packet that is belong in itself or broadcasting. + * When this bit is set as ‘0’, W5300 can receive all packets on Ethernet. + * When using the hybrid TCP/IP stack, it is recommended to be set as ‘1’ for reducing the receiving overhead of host. \n + * 0 : Disable, 1 : Enable + */ +#define Sn_MR_MF (1 << 6) + +/** + * @brief IGMP version bit of \ref Sn_MR + * details It is valid in case of @ref Sn_MR_MULTI='1' and UDP(@ref Sn_MR_UDP). + * It configures IGMP version to send IGMP message such as Join/Leave/Report to multicast-group. \n + * 0 : IGMPv2, 1 : IGMPv1 + */ +#define Sn_MR_IGMPv (1 << 5) +#define Sn_MR_MC Sn_MR_IGMPv ///< For compatible ioLibrary + +/** + * @brief No delayed ack bit of \ref Sn_MR + * @details It is valid in TCP(@ref Sn_MR_TCP). + * In case that it is set as '1', ACK packet is transmitted right after receiving DATA packet from the peer. + * It is recommended to be set as '1' for TCP performance improvement. + * In case that it is set as '0', ACK packet is transmitted after the time set in @ref _RTR_ regardless of DATA packet receipt.\n + * 0 : No use, 1 : Use + */ +#define Sn_MR_ND (1 << 5) + +/** + * @brief No mode + * @details This configures the protocol mode of Socket n. + * @sa Sn_MR + */ +#define Sn_MR_CLOSE 0x00 + +/** + * @brief TCP mode + * @details This configures the protocol mode of Socket n. + * @sa Sn_MR + */ +#define Sn_MR_TCP 0x01 + +/** + * @brief UDP mode + * @details This configures the protocol mode of Socket n. + * @sa Sn_MR + */ +#define Sn_MR_UDP 0x02 /**< Protocol bits of \ref Sn_MR. */ + +/** + * @brief IP LAYER RAW mode + * @details This configures the protocol mode of Socket n. + * @sa Sn_MR + */ +#define Sn_MR_IPRAW 0x03 /**< Protocol bits of \ref Sn_MR. */ + +/** + * @brief MAC LAYER RAW mode + * @details This configures the protocol mode of Socket 0. + * @sa Sn_MR + * @note MACRAW mode should be only used in Socket 0. + */ +#define Sn_MR_MACRAW 0x04 + +/** + * @brief PPPoE mode + * @details This configures the protocol mode of Socket 0. + * @sa Sn_MR + * @note PPPoE mode should be only used in Socket 0. + */ +#define Sn_MR_PPPoE 0x05 /**< Protocol bits of \ref Sn_MR. */ + +#define SOCK_STREAM Sn_MR_TCP /**< For Berkeley Socket API, Refer to @ref Sn_MR_TCP */ +#define SOCK_DGRAM Sn_MR_UDP /**< For Berkeley Socket API, Refer to @ref Sn_MR_UDP */ + + + +/******************************/ +/* The values of CR definition */ +/******************************/ +/** + * @brief Initialize or open a socket + * @details Socket n is initialized and opened according to the protocol selected in Sn_MR(P3:P0). + * The table below shows the value of @ref Sn_SR corresponding to @ref Sn_MR.\n + * + * + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \b Sn_MR (P[3:0]) \b Sn_SR
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_CLOSE (000)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_TCP (001) SOCK_INIT (0x13)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_UDP (010) SOCK_UDP (0x22)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_IPRAW (010) SOCK_IPRAW (0x32)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_MACRAW (100) SOCK_MACRAW (0x42)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_PPPoE (101) SOCK_PPPoE (0x5F)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + */ +#define Sn_CR_OPEN 0x01 + +/** + * @brief Wait connection request in TCP mode(Server mode) + * @details This is valid only in TCP mode (\ref Sn_MR(P3:P0) = \ref Sn_MR_TCP). + * In this mode, Socket n operates as a TCP serverand waits for connection-request (SYN packet) from any TCP client + * The @ref Sn_SR changes the state from \ref SOCK_INIT to \ref SOCKET_LISTEN. + * When a TCP clientconnection request is successfully established, + * the @ref Sn_SR changes from SOCK_LISTEN to SOCK_ESTABLISHED and the @ref Sn_IR(0) becomes + * But when a TCP clientconnection request is failed, @ref Sn_IR(3) becomes and the status of @ref Sn_SR changes to SOCK_CLOSED. + */ +#define Sn_CR_LISTEN 0x02 + +/** + * @brief Send connection request in TCP mode(Client mode) + * @details To connect, a connect-request (SYN packet) is sent to TCP serverconfigured by @ref Sn_DIPR & Sn_DPORT(destination address & port). + * If the connect-request is successful, the @ref Sn_SR is changed to @ref SOCK_ESTABLISHED and the Sn_IR(0) becomes \n\n + * The connect-request fails in the following three cases.\n + * 1. When a @b ARPTO occurs (@ref Sn_IR[3] = '1') because destination hardware address is not acquired through the ARP-process.\n + * 2. When a @b SYN/ACK packet is not received and @b TCPTO (Sn_IR(3) = )\n + * 3. When a @b RST packet is received instead of a @b SYN/ACK packet. In these cases, @ref Sn_SR is changed to @ref SOCK_CLOSED. + * @note This is valid only in TCP mode and operates when Socket n acts as TCP client + */ +#define Sn_CR_CONNECT 0x04 + +/** + * @brief Send closing request in TCP mode + * @details Regardless of TCP serveror TCP client the DISCON command processes the disconnect-process (b>Active close
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      or Passive close.\n + * @par Active close + * it transmits disconnect-request(FIN packet) to the connected peer\n + * @par Passive close + * When FIN packet is received from peer, a FIN packet is replied back to the peer.\n + * @details When the disconnect-process is successful (that is, FIN/ACK packet is received successfully), @ref Sn_SR is changed to @ref SOCK_CLOSED.\n + * Otherwise, @b TCPTO occurs (\ref Sn_IR[3]='1') and then @ref Sn_SR is changed to @ref SOCK_CLOSED. + * @note Valid only in TCP mode. + */ +#define Sn_CR_DISCON 0x08 + +/** + * @brief Close socket + * @details @ref Sn_SR is changed to @ref SOCK_CLOSED. + */ +#define Sn_CR_CLOSE 0x10 + +/** + * @brief Update TX buffer pointer and send data + * @details SEND command transmits all the data in the Socket n TX buffer thru @ref Sn_TX_FIFOR.\n + * For more details, please refer to Socket n TX Free Size Register (@ref Sn_TX_FSR) and Socket TX Write Size register (@ref Sn_TX_WRSR). + */ +#define Sn_CR_SEND 0x20 + +/** + * @brief Send data with MAC address, so without ARP process + * @details The basic operation is same as SEND.\n + * Normally SEND command transmits data after destination hardware address is acquired by the automatic ARP-process(Address Resolution Protocol).\n + * But SEND_MAC command transmits data without the automatic ARP-process.\n + * In this case, the destination hardware address is acquired from @ref Sn_DHAR configured by host, instead of APR-process. + * @note Valid only in UDP mode. + */ +#define Sn_CR_SEND_MAC 0x21 + +/** + * @brief Send keep alive message + * @details It checks the connection status by sending 1byte keep-alive packet.\n + * If the peer can not respond to the keep-alive packet during timeout time, the connection is terminated and the timeout interrupt will occur. + * @note Valid only in TCP mode. + */ +#define Sn_CR_SEND_KEEP 0x22 + +/** + * @brief Update RX buffer pointer and receive data + * @details RECV completes the processing of the received data in Socket n RX Buffer thru @ref Sn_RX_FIFOR).\n + * For more details, refer to Socket n RX Received Size Register (@ref Sn_RX_RSR) & @ref Sn_RX_FIFOR. + */ +#define Sn_CR_RECV 0x40 /**< RECV command value of \ref Sn_CR */ + +#define Sn_CR_PCON 0x23 /**< PPPoE connection begins by transmitting PPPoE discovery packet. Refer to \ref Sn_CR */ +#define Sn_CR_PDISCON 0x24 /**< Closes PPPoE connection. Refer to \ref Sn_CR */ +#define Sn_CR_PCR 0x25 /**< In each phase, it transmits REQ message. Refer to \ref Sn_CR */ +#define Sn_CR_PCN 0x26 /**< In each phase, it transmits NAK message. Refer to \ref Sn_CR */ +#define Sn_CR_PCJ 0x27 /**< In each phase, it transmits REJECT message. Refer to \ref Sn_CR */ + + +/*********************************/ +/* The values of Sn_IR definition */ +/*********************************/ +#define Sn_IR_PRECV 0x80 /**< It is set in the case that option data which is not supported is received. Refer to \ref Sn_IR */ +#define Sn_IR_PFAIL 0x40 /**< It is set in the case that PAP authentication is failed. Refer to \ref Sn_IR */ +#define Sn_IR_PNEXT 0x20 /**< It is set in the case that the phase is changed during PPPoE connection process. \ref Sn_IR */ +#define Sn_IR_SENDOK 0x10 /**< It is set when SEND command is completed. Refer to \ref Sn_IR */ +#define Sn_IR_TIMEOUT 0x08 /**< It is set when ARPTO or TCPTO is occured. Refer to \ref Sn_IR */ +#define Sn_IR_RECV 0x04 /**< It is set whenever data is received from a peer. Refer to \ref Sn_IR */ +#define Sn_IR_DISCON 0x02 /**< It is set when FIN or FIN/ACK packet is received from a peer. Refer to \ref Sn_IR */ +#define Sn_IR_CON 0x01 /**< It is set one time when the connection is successful and then @ref Sn_SR is changed to @ref SOCK_ESTABLISHED. */ + +/**********************************/ +/* The values of Sn_SSR definition */ +/**********************************/ +/** + * @brief The state of SOCKET intialized or closed + * @details This indicates that Socket n is released.\n + * When DICON, CLOSE command is ordered, or when a timeout occurs, it is changed to @ref SOCK_CLOSED regardless of previous status. + */ +#define SOCK_CLOSED 0x00 + +/** + * @brief The state of ARP process + * @details It is temporary state for getting a peer MAC address when TCP connect or UDP Data Send\n + * When DICON, CLOSE command is ordered, or when a timeout occurs, it is changed to @ref SOCK_CLOSED regardless of previous status. + */ +#define SOCK_ARP 0x01 /**< ARP-request is transmitted in order to acquire destination hardware address. */ + +/** + * @brief Initiate state in TCP. + * @details This indicates Socket n is opened with TCP mode.\n + * It is changed to @ref SOCK_INIT when \ref Sn_MR(P[3:0]) = '001' and OPEN command(\ref Sn_CR_OPEN) is ordered.\n + * After SOCK_INIT, user can use LISTEN(@ref Sn_CR_LISTEN)/CONNECT(@ref Sn_CR_CONNET) command. + */ +#define SOCK_INIT 0x13 + +/** + * @brief Listen state + * @details This indicates Socket n is operating as TCP servermode and waiting for connection-request (SYN packet) from a peer TCP client.\n + * It will change to @ref SOCK_ESTALBLISHED when the connection-request is successfully accepted.\n + * Otherwise it will change to @ref SOCK_CLOSED after TCPTO (@ref Sn_IR_TIMEOUT = '1') is occurred. + */ +#define SOCK_LISTEN 0x14 + +/** + * @brief Connection state + * @details This indicates Socket n sent the connect-request packet (SYN packet) to a peer.\n + * It is temporarily shown when @ref Sn_SR is changed from @ref SOCK_INIT to @ref SOCK_ESTABLISHED by @ref Sn_CR_CONNECT command.\n + * If connect-accept(SYN/ACK packet) is received from the peer at SOCK_SYNSENT, it changes to @ref SOCK_ESTABLISHED.\n + * Otherwise, it changes to @ref SOCK_CLOSED after TCPTO (@ref Sn_IR_TIMEOUT = '1') is occurred. + */ +#define SOCK_SYNSENT 0x15 + +/** + * @brief Connection state + * @details It indicates Socket n successfully received the connect-request packet (SYN packet) from a peer.\n + * If socket n sends the response (SYN/ACK packet) to the peer successfully, it changes to @ref SOCK_ESTABLISHED. \n + * If not, it changes to @ref SOCK_CLOSED after timeout (@ref Sn_IR_TIMEOUT = '1') is occurred. + */ +#define SOCK_SYNRECV 0x16 + +/** + * @brief Success to connect + * @details This indicates the status of the connection of Socket n.\n + * It changes to @ref SOCK_ESTABLISHED when the TCP SERVERprocessed the SYN packet from the TCP CLIENTduring @ref SOCK_LISTEN, or + * when the @ref Sn_CR_CONNECT command is successful.\n + * During @ref SOCK_ESTABLISHED, DATA packet can be transferred using @ref Sn_CR_SEND or @ref Sn_CR_RECV command. + */ +#define SOCK_ESTABLISHED 0x17 + +/** + * @brief Closing state + * @details These indicate Socket n is closing.\n + * These are shown in disconnect-process such as active-close and passive-close.\n + * When Disconnect-process is successfully completed, or when timeout(@ref Sn_CR_TIMTEOUT = '1') is occurred, these change to @ref SOCK_CLOSED. + */ +#define SOCK_FIN_WAIT 0x18 + +/** + * @brief Closing state + * @details These indicate Socket n is closing.\n + * These are shown in disconnect-process such as active-close and passive-close.\n + * When Disconnect-process is successfully completed, or when timeout occurs, these change to @ref SOCK_CLOSED. + */ +#define SOCK_CLOSING 0x1A + +/** + * @brief Closing state + * @details These indicate Socket n is closing.\n + * These are shown in disconnect-process such as active-close and passive-close.\n + * When Disconnect-process is successfully completed, or when timeout occurs, these change to @ref SOCK_CLOSED. + */ +#define SOCK_TIME_WAIT 0x1B + +/** + * @brief Closing state + * @details This indicates Socket n received the disconnect-request (FIN packet) from the connected peer.\n + * This is half-closing status, and data can be transferred.\n + * For full-closing, @ref Sn_CR_DISCON command is used. But For just-closing, @ref Sn_CR_CLOSE command is used. + */ +#define SOCK_CLOSE_WAIT 0x1C + +/** + * @brief Closing state + * @details This indicates Socket n is waiting for the response (FIN/ACK packet) to the disconnect-request (FIN packet) by passive-close.\n + * It changes to @ref SOCK_CLOSED when Socket n received the response successfully, or when timeout (@ref Sn_IR_TIMEOUT = '1') is occurred. + */ +#define SOCK_LAST_ACK 0x1D + +/** + * @brief UDP socket + * @details This indicates Socket n is opened in UDP mode(@ref Sn_MR(P[3:0]) = '010').\n + * It changes to SOCK_UDP when @ref Sn_MR(P[3:0]) = '010' and @ref Sn_CR_OPEN command is ordered.\n + * Unlike TCP mode, data can be transfered without the connection-process. + */ +#define SOCK_UDP 0x22 + +/** + * @brief IP raw mode socket + * @details TThe socket is opened in IPRAW mode. The SOCKET status is change to SOCK_IPRAW when @ref Sn_MR (P3:P0) is + * Sn_MR_IPRAW and @ref Sn_CR_OPEN command is used.\n + * IP Packet can be transferred without a connection similar to the UDP mode. +*/ +#define SOCK_IPRAW 0x32 + +/** + * @brief MAC raw mode socket + * @details This indicates Socket 0 is opened in MACRAW mode (@ref Sn_MR(P[3:0]) = '100' and n = 0) and is valid only in Socket 0.\n + * It changes to SOCK_MACRAW when @ref Sn_MR(P[3:0] = 100)and @ ref Sn_CR_OPEN command is ordered.\n + * Like UDP mode socket, MACRAW mode Socket 0 can transfer a MAC packet (Ethernet frame) without the connection-process. + */ +#define SOCK_MACRAW 0x42 /**< SOCKET0 is open as MACRAW mode. */ + +/** + * @brief PPPoE mode socket + * @details It is the status that SOCKET0 is opened as PPPoE mode. + * It is changed to SOCK_PPPoE in case of @ref Sn_CR_OPEN command is ordered and @ref Sn_MR(P3:P0)= @ref Sn_MR_PPPoE\n + * It is temporarily used at the PPPoE connection. + */ +#define SOCK_PPPoE 0x5F /**< SOCKET0 is open as PPPoE mode. */ + +/* IP PROTOCOL */ +#define IPPROTO_IP 0 //< Dummy for IP +#define IPPROTO_ICMP 1 //< Control message protocol +#define IPPROTO_IGMP 2 //< Internet group management protocol +#define IPPROTO_GGP 3 //< Gateway^2 (deprecated) +#define IPPROTO_TCP 6 //< TCP +#define IPPROTO_PUP 12 //< PUP +#define IPPROTO_UDP 17 //< UDP +#define IPPROTO_IDP 22 //< XNS idp +#define IPPROTO_ND 77 //< UNOFFICIAL net disk protocol +#define IPPROTO_RAW 255 //< Raw IP packet + + +/** + * @brief Enter a critical section + * + * @details It is provided to protect your shared code which are executed without distribution. \n \n + * + * In non-OS environment, It can be just implemented by disabling whole interrupt.\n + * In OS environment, You can replace it to critical section api supported by OS. + * + * \sa WIZCHIP_READ(), WIZCHIP_WRITE() + * \sa WIZCHIP_CRITICAL_EXIT() + */ +#define WIZCHIP_CRITICAL_ENTER() WIZCHIP.CRIS._enter() + +#ifdef _exit +#undef _exit +#endif + +/** + * @brief Exit a critical section + * + * @details It is provided to protect your shared code which are executed without distribution. \n\n + * + * In non-OS environment, It can be just implemented by disabling whole interrupt. \n + * In OS environment, You can replace it to critical section api supported by OS. + * + * @sa WIZCHIP_READ(), WIZCHIP_WRITE() + * @sa WIZCHIP_CRITICAL_ENTER() + */ +#define WIZCHIP_CRITICAL_EXIT() WIZCHIP.CRIS._exit() + +//////////////////////// +// Basic I/O Function // +//////////////////////// + +/** + * @ingroup Basic_IO_function_W5300 + * @brief It reads 1 byte value from a register. + * @param AddrSel Register address + * @return The value of register + */ +uint16_t WIZCHIP_READ (uint32_t AddrSel); + +/** + * @ingroup Basic_IO_function_W5300 + * @brief It writes 1 byte value to a register. + * @param AddrSel Register address + * @param wb Write data + * @return void + */ +void WIZCHIP_WRITE(uint32_t AddrSel, uint16_t wb ); + +/*********************************** + * COMMON Register Access Function * + ***********************************/ + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set Mode Register + * @param (@ref iodata_t)mr The value to be set. + * @sa getMR() + */ +#if (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_BUS_) + #if (_WIZCHIP_IO_BUS_WIDTH_ == 8) + #define setMR(mr) \ + (*((uint8_t*)MR) = (uint8_t)((mr) >> 8)); (*((uint8_t*)WIZCHIP_OFFSET_INC(MR,1)) = (uint8_t)((mr) & 0xFF)) + #elif (_WIZCHIP_IO_BUS_WIDTH_ == 16) + #define setMR(mr) (*((uint16_t*)MR) = (uint16_t)((mr) & 0xFFFF)) + #else + #error "Unknown _WIZCHIP_IO_BUS_WIDTH_. You should be define _WIZCHIP_IO_BUS_WIDTH as 8 or 16." + #endif +#else + #error "Unknown _WIZCHIP_IO_MODE_" +#endif + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref MR. + * @return @ref iodata_t. The value of Mode register. + * @sa setMR() + */ +#if (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_BUS_) + #if (_WIZCHIP_IO_BUS_WIDTH_ == 8) + #define getMR() (((uint16_t)(*((uint8_t*)MR)) << 8) + (((uint16_t)(*((uint8_t*)WIZCHIP_OFFSET_INC(MR,1)))) & 0x00FF)) + #elif(_WIZCHIP_IO_BUS_WIDTH_ == 16) + #define getMR() (*((uint16_t*)MR)) + #else + #error "Unknown _WIZCHIP_IO_BUS_WIDTH_. You should be define _WIZCHIP_IO_BUS_WIDTH as 8 or 16." + #endif +#else + #error "Unknown _WIZCHIP_IO_MODE_" +#endif + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set \ref IR register + * @param (uint16_t)ir Value to set \ref IR register. + * @sa getIR() + */ +#define setIR(ir) \ + WIZCHIP_WRITE(IR, ir & 0xF0FF) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get \ref IR register + * @return uint8_t. Value of \ref IR register. + * @sa setIR() + */ +#define getIR() \ + (WIZCHIP_READ(IR) & 0xF0FF) + + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set \ref _IMR_ register + * @param (uint16_t)imr Value to set @ref _IMR_ register. + * @sa getIMR() + */ +#define setIMR(imr) \ + WIZCHIP_WRITE(_IMR_, imr & 0xF0FF) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get \ref _IMR_ register + * @return uint16_t. Value of \ref IR register. + * @sa setIMR() + */ +#define getIMR() \ + (WIZCHIP_READ(_IMR_) & 0xF0FF) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set local MAC address + * @param (uint8_t*)shar Pointer variable to set local MAC address. It should be allocated 6 bytes. + * @sa getSHAR() + */ +#define setSHAR(shar) { \ + WIZCHIP_WRITE(SHAR, (((uint16_t)((shar)[0])) << 8) + (((uint16_t)((shar)[1])) & 0x00FF)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(SHAR,2), (((uint16_t)((shar)[2])) << 8) + (((uint16_t)((shar)[3])) & 0x00FF)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(SHAR,4), (((uint16_t)((shar)[4])) << 8) + (((uint16_t)((shar)[5])) & 0x00FF)); \ + } + +/** + * @ingroup Common_register_access_function + * @brief Get local MAC address + * @param (uint8_t*)shar Pointer variable to get local MAC address. It should be allocated 6 bytes. + * @sa setSHAR() + */ +#define getSHAR(shar) { \ + (shar)[0] = (uint8_t)(WIZCHIP_READ(SHAR) >> 8); \ + (shar)[1] = (uint8_t)(WIZCHIP_READ(SHAR)); \ + (shar)[2] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(SHAR,2)) >> 8); \ + (shar)[3] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(SHAR,2))); \ + (shar)[4] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(SHAR,4)) >> 8); \ + (shar)[5] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(SHAR,4))); \ + } + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set gateway IP address + * @param (uint8_t*)gar Pointer variable to set gateway IP address. It should be allocated 4 bytes. + * @sa getGAR() + */ +#define setGAR(gar) { \ + WIZCHIP_WRITE(GAR, (((uint16_t)((gar)[0])) << 8) + (((uint16_t)((gar)[1])) & 0x00FF)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(GAR,2), (((uint16_t)((gar)[2])) << 8) + (((uint16_t)((gar)[3])) & 0x00FF)); \ + } + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get gateway IP address + * @param (uint8_t*)gar Pointer variable to get gateway IP address. It should be allocated 4 bytes. + * @sa setGAR() + */ +#define getGAR(gar) { \ + (gar)[0] = (uint8_t)(WIZCHIP_READ(GAR) >> 8); \ + (gar)[1] = (uint8_t)(WIZCHIP_READ(GAR)); \ + (gar)[2] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(GAR,2)) >> 8); \ + (gar)[3] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(GAR,2))); \ + } + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set subnet mask address + * @param (uint8_t*)subr Pointer variable to set subnet mask address. It should be allocated 4 bytes. + * @sa getSUBR() + */ +#define setSUBR(subr) { \ + WIZCHIP_WRITE(SUBR, (((uint16_t)((subr)[0])) << 8) + (((uint16_t)((subr)[1])) & 0x00FF)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(SUBR,2), (((uint16_t)((subr)[2])) << 8) + (((uint16_t)((subr)[3])) & 0x00FF)); \ + } + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get subnet mask address + * @param (uint8_t*)subr Pointer variable to get subnet mask address. It should be allocated 4 bytes. + * @sa setSUBR() + */ +#define getSUBR(subr) { \ + (subr)[0] = (uint8_t)(WIZCHIP_READ(SUBR) >> 8); \ + (subr)[1] = (uint8_t)(WIZCHIP_READ(SUBR)); \ + (subr)[2] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(SUBR,2)) >> 8); \ + (subr)[3] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(SUBR,2))); \ + } + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set local IP address + * @param (uint8_t*)sipr Pointer variable to set local IP address. It should be allocated 4 bytes. + * @sa getSIPR() + */ +#define setSIPR(sipr) { \ + WIZCHIP_WRITE(SIPR, (((uint16_t)((sipr)[0])) << 8) + (((uint16_t)((sipr)[1])) & 0x00FF)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(SIPR,2), (((uint16_t)((sipr)[2])) << 8) + (((uint16_t)((sipr)[3])) & 0x00FF)); \ + } + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get local IP address + * @param (uint8_t*)sipr Pointer variable to get local IP address. It should be allocated 4 bytes. + * @sa setSIPR() + */ +#define getSIPR(sipr) { \ + (sipr)[0] = (uint8_t)(WIZCHIP_READ(SIPR) >> 8); \ + (sipr)[1] = (uint8_t)(WIZCHIP_READ(SIPR)); \ + (sipr)[2] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(SIPR,2)) >> 8); \ + (sipr)[3] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(SIPR,2))); \ + } + + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set @ref _RTR_ register + * @param (uint16_t)rtr Value to set @ref _RTR_ register. + * @sa getRTR() + */ +#define setRTR(rtr) \ + WIZCHIP_WRITE(_RTR_, rtr) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref _RTR_ register + * @return uint16_t. Value of @ref _RTR_ register. + * @sa setRTR() + */ +#define getRTR() \ + WIZCHIP_READ(_RTR_) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set @ref _RCR_ register + * @param (uint8_t)rcr Value to set @ref _RCR_ register. + * @sa getRCR() + */ +#define setRCR(rcr) \ + WIZCHIP_WRITE(_RCR_, ((uint16_t)rcr)&0x00FF) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref _RCR_ register + * @return uint8_t. Value of @ref _RCR_ register. + * @sa setRCR() + */ +#define getRCR() \ + ((uint8_t)(WIZCHIP_READ(_RCR_) & 0x00FF)) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set @ref TMS01R register + * @param (uint16_t)tms01r Value to set @ref TMS01R register. The lower socket memory size is located at MSB of tms01r. + * @sa getTMS01R() + */ +#define setTMS01R(tms01r) \ + WIZCHIP_WRITE(TMS01R,tms01r) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref TMS01R register + * @return uint16_t. Value of @ref TMS01R register. + * @sa setTMS01R() + */ +#define getTMS01R() \ + WIZCHIP_READ(TMS01R) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set @ref TMS23R register + * @param (uint16_t)tms23r Value to set @ref TMS23R register. The lower socket memory size is located at MSB of tms01r. + * @sa getTMS23R() + */ +#define setTMS23R(tms23r) \ + WIZCHIP_WRITE(TMS23R,tms23r) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref TMS23R register + * @return uint16_t. Value of @ref TMS23R register. + * @sa setTMS23R() + */ +#define getTMS23R() \ + WIZCHIP_READ(TMS23R) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set @ref TMS45R register + * @param (uint16_t)tms45r Value to set @ref TMS45R register. The lower socket memory size is located at MSB of tms45r. + * @sa getTMS45R() + */ +#define setTMS45R(tms45r) \ + WIZCHIP_WRITE(TMS45R,tms45r) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref TMS45R register + * @return uint16_t. Value of @ref TMS45R register. + * @sa setTMS45R() + */ +#define getTMS45R() \ + WIZCHIP_READ(TMS45R) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set @ref TMS67R register + * @param (uint16_t)tms67r Value to set @ref TMS67R register. The lower socket memory size is located at MSB of tms67r. + * @sa getTMS67R() + */ +#define setTMS67R(tms67r) \ + WIZCHIP_WRITE(TMS67R,tms67r) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref TMS67R register + * @return uint16_t. Value of @ref TMS67R register. + * @sa setTMS67R() + */ +#define getTMS67R() \ + WIZCHIP_READ(TMS67R) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set @ref TMSR0 ~ @ref TMSR7 register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t)tmsr Value to set @ref TMSR0 ~@ref TMSR7 register. + * @sa getTMSR() + */ +void setTMSR(uint8_t sn,uint8_t tmsr); +#define setSn_TXBUF_SIZE(sn, tmsr) setTMSR(sn, tmsr) ///< For compatible ioLibrary + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref TMSR0 ~ @ref TMSR7 register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of @ref TMSR0 ~ @ref TMSR7 + * @sa getTMSR() + */ +uint8_t getTMSR(uint8_t sn); +#define getSn_TXBUF_SIZE(sn) getTMSR(sn) ///< For compatible ioLibrary + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set @ref RMS01R register + * @param (uint16_t)rms01r Value to set @ref RMS01R register. The lower socket memory size is located at MSB of rms01r. + * @sa getRMS01R() + */ +#define setRMS01R(rms01r) \ + WIZCHIP_WRITE(RMS01R,rms01r) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref RMS01R register + * @return uint16_t. Value of @ref RMS01R register. + * @sa setRMS01R() + */ +#define getRMS01R() \ + WIZCHIP_READ(RMS01R) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set @ref RMS23R register + * @param (uint16_t)rms23r Value to set @ref RMS23R register. The lower socket memory size is located at MSB of rms01r. + * @sa getRMS23R() + */ +#define setRMS23R(rms23r) \ + WIZCHIP_WRITE(RMS23R,rms23r) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref RMS23R register + * @return uint16_t. Value of @ref RMS23R register. + * @sa setRMS23R() + */ +#define getRMS23R() \ + WIZCHIP_READ(RMS23R) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set @ref RMS45R register + * @param (uint16_t)rms45r Value to set @ref RMS45R register. The lower socket memory size is located at MSB of rms45r. + * @sa getRMS45R() + */ +#define setRMS45R(rms45r) \ + WIZCHIP_WRITE(RMS45R,rms45r) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref RMS45R register + * @return uint16_t. Value of @ref RMS45R register. + * @sa setRMS45R() + */ +#define getRMS45R() \ + WIZCHIP_READ(RMS45R) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set @ref RMS67R register + * @param (uint16_t)rms67r Value to set @ref RMS67R register. The lower socket memory size is located at MSB of rms67r. + * @sa getRMS67R() + */ +#define setRMS67R(rms67r) \ + WIZCHIP_WRITE(RMS67R,rms67r) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref RMS67R register + * @return uint16_t. Value of @ref RMS67R register. + * @sa setRMS67R() + */ +#define getRMS67R() \ + WIZCHIP_READ(RMS67R) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set @ref RMS01R ~ @ref RMS67R register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t)rmsr Value to set @ref RMSR0 ~@ref RMSR7 register. + * @sa getTMSR() + */ +void setRMSR(uint8_t sn,uint8_t rmsr); +#define setSn_RXBUF_SIZE(sn,rmsr) setRMSR(sn, rmsr) ///< For compatible ioLibrary + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref RMS01R ~ @ref RMS67R register + * @param (uint8_t)sn Socket number. It shoudl be 0 ~ 7. + * @return uint8_t. Value of @ref RMSR0 ~ @ref RMSR7 register. + * @sa setRMSR() + */ +uint8_t getRMSR(uint8_t sn); +#define getSn_RXBUF_SIZE(sn) getRMSR(sn) ///< For compatible ioLibrary + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set @ref MTYPER register + * @param (uint16_t)mtyper Value to set @ref MTYPER register. + * @sa getMTYPER() + */ +#define setMTYPER(mtype) \ + WIZCHIP_WRITE(MTYPER, mtype) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref MTYPER register + * @return uint16_t. Value of @ref MTYPER register. + * @sa setMTYPER() + */ +#define getMTYPER() \ + WIZCHIP_READ(MTYPER) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref RATR register + * @return uint16_t. Value of @ref PATR register. + */ +#define getPATR() \ + WIZCHIP_READ(PATR) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set @ref PTIMER register + * @param (uint8_t)ptimer Value to set @ref PTIMER register. + * @sa getPTIMER() + */ +#define setPTIMER(ptimer) \ + WIZCHIP_WRITE(PTIMER, ((uint16_t)ptimer) & 0x00FF) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref PTIMER register + * @return uint8_t. Value of @ref PTIMER register. + * @sa setPTIMER() + */ +#define getPTIMER() \ + ((uint8_t)(WIZCHIP_READ(PTIMER) & 0x00FF)) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set @ref PMAGIC register + * @param (uint8_t)pmagic Value to set @ref PMAGIC register. + * @sa getPMAGIC() + */ +#define setPMAGIC(pmagic) \ + WIZCHIP_WRITE(PMAGIC, ((uint16_t)pmagic) & 0x00FF) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref PMAGIC register + * @return uint8_t. Value of @ref PMAGIC register. + * @sa setPMAGIC() + */ +#define getPMAGIC() \ + ((uint8_t)(WIZCHIP_READ(PMAGIC) & 0x00FF)) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref PSID register + * @return uint16_t. Value of @ref PSID register. + */ +#define getPSIDR() \ + WIZCHIP_READ(PSIDR) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref PDHAR register + * @param (uint8_t*)pdhar Pointer variable to PPP destination MAC register address. It should be allocated 6 bytes. + */ +#define getPDHAR(pdhar) { \ + (pdhar)[0] = (uint8_t)(WIZCHIP_READ(PDHAR) >> 8); \ + (pdhar)[1] = (uint8_t)(WIZCHIP_READ(PDHAR)); \ + (pdhar)[2] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(PDHAR,2)) >> 8); \ + (pdhar)[3] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(PDHAR,2))); \ + (pdhar)[4] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(PDHAR,4)) >> 8); \ + (pdhar)[5] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(PDHAR,4))); \ + } + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get unreachable IP address. @ref UIPR + * @param (uint8_t*)uipr Pointer variable to get unreachable IP address. It should be allocated 4 bytes. + */ +#define getUIPR(uipr) { \ + (uipr)[0] = (uint8_t)(WIZCHIP_READ(UIPR) >> 8); \ + (uipr)[1] = (uint8_t)(WIZCHIP_READ(UIPR)); \ + (uipr)[2] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(UIPR,2)) >> 8); \ + (uipr)[3] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(UIPR,2))); \ + } + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref UPORTR register + * @return uint16_t. Value of @ref UPORTR register. + */ +#define getUPORTR() \ + WIZCHIP_READ(UPORTR) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref FMTUR register + * @return uint16_t. Value of @ref FMTUR register. + */ +#define getFMTUR() \ + WIZCHIP_READ(FMTUR) + + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref Pn_BRDYR register + * @return uint8_t. Value of @ref Pn_BRDYR register. + */ +#define getPn_BRDYR(p) \ + ((uint8_t)(WIZCHIP_READ(Pn_BRDYR(p)) & 0x00FF)) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set @ref Pn_BRDYR register + * @param p Pin number (p = 0,1,2,3) + * @param brdyr Set a value @ref Pn_BRDYR(p). + */ +#define setPn_BRDYR(p, brdyr) \ + WIZCHIP_WRITE(Pn_BRDYR(p), brdyr & 0x00E7) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref Pn_BDPTHR register + * @param p Pin number (p = 0,1,2,3) + * @return uint16_t. Value of @ref Pn_BDPTHR register. + */ +#define getPn_BDPTHR(p) \ + WIZCHIP_READ(Pn_BDPTHR(p)) + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Set @ref Pn_BDPTHR register + * @param p Pin number (p = 0,1,2,3) + * @param bdpthr Value of @ref Pn_BDPTHR + */ +#define setPn_BDPTHR(p, bdpthr) \ + WIZCHIP_WRITE(Pn_BDPTHR(p),bdpthr) + + +/** + * @ingroup Common_register_access_function_W5300 + * @brief Get @ref IDR register + * @return uint16_t. Always 0x5300. + */ +#define getIDR() \ + WIZCHIP_READ(IDR) + + +/*********************************** + * SOCKET Register Access Function * + ***********************************/ + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Set @ref Sn_MR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t)mr Value to set @ref Sn_MR + * @sa getSn_MR() + */ +#define setSn_MR(sn, mr) \ + WIZCHIP_WRITE(Sn_MR(sn),mr) + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_MR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of @ref Sn_MR. + * @sa setSn_MR() + */ +#define getSn_MR(sn) \ + WIZCHIP_READ(Sn_MR(sn)) + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Set @ref Sn_CR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t)cr Value to set @ref Sn_CR + * @sa getSn_CR() + */ +#define setSn_CR(sn, cr) \ + WIZCHIP_WRITE(Sn_CR(sn), ((uint16_t)cr) & 0x00FF) + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_CR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of @ref Sn_CR. + * @sa setSn_CR() + */ +#define getSn_CR(sn) \ + ((uint8_t)WIZCHIP_READ(Sn_CR(sn))) + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Set @ref Sn_IMR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t)imr Value to set @ref Sn_IMR + * @sa getSn_IMR() + */ +#define setSn_IMR(sn, imr) \ + WIZCHIP_WRITE(Sn_IMR(sn), ((uint16_t)imr) & 0x00FF) + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_IMR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of @ref Sn_IMR. + * @sa setSn_IMR() + */ +#define getSn_IMR(sn) \ + ((uint8_t)WIZCHIP_READ(Sn_IMR(sn))) + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Set @ref Sn_IR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t)ir Value to set @ref Sn_IR + * @sa getSn_IR() + */ +#define setSn_IR(sn, ir) \ + WIZCHIP_WRITE(Sn_IR(sn), ((uint16_t)ir) & 0x00FF) + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_IR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of @ref Sn_IR. + * @sa setSn_IR() + */ +#define getSn_IR(sn) \ + ((uint8_t)WIZCHIP_READ(Sn_IR(sn))) + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_SR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of @ref Sn_SR. + */ +#define getSn_SSR(sn) \ + ((uint8_t)WIZCHIP_READ(Sn_SR(sn))) +#define getSn_SR(sn) getSn_SSR(sn) ///< For compatible ioLibrary. Refer to getSn_SSR(). + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Set @ref Sn_PORTR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint16_t)port Variable to set @ref Sn_PORTR. + * @sa getSn_PORTR() + */ +#define setSn_PORTR(sn, port) \ + WIZCHIP_WRITE(Sn_PORTR(sn), port) +#define setSn_PORT(sn, port) setSn_PORTR(sn, port) ///< For compatible ioLibrary + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_PORTR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint16_t. Variable of @ref Sn_PORTR. + * @sa setSn_PORTR() + */ +#define getSn_PORTR(sn) \ + WIZCHIP_READ(Sn_PORTR(sn)) +#define getSn_PORT(sn) getSn_PORTR(sn) ///< For compatible ioLibrary + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Set @ref Sn_DHAR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t*)dhar Pointer variable to set socket n destination hardware address. It should be allocated 6 bytes. + * @sa getSn_DHAR() + */ +#define setSn_DHAR(sn, dhar) { \ + WIZCHIP_WRITE(Sn_DHAR(sn), (((uint16_t)((dhar)[0])) << 8) + (((uint16_t)((dhar)[1])) & 0x00FF)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_DHAR(sn),2), (((uint16_t)((dhar)[0])) << 8) + (((uint16_t)((dhar)[1])) & 0x00FF)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_DHAR(sn),4), (((uint16_t)((dhar)[0])) << 8) + (((uint16_t)((dhar)[1])) & 0x00FF)); \ + } + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_MR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t*)dhar Pointer variable to get socket n destination hardware address. It should be allocated 6 bytes. + * @sa setSn_DHAR() + */ +#define getSn_DHAR(sn, dhar) { \ + (dhar)[0] = (uint8_t)(WIZCHIP_READ(Sn_DHAR(sn)) >> 8); \ + (dhar)[1] = (uint8_t) WIZCHIP_READ(Sn_DHAR(sn)); \ + (dhar)[2] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_DHAR(sn),2)) >> 8); \ + (dhar)[3] = (uint8_t) WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_DHAR(sn),2)); \ + (dhar)[4] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_DHAR(sn),4)) >> 8); \ + (dhar)[5] = (uint8_t) WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_DHAR(sn),4)); \ + } + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Set @ref Sn_DPORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint16_t)dport Value to set @ref Sn_DPORT + * @sa getSn_DPORT() + */ +#define setSn_DPORTR(sn, dport) \ + WIZCHIP_WRITE(Sn_DPORTR(sn),dport) +#define setSn_DPORT(sn, dport) setSn_DPORTR(sn,dport) ///< For compatible ioLibrary. Refer to @ref Sn_DPORTR. + + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_DPORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint16_t. Value of @ref Sn_DPORT. + * @sa setSn_DPORT() + * @note This function is not available because W5300 have a bug to read @ref Sn_DPORTR. \n + * Don't use this function. + */ +#define getSn_DPORTR(sn) \ + WIZCHIP_READ(Sn_DPORTR(sn)) +#define getSn_DPORT(sn) getSn_DPORTR(sn) ///< For compatible ioLibrary. Refer to @ref Sn_DPORTR. + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Set @ref Sn_DIPR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t*)dipr Pointer variable to set socket n destination IP address. It should be allocated 4 bytes. + * @sa getSn_DIPR() + */ +#define setSn_DIPR(sn, dipr) { \ + WIZCHIP_WRITE(Sn_DIPR(sn), (((uint16_t)((dipr)[0])) << 8) + (((uint16_t)((dipr)[1])) & 0x00FF)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_DIPR(sn),2), (((uint16_t)((dipr)[2])) << 8) + (((uint16_t)((dipr)[3])) & 0x00FF)); \ + } + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_DIPR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t*)dipr Pointer variable to get socket n destination IP address. It should be allocated 4 bytes. + * @sa setSn_DIPR() + */ +#define getSn_DIPR(sn, dipr) { \ + (dipr)[0] = (uint8_t)(WIZCHIP_READ(Sn_DIPR(sn)) >> 8); \ + (dipr)[1] = (uint8_t) WIZCHIP_READ(Sn_DIPR(sn)); \ + (dipr)[2] = (uint8_t)(WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_DIPR(sn),2)) >> 8); \ + (dipr)[3] = (uint8_t) WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_DIPR(sn),2)); \ + } + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Set @ref Sn_MSSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint16_t)mss Value to set @ref Sn_MSSR + * @sa setSn_MSSR() + */ +#define setSn_MSSR(sn, mss) \ + WIZCHIP_WRITE(Sn_MSSR(sn), mss) + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_MSSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint16_t. Value of @ref Sn_MSSR. + * @sa setSn_MSSR() + */ +#define getSn_MSSR(sn) \ + WIZCHIP_READ(Sn_MSSR(sn)) + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Set @ref Sn_KPALVTR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t)kpalvt Value to set @ref Sn_KPALVTR + * @sa getSn_KPALVTR() + */ +#define setSn_KPALVTR(sn, kpalvt) \ + WIZCHIP_WRITE(Sn_KPALVTR(sn), (WIZCHIP_READ(Sn_KPALVTR(sn)) & 0x00FF) | (((uint16_t)kpalvt)<<8)) + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_KPALVTR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of @ref Sn_KPALVTR. + * @sa setSn_KPALVTR() + */ +#define getSn_KPALVTR(sn) \ + ((uint8_t)(WIZCHIP_READ(Sn_KPALVTR(sn)) >> 8)) + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Set @ref Sn_PROTOR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)proto Value to set \ref Sn_PROTOR + * @sa getSn_PROTOR() + */ +#define setSn_PROTOR(sn, proto) \ + WIZCHIP_WRITE(Sn_PROTOR(sn),(WIZCHIP_READ(Sn_PROTOR(sn)) & 0xFF00) | (((uint16_t)proto) & 0x00FF)) +#define setSn_PROTO(sn,proto) setSn_PROTOR(sn,proto) ///< For compatible ioLibrary + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_PROTOR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return uint8_t. Value of @ref Sn_PROTOR. + * @sa setSn_PROTOR() + */ +#define getSn_PROTOR(sn) \ + ((uint8_t)WIZCHIP_READ(Sn_PROTOR(sn))) +#define getSn_PROTO(sn) getSn_PROTOR(sn) ///< For compatible ioLibrary + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Set @ref Sn_TX_WRSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint32_t)txwrs Value to set @ref Sn_KPALVTR (It should be <= 0x00010000) + * @sa getSn_TX_WRSR() + */ +#define setSn_TX_WRSR(sn, txwrs) { \ + WIZCHIP_WRITE(Sn_TX_WRSR(sn), (uint16_t)(((uint32_t)txwrs) >> 16)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_TX_WRSR(sn),2), (uint16_t)txwrs); \ + } + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_TX_WRSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint32_t. Value of Sn_TX_WRSR. + * @sa setSn_TX_WRSR() + */ +#define getSn_TX_WRSR(sn) \ + ( (((uint32_t)WIZCHIP_READ(Sn_TX_WRSR(sn))) << 16) + (((uint32_t)WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_WRSR(sn),1))) & 0x0000FFFF) ) + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_TX_FSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint32_t. Value of @ref Sn_TX_FSR. + */ +uint32_t getSn_TX_FSR(uint8_t sn); + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_RX_RSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint32_t. Value of @ref Sn_RX_RSR. + */ +uint32_t getSn_RX_RSR(uint8_t sn); + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Set @ref Sn_TX_FIFOR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint16_t)txfifo. Value to set @ref Sn_TX_FIFOR. + */ +#define setSn_TX_FIFOR(sn, txfifo) \ + WIZCHIP_WRITE(Sn_TX_FIFOR(sn), txfifo); + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_RX_FIFOR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint16_t. Value of @ref Sn_RX_FIFOR. + */ +#define getSn_RX_FIFOR(sn) \ + WIZCHIP_READ(Sn_RX_FIFOR(sn)); + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Set @ref Sn_TOSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param (uint8_t)tos Value to set @ref Sn_TOSR + * @sa getSn_TOSR() + */ +#define setSn_TOSR(sn, tos) \ + WIZCHIP_WRITE(Sn_TOS(sn), ((uint16_t)tos) & 0x00FF) +#define setSn_TOS(sn,tos) setSn_TOSR(sn,tos) ///< For compatible ioLibrar + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_TOSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_ . + * @return uint8_t. Value of Sn_TOSR. + * @sa setSn_TOSR() + */ +#define getSn_TOSR(sn) \ + ((uint8_t)WIZCHIP_READ(Sn_TOSR(sn))) +#define getSn_TOS(sn) getSn_TOSR(sn) ///< For compatible ioLibrar + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Set @ref Sn_TTLR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t)ttl Value to set @ref Sn_TTLR + * @sa getSn_TTLR() + */ +#define setSn_TTLR(sn, ttl) \ + WIZCHIP_WRITE(Sn_TTLR(sn), ((uint16_t)ttl) & 0x00FF) +#define setSn_TTL(sn,ttl) setSn_TTLR(sn,ttl) ///< For compatible ioLibrary + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_TTLR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of @ref Sn_TTLR. + * @sa setSn_TTLR() + */ +#define getSn_TTLR(sn) \ + ((uint8_t)WIZCHIP_READ(Sn_TTL(sn))) +#define getSn_TTL(sn) getSn_TTLR(sn) ///< For compatible ioLibrary + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Set @ref Sn_FRAGR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint16_t)frag Value to set @ref Sn_FRAGR + * @sa getSn_FRAGR() + */ +#define setSn_FRAGR(sn, frag) \ + WIZCHIP_WRITE(Sn_FRAGR(sn), ((uint16_t)frag) & 0x00FF) +#define setSn_FRAG(sn,frag) setSn_FRAGR(sn,flag) + +/** + * @ingroup Socket_register_access_function_W5300 + * @brief Get @ref Sn_FRAGR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint16_t. Value of @ref Sn_FRAGR. + * @sa setSn_FRAGR() + */ +#define getSn_FRAGR(sn) \ + (WIZCHIP_READ(Sn_FRAG(sn))) +#define getSn_FRAG(sn) getSn_FRAGR(sn) + + +///////////////////////////////////// +// Sn_TXBUF & Sn_RXBUF IO function // +///////////////////////////////////// + +/** + * @brief Socket_register_access_function_W5300 + * @brief Gets the max buffer size of socket sn passed as parameter. + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint32_t. Value of Socket n RX max buffer size. + */ +#define getSn_RxMAX(sn) \ + (((uint32_t)getSn_RXBUF_SIZE(sn)) << 10) + +/** + * @brief Socket_register_access_function_W5300 + * @brief Gets the max buffer size of socket sn passed as parameters. + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint32_t. Value of Socket n TX max buffer size. + */ +#define getSn_TxMAX(sn) \ + (((uint32_t)getSn_TXBUF_SIZE(sn)) << 10) + +/** + * @ingroup Basic_IO_function_W5300 + * @brief It copies data to internal TX memory + * + * @details This function reads the Tx write pointer register and after that, + * it copies the wizdata(pointer buffer) of the length of len(variable) bytes to internal TX memory + * and updates the Tx write pointer register. + * This function is being called by send() and sendto() function also. + * + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param wizdata Pointer buffer to write data + * @param len Data length + * @sa wiz_recv_data() + */ +void wiz_send_data(uint8_t sn, uint8_t *wizdata, uint32_t len); + +/** + * @ingroup Basic_IO_function_W5300 + * @brief It copies data to your buffer from internal RX memory + * + * @details This function read the Rx read pointer register and after that, + * it copies the received data from internal RX memory + * to wizdata(pointer variable) of the length of len(variable) bytes. + * This function is being called by recv() also. + * + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param wizdata Pointer buffer to read data + * @param len Data length + * @sa wiz_send_data() + */ +void wiz_recv_data(uint8_t sn, uint8_t *wizdata, uint32_t len); + +/** + * @ingroup Basic_IO_function_W5300 + * @brief It discard the received data in RX memory. + * @details It discards the data of the length of len(variable) bytes in internal RX memory. + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param len Data length + */ +void wiz_recv_ignore(uint8_t sn, uint32_t len); + +/// \cond DOXY_APPLY_CODE +#endif +/// \endcond + +#ifdef __cplusplus +} +#endif + +#endif // _W5300_H_ diff --git a/User/ioLibrary_Driver/Ethernet/W5500/w5500.c b/User/ioLibrary_Driver/Ethernet/W5500/w5500.c new file mode 100644 index 0000000..68d4cb8 --- /dev/null +++ b/User/ioLibrary_Driver/Ethernet/W5500/w5500.c @@ -0,0 +1,267 @@ +//***************************************************************************** +// +//! \file w5500.c +//! \brief W5500 HAL Interface. +//! \version 1.0.2 +//! \date 2013/10/21 +//! \par Revision history +//! <2015/02/05> Notice +//! The version history is not updated after this point. +//! Download the latest version directly from GitHub. Please visit the our GitHub repository for ioLibrary. +//! >> https://github.com/Wiznet/ioLibrary_Driver +//! <2014/05/01> V1.0.2 +//! 1. Implicit type casting -> Explicit type casting. Refer to M20140501 +//! Fixed the problem on porting into under 32bit MCU +//! Issued by Mathias ClauBen, wizwiki forum ID Think01 and bobh +//! Thank for your interesting and serious advices. +//! <2013/12/20> V1.0.1 +//! 1. Remove warning +//! 2. WIZCHIP_READ_BUF WIZCHIP_WRITE_BUF in case _WIZCHIP_IO_MODE_SPI_FDM_ +//! for loop optimized(removed). refer to M20131220 +//! <2013/10/21> 1st Release +//! \author MidnightCow +//! \copyright +//! +//! Copyright (c) 2013, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** +//#include +#include "w5500.h" + +#define _W5500_SPI_VDM_OP_ 0x00 +#define _W5500_SPI_FDM_OP_LEN1_ 0x01 +#define _W5500_SPI_FDM_OP_LEN2_ 0x02 +#define _W5500_SPI_FDM_OP_LEN4_ 0x03 + +#if (_WIZCHIP_ == 5500) +//////////////////////////////////////////////////// + +uint8_t WIZCHIP_READ(uint32_t AddrSel) +{ + uint8_t ret; + uint8_t spi_data[3]; + + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); + + AddrSel |= (_W5500_SPI_READ_ | _W5500_SPI_VDM_OP_); + + if(!WIZCHIP.IF.SPI._read_burst || !WIZCHIP.IF.SPI._write_burst) // byte operation + { + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); + } + else // burst operation + { + spi_data[0] = (AddrSel & 0x00FF0000) >> 16; + spi_data[1] = (AddrSel & 0x0000FF00) >> 8; + spi_data[2] = (AddrSel & 0x000000FF) >> 0; + WIZCHIP.IF.SPI._write_burst(spi_data, 3); + } + ret = WIZCHIP.IF.SPI._read_byte(); + + WIZCHIP.CS._deselect(); + WIZCHIP_CRITICAL_EXIT(); + return ret; +} + +void WIZCHIP_WRITE(uint32_t AddrSel, uint8_t wb ) +{ + uint8_t spi_data[4]; + + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); + + AddrSel |= (_W5500_SPI_WRITE_ | _W5500_SPI_VDM_OP_); + + //if(!WIZCHIP.IF.SPI._read_burst || !WIZCHIP.IF.SPI._write_burst) // byte operation + if(!WIZCHIP.IF.SPI._write_burst) // byte operation + { + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); + WIZCHIP.IF.SPI._write_byte(wb); + } + else // burst operation + { + spi_data[0] = (AddrSel & 0x00FF0000) >> 16; + spi_data[1] = (AddrSel & 0x0000FF00) >> 8; + spi_data[2] = (AddrSel & 0x000000FF) >> 0; + spi_data[3] = wb; + WIZCHIP.IF.SPI._write_burst(spi_data, 4); + } + + WIZCHIP.CS._deselect(); + WIZCHIP_CRITICAL_EXIT(); +} + +void WIZCHIP_READ_BUF (uint32_t AddrSel, uint8_t* pBuf, uint16_t len) +{ + uint8_t spi_data[3]; + uint16_t i; + + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); + + AddrSel |= (_W5500_SPI_READ_ | _W5500_SPI_VDM_OP_); + + if(!WIZCHIP.IF.SPI._read_burst || !WIZCHIP.IF.SPI._write_burst) // byte operation + { + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); + for(i = 0; i < len; i++) + pBuf[i] = WIZCHIP.IF.SPI._read_byte(); + } + else // burst operation + { + spi_data[0] = (AddrSel & 0x00FF0000) >> 16; + spi_data[1] = (AddrSel & 0x0000FF00) >> 8; + spi_data[2] = (AddrSel & 0x000000FF) >> 0; + WIZCHIP.IF.SPI._write_burst(spi_data, 3); + WIZCHIP.IF.SPI._read_burst(pBuf, len); + } + + WIZCHIP.CS._deselect(); + WIZCHIP_CRITICAL_EXIT(); +} + +void WIZCHIP_WRITE_BUF(uint32_t AddrSel, uint8_t* pBuf, uint16_t len) +{ + uint8_t spi_data[3]; + uint16_t i; + + WIZCHIP_CRITICAL_ENTER(); + WIZCHIP.CS._select(); + + AddrSel |= (_W5500_SPI_WRITE_ | _W5500_SPI_VDM_OP_); + + if(!WIZCHIP.IF.SPI._write_burst) // byte operation + { + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); + WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); + for(i = 0; i < len; i++) + WIZCHIP.IF.SPI._write_byte(pBuf[i]); + } + else // burst operation + { + spi_data[0] = (AddrSel & 0x00FF0000) >> 16; + spi_data[1] = (AddrSel & 0x0000FF00) >> 8; + spi_data[2] = (AddrSel & 0x000000FF) >> 0; + WIZCHIP.IF.SPI._write_burst(spi_data, 3); + WIZCHIP.IF.SPI._write_burst(pBuf, len); + } + + WIZCHIP.CS._deselect(); + WIZCHIP_CRITICAL_EXIT(); +} + + +uint16_t getSn_TX_FSR(uint8_t sn) +{ + uint16_t val=0,val1=0; + + do + { + val1 = WIZCHIP_READ(Sn_TX_FSR(sn)); + val1 = (val1 << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_FSR(sn),1)); + if (val1 != 0) + { + val = WIZCHIP_READ(Sn_TX_FSR(sn)); + val = (val << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_FSR(sn),1)); + } + }while (val != val1); + return val; +} + + +uint16_t getSn_RX_RSR(uint8_t sn) +{ + uint16_t val=0,val1=0; + + do + { + val1 = WIZCHIP_READ(Sn_RX_RSR(sn)); + val1 = (val1 << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RSR(sn),1)); + if (val1 != 0) + { + val = WIZCHIP_READ(Sn_RX_RSR(sn)); + val = (val << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RSR(sn),1)); + } + }while (val != val1); + return val; +} + +void wiz_send_data(uint8_t sn, uint8_t *wizdata, uint16_t len) +{ + uint16_t ptr = 0; + uint32_t addrsel = 0; + + if(len == 0) return; + ptr = getSn_TX_WR(sn); + //M20140501 : implict type casting -> explict type casting + //addrsel = (ptr << 8) + (WIZCHIP_TXBUF_BLOCK(sn) << 3); + addrsel = ((uint32_t)ptr << 8) + (WIZCHIP_TXBUF_BLOCK(sn) << 3); + // + WIZCHIP_WRITE_BUF(addrsel,wizdata, len); + + ptr += len; + setSn_TX_WR(sn,ptr); +} + +void wiz_recv_data(uint8_t sn, uint8_t *wizdata, uint16_t len) +{ + uint16_t ptr = 0; + uint32_t addrsel = 0; + + if(len == 0) return; + ptr = getSn_RX_RD(sn); + //M20140501 : implict type casting -> explict type casting + //addrsel = ((ptr << 8) + (WIZCHIP_RXBUF_BLOCK(sn) << 3); + addrsel = ((uint32_t)ptr << 8) + (WIZCHIP_RXBUF_BLOCK(sn) << 3); + // + WIZCHIP_READ_BUF(addrsel, wizdata, len); + ptr += len; + + setSn_RX_RD(sn,ptr); +} + + +void wiz_recv_ignore(uint8_t sn, uint16_t len) +{ + uint16_t ptr = 0; + + ptr = getSn_RX_RD(sn); + ptr += len; + setSn_RX_RD(sn,ptr); +} + +#endif diff --git a/User/ioLibrary_Driver/Ethernet/W5500/w5500.h b/User/ioLibrary_Driver/Ethernet/W5500/w5500.h new file mode 100644 index 0000000..3afc16e --- /dev/null +++ b/User/ioLibrary_Driver/Ethernet/W5500/w5500.h @@ -0,0 +1,2163 @@ +//***************************************************************************** +// +//! \file w5500.h +//! \brief W5500 HAL Header File. +//! \version 1.0.0 +//! \date 2013/10/21 +//! \par Revision history +//! <2015/02/05> Notice +//! The version history is not updated after this point. +//! Download the latest version directly from GitHub. Please visit the our GitHub repository for ioLibrary. +//! >> https://github.com/Wiznet/ioLibrary_Driver +//! <2013/10/21> 1st Release +//! \author MidnightCow +//! \copyright +//! +//! Copyright (c) 2013, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** + +// + +#ifndef _W5500_H_ +#define _W5500_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "wizchip_conf.h" + +/// @cond DOXY_APPLY_CODE +#if (_WIZCHIP_ == 5500) +/// @endcond + +#define _W5500_IO_BASE_ 0x00000000 + +#define _W5500_SPI_READ_ (0x00 << 2) //< SPI interface Read operation in Control Phase +#define _W5500_SPI_WRITE_ (0x01 << 2) //< SPI interface Write operation in Control Phase + +#define WIZCHIP_CREG_BLOCK 0x00 //< Common register block +#define WIZCHIP_SREG_BLOCK(N) (1+4*N) //< Socket N register block +#define WIZCHIP_TXBUF_BLOCK(N) (2+4*N) //< Socket N Tx buffer address block +#define WIZCHIP_RXBUF_BLOCK(N) (3+4*N) //< Socket N Rx buffer address block + +#define WIZCHIP_OFFSET_INC(ADDR, N) (ADDR + (N<<8)) //< Increase offset address + + +/////////////////////////////////////// +// Definition For Legacy Chip Driver // +/////////////////////////////////////// +#define IINCHIP_READ(ADDR) WIZCHIP_READ(ADDR) ///< The defined for legacy chip driver +#define IINCHIP_WRITE(ADDR,VAL) WIZCHIP_WRITE(ADDR,VAL) ///< The defined for legacy chip driver +#define IINCHIP_READ_BUF(ADDR,BUF,LEN) WIZCHIP_READ_BUF(ADDR,BUF,LEN) ///< The defined for legacy chip driver +#define IINCHIP_WRITE_BUF(ADDR,BUF,LEN) WIZCHIP_WRITE(ADDR,BUF,LEN) ///< The defined for legacy chip driver + +////////////////////////////// +//-------------------------- defgroup --------------------------------- +/** + * @defgroup W5500 W5500 + * + * @brief WHIZCHIP register defines and I/O functions of @b W5500. + * + * - @ref WIZCHIP_register : @ref Common_register_group and @ref Socket_register_group + * - @ref WIZCHIP_IO_Functions : @ref Basic_IO_function, @ref Common_register_access_function and @ref Socket_register_access_function + */ + + +/** + * @defgroup WIZCHIP_register WIZCHIP register + * @ingroup W5500 + * + * @brief WHIZCHIP register defines register group of @b W5500. + * + * - @ref Common_register_group : Common register group + * - @ref Socket_register_group : \c SOCKET n register group + */ + + +/** + * @defgroup WIZCHIP_IO_Functions WIZCHIP I/O functions + * @ingroup W5500 + * + * @brief This supports the basic I/O functions for @ref WIZCHIP_register. + * + * - Basic I/O function \n + * WIZCHIP_READ(), WIZCHIP_WRITE(), WIZCHIP_READ_BUF(), WIZCHIP_WRITE_BUF() \n\n + * + * - @ref Common_register_group access functions \n + * -# @b Mode \n + * getMR(), setMR() + * -# @b Interrupt \n + * getIR(), setIR(), getIMR(), setIMR(), getSIR(), setSIR(), getSIMR(), setSIMR(), getINTLEVEL(), setINTLEVEL() + * -# Network Information \n + * getSHAR(), setSHAR(), getGAR(), setGAR(), getSUBR(), setSUBR(), getSIPR(), setSIPR() + * -# @b Retransmission \n + * getRCR(), setRCR(), getRTR(), setRTR() + * -# @b PPPoE \n + * getPTIMER(), setPTIMER(), getPMAGIC(), getPMAGIC(), getPSID(), setPSID(), getPHAR(), setPHAR(), getPMRU(), setPMRU() + * -# ICMP packet \n + * getUIPR(), getUPORTR() + * -# @b etc. \n + * getPHYCFGR(), setPHYCFGR(), getVERSIONR() \n\n + * + * - \ref Socket_register_group access functions \n + * -# SOCKET control \n + * getSn_MR(), setSn_MR(), getSn_CR(), setSn_CR(), getSn_IMR(), setSn_IMR(), getSn_IR(), setSn_IR() + * -# SOCKET information \n + * getSn_SR(), getSn_DHAR(), setSn_DHAR(), getSn_PORT(), setSn_PORT(), getSn_DIPR(), setSn_DIPR(), getSn_DPORT(), setSn_DPORT() + * getSn_MSSR(), setSn_MSSR() + * -# SOCKET communication \n + * getSn_RXBUF_SIZE(), setSn_RXBUF_SIZE(), getSn_TXBUF_SIZE(), setSn_TXBUF_SIZE() \n + * getSn_TX_RD(), getSn_TX_WR(), setSn_TX_WR() \n + * getSn_RX_RD(), setSn_RX_RD(), getSn_RX_WR() \n + * getSn_TX_FSR(), getSn_RX_RSR(), getSn_KPALVTR(), setSn_KPALVTR() + * -# IP header field \n + * getSn_FRAG(), setSn_FRAG(), getSn_TOS(), setSn_TOS() \n + * getSn_TTL(), setSn_TTL() + */ + + + +/** + * @defgroup Common_register_group Common register + * @ingroup WIZCHIP_register + * + * @brief Common register group\n + * It set the basic for the networking\n + * It set the configuration such as interrupt, network information, ICMP, etc. + * @details + * @sa MR : Mode register. + * @sa GAR, SUBR, SHAR, SIPR + * @sa INTLEVEL, IR, IMR, SIR, SIMR : Interrupt. + * @sa _RTR_, _RCR_ : Data retransmission. + * @sa PTIMER, PMAGIC, PHAR, PSID, PMRU : PPPoE. + * @sa UIPR, UPORTR : ICMP message. + * @sa PHYCFGR, VERSIONR : etc. + */ + + + +/** + * @defgroup Socket_register_group Socket register + * @ingroup WIZCHIP_register + * + * @brief Socket register group.\n + * Socket register configures and control SOCKETn which is necessary to data communication. + * @details + * @sa Sn_MR, Sn_CR, Sn_IR, Sn_IMR : SOCKETn Control + * @sa Sn_SR, Sn_PORT, Sn_DHAR, Sn_DIPR, Sn_DPORT : SOCKETn Information + * @sa Sn_MSSR, Sn_TOS, Sn_TTL, Sn_KPALVTR, Sn_FRAG : Internet protocol. + * @sa Sn_RXBUF_SIZE, Sn_TXBUF_SIZE, Sn_TX_FSR, Sn_TX_RD, Sn_TX_WR, Sn_RX_RSR, Sn_RX_RD, Sn_RX_WR : Data communication + */ + + + + /** + * @defgroup Basic_IO_function Basic I/O function + * @ingroup WIZCHIP_IO_Functions + * @brief These are basic input/output functions to read values from register or write values to register. + */ + +/** + * @defgroup Common_register_access_function Common register access functions + * @ingroup WIZCHIP_IO_Functions + * @brief These are functions to access common registers. + */ + +/** + * @defgroup Socket_register_access_function Socket register access functions + * @ingroup WIZCHIP_IO_Functions + * @brief These are functions to access socket registers. + */ + +//------------------------------- defgroup end -------------------------------------------- +//----------------------------- W5500 Common Registers IOMAP ----------------------------- +/** + * @ingroup Common_register_group + * @brief Mode Register address(R/W)\n + * @ref MR is used for S/W reset, ping block mode, PPPoE mode and etc. + * @details Each bit of @ref MR defined as follows. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      RST Reserved WOL PB PPPoE Reserved FARP Reserved
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref MR_RST : Reset + * - \ref MR_WOL : Wake on LAN + * - \ref MR_PB : Ping block + * - \ref MR_PPPOE : PPPoE mode + * - \ref MR_FARP : Force ARP mode + */ +#define MR (_W5500_IO_BASE_ + (0x0000 << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief Gateway IP Register address(R/W) + * @details @ref GAR configures the default gateway address. + */ +#define GAR (_W5500_IO_BASE_ + (0x0001 << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief Subnet mask Register address(R/W) + * @details @ref SUBR configures the subnet mask address. + */ +#define SUBR (_W5500_IO_BASE_ + (0x0005 << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief Source MAC Register address(R/W) + * @details @ref SHAR configures the source hardware address. + */ +#define SHAR (_W5500_IO_BASE_ + (0x0009 << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief Source IP Register address(R/W) + * @details @ref SIPR configures the source IP address. + */ +#define SIPR (_W5500_IO_BASE_ + (0x000F << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief Set Interrupt low level timer register address(R/W) + * @details @ref INTLEVEL configures the Interrupt Assert Time. + */ +#define INTLEVEL (_W5500_IO_BASE_ + (0x0013 << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief Interrupt Register(R/W) + * @details @ref IR indicates the interrupt status. Each bit of @ref IR will be still until the bit will be written to by the host. + * If @ref IR is not equal to x00 INTn PIN is asserted to low until it is x00\n\n + * Each bit of @ref IR defined as follows. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      CONFLICT UNREACH PPPoE MP Reserved Reserved Reserved Reserved
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref IR_CONFLICT : IP conflict + * - \ref IR_UNREACH : Destination unreachable + * - \ref IR_PPPoE : PPPoE connection close + * - \ref IR_MP : Magic packet + */ +#define IR (_W5500_IO_BASE_ + (0x0015 << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief Interrupt mask register(R/W) + * @details @ref _IMR_ is used to mask interrupts. Each bit of @ref _IMR_ corresponds to each bit of @ref IR. + * When a bit of @ref _IMR_ is and the corresponding bit of @ref IR is an interrupt will be issued. In other words, + * if a bit of @ref _IMR_ is an interrupt will not be issued even if the corresponding bit of @ref IR is \n\n + * Each bit of @ref _IMR_ defined as the following. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      IM_IR7 IM_IR6 IM_IR5 IM_IR4 Reserved Reserved Reserved Reserved
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref IM_IR7 : IP Conflict Interrupt Mask + * - \ref IM_IR6 : Destination unreachable Interrupt Mask + * - \ref IM_IR5 : PPPoE Close Interrupt Mask + * - \ref IM_IR4 : Magic Packet Interrupt Mask + */ +//M20150401 : Rename SYMBOE ( Re-define error in a compile) +//#define IMR (_W5500_IO_BASE_ + (0x0016 << 8) + (WIZCHIP_CREG_BLOCK << 3)) +#define _IMR_ (_W5500_IO_BASE_ + (0x0016 << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief Socket Interrupt Register(R/W) + * @details @ref SIR indicates the interrupt status of Socket.\n + * Each bit of @ref SIR be still until @ref Sn_IR is cleared by the host.\n + * If @ref Sn_IR is not equal to x00 the n-th bit of @ref SIR is and INTn PIN is asserted until @ref SIR is x00 */ +#define SIR (_W5500_IO_BASE_ + (0x0017 << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief Socket Interrupt Mask Register(R/W) + * @details Each bit of @ref SIMR corresponds to each bit of @ref SIR. + * When a bit of @ref SIMR is and the corresponding bit of @ref SIR is Interrupt will be issued. + * In other words, if a bit of @ref SIMR is an interrupt will be not issued even if the corresponding bit of @ref SIR is + */ +#define SIMR (_W5500_IO_BASE_ + (0x0018 << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief Timeout register address( 1 is 100us )(R/W) + * @details @ref _RTR_ configures the retransmission timeout period. The unit of timeout period is 100us and the default of @ref _RTR_ is x07D0. + * And so the default timeout period is 200ms(100us X 2000). During the time configured by @ref _RTR_, W5500 waits for the peer response + * to the packet that is transmitted by \ref Sn_CR (CONNECT, DISCON, CLOSE, SEND, SEND_MAC, SEND_KEEP command). + * If the peer does not respond within the @ref _RTR_ time, W5500 retransmits the packet or issues timeout. + */ +//M20150401 : Rename SYMBOE ( Re-define error in a compile) +//#define RTR (_W5500_IO_BASE_ + (0x0019 << 8) + (WIZCHIP_CREG_BLOCK << 3)) +#define _RTR_ (_W5500_IO_BASE_ + (0x0019 << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief Retry count register(R/W) + * @details @ref _RCR_ configures the number of time of retransmission. + * When retransmission occurs as many as ref _RCR_+1 Timeout interrupt is issued (@ref Sn_IR_TIMEOUT = '1'). + */ +//M20150401 : Rename SYMBOE ( Re-define error in a compile) +//#define RCR (_W5500_IO_BASE_ + (0x001B << 8) + (WIZCHIP_CREG_BLOCK << 3)) +#define _RCR_ (_W5500_IO_BASE_ + (0x001B << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief PPP LCP Request Timer register in PPPoE mode(R/W) + * @details @ref PTIMER configures the time for sending LCP echo request. The unit of time is 25ms. + */ +#define PTIMER (_W5500_IO_BASE_ + (0x001C << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief PPP LCP Magic number register in PPPoE mode(R/W) + * @details @ref PMAGIC configures the 4bytes magic number to be used in LCP negotiation. + */ +#define PMAGIC (_W5500_IO_BASE_ + (0x001D << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief PPP Destination MAC Register address(R/W) + * @details @ref PHAR configures the PPPoE server hardware address that is acquired during PPPoE connection process. + */ +#define PHAR (_W5500_IO_BASE_ + (0x001E << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief PPP Session Identification Register(R/W) + * @details @ref PSID configures the PPPoE sever session ID acquired during PPPoE connection process. + */ +#define PSID (_W5500_IO_BASE_ + (0x0024 << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief PPP Maximum Segment Size(MSS) register(R/W) + * @details @ref PMRU configures the maximum receive unit of PPPoE. + */ +#define PMRU (_W5500_IO_BASE_ + (0x0026 << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief Unreachable IP register address in UDP mode(R) + * @details W5500 receives an ICMP packet(Destination port unreachable) when data is sent to a port number + * which socket is not open and @ref IR_UNREACH bit of @ref IR becomes and @ref UIPR & @ref UPORTR indicates + * the destination IP address & port number respectively. + */ +#define UIPR (_W5500_IO_BASE_ + (0x0028 << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief Unreachable Port register address in UDP mode(R) + * @details W5500 receives an ICMP packet(Destination port unreachable) when data is sent to a port number + * which socket is not open and @ref IR_UNREACH bit of @ref IR becomes and @ref UIPR & @ref UPORTR + * indicates the destination IP address & port number respectively. + */ +#define UPORTR (_W5500_IO_BASE_ + (0x002C << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief PHY Status Register(R/W) + * @details @ref PHYCFGR configures PHY operation mode and resets PHY. In addition, @ref PHYCFGR indicates the status of PHY such as duplex, Speed, Link. + */ +#define PHYCFGR (_W5500_IO_BASE_ + (0x002E << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +// Reserved (_W5500_IO_BASE_ + (0x002F << 8) + (WIZCHIP_CREG_BLOCK << 3)) +// Reserved (_W5500_IO_BASE_ + (0x0030 << 8) + (WIZCHIP_CREG_BLOCK << 3)) +// Reserved (_W5500_IO_BASE_ + (0x0031 << 8) + (WIZCHIP_CREG_BLOCK << 3)) +// Reserved (_W5500_IO_BASE_ + (0x0032 << 8) + (WIZCHIP_CREG_BLOCK << 3)) +// Reserved (_W5500_IO_BASE_ + (0x0033 << 8) + (WIZCHIP_CREG_BLOCK << 3)) +// Reserved (_W5500_IO_BASE_ + (0x0034 << 8) + (WIZCHIP_CREG_BLOCK << 3)) +// Reserved (_W5500_IO_BASE_ + (0x0035 << 8) + (WIZCHIP_CREG_BLOCK << 3)) +// Reserved (_W5500_IO_BASE_ + (0x0036 << 8) + (WIZCHIP_CREG_BLOCK << 3)) +// Reserved (_W5500_IO_BASE_ + (0x0037 << 8) + (WIZCHIP_CREG_BLOCK << 3)) +// Reserved (_W5500_IO_BASE_ + (0x0038 << 8) + (WIZCHIP_CREG_BLOCK << 3)) + +/** + * @ingroup Common_register_group + * @brief chip version register address(R) + * @details @ref VERSIONR always indicates the W5500 version as @b 0x04. + */ +#define VERSIONR (_W5500_IO_BASE_ + (0x0039 << 8) + (WIZCHIP_CREG_BLOCK << 3)) + + +//----------------------------- W5500 Socket Registers IOMAP ----------------------------- +/** + * @ingroup Socket_register_group + * @brief socket Mode register(R/W) + * @details @ref Sn_MR configures the option or protocol type of Socket n.\n\n + * Each bit of @ref Sn_MR defined as the following. + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      MULTI/MFEN BCASTB ND/MC/MMB UCASTB/MIP6B Protocol[3] Protocol[2] Protocol[1] Protocol[0]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - @ref Sn_MR_MULTI : Support UDP Multicasting + * - @ref Sn_MR_BCASTB : Broadcast block in UDP Multicasting + * - @ref Sn_MR_ND : No Delayed Ack(TCP) flag + * - @ref Sn_MR_MC : IGMP version used in UDP mulitcasting + * - @ref Sn_MR_MMB : Multicast Blocking in @ref Sn_MR_MACRAW mode + * - @ref Sn_MR_UCASTB : Unicast Block in UDP Multicating + * - @ref Sn_MR_MIP6B : IPv6 packet Blocking in @ref Sn_MR_MACRAW mode + * - Protocol + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Protocol[3] Protocol[2] Protocol[1] Protocol[0] @b Meaning
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 0 0 0 Closed
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 0 0 1 TCP
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 0 1 0 UDP
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0 1 0 0 MACRAW
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - @ref Sn_MR_MACRAW : MAC LAYER RAW SOCK \n + * - @ref Sn_MR_UDP : UDP + * - @ref Sn_MR_TCP : TCP + * - @ref Sn_MR_CLOSE : Unused socket + * @note MACRAW mode should be only used in Socket 0. + */ +#define Sn_MR(N) (_W5500_IO_BASE_ + (0x0000 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief Socket command register(R/W) + * @details This is used to set the command for Socket n such as OPEN, CLOSE, CONNECT, LISTEN, SEND, and RECEIVE.\n + * After W5500 accepts the command, the @ref Sn_CR register is automatically cleared to 0x00. + * Even though @ref Sn_CR is cleared to 0x00, the command is still being processed.\n + * To check whether the command is completed or not, please check the @ref Sn_IR or @ref Sn_SR. + * - @ref Sn_CR_OPEN : Initialize or open socket. + * - @ref Sn_CR_LISTEN : Wait connection request in TCP mode(Server mode) + * - @ref Sn_CR_CONNECT : Send connection request in TCP mode(Client mode) + * - @ref Sn_CR_DISCON : Send closing request in TCP mode. + * - @ref Sn_CR_CLOSE : Close socket. + * - @ref Sn_CR_SEND : Update TX buffer pointer and send data. + * - @ref Sn_CR_SEND_MAC : Send data with MAC address, so without ARP process. + * - @ref Sn_CR_SEND_KEEP : Send keep alive message. + * - @ref Sn_CR_RECV : Update RX buffer pointer and receive data. + */ +#define Sn_CR(N) (_W5500_IO_BASE_ + (0x0001 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief Socket interrupt register(R) + * @details @ref Sn_IR indicates the status of Socket Interrupt such as establishment, termination, receiving data, timeout).\n + * When an interrupt occurs and the corresponding bit of @ref Sn_IMR is the corresponding bit of @ref Sn_IR becomes \n + * In order to clear the @ref Sn_IR bit, the host should write the bit to \n + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      7 6 5 4 3 2 1 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Reserved Reserved Reserved SEND_OK TIMEOUT RECV DISCON CON
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * - \ref Sn_IR_SENDOK : SEND_OK Interrupt + * - \ref Sn_IR_TIMEOUT : TIMEOUT Interrupt + * - \ref Sn_IR_RECV : RECV Interrupt + * - \ref Sn_IR_DISCON : DISCON Interrupt + * - \ref Sn_IR_CON : CON Interrupt + */ +#define Sn_IR(N) (_W5500_IO_BASE_ + (0x0002 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief Socket status register(R) + * @details @ref Sn_SR indicates the status of Socket n.\n + * The status of Socket n is changed by @ref Sn_CR or some special control packet as SYN, FIN packet in TCP. + * @par Normal status + * - @ref SOCK_CLOSED : Closed + * - @ref SOCK_INIT : Initiate state + * - @ref SOCK_LISTEN : Listen state + * - @ref SOCK_ESTABLISHED : Success to connect + * - @ref SOCK_CLOSE_WAIT : Closing state + * - @ref SOCK_UDP : UDP socket + * - @ref SOCK_MACRAW : MAC raw mode socket + *@par Temporary status during changing the status of Socket n. + * - @ref SOCK_SYNSENT : This indicates Socket n sent the connect-request packet (SYN packet) to a peer. + * - @ref SOCK_SYNRECV : It indicates Socket n successfully received the connect-request packet (SYN packet) from a peer. + * - @ref SOCK_FIN_WAIT : Connection state + * - @ref SOCK_CLOSING : Closing state + * - @ref SOCK_TIME_WAIT : Closing state + * - @ref SOCK_LAST_ACK : Closing state + */ +#define Sn_SR(N) (_W5500_IO_BASE_ + (0x0003 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief source port register(R/W) + * @details @ref Sn_PORT configures the source port number of Socket n. + * It is valid when Socket n is used in TCP/UDP mode. It should be set before OPEN command is ordered. + */ +#define Sn_PORT(N) (_W5500_IO_BASE_ + (0x0004 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief Peer MAC register address(R/W) + * @details @ref Sn_DHAR configures the destination hardware address of Socket n when using SEND_MAC command in UDP mode or + * it indicates that it is acquired in ARP-process by CONNECT/SEND command. + */ +#define Sn_DHAR(N) (_W5500_IO_BASE_ + (0x0006 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief Peer IP register address(R/W) + * @details @ref Sn_DIPR configures or indicates the destination IP address of Socket n. It is valid when Socket n is used in TCP/UDP mode. + * In TCP client mode, it configures an IP address of TCP serverbefore CONNECT command. + * In TCP server mode, it indicates an IP address of TCP clientafter successfully establishing connection. + * In UDP mode, it configures an IP address of peer to be received the UDP packet by SEND or SEND_MAC command. + */ +#define Sn_DIPR(N) (_W5500_IO_BASE_ + (0x000C << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief Peer port register address(R/W) + * @details @ref Sn_DPORT configures or indicates the destination port number of Socket n. It is valid when Socket n is used in TCP/UDP mode. + * In TCP clientmode, it configures the listen port number of TCP serverbefore CONNECT command. + * In TCP Servermode, it indicates the port number of TCP client after successfully establishing connection. + * In UDP mode, it configures the port number of peer to be transmitted the UDP packet by SEND/SEND_MAC command. + */ +#define Sn_DPORT(N) (_W5500_IO_BASE_ + (0x0010 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief Maximum Segment Size(Sn_MSSR0) register address(R/W) + * @details @ref Sn_MSSR configures or indicates the MTU(Maximum Transfer Unit) of Socket n. + */ +#define Sn_MSSR(N) (_W5500_IO_BASE_ + (0x0012 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +// Reserved (_W5500_IO_BASE_ + (0x0014 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief IP Type of Service(TOS) Register(R/W) + * @details @ref Sn_TOS configures the TOS(Type Of Service field in IP Header) of Socket n. + * It is set before OPEN command. + */ +#define Sn_TOS(N) (_W5500_IO_BASE_ + (0x0015 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) +/** + * @ingroup Socket_register_group + * @brief IP Time to live(TTL) Register(R/W) + * @details @ref Sn_TTL configures the TTL(Time To Live field in IP header) of Socket n. + * It is set before OPEN command. + */ +#define Sn_TTL(N) (_W5500_IO_BASE_ + (0x0016 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) +// Reserved (_W5500_IO_BASE_ + (0x0017 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) +// Reserved (_W5500_IO_BASE_ + (0x0018 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) +// Reserved (_W5500_IO_BASE_ + (0x0019 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) +// Reserved (_W5500_IO_BASE_ + (0x001A << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) +// Reserved (_W5500_IO_BASE_ + (0x001B << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) +// Reserved (_W5500_IO_BASE_ + (0x001C << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) +// Reserved (_W5500_IO_BASE_ + (0x001D << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief Receive memory size register(R/W) + * @details @ref Sn_RXBUF_SIZE configures the RX buffer block size of Socket n. + * Socket n RX Buffer Block size can be configured with 1,2,4,8, and 16 Kbytes. + * If a different size is configured, the data cannot be normally received from a peer. + * Although Socket n RX Buffer Block size is initially configured to 2Kbytes, + * user can re-configure its size using @ref Sn_RXBUF_SIZE. The total sum of @ref Sn_RXBUF_SIZE can not be exceed 16Kbytes. + * When exceeded, the data reception error is occurred. + */ +#define Sn_RXBUF_SIZE(N) (_W5500_IO_BASE_ + (0x001E << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief Transmit memory size register(R/W) + * @details @ref Sn_TXBUF_SIZE configures the TX buffer block size of Socket n. Socket n TX Buffer Block size can be configured with 1,2,4,8, and 16 Kbytes. + * If a different size is configured, the data can�t be normally transmitted to a peer. + * Although Socket n TX Buffer Block size is initially configured to 2Kbytes, + * user can be re-configure its size using @ref Sn_TXBUF_SIZE. The total sum of @ref Sn_TXBUF_SIZE can not be exceed 16Kbytes. + * When exceeded, the data transmission error is occurred. + */ +#define Sn_TXBUF_SIZE(N) (_W5500_IO_BASE_ + (0x001F << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief Transmit free memory size register(R) + * @details @ref Sn_TX_FSR indicates the free size of Socket n TX Buffer Block. It is initialized to the configured size by @ref Sn_TXBUF_SIZE. + * Data bigger than @ref Sn_TX_FSR should not be saved in the Socket n TX Buffer because the bigger data overwrites the previous saved data not yet sent. + * Therefore, check before saving the data to the Socket n TX Buffer, and if data is equal or smaller than its checked size, + * transmit the data with SEND/SEND_MAC command after saving the data in Socket n TX buffer. But, if data is bigger than its checked size, + * transmit the data after dividing into the checked size and saving in the Socket n TX buffer. + */ +#define Sn_TX_FSR(N) (_W5500_IO_BASE_ + (0x0020 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief Transmit memory read pointer register address(R) + * @details @ref Sn_TX_RD is initialized by OPEN command. However, if Sn_MR(P[3:0]) is TCP mode(001, it is re-initialized while connecting with TCP. + * After its initialization, it is auto-increased by SEND command. + * SEND command transmits the saved data from the current @ref Sn_TX_RD to the @ref Sn_TX_WR in the Socket n TX Buffer. + * After transmitting the saved data, the SEND command increases the @ref Sn_TX_RD as same as the @ref Sn_TX_WR. + * If its increment value exceeds the maximum value 0xFFFF, (greater than 0x10000 and the carry bit occurs), + * then the carry bit is ignored and will automatically update with the lower 16bits value. + */ +#define Sn_TX_RD(N) (_W5500_IO_BASE_ + (0x0022 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief Transmit memory write pointer register address(R/W) + * @details @ref Sn_TX_WR is initialized by OPEN command. However, if Sn_MR(P[3:0]) is TCP mode(001, it is re-initialized while connecting with TCP.\n + * It should be read or be updated like as follows.\n + * 1. Read the starting address for saving the transmitting data.\n + * 2. Save the transmitting data from the starting address of Socket n TX buffer.\n + * 3. After saving the transmitting data, update @ref Sn_TX_WR to the increased value as many as transmitting data size. + * If the increment value exceeds the maximum value 0xFFFF(greater than 0x10000 and the carry bit occurs), + * then the carry bit is ignored and will automatically update with the lower 16bits value.\n + * 4. Transmit the saved data in Socket n TX Buffer by using SEND/SEND command + */ +#define Sn_TX_WR(N) (_W5500_IO_BASE_ + (0x0024 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief Received data size register(R) + * @details @ref Sn_RX_RSR indicates the data size received and saved in Socket n RX Buffer. + * @ref Sn_RX_RSR does not exceed the @ref Sn_RXBUF_SIZE and is calculated as the difference between + * �Socket n RX Write Pointer (@ref Sn_RX_WR)and �Socket n RX Read Pointer (@ref Sn_RX_RD) + */ +#define Sn_RX_RSR(N) (_W5500_IO_BASE_ + (0x0026 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief Read point of Receive memory(R/W) + * @details @ref Sn_RX_RD is initialized by OPEN command. Make sure to be read or updated as follows.\n + * 1. Read the starting save address of the received data.\n + * 2. Read data from the starting address of Socket n RX Buffer.\n + * 3. After reading the received data, Update @ref Sn_RX_RD to the increased value as many as the reading size. + * If the increment value exceeds the maximum value 0xFFFF, that is, is greater than 0x10000 and the carry bit occurs, + * update with the lower 16bits value ignored the carry bit.\n + * 4. Order RECV command is for notifying the updated @ref Sn_RX_RD to W5500. + */ +#define Sn_RX_RD(N) (_W5500_IO_BASE_ + (0x0028 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief Write point of Receive memory(R) + * @details @ref Sn_RX_WR is initialized by OPEN command and it is auto-increased by the data reception. + * If the increased value exceeds the maximum value 0xFFFF, (greater than 0x10000 and the carry bit occurs), + * then the carry bit is ignored and will automatically update with the lower 16bits value. + */ +#define Sn_RX_WR(N) (_W5500_IO_BASE_ + (0x002A << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief socket interrupt mask register(R) + * @details @ref Sn_IMR masks the interrupt of Socket n. + * Each bit corresponds to each bit of @ref Sn_IR. When a Socket n Interrupt is occurred and the corresponding bit of @ref Sn_IMR is + * the corresponding bit of @ref Sn_IR becomes When both the corresponding bit of @ref Sn_IMR and @ref Sn_IR are and the n-th bit of @ref IR is + * Host is interrupted by asserted INTn PIN to low. + */ +#define Sn_IMR(N) (_W5500_IO_BASE_ + (0x002C << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief Fragment field value in IP header register(R/W) + * @details @ref Sn_FRAG configures the FRAG(Fragment field in IP header). + */ +#define Sn_FRAG(N) (_W5500_IO_BASE_ + (0x002D << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +/** + * @ingroup Socket_register_group + * @brief Keep Alive Timer register(R/W) + * @details @ref Sn_KPALVTR configures the transmitting timer of �KEEP ALIVE(KA)packet of SOCKETn. It is valid only in TCP mode, + * and ignored in other modes. The time unit is 5s. + * KA packet is transmittable after @ref Sn_SR is changed to SOCK_ESTABLISHED and after the data is transmitted or received to/from a peer at least once. + * In case of '@ref Sn_KPALVTR > 0', W5500 automatically transmits KA packet after time-period for checking the TCP connection (Auto-keepalive-process). + * In case of '@ref Sn_KPALVTR = 0', Auto-keep-alive-process will not operate, + * and KA packet can be transmitted by SEND_KEEP command by the host (Manual-keep-alive-process). + * Manual-keep-alive-process is ignored in case of '@ref Sn_KPALVTR > 0'. + */ +#define Sn_KPALVTR(N) (_W5500_IO_BASE_ + (0x002F << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + +//#define Sn_TSR(N) (_W5500_IO_BASE_ + (0x0030 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) + + +//----------------------------- W5500 Register values ----------------------------- + +/* MODE register values */ +/** + * @brief Reset + * @details If this bit is All internal registers will be initialized. It will be automatically cleared as after S/W reset. + */ +#define MR_RST 0x80 + +/** + * @brief Wake on LAN + * @details 0 : Disable WOL mode\n + * 1 : Enable WOL mode\n + * If WOL mode is enabled and the received magic packet over UDP has been normally processed, the Interrupt PIN (INTn) asserts to low. + * When using WOL mode, the UDP Socket should be opened with any source port number. (Refer to Socket n Mode Register (@ref Sn_MR) for opening Socket.) + * @note The magic packet over UDP supported by W5500 consists of 6 bytes synchronization stream (xFFFFFFFFFFFF and + * 16 times Target MAC address stream in UDP payload. The options such like password are ignored. You can use any UDP source port number for WOL mode. + */ +#define MR_WOL 0x20 + +/** + * @brief Ping block + * @details 0 : Disable Ping block\n + * 1 : Enable Ping block\n + * If the bit is it blocks the response to a ping request. + */ +#define MR_PB 0x10 + +/** + * @brief Enable PPPoE + * @details 0 : DisablePPPoE mode\n + * 1 : EnablePPPoE mode\n + * If you use ADSL, this bit should be + */ +#define MR_PPPOE 0x08 + +/** + * @brief Enable UDP_FORCE_ARP CHECHK + * @details 0 : Disable Force ARP mode\n + * 1 : Enable Force ARP mode\n + * In Force ARP mode, It forces on sending ARP Request whenever data is sent. + */ +#define MR_FARP 0x02 + +/* IR register values */ +/** + * @brief Check IP conflict. + * @details Bit is set as when own source IP address is same with the sender IP address in the received ARP request. + */ +#define IR_CONFLICT 0x80 + +/** + * @brief Get the destination unreachable message in UDP sending. + * @details When receiving the ICMP (Destination port unreachable) packet, this bit is set as + * When this bit is Destination Information such as IP address and Port number may be checked with the corresponding @ref UIPR & @ref UPORTR. + */ +#define IR_UNREACH 0x40 + +/** + * @brief Get the PPPoE close message. + * @details When PPPoE is disconnected during PPPoE mode, this bit is set. + */ +#define IR_PPPoE 0x20 + +/** + * @brief Get the magic packet interrupt. + * @details When WOL mode is enabled and receives the magic packet over UDP, this bit is set. + */ +#define IR_MP 0x10 + + +/* PHYCFGR register value */ +#define PHYCFGR_RST ~(1<<7) //< For PHY reset, must operate AND mask. +#define PHYCFGR_OPMD (1<<6) // Configre PHY with OPMDC value +#define PHYCFGR_OPMDC_ALLA (7<<3) +#define PHYCFGR_OPMDC_PDOWN (6<<3) +#define PHYCFGR_OPMDC_NA (5<<3) +#define PHYCFGR_OPMDC_100FA (4<<3) +#define PHYCFGR_OPMDC_100F (3<<3) +#define PHYCFGR_OPMDC_100H (2<<3) +#define PHYCFGR_OPMDC_10F (1<<3) +#define PHYCFGR_OPMDC_10H (0<<3) +#define PHYCFGR_DPX_FULL (1<<2) +#define PHYCFGR_DPX_HALF (0<<2) +#define PHYCFGR_SPD_100 (1<<1) +#define PHYCFGR_SPD_10 (0<<1) +#define PHYCFGR_LNK_ON (1<<0) +#define PHYCFGR_LNK_OFF (0<<0) + +/* IMR register values */ +/** + * @brief IP Conflict Interrupt Mask. + * @details 0: Disable IP Conflict Interrupt\n + * 1: Enable IP Conflict Interrupt + */ +#define IM_IR7 0x80 + +/** + * @brief Destination unreachable Interrupt Mask. + * @details 0: Disable Destination unreachable Interrupt\n + * 1: Enable Destination unreachable Interrupt + */ +#define IM_IR6 0x40 + +/** + * @brief PPPoE Close Interrupt Mask. + * @details 0: Disable PPPoE Close Interrupt\n + * 1: Enable PPPoE Close Interrupt + */ +#define IM_IR5 0x20 + +/** + * @brief Magic Packet Interrupt Mask. + * @details 0: Disable Magic Packet Interrupt\n + * 1: Enable Magic Packet Interrupt + */ +#define IM_IR4 0x10 + +/* Sn_MR Default values */ +/** + * @brief Support UDP Multicasting + * @details 0 : disable Multicasting\n + * 1 : enable Multicasting\n + * This bit is applied only during UDP mode(P[3:0] = 010.\n + * To use multicasting, @ref Sn_DIPR & @ref Sn_DPORT should be respectively configured with the multicast group IP address & port number + * before Socket n is opened by OPEN command of @ref Sn_CR. + */ +#define Sn_MR_MULTI 0x80 + +/** + * @brief Broadcast block in UDP Multicasting. + * @details 0 : disable Broadcast Blocking\n + * 1 : enable Broadcast Blocking\n + * This bit blocks to receive broadcasting packet during UDP mode(P[3:0] = 010.\m + * In addition, This bit does when MACRAW mode(P[3:0] = 100 + */ +#define Sn_MR_BCASTB 0x40 + +/** + * @brief No Delayed Ack(TCP), Multicast flag + * @details 0 : Disable No Delayed ACK option\n + * 1 : Enable No Delayed ACK option\n + * This bit is applied only during TCP mode (P[3:0] = 001.\n + * When this bit is It sends the ACK packet without delay as soon as a Data packet is received from a peer.\n + * When this bit is It sends the ACK packet after waiting for the timeout time configured by @ref _RTR_. + */ +#define Sn_MR_ND 0x20 + +/** + * @brief Unicast Block in UDP Multicasting + * @details 0 : disable Unicast Blocking\n + * 1 : enable Unicast Blocking\n + * This bit blocks receiving the unicast packet during UDP mode(P[3:0] = 010 and MULTI = + */ +#define Sn_MR_UCASTB 0x10 + +/** + * @brief MAC LAYER RAW SOCK + * @details This configures the protocol mode of Socket n. + * @note MACRAW mode should be only used in Socket 0. + */ +#define Sn_MR_MACRAW 0x04 + +#define Sn_MR_IPRAW 0x03 /**< IP LAYER RAW SOCK */ + +/** + * @brief UDP + * @details This configures the protocol mode of Socket n. + */ +#define Sn_MR_UDP 0x02 + +/** + * @brief TCP + * @details This configures the protocol mode of Socket n. + */ +#define Sn_MR_TCP 0x01 + +/** + * @brief Unused socket + * @details This configures the protocol mode of Socket n. + */ +#define Sn_MR_CLOSE 0x00 + +/* Sn_MR values used with Sn_MR_MACRAW */ +/** + * @brief MAC filter enable in @ref Sn_MR_MACRAW mode + * @details 0 : disable MAC Filtering\n + * 1 : enable MAC Filtering\n + * This bit is applied only during MACRAW mode(P[3:0] = 100.\n + * When set as W5500 can only receive broadcasting packet or packet sent to itself. + * When this bit is W5500 can receive all packets on Ethernet. + * If user wants to implement Hybrid TCP/IP stack, + * it is recommended that this bit is set as for reducing host overhead to process the all received packets. + */ +#define Sn_MR_MFEN Sn_MR_MULTI + +/** + * @brief Multicast Blocking in @ref Sn_MR_MACRAW mode + * @details 0 : using IGMP version 2\n + * 1 : using IGMP version 1\n + * This bit is applied only during UDP mode(P[3:0] = 010 and MULTI = + * It configures the version for IGMP messages (Join/Leave/Report). + */ +#define Sn_MR_MMB Sn_MR_ND + +/** + * @brief IPv6 packet Blocking in @ref Sn_MR_MACRAW mode + * @details 0 : disable IPv6 Blocking\n + * 1 : enable IPv6 Blocking\n + * This bit is applied only during MACRAW mode (P[3:0] = 100. It blocks to receiving the IPv6 packet. + */ +#define Sn_MR_MIP6B Sn_MR_UCASTB + +/* Sn_MR value used with Sn_MR_UDP & Sn_MR_MULTI */ +/** + * @brief IGMP version used in UDP mulitcasting + * @details 0 : disable Multicast Blocking\n + * 1 : enable Multicast Blocking\n + * This bit is applied only when MACRAW mode(P[3:0] = 100. It blocks to receive the packet with multicast MAC address. + */ +#define Sn_MR_MC Sn_MR_ND + +/* Sn_MR alternate values */ +/** + * @brief For Berkeley Socket API + */ +#define SOCK_STREAM Sn_MR_TCP + +/** + * @brief For Berkeley Socket API + */ +#define SOCK_DGRAM Sn_MR_UDP + + +/* Sn_CR values */ +/** + * @brief Initialize or open socket + * @details Socket n is initialized and opened according to the protocol selected in Sn_MR(P3:P0). + * The table below shows the value of @ref Sn_SR corresponding to @ref Sn_MR.\n + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \b Sn_MR (P[3:0]) \b Sn_SR
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_CLOSE (000)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_TCP (001) SOCK_INIT (0x13)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Sn_MR_UDP (010) SOCK_UDP (0x22)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      S0_MR_MACRAW (100) SOCK_MACRAW (0x02)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + */ +#define Sn_CR_OPEN 0x01 + +/** + * @brief Wait connection request in TCP mode(Server mode) + * @details This is valid only in TCP mode (\ref Sn_MR(P3:P0) = \ref Sn_MR_TCP). + * In this mode, Socket n operates as a TCP serverand waits for connection-request (SYN packet) from any TCP client + * The @ref Sn_SR changes the state from \ref SOCK_INIT to \ref SOCKET_LISTEN. + * When a TCP clientconnection request is successfully established, + * the @ref Sn_SR changes from SOCK_LISTEN to SOCK_ESTABLISHED and the @ref Sn_IR(0) becomes + * But when a TCP clientconnection request is failed, @ref Sn_IR(3) becomes and the status of @ref Sn_SR changes to SOCK_CLOSED. + */ +#define Sn_CR_LISTEN 0x02 + +/** + * @brief Send connection request in TCP mode(Client mode) + * @details To connect, a connect-request (SYN packet) is sent to TCP serverconfigured by @ref Sn_DIPR & Sn_DPORT(destination address & port). + * If the connect-request is successful, the @ref Sn_SR is changed to @ref SOCK_ESTABLISHED and the Sn_IR(0) becomes \n\n + * The connect-request fails in the following three cases.\n + * 1. When a @b ARPTO occurs (@ref Sn_IR[3] = ) because destination hardware address is not acquired through the ARP-process.\n + * 2. When a @b SYN/ACK packet is not received and @b TCPTO (Sn_IR(3) = )\n + * 3. When a @b RST packet is received instead of a @b SYN/ACK packet. In these cases, @ref Sn_SR is changed to @ref SOCK_CLOSED. + * @note This is valid only in TCP mode and operates when Socket n acts as TCP client + */ +#define Sn_CR_CONNECT 0x04 + +/** + * @brief Send closing request in TCP mode + * @details Regardless of TCP serveror TCP client the DISCON command processes the disconnect-process (b>Active close
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      or Passive close.\n + * @par Active close + * it transmits disconnect-request(FIN packet) to the connected peer\n + * @par Passive close + * When FIN packet is received from peer, a FIN packet is replied back to the peer.\n + * @details When the disconnect-process is successful (that is, FIN/ACK packet is received successfully), @ref Sn_SR is changed to @ref SOCK_CLOSED.\n + * Otherwise, TCPTO occurs (\ref Sn_IR(3)='1') and then @ref Sn_SR is changed to @ref SOCK_CLOSED. + * @note Valid only in TCP mode. + */ +#define Sn_CR_DISCON 0x08 + +/** + * @brief Close socket + * @details Sn_SR is changed to @ref SOCK_CLOSED. + */ +#define Sn_CR_CLOSE 0x10 + +/** + * @brief Update TX buffer pointer and send data + * @details SEND transmits all the data in the Socket n TX buffer.\n + * For more details, please refer to Socket n TX Free Size Register (@ref Sn_TX_FSR), Socket n, + * TX Write Pointer Register(@ref Sn_TX_WR), and Socket n TX Read Pointer Register(@ref Sn_TX_RD). + */ +#define Sn_CR_SEND 0x20 + +/** + * @brief Send data with MAC address, so without ARP process + * @details The basic operation is same as SEND.\n + * Normally SEND transmits data after destination hardware address is acquired by the automatic ARP-process(Address Resolution Protocol).\n + * But SEND_MAC transmits data without the automatic ARP-process.\n + * In this case, the destination hardware address is acquired from @ref Sn_DHAR configured by host, instead of APR-process. + * @note Valid only in UDP mode. + */ +#define Sn_CR_SEND_MAC 0x21 + +/** + * @brief Send keep alive message + * @details It checks the connection status by sending 1byte keep-alive packet.\n + * If the peer can not respond to the keep-alive packet during timeout time, the connection is terminated and the timeout interrupt will occur. + * @note Valid only in TCP mode. + */ +#define Sn_CR_SEND_KEEP 0x22 + +/** + * @brief Update RX buffer pointer and receive data + * @details RECV completes the processing of the received data in Socket n RX Buffer by using a RX read pointer register (@ref Sn_RX_RD).\n + * For more details, refer to Socket n RX Received Size Register (@ref Sn_RX_RSR), Socket n RX Write Pointer Register (@ref Sn_RX_WR), + * and Socket n RX Read Pointer Register (@ref Sn_RX_RD). + */ +#define Sn_CR_RECV 0x40 + +/* Sn_IR values */ +/** + * @brief SEND_OK Interrupt + * @details This is issued when SEND command is completed. + */ +#define Sn_IR_SENDOK 0x10 + +/** + * @brief TIMEOUT Interrupt + * @details This is issued when ARPTO or TCPTO occurs. + */ +#define Sn_IR_TIMEOUT 0x08 + +/** + * @brief RECV Interrupt + * @details This is issued whenever data is received from a peer. + */ +#define Sn_IR_RECV 0x04 + +/** + * @brief DISCON Interrupt + * @details This is issued when FIN or FIN/ACK packet is received from a peer. + */ +#define Sn_IR_DISCON 0x02 + +/** + * @brief CON Interrupt + * @details This is issued one time when the connection with peer is successful and then @ref Sn_SR is changed to @ref SOCK_ESTABLISHED. + */ +#define Sn_IR_CON 0x01 + +/* Sn_SR values */ +/** + * @brief Closed + * @details This indicates that Socket n is released.\n + * When DICON, CLOSE command is ordered, or when a timeout occurs, it is changed to @ref SOCK_CLOSED regardless of previous status. + */ +#define SOCK_CLOSED 0x00 + +/** + * @brief Initiate state + * @details This indicates Socket n is opened with TCP mode.\n + * It is changed to @ref SOCK_INIT when @ref Sn_MR(P[3:0]) = 001 and OPEN command is ordered.\n + * After @ref SOCK_INIT, user can use LISTEN /CONNECT command. + */ +#define SOCK_INIT 0x13 + +/** + * @brief Listen state + * @details This indicates Socket n is operating as TCP servermode and waiting for connection-request (SYN packet) from a peer TCP client.\n + * It will change to @ref SOCK_ESTALBLISHED when the connection-request is successfully accepted.\n + * Otherwise it will change to @ref SOCK_CLOSED after TCPTO @ref Sn_IR(TIMEOUT) = '1') is occurred. + */ +#define SOCK_LISTEN 0x14 + +/** + * @brief Connection state + * @details This indicates Socket n sent the connect-request packet (SYN packet) to a peer.\n + * It is temporarily shown when @ref Sn_SR is changed from @ref SOCK_INIT to @ref SOCK_ESTABLISHED by CONNECT command.\n + * If connect-accept(SYN/ACK packet) is received from the peer at SOCK_SYNSENT, it changes to @ref SOCK_ESTABLISHED.\n + * Otherwise, it changes to @ref SOCK_CLOSED after TCPTO (@ref Sn_IR[TIMEOUT] = '1') is occurred. + */ +#define SOCK_SYNSENT 0x15 + +/** + * @brief Connection state + * @details It indicates Socket n successfully received the connect-request packet (SYN packet) from a peer.\n + * If socket n sends the response (SYN/ACK packet) to the peer successfully, it changes to @ref SOCK_ESTABLISHED. \n + * If not, it changes to @ref SOCK_CLOSED after timeout (@ref Sn_IR[TIMEOUT] = '1') is occurred. + */ +#define SOCK_SYNRECV 0x16 + +/** + * @brief Success to connect + * @details This indicates the status of the connection of Socket n.\n + * It changes to @ref SOCK_ESTABLISHED when the TCP SERVERprocessed the SYN packet from the TCP CLIENTduring @ref SOCK_LISTEN, or + * when the CONNECT command is successful.\n + * During @ref SOCK_ESTABLISHED, DATA packet can be transferred using SEND or RECV command. + */ +#define SOCK_ESTABLISHED 0x17 + +/** + * @brief Closing state + * @details These indicate Socket n is closing.\n + * These are shown in disconnect-process such as active-close and passive-close.\n + * When Disconnect-process is successfully completed, or when timeout occurs, these change to @ref SOCK_CLOSED. + */ +#define SOCK_FIN_WAIT 0x18 + +/** + * @brief Closing state + * @details These indicate Socket n is closing.\n + * These are shown in disconnect-process such as active-close and passive-close.\n + * When Disconnect-process is successfully completed, or when timeout occurs, these change to @ref SOCK_CLOSED. + */ +#define SOCK_CLOSING 0x1A + +/** + * @brief Closing state + * @details These indicate Socket n is closing.\n + * These are shown in disconnect-process such as active-close and passive-close.\n + * When Disconnect-process is successfully completed, or when timeout occurs, these change to @ref SOCK_CLOSED. + */ +#define SOCK_TIME_WAIT 0x1B + +/** + * @brief Closing state + * @details This indicates Socket n received the disconnect-request (FIN packet) from the connected peer.\n + * This is half-closing status, and data can be transferred.\n + * For full-closing, DISCON command is used. But For just-closing, CLOSE command is used. + */ +#define SOCK_CLOSE_WAIT 0x1C + +/** + * @brief Closing state + * @details This indicates Socket n is waiting for the response (FIN/ACK packet) to the disconnect-request (FIN packet) by passive-close.\n + * It changes to @ref SOCK_CLOSED when Socket n received the response successfully, or when timeout(@ref Sn_IR[TIMEOUT] = '1') is occurred. + */ +#define SOCK_LAST_ACK 0x1D + +/** + * @brief UDP socket + * @details This indicates Socket n is opened in UDP mode(@ref Sn_MR(P[3:0]) = '010').\n + * It changes to SOCK_UDP when @ref Sn_MR(P[3:0]) = '010' and @ref Sn_CR_OPEN command is ordered.\n + * Unlike TCP mode, data can be transfered without the connection-process. + */ +#define SOCK_UDP 0x22 + +#define SOCK_IPRAW 0x32 /**< IP raw mode socket */ + +/** + * @brief MAC raw mode socket + * @details This indicates Socket 0 is opened in MACRAW mode (S0_MR(P[3:0]) = 100and is valid only in Socket 0.\n + * It changes to SOCK_MACRAW when S0_MR(P[3:0] = 100and OPEN command is ordered.\n + * Like UDP mode socket, MACRAW mode Socket 0 can transfer a MAC packet (Ethernet frame) without the connection-process. + */ +#define SOCK_MACRAW 0x42 + +//#define SOCK_PPPOE 0x5F + +/* IP PROTOCOL */ +#define IPPROTO_IP 0 //< Dummy for IP +#define IPPROTO_ICMP 1 //< Control message protocol +#define IPPROTO_IGMP 2 //< Internet group management protocol +#define IPPROTO_GGP 3 //< Gateway^2 (deprecated) +#define IPPROTO_TCP 6 //< TCP +#define IPPROTO_PUP 12 //< PUP +#define IPPROTO_UDP 17 //< UDP +#define IPPROTO_IDP 22 //< XNS idp +#define IPPROTO_ND 77 //< UNOFFICIAL net disk protocol +#define IPPROTO_RAW 255 //< Raw IP packet + + +/** + * @brief Enter a critical section + * + * @details It is provided to protect your shared code which are executed without distribution. \n \n + * + * In non-OS environment, It can be just implemented by disabling whole interrupt.\n + * In OS environment, You can replace it to critical section api supported by OS. + * + * \sa WIZCHIP_READ(), WIZCHIP_WRITE(), WIZCHIP_READ_BUF(), WIZCHIP_WRITE_BUF() + * \sa WIZCHIP_CRITICAL_EXIT() + */ +#define WIZCHIP_CRITICAL_ENTER() WIZCHIP.CRIS._enter() + +#ifdef _exit +#undef _exit +#endif + +/** + * @brief Exit a critical section + * + * @details It is provided to protect your shared code which are executed without distribution. \n\n + * + * In non-OS environment, It can be just implemented by disabling whole interrupt. \n + * In OS environment, You can replace it to critical section api supported by OS. + * + * @sa WIZCHIP_READ(), WIZCHIP_WRITE(), WIZCHIP_READ_BUF(), WIZCHIP_WRITE_BUF() + * @sa WIZCHIP_CRITICAL_ENTER() + */ +#define WIZCHIP_CRITICAL_EXIT() WIZCHIP.CRIS._exit() + + +//////////////////////// +// Basic I/O Function // +//////////////////////// + +/** + * @ingroup Basic_IO_function + * @brief It reads 1 byte value from a register. + * @param AddrSel Register address + * @return The value of register + */ +uint8_t WIZCHIP_READ (uint32_t AddrSel); + +/** + * @ingroup Basic_IO_function + * @brief It writes 1 byte value to a register. + * @param AddrSel Register address + * @param wb Write data + * @return void + */ +void WIZCHIP_WRITE(uint32_t AddrSel, uint8_t wb ); + +/** + * @ingroup Basic_IO_function + * @brief It reads sequence data from registers. + * @param AddrSel Register address + * @param pBuf Pointer buffer to read data + * @param len Data length + */ +void WIZCHIP_READ_BUF (uint32_t AddrSel, uint8_t* pBuf, uint16_t len); + +/** + * @ingroup Basic_IO_function + * @brief It writes sequence data to registers. + * @param AddrSel Register address + * @param pBuf Pointer buffer to write data + * @param len Data length + */ +void WIZCHIP_WRITE_BUF(uint32_t AddrSel, uint8_t* pBuf, uint16_t len); + +///////////////////////////////// +// Common Register I/O function // +///////////////////////////////// +/** + * @ingroup Common_register_access_function + * @brief Set Mode Register + * @param (uint8_t)mr The value to be set. + * @sa getMR() + */ +#define setMR(mr) \ + WIZCHIP_WRITE(MR,mr) + + +/** + * @ingroup Common_register_access_function + * @brief Get Mode Register + * @return uint8_t. The value of Mode register. + * @sa setMR() + */ +#define getMR() \ + WIZCHIP_READ(MR) + +/** + * @ingroup Common_register_access_function + * @brief Set gateway IP address + * @param (uint8_t*)gar Pointer variable to set gateway IP address. It should be allocated 4 bytes. + * @sa getGAR() + */ +#define setGAR(gar) \ + WIZCHIP_WRITE_BUF(GAR,gar,4) + +/** + * @ingroup Common_register_access_function + * @brief Get gateway IP address + * @param (uint8_t*)gar Pointer variable to get gateway IP address. It should be allocated 4 bytes. + * @sa setGAR() + */ +#define getGAR(gar) \ + WIZCHIP_READ_BUF(GAR,gar,4) + +/** + * @ingroup Common_register_access_function + * @brief Set subnet mask address + * @param (uint8_t*)subr Pointer variable to set subnet mask address. It should be allocated 4 bytes. + * @sa getSUBR() + */ +#define setSUBR(subr) \ + WIZCHIP_WRITE_BUF(SUBR, subr,4) + + +/** + * @ingroup Common_register_access_function + * @brief Get subnet mask address + * @param (uint8_t*)subr Pointer variable to get subnet mask address. It should be allocated 4 bytes. + * @sa setSUBR() + */ +#define getSUBR(subr) \ + WIZCHIP_READ_BUF(SUBR, subr, 4) + +/** + * @ingroup Common_register_access_function + * @brief Set local MAC address + * @param (uint8_t*)shar Pointer variable to set local MAC address. It should be allocated 6 bytes. + * @sa getSHAR() + */ +#define setSHAR(shar) \ + WIZCHIP_WRITE_BUF(SHAR, shar, 6) + +/** + * @ingroup Common_register_access_function + * @brief Get local MAC address + * @param (uint8_t*)shar Pointer variable to get local MAC address. It should be allocated 6 bytes. + * @sa setSHAR() + */ +#define getSHAR(shar) \ + WIZCHIP_READ_BUF(SHAR, shar, 6) + +/** + * @ingroup Common_register_access_function + * @brief Set local IP address + * @param (uint8_t*)sipr Pointer variable to set local IP address. It should be allocated 4 bytes. + * @sa getSIPR() + */ +#define setSIPR(sipr) \ + WIZCHIP_WRITE_BUF(SIPR, sipr, 4) + +/** + * @ingroup Common_register_access_function + * @brief Get local IP address + * @param (uint8_t*)sipr Pointer variable to get local IP address. It should be allocated 4 bytes. + * @sa setSIPR() + */ +#define getSIPR(sipr) \ + WIZCHIP_READ_BUF(SIPR, sipr, 4) + +/** + * @ingroup Common_register_access_function + * @brief Set INTLEVEL register + * @param (uint16_t)intlevel Value to set @ref INTLEVEL register. + * @sa getINTLEVEL() + */ +#define setINTLEVEL(intlevel) {\ + WIZCHIP_WRITE(INTLEVEL, (uint8_t)(intlevel >> 8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(INTLEVEL,1), (uint8_t) intlevel); \ + } + + +/** + * @ingroup Common_register_access_function + * @brief Get INTLEVEL register + * @return uint16_t. Value of @ref INTLEVEL register. + * @sa setINTLEVEL() + */ +//M20150401 : Type explict declaration +/* +#define getINTLEVEL() \ + ((WIZCHIP_READ(INTLEVEL) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(INTLEVEL,1))) +*/ +#define getINTLEVEL() \ + (((uint16_t)WIZCHIP_READ(INTLEVEL) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(INTLEVEL,1))) + +/** + * @ingroup Common_register_access_function + * @brief Set @ref IR register + * @param (uint8_t)ir Value to set @ref IR register. + * @sa getIR() + */ +#define setIR(ir) \ + WIZCHIP_WRITE(IR, (ir & 0xF0)) + +/** + * @ingroup Common_register_access_function + * @brief Get @ref IR register + * @return uint8_t. Value of @ref IR register. + * @sa setIR() + */ +#define getIR() \ + (WIZCHIP_READ(IR) & 0xF0) +/** + * @ingroup Common_register_access_function + * @brief Set @ref _IMR_ register + * @param (uint8_t)imr Value to set @ref _IMR_ register. + * @sa getIMR() + */ +#define setIMR(imr) \ + WIZCHIP_WRITE(_IMR_, imr) + +/** + * @ingroup Common_register_access_function + * @brief Get @ref _IMR_ register + * @return uint8_t. Value of @ref _IMR_ register. + * @sa setIMR() + */ +#define getIMR() \ + WIZCHIP_READ(_IMR_) + +/** + * @ingroup Common_register_access_function + * @brief Set @ref SIR register + * @param (uint8_t)sir Value to set @ref SIR register. + * @sa getSIR() + */ +#define setSIR(sir) \ + WIZCHIP_WRITE(SIR, sir) + +/** + * @ingroup Common_register_access_function + * @brief Get @ref SIR register + * @return uint8_t. Value of @ref SIR register. + * @sa setSIR() + */ +#define getSIR() \ + WIZCHIP_READ(SIR) +/** + * @ingroup Common_register_access_function + * @brief Set @ref SIMR register + * @param (uint8_t)simr Value to set @ref SIMR register. + * @sa getSIMR() + */ +#define setSIMR(simr) \ + WIZCHIP_WRITE(SIMR, simr) + +/** + * @ingroup Common_register_access_function + * @brief Get @ref SIMR register + * @return uint8_t. Value of @ref SIMR register. + * @sa setSIMR() + */ +#define getSIMR() \ + WIZCHIP_READ(SIMR) + +/** + * @ingroup Common_register_access_function + * @brief Set @ref _RTR_ register + * @param (uint16_t)rtr Value to set @ref _RTR_ register. + * @sa getRTR() + */ +#define setRTR(rtr) {\ + WIZCHIP_WRITE(_RTR_, (uint8_t)(rtr >> 8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_RTR_,1), (uint8_t) rtr); \ + } + +/** + * @ingroup Common_register_access_function + * @brief Get @ref _RTR_ register + * @return uint16_t. Value of @ref _RTR_ register. + * @sa setRTR() + */ +//M20150401 : Type explict declaration +/* +#define getRTR() \ + ((WIZCHIP_READ(_RTR_) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_RTR_,1))) +*/ +#define getRTR() \ + (((uint16_t)WIZCHIP_READ(_RTR_) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_RTR_,1))) + + +/** + * @ingroup Common_register_access_function + * @brief Set @ref _RCR_ register + * @param (uint8_t)rcr Value to set @ref _RCR_ register. + * @sa getRCR() + */ +#define setRCR(rcr) \ + WIZCHIP_WRITE(_RCR_, rcr) + +/** + * @ingroup Common_register_access_function + * @brief Get @ref _RCR_ register + * @return uint8_t. Value of @ref _RCR_ register. + * @sa setRCR() + */ +#define getRCR() \ + WIZCHIP_READ(_RCR_) + +//================================================== test done =========================================================== + +/** + * @ingroup Common_register_access_function + * @brief Set @ref PTIMER register + * @param (uint8_t)ptimer Value to set @ref PTIMER register. + * @sa getPTIMER() + */ +#define setPTIMER(ptimer) \ + WIZCHIP_WRITE(PTIMER, ptimer) + +/** + * @ingroup Common_register_access_function + * @brief Get @ref PTIMER register + * @return uint8_t. Value of @ref PTIMER register. + * @sa setPTIMER() + */ +#define getPTIMER() \ + WIZCHIP_READ(PTIMER) + +/** + * @ingroup Common_register_access_function + * @brief Set @ref PMAGIC register + * @param (uint8_t)pmagic Value to set @ref PMAGIC register. + * @sa getPMAGIC() + */ +#define setPMAGIC(pmagic) \ + WIZCHIP_WRITE(PMAGIC, pmagic) + +/** + * @ingroup Common_register_access_function + * @brief Get @ref PMAGIC register + * @return uint8_t. Value of @ref PMAGIC register. + * @sa setPMAGIC() + */ +#define getPMAGIC() \ + WIZCHIP_READ(PMAGIC) + +/** + * @ingroup Common_register_access_function + * @brief Set @ref PHAR address + * @param (uint8_t*)phar Pointer variable to set PPP destination MAC register address. It should be allocated 6 bytes. + * @sa getPHAR() + */ +#define setPHAR(phar) \ + WIZCHIP_WRITE_BUF(PHAR, phar, 6) + +/** + * @ingroup Common_register_access_function + * @brief Get @ref PHAR address + * @param (uint8_t*)phar Pointer variable to PPP destination MAC register address. It should be allocated 6 bytes. + * @sa setPHAR() + */ +#define getPHAR(phar) \ + WIZCHIP_READ_BUF(PHAR, phar, 6) + +/** + * @ingroup Common_register_access_function + * @brief Set @ref PSID register + * @param (uint16_t)psid Value to set @ref PSID register. + * @sa getPSID() + */ +#define setPSID(psid) {\ + WIZCHIP_WRITE(PSID, (uint8_t)(psid >> 8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(PSID,1), (uint8_t) psid); \ + } + +/** + * @ingroup Common_register_access_function + * @brief Get @ref PSID register + * @return uint16_t. Value of @ref PSID register. + * @sa setPSID() + */ +//uint16_t getPSID(void); +//M20150401 : Type explict declaration +/* +#define getPSID() \ + ((WIZCHIP_READ(PSID) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(PSID,1))) +*/ +#define getPSID() \ + (((uint16_t)WIZCHIP_READ(PSID) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(PSID,1))) + +/** + * @ingroup Common_register_access_function + * @brief Set @ref PMRU register + * @param (uint16_t)pmru Value to set @ref PMRU register. + * @sa getPMRU() + */ +#define setPMRU(pmru) { \ + WIZCHIP_WRITE(PMRU, (uint8_t)(pmru>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(PMRU,1), (uint8_t) pmru); \ + } + +/** + * @ingroup Common_register_access_function + * @brief Get @ref PMRU register + * @return uint16_t. Value of @ref PMRU register. + * @sa setPMRU() + */ +//M20150401 : Type explict declaration +/* +#define getPMRU() \ + ((WIZCHIP_READ(PMRU) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(PMRU,1))) +*/ +#define getPMRU() \ + (((uint16_t)WIZCHIP_READ(PMRU) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(PMRU,1))) + +/** + * @ingroup Common_register_access_function + * @brief Get unreachable IP address + * @param (uint8_t*)uipr Pointer variable to get unreachable IP address. It should be allocated 4 bytes. + */ +//M20150401 : Size Error of UIPR (6 -> 4) +/* +#define getUIPR(uipr) \ + WIZCHIP_READ_BUF(UIPR,uipr,6) +*/ +#define getUIPR(uipr) \ + WIZCHIP_READ_BUF(UIPR,uipr,4) + +/** + * @ingroup Common_register_access_function + * @brief Get @ref UPORTR register + * @return uint16_t. Value of @ref UPORTR register. + */ +//M20150401 : Type explict declaration +/* +#define getUPORTR() \ + ((WIZCHIP_READ(UPORTR) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(UPORTR,1))) +*/ +#define getUPORTR() \ + (((uint16_t)WIZCHIP_READ(UPORTR) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(UPORTR,1))) + +/** + * @ingroup Common_register_access_function + * @brief Set @ref PHYCFGR register + * @param (uint8_t)phycfgr Value to set @ref PHYCFGR register. + * @sa getPHYCFGR() + */ +#define setPHYCFGR(phycfgr) \ + WIZCHIP_WRITE(PHYCFGR, phycfgr) + +/** + * @ingroup Common_register_access_function + * @brief Get @ref PHYCFGR register + * @return uint8_t. Value of @ref PHYCFGR register. + * @sa setPHYCFGR() + */ +#define getPHYCFGR() \ + WIZCHIP_READ(PHYCFGR) + +/** + * @ingroup Common_register_access_function + * @brief Get @ref VERSIONR register + * @return uint8_t. Value of @ref VERSIONR register. + */ +#define getVERSIONR() \ + WIZCHIP_READ(VERSIONR) + +///////////////////////////////////// + +/////////////////////////////////// +// Socket N register I/O function // +/////////////////////////////////// +/** + * @ingroup Socket_register_access_function + * @brief Set @ref Sn_MR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t)mr Value to set @ref Sn_MR + * @sa getSn_MR() + */ +#define setSn_MR(sn, mr) \ + WIZCHIP_WRITE(Sn_MR(sn),mr) + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_MR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of @ref Sn_MR. + * @sa setSn_MR() + */ +#define getSn_MR(sn) \ + WIZCHIP_READ(Sn_MR(sn)) + +/** + * @ingroup Socket_register_access_function + * @brief Set @ref Sn_CR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t)cr Value to set @ref Sn_CR + * @sa getSn_CR() + */ +#define setSn_CR(sn, cr) \ + WIZCHIP_WRITE(Sn_CR(sn), cr) + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_CR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of @ref Sn_CR. + * @sa setSn_CR() + */ +#define getSn_CR(sn) \ + WIZCHIP_READ(Sn_CR(sn)) + +/** + * @ingroup Socket_register_access_function + * @brief Set @ref Sn_IR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t)ir Value to set @ref Sn_IR + * @sa getSn_IR() + */ +#define setSn_IR(sn, ir) \ + WIZCHIP_WRITE(Sn_IR(sn), (ir & 0x1F)) + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_IR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of @ref Sn_IR. + * @sa setSn_IR() + */ +#define getSn_IR(sn) \ + (WIZCHIP_READ(Sn_IR(sn)) & 0x1F) + +/** + * @ingroup Socket_register_access_function + * @brief Set @ref Sn_IMR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t)imr Value to set @ref Sn_IMR + * @sa getSn_IMR() + */ +#define setSn_IMR(sn, imr) \ + WIZCHIP_WRITE(Sn_IMR(sn), (imr & 0x1F)) + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_IMR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of @ref Sn_IMR. + * @sa setSn_IMR() + */ +#define getSn_IMR(sn) \ + (WIZCHIP_READ(Sn_IMR(sn)) & 0x1F) + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_SR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of @ref Sn_SR. + */ +#define getSn_SR(sn) \ + WIZCHIP_READ(Sn_SR(sn)) + +/** + * @ingroup Socket_register_access_function + * @brief Set @ref Sn_PORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint16_t)port Value to set @ref Sn_PORT. + * @sa getSn_PORT() + */ +#define setSn_PORT(sn, port) { \ + WIZCHIP_WRITE(Sn_PORT(sn), (uint8_t)(port >> 8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_PORT(sn),1), (uint8_t) port); \ + } + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_PORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint16_t. Value of @ref Sn_PORT. + * @sa setSn_PORT() + */ +//M20150401 : Type explict declaration +/* +#define getSn_PORT(sn) \ + ((WIZCHIP_READ(Sn_PORT(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_PORT(sn),1))) +*/ +#define getSn_PORT(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_PORT(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_PORT(sn),1))) + +/** + * @ingroup Socket_register_access_function + * @brief Set @ref Sn_DHAR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t*)dhar Pointer variable to set socket n destination hardware address. It should be allocated 6 bytes. + * @sa getSn_DHAR() + */ +#define setSn_DHAR(sn, dhar) \ + WIZCHIP_WRITE_BUF(Sn_DHAR(sn), dhar, 6) + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_MR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t*)dhar Pointer variable to get socket n destination hardware address. It should be allocated 6 bytes. + * @sa setSn_DHAR() + */ +#define getSn_DHAR(sn, dhar) \ + WIZCHIP_READ_BUF(Sn_DHAR(sn), dhar, 6) + +/** + * @ingroup Socket_register_access_function + * @brief Set @ref Sn_DIPR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t*)dipr Pointer variable to set socket n destination IP address. It should be allocated 4 bytes. + * @sa getSn_DIPR() + */ +#define setSn_DIPR(sn, dipr) \ + WIZCHIP_WRITE_BUF(Sn_DIPR(sn), dipr, 4) + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_DIPR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t*)dipr Pointer variable to get socket n destination IP address. It should be allocated 4 bytes. + * @sa setSn_DIPR() + */ +#define getSn_DIPR(sn, dipr) \ + WIZCHIP_READ_BUF(Sn_DIPR(sn), dipr, 4) + +/** + * @ingroup Socket_register_access_function + * @brief Set @ref Sn_DPORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint16_t)dport Value to set @ref Sn_DPORT + * @sa getSn_DPORT() + */ +#define setSn_DPORT(sn, dport) { \ + WIZCHIP_WRITE(Sn_DPORT(sn), (uint8_t) (dport>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_DPORT(sn),1), (uint8_t) dport); \ + } + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_DPORT register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint16_t. Value of @ref Sn_DPORT. + * @sa setSn_DPORT() + */ +//M20150401 : Type explict declaration +/* +#define getSn_DPORT(sn) \ + ((WIZCHIP_READ(Sn_DPORT(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_DPORT(sn),1))) +*/ +#define getSn_DPORT(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_DPORT(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_DPORT(sn),1))) + +/** + * @ingroup Socket_register_access_function + * @brief Set @ref Sn_MSSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint16_t)mss Value to set @ref Sn_MSSR + * @sa setSn_MSSR() + */ +#define setSn_MSSR(sn, mss) { \ + WIZCHIP_WRITE(Sn_MSSR(sn), (uint8_t)(mss>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_MSSR(sn),1), (uint8_t) mss); \ + } + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_MSSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint16_t. Value of @ref Sn_MSSR. + * @sa setSn_MSSR() + */ +//M20150401 : Type explict declaration +/* +#define getSn_MSSR(sn) \ + ((WIZCHIP_READ(Sn_MSSR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_MSSR(sn),1))) +*/ +#define getSn_MSSR(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_MSSR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_MSSR(sn),1))) + +/** + * @ingroup Socket_register_access_function + * @brief Set @ref Sn_TOS register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t)tos Value to set @ref Sn_TOS + * @sa getSn_TOS() + */ +#define setSn_TOS(sn, tos) \ + WIZCHIP_WRITE(Sn_TOS(sn), tos) + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_TOS register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of Sn_TOS. + * @sa setSn_TOS() + */ +#define getSn_TOS(sn) \ + WIZCHIP_READ(Sn_TOS(sn)) + +/** + * @ingroup Socket_register_access_function + * @brief Set @ref Sn_TTL register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t)ttl Value to set @ref Sn_TTL + * @sa getSn_TTL() + */ +#define setSn_TTL(sn, ttl) \ + WIZCHIP_WRITE(Sn_TTL(sn), ttl) + + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_TTL register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of @ref Sn_TTL. + * @sa setSn_TTL() + */ +#define getSn_TTL(sn) \ + WIZCHIP_READ(Sn_TTL(sn)) + + +/** + * @ingroup Socket_register_access_function + * @brief Set @ref Sn_RXBUF_SIZE register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t)rxbufsize Value to set @ref Sn_RXBUF_SIZE + * @sa getSn_RXBUF_SIZE() + */ +#define setSn_RXBUF_SIZE(sn, rxbufsize) \ + WIZCHIP_WRITE(Sn_RXBUF_SIZE(sn),rxbufsize) + + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_RXBUF_SIZE register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of @ref Sn_RXBUF_SIZE. + * @sa setSn_RXBUF_SIZE() + */ +#define getSn_RXBUF_SIZE(sn) \ + WIZCHIP_READ(Sn_RXBUF_SIZE(sn)) + +/** + * @ingroup Socket_register_access_function + * @brief Set @ref Sn_TXBUF_SIZE register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t)txbufsize Value to set @ref Sn_TXBUF_SIZE + * @sa getSn_TXBUF_SIZE() + */ +#define setSn_TXBUF_SIZE(sn, txbufsize) \ + WIZCHIP_WRITE(Sn_TXBUF_SIZE(sn), txbufsize) + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_TXBUF_SIZE register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of @ref Sn_TXBUF_SIZE. + * @sa setSn_TXBUF_SIZE() + */ +#define getSn_TXBUF_SIZE(sn) \ + WIZCHIP_READ(Sn_TXBUF_SIZE(sn)) + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_TX_FSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint16_t. Value of @ref Sn_TX_FSR. + */ +uint16_t getSn_TX_FSR(uint8_t sn); + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_TX_RD register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint16_t. Value of @ref Sn_TX_RD. + */ +//M20150401 : Type explict declaration +/* +#define getSn_TX_RD(sn) \ + ((WIZCHIP_READ(Sn_TX_RD(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_RD(sn),1))) +*/ +#define getSn_TX_RD(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_TX_RD(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_RD(sn),1))) + +/** + * @ingroup Socket_register_access_function + * @brief Set @ref Sn_TX_WR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint16_t)txwr Value to set @ref Sn_TX_WR + * @sa GetSn_TX_WR() + */ +#define setSn_TX_WR(sn, txwr) { \ + WIZCHIP_WRITE(Sn_TX_WR(sn), (uint8_t)(txwr>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_TX_WR(sn),1), (uint8_t) txwr); \ + } + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_TX_WR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint16_t. Value of @ref Sn_TX_WR. + * @sa setSn_TX_WR() + */ +//M20150401 : Type explict declaration +/* +#define getSn_TX_WR(sn) \ + ((WIZCHIP_READ(Sn_TX_WR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_WR(sn),1))) +*/ +#define getSn_TX_WR(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_TX_WR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_WR(sn),1))) + + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_RX_RSR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint16_t. Value of @ref Sn_RX_RSR. + */ +uint16_t getSn_RX_RSR(uint8_t sn); + + +/** + * @ingroup Socket_register_access_function + * @brief Set @ref Sn_RX_RD register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint16_t)rxrd Value to set @ref Sn_RX_RD + * @sa getSn_RX_RD() + */ +#define setSn_RX_RD(sn, rxrd) { \ + WIZCHIP_WRITE(Sn_RX_RD(sn), (uint8_t)(rxrd>>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_RX_RD(sn),1), (uint8_t) rxrd); \ + } + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_RX_RD register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint16_t. Value of @ref Sn_RX_RD. + * @sa setSn_RX_RD() + */ +//M20150401 : Type explict declaration +/* +#define getSn_RX_RD(sn) \ + ((WIZCHIP_READ(Sn_RX_RD(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RD(sn),1))) +*/ +#define getSn_RX_RD(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_RX_RD(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RD(sn),1))) + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_RX_WR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint16_t. Value of @ref Sn_RX_WR. + */ +//M20150401 : Type explict declaration +/* +#define getSn_RX_WR(sn) \ + ((WIZCHIP_READ(Sn_RX_WR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_WR(sn),1))) +*/ +#define getSn_RX_WR(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_RX_WR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_WR(sn),1))) + +/** + * @ingroup Socket_register_access_function + * @brief Set @ref Sn_FRAG register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint16_t)frag Value to set @ref Sn_FRAG + * @sa getSn_FRAD() + */ +#define setSn_FRAG(sn, frag) { \ + WIZCHIP_WRITE(Sn_FRAG(sn), (uint8_t)(frag >>8)); \ + WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_FRAG(sn),1), (uint8_t) frag); \ + } + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_FRAG register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint16_t. Value of @ref Sn_FRAG. + * @sa setSn_FRAG() + */ +//M20150401 : Type explict declaration +/* +#define getSn_FRAG(sn) \ + ((WIZCHIP_READ(Sn_FRAG(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_FRAG(sn),1))) +*/ +#define getSn_FRAG(sn) \ + (((uint16_t)WIZCHIP_READ(Sn_FRAG(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_FRAG(sn),1))) + +/** + * @ingroup Socket_register_access_function + * @brief Set @ref Sn_KPALVTR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param (uint8_t)kpalvt Value to set @ref Sn_KPALVTR + * @sa getSn_KPALVTR() + */ +#define setSn_KPALVTR(sn, kpalvt) \ + WIZCHIP_WRITE(Sn_KPALVTR(sn), kpalvt) + +/** + * @ingroup Socket_register_access_function + * @brief Get @ref Sn_KPALVTR register + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint8_t. Value of @ref Sn_KPALVTR. + * @sa setSn_KPALVTR() + */ +#define getSn_KPALVTR(sn) \ + WIZCHIP_READ(Sn_KPALVTR(sn)) + +////////////////////////////////////// + +///////////////////////////////////// +// Sn_TXBUF & Sn_RXBUF IO function // +///////////////////////////////////// +/** + * @brief Socket_register_access_function + * @brief Gets the max buffer size of socket sn passed as parameter. + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint16_t. Value of Socket n RX max buffer size. + */ +//M20150401 : Type explict declaration +/* +#define getSn_RxMAX(sn) \ + (getSn_RXBUF_SIZE(sn) << 10) +*/ +#define getSn_RxMAX(sn) \ + (((uint16_t)getSn_RXBUF_SIZE(sn)) << 10) + +/** + * @brief Socket_register_access_function + * @brief Gets the max buffer size of socket sn passed as parameters. + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @return uint16_t. Value of Socket n TX max buffer size. + */ +//M20150401 : Type explict declaration +/* +#define getSn_TxMAX(sn) \ + (getSn_TXBUF_SIZE(sn) << 10) +*/ +#define getSn_TxMAX(sn) \ + (((uint16_t)getSn_TXBUF_SIZE(sn)) << 10) + +/** + * @ingroup Basic_IO_function + * @brief It copies data to internal TX memory + * + * @details This function reads the Tx write pointer register and after that, + * it copies the wizdata(pointer buffer) of the length of len(variable) bytes to internal TX memory + * and updates the Tx write pointer register. + * This function is being called by send() and sendto() function also. + * + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param wizdata Pointer buffer to write data + * @param len Data length + * @sa wiz_recv_data() + */ +void wiz_send_data(uint8_t sn, uint8_t *wizdata, uint16_t len); + +/** + * @ingroup Basic_IO_function + * @brief It copies data to your buffer from internal RX memory + * + * @details This function read the Rx read pointer register and after that, + * it copies the received data from internal RX memory + * to wizdata(pointer variable) of the length of len(variable) bytes. + * This function is being called by recv() also. + * + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param wizdata Pointer buffer to read data + * @param len Data length + * @sa wiz_send_data() + */ +void wiz_recv_data(uint8_t sn, uint8_t *wizdata, uint16_t len); + +/** + * @ingroup Basic_IO_function + * @brief It discard the received data in RX memory. + * @details It discards the data of the length of len(variable) bytes in internal RX memory. + * @param (uint8_t)sn Socket number. It should be 0 ~ 7. + * @param len Data length + */ +void wiz_recv_ignore(uint8_t sn, uint16_t len); + +/// @cond DOXY_APPLY_CODE +#endif +/// @endcond + +#ifdef __cplusplus +} +#endif + +#endif // _W5500_H_ diff --git a/User/ioLibrary_Driver/Ethernet/socket.c b/User/ioLibrary_Driver/Ethernet/socket.c new file mode 100644 index 0000000..412a65d --- /dev/null +++ b/User/ioLibrary_Driver/Ethernet/socket.c @@ -0,0 +1,931 @@ +//***************************************************************************** +// +//! \file socket.c +//! \brief SOCKET APIs Implements file. +//! \details SOCKET APIs like as Berkeley Socket APIs. +//! \version 1.0.3 +//! \date 2013/10/21 +//! \par Revision history +//! <2015/02/05> Notice +//! The version history is not updated after this point. +//! Download the latest version directly from GitHub. Please visit the our GitHub repository for ioLibrary. +//! >> https://github.com/Wiznet/ioLibrary_Driver +//! <2014/05/01> V1.0.3. Refer to M20140501 +//! 1. Implicit type casting -> Explicit type casting. +//! 2. replace 0x01 with PACK_REMAINED in recvfrom() +//! 3. Validation a destination ip in connect() & sendto(): +//! It occurs a fatal error on converting unint32 address if uint8* addr parameter is not aligned by 4byte address. +//! Copy 4 byte addr value into temporary uint32 variable and then compares it. +//! <2013/12/20> V1.0.2 Refer to M20131220 +//! Remove Warning. +//! <2013/11/04> V1.0.1 2nd Release. Refer to "20131104". +//! In sendto(), Add to clear timeout interrupt status (Sn_IR_TIMEOUT) +//! <2013/10/21> 1st Release +//! \author MidnightCow +//! \copyright +//! +//! Copyright (c) 2013, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** +#include "socket.h" + +//M20150401 : Typing Error +//#define SOCK_ANY_PORT_NUM 0xC000; +#define SOCK_ANY_PORT_NUM 0xC000 + +static uint16_t sock_any_port = SOCK_ANY_PORT_NUM; +static uint16_t sock_io_mode = 0; +static uint16_t sock_is_sending = 0; + +static uint16_t sock_remained_size[_WIZCHIP_SOCK_NUM_] = {0,0,}; + +//M20150601 : For extern decleation +//static uint8_t sock_pack_info[_WIZCHIP_SOCK_NUM_] = {0,}; +uint8_t sock_pack_info[_WIZCHIP_SOCK_NUM_] = {0,}; +// + +#if _WIZCHIP_ == 5200 + static uint16_t sock_next_rd[_WIZCHIP_SOCK_NUM_] ={0,}; +#endif + +//A20150601 : For integrating with W5300 +#if _WIZCHIP_ == 5300 + uint8_t sock_remained_byte[_WIZCHIP_SOCK_NUM_] = {0,}; // set by wiz_recv_data() +#endif + + +#define CHECK_SOCKNUM() \ + do{ \ + if(sn > _WIZCHIP_SOCK_NUM_) return SOCKERR_SOCKNUM; \ + }while(0); \ + +#define CHECK_SOCKMODE(mode) \ + do{ \ + if((getSn_MR(sn) & 0x0F) != mode) return SOCKERR_SOCKMODE; \ + }while(0); \ + +#define CHECK_SOCKINIT() \ + do{ \ + if((getSn_SR(sn) != SOCK_INIT)) return SOCKERR_SOCKINIT; \ + }while(0); \ + +#define CHECK_SOCKDATA() \ + do{ \ + if(len == 0) return SOCKERR_DATALEN; \ + }while(0); \ + + + +int8_t socket(uint8_t sn, uint8_t protocol, uint16_t port, uint8_t flag) +{ + CHECK_SOCKNUM(); + switch(protocol) + { + case Sn_MR_TCP : + { + //M20150601 : Fixed the warning - taddr will never be NULL + /* + uint8_t taddr[4]; + getSIPR(taddr); + */ + uint32_t taddr; + getSIPR((uint8_t*)&taddr); + if(taddr == 0) return SOCKERR_SOCKINIT; + break; + } + case Sn_MR_UDP : + case Sn_MR_MACRAW : + case Sn_MR_IPRAW : + break; + #if ( _WIZCHIP_ < 5200 ) + case Sn_MR_PPPoE : + break; + #endif + default : + return SOCKERR_SOCKMODE; + } + //M20150601 : For SF_TCP_ALIGN & W5300 + //if((flag & 0x06) != 0) return SOCKERR_SOCKFLAG; + if((flag & 0x04) != 0) return SOCKERR_SOCKFLAG; +#if _WIZCHIP_ == 5200 + if(flag & 0x10) return SOCKERR_SOCKFLAG; +#endif + + if(flag != 0) + { + switch(protocol) + { + case Sn_MR_TCP: + //M20150601 : For SF_TCP_ALIGN & W5300 + #if _WIZCHIP_ == 5300 + if((flag & (SF_TCP_NODELAY|SF_IO_NONBLOCK|SF_TCP_ALIGN))==0) return SOCKERR_SOCKFLAG; + #else + if((flag & (SF_TCP_NODELAY|SF_IO_NONBLOCK))==0) return SOCKERR_SOCKFLAG; + #endif + + break; + case Sn_MR_UDP: + if(flag & SF_IGMP_VER2) + { + if((flag & SF_MULTI_ENABLE)==0) return SOCKERR_SOCKFLAG; + } + #if _WIZCHIP_ == 5500 + if(flag & SF_UNI_BLOCK) + { + if((flag & SF_MULTI_ENABLE) == 0) return SOCKERR_SOCKFLAG; + } + #endif + break; + default: + break; + } + } + close(sn); + //M20150601 + #if _WIZCHIP_ == 5300 + setSn_MR(sn, ((uint16_t)(protocol | (flag & 0xF0))) | (((uint16_t)(flag & 0x02)) << 7) ); + #else + setSn_MR(sn, (protocol | (flag & 0xF0))); + #endif + if(!port) + { + port = sock_any_port++; + if(sock_any_port == 0xFFF0) sock_any_port = SOCK_ANY_PORT_NUM; + } + setSn_PORT(sn,port); + setSn_CR(sn,Sn_CR_OPEN); + while(getSn_CR(sn)); + //A20150401 : For release the previous sock_io_mode + sock_io_mode &= ~(1 < sn + //if( ((getSn_MR(s)& 0x0F) == Sn_MR_TCP) && (getSn_TX_FSR(s) != getSn_TxMAX(s)) ) + if( ((getSn_MR(sn)& 0x0F) == Sn_MR_TCP) && (getSn_TX_FSR(sn) != getSn_TxMAX(sn)) ) + { + uint8_t destip[4] = {0, 0, 0, 1}; + // TODO + // You can wait for completing to sending data; + // wait about 1 second; + // if you have completed to send data, skip the code of erratum 1 + // ex> wait_1s(); + // if (getSn_TX_FSR(s) == getSn_TxMAX(s)) continue; + // + //M20160503 : The socket() of close() calls close() itself again. It occures a infinite loop - close()->socket()->close()->socket()-> ~ + //socket(s,Sn_MR_UDP,0x3000,0); + //sendto(s,destip,1,destip,0x3000); // send the dummy data to an unknown destination(0.0.0.1). + setSn_MR(sn,Sn_MR_UDP); + setSn_PORTR(sn, 0x3000); + setSn_CR(sn,Sn_CR_OPEN); + while(getSn_CR(sn) != 0); + while(getSn_SR(sn) != SOCK_UDP); + sendto(sn,destip,1,destip,0x3000); // send the dummy data to an unknown destination(0.0.0.1). + }; +#endif + setSn_CR(sn,Sn_CR_CLOSE); + /* wait to process the command... */ + while( getSn_CR(sn) ); + /* clear all interrupt of the socket. */ + setSn_IR(sn, 0xFF); + //A20150401 : Release the sock_io_mode of socket n. + sock_io_mode &= ~(1< freesize) len = freesize; // check size not to exceed MAX size. + while(1) + { + freesize = getSn_TX_FSR(sn); + tmp = getSn_SR(sn); + if ((tmp != SOCK_ESTABLISHED) && (tmp != SOCK_CLOSE_WAIT)) + { + close(sn); + return SOCKERR_SOCKSTATUS; + } + if( (sock_io_mode & (1< freesize) ) return SOCK_BUSY; + if(len <= freesize) break; + } + wiz_send_data(sn, buf, len); + #if _WIZCHIP_ == 5200 + sock_next_rd[sn] = getSn_TX_RD(sn) + len; + #endif + + #if _WIZCHIP_ == 5300 + setSn_TX_WRSR(sn,len); + #endif + + setSn_CR(sn,Sn_CR_SEND); + /* wait to process the command... */ + while(getSn_CR(sn)); + sock_is_sending |= (1 << sn); + //M20150409 : Explicit Type Casting + //return len; + return (int32_t)len; +} + + +int32_t recv(uint8_t sn, uint8_t * buf, uint16_t len) +{ + uint8_t tmp = 0; + uint16_t recvsize = 0; +//A20150601 : For integarating with W5300 +#if _WIZCHIP_ == 5300 + uint8_t head[2]; + uint16_t mr; +#endif +// + CHECK_SOCKNUM(); + CHECK_SOCKMODE(Sn_MR_TCP); + CHECK_SOCKDATA(); + + recvsize = getSn_RxMAX(sn); + if(recvsize < len) len = recvsize; + +//A20150601 : For Integrating with W5300 +#if _WIZCHIP_ == 5300 + //sock_pack_info[sn] = PACK_COMPLETED; // for clear + if(sock_remained_size[sn] == 0) + { +#endif +// + while(1) + { + recvsize = getSn_RX_RSR(sn); + tmp = getSn_SR(sn); + if (tmp != SOCK_ESTABLISHED) + { + if(tmp == SOCK_CLOSE_WAIT) + { + if(recvsize != 0) break; + else if(getSn_TX_FSR(sn) == getSn_TxMAX(sn)) + { + close(sn); + return SOCKERR_SOCKSTATUS; + } + } + else + { + close(sn); + return SOCKERR_SOCKSTATUS; + } + } + if((sock_io_mode & (1< sock_remained_size[sn]) len = sock_remained_size[sn]; + recvsize = len; + if(sock_pack_info[sn] & PACK_FIFOBYTE) + { + *buf = sock_remained_byte[sn]; + buf++; + sock_pack_info[sn] &= ~(PACK_FIFOBYTE); + recvsize -= 1; + sock_remained_size[sn] -= 1; + } + if(recvsize != 0) + { + wiz_recv_data(sn, buf, recvsize); + setSn_CR(sn,Sn_CR_RECV); + while(getSn_CR(sn)); + } + sock_remained_size[sn] -= recvsize; + if(sock_remained_size[sn] != 0) + { + sock_pack_info[sn] |= PACK_REMAINED; + if(recvsize & 0x1) sock_pack_info[sn] |= PACK_FIFOBYTE; + } + else sock_pack_info[sn] = PACK_COMPLETED; + if(getSn_MR(sn) & Sn_MR_ALIGN) sock_remained_size[sn] = 0; + //len = recvsize; +#else + if(recvsize < len) len = recvsize; + wiz_recv_data(sn, buf, len); + setSn_CR(sn,Sn_CR_RECV); + while(getSn_CR(sn)); +#endif + + //M20150409 : Explicit Type Casting + //return len; + return (int32_t)len; +} + +int32_t sendto(uint8_t sn, uint8_t * buf, uint16_t len, uint8_t * addr, uint16_t port) +{ + uint8_t tmp = 0; + uint16_t freesize = 0; + uint32_t taddr; + + CHECK_SOCKNUM(); + switch(getSn_MR(sn) & 0x0F) + { + case Sn_MR_UDP: + case Sn_MR_MACRAW: +// break; +// #if ( _WIZCHIP_ < 5200 ) + case Sn_MR_IPRAW: + break; +// #endif + default: + return SOCKERR_SOCKMODE; + } + CHECK_SOCKDATA(); + //M20140501 : For avoiding fatal error on memory align mismatched + //if(*((uint32_t*)addr) == 0) return SOCKERR_IPINVALID; + //{ + //uint32_t taddr; + taddr = ((uint32_t)addr[0]) & 0x000000FF; + taddr = (taddr << 8) + ((uint32_t)addr[1] & 0x000000FF); + taddr = (taddr << 8) + ((uint32_t)addr[2] & 0x000000FF); + taddr = (taddr << 8) + ((uint32_t)addr[3] & 0x000000FF); + //} + // + //if(*((uint32_t*)addr) == 0) return SOCKERR_IPINVALID; + if((taddr == 0) && ((getSn_MR(sn)&Sn_MR_MACRAW) != Sn_MR_MACRAW)) return SOCKERR_IPINVALID; + if((port == 0) && ((getSn_MR(sn)&Sn_MR_MACRAW) != Sn_MR_MACRAW)) return SOCKERR_PORTZERO; + tmp = getSn_SR(sn); +//#if ( _WIZCHIP_ < 5200 ) + if((tmp != SOCK_MACRAW) && (tmp != SOCK_UDP) && (tmp != SOCK_IPRAW)) return SOCKERR_SOCKSTATUS; +//#else +// if(tmp != SOCK_MACRAW && tmp != SOCK_UDP) return SOCKERR_SOCKSTATUS; +//#endif + + setSn_DIPR(sn,addr); + setSn_DPORT(sn,port); + freesize = getSn_TxMAX(sn); + if (len > freesize) len = freesize; // check size not to exceed MAX size. + while(1) + { + freesize = getSn_TX_FSR(sn); + if(getSn_SR(sn) == SOCK_CLOSED) return SOCKERR_SOCKCLOSED; + if( (sock_io_mode & (1< freesize) ) return SOCK_BUSY; + if(len <= freesize) break; + }; + wiz_send_data(sn, buf, len); + + #if _WIZCHIP_ < 5500 //M20150401 : for WIZCHIP Errata #4, #5 (ARP errata) + getSIPR((uint8_t*)&taddr); + if(taddr == 0) + { + getSUBR((uint8_t*)&taddr); + setSUBR((uint8_t*)"\x00\x00\x00\x00"); + } + else taddr = 0; + #endif + +//A20150601 : For W5300 +#if _WIZCHIP_ == 5300 + setSn_TX_WRSR(sn, len); +#endif +// + setSn_CR(sn,Sn_CR_SEND); + /* wait to process the command... */ + while(getSn_CR(sn)); + while(1) + { + tmp = getSn_IR(sn); + if(tmp & Sn_IR_SENDOK) + { + setSn_IR(sn, Sn_IR_SENDOK); + break; + } + //M:20131104 + //else if(tmp & Sn_IR_TIMEOUT) return SOCKERR_TIMEOUT; + else if(tmp & Sn_IR_TIMEOUT) + { + setSn_IR(sn, Sn_IR_TIMEOUT); + //M20150409 : Fixed the lost of sign bits by type casting. + //len = (uint16_t)SOCKERR_TIMEOUT; + //break; + #if _WIZCHIP_ < 5500 //M20150401 : for WIZCHIP Errata #4, #5 (ARP errata) + if(taddr) setSUBR((uint8_t*)&taddr); + #endif + return SOCKERR_TIMEOUT; + } + //////////// + } + #if _WIZCHIP_ < 5500 //M20150401 : for WIZCHIP Errata #4, #5 (ARP errata) + if(taddr) setSUBR((uint8_t*)&taddr); + #endif + //M20150409 : Explicit Type Casting + //return len; + return (int32_t)len; +} + + + +int32_t recvfrom(uint8_t sn, uint8_t * buf, uint16_t len, uint8_t * addr, uint16_t *port) +{ +//M20150601 : For W5300 +#if _WIZCHIP_ == 5300 + uint16_t mr; + uint16_t mr1; +#else + uint8_t mr; +#endif +// + uint8_t head[8]; + uint16_t pack_len=0; + + CHECK_SOCKNUM(); + //CHECK_SOCKMODE(Sn_MR_UDP); +//A20150601 +#if _WIZCHIP_ == 5300 + mr1 = getMR(); +#endif + + switch((mr=getSn_MR(sn)) & 0x0F) + { + case Sn_MR_UDP: + case Sn_MR_IPRAW: + case Sn_MR_MACRAW: + break; + #if ( _WIZCHIP_ < 5200 ) + case Sn_MR_PPPoE: + break; + #endif + default: + return SOCKERR_SOCKMODE; + } + CHECK_SOCKDATA(); + if(sock_remained_size[sn] == 0) + { + while(1) + { + pack_len = getSn_RX_RSR(sn); + if(getSn_SR(sn) == SOCK_CLOSED) return SOCKERR_SOCKCLOSED; + if( (sock_io_mode & (1< 1514) + { + close(sn); + return SOCKFATAL_PACKLEN; + } + sock_pack_info[sn] = PACK_FIRST; + } + if(len < sock_remained_size[sn]) pack_len = len; + else pack_len = sock_remained_size[sn]; + wiz_recv_data(sn,buf,pack_len); + break; + //#if ( _WIZCHIP_ < 5200 ) + case Sn_MR_IPRAW: + if(sock_remained_size[sn] == 0) + { + wiz_recv_data(sn, head, 6); + setSn_CR(sn,Sn_CR_RECV); + while(getSn_CR(sn)); + addr[0] = head[0]; + addr[1] = head[1]; + addr[2] = head[2]; + addr[3] = head[3]; + sock_remained_size[sn] = head[4]; + //M20150401 : For Typing Error + //sock_remaiend_size[sn] = (sock_remained_size[sn] << 8) + head[5]; + sock_remained_size[sn] = (sock_remained_size[sn] << 8) + head[5]; + sock_pack_info[sn] = PACK_FIRST; + } + // + // Need to packet length check + // + if(len < sock_remained_size[sn]) pack_len = len; + else pack_len = sock_remained_size[sn]; + wiz_recv_data(sn, buf, pack_len); // data copy. + break; + //#endif + default: + wiz_recv_ignore(sn, pack_len); // data copy. + sock_remained_size[sn] = pack_len; + break; + } + setSn_CR(sn,Sn_CR_RECV); + /* wait to process the command... */ + while(getSn_CR(sn)) ; + sock_remained_size[sn] -= pack_len; + //M20150601 : + //if(sock_remained_size[sn] != 0) sock_pack_info[sn] |= 0x01; + if(sock_remained_size[sn] != 0) + { + sock_pack_info[sn] |= PACK_REMAINED; + #if _WIZCHIP_ == 5300 + if(pack_len & 0x01) sock_pack_info[sn] |= PACK_FIFOBYTE; + #endif + } + else sock_pack_info[sn] = PACK_COMPLETED; +#if _WIZCHIP_ == 5300 + pack_len = len; +#endif + // + //M20150409 : Explicit Type Casting + //return pack_len; + return (int32_t)pack_len; +} + + +int8_t ctlsocket(uint8_t sn, ctlsock_type cstype, void* arg) +{ + uint8_t tmp = 0; + CHECK_SOCKNUM(); + switch(cstype) + { + case CS_SET_IOMODE: + tmp = *((uint8_t*)arg); + if(tmp == SOCK_IO_NONBLOCK) sock_io_mode |= (1< explict type casting + //*((uint8_t*)arg) = (sock_io_mode >> sn) & 0x0001; + *((uint8_t*)arg) = (uint8_t)((sock_io_mode >> sn) & 0x0001); + // + break; + case CS_GET_MAXTXBUF: + *((uint16_t*)arg) = getSn_TxMAX(sn); + break; + case CS_GET_MAXRXBUF: + *((uint16_t*)arg) = getSn_RxMAX(sn); + break; + case CS_CLR_INTERRUPT: + if( (*(uint8_t*)arg) > SIK_ALL) return SOCKERR_ARG; + setSn_IR(sn,*(uint8_t*)arg); + break; + case CS_GET_INTERRUPT: + *((uint8_t*)arg) = getSn_IR(sn); + break; + #if _WIZCHIP_ != 5100 + case CS_SET_INTMASK: + if( (*(uint8_t*)arg) > SIK_ALL) return SOCKERR_ARG; + setSn_IMR(sn,*(uint8_t*)arg); + break; + case CS_GET_INTMASK: + *((uint8_t*)arg) = getSn_IMR(sn); + break; + #endif + default: + return SOCKERR_ARG; + } + return SOCK_OK; +} + +int8_t setsockopt(uint8_t sn, sockopt_type sotype, void* arg) +{ + // M20131220 : Remove warning + //uint8_t tmp; + CHECK_SOCKNUM(); + switch(sotype) + { + case SO_TTL: + setSn_TTL(sn,*(uint8_t*)arg); + break; + case SO_TOS: + setSn_TOS(sn,*(uint8_t*)arg); + break; + case SO_MSS: + setSn_MSSR(sn,*(uint16_t*)arg); + break; + case SO_DESTIP: + setSn_DIPR(sn, (uint8_t*)arg); + break; + case SO_DESTPORT: + setSn_DPORT(sn, *(uint16_t*)arg); + break; +#if _WIZCHIP_ != 5100 + case SO_KEEPALIVESEND: + CHECK_SOCKMODE(Sn_MR_TCP); + #if _WIZCHIP_ > 5200 + if(getSn_KPALVTR(sn) != 0) return SOCKERR_SOCKOPT; + #endif + setSn_CR(sn,Sn_CR_SEND_KEEP); + while(getSn_CR(sn) != 0) + { + // M20131220 + //if ((tmp = getSn_IR(sn)) & Sn_IR_TIMEOUT) + if (getSn_IR(sn) & Sn_IR_TIMEOUT) + { + setSn_IR(sn, Sn_IR_TIMEOUT); + return SOCKERR_TIMEOUT; + } + } + break; + #if !( (_WIZCHIP_ == 5100) || (_WIZCHIP_ == 5200) ) + case SO_KEEPALIVEAUTO: + CHECK_SOCKMODE(Sn_MR_TCP); + setSn_KPALVTR(sn,*(uint8_t*)arg); + break; + #endif +#endif + default: + return SOCKERR_ARG; + } + return SOCK_OK; +} + +int8_t getsockopt(uint8_t sn, sockopt_type sotype, void* arg) +{ + CHECK_SOCKNUM(); + switch(sotype) + { + case SO_FLAG: + *(uint8_t*)arg = getSn_MR(sn) & 0xF0; + break; + case SO_TTL: + *(uint8_t*) arg = getSn_TTL(sn); + break; + case SO_TOS: + *(uint8_t*) arg = getSn_TOS(sn); + break; + case SO_MSS: + *(uint16_t*) arg = getSn_MSSR(sn); + break; + case SO_DESTIP: + getSn_DIPR(sn, (uint8_t*)arg); + break; + case SO_DESTPORT: + *(uint16_t*) arg = getSn_DPORT(sn); + break; + #if _WIZCHIP_ > 5200 + case SO_KEEPALIVEAUTO: + CHECK_SOCKMODE(Sn_MR_TCP); + *(uint16_t*) arg = getSn_KPALVTR(sn); + break; + #endif + case SO_SENDBUF: + *(uint16_t*) arg = getSn_TX_FSR(sn); + break; + case SO_RECVBUF: + *(uint16_t*) arg = getSn_RX_RSR(sn); + break; + case SO_STATUS: + *(uint8_t*) arg = getSn_SR(sn); + break; + case SO_REMAINSIZE: + if(getSn_MR(sn) & Sn_MR_TCP) + *(uint16_t*)arg = getSn_RX_RSR(sn); + else + *(uint16_t*)arg = sock_remained_size[sn]; + break; + case SO_PACKINFO: + //CHECK_SOCKMODE(Sn_MR_TCP); +#if _WIZCHIP_ != 5300 + if((getSn_MR(sn) == Sn_MR_TCP)) + return SOCKERR_SOCKMODE; +#endif + *(uint8_t*)arg = sock_pack_info[sn]; + break; + default: + return SOCKERR_SOCKOPT; + } + return SOCK_OK; +} diff --git a/User/ioLibrary_Driver/Ethernet/socket.h b/User/ioLibrary_Driver/Ethernet/socket.h new file mode 100644 index 0000000..72469a7 --- /dev/null +++ b/User/ioLibrary_Driver/Ethernet/socket.h @@ -0,0 +1,489 @@ +//***************************************************************************** +// +//! \file socket.h +//! \brief SOCKET APIs Header file. +//! \details SOCKET APIs like as berkeley socket api. +//! \version 1.0.2 +//! \date 2013/10/21 +//! \par Revision history +//! <2015/02/05> Notice +//! The version history is not updated after this point. +//! Download the latest version directly from GitHub. Please visit the our GitHub repository for ioLibrary. +//! >> https://github.com/Wiznet/ioLibrary_Driver +//! <2014/05/01> V1.0.2. Refer to M20140501 +//! 1. Modify the comment : SO_REMAINED -> PACK_REMAINED +//! 2. Add the comment as zero byte udp data reception in getsockopt(). +//! <2013/10/21> 1st Release +//! \author MidnightCow +//! \copyright +//! +//! Copyright (c) 2013, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** +/** + * @defgroup WIZnet_socket_APIs 1. WIZnet socket APIs + * @brief WIZnet socket APIs are based on Berkeley socket APIs, thus it has much similar name and interface. + * But there is a little bit of difference. + * @details + * Comparison between WIZnet and Berkeley SOCKET APIs + * + * + * + * + * + * + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      API WIZnet Berkeley
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      socket() O O
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      bind() X O
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      listen() O O
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      connect() O O
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      accept() X O
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      recv() O O
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      send() O O
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      recvfrom() O O
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      sendto() O O
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      closesocket() O
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      close() & disconnect()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      O
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * There are @b bind() and @b accept() functions in @b Berkeley SOCKET API but, + * not in @b WIZnet SOCKET API. Because socket() of WIZnet is not only creating a SOCKET but also binding a local port number, + * and listen() of WIZnet is not only listening to connection request from client but also accepting the connection request. \n + * When you program "TCP SERVER" with Berkeley SOCKET API, you can use only one listen port. + * When the listen SOCKET accepts a connection request from a client, it keeps listening. + * After accepting the connection request, a new SOCKET is created and the new SOCKET is used in communication with the client. \n + * Following figure shows network flow diagram by Berkeley SOCKET API. + * @image html Berkeley_SOCKET.jpg "" + * But, When you program "TCP SERVER" with WIZnet SOCKET API, you can use as many as 8 listen SOCKET with same port number. \n + * Because there's no accept() in WIZnet SOCKET APIs, when the listen SOCKET accepts a connection request from a client, + * it is changed in order to communicate with the client. + * And the changed SOCKET is not listening any more and is dedicated for communicating with the client. \n + * If there're many listen SOCKET with same listen port number and a client requests a connection, + * the SOCKET which has the smallest SOCKET number accepts the request and is changed as communication SOCKET. \n + * Following figure shows network flow diagram by WIZnet SOCKET API. + * @image html WIZnet_SOCKET.jpg "" + */ +#ifndef _SOCKET_H_ +#define _SOCKET_H_ +#ifdef __cplusplus + extern "C" { +#endif + +#include "wizchip_conf.h" + +#define SOCKET uint8_t ///< SOCKET type define for legacy driver + +#define SOCK_OK 1 ///< Result is OK about socket process. +#define SOCK_BUSY 0 ///< Socket is busy on processing the operation. Valid only Non-block IO Mode. +#define SOCK_FATAL -1000 ///< Result is fatal error about socket process. + +#define SOCK_ERROR 0 +#define SOCKERR_SOCKNUM (SOCK_ERROR - 1) ///< Invalid socket number +#define SOCKERR_SOCKOPT (SOCK_ERROR - 2) ///< Invalid socket option +#define SOCKERR_SOCKINIT (SOCK_ERROR - 3) ///< Socket is not initialized or SIPR is Zero IP address when Sn_MR_TCP +#define SOCKERR_SOCKCLOSED (SOCK_ERROR - 4) ///< Socket unexpectedly closed. +#define SOCKERR_SOCKMODE (SOCK_ERROR - 5) ///< Invalid socket mode for socket operation. +#define SOCKERR_SOCKFLAG (SOCK_ERROR - 6) ///< Invalid socket flag +#define SOCKERR_SOCKSTATUS (SOCK_ERROR - 7) ///< Invalid socket status for socket operation. +#define SOCKERR_ARG (SOCK_ERROR - 10) ///< Invalid argument. +#define SOCKERR_PORTZERO (SOCK_ERROR - 11) ///< Port number is zero +#define SOCKERR_IPINVALID (SOCK_ERROR - 12) ///< Invalid IP address +#define SOCKERR_TIMEOUT (SOCK_ERROR - 13) ///< Timeout occurred +#define SOCKERR_DATALEN (SOCK_ERROR - 14) ///< Data length is zero or greater than buffer max size. +#define SOCKERR_BUFFER (SOCK_ERROR - 15) ///< Socket buffer is not enough for data communication. + +#define SOCKFATAL_PACKLEN (SOCK_FATAL - 1) ///< Invalid packet length. Fatal Error. + +/* + * SOCKET FLAG + */ +#define SF_ETHER_OWN (Sn_MR_MFEN) ///< In @ref Sn_MR_MACRAW, Receive only the packet as broadcast, multicast and own packet +#define SF_IGMP_VER2 (Sn_MR_MC) ///< In @ref Sn_MR_UDP with \ref SF_MULTI_ENABLE, Select IGMP version 2. +#define SF_TCP_NODELAY (Sn_MR_ND) ///< In @ref Sn_MR_TCP, Use to nodelayed ack. +#define SF_MULTI_ENABLE (Sn_MR_MULTI) ///< In @ref Sn_MR_UDP, Enable multicast mode. + +#if _WIZCHIP_ == 5500 + #define SF_BROAD_BLOCK (Sn_MR_BCASTB) ///< In @ref Sn_MR_UDP or @ref Sn_MR_MACRAW, Block broadcast packet. Valid only in W5500 + #define SF_MULTI_BLOCK (Sn_MR_MMB) ///< In @ref Sn_MR_MACRAW, Block multicast packet. Valid only in W5500 + #define SF_IPv6_BLOCK (Sn_MR_MIP6B) ///< In @ref Sn_MR_MACRAW, Block IPv6 packet. Valid only in W5500 + #define SF_UNI_BLOCK (Sn_MR_UCASTB) ///< In @ref Sn_MR_UDP with \ref SF_MULTI_ENABLE. Valid only in W5500 +#endif + +//A201505 : For W5300 +#if _WIZCHIP_ == 5300 + #define SF_TCP_ALIGN 0x02 ///< Valid only \ref Sn_MR_TCP and W5300, refer to \ref Sn_MR_ALIGN +#endif + +#define SF_IO_NONBLOCK 0x01 ///< Socket nonblock io mode. It used parameter in \ref socket(). + +/* + * UDP & MACRAW Packet Infomation + */ +#define PACK_FIRST 0x80 ///< In Non-TCP packet, It indicates to start receiving a packet. (When W5300, This flag can be applied) +#define PACK_REMAINED 0x01 ///< In Non-TCP packet, It indicates to remain a packet to be received. (When W5300, This flag can be applied) +#define PACK_COMPLETED 0x00 ///< In Non-TCP packet, It indicates to complete to receive a packet. (When W5300, This flag can be applied) +//A20150601 : For Integrating with W5300 +#define PACK_FIFOBYTE 0x02 ///< Valid only W5300, It indicate to have read already the Sn_RX_FIFOR. +// + +/** + * @ingroup WIZnet_socket_APIs + * @brief Open a socket. + * @details Initializes the socket with 'sn' passed as parameter and open. + * + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param protocol Protocol type to operate such as TCP, UDP and MACRAW. + * @param port Port number to be bined. + * @param flag Socket flags as \ref SF_ETHER_OWN, \ref SF_IGMP_VER2, \ref SF_TCP_NODELAY, \ref SF_MULTI_ENABLE, \ref SF_IO_NONBLOCK and so on.\n + * Valid flags only in W5500 : @ref SF_BROAD_BLOCK, @ref SF_MULTI_BLOCK, @ref SF_IPv6_BLOCK, and @ref SF_UNI_BLOCK. + * @sa Sn_MR + * + * @return @b Success : The socket number @b 'sn' passed as parameter\n + * @b Fail :\n @ref SOCKERR_SOCKNUM - Invalid socket number\n + * @ref SOCKERR_SOCKMODE - Not support socket mode as TCP, UDP, and so on. \n + * @ref SOCKERR_SOCKFLAG - Invaild socket flag. + */ +int8_t socket(uint8_t sn, uint8_t protocol, uint16_t port, uint8_t flag); + +/** + * @ingroup WIZnet_socket_APIs + * @brief Close a socket. + * @details It closes the socket with @b'sn' passed as parameter. + * + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * + * @return @b Success : @ref SOCK_OK \n + * @b Fail : @ref SOCKERR_SOCKNUM - Invalid socket number + */ +int8_t close(uint8_t sn); + +/** + * @ingroup WIZnet_socket_APIs + * @brief Listen to a connection request from a client. + * @details It is listening to a connection request from a client. + * If connection request is accepted successfully, the connection is established. Socket sn is used in passive(server) mode. + * + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return @b Success : @ref SOCK_OK \n + * @b Fail :\n @ref SOCKERR_SOCKINIT - Socket is not initialized \n + * @ref SOCKERR_SOCKCLOSED - Socket closed unexpectedly. + */ +int8_t listen(uint8_t sn); + +/** + * @ingroup WIZnet_socket_APIs + * @brief Try to connect a server. + * @details It requests connection to the server with destination IP address and port number passed as parameter.\n + * @note It is valid only in TCP client mode. + * In block io mode, it does not return until connection is completed. + * In Non-block io mode, it return @ref SOCK_BUSY immediately. + * + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param addr Pointer variable of destination IP address. It should be allocated 4 bytes. + * @param port Destination port number. + * + * @return @b Success : @ref SOCK_OK \n + * @b Fail :\n @ref SOCKERR_SOCKNUM - Invalid socket number\n + * @ref SOCKERR_SOCKMODE - Invalid socket mode\n + * @ref SOCKERR_SOCKINIT - Socket is not initialized\n + * @ref SOCKERR_IPINVALID - Wrong server IP address\n + * @ref SOCKERR_PORTZERO - Server port zero\n + * @ref SOCKERR_TIMEOUT - Timeout occurred during request connection\n + * @ref SOCK_BUSY - In non-block io mode, it returned immediately\n + */ +int8_t connect(uint8_t sn, uint8_t * addr, uint16_t port); + +/** + * @ingroup WIZnet_socket_APIs + * @brief Try to disconnect a connection socket. + * @details It sends request message to disconnect the TCP socket 'sn' passed as parameter to the server or client. + * @note It is valid only in TCP server or client mode. \n + * In block io mode, it does not return until disconnection is completed. \n + * In Non-block io mode, it return @ref SOCK_BUSY immediately. \n + + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @return @b Success : @ref SOCK_OK \n + * @b Fail :\n @ref SOCKERR_SOCKNUM - Invalid socket number \n + * @ref SOCKERR_SOCKMODE - Invalid operation in the socket \n + * @ref SOCKERR_TIMEOUT - Timeout occurred \n + * @ref SOCK_BUSY - Socket is busy. + */ +int8_t disconnect(uint8_t sn); + +/** + * @ingroup WIZnet_socket_APIs + * @brief Send data to the connected peer in TCP socket. + * @details It is used to send outgoing data to the connected socket. + * @note It is valid only in TCP server or client mode. It can't send data greater than socket buffer size. \n + * In block io mode, It doesn't return until data send is completed - socket buffer size is greater than data. \n + * In non-block io mode, It return @ref SOCK_BUSY immediately when socket buffer is not enough. \n + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param buf Pointer buffer containing data to be sent. + * @param len The byte length of data in buf. + * @return @b Success : The sent data size \n + * @b Fail : \n @ref SOCKERR_SOCKSTATUS - Invalid socket status for socket operation \n + * @ref SOCKERR_TIMEOUT - Timeout occurred \n + * @ref SOCKERR_SOCKMODE - Invalid operation in the socket \n + * @ref SOCKERR_SOCKNUM - Invalid socket number \n + * @ref SOCKERR_DATALEN - zero data length \n + * @ref SOCK_BUSY - Socket is busy. + */ +int32_t send(uint8_t sn, uint8_t * buf, uint16_t len); + +/** + * @ingroup WIZnet_socket_APIs + * @brief Receive data from the connected peer. + * @details It is used to read incoming data from the connected socket.\n + * It waits for data as much as the application wants to receive. + * @note It is valid only in TCP server or client mode. It can't receive data greater than socket buffer size. \n + * In block io mode, it doesn't return until data reception is completed - data is filled as len in socket buffer. \n + * In non-block io mode, it return @ref SOCK_BUSY immediately when len is greater than data size in socket buffer. \n + * + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param buf Pointer buffer to read incoming data. + * @param len The max data length of data in buf. + * @return @b Success : The real received data size \n + * @b Fail :\n + * @ref SOCKERR_SOCKSTATUS - Invalid socket status for socket operation \n + * @ref SOCKERR_SOCKMODE - Invalid operation in the socket \n + * @ref SOCKERR_SOCKNUM - Invalid socket number \n + * @ref SOCKERR_DATALEN - zero data length \n + * @ref SOCK_BUSY - Socket is busy. + */ +int32_t recv(uint8_t sn, uint8_t * buf, uint16_t len); + +/** + * @ingroup WIZnet_socket_APIs + * @brief Sends datagram to the peer with destination IP address and port number passed as parameter. + * @details It sends datagram of UDP or MACRAW to the peer with destination IP address and port number passed as parameter.\n + * Even if the connectionless socket has been previously connected to a specific address, + * the address and port number parameters override the destination address for that particular datagram only. + * @note In block io mode, It doesn't return until data send is completed - socket buffer size is greater than len. + * In non-block io mode, It return @ref SOCK_BUSY immediately when socket buffer is not enough. + * + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param buf Pointer buffer to send outgoing data. + * @param len The byte length of data in buf. + * @param addr Pointer variable of destination IP address. It should be allocated 4 bytes. + * @param port Destination port number. + * + * @return @b Success : The sent data size \n + * @b Fail :\n @ref SOCKERR_SOCKNUM - Invalid socket number \n + * @ref SOCKERR_SOCKMODE - Invalid operation in the socket \n + * @ref SOCKERR_SOCKSTATUS - Invalid socket status for socket operation \n + * @ref SOCKERR_DATALEN - zero data length \n + * @ref SOCKERR_IPINVALID - Wrong server IP address\n + * @ref SOCKERR_PORTZERO - Server port zero\n + * @ref SOCKERR_SOCKCLOSED - Socket unexpectedly closed \n + * @ref SOCKERR_TIMEOUT - Timeout occurred \n + * @ref SOCK_BUSY - Socket is busy. + */ +int32_t sendto(uint8_t sn, uint8_t * buf, uint16_t len, uint8_t * addr, uint16_t port); + +/** + * @ingroup WIZnet_socket_APIs + * @brief Receive datagram of UDP or MACRAW + * @details This function is an application I/F function which is used to receive the data in other then TCP mode. \n + * This function is used to receive UDP and MAC_RAW mode, and handle the header as well. + * This function can divide to received the packet data. + * On the MACRAW SOCKET, the addr and port parameters are ignored. + * @note In block io mode, it doesn't return until data reception is completed - data is filled as len in socket buffer + * In non-block io mode, it return @ref SOCK_BUSY immediately when len is greater than data size in socket buffer. + * + * @param sn Socket number. It should be 0 ~ @ref \_WIZCHIP_SOCK_NUM_. + * @param buf Pointer buffer to read incoming data. + * @param len The max data length of data in buf. + * When the received packet size <= len, receives data as packet sized. + * When others, receives data as len. + * @param addr Pointer variable of destination IP address. It should be allocated 4 bytes. + * It is valid only when the first call recvfrom for receiving the packet. + * When it is valid, @ref packinfo[7] should be set as '1' after call @ref getsockopt(sn, SO_PACKINFO, &packinfo). + * @param port Pointer variable of destination port number. + * It is valid only when the first call recvform for receiving the packet. +* When it is valid, @ref packinfo[7] should be set as '1' after call @ref getsockopt(sn, SO_PACKINFO, &packinfo). + * + * @return @b Success : This function return real received data size for success.\n + * @b Fail : @ref SOCKERR_DATALEN - zero data length \n + * @ref SOCKERR_SOCKMODE - Invalid operation in the socket \n + * @ref SOCKERR_SOCKNUM - Invalid socket number \n + * @ref SOCKBUSY - Socket is busy. + */ +int32_t recvfrom(uint8_t sn, uint8_t * buf, uint16_t len, uint8_t * addr, uint16_t *port); + + +///////////////////////////// +// SOCKET CONTROL & OPTION // +///////////////////////////// +#define SOCK_IO_BLOCK 0 ///< Socket Block IO Mode in @ref setsockopt(). +#define SOCK_IO_NONBLOCK 1 ///< Socket Non-block IO Mode in @ref setsockopt(). + +/** + * @defgroup DATA_TYPE DATA TYPE + */ + +/** + * @ingroup DATA_TYPE + * @brief The kind of Socket Interrupt. + * @sa Sn_IR, Sn_IMR, setSn_IR(), getSn_IR(), setSn_IMR(), getSn_IMR() + */ +typedef enum +{ + SIK_CONNECTED = (1 << 0), ///< connected + SIK_DISCONNECTED = (1 << 1), ///< disconnected + SIK_RECEIVED = (1 << 2), ///< data received + SIK_TIMEOUT = (1 << 3), ///< timeout occurred + SIK_SENT = (1 << 4), ///< send ok + //M20150410 : Remove the comma of last member + //SIK_ALL = 0x1F, ///< all interrupt + SIK_ALL = 0x1F ///< all interrupt +}sockint_kind; + +/** + * @ingroup DATA_TYPE + * @brief The type of @ref ctlsocket(). + */ +typedef enum +{ + CS_SET_IOMODE, ///< set socket IO mode with @ref SOCK_IO_BLOCK or @ref SOCK_IO_NONBLOCK + CS_GET_IOMODE, ///< get socket IO mode + CS_GET_MAXTXBUF, ///< get the size of socket buffer allocated in TX memory + CS_GET_MAXRXBUF, ///< get the size of socket buffer allocated in RX memory + CS_CLR_INTERRUPT, ///< clear the interrupt of socket with @ref sockint_kind + CS_GET_INTERRUPT, ///< get the socket interrupt. refer to @ref sockint_kind +#if _WIZCHIP_ > 5100 + CS_SET_INTMASK, ///< set the interrupt mask of socket with @ref sockint_kind, Not supported in W5100 + CS_GET_INTMASK ///< get the masked interrupt of socket. refer to @ref sockint_kind, Not supported in W5100 +#endif +}ctlsock_type; + + +/** + * @ingroup DATA_TYPE + * @brief The type of socket option in @ref setsockopt() or @ref getsockopt() + */ +typedef enum +{ + SO_FLAG, ///< Valid only in getsockopt(), For set flag of socket refer to flag in @ref socket(). + SO_TTL, ///< Set TTL. @ref Sn_TTL ( @ref setSn_TTL(), @ref getSn_TTL() ) + SO_TOS, ///< Set TOS. @ref Sn_TOS ( @ref setSn_TOS(), @ref getSn_TOS() ) + SO_MSS, ///< Set MSS. @ref Sn_MSSR ( @ref setSn_MSSR(), @ref getSn_MSSR() ) + SO_DESTIP, ///< Set the destination IP address. @ref Sn_DIPR ( @ref setSn_DIPR(), @ref getSn_DIPR() ) + SO_DESTPORT, ///< Set the destination Port number. @ref Sn_DPORT ( @ref setSn_DPORT(), @ref getSn_DPORT() ) +#if _WIZCHIP_ != 5100 + SO_KEEPALIVESEND, ///< Valid only in setsockopt. Manually send keep-alive packet in TCP mode, Not supported in W5100 + #if !( (_WIZCHIP_ == 5100) || (_WIZCHIP_ == 5200) ) + SO_KEEPALIVEAUTO, ///< Set/Get keep-alive auto transmission timer in TCP mode, Not supported in W5100, W5200 + #endif +#endif + SO_SENDBUF, ///< Valid only in getsockopt. Get the free data size of Socekt TX buffer. @ref Sn_TX_FSR, @ref getSn_TX_FSR() + SO_RECVBUF, ///< Valid only in getsockopt. Get the received data size in socket RX buffer. @ref Sn_RX_RSR, @ref getSn_RX_RSR() + SO_STATUS, ///< Valid only in getsockopt. Get the socket status. @ref Sn_SR, @ref getSn_SR() + SO_REMAINSIZE, ///< Valid only in getsockopt. Get the remained packet size in other then TCP mode. + SO_PACKINFO ///< Valid only in getsockopt. Get the packet information as @ref PACK_FIRST, @ref PACK_REMAINED, and @ref PACK_COMPLETED in other then TCP mode. +}sockopt_type; + +/** + * @ingroup WIZnet_socket_APIs + * @brief Control socket. + * @details Control IO mode, Interrupt & Mask of socket and get the socket buffer information. + * Refer to @ref ctlsock_type. + * @param sn socket number + * @param cstype type of control socket. refer to @ref ctlsock_type. + * @param arg Data type and value is determined according to @ref ctlsock_type. \n + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @b cstype @b data type@b value
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref CS_SET_IOMODE \n @ref CS_GET_IOMODE uint8_t @ref SOCK_IO_BLOCK @ref SOCK_IO_NONBLOCK
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref CS_GET_MAXTXBUF \n @ref CS_GET_MAXRXBUF uint16_t 0 ~ 16K
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref CS_CLR_INTERRUPT \n @ref CS_GET_INTERRUPT \n @ref CS_SET_INTMASK \n @ref CS_GET_INTMASK @ref sockint_kind @ref SIK_CONNECTED, etc.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * @return @b Success @ref SOCK_OK \n + * @b fail @ref SOCKERR_ARG - Invalid argument\n + */ +int8_t ctlsocket(uint8_t sn, ctlsock_type cstype, void* arg); + +/** + * @ingroup WIZnet_socket_APIs + * @brief set socket options + * @details Set socket option like as TTL, MSS, TOS, and so on. Refer to @ref sockopt_type. + * + * @param sn socket number + * @param sotype socket option type. refer to @ref sockopt_type + * @param arg Data type and value is determined according to sotype. \n + * + * + * + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @b sotype @b data type@b value
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_TTL uint8_t 0 ~ 255
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_TOS uint8_t 0 ~ 255
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_MSS uint16_t 0 ~ 65535
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_DESTIP uint8_t[4]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_DESTPORT uint16_t 0 ~ 65535
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_KEEPALIVESEND null null
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_KEEPALIVEAUTO uint8_t 0 ~ 255
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * @return + * - @b Success : @ref SOCK_OK \n + * - @b Fail + * - @ref SOCKERR_SOCKNUM - Invalid Socket number \n + * - @ref SOCKERR_SOCKMODE - Invalid socket mode \n + * - @ref SOCKERR_SOCKOPT - Invalid socket option or its value \n + * - @ref SOCKERR_TIMEOUT - Timeout occurred when sending keep-alive packet \n + */ +int8_t setsockopt(uint8_t sn, sockopt_type sotype, void* arg); + +/** + * @ingroup WIZnet_socket_APIs + * @brief get socket options + * @details Get socket option like as FLAG, TTL, MSS, and so on. Refer to @ref sockopt_type + * @param sn socket number + * @param sotype socket option type. refer to @ref sockopt_type + * @param arg Data type and value is determined according to sotype. \n + * + * + * + * + * + * + * + * + * + * + * + * + * + *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @b sotype @b data type@b value
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_FLAG uint8_t @ref SF_ETHER_OWN, etc...
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_TOS uint8_t 0 ~ 255
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_MSS uint16_t 0 ~ 65535
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_DESTIP uint8_t[4]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_DESTPORT uint16_t
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_KEEPALIVEAUTO uint8_t 0 ~ 255
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_SENDBUF uint16_t 0 ~ 65535
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_RECVBUF uint16_t 0 ~ 65535
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_STATUS uint8_t @ref SOCK_ESTABLISHED, etc..
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_REMAINSIZE uint16_t 0~ 65535
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      @ref SO_PACKINFO uint8_t @ref PACK_FIRST, etc...
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + * @return + * - @b Success : @ref SOCK_OK \n + * - @b Fail + * - @ref SOCKERR_SOCKNUM - Invalid Socket number \n + * - @ref SOCKERR_SOCKOPT - Invalid socket option or its value \n + * - @ref SOCKERR_SOCKMODE - Invalid socket mode \n + * @note + * The option as PACK_REMAINED and SO_PACKINFO is valid only in NON-TCP mode and after call @ref recvfrom(). \n + * When SO_PACKINFO value is PACK_FIRST and the return value of recvfrom() is zero, + * This means the zero byte UDP data(UDP Header only) received. + */ +int8_t getsockopt(uint8_t sn, sockopt_type sotype, void* arg); + +#ifdef __cplusplus + } +#endif + +#endif // _SOCKET_H_ diff --git a/User/ioLibrary_Driver/Ethernet/wizchip_conf.c b/User/ioLibrary_Driver/Ethernet/wizchip_conf.c new file mode 100644 index 0000000..194d296 --- /dev/null +++ b/User/ioLibrary_Driver/Ethernet/wizchip_conf.c @@ -0,0 +1,907 @@ +//****************************************************************************/ +//! +//! \file wizchip_conf.c +//! \brief WIZCHIP Config Header File. +//! \version 1.0.1 +//! \date 2013/10/21 +//! \par Revision history +//! <2015/02/05> Notice +//! The version history is not updated after this point. +//! Download the latest version directly from GitHub. Please visit the our GitHub repository for ioLibrary. +//! >> https://github.com/Wiznet/ioLibrary_Driver +//! <2014/05/01> V1.0.1 Refer to M20140501 +//! 1. Explicit type casting in wizchip_bus_readdata() & wizchip_bus_writedata() +// Issued by Mathias ClauBen. +//! uint32_t type converts into ptrdiff_t first. And then recoverting it into uint8_t* +//! For remove the warning when pointer type size is not 32bit. +//! If ptrdiff_t doesn't support in your complier, You should must replace ptrdiff_t into your suitable pointer type. +//! <2013/10/21> 1st Release +//! \author MidnightCow +//! \copyright +//! +//! Copyright (c) 2013, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//*****************************************************************************/ +//A20140501 : for use the type - ptrdiff_t +#include +// + +#include "wizchip_conf.h" + +///////////// +//M20150401 : Remove ; in the default callback function such as wizchip_cris_enter(), wizchip_cs_select() and etc. +///////////// + +/** + * @brief Default function to enable interrupt. + * @note This function help not to access wrong address. If you do not describe this function or register any functions, + * null function is called. + */ +//void wizchip_cris_enter(void) {}; +void wizchip_cris_enter(void) {} + +/** + * @brief Default function to disable interrupt. + * @note This function help not to access wrong address. If you do not describe this function or register any functions, + * null function is called. + */ +//void wizchip_cris_exit(void) {}; +void wizchip_cris_exit(void) {} + +/** + * @brief Default function to select chip. + * @note This function help not to access wrong address. If you do not describe this function or register any functions, + * null function is called. + */ +//void wizchip_cs_select(void) {}; +void wizchip_cs_select(void) {} + +/** + * @brief Default function to deselect chip. + * @note This function help not to access wrong address. If you do not describe this function or register any functions, + * null function is called. + */ +//void wizchip_cs_deselect(void) {}; +void wizchip_cs_deselect(void) {} + +/** + * @brief Default function to read in direct or indirect interface. + * @note This function help not to access wrong address. If you do not describe this function or register any functions, + * null function is called. + */ + //M20150601 : Rename the function for integrating with W5300 +//uint8_t wizchip_bus_readbyte(uint32_t AddrSel) { return * ((volatile uint8_t *)((ptrdiff_t) AddrSel)); } +iodata_t wizchip_bus_readdata(uint32_t AddrSel) { return * ((volatile iodata_t *)((ptrdiff_t) AddrSel)); } + +/** + * @brief Default function to write in direct or indirect interface. + * @note This function help not to access wrong address. If you do not describe this function or register any functions, + * null function is called. + */ +//M20150601 : Rename the function for integrating with W5300 +//void wizchip_bus_writebyte(uint32_t AddrSel, uint8_t wb) { *((volatile uint8_t*)((ptrdiff_t)AddrSel)) = wb; } +void wizchip_bus_writedata(uint32_t AddrSel, iodata_t wb) { *((volatile iodata_t*)((ptrdiff_t)AddrSel)) = wb; } + +/** + * @brief Default function to read in SPI interface. + * @note This function help not to access wrong address. If you do not describe this function or register any functions, + * null function is called. + */ +//uint8_t wizchip_spi_readbyte(void) {return 0;}; +uint8_t wizchip_spi_readbyte(void) {return 0;} + +/** + * @brief Default function to write in SPI interface. + * @note This function help not to access wrong address. If you do not describe this function or register any functions, + * null function is called. + */ +//void wizchip_spi_writebyte(uint8_t wb) {}; +void wizchip_spi_writebyte(uint8_t wb) {} + +/** + * @brief Default function to burst read in SPI interface. + * @note This function help not to access wrong address. If you do not describe this function or register any functions, + * null function is called. + */ +//void wizchip_spi_readburst(uint8_t* pBuf, uint16_t len) {}; +void wizchip_spi_readburst(uint8_t* pBuf, uint16_t len) {} + +/** + * @brief Default function to burst write in SPI interface. + * @note This function help not to access wrong address. If you do not describe this function or register any functions, + * null function is called. + */ +//void wizchip_spi_writeburst(uint8_t* pBuf, uint16_t len) {}; +void wizchip_spi_writeburst(uint8_t* pBuf, uint16_t len) {} + +/** + * @\ref _WIZCHIP instance + */ +// +//M20150401 : For a compiler didnot support a member of structure +// Replace the assignment of struct members with the assingment of array +// +/* +_WIZCHIP WIZCHIP = + { + .id = _WIZCHIP_ID_, + .if_mode = _WIZCHIP_IO_MODE_, + .CRIS._enter = wizchip_cris_enter, + .CRIS._exit = wizchip_cris_exit, + .CS._select = wizchip_cs_select, + .CS._deselect = wizchip_cs_deselect, + .IF.BUS._read_byte = wizchip_bus_readbyte, + .IF.BUS._write_byte = wizchip_bus_writebyte +// .IF.SPI._read_byte = wizchip_spi_readbyte, +// .IF.SPI._write_byte = wizchip_spi_writebyte + }; +*/ +_WIZCHIP WIZCHIP = +{ + _WIZCHIP_IO_MODE_, + _WIZCHIP_ID_ , + { + wizchip_cris_enter, + wizchip_cris_exit + }, + { + wizchip_cs_select, + wizchip_cs_deselect + }, + { + { + //M20150601 : Rename the function + //wizchip_bus_readbyte, + //wizchip_bus_writebyte + wizchip_bus_readdata, + wizchip_bus_writedata + }, + + } +}; + + +static uint8_t _DNS_[4]; // DNS server ip address +static dhcp_mode _DHCP_; // DHCP mode + +void reg_wizchip_cris_cbfunc(void(*cris_en)(void), void(*cris_ex)(void)) +{ + if(!cris_en || !cris_ex) + { + WIZCHIP.CRIS._enter = wizchip_cris_enter; + WIZCHIP.CRIS._exit = wizchip_cris_exit; + } + else + { + WIZCHIP.CRIS._enter = cris_en; + WIZCHIP.CRIS._exit = cris_ex; + } +} + +void reg_wizchip_cs_cbfunc(void(*cs_sel)(void), void(*cs_desel)(void)) +{ + if(!cs_sel || !cs_desel) + { + WIZCHIP.CS._select = wizchip_cs_select; + WIZCHIP.CS._deselect = wizchip_cs_deselect; + } + else + { + WIZCHIP.CS._select = cs_sel; + WIZCHIP.CS._deselect = cs_desel; + } +} + +//M20150515 : For integrating with W5300 +//void reg_wizchip_bus_cbfunc(uint8_t(*bus_rb)(uint32_t addr), void (*bus_wb)(uint32_t addr, uint8_t wb)) +void reg_wizchip_bus_cbfunc(iodata_t(*bus_rb)(uint32_t addr), void (*bus_wb)(uint32_t addr, iodata_t wb)) +{ + while(!(WIZCHIP.if_mode & _WIZCHIP_IO_MODE_BUS_)); + //M20150601 : Rename call back function for integrating with W5300 + /* + if(!bus_rb || !bus_wb) + { + WIZCHIP.IF.BUS._read_byte = wizchip_bus_readbyte; + WIZCHIP.IF.BUS._write_byte = wizchip_bus_writebyte; + } + else + { + WIZCHIP.IF.BUS._read_byte = bus_rb; + WIZCHIP.IF.BUS._write_byte = bus_wb; + } + */ + if(!bus_rb || !bus_wb) + { + WIZCHIP.IF.BUS._read_data = wizchip_bus_readdata; + WIZCHIP.IF.BUS._write_data = wizchip_bus_writedata; + } + else + { + WIZCHIP.IF.BUS._read_data = bus_rb; + WIZCHIP.IF.BUS._write_data = bus_wb; + } +} + +void reg_wizchip_spi_cbfunc(uint8_t (*spi_rb)(void), void (*spi_wb)(uint8_t wb)) +{ + while(!(WIZCHIP.if_mode & _WIZCHIP_IO_MODE_SPI_)); + + if(!spi_rb || !spi_wb) + { + WIZCHIP.IF.SPI._read_byte = wizchip_spi_readbyte; + WIZCHIP.IF.SPI._write_byte = wizchip_spi_writebyte; + } + else + { + WIZCHIP.IF.SPI._read_byte = spi_rb; + WIZCHIP.IF.SPI._write_byte = spi_wb; + } +} + +// 20140626 Eric Added for SPI burst operations +void reg_wizchip_spiburst_cbfunc(void (*spi_rb)(uint8_t* pBuf, uint16_t len), void (*spi_wb)(uint8_t* pBuf, uint16_t len)) +{ + while(!(WIZCHIP.if_mode & _WIZCHIP_IO_MODE_SPI_)); + + if(!spi_rb || !spi_wb) + { + WIZCHIP.IF.SPI._read_burst = wizchip_spi_readburst; + WIZCHIP.IF.SPI._write_burst = wizchip_spi_writeburst; + } + else + { + WIZCHIP.IF.SPI._read_burst = spi_rb; + WIZCHIP.IF.SPI._write_burst = spi_wb; + } +} + +int8_t ctlwizchip(ctlwizchip_type cwtype, void* arg) +{ +#if _WIZCHIP_ == W5100S || _WIZCHIP_ == W5200 || _WIZCHIP_ == W5500 + uint8_t tmp = 0; +#endif + uint8_t* ptmp[2] = {0,0}; + switch(cwtype) + { + case CW_RESET_WIZCHIP: + wizchip_sw_reset(); + break; + case CW_INIT_WIZCHIP: + if(arg != 0) + { + ptmp[0] = (uint8_t*)arg; + ptmp[1] = ptmp[0] + _WIZCHIP_SOCK_NUM_; + } + return wizchip_init(ptmp[0], ptmp[1]); + case CW_CLR_INTERRUPT: + wizchip_clrinterrupt(*((intr_kind*)arg)); + break; + case CW_GET_INTERRUPT: + *((intr_kind*)arg) = wizchip_getinterrupt(); + break; + case CW_SET_INTRMASK: + wizchip_setinterruptmask(*((intr_kind*)arg)); + break; + case CW_GET_INTRMASK: + *((intr_kind*)arg) = wizchip_getinterruptmask(); + break; + //M20150601 : This can be supported by W5200, W5500 + //#if _WIZCHIP_ > W5100 + #if (_WIZCHIP_ == W5200 || _WIZCHIP_ == W5500) + case CW_SET_INTRTIME: + setINTLEVEL(*(uint16_t*)arg); + break; + case CW_GET_INTRTIME: + *(uint16_t*)arg = getINTLEVEL(); + break; + #endif + case CW_GET_ID: + ((uint8_t*)arg)[0] = WIZCHIP.id[0]; + ((uint8_t*)arg)[1] = WIZCHIP.id[1]; + ((uint8_t*)arg)[2] = WIZCHIP.id[2]; + ((uint8_t*)arg)[3] = WIZCHIP.id[3]; + ((uint8_t*)arg)[4] = WIZCHIP.id[4]; + ((uint8_t*)arg)[5] = WIZCHIP.id[5]; + ((uint8_t*)arg)[6] = 0; + break; + #if _WIZCHIP_ == W5100S || _WIZCHIP_ == W5500 + case CW_RESET_PHY: + wizphy_reset(); + break; + case CW_SET_PHYCONF: + wizphy_setphyconf((wiz_PhyConf*)arg); + break; + case CW_GET_PHYCONF: + wizphy_getphyconf((wiz_PhyConf*)arg); + break; + case CW_GET_PHYSTATUS: + break; + case CW_SET_PHYPOWMODE: + return wizphy_setphypmode(*(uint8_t*)arg); + #endif + #if _WIZCHIP_ == W5100S || _WIZCHIP_ == W5200 || _WIZCHIP_ == W5500 + case CW_GET_PHYPOWMODE: + tmp = wizphy_getphypmode(); + if((int8_t)tmp == -1) return -1; + *(uint8_t*)arg = tmp; + break; + case CW_GET_PHYLINK: + tmp = wizphy_getphylink(); + if((int8_t)tmp == -1) return -1; + *(uint8_t*)arg = tmp; + break; + #endif + default: + return -1; + } + return 0; +} + + +int8_t ctlnetwork(ctlnetwork_type cntype, void* arg) +{ + + switch(cntype) + { + case CN_SET_NETINFO: + wizchip_setnetinfo((wiz_NetInfo*)arg); + break; + case CN_GET_NETINFO: + wizchip_getnetinfo((wiz_NetInfo*)arg); + break; + case CN_SET_NETMODE: + return wizchip_setnetmode(*(netmode_type*)arg); + case CN_GET_NETMODE: + *(netmode_type*)arg = wizchip_getnetmode(); + break; + case CN_SET_TIMEOUT: + wizchip_settimeout((wiz_NetTimeout*)arg); + break; + case CN_GET_TIMEOUT: + wizchip_gettimeout((wiz_NetTimeout*)arg); + break; + default: + return -1; + } + return 0; +} + +void wizchip_sw_reset(void) +{ + uint8_t gw[4], sn[4], sip[4]; + uint8_t mac[6]; +//A20150601 +#if _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_ + uint16_t mr = (uint16_t)getMR(); + setMR(mr | MR_IND); +#endif +// + getSHAR(mac); + getGAR(gw); getSUBR(sn); getSIPR(sip); + setMR(MR_RST); + getMR(); // for delay +//A2015051 : For indirect bus mode +#if _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_ + setMR(mr | MR_IND); +#endif +// + setSHAR(mac); + setGAR(gw); + setSUBR(sn); + setSIPR(sip); +} + +int8_t wizchip_init(uint8_t* txsize, uint8_t* rxsize) +{ + int8_t i; +#if _WIZCHIP_ < W5200 + int8_t j; +#endif + int8_t tmp = 0; + wizchip_sw_reset(); + if(txsize) + { + tmp = 0; +//M20150601 : For integrating with W5300 +#if _WIZCHIP_ == W5300 + for(i = 0 ; i < _WIZCHIP_SOCK_NUM_; i++) + { + if(txsize[i] > 64) return -1; //No use 64KB even if W5300 support max 64KB memory allocation + tmp += txsize[i]; + if(tmp > 128) return -1; + } + if(tmp % 8) return -1; +#else + for(i = 0 ; i < _WIZCHIP_SOCK_NUM_; i++) + { + tmp += txsize[i]; + +#if _WIZCHIP_ < W5200 //2016.10.28 peter add condition for w5100 and w5100s + if(tmp > 8) return -1; +#else + if(tmp > 16) return -1; +#endif + } +#endif + for(i = 0 ; i < _WIZCHIP_SOCK_NUM_; i++) + { +#if _WIZCHIP_ < W5200 //2016.10.28 peter add condition for w5100 + j = 0; + while((txsize[i] >> j != 1)&&(txsize[i] !=0)){j++;} + setSn_TXBUF_SIZE(i, j); +#else + setSn_TXBUF_SIZE(i, txsize[i]); +#endif + } + } + + if(rxsize) + { + tmp = 0; +#if _WIZCHIP_ == W5300 + for(i = 0 ; i < _WIZCHIP_SOCK_NUM_; i++) + { + if(rxsize[i] > 64) return -1; //No use 64KB even if W5300 support max 64KB memory allocation + tmp += rxsize[i]; + if(tmp > 128) return -1; + } + if(tmp % 8) return -1; +#else + for(i = 0 ; i < _WIZCHIP_SOCK_NUM_; i++) + { + tmp += rxsize[i]; +#if _WIZCHIP_ < W5200 //2016.10.28 peter add condition for w5100 and w5100s + if(tmp > 8) return -1; +#else + if(tmp > 16) return -1; +#endif + } +#endif + for(i = 0 ; i < _WIZCHIP_SOCK_NUM_; i++) + { +#if _WIZCHIP_ < W5200 // add condition for w5100 + j = 0; + while((rxsize[i] >> j != 1)&&(txsize[i] !=0)){j++;} + setSn_RXBUF_SIZE(i, j); +#else + setSn_RXBUF_SIZE(i, rxsize[i]); +#endif + } + } + return 0; +} + +void wizchip_clrinterrupt(intr_kind intr) +{ + uint8_t ir = (uint8_t)intr; + uint8_t sir = (uint8_t)((uint16_t)intr >> 8); +#if _WIZCHIP_ < W5500 + ir |= (1<<4); // IK_WOL +#endif +#if _WIZCHIP_ == W5200 + ir |= (1 << 6); +#endif + +#if _WIZCHIP_ < W5200 + sir &= 0x0F; +#endif + +#if _WIZCHIP_ <= W5100S + ir |= sir; + setIR(ir); +//A20150601 : For integrating with W5300 +#elif _WIZCHIP_ == W5300 + setIR( ((((uint16_t)ir) << 8) | (((uint16_t)sir) & 0x00FF)) ); +#else + setIR(ir); +//M20200227 : For clear + //setSIR(sir); + for(ir=0; ir<8; ir++){ + if(sir & (0x01 <> 8); + sir = (uint8_t)ret; +#else + ir = getIR(); + sir = getSIR(); +#endif + +//M20150601 : For Integrating with W5300 +//#if _WIZCHIP_ < W5500 +#if _WIZCHIP_ < W5200 + ir &= ~(1<<4); // IK_WOL +#endif +#if _WIZCHIP_ == W5200 + ir &= ~(1 << 6); +#endif + ret = sir; + ret = (ret << 8) + ir; + return (intr_kind)ret; +} + +void wizchip_setinterruptmask(intr_kind intr) +{ + uint8_t imr = (uint8_t)intr; + uint8_t simr = (uint8_t)((uint16_t)intr >> 8); +#if _WIZCHIP_ < W5500 + imr &= ~(1<<4); // IK_WOL +#endif +#if _WIZCHIP_ == W5200 + imr &= ~(1 << 6); +#endif + +#if _WIZCHIP_ < W5200 + simr &= 0x0F; + imr |= simr; + setIMR(imr); +//A20150601 : For integrating with W5300 +#elif _WIZCHIP_ == W5300 + setIMR( ((((uint16_t)imr) << 8) | (((uint16_t)simr) & 0x00FF)) ); +#else + setIMR(imr); + setSIMR(simr); +#endif +} + +intr_kind wizchip_getinterruptmask(void) +{ + uint8_t imr = 0; + uint8_t simr = 0; + uint16_t ret = 0; +#if _WIZCHIP_ < W5200 + imr = getIMR(); + simr = imr & 0x0F; +//A20150601 : For integrating with W5300 +#elif _WIZCHIP_ == W5300 + ret = getIMR(); + imr = (uint8_t)(ret >> 8); + simr = (uint8_t)ret; +#else + imr = getIMR(); + simr = getSIMR(); +#endif + +#if _WIZCHIP_ < W5500 + imr &= ~(1<<4); // IK_WOL +#endif +#if _WIZCHIP_ == W5200 + imr &= ~(1 << 6); // IK_DEST_UNREACH +#endif + ret = simr; + ret = (ret << 8) + imr; + return (intr_kind)ret; +} + +int8_t wizphy_getphylink(void) +{ + int8_t tmp = PHY_LINK_OFF; +#if _WIZCHIP_ == W5100S + if(getPHYSR() & PHYSR_LNK) + tmp = PHY_LINK_ON; +#elif _WIZCHIP_ == W5200 + if(getPHYSTATUS() & PHYSTATUS_LINK) + tmp = PHY_LINK_ON; +#elif _WIZCHIP_ == W5500 + if(getPHYCFGR() & PHYCFGR_LNK_ON) + tmp = PHY_LINK_ON; + +#else + tmp = -1; +#endif + return tmp; +} + +#if _WIZCHIP_ > W5100 + +int8_t wizphy_getphypmode(void) +{ + int8_t tmp = 0; + #if _WIZCHIP_ == W5200 + if(getPHYSTATUS() & PHYSTATUS_POWERDOWN) + tmp = PHY_POWER_DOWN; + else + tmp = PHY_POWER_NORM; + #elif _WIZCHIP_ == 5500 + if((getPHYCFGR() & PHYCFGR_OPMDC_ALLA) == PHYCFGR_OPMDC_PDOWN) + tmp = PHY_POWER_DOWN; + else + tmp = PHY_POWER_NORM; + #else + tmp = -1; + #endif + return tmp; +} +#endif + +#if _WIZCHIP_ == W5100S +void wizphy_reset(void) +{ + uint16_t tmp = wiz_mdio_read(PHYMDIO_BMCR); + tmp |= BMCR_RESET; + wiz_mdio_write(PHYMDIO_BMCR, tmp); + while(wiz_mdio_read(PHYMDIO_BMCR)&BMCR_RESET){} +} + +void wizphy_setphyconf(wiz_PhyConf* phyconf) +{ + uint16_t tmp = wiz_mdio_read(PHYMDIO_BMCR); + if(phyconf->mode == PHY_MODE_AUTONEGO) + tmp |= BMCR_AUTONEGO; + else + { + tmp &= ~BMCR_AUTONEGO; + if(phyconf->duplex == PHY_DUPLEX_FULL) + { + tmp |= BMCR_DUP; + } + else + { + tmp &= ~BMCR_DUP; + } + if(phyconf->speed == PHY_SPEED_100) + { + tmp |= BMCR_SPEED; + } + else + { + tmp &= ~BMCR_SPEED; + } + } + wiz_mdio_write(PHYMDIO_BMCR, tmp); +} + +void wizphy_getphyconf(wiz_PhyConf* phyconf) +{ + uint16_t tmp = 0; + tmp = wiz_mdio_read(PHYMDIO_BMCR); + phyconf->by = PHY_CONFBY_SW; + if(tmp & BMCR_AUTONEGO) + { + phyconf->mode = PHY_MODE_AUTONEGO; + } + else + { + phyconf->mode = PHY_MODE_MANUAL; + if(tmp&BMCR_DUP) phyconf->duplex = PHY_DUPLEX_FULL; + else phyconf->duplex = PHY_DUPLEX_HALF; + if(tmp&BMCR_SPEED) phyconf->speed = PHY_SPEED_100; + else phyconf->speed = PHY_SPEED_10; + } +} + +int8_t wizphy_setphypmode(uint8_t pmode) +{ + uint16_t tmp = 0; + tmp = wiz_mdio_read(PHYMDIO_BMCR); + if( pmode == PHY_POWER_DOWN) + { + tmp |= BMCR_PWDN; + } + else + { + tmp &= ~BMCR_PWDN; + } + wiz_mdio_write(PHYMDIO_BMCR, tmp); + tmp = wiz_mdio_read(PHYMDIO_BMCR); + if( pmode == PHY_POWER_DOWN) + { + if(tmp & BMCR_PWDN) return 0; + } + else + { + if((tmp & BMCR_PWDN) != BMCR_PWDN) return 0; + } + return -1; +} + +#endif +#if _WIZCHIP_ == W5500 +void wizphy_reset(void) +{ + uint8_t tmp = getPHYCFGR(); + tmp &= PHYCFGR_RST; + setPHYCFGR(tmp); + tmp = getPHYCFGR(); + tmp |= ~PHYCFGR_RST; + setPHYCFGR(tmp); +} + +void wizphy_setphyconf(wiz_PhyConf* phyconf) +{ + uint8_t tmp = 0; + if(phyconf->by == PHY_CONFBY_SW) + tmp |= PHYCFGR_OPMD; + else + tmp &= ~PHYCFGR_OPMD; + if(phyconf->mode == PHY_MODE_AUTONEGO) + tmp |= PHYCFGR_OPMDC_ALLA; + else + { + if(phyconf->duplex == PHY_DUPLEX_FULL) + { + if(phyconf->speed == PHY_SPEED_100) + tmp |= PHYCFGR_OPMDC_100F; + else + tmp |= PHYCFGR_OPMDC_10F; + } + else + { + if(phyconf->speed == PHY_SPEED_100) + tmp |= PHYCFGR_OPMDC_100H; + else + tmp |= PHYCFGR_OPMDC_10H; + } + } + setPHYCFGR(tmp); + wizphy_reset(); +} + +void wizphy_getphyconf(wiz_PhyConf* phyconf) +{ + uint8_t tmp = 0; + tmp = getPHYCFGR(); + phyconf->by = (tmp & PHYCFGR_OPMD) ? PHY_CONFBY_SW : PHY_CONFBY_HW; + switch(tmp & PHYCFGR_OPMDC_ALLA) + { + case PHYCFGR_OPMDC_ALLA: + case PHYCFGR_OPMDC_100FA: + phyconf->mode = PHY_MODE_AUTONEGO; + break; + default: + phyconf->mode = PHY_MODE_MANUAL; + break; + } + switch(tmp & PHYCFGR_OPMDC_ALLA) + { + case PHYCFGR_OPMDC_100FA: + case PHYCFGR_OPMDC_100F: + case PHYCFGR_OPMDC_100H: + phyconf->speed = PHY_SPEED_100; + break; + default: + phyconf->speed = PHY_SPEED_10; + break; + } + switch(tmp & PHYCFGR_OPMDC_ALLA) + { + case PHYCFGR_OPMDC_100FA: + case PHYCFGR_OPMDC_100F: + case PHYCFGR_OPMDC_10F: + phyconf->duplex = PHY_DUPLEX_FULL; + break; + default: + phyconf->duplex = PHY_DUPLEX_HALF; + break; + } +} + +void wizphy_getphystat(wiz_PhyConf* phyconf) +{ + uint8_t tmp = getPHYCFGR(); + phyconf->duplex = (tmp & PHYCFGR_DPX_FULL) ? PHY_DUPLEX_FULL : PHY_DUPLEX_HALF; + phyconf->speed = (tmp & PHYCFGR_SPD_100) ? PHY_SPEED_100 : PHY_SPEED_10; +} + +int8_t wizphy_setphypmode(uint8_t pmode) +{ + uint8_t tmp = 0; + tmp = getPHYCFGR(); + if((tmp & PHYCFGR_OPMD)== 0) return -1; + tmp &= ~PHYCFGR_OPMDC_ALLA; + if( pmode == PHY_POWER_DOWN) + tmp |= PHYCFGR_OPMDC_PDOWN; + else + tmp |= PHYCFGR_OPMDC_ALLA; + setPHYCFGR(tmp); + wizphy_reset(); + tmp = getPHYCFGR(); + if( pmode == PHY_POWER_DOWN) + { + if(tmp & PHYCFGR_OPMDC_PDOWN) return 0; + } + else + { + if(tmp & PHYCFGR_OPMDC_ALLA) return 0; + } + return -1; +} +#endif + + +void wizchip_setnetinfo(wiz_NetInfo* pnetinfo) +{ + setSHAR(pnetinfo->mac); + setGAR(pnetinfo->gw); + setSUBR(pnetinfo->sn); + setSIPR(pnetinfo->ip); + _DNS_[0] = pnetinfo->dns[0]; + _DNS_[1] = pnetinfo->dns[1]; + _DNS_[2] = pnetinfo->dns[2]; + _DNS_[3] = pnetinfo->dns[3]; + _DHCP_ = pnetinfo->dhcp; +} + +void wizchip_getnetinfo(wiz_NetInfo* pnetinfo) +{ + getSHAR(pnetinfo->mac); + getGAR(pnetinfo->gw); + getSUBR(pnetinfo->sn); + getSIPR(pnetinfo->ip); + pnetinfo->dns[0]= _DNS_[0]; + pnetinfo->dns[1]= _DNS_[1]; + pnetinfo->dns[2]= _DNS_[2]; + pnetinfo->dns[3]= _DNS_[3]; + pnetinfo->dhcp = _DHCP_; +} + +int8_t wizchip_setnetmode(netmode_type netmode) +{ + uint8_t tmp = 0; +#if _WIZCHIP_ != W5500 + if(netmode & ~(NM_WAKEONLAN | NM_PPPOE | NM_PINGBLOCK)) return -1; +#else + if(netmode & ~(NM_WAKEONLAN | NM_PPPOE | NM_PINGBLOCK | NM_FORCEARP)) return -1; +#endif + tmp = getMR(); + tmp |= (uint8_t)netmode; + setMR(tmp); + return 0; +} + +netmode_type wizchip_getnetmode(void) +{ + return (netmode_type) getMR(); +} + +void wizchip_settimeout(wiz_NetTimeout* nettime) +{ + setRCR(nettime->retry_cnt); + setRTR(nettime->time_100us); +} + +void wizchip_gettimeout(wiz_NetTimeout* nettime) +{ + nettime->retry_cnt = getRCR(); + nettime->time_100us = getRTR(); +} diff --git a/User/ioLibrary_Driver/Ethernet/wizchip_conf.h b/User/ioLibrary_Driver/Ethernet/wizchip_conf.h new file mode 100644 index 0000000..a5d65f7 --- /dev/null +++ b/User/ioLibrary_Driver/Ethernet/wizchip_conf.h @@ -0,0 +1,661 @@ +//***************************************************************************** +// +//! \file wizchip_conf.h +//! \brief WIZCHIP Config Header File. +//! \version 1.0.0 +//! \date 2013/10/21 +//! \par Revision history +//! <2015/02/05> Notice +//! The version history is not updated after this point. +//! Download the latest version directly from GitHub. Please visit the our GitHub repository for ioLibrary. +//! >> https://github.com/Wiznet/ioLibrary_Driver +//! <2013/10/21> 1st Release +//! \author MidnightCow +//! \copyright +//! +//! Copyright (c) 2013, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** + +/** + * @defgroup extra_functions 2. WIZnet Extra Functions + * + * @brief These functions is optional function. It could be replaced at WIZCHIP I/O function because they were made by WIZCHIP I/O functions. + * @details There are functions of configuring WIZCHIP, network, interrupt, phy, network information and timer. \n + * + */ + +#ifndef _WIZCHIP_CONF_H_ +#define _WIZCHIP_CONF_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +/** + * @brief Select WIZCHIP. + * @todo You should select one, \b W5100, \b W5100S, \b W5200, \b W5300, \b W5500 or etc. \n\n + * ex> #define \_WIZCHIP_ W5500 + */ + +#define W5100 5100 +#define W5100S 5100+5 +#define W5200 5200 +#define W5300 5300 +#define W5500 5500 + +#ifndef _WIZCHIP_ +#define _WIZCHIP_ W5500 // W5100, W5100S, W5200, W5300, W5500 +#endif + +#define _WIZCHIP_IO_MODE_NONE_ 0x0000 +#define _WIZCHIP_IO_MODE_BUS_ 0x0100 /**< Bus interface mode */ +#define _WIZCHIP_IO_MODE_SPI_ 0x0200 /**< SPI interface mode */ +//#define _WIZCHIP_IO_MODE_IIC_ 0x0400 +//#define _WIZCHIP_IO_MODE_SDIO_ 0x0800 +// Add to +// + +#define _WIZCHIP_IO_MODE_BUS_DIR_ (_WIZCHIP_IO_MODE_BUS_ + 1) /**< BUS interface mode for direct */ +#define _WIZCHIP_IO_MODE_BUS_INDIR_ (_WIZCHIP_IO_MODE_BUS_ + 2) /**< BUS interface mode for indirect */ + +#define _WIZCHIP_IO_MODE_SPI_VDM_ (_WIZCHIP_IO_MODE_SPI_ + 1) /**< SPI interface mode for variable length data*/ +#define _WIZCHIP_IO_MODE_SPI_FDM_ (_WIZCHIP_IO_MODE_SPI_ + 2) /**< SPI interface mode for fixed length data mode*/ +#define _WIZCHIP_IO_MODE_SPI_5500_ (_WIZCHIP_IO_MODE_SPI_ + 3) /**< SPI interface mode for fixed length data mode*/ + +#if (_WIZCHIP_ == W5100) + #define _WIZCHIP_ID_ "W5100\0" +/** + * @brief Define interface mode. + * @todo you should select interface mode as chip. Select one of @ref \_WIZCHIP_IO_MODE_SPI_ , @ref \_WIZCHIP_IO_MODE_BUS_DIR_ or @ref \_WIZCHIP_IO_MODE_BUS_INDIR_ + */ +// #define _WIZCHIP_IO_MODE_ _WIZCHIP_IO_MODE_BUS_DIR_ +// #define _WIZCHIP_IO_MODE_ _WIZCHIP_IO_MODE_BUS_INDIR_ + #define _WIZCHIP_IO_MODE_ _WIZCHIP_IO_MODE_SPI_ + +//A20150601 : Define the unit of IO DATA. + typedef uint8_t iodata_t; +//A20150401 : Indclude W5100.h file + #include "W5100/w5100.h" + +#elif (_WIZCHIP_ == W5100S) +#define _WIZCHIP_ID_ "W5100S\0" +/** +* @brief Define interface mode. +* @todo you should select interface mode as chip. Select one of @ref \_WIZCHIP_IO_MODE_SPI_ , @ref \_WIZCHIP_IO_MODE_BUS_DIR_ or @ref \_WIZCHIP_IO_MODE_BUS_INDIR_ +*/ +// #define _WIZCHIP_IO_MODE_ _WIZCHIP_IO_MODE_BUS_INDIR_ + //#define _WIZCHIP_IO_MODE_ _WIZCHIP_IO_MODE_SPI_5500_ + #define _WIZCHIP_IO_MODE_ _WIZCHIP_IO_MODE_SPI_ + +//A20150601 : Define the unit of IO DATA. + typedef uint8_t iodata_t; +//A20150401 : Indclude W5100.h file + #include "W5100S/w5100s.h" +#elif (_WIZCHIP_ == W5200) + #define _WIZCHIP_ID_ "W5200\0" +/** + * @brief Define interface mode. + * @todo you should select interface mode as chip. Select one of @ref \_WIZCHIP_IO_MODE_SPI_ or @ref \ _WIZCHIP_IO_MODE_BUS_INDIR_ + */ +#ifndef _WIZCHIP_IO_MODE_ +// #define _WIZCHIP_IO_MODE_ _WIZCHIP_IO_MODE_BUS_INDIR_ + #define _WIZCHIP_IO_MODE_ _WIZCHIP_IO_MODE_SPI_ +#endif +//A20150601 : Define the unit of IO DATA. + typedef uint8_t iodata_t; + #include "W5200/w5200.h" +#elif (_WIZCHIP_ == W5500) + #define _WIZCHIP_ID_ "W5500\0" + +/** + * @brief Define interface mode. \n + * @todo Should select interface mode as chip. + * - @ref \_WIZCHIP_IO_MODE_SPI_ \n + * -@ref \_WIZCHIP_IO_MODE_SPI_VDM_ : Valid only in @ref \_WIZCHIP_ == W5500 \n + * -@ref \_WIZCHIP_IO_MODE_SPI_FDM_ : Valid only in @ref \_WIZCHIP_ == W5500 \n + * - @ref \_WIZCHIP_IO_MODE_BUS_ \n + * - @ref \_WIZCHIP_IO_MODE_BUS_DIR_ \n + * - @ref \_WIZCHIP_IO_MODE_BUS_INDIR_ \n + * - Others will be defined in future. \n\n + * ex> #define \_WIZCHIP_IO_MODE_ \_WIZCHIP_IO_MODE_SPI_VDM_ + * + */ +#ifndef _WIZCHIP_IO_MODE_ + //#define _WIZCHIP_IO_MODE_ _WIZCHIP_IO_MODE_SPI_FDM_ + #define _WIZCHIP_IO_MODE_ _WIZCHIP_IO_MODE_SPI_VDM_ +#endif +//A20150601 : Define the unit of IO DATA. + typedef uint8_t iodata_t; + #include "W5500/w5500.h" +#elif ( _WIZCHIP_ == W5300) + #define _WIZCHIP_ID_ "W5300\0" +/** + * @brief Define interface mode. + * @todo you should select interface mode as chip. Select one of @ref \_WIZCHIP_IO_MODE_SPI_ , @ref \_WIZCHIP_IO_MODE_BUS_DIR_ or @ref \_WIZCHIP_IO_MODE_BUS_INDIR_ + */ +#ifndef _WIZCHIP_IO_MODE_ + #define _WIZCHIP_IO_MODE_ _WIZCHIP_IO_MODE_BUS_DIR_ +// #define _WIZCHIP_IO_MODE_ _WIZCHIP_IO_MODE_BUS_INDIR_ +#endif + +//A20150601 : Define the unit and bus width of IO DATA. + /** + * @brief Select the data width 8 or 16 bits. + * @todo you should select the bus width. Select one of 8 or 16. + */ + #ifndef _WIZCHIP_IO_BUS_WIDTH_ + #define _WIZCHIP_IO_BUS_WIDTH_ 16 // 8 + #endif + #if _WIZCHIP_IO_BUS_WIDTH_ == 8 + typedef uint8_t iodata_t; + #elif _WIZCHIP_IO_BUS_WIDTH_ == 16 + typedef uint16_t iodata_t; + #else + #error "Unknown _WIZCHIP_IO_BUS_WIDTH_. It should be 8 or 16." + #endif +// + #include "W5300/w5300.h" +#else + #error "Unknown defined _WIZCHIP_. You should define one of 5100, 5200, and 5500 !!!" +#endif + +#ifndef _WIZCHIP_IO_MODE_ + #error "Undefined _WIZCHIP_IO_MODE_. You should define it !!!" +#endif + +/** + * @brief Define I/O base address when BUS IF mode. + * @todo Should re-define it to fit your system when BUS IF Mode (@ref \_WIZCHIP_IO_MODE_BUS_, + * @ref \_WIZCHIP_IO_MODE_BUS_DIR_, @ref \_WIZCHIP_IO_MODE_BUS_INDIR_). \n\n + * ex> #define \_WIZCHIP_IO_BASE_ 0x00008000 + */ +#if _WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_BUS_ +// #define _WIZCHIP_IO_BASE_ 0x60000000 // for 5100S IND + #define _WIZCHIP_IO_BASE_ 0x68000000 // for W5300 +#elif _WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_ + #define _WIZCHIP_IO_BASE_ 0x00000000 // for 5100S SPI +#endif + +#ifndef _WIZCHIP_IO_BASE_ +#define _WIZCHIP_IO_BASE_ 0x00000000 // 0x8000 +#endif + +//M20150401 : Typing Error +//#if _WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_BUS +#if _WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_BUS_ + #ifndef _WIZCHIP_IO_BASE_ + #error "You should be define _WIZCHIP_IO_BASE to fit your system memory map." + #endif +#endif + +#if _WIZCHIP_ >= W5200 + #define _WIZCHIP_SOCK_NUM_ 8 ///< The count of independant socket of @b WIZCHIP +#else + #define _WIZCHIP_SOCK_NUM_ 4 ///< The count of independant socket of @b WIZCHIP +#endif + + +/******************************************************** +* WIZCHIP BASIC IF functions for SPI, SDIO, I2C , ETC. +*********************************************************/ +/** + * @ingroup DATA_TYPE + * @brief The set of callback functions for W5500:@ref WIZCHIP_IO_Functions W5200:@ref WIZCHIP_IO_Functions_W5200 + */ +typedef struct __WIZCHIP +{ + uint16_t if_mode; ///< host interface mode + uint8_t id[8]; ///< @b WIZCHIP ID such as @b 5100, @b 5100S, @b 5200, @b 5500, and so on. + /** + * The set of critical section callback func. + */ + struct _CRIS + { + void (*_enter) (void); ///< crtical section enter + void (*_exit) (void); ///< critial section exit + }CRIS; + /** + * The set of @ref \_WIZCHIP_ select control callback func. + */ + struct _CS + { + void (*_select) (void); ///< @ref \_WIZCHIP_ selected + void (*_deselect)(void); ///< @ref \_WIZCHIP_ deselected + }CS; + /** + * The set of interface IO callback func. + */ + union _IF + { + /** + * For BUS interface IO + */ + //M20156501 : Modify the function name for integrating with W5300 + //struct + //{ + // uint8_t (*_read_byte) (uint32_t AddrSel); + // void (*_write_byte) (uint32_t AddrSel, uint8_t wb); + //}BUS; + struct + { + iodata_t (*_read_data) (uint32_t AddrSel); + void (*_write_data) (uint32_t AddrSel, iodata_t wb); + }BUS; + + /** + * For SPI interface IO + */ + struct + { + uint8_t (*_read_byte) (void); + void (*_write_byte) (uint8_t wb); + void (*_read_burst) (uint8_t* pBuf, uint16_t len); + void (*_write_burst) (uint8_t* pBuf, uint16_t len); + }SPI; + // To be added + // + }IF; +}_WIZCHIP; + +extern _WIZCHIP WIZCHIP; + +/** + * @ingroup DATA_TYPE + * WIZCHIP control type enumration used in @ref ctlwizchip(). + */ +typedef enum +{ + CW_RESET_WIZCHIP, ///< Resets WIZCHIP by softly + CW_INIT_WIZCHIP, ///< Initializes to WIZCHIP with SOCKET buffer size 2 or 1 dimension array typed uint8_t. + CW_GET_INTERRUPT, ///< Get Interrupt status of WIZCHIP + CW_CLR_INTERRUPT, ///< Clears interrupt + CW_SET_INTRMASK, ///< Masks interrupt + CW_GET_INTRMASK, ///< Get interrupt mask + CW_SET_INTRTIME, ///< Set interval time between the current and next interrupt. + CW_GET_INTRTIME, ///< Set interval time between the current and next interrupt. + CW_GET_ID, ///< Gets WIZCHIP name. + +//D20150601 : For no modification your application code +//#if _WIZCHIP_ == W5500 + CW_RESET_PHY, ///< Resets internal PHY. Valid Only W5500 + CW_SET_PHYCONF, ///< When PHY configured by internal register, PHY operation mode (Manual/Auto, 10/100, Half/Full). Valid Only W5000 + CW_GET_PHYCONF, ///< Get PHY operation mode in internal register. Valid Only W5500 + CW_GET_PHYSTATUS, ///< Get real PHY status on operating. Valid Only W5500 + CW_SET_PHYPOWMODE, ///< Set PHY power mode as normal and down when PHYSTATUS.OPMD == 1. Valid Only W5500 +//#endif +//D20150601 : For no modification your application code +//#if _WIZCHIP_ == W5200 || _WIZCHIP_ == W5500 + CW_GET_PHYPOWMODE, ///< Get PHY Power mode as down or normal, Valid Only W5100, W5200 + CW_GET_PHYLINK ///< Get PHY Link status, Valid Only W5100, W5200 +//#endif +}ctlwizchip_type; + +/** + * @ingroup DATA_TYPE + * Network control type enumration used in @ref ctlnetwork(). + */ +typedef enum +{ + CN_SET_NETINFO, ///< Set Network with @ref wiz_NetInfo + CN_GET_NETINFO, ///< Get Network with @ref wiz_NetInfo + CN_SET_NETMODE, ///< Set network mode as WOL, PPPoE, Ping Block, and Force ARP mode + CN_GET_NETMODE, ///< Get network mode as WOL, PPPoE, Ping Block, and Force ARP mode + CN_SET_TIMEOUT, ///< Set network timeout as retry count and time. + CN_GET_TIMEOUT, ///< Get network timeout as retry count and time. +}ctlnetwork_type; + +/** + * @ingroup DATA_TYPE + * Interrupt kind when CW_SET_INTRRUPT, CW_GET_INTERRUPT, CW_SET_INTRMASK + * and CW_GET_INTRMASK is used in @ref ctlnetwork(). + * It can be used with OR operation. + */ +typedef enum +{ +#if _WIZCHIP_ == W5500 + IK_WOL = (1 << 4), ///< Wake On Lan by receiving the magic packet. Valid in W500. +#elif _WIZCHIP_ == W5300 + IK_FMTU = (1 << 4), ///< Received a ICMP message (Fragment MTU) +#endif + + IK_PPPOE_TERMINATED = (1 << 5), ///< PPPoE Disconnected + +#if _WIZCHIP_ != W5200 + IK_DEST_UNREACH = (1 << 6), ///< Destination IP & Port Unreachable, No use in W5200 +#endif + + IK_IP_CONFLICT = (1 << 7), ///< IP conflict occurred + + IK_SOCK_0 = (1 << 8), ///< Socket 0 interrupt + IK_SOCK_1 = (1 << 9), ///< Socket 1 interrupt + IK_SOCK_2 = (1 << 10), ///< Socket 2 interrupt + IK_SOCK_3 = (1 << 11), ///< Socket 3 interrupt +#if _WIZCHIP_ > W5100S + IK_SOCK_4 = (1 << 12), ///< Socket 4 interrupt, No use in 5100 + IK_SOCK_5 = (1 << 13), ///< Socket 5 interrupt, No use in 5100 + IK_SOCK_6 = (1 << 14), ///< Socket 6 interrupt, No use in 5100 + IK_SOCK_7 = (1 << 15), ///< Socket 7 interrupt, No use in 5100 +#endif + +#if _WIZCHIP_ > W5100S + IK_SOCK_ALL = (0xFF << 8) ///< All Socket interrupt +#else + IK_SOCK_ALL = (0x0F << 8) ///< All Socket interrupt +#endif +}intr_kind; + +#define PHY_CONFBY_HW 0 ///< Configured PHY operation mode by HW pin +#define PHY_CONFBY_SW 1 ///< Configured PHY operation mode by SW register +#define PHY_MODE_MANUAL 0 ///< Configured PHY operation mode with user setting. +#define PHY_MODE_AUTONEGO 1 ///< Configured PHY operation mode with auto-negotiation +#define PHY_SPEED_10 0 ///< Link Speed 10 +#define PHY_SPEED_100 1 ///< Link Speed 100 +#define PHY_DUPLEX_HALF 0 ///< Link Half-Duplex +#define PHY_DUPLEX_FULL 1 ///< Link Full-Duplex +#define PHY_LINK_OFF 0 ///< Link Off +#define PHY_LINK_ON 1 ///< Link On +#define PHY_POWER_NORM 0 ///< PHY power normal mode +#define PHY_POWER_DOWN 1 ///< PHY power down mode + + +#if _WIZCHIP_ == W5100S || _WIZCHIP_ == W5500 +/** + * @ingroup DATA_TYPE + * It configures PHY configuration when CW_SET PHYCONF or CW_GET_PHYCONF in W5500, + * and it indicates the real PHY status configured by HW or SW in all WIZCHIP. \n + * Valid only in W5500. + */ +typedef struct wiz_PhyConf_t +{ + uint8_t by; ///< set by @ref PHY_CONFBY_HW or @ref PHY_CONFBY_SW + uint8_t mode; ///< set by @ref PHY_MODE_MANUAL or @ref PHY_MODE_AUTONEGO + uint8_t speed; ///< set by @ref PHY_SPEED_10 or @ref PHY_SPEED_100 + uint8_t duplex; ///< set by @ref PHY_DUPLEX_HALF @ref PHY_DUPLEX_FULL + //uint8_t power; ///< set by @ref PHY_POWER_NORM or @ref PHY_POWER_DOWN + //uint8_t link; ///< Valid only in CW_GET_PHYSTATUS. set by @ref PHY_LINK_ON or PHY_DUPLEX_OFF + }wiz_PhyConf; +#endif + +/** + * @ingroup DATA_TYPE + * It used in setting dhcp_mode of @ref wiz_NetInfo. + */ +typedef enum +{ + NETINFO_STATIC = 1, ///< Static IP configuration by manually. + NETINFO_DHCP ///< Dynamic IP configruation from a DHCP sever +}dhcp_mode; + +/** + * @ingroup DATA_TYPE + * Network Information for WIZCHIP + */ +typedef struct wiz_NetInfo_t +{ + uint8_t mac[6]; ///< Source Mac Address + uint8_t ip[4]; ///< Source IP Address + uint8_t sn[4]; ///< Subnet Mask + uint8_t gw[4]; ///< Gateway IP Address + uint8_t dns[4]; ///< DNS server IP Address + dhcp_mode dhcp; ///< 1 - Static, 2 - DHCP +}wiz_NetInfo; + +/** + * @ingroup DATA_TYPE + * Network mode + */ +typedef enum +{ +#if _WIZCHIP_ == W5500 + NM_FORCEARP = (1<<1), ///< Force to APP send whenever udp data is sent. Valid only in W5500 +#endif + NM_WAKEONLAN = (1<<5), ///< Wake On Lan + NM_PINGBLOCK = (1<<4), ///< Block ping-request + NM_PPPOE = (1<<3), ///< PPPoE mode +}netmode_type; + +/** + * @ingroup DATA_TYPE + * Used in CN_SET_TIMEOUT or CN_GET_TIMEOUT of @ref ctlwizchip() for timeout configruation. + */ +typedef struct wiz_NetTimeout_t +{ + uint8_t retry_cnt; ///< retry count + uint16_t time_100us; ///< time unit 100us +}wiz_NetTimeout; + +/** + *@brief Registers call back function for critical section of I/O functions such as + *\ref WIZCHIP_READ, @ref WIZCHIP_WRITE, @ref WIZCHIP_READ_BUF and @ref WIZCHIP_WRITE_BUF. + *@param cris_en : callback function for critical section enter. + *@param cris_ex : callback function for critical section exit. + *@todo Describe @ref WIZCHIP_CRITICAL_ENTER and @ref WIZCHIP_CRITICAL_EXIT marco or register your functions. + *@note If you do not describe or register, default functions(@ref wizchip_cris_enter & @ref wizchip_cris_exit) is called. + */ +void reg_wizchip_cris_cbfunc(void(*cris_en)(void), void(*cris_ex)(void)); + + +/** + *@brief Registers call back function for WIZCHIP select & deselect. + *@param cs_sel : callback function for WIZCHIP select + *@param cs_desel : callback fucntion for WIZCHIP deselect + *@todo Describe @ref wizchip_cs_select and @ref wizchip_cs_deselect function or register your functions. + *@note If you do not describe or register, null function is called. + */ +void reg_wizchip_cs_cbfunc(void(*cs_sel)(void), void(*cs_desel)(void)); + +/** + *@brief Registers call back function for bus interface. + *@param bus_rb : callback function to read byte data using system bus + *@param bus_wb : callback function to write byte data using system bus + *@todo Describe @ref wizchip_bus_readbyte and @ref wizchip_bus_writebyte function + *or register your functions. + *@note If you do not describe or register, null function is called. + */ +//M20150601 : For integrating with W5300 +//void reg_wizchip_bus_cbfunc(uint8_t (*bus_rb)(uint32_t addr), void (*bus_wb)(uint32_t addr, uint8_t wb)); +void reg_wizchip_bus_cbfunc(iodata_t (*bus_rb)(uint32_t addr), void (*bus_wb)(uint32_t addr, iodata_t wb)); + +/** + *@brief Registers call back function for SPI interface. + *@param spi_rb : callback function to read byte using SPI + *@param spi_wb : callback function to write byte using SPI + *@todo Describe \ref wizchip_spi_readbyte and \ref wizchip_spi_writebyte function + *or register your functions. + *@note If you do not describe or register, null function is called. + */ +void reg_wizchip_spi_cbfunc(uint8_t (*spi_rb)(void), void (*spi_wb)(uint8_t wb)); + +/** + *@brief Registers call back function for SPI interface. + *@param spi_rb : callback function to burst read using SPI + *@param spi_wb : callback function to burst write using SPI + *@todo Describe \ref wizchip_spi_readbyte and \ref wizchip_spi_writebyte function + *or register your functions. + *@note If you do not describe or register, null function is called. + */ +void reg_wizchip_spiburst_cbfunc(void (*spi_rb)(uint8_t* pBuf, uint16_t len), void (*spi_wb)(uint8_t* pBuf, uint16_t len)); + +/** + * @ingroup extra_functions + * @brief Controls to the WIZCHIP. + * @details Resets WIZCHIP & internal PHY, Configures PHY mode, Monitor PHY(Link,Speed,Half/Full/Auto), + * controls interrupt & mask and so on. + * @param cwtype : Decides to the control type + * @param arg : arg type is dependent on cwtype. + * @return 0 : Success \n + * -1 : Fail because of invalid \ref ctlwizchip_type or unsupported \ref ctlwizchip_type in WIZCHIP + */ +int8_t ctlwizchip(ctlwizchip_type cwtype, void* arg); + +/** + * @ingroup extra_functions + * @brief Controls to network. + * @details Controls to network environment, mode, timeout and so on. + * @param cntype : Input. Decides to the control type + * @param arg : Inout. arg type is dependent on cntype. + * @return -1 : Fail because of invalid \ref ctlnetwork_type or unsupported \ref ctlnetwork_type in WIZCHIP \n + * 0 : Success + */ +int8_t ctlnetwork(ctlnetwork_type cntype, void* arg); + + +/* + * The following functions are implemented for internal use. + * but You can call these functions for code size reduction instead of ctlwizchip() and ctlnetwork(). + */ + +/** + * @ingroup extra_functions + * @brief Reset WIZCHIP by softly. + */ +void wizchip_sw_reset(void); + +/** + * @ingroup extra_functions + * @brief Initializes WIZCHIP with socket buffer size + * @param txsize Socket tx buffer sizes. If null, initialized the default size 2KB. + * @param rxsize Socket rx buffer sizes. If null, initialized the default size 2KB. + * @return 0 : succcess \n + * -1 : fail. Invalid buffer size + */ +int8_t wizchip_init(uint8_t* txsize, uint8_t* rxsize); + +/** + * @ingroup extra_functions + * @brief Clear Interrupt of WIZCHIP. + * @param intr : @ref intr_kind value operated OR. It can type-cast to uint16_t. + */ +void wizchip_clrinterrupt(intr_kind intr); + +/** + * @ingroup extra_functions + * @brief Get Interrupt of WIZCHIP. + * @return @ref intr_kind value operated OR. It can type-cast to uint16_t. + */ +intr_kind wizchip_getinterrupt(void); + +/** + * @ingroup extra_functions + * @brief Mask or Unmask Interrupt of WIZCHIP. + * @param intr : @ref intr_kind value operated OR. It can type-cast to uint16_t. + */ +void wizchip_setinterruptmask(intr_kind intr); + +/** + * @ingroup extra_functions + * @brief Get Interrupt mask of WIZCHIP. + * @return : The operated OR vaule of @ref intr_kind. It can type-cast to uint16_t. + */ +intr_kind wizchip_getinterruptmask(void); + +//todo +#if _WIZCHIP_ > W5100 + int8_t wizphy_getphylink(void); ///< get the link status of phy in WIZCHIP. No use in W5100 + int8_t wizphy_getphypmode(void); ///< get the power mode of PHY in WIZCHIP. No use in W5100 +#endif + +#if _WIZCHIP_ == W5100S || _WIZCHIP_ == W5500 + void wizphy_reset(void); ///< Reset phy. Vailid only in W5500 +/** + * @ingroup extra_functions + * @brief Set the phy information for WIZCHIP without power mode + * @param phyconf : @ref wiz_PhyConf + */ + void wizphy_setphyconf(wiz_PhyConf* phyconf); + /** + * @ingroup extra_functions + * @brief Get phy configuration information. + * @param phyconf : @ref wiz_PhyConf + */ + void wizphy_getphyconf(wiz_PhyConf* phyconf); + /** + * @ingroup extra_functions + * @brief Get phy status. + * @param phyconf : @ref wiz_PhyConf + */ + void wizphy_getphystat(wiz_PhyConf* phyconf); + /** + * @ingroup extra_functions + * @brief set the power mode of phy inside WIZCHIP. Refer to @ref PHYCFGR in W5500, @ref PHYSTATUS in W5200 + * @param pmode Settig value of power down mode. + */ + int8_t wizphy_setphypmode(uint8_t pmode); +#endif + +/** +* @ingroup extra_functions + * @brief Set the network information for WIZCHIP + * @param pnetinfo : @ref wizNetInfo + */ +void wizchip_setnetinfo(wiz_NetInfo* pnetinfo); + +/** + * @ingroup extra_functions + * @brief Get the network information for WIZCHIP + * @param pnetinfo : @ref wizNetInfo + */ +void wizchip_getnetinfo(wiz_NetInfo* pnetinfo); + +/** + * @ingroup extra_functions + * @brief Set the network mode such WOL, PPPoE, Ping Block, and etc. + * @param pnetinfo Value of network mode. Refer to @ref netmode_type. + */ +int8_t wizchip_setnetmode(netmode_type netmode); + +/** + * @ingroup extra_functions + * @brief Get the network mode such WOL, PPPoE, Ping Block, and etc. + * @return Value of network mode. Refer to @ref netmode_type. + */ +netmode_type wizchip_getnetmode(void); + +/** + * @ingroup extra_functions + * @brief Set retry time value(@ref _RTR_) and retry count(@ref _RCR_). + * @details @ref _RTR_ configures the retransmission timeout period and @ref _RCR_ configures the number of time of retransmission. + * @param nettime @ref _RTR_ value and @ref _RCR_ value. Refer to @ref wiz_NetTimeout. + */ +void wizchip_settimeout(wiz_NetTimeout* nettime); + +/** + * @ingroup extra_functions + * @brief Get retry time value(@ref _RTR_) and retry count(@ref _RCR_). + * @details @ref _RTR_ configures the retransmission timeout period and @ref _RCR_ configures the number of time of retransmission. + * @param nettime @ref _RTR_ value and @ref _RCR_ value. Refer to @ref wiz_NetTimeout. + */ +void wizchip_gettimeout(wiz_NetTimeout* nettime); +#ifdef __cplusplus + } +#endif + +#endif // _WIZCHIP_CONF_H_ diff --git a/User/ioLibrary_Driver/Internet/DHCP/dhcp.c b/User/ioLibrary_Driver/Internet/DHCP/dhcp.c new file mode 100644 index 0000000..87f4db9 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/DHCP/dhcp.c @@ -0,0 +1,1023 @@ +//***************************************************************************** +// +//! \file dhcp.c +//! \brief DHCP APIs implement file. +//! \details Processing DHCP protocol as DISCOVER, OFFER, REQUEST, ACK, NACK and DECLINE. +//! \version 1.1.1 +//! \date 2019/10/08 +//! \par Revision history +//! <2019/10/08> compare DHCP server ip address +//! <2013/11/18> 1st Release +//! <2012/12/20> V1.1.0 +//! 1. Optimize code +//! 2. Add reg_dhcp_cbfunc() +//! 3. Add DHCP_stop() +//! 4. Integrate check_DHCP_state() & DHCP_run() to DHCP_run() +//! 5. Don't care system endian +//! 6. Add comments +//! <2012/12/26> V1.1.1 +//! 1. Modify variable declaration: dhcp_tick_1s is declared volatile for code optimization +//! \author Eric Jung & MidnightCow +//! \copyright +//! +//! Copyright (c) 2013, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** + +#include "socket.h" +#include "dhcp.h" + +/* If you want to display debug & processing message, Define _DHCP_DEBUG_ in dhcp.h */ + +#ifdef _DHCP_DEBUG_ + #include +#endif + +/* DHCP state machine. */ +#define STATE_DHCP_INIT 0 ///< Initialize +#define STATE_DHCP_DISCOVER 1 ///< send DISCOVER and wait OFFER +#define STATE_DHCP_REQUEST 2 ///< send REQEUST and wait ACK or NACK +#define STATE_DHCP_LEASED 3 ///< ReceiveD ACK and IP leased +#define STATE_DHCP_REREQUEST 4 ///< send REQUEST for maintaining leased IP +#define STATE_DHCP_RELEASE 5 ///< No use +#define STATE_DHCP_STOP 6 ///< Stop processing DHCP + +#define DHCP_FLAGSBROADCAST 0x8000 ///< The broadcast value of flags in @ref RIP_MSG +#define DHCP_FLAGSUNICAST 0x0000 ///< The unicast value of flags in @ref RIP_MSG + +/* DHCP message OP code */ +#define DHCP_BOOTREQUEST 1 ///< Request Message used in op of @ref RIP_MSG +#define DHCP_BOOTREPLY 2 ///< Reply Message used i op of @ref RIP_MSG + +/* DHCP message type */ +#define DHCP_DISCOVER 1 ///< DISCOVER message in OPT of @ref RIP_MSG +#define DHCP_OFFER 2 ///< OFFER message in OPT of @ref RIP_MSG +#define DHCP_REQUEST 3 ///< REQUEST message in OPT of @ref RIP_MSG +#define DHCP_DECLINE 4 ///< DECLINE message in OPT of @ref RIP_MSG +#define DHCP_ACK 5 ///< ACK message in OPT of @ref RIP_MSG +#define DHCP_NAK 6 ///< NACK message in OPT of @ref RIP_MSG +#define DHCP_RELEASE 7 ///< RELEASE message in OPT of @ref RIP_MSG. No use +#define DHCP_INFORM 8 ///< INFORM message in OPT of @ref RIP_MSG. No use + +#define DHCP_HTYPE10MB 1 ///< Used in type of @ref RIP_MSG +#define DHCP_HTYPE100MB 2 ///< Used in type of @ref RIP_MSG + +#define DHCP_HLENETHERNET 6 ///< Used in hlen of @ref RIP_MSG +#define DHCP_HOPS 0 ///< Used in hops of @ref RIP_MSG +#define DHCP_SECS 0 ///< Used in secs of @ref RIP_MSG + +#define INFINITE_LEASETIME 0xffffffff ///< Infinite lease time + +#define OPT_SIZE 312 /// Max OPT size of @ref RIP_MSG +#define RIP_MSG_SIZE (236+OPT_SIZE) /// Max size of @ref RIP_MSG + +/* + * @brief DHCP option and value (cf. RFC1533) + */ +enum +{ + padOption = 0, + subnetMask = 1, + timerOffset = 2, + routersOnSubnet = 3, + timeServer = 4, + nameServer = 5, + dns = 6, + logServer = 7, + cookieServer = 8, + lprServer = 9, + impressServer = 10, + resourceLocationServer = 11, + hostName = 12, + bootFileSize = 13, + meritDumpFile = 14, + domainName = 15, + swapServer = 16, + rootPath = 17, + extentionsPath = 18, + IPforwarding = 19, + nonLocalSourceRouting = 20, + policyFilter = 21, + maxDgramReasmSize = 22, + defaultIPTTL = 23, + pathMTUagingTimeout = 24, + pathMTUplateauTable = 25, + ifMTU = 26, + allSubnetsLocal = 27, + broadcastAddr = 28, + performMaskDiscovery = 29, + maskSupplier = 30, + performRouterDiscovery = 31, + routerSolicitationAddr = 32, + staticRoute = 33, + trailerEncapsulation = 34, + arpCacheTimeout = 35, + ethernetEncapsulation = 36, + tcpDefaultTTL = 37, + tcpKeepaliveInterval = 38, + tcpKeepaliveGarbage = 39, + nisDomainName = 40, + nisServers = 41, + ntpServers = 42, + vendorSpecificInfo = 43, + netBIOSnameServer = 44, + netBIOSdgramDistServer = 45, + netBIOSnodeType = 46, + netBIOSscope = 47, + xFontServer = 48, + xDisplayManager = 49, + dhcpRequestedIPaddr = 50, + dhcpIPaddrLeaseTime = 51, + dhcpOptionOverload = 52, + dhcpMessageType = 53, + dhcpServerIdentifier = 54, + dhcpParamRequest = 55, + dhcpMsg = 56, + dhcpMaxMsgSize = 57, + dhcpT1value = 58, + dhcpT2value = 59, + dhcpClassIdentifier = 60, + dhcpClientIdentifier = 61, + endOption = 255 +}; + +/* + * @brief DHCP message format + */ +typedef struct { + uint8_t op; ///< @ref DHCP_BOOTREQUEST or @ref DHCP_BOOTREPLY + uint8_t htype; ///< @ref DHCP_HTYPE10MB or @ref DHCP_HTYPE100MB + uint8_t hlen; ///< @ref DHCP_HLENETHERNET + uint8_t hops; ///< @ref DHCP_HOPS + uint32_t xid; ///< @ref DHCP_XID This increase one every DHCP transaction. + uint16_t secs; ///< @ref DHCP_SECS + uint16_t flags; ///< @ref DHCP_FLAGSBROADCAST or @ref DHCP_FLAGSUNICAST + uint8_t ciaddr[4]; ///< @ref Request IP to DHCP sever + uint8_t yiaddr[4]; ///< @ref Offered IP from DHCP server + uint8_t siaddr[4]; ///< No use + uint8_t giaddr[4]; ///< No use + uint8_t chaddr[16]; ///< DHCP client 6bytes MAC address. Others is filled to zero + uint8_t sname[64]; ///< No use + uint8_t file[128]; ///< No use + uint8_t OPT[OPT_SIZE]; ///< Option +} RIP_MSG; + + + +uint8_t DHCP_SOCKET; // Socket number for DHCP + +uint8_t DHCP_SIP[4]; // DHCP Server IP address +uint8_t DHCP_REAL_SIP[4]; // For extract my DHCP server in a few DHCP server + +// Network information from DHCP Server +uint8_t OLD_allocated_ip[4] = {0, }; // Previous IP address +uint8_t DHCP_allocated_ip[4] = {0, }; // IP address from DHCP +uint8_t DHCP_allocated_gw[4] = {0, }; // Gateway address from DHCP +uint8_t DHCP_allocated_sn[4] = {0, }; // Subnet mask from DHCP +uint8_t DHCP_allocated_dns[4] = {0, }; // DNS address from DHCP + + +int8_t dhcp_state = STATE_DHCP_INIT; // DHCP state +int8_t dhcp_retry_count = 0; + +uint32_t dhcp_lease_time = INFINITE_LEASETIME; +volatile uint32_t dhcp_tick_1s = 0; // unit 1 second +uint32_t dhcp_tick_next = DHCP_WAIT_TIME ; + +uint32_t DHCP_XID; // Any number + +RIP_MSG* pDHCPMSG; // Buffer pointer for DHCP processing + +uint8_t HOST_NAME[] = DCHP_HOST_NAME; + +uint8_t DHCP_CHADDR[6]; // DHCP Client MAC address. + +/* The default callback function */ +void default_ip_assign(void); +void default_ip_update(void); +void default_ip_conflict(void); + +/* Callback handler */ +void (*dhcp_ip_assign)(void) = default_ip_assign; /* handler to be called when the IP address from DHCP server is first assigned */ +void (*dhcp_ip_update)(void) = default_ip_update; /* handler to be called when the IP address from DHCP server is updated */ +void (*dhcp_ip_conflict)(void) = default_ip_conflict; /* handler to be called when the IP address from DHCP server is conflict */ + +void reg_dhcp_cbfunc(void(*ip_assign)(void), void(*ip_update)(void), void(*ip_conflict)(void)); + +char NibbleToHex(uint8_t nibble); + +/* send DISCOVER message to DHCP server */ +void send_DHCP_DISCOVER(void); + +/* send REQEUST message to DHCP server */ +void send_DHCP_REQUEST(void); + +/* send DECLINE message to DHCP server */ +void send_DHCP_DECLINE(void); + +/* IP conflict check by sending ARP-request to leased IP and wait ARP-response. */ +int8_t check_DHCP_leasedIP(void); + +/* check the timeout in DHCP process */ +uint8_t check_DHCP_timeout(void); + +/* Initialize to timeout process. */ +void reset_DHCP_timeout(void); + +/* Parse message as OFFER and ACK and NACK from DHCP server.*/ +int8_t parseDHCPCMSG(void); + +/* The default handler of ip assign first */ +void default_ip_assign(void) +{ + setSIPR(DHCP_allocated_ip); + setSUBR(DHCP_allocated_sn); + setGAR (DHCP_allocated_gw); +} + +/* The default handler of ip changed */ +void default_ip_update(void) +{ + /* WIZchip Software Reset */ + setMR(MR_RST); + getMR(); // for delay + default_ip_assign(); + setSHAR(DHCP_CHADDR); +} + +/* The default handler of ip changed */ +void default_ip_conflict(void) +{ + // WIZchip Software Reset + setMR(MR_RST); + getMR(); // for delay + setSHAR(DHCP_CHADDR); +} + +/* register the call back func. */ +void reg_dhcp_cbfunc(void(*ip_assign)(void), void(*ip_update)(void), void(*ip_conflict)(void)) +{ + dhcp_ip_assign = default_ip_assign; + dhcp_ip_update = default_ip_update; + dhcp_ip_conflict = default_ip_conflict; + if(ip_assign) dhcp_ip_assign = ip_assign; + if(ip_update) dhcp_ip_update = ip_update; + if(ip_conflict) dhcp_ip_conflict = ip_conflict; +} + +/* make the common DHCP message */ +void makeDHCPMSG(void) +{ + uint8_t bk_mac[6]; + uint8_t* ptmp; + uint8_t i; + getSHAR(bk_mac); + pDHCPMSG->op = DHCP_BOOTREQUEST; + pDHCPMSG->htype = DHCP_HTYPE10MB; + pDHCPMSG->hlen = DHCP_HLENETHERNET; + pDHCPMSG->hops = DHCP_HOPS; + ptmp = (uint8_t*)(&pDHCPMSG->xid); + *(ptmp+0) = (uint8_t)((DHCP_XID & 0xFF000000) >> 24); + *(ptmp+1) = (uint8_t)((DHCP_XID & 0x00FF0000) >> 16); + *(ptmp+2) = (uint8_t)((DHCP_XID & 0x0000FF00) >> 8); + *(ptmp+3) = (uint8_t)((DHCP_XID & 0x000000FF) >> 0); + pDHCPMSG->secs = DHCP_SECS; + ptmp = (uint8_t*)(&pDHCPMSG->flags); + *(ptmp+0) = (uint8_t)((DHCP_FLAGSBROADCAST & 0xFF00) >> 8); + *(ptmp+1) = (uint8_t)((DHCP_FLAGSBROADCAST & 0x00FF) >> 0); + + pDHCPMSG->ciaddr[0] = 0; + pDHCPMSG->ciaddr[1] = 0; + pDHCPMSG->ciaddr[2] = 0; + pDHCPMSG->ciaddr[3] = 0; + + pDHCPMSG->yiaddr[0] = 0; + pDHCPMSG->yiaddr[1] = 0; + pDHCPMSG->yiaddr[2] = 0; + pDHCPMSG->yiaddr[3] = 0; + + pDHCPMSG->siaddr[0] = 0; + pDHCPMSG->siaddr[1] = 0; + pDHCPMSG->siaddr[2] = 0; + pDHCPMSG->siaddr[3] = 0; + + pDHCPMSG->giaddr[0] = 0; + pDHCPMSG->giaddr[1] = 0; + pDHCPMSG->giaddr[2] = 0; + pDHCPMSG->giaddr[3] = 0; + + pDHCPMSG->chaddr[0] = DHCP_CHADDR[0]; + pDHCPMSG->chaddr[1] = DHCP_CHADDR[1]; + pDHCPMSG->chaddr[2] = DHCP_CHADDR[2]; + pDHCPMSG->chaddr[3] = DHCP_CHADDR[3]; + pDHCPMSG->chaddr[4] = DHCP_CHADDR[4]; + pDHCPMSG->chaddr[5] = DHCP_CHADDR[5]; + + for (i = 6; i < 16; i++) pDHCPMSG->chaddr[i] = 0; + for (i = 0; i < 64; i++) pDHCPMSG->sname[i] = 0; + for (i = 0; i < 128; i++) pDHCPMSG->file[i] = 0; + + // MAGIC_COOKIE + pDHCPMSG->OPT[0] = (uint8_t)((MAGIC_COOKIE & 0xFF000000) >> 24); + pDHCPMSG->OPT[1] = (uint8_t)((MAGIC_COOKIE & 0x00FF0000) >> 16); + pDHCPMSG->OPT[2] = (uint8_t)((MAGIC_COOKIE & 0x0000FF00) >> 8); + pDHCPMSG->OPT[3] = (uint8_t) (MAGIC_COOKIE & 0x000000FF) >> 0; +} + +/* SEND DHCP DISCOVER */ +void send_DHCP_DISCOVER(void) +{ + uint16_t i; + uint8_t ip[4]; + uint16_t k = 0; + + makeDHCPMSG(); + DHCP_SIP[0]=0; + DHCP_SIP[1]=0; + DHCP_SIP[2]=0; + DHCP_SIP[3]=0; + DHCP_REAL_SIP[0]=0; + DHCP_REAL_SIP[1]=0; + DHCP_REAL_SIP[2]=0; + DHCP_REAL_SIP[3]=0; + + k = 4; // because MAGIC_COOKIE already made by makeDHCPMSG() + + // Option Request Param + pDHCPMSG->OPT[k++] = dhcpMessageType; + pDHCPMSG->OPT[k++] = 0x01; + pDHCPMSG->OPT[k++] = DHCP_DISCOVER; + + // Client identifier + pDHCPMSG->OPT[k++] = dhcpClientIdentifier; + pDHCPMSG->OPT[k++] = 0x07; + pDHCPMSG->OPT[k++] = 0x01; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[0]; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[1]; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[2]; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[3]; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[4]; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[5]; + + // host name + pDHCPMSG->OPT[k++] = hostName; + pDHCPMSG->OPT[k++] = 0; // fill zero length of hostname + for(i = 0 ; HOST_NAME[i] != 0; i++) + pDHCPMSG->OPT[k++] = HOST_NAME[i]; + pDHCPMSG->OPT[k++] = NibbleToHex(DHCP_CHADDR[3] >> 4); + pDHCPMSG->OPT[k++] = NibbleToHex(DHCP_CHADDR[3]); + pDHCPMSG->OPT[k++] = NibbleToHex(DHCP_CHADDR[4] >> 4); + pDHCPMSG->OPT[k++] = NibbleToHex(DHCP_CHADDR[4]); + pDHCPMSG->OPT[k++] = NibbleToHex(DHCP_CHADDR[5] >> 4); + pDHCPMSG->OPT[k++] = NibbleToHex(DHCP_CHADDR[5]); + pDHCPMSG->OPT[k - (i+6+1)] = i+6; // length of hostname + + pDHCPMSG->OPT[k++] = dhcpParamRequest; + pDHCPMSG->OPT[k++] = 0x06; // length of request + pDHCPMSG->OPT[k++] = subnetMask; + pDHCPMSG->OPT[k++] = routersOnSubnet; + pDHCPMSG->OPT[k++] = dns; + pDHCPMSG->OPT[k++] = domainName; + pDHCPMSG->OPT[k++] = dhcpT1value; + pDHCPMSG->OPT[k++] = dhcpT2value; + pDHCPMSG->OPT[k++] = endOption; + + for (i = k; i < OPT_SIZE; i++) pDHCPMSG->OPT[i] = 0; + + // send broadcasting packet + ip[0] = 255; + ip[1] = 255; + ip[2] = 255; + ip[3] = 255; + +#ifdef _DHCP_DEBUG_ + printf("> Send DHCP_DISCOVER\r\n"); +#endif + + sendto(DHCP_SOCKET, (uint8_t *)pDHCPMSG, RIP_MSG_SIZE, ip, DHCP_SERVER_PORT); +} + +/* SEND DHCP REQUEST */ +void send_DHCP_REQUEST(void) +{ + int i; + uint8_t ip[4]; + uint16_t k = 0; + + makeDHCPMSG(); + + if(dhcp_state == STATE_DHCP_LEASED || dhcp_state == STATE_DHCP_REREQUEST) + { + *((uint8_t*)(&pDHCPMSG->flags)) = ((DHCP_FLAGSUNICAST & 0xFF00)>> 8); + *((uint8_t*)(&pDHCPMSG->flags)+1) = (DHCP_FLAGSUNICAST & 0x00FF); + pDHCPMSG->ciaddr[0] = DHCP_allocated_ip[0]; + pDHCPMSG->ciaddr[1] = DHCP_allocated_ip[1]; + pDHCPMSG->ciaddr[2] = DHCP_allocated_ip[2]; + pDHCPMSG->ciaddr[3] = DHCP_allocated_ip[3]; + ip[0] = DHCP_SIP[0]; + ip[1] = DHCP_SIP[1]; + ip[2] = DHCP_SIP[2]; + ip[3] = DHCP_SIP[3]; + } + else + { + ip[0] = 255; + ip[1] = 255; + ip[2] = 255; + ip[3] = 255; + } + + k = 4; // because MAGIC_COOKIE already made by makeDHCPMSG() + + // Option Request Param. + pDHCPMSG->OPT[k++] = dhcpMessageType; + pDHCPMSG->OPT[k++] = 0x01; + pDHCPMSG->OPT[k++] = DHCP_REQUEST; + + pDHCPMSG->OPT[k++] = dhcpClientIdentifier; + pDHCPMSG->OPT[k++] = 0x07; + pDHCPMSG->OPT[k++] = 0x01; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[0]; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[1]; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[2]; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[3]; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[4]; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[5]; + + if(ip[3] == 255) // if(dchp_state == STATE_DHCP_LEASED || dchp_state == DHCP_REREQUEST_STATE) + { + pDHCPMSG->OPT[k++] = dhcpRequestedIPaddr; + pDHCPMSG->OPT[k++] = 0x04; + pDHCPMSG->OPT[k++] = DHCP_allocated_ip[0]; + pDHCPMSG->OPT[k++] = DHCP_allocated_ip[1]; + pDHCPMSG->OPT[k++] = DHCP_allocated_ip[2]; + pDHCPMSG->OPT[k++] = DHCP_allocated_ip[3]; + + pDHCPMSG->OPT[k++] = dhcpServerIdentifier; + pDHCPMSG->OPT[k++] = 0x04; + pDHCPMSG->OPT[k++] = DHCP_SIP[0]; + pDHCPMSG->OPT[k++] = DHCP_SIP[1]; + pDHCPMSG->OPT[k++] = DHCP_SIP[2]; + pDHCPMSG->OPT[k++] = DHCP_SIP[3]; + } + + // host name + pDHCPMSG->OPT[k++] = hostName; + pDHCPMSG->OPT[k++] = 0; // length of hostname + for(i = 0 ; HOST_NAME[i] != 0; i++) + pDHCPMSG->OPT[k++] = HOST_NAME[i]; + pDHCPMSG->OPT[k++] = NibbleToHex(DHCP_CHADDR[3] >> 4); + pDHCPMSG->OPT[k++] = NibbleToHex(DHCP_CHADDR[3]); + pDHCPMSG->OPT[k++] = NibbleToHex(DHCP_CHADDR[4] >> 4); + pDHCPMSG->OPT[k++] = NibbleToHex(DHCP_CHADDR[4]); + pDHCPMSG->OPT[k++] = NibbleToHex(DHCP_CHADDR[5] >> 4); + pDHCPMSG->OPT[k++] = NibbleToHex(DHCP_CHADDR[5]); + pDHCPMSG->OPT[k - (i+6+1)] = i+6; // length of hostname + + pDHCPMSG->OPT[k++] = dhcpParamRequest; + pDHCPMSG->OPT[k++] = 0x08; + pDHCPMSG->OPT[k++] = subnetMask; + pDHCPMSG->OPT[k++] = routersOnSubnet; + pDHCPMSG->OPT[k++] = dns; + pDHCPMSG->OPT[k++] = domainName; + pDHCPMSG->OPT[k++] = dhcpT1value; + pDHCPMSG->OPT[k++] = dhcpT2value; + pDHCPMSG->OPT[k++] = performRouterDiscovery; + pDHCPMSG->OPT[k++] = staticRoute; + pDHCPMSG->OPT[k++] = endOption; + + for (i = k; i < OPT_SIZE; i++) pDHCPMSG->OPT[i] = 0; + +#ifdef _DHCP_DEBUG_ + printf("> Send DHCP_REQUEST\r\n"); +#endif + + sendto(DHCP_SOCKET, (uint8_t *)pDHCPMSG, RIP_MSG_SIZE, ip, DHCP_SERVER_PORT); + +} + +/* SEND DHCP DHCPDECLINE */ +void send_DHCP_DECLINE(void) +{ + int i; + uint8_t ip[4]; + uint16_t k = 0; + + makeDHCPMSG(); + + k = 4; // because MAGIC_COOKIE already made by makeDHCPMSG() + + *((uint8_t*)(&pDHCPMSG->flags)) = ((DHCP_FLAGSUNICAST & 0xFF00)>> 8); + *((uint8_t*)(&pDHCPMSG->flags)+1) = (DHCP_FLAGSUNICAST & 0x00FF); + + // Option Request Param. + pDHCPMSG->OPT[k++] = dhcpMessageType; + pDHCPMSG->OPT[k++] = 0x01; + pDHCPMSG->OPT[k++] = DHCP_DECLINE; + + pDHCPMSG->OPT[k++] = dhcpClientIdentifier; + pDHCPMSG->OPT[k++] = 0x07; + pDHCPMSG->OPT[k++] = 0x01; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[0]; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[1]; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[2]; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[3]; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[4]; + pDHCPMSG->OPT[k++] = DHCP_CHADDR[5]; + + pDHCPMSG->OPT[k++] = dhcpRequestedIPaddr; + pDHCPMSG->OPT[k++] = 0x04; + pDHCPMSG->OPT[k++] = DHCP_allocated_ip[0]; + pDHCPMSG->OPT[k++] = DHCP_allocated_ip[1]; + pDHCPMSG->OPT[k++] = DHCP_allocated_ip[2]; + pDHCPMSG->OPT[k++] = DHCP_allocated_ip[3]; + + pDHCPMSG->OPT[k++] = dhcpServerIdentifier; + pDHCPMSG->OPT[k++] = 0x04; + pDHCPMSG->OPT[k++] = DHCP_SIP[0]; + pDHCPMSG->OPT[k++] = DHCP_SIP[1]; + pDHCPMSG->OPT[k++] = DHCP_SIP[2]; + pDHCPMSG->OPT[k++] = DHCP_SIP[3]; + + pDHCPMSG->OPT[k++] = endOption; + + for (i = k; i < OPT_SIZE; i++) pDHCPMSG->OPT[i] = 0; + + //send broadcasting packet + ip[0] = 0xFF; + ip[1] = 0xFF; + ip[2] = 0xFF; + ip[3] = 0xFF; + +#ifdef _DHCP_DEBUG_ + printf("\r\n> Send DHCP_DECLINE\r\n"); +#endif + + sendto(DHCP_SOCKET, (uint8_t *)pDHCPMSG, RIP_MSG_SIZE, ip, DHCP_SERVER_PORT); +} + +/* PARSE REPLY pDHCPMSG */ +int8_t parseDHCPMSG(void) +{ + uint8_t svr_addr[6]; + uint16_t svr_port; + uint16_t len; + + uint8_t * p; + uint8_t * e; + uint8_t type = 0; + uint8_t opt_len; + + if((len = getSn_RX_RSR(DHCP_SOCKET)) > 0) + { + len = recvfrom(DHCP_SOCKET, (uint8_t *)pDHCPMSG, len, svr_addr, &svr_port); + #ifdef _DHCP_DEBUG_ + printf("DHCP message : %d.%d.%d.%d(%d) %d received. \r\n",svr_addr[0],svr_addr[1],svr_addr[2], svr_addr[3],svr_port, len); + #endif + } + else return 0; + if (svr_port == DHCP_SERVER_PORT) { + // compare mac address + if ( (pDHCPMSG->chaddr[0] != DHCP_CHADDR[0]) || (pDHCPMSG->chaddr[1] != DHCP_CHADDR[1]) || + (pDHCPMSG->chaddr[2] != DHCP_CHADDR[2]) || (pDHCPMSG->chaddr[3] != DHCP_CHADDR[3]) || + (pDHCPMSG->chaddr[4] != DHCP_CHADDR[4]) || (pDHCPMSG->chaddr[5] != DHCP_CHADDR[5]) ) + { +#ifdef _DHCP_DEBUG_ + printf("No My DHCP Message. This message is ignored.\r\n"); +#endif + return 0; + } + //compare DHCP server ip address + if((DHCP_SIP[0]!=0) || (DHCP_SIP[1]!=0) || (DHCP_SIP[2]!=0) || (DHCP_SIP[3]!=0)){ + if( ((svr_addr[0]!=DHCP_SIP[0])|| (svr_addr[1]!=DHCP_SIP[1])|| (svr_addr[2]!=DHCP_SIP[2])|| (svr_addr[3]!=DHCP_SIP[3])) && + ((svr_addr[0]!=DHCP_REAL_SIP[0])|| (svr_addr[1]!=DHCP_REAL_SIP[1])|| (svr_addr[2]!=DHCP_REAL_SIP[2])|| (svr_addr[3]!=DHCP_REAL_SIP[3])) ) + { +#ifdef _DHCP_DEBUG_ + printf("Another DHCP sever send a response message. This is ignored.\r\n"); +#endif + return 0; + } + } + p = (uint8_t *)(&pDHCPMSG->op); + p = p + 240; // 240 = sizeof(RIP_MSG) + MAGIC_COOKIE size in RIP_MSG.opt - sizeof(RIP_MSG.opt) + e = p + (len - 240); + + while ( p < e ) { + + switch ( *p ) { + + case endOption : + p = e; // for break while(p < e) + break; + case padOption : + p++; + break; + case dhcpMessageType : + p++; + p++; + type = *p++; + break; + case subnetMask : + p++; + p++; + DHCP_allocated_sn[0] = *p++; + DHCP_allocated_sn[1] = *p++; + DHCP_allocated_sn[2] = *p++; + DHCP_allocated_sn[3] = *p++; + break; + case routersOnSubnet : + p++; + opt_len = *p++; + DHCP_allocated_gw[0] = *p++; + DHCP_allocated_gw[1] = *p++; + DHCP_allocated_gw[2] = *p++; + DHCP_allocated_gw[3] = *p++; + p = p + (opt_len - 4); + break; + case dns : + p++; + opt_len = *p++; + DHCP_allocated_dns[0] = *p++; + DHCP_allocated_dns[1] = *p++; + DHCP_allocated_dns[2] = *p++; + DHCP_allocated_dns[3] = *p++; + p = p + (opt_len - 4); + break; + case dhcpIPaddrLeaseTime : + p++; + opt_len = *p++; + dhcp_lease_time = *p++; + dhcp_lease_time = (dhcp_lease_time << 8) + *p++; + dhcp_lease_time = (dhcp_lease_time << 8) + *p++; + dhcp_lease_time = (dhcp_lease_time << 8) + *p++; + #ifdef _DHCP_DEBUG_ + dhcp_lease_time = 10; + #endif + break; + case dhcpServerIdentifier : + p++; + opt_len = *p++; + DHCP_SIP[0] = *p++; + DHCP_SIP[1] = *p++; + DHCP_SIP[2] = *p++; + DHCP_SIP[3] = *p++; + DHCP_REAL_SIP[0]=svr_addr[0]; + DHCP_REAL_SIP[1]=svr_addr[1]; + DHCP_REAL_SIP[2]=svr_addr[2]; + DHCP_REAL_SIP[3]=svr_addr[3]; + break; + default : + p++; + opt_len = *p++; + p += opt_len; + break; + } // switch + } // while + } // if + return type; +} + +uint8_t DHCP_run(void) +{ + uint8_t type; + uint8_t ret; + + if(dhcp_state == STATE_DHCP_STOP) return DHCP_STOPPED; + + if(getSn_SR(DHCP_SOCKET) != SOCK_UDP) + socket(DHCP_SOCKET, Sn_MR_UDP, DHCP_CLIENT_PORT, 0x00); + + ret = DHCP_RUNNING; + type = parseDHCPMSG(); + + switch ( dhcp_state ) { + case STATE_DHCP_INIT : + DHCP_allocated_ip[0] = 0; + DHCP_allocated_ip[1] = 0; + DHCP_allocated_ip[2] = 0; + DHCP_allocated_ip[3] = 0; + send_DHCP_DISCOVER(); + dhcp_state = STATE_DHCP_DISCOVER; + break; + case STATE_DHCP_DISCOVER : + if (type == DHCP_OFFER){ +#ifdef _DHCP_DEBUG_ + printf("> Receive DHCP_OFFER\r\n"); +#endif + DHCP_allocated_ip[0] = pDHCPMSG->yiaddr[0]; + DHCP_allocated_ip[1] = pDHCPMSG->yiaddr[1]; + DHCP_allocated_ip[2] = pDHCPMSG->yiaddr[2]; + DHCP_allocated_ip[3] = pDHCPMSG->yiaddr[3]; + + send_DHCP_REQUEST(); + dhcp_state = STATE_DHCP_REQUEST; + } else ret = check_DHCP_timeout(); + break; + + case STATE_DHCP_REQUEST : + if (type == DHCP_ACK) { + +#ifdef _DHCP_DEBUG_ + printf("> Receive DHCP_ACK\r\n"); +#endif + if (check_DHCP_leasedIP()) { + // Network info assignment from DHCP + dhcp_ip_assign(); + reset_DHCP_timeout(); + + dhcp_state = STATE_DHCP_LEASED; + } else { + // IP address conflict occurred + reset_DHCP_timeout(); + dhcp_ip_conflict(); + dhcp_state = STATE_DHCP_INIT; + } + } else if (type == DHCP_NAK) { + +#ifdef _DHCP_DEBUG_ + printf("> Receive DHCP_NACK\r\n"); +#endif + + reset_DHCP_timeout(); + + dhcp_state = STATE_DHCP_DISCOVER; + } else ret = check_DHCP_timeout(); + break; + + case STATE_DHCP_LEASED : + ret = DHCP_IP_LEASED; + if ((dhcp_lease_time != INFINITE_LEASETIME) && ((dhcp_lease_time/2) < dhcp_tick_1s)) { + +#ifdef _DHCP_DEBUG_ + printf("> Maintains the IP address \r\n"); +#endif + + type = 0; + OLD_allocated_ip[0] = DHCP_allocated_ip[0]; + OLD_allocated_ip[1] = DHCP_allocated_ip[1]; + OLD_allocated_ip[2] = DHCP_allocated_ip[2]; + OLD_allocated_ip[3] = DHCP_allocated_ip[3]; + + DHCP_XID++; + + send_DHCP_REQUEST(); + + reset_DHCP_timeout(); + + dhcp_state = STATE_DHCP_REREQUEST; + } + break; + + case STATE_DHCP_REREQUEST : + ret = DHCP_IP_LEASED; + if (type == DHCP_ACK) { + dhcp_retry_count = 0; + if (OLD_allocated_ip[0] != DHCP_allocated_ip[0] || + OLD_allocated_ip[1] != DHCP_allocated_ip[1] || + OLD_allocated_ip[2] != DHCP_allocated_ip[2] || + OLD_allocated_ip[3] != DHCP_allocated_ip[3]) + { + ret = DHCP_IP_CHANGED; + dhcp_ip_update(); + #ifdef _DHCP_DEBUG_ + printf(">IP changed.\r\n"); + #endif + + } + #ifdef _DHCP_DEBUG_ + else printf(">IP is continued.\r\n"); + #endif + reset_DHCP_timeout(); + dhcp_state = STATE_DHCP_LEASED; + } else if (type == DHCP_NAK) { + +#ifdef _DHCP_DEBUG_ + printf("> Receive DHCP_NACK, Failed to maintain ip\r\n"); +#endif + + reset_DHCP_timeout(); + + dhcp_state = STATE_DHCP_DISCOVER; + } else ret = check_DHCP_timeout(); + break; + default : + break; + } + + return ret; +} + +void DHCP_stop(void) +{ + close(DHCP_SOCKET); + dhcp_state = STATE_DHCP_STOP; +} + +uint8_t check_DHCP_timeout(void) +{ + uint8_t ret = DHCP_RUNNING; + + if (dhcp_retry_count < MAX_DHCP_RETRY) { + if (dhcp_tick_next < dhcp_tick_1s) { + + switch ( dhcp_state ) { + case STATE_DHCP_DISCOVER : +// printf("<> state : STATE_DHCP_DISCOVER\r\n"); + send_DHCP_DISCOVER(); + break; + + case STATE_DHCP_REQUEST : +// printf("<> state : STATE_DHCP_REQUEST\r\n"); + + send_DHCP_REQUEST(); + break; + + case STATE_DHCP_REREQUEST : +// printf("<> state : STATE_DHCP_REREQUEST\r\n"); + + send_DHCP_REQUEST(); + break; + + default : + break; + } + + dhcp_tick_1s = 0; + dhcp_tick_next = dhcp_tick_1s + DHCP_WAIT_TIME; + dhcp_retry_count++; + } + } else { // timeout occurred + + switch(dhcp_state) { + case STATE_DHCP_DISCOVER: + dhcp_state = STATE_DHCP_INIT; + ret = DHCP_FAILED; + break; + case STATE_DHCP_REQUEST: + case STATE_DHCP_REREQUEST: + send_DHCP_DISCOVER(); + dhcp_state = STATE_DHCP_DISCOVER; + break; + default : + break; + } + reset_DHCP_timeout(); + } + return ret; +} + +int8_t check_DHCP_leasedIP(void) +{ + uint8_t tmp; + int32_t ret; + + //WIZchip RCR value changed for ARP Timeout count control + tmp = getRCR(); + setRCR(0x03); + + // IP conflict detection : ARP request - ARP reply + // Broadcasting ARP Request for check the IP conflict using UDP sendto() function + ret = sendto(DHCP_SOCKET, (uint8_t *)"CHECK_IP_CONFLICT", 17, DHCP_allocated_ip, 5000); + + // RCR value restore + setRCR(tmp); + + if(ret == SOCKERR_TIMEOUT) { + // UDP send Timeout occurred : allocated IP address is unique, DHCP Success + +#ifdef _DHCP_DEBUG_ + printf("\r\n> Check leased IP - OK\r\n"); +#endif + + return 1; + } else { + // Received ARP reply or etc : IP address conflict occur, DHCP Failed + send_DHCP_DECLINE(); + + ret = dhcp_tick_1s; + while((dhcp_tick_1s - ret) < 2) ; // wait for 1s over; wait to complete to send DECLINE message; + + return 0; + } +} + +void DHCP_init(uint8_t s, uint8_t * buf) +{ + uint8_t zeroip[4] = {0,0,0,0}; + getSHAR(DHCP_CHADDR); + if((DHCP_CHADDR[0] | DHCP_CHADDR[1] | DHCP_CHADDR[2] | DHCP_CHADDR[3] | DHCP_CHADDR[4] | DHCP_CHADDR[5]) == 0x00) + { + // assigning temporary mac address, you should be set SHAR before call this function. + DHCP_CHADDR[0] = 0x00; + DHCP_CHADDR[1] = 0x08; + DHCP_CHADDR[2] = 0xdc; + DHCP_CHADDR[3] = 0x00; + DHCP_CHADDR[4] = 0x00; + DHCP_CHADDR[5] = 0x00; + setSHAR(DHCP_CHADDR); + } + + DHCP_SOCKET = s; // SOCK_DHCP + pDHCPMSG = (RIP_MSG*)buf; + DHCP_XID = 0x12345678; + { + DHCP_XID += DHCP_CHADDR[3]; + DHCP_XID += DHCP_CHADDR[4]; + DHCP_XID += DHCP_CHADDR[5]; + DHCP_XID += (DHCP_CHADDR[3] ^ DHCP_CHADDR[4] ^ DHCP_CHADDR[5]); + } + // WIZchip Netinfo Clear + setSIPR(zeroip); + setGAR(zeroip); + + reset_DHCP_timeout(); + dhcp_state = STATE_DHCP_INIT; +} + + +/* Reset the DHCP timeout count and retry count. */ +void reset_DHCP_timeout(void) +{ + dhcp_tick_1s = 0; + dhcp_tick_next = DHCP_WAIT_TIME; + dhcp_retry_count = 0; +} + +void DHCP_time_handler(void) +{ + dhcp_tick_1s++; +} + +void getIPfromDHCP(uint8_t* ip) +{ + ip[0] = DHCP_allocated_ip[0]; + ip[1] = DHCP_allocated_ip[1]; + ip[2] = DHCP_allocated_ip[2]; + ip[3] = DHCP_allocated_ip[3]; +} + +void getGWfromDHCP(uint8_t* ip) +{ + ip[0] =DHCP_allocated_gw[0]; + ip[1] =DHCP_allocated_gw[1]; + ip[2] =DHCP_allocated_gw[2]; + ip[3] =DHCP_allocated_gw[3]; +} + +void getSNfromDHCP(uint8_t* ip) +{ + ip[0] = DHCP_allocated_sn[0]; + ip[1] = DHCP_allocated_sn[1]; + ip[2] = DHCP_allocated_sn[2]; + ip[3] = DHCP_allocated_sn[3]; +} + +void getDNSfromDHCP(uint8_t* ip) +{ + ip[0] = DHCP_allocated_dns[0]; + ip[1] = DHCP_allocated_dns[1]; + ip[2] = DHCP_allocated_dns[2]; + ip[3] = DHCP_allocated_dns[3]; +} + +uint32_t getDHCPLeasetime(void) +{ + return dhcp_lease_time; +} + +char NibbleToHex(uint8_t nibble) +{ + nibble &= 0x0F; + if (nibble <= 9) + return nibble + '0'; + else + return nibble + ('A'-0x0A); +} + + diff --git a/User/ioLibrary_Driver/Internet/DHCP/dhcp.h b/User/ioLibrary_Driver/Internet/DHCP/dhcp.h new file mode 100644 index 0000000..9a8d5e9 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/DHCP/dhcp.h @@ -0,0 +1,161 @@ +//***************************************************************************** +// +//! \file dhcp.h +//! \brief DHCP APIs Header file. +//! \details Processig DHCP protocol as DISCOVER, OFFER, REQUEST, ACK, NACK and DECLINE. +//! \version 1.1.1 +//! \date 2019/10/08 +//! \par Revision history +//! <2019/10/08> compare DHCP server ip address +//! <2013/11/18> 1st Release +//! <2012/12/20> V1.1.0 +//! 1. Move unreferenced DEFINE to dhcp.c +//! <2012/12/26> V1.1.1 +//! \author Eric Jung & MidnightCow +//! \copyright +//! +//! Copyright (c) 2013, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** +#ifndef _DHCP_H_ +#define _DHCP_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @brief + * @details If you want to display debug & processing message, Define _DHCP_DEBUG_ + * @note If defined, it depends on + */ +//#define _DHCP_DEBUG_ + + +/* Retry to processing DHCP */ +#define MAX_DHCP_RETRY 2 ///< Maximum retry count +#define DHCP_WAIT_TIME 10 ///< Wait Time 10s + + +/* UDP port numbers for DHCP */ +#define DHCP_SERVER_PORT 67 ///< DHCP server port number +#define DHCP_CLIENT_PORT 68 ///< DHCP client port number + + +#define MAGIC_COOKIE 0x63825363 ///< You should not modify it number. + +#define DCHP_HOST_NAME "WIZnet\0" + +/* + * @brief return value of @ref DHCP_run() + */ +enum +{ + DHCP_FAILED = 0, ///< Processing Fail + DHCP_RUNNING, ///< Processing DHCP protocol + DHCP_IP_ASSIGN, ///< First Occupy IP from DHPC server (if cbfunc == null, act as default default_ip_assign) + DHCP_IP_CHANGED, ///< Change IP address by new ip from DHCP (if cbfunc == null, act as default default_ip_update) + DHCP_IP_LEASED, ///< Stand by + DHCP_STOPPED ///< Stop processing DHCP protocol +}; + +/* + * @brief DHCP client initialization (outside of the main loop) + * @param s - socket number + * @param buf - buffer for processing DHCP message + */ +void DHCP_init(uint8_t s, uint8_t * buf); + +/* + * @brief DHCP 1s Tick Timer handler + * @note SHOULD BE register to your system 1s Tick timer handler + */ +void DHCP_time_handler(void); + +/* + * @brief Register call back function + * @param ip_assign - callback func when IP is assigned from DHCP server first + * @param ip_update - callback func when IP is changed + * @param ip_conflict - callback func when the assigned IP is conflict with others. + */ +void reg_dhcp_cbfunc(void(*ip_assign)(void), void(*ip_update)(void), void(*ip_conflict)(void)); + +/* + * @brief DHCP client in the main loop + * @return The value is as the follow \n + * @ref DHCP_FAILED \n + * @ref DHCP_RUNNING \n + * @ref DHCP_IP_ASSIGN \n + * @ref DHCP_IP_CHANGED \n + * @ref DHCP_IP_LEASED \n + * @ref DHCP_STOPPED \n + * + * @note This function is always called by you main task. + */ +uint8_t DHCP_run(void); + +/* + * @brief Stop DHCP processing + * @note If you want to restart. call DHCP_init() and DHCP_run() + */ +void DHCP_stop(void); + +/* Get Network information assigned from DHCP server */ +/* + * @brief Get IP address + * @param ip - IP address to be returned + */ +void getIPfromDHCP(uint8_t* ip); +/* + * @brief Get Gateway address + * @param ip - Gateway address to be returned + */ +void getGWfromDHCP(uint8_t* ip); +/* + * @brief Get Subnet mask value + * @param ip - Subnet mask to be returned + */ +void getSNfromDHCP(uint8_t* ip); +/* + * @brief Get DNS address + * @param ip - DNS address to be returned + */ +void getDNSfromDHCP(uint8_t* ip); + +/* + * @brief Get the leased time by DHCP sever + * @return unit 1s + */ +uint32_t getDHCPLeasetime(void); + +#ifdef __cplusplus +} +#endif + +#endif /* _DHCP_H_ */ diff --git a/User/ioLibrary_Driver/Internet/DNS/dns.c b/User/ioLibrary_Driver/Internet/DNS/dns.c new file mode 100644 index 0000000..ce7b8dd --- /dev/null +++ b/User/ioLibrary_Driver/Internet/DNS/dns.c @@ -0,0 +1,564 @@ +//***************************************************************************** +// +//! \file dns.c +//! \brief DNS APIs Implement file. +//! \details Send DNS query & Receive DNS reponse. \n +//! It depends on stdlib.h & string.h in ansi-c library +//! \version 1.1.0 +//! \date 2013/11/18 +//! \par Revision history +//! <2013/10/21> 1st Release +//! <2013/12/20> V1.1.0 +//! 1. Remove secondary DNS server in DNS_run +//! If 1st DNS_run failed, call DNS_run with 2nd DNS again +//! 2. DNS_timerHandler -> DNS_time_handler +//! 3. Remove the unused define +//! 4. Integrated dns.h dns.c & dns_parse.h dns_parse.c into dns.h & dns.c +//! <2013/12/20> V1.1.0 +//! +//! \author Eric Jung & MidnightCow +//! \copyright +//! +//! Copyright (c) 2013, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** + +#include +#include + +#include "socket.h" +#include "dns.h" + +#ifdef _DNS_DEBUG_ + #include +#endif + +#define INITRTT 2000L /* Initial smoothed response time */ +#define MAXCNAME (MAX_DOMAIN_NAME + (MAX_DOMAIN_NAME>>1)) /* Maximum amount of cname recursion */ + +#define TYPE_A 1 /* Host address */ +#define TYPE_NS 2 /* Name server */ +#define TYPE_MD 3 /* Mail destination (obsolete) */ +#define TYPE_MF 4 /* Mail forwarder (obsolete) */ +#define TYPE_CNAME 5 /* Canonical name */ +#define TYPE_SOA 6 /* Start of Authority */ +#define TYPE_MB 7 /* Mailbox name (experimental) */ +#define TYPE_MG 8 /* Mail group member (experimental) */ +#define TYPE_MR 9 /* Mail rename name (experimental) */ +#define TYPE_NULL 10 /* Null (experimental) */ +#define TYPE_WKS 11 /* Well-known sockets */ +#define TYPE_PTR 12 /* Pointer record */ +#define TYPE_HINFO 13 /* Host information */ +#define TYPE_MINFO 14 /* Mailbox information (experimental)*/ +#define TYPE_MX 15 /* Mail exchanger */ +#define TYPE_TXT 16 /* Text strings */ +#define TYPE_ANY 255 /* Matches any type */ + +#define CLASS_IN 1 /* The ARPA Internet */ + +/* Round trip timing parameters */ +#define AGAIN 8 /* Average RTT gain = 1/8 */ +#define LAGAIN 3 /* Log2(AGAIN) */ +#define DGAIN 4 /* Mean deviation gain = 1/4 */ +#define LDGAIN 2 /* log2(DGAIN) */ + +/* Header for all domain messages */ +struct dhdr +{ + uint16_t id; /* Identification */ + uint8_t qr; /* Query/Response */ +#define QUERY 0 +#define RESPONSE 1 + uint8_t opcode; +#define IQUERY 1 + uint8_t aa; /* Authoratative answer */ + uint8_t tc; /* Truncation */ + uint8_t rd; /* Recursion desired */ + uint8_t ra; /* Recursion available */ + uint8_t rcode; /* Response code */ +#define NO_ERROR 0 +#define FORMAT_ERROR 1 +#define SERVER_FAIL 2 +#define NAME_ERROR 3 +#define NOT_IMPL 4 +#define REFUSED 5 + uint16_t qdcount; /* Question count */ + uint16_t ancount; /* Answer count */ + uint16_t nscount; /* Authority (name server) count */ + uint16_t arcount; /* Additional record count */ +}; + + +uint8_t* pDNSMSG; // DNS message buffer +uint8_t DNS_SOCKET; // SOCKET number for DNS +uint16_t DNS_MSGID; // DNS message ID + +uint32_t dns_1s_tick; // for timout of DNS processing +static uint8_t retry_count; + +/* converts uint16_t from network buffer to a host byte order integer. */ +uint16_t get16(uint8_t * s) +{ + uint16_t i; + i = *s++ << 8; + i = i + *s; + return i; +} + +/* copies uint16_t to the network buffer with network byte order. */ +uint8_t * put16(uint8_t * s, uint16_t i) +{ + *s++ = i >> 8; + *s++ = i; + return s; +} + + +/* + * CONVERT A DOMAIN NAME TO THE HUMAN-READABLE FORM + * + * Description : This function converts a compressed domain name to the human-readable form + * Arguments : msg - is a pointer to the reply message + * compressed - is a pointer to the domain name in reply message. + * buf - is a pointer to the buffer for the human-readable form name. + * len - is the MAX. size of buffer. + * Returns : the length of compressed message + */ +int parse_name(uint8_t * msg, uint8_t * compressed, char * buf, int16_t len) +{ + uint16_t slen; /* Length of current segment */ + uint8_t * cp; + int clen = 0; /* Total length of compressed name */ + int indirect = 0; /* Set if indirection encountered */ + int nseg = 0; /* Total number of segments in name */ + + cp = compressed; + + for (;;) + { + slen = *cp++; /* Length of this segment */ + + if (!indirect) clen++; + + if ((slen & 0xc0) == 0xc0) + { + if (!indirect) + clen++; + indirect = 1; + /* Follow indirection */ + cp = &msg[((slen & 0x3f)<<8) + *cp]; + slen = *cp++; + } + + if (slen == 0) /* zero length == all done */ + break; + + len -= slen + 1; + + if (len < 0) return -1; + + if (!indirect) clen += slen; + + while (slen-- != 0) *buf++ = (char)*cp++; + *buf++ = '.'; + nseg++; + } + + if (nseg == 0) + { + /* Root name; represent as single dot */ + *buf++ = '.'; + len--; + } + + *buf++ = '\0'; + len--; + + return clen; /* Length of compressed message */ +} + +/* + * PARSE QUESTION SECTION + * + * Description : This function parses the qeustion record of the reply message. + * Arguments : msg - is a pointer to the reply message + * cp - is a pointer to the qeustion record. + * Returns : a pointer the to next record. + */ +uint8_t * dns_question(uint8_t * msg, uint8_t * cp) +{ + int len; + char name[MAXCNAME]; + + len = parse_name(msg, cp, name, MAXCNAME); + + + if (len == -1) return 0; + + cp += len; + cp += 2; /* type */ + cp += 2; /* class */ + + return cp; +} + + +/* + * PARSE ANSER SECTION + * + * Description : This function parses the answer record of the reply message. + * Arguments : msg - is a pointer to the reply message + * cp - is a pointer to the answer record. + * Returns : a pointer the to next record. + */ +uint8_t * dns_answer(uint8_t * msg, uint8_t * cp, uint8_t * ip_from_dns) +{ + int len, type; + char name[MAXCNAME]; + + len = parse_name(msg, cp, name, MAXCNAME); + + if (len == -1) return 0; + + cp += len; + type = get16(cp); + cp += 2; /* type */ + cp += 2; /* class */ + cp += 4; /* ttl */ + cp += 2; /* len */ + + + switch (type) + { + case TYPE_A: + /* Just read the address directly into the structure */ + ip_from_dns[0] = *cp++; + ip_from_dns[1] = *cp++; + ip_from_dns[2] = *cp++; + ip_from_dns[3] = *cp++; + break; + case TYPE_CNAME: + case TYPE_MB: + case TYPE_MG: + case TYPE_MR: + case TYPE_NS: + case TYPE_PTR: + /* These types all consist of a single domain name */ + /* convert it to ascii format */ + len = parse_name(msg, cp, name, MAXCNAME); + if (len == -1) return 0; + + cp += len; + break; + case TYPE_HINFO: + len = *cp++; + cp += len; + + len = *cp++; + cp += len; + break; + case TYPE_MX: + cp += 2; + /* Get domain name of exchanger */ + len = parse_name(msg, cp, name, MAXCNAME); + if (len == -1) return 0; + + cp += len; + break; + case TYPE_SOA: + /* Get domain name of name server */ + len = parse_name(msg, cp, name, MAXCNAME); + if (len == -1) return 0; + + cp += len; + + /* Get domain name of responsible person */ + len = parse_name(msg, cp, name, MAXCNAME); + if (len == -1) return 0; + + cp += len; + + cp += 4; + cp += 4; + cp += 4; + cp += 4; + cp += 4; + break; + case TYPE_TXT: + /* Just stash */ + break; + default: + /* Ignore */ + break; + } + + return cp; +} + +/* + * PARSE THE DNS REPLY + * + * Description : This function parses the reply message from DNS server. + * Arguments : dhdr - is a pointer to the header for DNS message + * buf - is a pointer to the reply message. + * len - is the size of reply message. + * Returns : -1 - Domain name lenght is too big + * 0 - Fail (Timout or parse error) + * 1 - Success, + */ +int8_t parseDNSMSG(struct dhdr * pdhdr, uint8_t * pbuf, uint8_t * ip_from_dns) +{ + uint16_t tmp; + uint16_t i; + uint8_t * msg; + uint8_t * cp; + + msg = pbuf; + memset(pdhdr, 0, sizeof(*pdhdr)); + + pdhdr->id = get16(&msg[0]); + tmp = get16(&msg[2]); + if (tmp & 0x8000) pdhdr->qr = 1; + + pdhdr->opcode = (tmp >> 11) & 0xf; + + if (tmp & 0x0400) pdhdr->aa = 1; + if (tmp & 0x0200) pdhdr->tc = 1; + if (tmp & 0x0100) pdhdr->rd = 1; + if (tmp & 0x0080) pdhdr->ra = 1; + + pdhdr->rcode = tmp & 0xf; + pdhdr->qdcount = get16(&msg[4]); + pdhdr->ancount = get16(&msg[6]); + pdhdr->nscount = get16(&msg[8]); + pdhdr->arcount = get16(&msg[10]); + + + /* Now parse the variable length sections */ + cp = &msg[12]; + + /* Question section */ + for (i = 0; i < pdhdr->qdcount; i++) + { + cp = dns_question(msg, cp); + #ifdef _DNS_DEUBG_ + printf("MAX_DOMAIN_NAME is too small, it should be redfine in dns.h"); + #endif + if(!cp) return -1; + } + + /* Answer section */ + for (i = 0; i < pdhdr->ancount; i++) + { + cp = dns_answer(msg, cp, ip_from_dns); + #ifdef _DNS_DEUBG_ + printf("MAX_DOMAIN_NAME is too small, it should be redfine in dns.h"); + #endif + if(!cp) return -1; + } + + /* Name server (authority) section */ + for (i = 0; i < pdhdr->nscount; i++) + { + ; + } + + /* Additional section */ + for (i = 0; i < pdhdr->arcount; i++) + { + ; + } + + if(pdhdr->rcode == 0) return 1; // No error + else return 0; +} + + +/* + * MAKE DNS QUERY MESSAGE + * + * Description : This function makes DNS query message. + * Arguments : op - Recursion desired + * name - is a pointer to the domain name. + * buf - is a pointer to the buffer for DNS message. + * len - is the MAX. size of buffer. + * Returns : the pointer to the DNS message. + */ +int16_t dns_makequery(uint16_t op, char * name, uint8_t * buf, uint16_t len) +{ + uint8_t *cp; + char *cp1; + char sname[MAXCNAME]; + char *dname; + uint16_t p; + uint16_t dlen; + + cp = buf; + + DNS_MSGID++; + cp = put16(cp, DNS_MSGID); + p = (op << 11) | 0x0100; /* Recursion desired */ + cp = put16(cp, p); + cp = put16(cp, 1); + cp = put16(cp, 0); + cp = put16(cp, 0); + cp = put16(cp, 0); + + strcpy(sname, name); + dname = sname; + dlen = strlen(dname); + for (;;) + { + /* Look for next dot */ + cp1 = strchr(dname, '.'); + + if (cp1 != NULL) len = cp1 - dname; /* More to come */ + else len = dlen; /* Last component */ + + *cp++ = len; /* Write length of component */ + if (len == 0) break; + + /* Copy component up to (but not including) dot */ + strncpy((char *)cp, dname, len); + cp += len; + if (cp1 == NULL) + { + *cp++ = 0; /* Last one; write null and finish */ + break; + } + dname += len+1; + dlen -= len+1; + } + + cp = put16(cp, 0x0001); /* type */ + cp = put16(cp, 0x0001); /* class */ + + return ((int16_t)((uint32_t)(cp) - (uint32_t)(buf))); +} + +/* + * CHECK DNS TIMEOUT + * + * Description : This function check the DNS timeout + * Arguments : None. + * Returns : -1 - timeout occurred, 0 - timer over, but no timeout, 1 - no timer over, no timeout occur + * Note : timeout : retry count and timer both over. + */ + +int8_t check_DNS_timeout(void) +{ + + if(dns_1s_tick >= DNS_WAIT_TIME) + { + dns_1s_tick = 0; + if(retry_count >= MAX_DNS_RETRY) { + retry_count = 0; + return -1; // timeout occurred + } + retry_count++; + return 0; // timer over, but no timeout + } + + return 1; // no timer over, no timeout occur +} + + + +/* DNS CLIENT INIT */ +void DNS_init(uint8_t s, uint8_t * buf) +{ + DNS_SOCKET = s; // SOCK_DNS + pDNSMSG = buf; // User's shared buffer + DNS_MSGID = DNS_MSG_ID; +} + +/* DNS CLIENT RUN */ +int8_t DNS_run(uint8_t * dns_ip, uint8_t * name, uint8_t * ip_from_dns) +{ + int8_t ret; + struct dhdr dhp; + uint8_t ip[4]; + uint16_t len, port; + int8_t ret_check_timeout; + + retry_count = 0; + dns_1s_tick = 0; + + // Socket open + socket(DNS_SOCKET, Sn_MR_UDP, 0, 0); + +#ifdef _DNS_DEBUG_ + printf("> DNS Query to DNS Server : %d.%d.%d.%d\r\n", dns_ip[0], dns_ip[1], dns_ip[2], dns_ip[3]); +#endif + + len = dns_makequery(0, (char *)name, pDNSMSG, MAX_DNS_BUF_SIZE); + sendto(DNS_SOCKET, pDNSMSG, len, dns_ip, IPPORT_DOMAIN); + + while (1) + { + if ((len = getSn_RX_RSR(DNS_SOCKET)) > 0) + { + if (len > MAX_DNS_BUF_SIZE) len = MAX_DNS_BUF_SIZE; + len = recvfrom(DNS_SOCKET, pDNSMSG, len, ip, &port); + #ifdef _DNS_DEBUG_ + printf("> Receive DNS message from %d.%d.%d.%d(%d). len = %d\r\n", ip[0], ip[1], ip[2], ip[3],port,len); + #endif + ret = parseDNSMSG(&dhp, pDNSMSG, ip_from_dns); + break; + } + // Check Timeout + ret_check_timeout = check_DNS_timeout(); + if (ret_check_timeout < 0) { + +#ifdef _DNS_DEBUG_ + printf("> DNS Server is not responding : %d.%d.%d.%d\r\n", dns_ip[0], dns_ip[1], dns_ip[2], dns_ip[3]); +#endif + close(DNS_SOCKET); + return 0; // timeout occurred + } + else if (ret_check_timeout == 0) { + +#ifdef _DNS_DEBUG_ + printf("> DNS Timeout\r\n"); +#endif + sendto(DNS_SOCKET, pDNSMSG, len, dns_ip, IPPORT_DOMAIN); + } + } + close(DNS_SOCKET); + // Return value + // 0 > : failed / 1 - success + return ret; +} + + +/* DNS TIMER HANDLER */ +void DNS_time_handler(void) +{ + dns_1s_tick++; +} diff --git a/User/ioLibrary_Driver/Internet/DNS/dns.h b/User/ioLibrary_Driver/Internet/DNS/dns.h new file mode 100644 index 0000000..1eab1f9 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/DNS/dns.h @@ -0,0 +1,109 @@ +//***************************************************************************** +// +//! \file dns.h +//! \brief DNS APIs Header file. +//! \details Send DNS query & Receive DNS reponse. +//! \version 1.1.0 +//! \date 2013/11/18 +//! \par Revision history +//! <2013/10/21> 1st Release +//! <2013/12/20> V1.1.0 +//! 1. Remove secondary DNS server in DNS_run +//! If 1st DNS_run failed, call DNS_run with 2nd DNS again +//! 2. DNS_timerHandler -> DNS_time_handler +//! 3. Move the no reference define to dns.c +//! 4. Integrated dns.h dns.c & dns_parse.h dns_parse.c into dns.h & dns.c +//! <2013/12/20> V1.1.0 +//! +//! \author Eric Jung & MidnightCow +//! \copyright +//! +//! Copyright (c) 2013, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** + +#ifndef _DNS_H_ +#define _DNS_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +/* + * @brief Define it for Debug & Monitor DNS processing. + * @note If defined, it dependens on + */ +//#define _DNS_DEBUG_ + +#define MAX_DNS_BUF_SIZE 256 ///< maximum size of DNS buffer. */ +/* + * @brief Maxium length of your queried Domain name + * @todo SHOULD BE defined it equal as or greater than your Domain name lenght + null character(1) + * @note SHOULD BE careful to stack overflow because it is allocated 1.5 times as MAX_DOMAIN_NAME in stack. + */ +#define MAX_DOMAIN_NAME 128 // for example "www.google.com" + +#define MAX_DNS_RETRY 2 ///< Requery Count +#define DNS_WAIT_TIME 3 ///< Wait response time. unit 1s. + +#define IPPORT_DOMAIN 53 ///< DNS server port number + +#define DNS_MSG_ID 0x1122 ///< ID for DNS message. You can be modifyed it any number +/* + * @brief DNS process initialize + * @param s : Socket number for DNS + * @param buf : Buffer for DNS message + */ +void DNS_init(uint8_t s, uint8_t * buf); + +/* + * @brief DNS process + * @details Send DNS query and receive DNS response + * @param dns_ip : DNS server ip + * @param name : Domain name to be queryed + * @param ip_from_dns : IP address from DNS server + * @return -1 : failed. @ref MAX_DOMIN_NAME is too small \n + * 0 : failed (Timeout or Parse error)\n + * 1 : success + * @note This funtion blocks until success or fail. max time = @ref MAX_DNS_RETRY * @ref DNS_WAIT_TIME + */ +int8_t DNS_run(uint8_t * dns_ip, uint8_t * name, uint8_t * ip_from_dns); + +/* + * @brief DNS 1s Tick Timer handler + * @note SHOULD BE register to your system 1s Tick timer handler + */ +void DNS_time_handler(void); + +#ifdef __cplusplus +} +#endif + +#endif /* _DNS_H_ */ diff --git a/User/ioLibrary_Driver/Internet/FTPClient/ftpc.c b/User/ioLibrary_Driver/Internet/FTPClient/ftpc.c new file mode 100644 index 0000000..6c35920 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/FTPClient/ftpc.c @@ -0,0 +1,584 @@ +#include "ftpc.h" + +un_l2cval remote_ip; +uint16_t remote_port; +un_l2cval local_ip; +uint16_t local_port; +uint8_t connect_state_control_ftpc = 0; +uint8_t connect_state_data_ftpc = 0; +uint8_t gModeActivePassiveflag = 0; +uint8_t FTP_destip[4] = {192, 168, 10, 230}; // For FTP client examples; destination network info +uint16_t FTP_destport = 21; // For FTP client examples; destination network info +uint8_t gMenuStart = 0; +uint8_t gDataSockReady = 0; +uint8_t gDataPutGetStart = 0; +static uint8_t gMsgBuf[20]={0,}; + +struct ftpc ftpc; +struct Command Command; + +void ftpc_init(uint8_t * src_ip) +{ + ftpc.dsock_mode = ACTIVE_MODE; + + local_ip.cVal[0] = src_ip[0]; + local_ip.cVal[1] = src_ip[1]; + local_ip.cVal[2] = src_ip[2]; + local_ip.cVal[3] = src_ip[3]; + local_port = 35000; + strcpy(ftpc.workingdir, "/"); + socket(CTRL_SOCK, Sn_MR_TCP, FTP_destport, 0x0); +} +uint8_t ftpc_run(uint8_t * dbuf) +{ +#ifndef Need_UARTGetCharBlocking_func + uint16_t size = 0; + long ret = 0; + uint32_t send_byte, recv_byte; + uint32_t blocklen; + uint32_t remain_filesize; + uint32_t remain_datasize; + uint8_t msg_c; + uint8_t dat[50]={0,}; + uint32_t totalSize = 0, availableSize = 0; + + switch(getSn_SR(CTRL_SOCK)) + { + case SOCK_ESTABLISHED : + if(!connect_state_control_ftpc){ + printf("%d:FTP Connected\r\n", CTRL_SOCK); + strcpy(ftpc.workingdir, "/"); + connect_state_control_ftpc = 1; + } + if(gMenuStart){ + gMenuStart = 0; + printf("\r\n----------------------------------------\r\n"); + printf("Press menu key\r\n"); + printf("----------------------------------------\r\n"); + printf("1> View FTP Server Directory\r\n"); + printf("2> View My Directory\r\n"); + printf("3> Sets the type of file to be transferred. Current state : %s\r\n", (ftpc.type==ASCII_TYPE)?"Ascii":"Binary"); + printf("4> Sets Data Connection. Current state : %s\r\n", (ftpc.dsock_mode==ACTIVE_MODE)?"Active":"Passive"); + printf("5> Put File to Server\r\n"); + printf("6> Get File from Server\r\n"); +#if defined(F_FILESYSTEM) + printf("7> Delete My File\r\n"); +#endif + printf("----------------------------------------\r\n"); + while(1){ + msg_c=ftp_getc(); + if(msg_c=='1'){ + if(ftpc.dsock_mode==PASSIVE_MODE){ + sprintf(dat,"PASV\r\n"); + send(CTRL_SOCK, (uint8_t *)dat, strlen(dat)); + Command.First = f_dir; + break; + } + else{ + wiz_NetInfo gWIZNETINFO; + ctlnetwork(CN_GET_NETINFO, (void*) &gWIZNETINFO); + sprintf(dat,"PORT %d,%d,%d,%d,%d,%d\r\n", gWIZNETINFO.ip[0], gWIZNETINFO.ip[1], gWIZNETINFO.ip[2], gWIZNETINFO.ip[3], (uint8_t)(local_port>>8), (uint8_t)(local_port&0x00ff)); + send(CTRL_SOCK, (uint8_t *)dat, strlen(dat)); + Command.First = f_dir; + + gModeActivePassiveflag = 1; + break; + } + break; + } + else if(msg_c=='5'){ + if(ftpc.dsock_mode==PASSIVE_MODE){ + sprintf(dat,"PASV\r\n"); + send(CTRL_SOCK, (uint8_t *)dat, strlen(dat)); + Command.First = f_put; + break; + } + else{ + wiz_NetInfo gWIZNETINFO; + ctlnetwork(CN_GET_NETINFO, (void*) &gWIZNETINFO); + sprintf(dat,"PORT %d,%d,%d,%d,%d,%d\r\n", gWIZNETINFO.ip[0], gWIZNETINFO.ip[1], gWIZNETINFO.ip[2], gWIZNETINFO.ip[3], (uint8_t)(local_port>>8), (uint8_t)(local_port&0x00ff)); + send(CTRL_SOCK, (uint8_t *)dat, strlen(dat)); + Command.First = f_put; + + gModeActivePassiveflag = 1; + break; + } + } + else if(msg_c=='6'){ + if(ftpc.dsock_mode==PASSIVE_MODE){ + sprintf(dat,"PASV\r\n"); + send(CTRL_SOCK, (uint8_t *)dat, strlen(dat)); + Command.First = f_get; + break; + } + else{ + wiz_NetInfo gWIZNETINFO; + ctlnetwork(CN_GET_NETINFO, (void*) &gWIZNETINFO); + sprintf(dat,"PORT %d,%d,%d,%d,%d,%d\r\n", gWIZNETINFO.ip[0], gWIZNETINFO.ip[1], gWIZNETINFO.ip[2], gWIZNETINFO.ip[3], (uint8_t)(local_port>>8), (uint8_t)(local_port&0x00ff)); + send(CTRL_SOCK, (uint8_t *)dat, strlen(dat)); + Command.First = f_get; + + gModeActivePassiveflag = 1; + break; + } + } + else if(msg_c=='2'){ +#if defined(F_FILESYSTEM) + scan_files(ftpc.workingdir, dbuf, (int *)&size); + printf("\r\n%s\r\n", dbuf); +#else + if (strncmp(ftpc.workingdir, "/$Recycle.Bin", sizeof("/$Recycle.Bin")) != 0) + size = sprintf(dbuf, "drwxr-xr-x 1 ftp ftp 0 Dec 31 2014 $Recycle.Bin\r\n-rwxr-xr-x 1 ftp ftp 512 Dec 31 2014 test.txt\r\n"); + printf("\r\n%s\r\n", dbuf); +#endif + gMenuStart = 1; + break; + } + else if(msg_c=='3'){ + printf("1> ASCII\r\n"); + printf("2> BINARY\r\n"); + while(1){ + msg_c=ftp_getc(); + if(msg_c=='1'){ + sprintf(dat,"TYPE %c\r\n", TransferAscii); + ftpc.type = ASCII_TYPE; + send(CTRL_SOCK, (uint8_t *)dat, strlen(dat)); + break; + } + else if(msg_c=='2'){ + sprintf(dat,"TYPE %c\r\n", TransferBinary); + ftpc.type = IMAGE_TYPE; + send(CTRL_SOCK, (uint8_t *)dat, strlen(dat)); + break; + } + else{ + printf("\r\nRetry...\r\n"); + } + } + break; + } + else if(msg_c=='4'){ + printf("1> ACTIVE\r\n"); + printf("2> PASSIVE\r\n"); + while(1){ + msg_c=ftp_getc(); + if(msg_c=='1'){ + ftpc.dsock_mode=ACTIVE_MODE; + break; + } + else if(msg_c=='2'){ + ftpc.dsock_mode=PASSIVE_MODE; + break; + } + else{ + printf("\r\nRetry...\r\n"); + } + } + gMenuStart = 1; + break; + } +#if defined(F_FILESYSTEM) + else if(msg_c=='7'){ + printf(">del filename?"); + sprintf(ftpc.filename, "/%s\r\n", User_Keyboard_MSG()); + if (f_unlink((const char *)ftpc.filename) != 0){ + printf("\r\nCould not delete.\r\n"); + } + else{ + printf("\r\nDeleted.\r\n"); + } + gMenuStart = 1; + break; + } +#endif + else{ + printf("\r\nRetry...\r\n"); + } + } + } + if(gDataSockReady){ + gDataSockReady = 0; + switch(Command.First){ + case f_dir: + sprintf(dat,"LIST\r\n"); + send(CTRL_SOCK, (uint8_t *)dat, strlen(dat)); + break; + case f_put: + printf(">put file name?"); + sprintf(dat,"STOR %s\r\n", User_Keyboard_MSG()); + send(CTRL_SOCK, (uint8_t *)dat, strlen(dat)); + break; + case f_get: + printf(">get file name?"); + sprintf(dat,"RETR %s\r\n", User_Keyboard_MSG()); + send(CTRL_SOCK, (uint8_t *)dat, strlen(dat)); + break; + default: + printf("Command.First = default\r\n"); + break; + } + } + if((size = getSn_RX_RSR(CTRL_SOCK)) > 0){ // Don't need to check SOCKERR_BUSY because it doesn't not occur. + memset(dbuf, 0, _MAX_SS); + if(size > _MAX_SS) size = _MAX_SS - 1; + ret = recv(CTRL_SOCK,dbuf,size); + dbuf[ret] = '\0'; + if(ret != size) + { + if(ret==SOCK_BUSY) return 0; + if(ret < 0){ + printf("%d:recv() error:%ld\r\n",CTRL_SOCK,ret); + close(CTRL_SOCK); + return ret; + } + } + printf("Rcvd Command: %s\r\n", dbuf); + proc_ftpc((char *)dbuf); + } + break; + case SOCK_CLOSE_WAIT : + printf("%d:CloseWait\r\n",CTRL_SOCK); + if((ret=disconnect(CTRL_SOCK)) != SOCK_OK) return ret; + printf("%d:Closed\r\n",CTRL_SOCK); + break; + case SOCK_CLOSED : + printf("%d:FTPStart\r\n",CTRL_SOCK); + if((ret=socket(CTRL_SOCK, Sn_MR_TCP, FTP_destport, 0x0)) != CTRL_SOCK){ + printf("%d:socket() error:%ld\r\n", CTRL_SOCK, ret); + close(CTRL_SOCK); + return ret; + } + break; + case SOCK_INIT : + printf("%d:Opened\r\n",CTRL_SOCK); + if((ret = connect(CTRL_SOCK, FTP_destip, FTP_destport)) != SOCK_OK){ + printf("%d:Connect error\r\n",CTRL_SOCK); + return ret; + } + connect_state_control_ftpc = 0; + printf("%d:Connectting...\r\n",CTRL_SOCK); + break; + default : + break; + } + + switch(getSn_SR(DATA_SOCK)){ + case SOCK_ESTABLISHED : + if(!connect_state_data_ftpc){ + printf("%d:FTP Data socket Connected\r\n", DATA_SOCK); + connect_state_data_ftpc = 1; + } + if(gDataPutGetStart){ + switch(Command.Second){ + case s_dir: + printf("dir waiting...\r\n"); + if((size = getSn_RX_RSR(DATA_SOCK)) > 0){ // Don't need to check SOCKERR_BUSY because it doesn't not occur. + printf("ok\r\n"); + memset(dbuf, 0, _MAX_SS); + if(size > _MAX_SS) size = _MAX_SS - 1; + ret = recv(DATA_SOCK,dbuf,size); + dbuf[ret] = '\0'; + if(ret != size){ + if(ret==SOCK_BUSY) return 0; + if(ret < 0){ + printf("%d:recv() error:%ld\r\n",CTRL_SOCK,ret); + close(DATA_SOCK); + return ret; + } + } + printf("Rcvd Data:\n\r%s\n\r", dbuf); + gDataPutGetStart = 0; + Command.Second = s_nocmd; + } + break; + case s_put: + printf("put waiting...\r\n"); + if(strlen(ftpc.workingdir) == 1) + sprintf(ftpc.filename, "/%s", (uint8_t *)gMsgBuf); + else + sprintf(ftpc.filename, "%s/%s", ftpc.workingdir, (uint8_t *)gMsgBuf); +#if defined(F_FILESYSTEM) + ftpc.fr = f_open(&(ftpc.fil), (const char *)ftpc.filename, FA_READ); + if(ftpc.fr == FR_OK){ + remain_filesize = ftpc.fil.fsize; + printf("f_open return FR_OK\r\n"); + do{ + memset(dbuf, 0, _MAX_SS); + if(remain_filesize > _MAX_SS) + send_byte = _MAX_SS; + else + send_byte = remain_filesize; + ftpc.fr = f_read(&(ftpc.fil), (void *)dbuf, send_byte , (UINT *)&blocklen); + if(ftpc.fr != FR_OK){ + break; + } + printf("#"); + send(DATA_SOCK, dbuf, blocklen); + remain_filesize -= blocklen; + }while(remain_filesize != 0); + printf("\r\nFile read finished\r\n"); + ftpc.fr = f_close(&(ftpc.fil)); + } + else{ + printf("File Open Error: %d\r\n", ftpc.fr); + ftpc.fr = f_close(&(ftpc.fil)); + } +#else + remain_filesize = strlen(ftpc.filename); + do{ + memset(dbuf, 0, _MAX_SS); + blocklen = sprintf(dbuf, "%s", ftpc.filename); + printf("########## dbuf:%s\r\n", dbuf); + send(DATA_SOCK, dbuf, blocklen); + remain_filesize -= blocklen; + }while(remain_filesize != 0); +#endif + gDataPutGetStart = 0; + Command.Second = s_nocmd; + disconnect(DATA_SOCK); + break; + case s_get: + printf("get waiting...\r\n"); + if(strlen(ftpc.workingdir) == 1) + sprintf(ftpc.filename, "/%s", (uint8_t *)gMsgBuf); + else + sprintf(ftpc.filename, "%s/%s", ftpc.workingdir, (uint8_t *)gMsgBuf); +#if defined(F_FILESYSTEM) + ftpc.fr = f_open(&(ftpc.fil), (const char *)ftpc.filename, FA_CREATE_ALWAYS | FA_WRITE); + if(ftpc.fr == FR_OK){ + printf("f_open return FR_OK\r\n"); + while(1){ + if((remain_datasize = getSn_RX_RSR(DATA_SOCK)) > 0){ + while(1){ + memset(dbuf, 0, _MAX_SS); + if(remain_datasize > _MAX_SS) recv_byte = _MAX_SS; + else recv_byte = remain_datasize; + ret = recv(DATA_SOCK, dbuf, recv_byte); + ftpc.fr = f_write(&(ftpc.fil), (const void *)dbuf, (UINT)ret, (UINT *)&blocklen); + remain_datasize -= blocklen; + if(ftpc.fr != FR_OK){ + printf("f_write failed\r\n"); + break; + } + if(remain_datasize <= 0) break; + } + if(ftpc.fr != FR_OK){ + printf("f_write failed\r\n"); + break; + } + printf("#"); + } + else{ + if(getSn_SR(DATA_SOCK) != SOCK_ESTABLISHED) break; + } + } + printf("\r\nFile write finished\r\n"); + ftpc.fr = f_close(&(ftpc.fil)); + gDataPutGetStart = 0; + }else{ + printf("File Open Error: %d\r\n", ftpc.fr); + } +#else + while(1){ + if((remain_datasize = getSn_RX_RSR(DATA_SOCK)) > 0){ + while(1){ + memset(dbuf, 0, _MAX_SS); + if(remain_datasize > _MAX_SS) + recv_byte = _MAX_SS; + else + recv_byte = remain_datasize; + ret = recv(DATA_SOCK, dbuf, recv_byte); + printf("########## dbuf:%s\r\n", dbuf); + remain_datasize -= ret; + if(remain_datasize <= 0) + break; + } + }else{ + if(getSn_SR(DATA_SOCK) != SOCK_ESTABLISHED) + break; + } + } + gDataPutGetStart = 0; + Command.Second = s_nocmd; +#endif + break; + default: + printf("Command.Second = default\r\n"); + break; + } + } + break; + case SOCK_CLOSE_WAIT : + printf("%d:CloseWait\r\n",DATA_SOCK); + if((ret=disconnect(DATA_SOCK)) != SOCK_OK) return ret; + printf("%d:Closed\r\n",DATA_SOCK); + break; + case SOCK_CLOSED : + if(ftpc.dsock_state == DATASOCK_READY){ + if(ftpc.dsock_mode == PASSIVE_MODE){ + printf("%d:FTPDataStart, port : %d\r\n",DATA_SOCK, local_port); + if((ret=socket(DATA_SOCK, Sn_MR_TCP, local_port, 0x0)) != DATA_SOCK){ + printf("%d:socket() error:%ld\r\n", DATA_SOCK, ret); + close(DATA_SOCK); + return ret; + } + local_port++; + if(local_port > 50000) + local_port = 35000; + }else{ + printf("%d:FTPDataStart, port : %d\r\n",DATA_SOCK, local_port); + if((ret=socket(DATA_SOCK, Sn_MR_TCP, local_port, 0x0)) != DATA_SOCK){ + printf("%d:socket() error:%ld\r\n", DATA_SOCK, ret); + close(DATA_SOCK); + return ret; + } + local_port++; + if(local_port > 50000) + local_port = 35000; + } + ftpc.dsock_state = DATASOCK_START; + } + break; + + case SOCK_INIT : + printf("%d:Opened\r\n",DATA_SOCK); + if(ftpc.dsock_mode == ACTIVE_MODE){ + if( (ret = listen(DATA_SOCK)) != SOCK_OK){ + printf("%d:Listen error\r\n",DATA_SOCK); + return ret; + } + gDataSockReady = 1; + printf("%d:Listen ok\r\n",DATA_SOCK); + }else{ + if((ret = connect(DATA_SOCK, remote_ip.cVal, remote_port)) != SOCK_OK){ + printf("%d:Connect error\r\n", DATA_SOCK); + return ret; + } + gDataSockReady = 1; + } + connect_state_data_ftpc = 0; + break; + default : + break; + } +#endif + return 0; +} + +char proc_ftpc(char * buf) +{ + uint16_t Responses; + uint8_t dat[30]={0,}; + + Responses =(buf[0]-'0')*100+(buf[1]-'0')*10+(buf[2]-'0'); + + switch(Responses){ + case R_220: /* Service ready for new user. */ + printf("\r\nInput your User ID > "); + sprintf(dat,"USER %s\r\n", User_Keyboard_MSG()); + printf("\r\n"); + send(CTRL_SOCK, (uint8_t *)dat, strlen(dat)); + break; + + case R_331: /* User name okay, need password. */ + printf("\r\nInput your Password > "); + sprintf(dat,"PASS %s\r\n", User_Keyboard_MSG()); + printf("\r\n"); + send(CTRL_SOCK, (uint8_t *)dat, strlen(dat)); + break; + case R_230: /* User logged in, proceed */ + printf("\r\nUser logged in, proceed\r\n"); + + sprintf(dat,"TYPE %c\r\n", TransferAscii); + ftpc.type = ASCII_TYPE; + send(CTRL_SOCK, (uint8_t *)dat, strlen(dat)); + break; + case R_200: + if((ftpc.dsock_mode==ACTIVE_MODE)&&gModeActivePassiveflag){ + ftpc.dsock_state = DATASOCK_READY; + gModeActivePassiveflag = 0; + } + else{ + gMenuStart = 1; + } + break; + case R_150: + switch(Command.First){ + case f_dir: + Command.First = f_nocmd; + Command.Second = s_dir; + gDataPutGetStart = 1; + break; + case f_get: + Command.First = f_nocmd; + Command.Second = s_get; + gDataPutGetStart = 1; + break; + case f_put: + Command.First = f_nocmd; + Command.Second = s_put; + gDataPutGetStart = 1; + break; + default : + printf("Command.First = default\r\n"); + break; + } + break; + case R_226: + gMenuStart = 1; + break; + case R_227: + if (pportc(buf) == -1){ + printf("Bad port syntax\r\n"); + } + else{ + printf("Go Open Data Sock...\r\n "); + ftpc.dsock_mode = PASSIVE_MODE; + ftpc.dsock_state = DATASOCK_READY; + } + break; + default: + printf("\r\nDefault Status = %d\r\n",(uint16_t)Responses); + gDataSockReady = 1; + break; + } + return 1; +} +int pportc(char * arg) +{ + int i; + char* tok=0; + strtok(arg,"("); + for (i = 0; i < 4; i++) + { + if(i==0) tok = strtok(NULL,",\r\n"); + else tok = strtok(NULL,","); + remote_ip.cVal[i] = (uint8_t)atoi(tok); + if (!tok){ + printf("bad pport : %s\r\n", arg); + return -1; + } + } + remote_port = 0; + for (i = 0; i < 2; i++){ + tok = strtok(NULL,",\r\n"); + remote_port <<= 8; + remote_port += atoi(tok); + if (!tok){ + printf("bad pport : %s\r\n", arg); + return -1; + } + } + printf("ip : %d.%d.%d.%d, port : %d\r\n", remote_ip.cVal[0], remote_ip.cVal[1], remote_ip.cVal[2], remote_ip.cVal[3], remote_port); + return 0; +} +uint8_t* User_Keyboard_MSG() +{ + uint8_t i=0; + do{ + gMsgBuf[i] = ftp_getc(); + i++; + }while(gMsgBuf[i-1]!=0x0d); + gMsgBuf[i-1]=0; + return gMsgBuf; +} diff --git a/User/ioLibrary_Driver/Internet/FTPClient/ftpc.h b/User/ioLibrary_Driver/Internet/FTPClient/ftpc.h new file mode 100644 index 0000000..ef2be52 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/FTPClient/ftpc.h @@ -0,0 +1,130 @@ +#ifndef _FTPC_H_ +#define _FTPC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include +#include +#include +#include +#include "socket.h" + +/* If you need this header, use it. */ +//#include "stdio_private.h" + +#define F_APP_FTPC + +/* If your target support a file system, you have to activate this feature and implement. */ +//#define F_FILESYSTEM + +/* Change to your Chipset Uart function, you have to activate this feature and implement. + * Change!! -> Board_UARTGetCharBlocking() + * Below is an example of a function of lpc_chip library. */ +//#define ftp_getc() Board_UARTGetCharBlocking() + +#ifdef F_FILESYSTEM +#include "ff.h" +#endif + +#ifndef ftp_getc() +#define Need_UARTGetCharBlocking_func +#else +/* Change library + * Change!! -> board_api.h, + * Below is an example of a function of lpc_chip library. */ +#include "board_api.h" +#endif + + +#define LINELEN 100 +#ifndef F_FILESYSTEM +#define _MAX_SS 512 +#endif + +#define CTRL_SOCK 2 +#define DATA_SOCK 3 + +/* FTP Responses */ +#define R_150 150 /* File status ok; opening data conn */ +#define R_200 200 /* 'Generic' command ok */ +#define R_220 220 /* Service ready for new user. */ +#define R_226 226 /* Closing data connection. File transfer/abort successful */ +#define R_227 227 /* Entering passive mode (h1,h2,h3,h4,p1,p2) */ +#define R_230 230 /* User logged in, proceed */ +#define R_331 331 /* User name okay, need password. */ + +#define TransferAscii 'A' +#define TransferBinary 'I' + +enum ftpc_type { + ASCII_TYPE, + IMAGE_TYPE, +}; + +enum ftpc_datasock_state{ + DATASOCK_IDLE, + DATASOCK_READY, + DATASOCK_START +}; + +enum ftpc_datasock_mode{ + PASSIVE_MODE, + ACTIVE_MODE +}; +enum CommandFirst { + f_nocmd, + f_dir, + f_put, + f_get, +}; +enum CommandSecond { + s_nocmd, + s_dir, + s_put, + s_get, +}; +struct Command { + enum CommandFirst First; + enum CommandSecond Second; +}; +struct ftpc { + uint8_t control; /* Control stream */ + uint8_t data; /* Data stream */ + + enum ftpc_type type; /* Transfer type */ + + enum ftpc_datasock_state dsock_state; + enum ftpc_datasock_mode dsock_mode; + + char workingdir[LINELEN]; + char filename[LINELEN]; + +#ifdef F_FILESYSTEM + FIL fil; // FatFs File objects + FRESULT fr; // FatFs function common result code +#endif +}; + +#ifndef un_I2cval +typedef union _un_l2cval { + uint32_t lVal; + uint8_t cVal[4]; +}un_l2cval; +#endif + +void ftpc_init(uint8_t * src_ip); +uint8_t ftpc_run(uint8_t * dbuf); +char proc_ftpc(char * buf); +int pportc(char * arg); +uint8_t* User_Keyboard_MSG(); + +#ifdef __cplusplus +} +#endif + +#endif // _FTPC_H_ diff --git a/User/ioLibrary_Driver/Internet/FTPClient/stdio_private.h b/User/ioLibrary_Driver/Internet/FTPClient/stdio_private.h new file mode 100644 index 0000000..a81d94c --- /dev/null +++ b/User/ioLibrary_Driver/Internet/FTPClient/stdio_private.h @@ -0,0 +1,75 @@ +/* Copyright (c) 2002, Joerg Wunsch + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: stdio_private.h,v 1.6 2003/01/07 22:17:24 joerg_wunsch Exp $ */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +struct __file { + char *buf; /* buffer pointer */ + unsigned char unget; /* ungetc() buffer */ + uint8_t flags; /* flags, see below */ +#define __SRD 0x0001 /* OK to read */ +#define __SWR 0x0002 /* OK to write */ +#define __SSTR 0x0004 /* this is an sprintf/snprintf string */ +#define __SPGM 0x0008 /* fmt string is in progmem */ +#define __SERR 0x0010 /* found error */ +#define __SEOF 0x0020 /* found EOF */ +#define __SUNGET 0x040 /* ungetc() happened */ +#if 0 +/* possible future extensions, will require uint16_t flags */ +#define __SRW 0x0080 /* open for reading & writing */ +#define __SLBF 0x0100 /* line buffered */ +#define __SNBF 0x0200 /* unbuffered */ +#define __SMBF 0x0400 /* buf is from malloc */ +#endif + int size; /* size of buffer */ + int len; /* characters read or written so far */ + int (*put)(char); /* function to write one char to device */ + int (*get)(void); /* function to read one char from device */ +}; + +/* values for PRINTF_LEVEL */ +#define PRINTF_MIN 1 +#define PRINTF_STD 2 +#define PRINTF_FLT 3 + +/* values for SCANF_LEVEL */ +#define SCANF_MIN 1 +#define SCANF_STD 2 +#define SCANF_FLT 3 + +#ifdef __cplusplus +} +#endif diff --git a/User/ioLibrary_Driver/Internet/FTPServer/README.md b/User/ioLibrary_Driver/Internet/FTPServer/README.md new file mode 100644 index 0000000..c4905e6 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/FTPServer/README.md @@ -0,0 +1,64 @@ +# FTP Server + +## init wizchip +### variable and function + + uint8_t gFTPBUF[_MAX_SS]; + uint8_t wiznet_memsize[2][8] = {{8,8,8,8,8,8,8,8}, {8,8,8,8,8,8,8,8}}; + #define ETH_MAX_BUF_SIZE 2048 + uint8_t ethBuf0[ETH_MAX_BUF_SIZE]; + wiz_NetInfo gWIZNETINFO = { + .mac = {0x00, 0x08, 0xdc, 0x11, 0x22, 0x33}, + .ip = {192, 168, 15, 111}, + .sn = {255, 255, 255, 0}, + .gw = {192, 168, 15, 1}, + .dns = {8, 8, 8, 8}, + .dhcp = NETINFO_STATIC + + + +### run init funciton in main funcion + + Reset_WIZCHIP(); + reg_wizchip_bus_cbfunc(Chip_read, Chip_write); + reg_wizchip_cs_cbfunc(ChipCsEnable, ChipCsDisable); + + if (ctlwizchip(CW_INIT_WIZCHIP, (void*)wiznet_memsize) == -1) + { + printf("WIZchip memory initialization failed\r\n"); + } + + ctlnetwork(CN_SET_NETINFO, (void *)&gWIZNETINFO); + print_network_information(); + + +## Run function + + if((ret = ftpd_run(gFTPBUF)) < 0) + { + porintf(" FTP server Error %d \r\n", ret); + } + +## FTP ID & PASSWORD + +### USED ID +#### ID Enable in ftpd_init function + + ftp.ID_Enable = STATUS_USED; + +#### ID Setting + + #define ftp_ID "wiznet" + +### USED PASSWORD +#### PW Enable in ftpd_init function + + ftp.PW_Enable = STATUS_USED; + +#### PW Setting + + #define ftp_PW "wiznet54321" + +### Connedtion remain count + + #define remain_time 400000 diff --git a/User/ioLibrary_Driver/Internet/FTPServer/ftpd.c b/User/ioLibrary_Driver/Internet/FTPServer/ftpd.c new file mode 100644 index 0000000..0a71f62 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/FTPServer/ftpd.c @@ -0,0 +1,1233 @@ +/* +* Wiznet. +* (c) Copyright 2002, Wiznet. +* +* Filename : ftpd.c +* Version : 1.0 +* Programmer(s) : +* Created : 2003/01/28 +* Description : FTP daemon. (AVR-GCC Compiler) +*/ + + +#include +#include +#include +#include +#include +#include +#include "socket.h" +#include "ftpd.h" + +/* If you need this header, use it. */ +//#include "stdio_private.h" + +/* Command table */ +static char *commands[] = { + "user", + "acct", + "pass", + "type", + "list", + "cwd", + "dele", + "name", + "quit", + "retr", + "stor", + "port", + "nlst", + "pwd", + "xpwd", + "mkd", + "xmkd", + "xrmd", + "rmd ", + "stru", + "mode", + "syst", + "xmd5", + "xcwd", + "feat", + "pasv", + "size", + "mlsd", + "appe", + NULL +}; + +#if 0 +/* Response messages */ +char banner[] = "220 %s FTP version %s ready.\r\n"; +char badcmd[] = "500 Unknown command '%s'\r\n"; +char binwarn[] = "100 Warning: type is ASCII and %s appears to be binary\r\n"; +char unsupp[] = "500 Unsupported command or option\r\n"; +char givepass[] = "331 Enter PASS command\r\n"; +char logged[] = "230 Logged in\r\n"; +char typeok[] = "200 Type %s OK\r\n"; +char only8[] = "501 Only logical bytesize 8 supported\r\n"; +char deleok[] = "250 File deleted\r\n"; +char mkdok[] = "200 MKD ok\r\n"; +char delefail[] = "550 Delete failed: %s\r\n"; +char pwdmsg[] = "257 \"%s\" is current directory\r\n"; +char badtype[] = "501 Unknown type \"%s\"\r\n"; +char badport[] = "501 Bad port syntax\r\n"; +char unimp[] = "502 Command does not implemented yet.\r\n"; +char bye[] = "221 Goodbye!\r\n"; +char nodir[] = "553 Can't read directory \"%s\": %s\r\n"; +char cantopen[] = "550 Can't read file \"%s\": %s\r\n"; +char sending[] = "150 Opening data connection for %s (%d.%d.%d.%d,%d)\r\n"; +char cantmake[] = "553 Can't create \"%s\": %s\r\n"; +char writerr[] = "552 Write error: %s\r\n"; +char portok[] = "200 PORT command successful.\r\n"; +char rxok[] = "226 Transfer complete.\r\n"; +char txok[] = "226 Transfer complete.\r\n"; +char noperm[] = "550 Permission denied\r\n"; +char noconn[] = "425 Data connection reset\r\n"; +char lowmem[] = "421 System overloaded, try again later\r\n"; +char notlog[] = "530 Please log in with USER and PASS\r\n"; +char userfirst[] = "503 Login with USER first.\r\n"; +char okay[] = "200 Ok\r\n"; +char syst[] = "215 %s Type: L%d Version: %s\r\n"; +char sizefail[] = "550 File not found\r\n"; +#endif +#define remain_time 400000 +#define connect_timeout_en 1 +#define ftp_ID "wiznet" +#define ftp_PW "wiznet54321" + +un_l2cval remote_ip; +uint16_t remote_port; +un_l2cval local_ip; +uint16_t local_port; +uint8_t connect_state_control = 0; +uint8_t connect_state_control1 = 0; +uint8_t connect_state_data = 0; +uint8_t connect_count = 0; +uint32_t con_remain_cnt1 = 0; +uint32_t con_remain_cnt2 = 0; +uint8_t cur_sn = CTRL_SOCK; +struct ftpd ftp; + +int current_year = 2014; +int current_month = 12; +int current_day = 31; +int current_hour = 10; +int current_min = 10; +int current_sec = 30; + +int fsprintf(uint8_t s, const char *format, ...) +{ + int i; +/* + char buf[LINELEN]; + FILE f; + va_list ap; + + f.flags = __SWR | __SSTR; + f.buf = buf; + f.size = INT_MAX; + va_start(ap, format); + i = vfprintf(&f, format, ap); + va_end(ap); + buf[f.len] = 0; + + send(s, (uint8_t *)buf, strlen(buf)); +*/ + return i; +} + +void ftpd_init(uint8_t * src_ip) +{ + ftp.state = FTPS_NOT_LOGIN; + ftp.current_cmd = NO_CMD; + ftp.dsock_mode = ACTIVE_MODE; + + ftp.ID_Enable = STATUS_USED; + ftp.PW_Enable = STATUS_USED; + + if(ftp.ID_Enable == STATUS_USED) + { + strcpy(ftp.username, ftp_ID); + printf(" FTP ID[%d]:%s \r\n", strlen(ftp.username), ftp.username); + } + if(ftp.PW_Enable == STATUS_USED) + { + strcpy(ftp.userpassword, ftp_PW); + printf(" FTP PW[%d]:%s \r\n", strlen(ftp.userpassword), ftp.userpassword); + } + + + + local_ip.cVal[0] = src_ip[0]; + local_ip.cVal[1] = src_ip[1]; + local_ip.cVal[2] = src_ip[2]; + local_ip.cVal[3] = src_ip[3]; + local_port = 35000; + + strcpy(ftp.workingdir, "/"); + + socket(CTRL_SOCK, Sn_MR_TCP, IPPORT_FTP, 0x0); + socket(CTRL_SOCK1, Sn_MR_TCP, IPPORT_FTP, 0x0); +} + +uint8_t ftpd_run(uint8_t * dbuf) +{ + uint16_t size = 0, i; + long ret = 0; + uint32_t blocklen, send_byte, recv_byte; + uint32_t remain_filesize; + int32_t remain_datasize; + //static uint32_t con_remain_cnt1 = 0; + //static uint32_t con_remain_cnt2 = 0; +#if defined(F_FILESYSTEM) + //FILINFO fno; +#endif + + //memset(dbuf, 0, sizeof(_MAX_SS)); + ////////////////////////FTP Control 1 + #if 1 + switch(getSn_SR(CTRL_SOCK)) + { + case SOCK_ESTABLISHED : + if(!connect_state_control) + { +#if defined(_FTP_DEBUG_) + printf("%d:FTP Connected\r\n", CTRL_SOCK); +#endif + //fsprintf(CTRL_SOCK, banner, HOSTNAME, VERSION); + strcpy(ftp.workingdir, "/"); + sprintf((char *)dbuf, "220 %s FTP version %s ready.\r\n", HOSTNAME, VERSION); + ret = send(CTRL_SOCK, (uint8_t *)dbuf, strlen((const char *)dbuf)); + +#if defined(_FTP_DEBUG_) + printf("%d:send() [%s]\r\n",CTRL_SOCK,dbuf); +#endif + if(ret < 0) + { +#if defined(_FTP_DEBUG_) + printf("%d:send() error:%ld\r\n",CTRL_SOCK,ret); +#endif + close(CTRL_SOCK); + return ret; + } + connect_state_control = 1; + } + #if connect_timeout_en + else + { + if(con_remain_cnt1 > remain_time) + { + if((ret=disconnect(CTRL_SOCK)) != SOCK_OK) return ret; + #if defined(_FTP_DEBUG_) + printf("%d:Timeout Closed\r\n",CTRL_SOCK); + #endif + } + #if defined(_FTP_DEBUG_) + else if(((con_remain_cnt1 % 10000) == 0) && (con_remain_cnt1 != 0)) + { + printf("%d:Timeout Count:%ld\r\n", CTRL_SOCK, con_remain_cnt1); + } + #endif + con_remain_cnt1++; + } + #endif + +#if defined(_FTP_DEBUG_) + //printf("ftp socket %d\r\n", CTRL_SOCK); +#endif + + if((size = getSn_RX_RSR(CTRL_SOCK)) > 0) // Don't need to check SOCKERR_BUSY because it doesn't not occur. + { +#if defined(_FTP_DEBUG_) + printf("%d:size: %d\r\n", CTRL_SOCK, size); +#endif + + memset(dbuf, 0, _MAX_SS); + + if(size > _MAX_SS) size = _MAX_SS - 1; + + ret = recv(CTRL_SOCK,dbuf,size); + dbuf[ret] = '\0'; + if(ret != size) + { + if(ret==SOCK_BUSY) return 0; + if(ret < 0) + { +#if defined(_FTP_DEBUG_) + printf("%d:recv() error:%ld\r\n",CTRL_SOCK,ret); +#endif + close(CTRL_SOCK); + return ret; + } + } +#if defined(_FTP_DEBUG_) + printf("%d:Rcvd Command: %s", CTRL_SOCK, dbuf); +#endif + proc_ftpd(CTRL_SOCK, (char *)dbuf); + con_remain_cnt1 = 0; + } + break; + + case SOCK_CLOSE_WAIT : +#if defined(_FTP_DEBUG_) + printf("%d:CloseWait\r\n",CTRL_SOCK); +#endif + if((ret=disconnect(CTRL_SOCK)) != SOCK_OK) return ret; +#if defined(_FTP_DEBUG_) + printf("%d:Closed\r\n",CTRL_SOCK); +#endif + break; + + case SOCK_CLOSED : +#if defined(_FTP_DEBUG_) + printf("%d:FTPStart\r\n",CTRL_SOCK); +#endif + if((ret=socket(CTRL_SOCK, Sn_MR_TCP, IPPORT_FTP, 0x0)) != CTRL_SOCK) + { +#if defined(_FTP_DEBUG_) + printf("%d:socket() error:%ld\r\n", CTRL_SOCK, ret); +#endif + close(CTRL_SOCK); + return ret; + } + break; + + case SOCK_INIT : +#if defined(_FTP_DEBUG_) + printf("%d:Opened\r\n",CTRL_SOCK); +#endif + //strcpy(ftp.workingdir, "/"); + if( (ret = listen(CTRL_SOCK)) != SOCK_OK) + { +#if defined(_FTP_DEBUG_) + printf("%d:Listen error\r\n",CTRL_SOCK); +#endif + return ret; + } + connect_state_control = 0; + con_remain_cnt1 = 0; + +#if defined(_FTP_DEBUG_) + printf("%d:Listen ok\r\n",CTRL_SOCK); +#endif + break; + + default : + break; + } + ////////////////////////FTP Control 2 + + switch(getSn_SR(CTRL_SOCK1)) + { + case SOCK_ESTABLISHED : + if(!connect_state_control1) + { +#if defined(_FTP_DEBUG_) + printf("%d:FTP Connected\r\n", CTRL_SOCK1); +#endif + strcpy(ftp.workingdir, "/"); + sprintf((char *)dbuf, "220 %s FTP version %s ready.\r\n", HOSTNAME, VERSION); + ret = send(CTRL_SOCK1, (uint8_t *)dbuf, strlen((const char *)dbuf)); + +#if defined(_FTP_DEBUG_) + printf("%d:send() [%s]\r\n",CTRL_SOCK1,dbuf); +#endif + if(ret < 0) + { +#if defined(_FTP_DEBUG_) + printf("%d:send() error:%ld\r\n",CTRL_SOCK1,ret); +#endif + close(CTRL_SOCK1); + return ret; + } + connect_state_control1 = 1; + } + #if connect_timeout_en + else + { + if(con_remain_cnt2 > remain_time) + { + if((ret=disconnect(CTRL_SOCK1)) != SOCK_OK) return ret; + #if defined(_FTP_DEBUG_) + printf("%d:Timeout Closed\r\n",CTRL_SOCK1); + #endif + } + #if defined(_FTP_DEBUG_) + else if(((con_remain_cnt2 % 10000) == 0) && (con_remain_cnt2 != 0)) + { + printf("%d:Timeout Count:%ld\r\n", CTRL_SOCK1, con_remain_cnt2); + } + #endif + con_remain_cnt2++; + } + #endif + +#if defined(_FTP_DEBUG_) + //printf("ftp socket %d\r\n", CTRL_SOCK); +#endif + + if((size = getSn_RX_RSR(CTRL_SOCK1)) > 0) // Don't need to check SOCKERR_BUSY because it doesn't not occur. + { +#if defined(_FTP_DEBUG_) + printf("%d: size: %d\r\n", CTRL_SOCK1, size); +#endif + + memset(dbuf, 0, _MAX_SS); + + if(size > _MAX_SS) size = _MAX_SS - 1; + + ret = recv(CTRL_SOCK1,dbuf,size); + dbuf[ret] = '\0'; + if(ret != size) + { + if(ret==SOCK_BUSY) return 0; + if(ret < 0) + { +#if defined(_FTP_DEBUG_) + printf("%d:recv() error:%ld\r\n",CTRL_SOCK1,ret); +#endif + close(CTRL_SOCK1); + return ret; + } + } +#if defined(_FTP_DEBUG_) + printf("%d: Rcvd Command: %s", CTRL_SOCK1, dbuf); +#endif + proc_ftpd(CTRL_SOCK1, (char *)dbuf); + con_remain_cnt2 = 0; + } + break; + + case SOCK_CLOSE_WAIT : +#if defined(_FTP_DEBUG_) + printf("%d:CloseWait\r\n",CTRL_SOCK1); +#endif + if((ret=disconnect(CTRL_SOCK1)) != SOCK_OK) return ret; + connect_count--; +#if defined(_FTP_DEBUG_) + printf("%d:Closed\r\n",CTRL_SOCK1); +#endif + break; + + case SOCK_CLOSED : +#if defined(_FTP_DEBUG_) + printf("%d:FTPStart\r\n",CTRL_SOCK1); +#endif + if((ret=socket(CTRL_SOCK1, Sn_MR_TCP, IPPORT_FTP, 0x0)) != CTRL_SOCK1) + { +#if defined(_FTP_DEBUG_) + printf("%d:socket() error:%ld\r\n", CTRL_SOCK1, ret); +#endif + close(CTRL_SOCK1); + return ret; + } + break; + + case SOCK_INIT : +#if defined(_FTP_DEBUG_) + printf("%d:Opened\r\n",CTRL_SOCK1); +#endif + //strcpy(ftp.workingdir, "/"); + if( (ret = listen(CTRL_SOCK1)) != SOCK_OK) + { +#if defined(_FTP_DEBUG_) + printf("%d:Listen error\r\n",CTRL_SOCK1); +#endif + return ret; + } + connect_state_control1 = 0; + con_remain_cnt2 = 0; +#if defined(_FTP_DEBUG_) + printf("%d:Listen ok\r\n",CTRL_SOCK1); +#endif + break; + + default : + break; + } + + #endif +/////////////////////////////////// ftp data part +#if 1 + switch(getSn_SR(DATA_SOCK)) + { + case SOCK_ESTABLISHED : + if(!connect_state_data) + { +#if defined(_FTP_DEBUG_) + printf("%d:FTP Data socket Connected\r\n", DATA_SOCK); +#endif + connect_state_data = 1; + } + + switch(ftp.current_cmd) + { + case LIST_CMD: + case MLSD_CMD: +#if defined(_FTP_DEBUG_) + printf("previous size: %d\r\n", size); +#endif +#if defined(F_FILESYSTEM) + scan_files(ftp.workingdir, dbuf, (int *)&size); +#endif +#if defined(_FTP_DEBUG_) + printf("returned size: %d\r\n", size); + printf("%s\r\n", dbuf); +#endif +#if !defined(F_FILESYSTEM) + if (strncmp(ftp.workingdir, "/$Recycle.Bin", sizeof("/$Recycle.Bin")) != 0) + size = sprintf(dbuf, "drwxr-xr-x 1 ftp ftp 0 Dec 31 2014 $Recycle.Bin\r\n-rwxr-xr-x 1 ftp ftp 512 Dec 31 2014 test.txt\r\n"); +#endif + size = strlen(dbuf); + send(DATA_SOCK, dbuf, size); + ftp.current_cmd = NO_CMD; + disconnect(DATA_SOCK); + size = sprintf(dbuf, "226 Successfully transferred \"%s\"\r\n", ftp.workingdir); + send(cur_sn, dbuf, size); + break; + + case RETR_CMD: +#if defined(_FTP_DEBUG_) + printf("filename to retrieve : %s %d\r\n", ftp.filename, strlen(ftp.filename)); +#endif +#if defined(F_FILESYSTEM) + ftp.fr = f_open(&(ftp.fil), (const char *)ftp.filename, FA_READ); + //print_filedsc(&(ftp.fil)); + if(ftp.fr == FR_OK){ + remain_filesize = ftp.fil.fsize; +#if defined(_FTP_DEBUG_) + printf("f_open return FR_OK\r\n"); +#endif + do{ +#if defined(_FTP_DEBUG_) + //printf("remained file size: %d\r\n", ftp.fil.fsize); +#endif + memset(dbuf, 0, _MAX_SS); + + if(remain_filesize > _MAX_SS) + send_byte = _MAX_SS; + else + send_byte = remain_filesize; + + ftp.fr = f_read(&(ftp.fil), dbuf, send_byte , &blocklen); + if(ftp.fr != FR_OK) + break; +#if defined(_FTP_DEBUG_) + printf("#"); + //printf("----->fsize:%d recv:%d len:%d \r\n", remain_filesize, send_byte, blocklen); + //printf("----->fn:%s data:%s \r\n", ftp.filename, dbuf); +#endif + send(DATA_SOCK, dbuf, blocklen); + remain_filesize -= blocklen; + }while(remain_filesize != 0); +#if defined(_FTP_DEBUG_) + printf("\r\nFile read finished\r\n"); +#endif + ftp.fr = f_close(&(ftp.fil)); + }else{ +#if defined(_FTP_DEBUG_) + printf("File Open Error: %d\r\n", ftp.fr); +#endif + } +#else + remain_filesize = strlen(ftp.filename); + #if defined(_FTP_DEBUG_) + printf("<<<<<1recv data[%d]\r\n", remain_datasize); + #endif + do{ + memset(dbuf, 0, _MAX_SS); + + blocklen = sprintf(dbuf, "%s", ftp.filename); + + printf("####1[%d] dbuf:%s\r\n",remain_filesize ,dbuf); + + send(DATA_SOCK, dbuf, blocklen); + remain_filesize -= blocklen; + }while(remain_filesize != 0); + +#endif + ftp.current_cmd = NO_CMD; + disconnect(DATA_SOCK); + size = sprintf(dbuf, "226 Successfully transferred \"%s\"\r\n", ftp.filename); + send(cur_sn, dbuf, size); + break; + + case STOR_CMD: +#if defined(_FTP_DEBUG_) + printf("filename to store : %s %d\r\n", ftp.filename, strlen(ftp.filename)); +#endif +#if defined(F_FILESYSTEM) + ftp.fr = f_open(&(ftp.fil), (const char *)ftp.filename, FA_CREATE_ALWAYS | FA_WRITE); + //print_filedsc(&(ftp.fil)); + if(ftp.fr == FR_OK){ +#if defined(_FTP_DEBUG_) + printf("f_open return FR_OK\r\n"); +#endif + while(1){ + if((remain_datasize = getSn_RX_RSR(DATA_SOCK)) > 0){ + while(1){ + memset(dbuf, 0, _MAX_SS); + + if(remain_datasize > _MAX_SS) + recv_byte = _MAX_SS; + else + recv_byte = remain_datasize; + + ret = recv(DATA_SOCK, dbuf, recv_byte); +#if defined(_FTP_DEBUG_) + //printf("----->fn:%s data:%s \r\n", ftp.filename, dbuf); +#endif + + ftp.fr = f_write(&(ftp.fil), dbuf, (UINT)ret, &blocklen); +#if defined(_FTP_DEBUG_) + //printf("----->dsize:%d recv:%d len:%d \r\n", remain_datasize, ret, blocklen); +#endif + remain_datasize -= blocklen; + + if(ftp.fr != FR_OK){ +#if defined(_FTP_DEBUG_) + printf("f_write failed\r\n"); +#endif + break; + } + + if(remain_datasize <= 0) + break; + } + + if(ftp.fr != FR_OK){ +#if defined(_FTP_DEBUG_) + printf("f_write failed\r\n"); +#endif + break; + } + +#if defined(_FTP_DEBUG_) + printf("#"); +#endif + }else{ + if(getSn_SR(DATA_SOCK) != SOCK_ESTABLISHED) + break; + } + } +#if defined(_FTP_DEBUG_) + printf("\r\nFile write finished\r\n"); +#endif + ftp.fr = f_close(&(ftp.fil)); + }else{ +#if defined(_FTP_DEBUG_) + printf("File Open Error: %d\r\n", ftp.fr); +#endif + } + + //fno.fdate = (WORD)(((current_year - 1980) << 9) | (current_month << 5) | current_day); + //fno.ftime = (WORD)((current_hour << 11) | (current_min << 5) | (current_sec >> 1)); + //f_utime((const char *)ftp.filename, &fno); +#else + while(1){ + if((remain_datasize = getSn_RX_RSR(DATA_SOCK)) > 0){ + #if defined(_FTP_DEBUG_) + printf("<<<<<2recv data[%ld]\r\n", remain_datasize); + #endif + while(1){ + memset(dbuf, 0, _MAX_SS); + + if(remain_datasize > _MAX_SS) + recv_byte = _MAX_SS; + else + recv_byte = remain_datasize; + + ret = recv(DATA_SOCK, dbuf, recv_byte); + if(ret < 0) + { + #if defined(_FTP_DEBUG_) + printf("finish ret[%d\r\n", ret); + #endif + break; + } + + #if defined(_FTP_DEBUG_) + printf("#####2[%ld] dbuf:%s\r\n", remain_datasize, dbuf); + #endif + + remain_datasize -= ret; + #if defined(_FTP_DEBUG_) + printf("###ret:%ld,remain:%d\r\n",ret, remain_datasize); + #endif + + if(remain_datasize <= 0) + break; + } + }else{ + if(getSn_SR(DATA_SOCK) != SOCK_ESTABLISHED) + break; + } + } +#endif + ftp.current_cmd = NO_CMD; + disconnect(DATA_SOCK); + size = sprintf(dbuf, "226 Successfully transferred \"%s\"\r\n", ftp.filename); + send(cur_sn, dbuf, size); + break; + + case NO_CMD: + default: + break; + } + break; + + case SOCK_CLOSE_WAIT : +#if defined(_FTP_DEBUG_) + printf("%d:CloseWait\r\n",DATA_SOCK); +#endif + if((ret=disconnect(DATA_SOCK)) != SOCK_OK) return ret; +#if defined(_FTP_DEBUG_) + printf("%d:Closed\r\n",DATA_SOCK); +#endif + break; + + case SOCK_CLOSED : + if(ftp.dsock_state == DATASOCK_READY) + { + if(ftp.dsock_mode == PASSIVE_MODE){ +#if defined(_FTP_DEBUG_) + printf("%d:FTPDataStart, port : %d\r\n",DATA_SOCK, local_port); +#endif + if((ret=socket(DATA_SOCK, Sn_MR_TCP, local_port, 0x0)) != DATA_SOCK) + { +#if defined(_FTP_DEBUG_) + printf("%d:socket() error:%ld\r\n", DATA_SOCK, ret); +#endif + close(DATA_SOCK); + return ret; + } + + local_port++; + if(local_port > 50000) + local_port = 35000; + }else{ +#if defined(_FTP_DEBUG_) + printf("%d:FTPDataStart, port : %d\r\n",DATA_SOCK, IPPORT_FTPD); +#endif + if((ret=socket(DATA_SOCK, Sn_MR_TCP, IPPORT_FTPD, 0x0)) != DATA_SOCK) + { +#if defined(_FTP_DEBUG_) + printf("%d:socket() error:%ld\r\n", DATA_SOCK, ret); +#endif + close(DATA_SOCK); + return ret; + } + } + + ftp.dsock_state = DATASOCK_START; + } + break; + + case SOCK_INIT : +#if defined(_FTP_DEBUG_) + printf("%d:Opened\r\n",DATA_SOCK); +#endif + if(ftp.dsock_mode == PASSIVE_MODE){ + if( (ret = listen(DATA_SOCK)) != SOCK_OK) + { +#if defined(_FTP_DEBUG_) + printf("%d:Listen error\r\n",DATA_SOCK); +#endif + return ret; + } + +#if defined(_FTP_DEBUG_) + printf("%d:Listen ok\r\n",DATA_SOCK); +#endif + }else{ + if((ret = connect(DATA_SOCK, remote_ip.cVal, remote_port)) != SOCK_OK){ +#if defined(_FTP_DEBUG_) + printf("%d:Connect error\r\n", DATA_SOCK); +#endif + return ret; + } + } + connect_state_data = 0; + break; + + default : + break; + } +#endif + + return 0; +} + +char proc_ftpd(uint8_t sn, char * buf) +{ + char **cmdp, *cp, *arg, *tmpstr; + char sendbuf[200]; + int slen; + long ret; + + + /* Translate first word to lower case */ + for (cp = buf; *cp != ' ' && *cp != '\0'; cp++) + *cp = tolower(*cp); + + /* Find command in table; if not present, return syntax error */ + for (cmdp = commands; *cmdp != NULL; cmdp++) + if (strncmp(*cmdp, buf, strlen(*cmdp)) == 0) + break; + + if (*cmdp == NULL) + { + //fsprintf(CTRL_SOCK, badcmd, buf); + slen = sprintf(sendbuf, "500 Unknown command '%s'\r\n", buf); + send(sn, (uint8_t *)sendbuf, slen); + return 0; + } + /* Allow only USER, PASS and QUIT before logging in */ + if (ftp.state == FTPS_NOT_LOGIN) + { + switch(cmdp - commands) + { + case USER_CMD: + case PASS_CMD: + case QUIT_CMD: + break; + default: + //fsprintf(CTRL_SOCK, notlog); + slen = sprintf(sendbuf, "530 Please log in with USER and PASS\r\n"); + send(sn, (uint8_t *)sendbuf, slen); + return 0; + } + } + + arg = &buf[strlen(*cmdp)]; + while(*arg == ' ') arg++; + + /* Execute specific command */ + switch (cmdp - commands) + { + case USER_CMD : +#if defined(_FTP_DEBUG_) + printf("USER_CMD : %s", arg); +#endif + slen = strlen(arg); + arg[slen - 1] = 0x00; + arg[slen - 2] = 0x00; + if(ftp.ID_Enable == STATUS_USED) + { + if(strcmp(ftp.username, arg) != 0) + { + slen = sprintf(sendbuf, "430 Invalid username\r\n"); + ret = send(sn, (uint8_t *)sendbuf, slen); + if(ret < 0) + { + #if defined(_FTP_DEBUG_) + printf("%d:send() error:%ld\r\n",sn,ret); + #endif + close(sn); + return ret; + } + break; + } + } + else + { + strcpy(ftp.username, arg); + } + //fsprintf(CTRL_SOCK, givepass); + slen = sprintf(sendbuf, "331 Enter PASS command\r\n"); + ret = send(sn, (uint8_t *)sendbuf, slen); + if(ret < 0) + { +#if defined(_FTP_DEBUG_) + printf("%d:send() error:%ld\r\n",sn,ret); +#endif + close(sn); + return ret; + } + break; + + case PASS_CMD : +#if defined(_FTP_DEBUG_) + printf("PASS_CMD : %s", arg); +#endif + slen = strlen(arg); + arg[slen - 1] = 0x00; + arg[slen - 2] = 0x00; + if(ftp.PW_Enable == STATUS_USED) + { + if(strcmp(ftp.userpassword, arg) != 0) + { + slen = sprintf(sendbuf, "430 Invalid password\r\n"); + ret = send(sn, (uint8_t *)sendbuf, slen); + if(ret < 0) + { + #if defined(_FTP_DEBUG_) + printf("%d:send() error:%ld\r\n",sn,ret); + #endif + close(sn); + return ret; + } + break; + } + } + ftplogin(sn, arg); + break; + + case TYPE_CMD : + slen = strlen(arg); + arg[slen - 1] = 0x00; + arg[slen - 2] = 0x00; + switch(arg[0]) + { + case 'A': + case 'a': /* Ascii */ + ftp.type = ASCII_TYPE; + //fsprintf(CTRL_SOCK, typeok, arg); + slen = sprintf(sendbuf, "200 Type set to %s\r\n", arg); + send(sn, (uint8_t *)sendbuf, slen); + break; + + case 'B': + case 'b': /* Binary */ + case 'I': + case 'i': /* Image */ + ftp.type = IMAGE_TYPE; + //fsprintf(CTRL_SOCK, typeok, arg); + slen = sprintf(sendbuf, "200 Type set to %s\r\n", arg); + send(sn, (uint8_t *)sendbuf, slen); + break; + + default: /* Invalid */ + //fsprintf(CTRL_SOCK, badtype, arg); + slen = sprintf(sendbuf, "501 Unknown type \"%s\"\r\n", arg); + send(sn, (uint8_t *)sendbuf, slen); + break; + } + break; + + case FEAT_CMD : + slen = sprintf(sendbuf, "211-Features:\r\n MDTM\r\n REST STREAM\r\n SIZE\r\n MLST size*;type*;create*;modify*;\r\n MLSD\r\n UTF8\r\n CLNT\r\n MFMT\r\n211 END\r\n"); + send(sn, (uint8_t *)sendbuf, slen); + break; + + case QUIT_CMD : +#if defined(_FTP_DEBUG_) + printf("QUIT_CMD\r\n"); +#endif + //fsprintf(CTRL_SOCK, bye); + slen = sprintf(sendbuf, "221 Goodbye!\r\n"); + send(sn, (uint8_t *)sendbuf, slen); + disconnect(sn); + break; + + case RETR_CMD : + slen = strlen(arg); + arg[slen - 1] = 0x00; + arg[slen - 2] = 0x00; +#if defined(_FTP_DEBUG_) + printf("RETR_CMD\r\n"); +#endif + if(strlen(ftp.workingdir) == 1) + sprintf(ftp.filename, "/%s", arg); + else + sprintf(ftp.filename, "%s/%s", ftp.workingdir, arg); + slen = sprintf(sendbuf, "150 Opening data channel for file downloand from server of \"%s\"\r\n", ftp.filename); + send(sn, (uint8_t *)sendbuf, slen); + ftp.current_cmd = RETR_CMD; + break; + + case APPE_CMD : + case STOR_CMD: + slen = strlen(arg); + arg[slen - 1] = 0x00; + arg[slen - 2] = 0x00; +#if defined(_FTP_DEBUG_) + printf("STOR_CMD\r\n"); +#endif + if(strlen(ftp.workingdir) == 1) + sprintf(ftp.filename, "/%s", arg); + else + sprintf(ftp.filename, "%s/%s", ftp.workingdir, arg); + slen = sprintf(sendbuf, "150 Opening data channel for file upload to server of \"%s\"\r\n", ftp.filename); + send(sn, (uint8_t *)sendbuf, slen); + ftp.current_cmd = STOR_CMD; + if(ftp.dsock_mode == ACTIVE_MODE) + { + if((ret = connect(DATA_SOCK, remote_ip.cVal, remote_port)) != SOCK_OK){ + #if defined(_FTP_DEBUG_) + printf("%d:Connect error\r\n", DATA_SOCK); + #endif + return ret; + } + } + connect_state_data = 0; + break; + + case PORT_CMD: +#if defined(_FTP_DEBUG_) + printf("PORT_CMD\r\n"); +#endif + if (pport(arg) == -1){ + //fsprintf(CTRL_SOCK, badport); + slen = sprintf(sendbuf, "501 Bad port syntax\r\n"); + send(sn, (uint8_t *)sendbuf, slen); + } else{ + //fsprintf(CTRL_SOCK, portok); + ftp.dsock_mode = ACTIVE_MODE; + ftp.dsock_state = DATASOCK_READY; + slen = sprintf(sendbuf, "200 PORT command successful.\r\n"); + send(sn, (uint8_t *)sendbuf, slen); + } + break; + + case MLSD_CMD: +#if defined(_FTP_DEBUG_) + printf("MLSD_CMD\r\n"); +#endif + slen = sprintf(sendbuf, "150 Opening data channel for directory listing of \"%s\"\r\n", ftp.workingdir); + send(sn, (uint8_t *)sendbuf, slen); + ftp.current_cmd = MLSD_CMD; + break; + + case LIST_CMD: +#if defined(_FTP_DEBUG_) + printf("LIST_CMD\r\n"); +#endif + slen = sprintf(sendbuf, "150 Opening data channel for directory listing of \"%s\"\r\n", ftp.workingdir); + send(sn, (uint8_t *)sendbuf, slen); + ftp.current_cmd = LIST_CMD; + break; + + case NLST_CMD: +#if defined(_FTP_DEBUG_) + printf("NLST_CMD\r\n"); +#endif + break; + + case SYST_CMD: + slen = sprintf(sendbuf, "215 UNIX emulated by WIZnet\r\n"); + send(sn, (uint8_t *)sendbuf, slen); + break; + + case PWD_CMD: + case XPWD_CMD: + slen = sprintf(sendbuf, "257 \"%s\" is current directory.\r\n", ftp.workingdir); + send(sn, (uint8_t *)sendbuf, slen); + break; + + case PASV_CMD: + slen = sprintf(sendbuf, "227 Entering Passive Mode (%d,%d,%d,%d,%d,%d)\r\n", local_ip.cVal[0], local_ip.cVal[1], local_ip.cVal[2], local_ip.cVal[3], local_port >> 8, local_port & 0x00ff); + send(sn, (uint8_t *)sendbuf, slen); + + if(getSn_SR(DATA_SOCK) == SOCK_ESTABLISHED) + { +#if defined(_FTP_DEBUG_) + printf("data disconnect: %d\r\n", DATA_SOCK); +#endif + disconnect(DATA_SOCK); + } + ftp.dsock_mode = PASSIVE_MODE; + ftp.dsock_state = DATASOCK_READY; + cur_sn = sn; +#if defined(_FTP_DEBUG_) + printf("PASV port: %d\r\n", local_port); +#endif + break; + + case SIZE_CMD: + slen = strlen(arg); + arg[slen - 1] = 0x00; + arg[slen - 2] = 0x00; + if(slen > 3) + { + tmpstr = strrchr(arg, '/'); + *tmpstr = 0; +#if defined(F_FILESYSTEM) + slen = get_filesize(arg, tmpstr + 1); +#else + slen = _MAX_SS; +#endif + if(slen > 0) + slen = sprintf(sendbuf, "213 %d\r\n", slen); + else + slen = sprintf(sendbuf, "550 File not Found\r\n"); + } + else + { + slen = sprintf(sendbuf, "550 File not Found\r\n"); + } + send(sn, (uint8_t *)sendbuf, slen); + break; + + case CWD_CMD: + slen = strlen(arg); + arg[slen - 1] = 0x00; + arg[slen - 2] = 0x00; + if(slen > 3) + { + arg[slen - 3] = 0x00; + tmpstr = strrchr(arg, '/'); + *tmpstr = 0; +#if defined(F_FILESYSTEM) + slen = get_filesize(arg, tmpstr + 1); +#else + slen = 0; +#endif + *tmpstr = '/'; + if(slen == 0){ + slen = sprintf(sendbuf, "213 %d\r\n", slen); + strcpy(ftp.workingdir, arg); + slen = sprintf(sendbuf, "250 CWD successful. \"%s\" is current directory.\r\n", ftp.workingdir); + } + else + { + slen = sprintf(sendbuf, "550 CWD failed. \"%s\"\r\n", arg); + } + } + else + { + strcpy(ftp.workingdir, arg); + slen = sprintf(sendbuf, "250 CWD successful. \"%s\" is current directory.\r\n", ftp.workingdir); + } + send(sn, (uint8_t *)sendbuf, slen); + break; + + case MKD_CMD: + case XMKD_CMD: + slen = strlen(arg); + arg[slen - 1] = 0x00; + arg[slen - 2] = 0x00; +#if defined(F_FILESYSTEM) + if (f_mkdir(arg) != 0) + { + slen = sprintf(sendbuf, "550 Can't create directory. \"%s\"\r\n", arg); + } + else + { + slen = sprintf(sendbuf, "257 MKD command successful. \"%s\"\r\n", arg); + //strcpy(ftp.workingdir, arg); + } +#else + slen = sprintf(sendbuf, "550 Can't create directory. Permission denied\r\n"); +#endif + send(sn, (uint8_t *)sendbuf, slen); + break; + + case DELE_CMD: + slen = strlen(arg); + arg[slen - 1] = 0x00; + arg[slen - 2] = 0x00; +#if defined(F_FILESYSTEM) + if (f_unlink(arg) != 0) + { + slen = sprintf(sendbuf, "550 Could not delete. \"%s\"\r\n", arg); + } + else + { + slen = sprintf(sendbuf, "250 Deleted. \"%s\"\r\n", arg); + } +#else + slen = sprintf(sendbuf, "550 Could not delete. Permission denied\r\n"); +#endif + send(sn, (uint8_t *)sendbuf, slen); + break; + + case XCWD_CMD: + case ACCT_CMD: + case XRMD_CMD: + case RMD_CMD: + case STRU_CMD: + case MODE_CMD: + case XMD5_CMD: + //fsprintf(CTRL_SOCK, unimp); + slen = sprintf(sendbuf, "502 Command does not implemented yet.\r\n"); + send(sn, (uint8_t *)sendbuf, slen); + break; + + default: /* Invalid */ + //fsprintf(CTRL_SOCK, badcmd, arg); + slen = sprintf(sendbuf, "500 Unknown command \'%s\'\r\n", arg); + send(sn, (uint8_t *)sendbuf, slen); + break; + } + + return 1; +} + + +char ftplogin(uint8_t sn, char * pass) +{ + char sendbuf[100]; + int slen = 0; + + //memset(sendbuf, 0, DATA_BUF_SIZE); + +#if defined(_FTP_DEBUG_) + printf("%s logged in\r\n", ftp.username); +#endif + //fsprintf(CTRL_SOCK, logged); + slen = sprintf(sendbuf, "230 Logged on\r\n"); + send(sn, (uint8_t *)sendbuf, slen); + ftp.state = FTPS_LOGIN; + + return 1; +} + +int pport(char * arg) +{ + int i; + char* tok=0; + + for (i = 0; i < 4; i++) + { + if(i==0) tok = strtok(arg,",\r\n"); + else tok = strtok(NULL,","); + remote_ip.cVal[i] = (uint8_t)atoi(tok); + if (!tok) + { +#if defined(_FTP_DEBUG_) + printf("bad pport : %s\r\n", arg); +#endif + return -1; + } + } + remote_port = 0; + for (i = 0; i < 2; i++) + { + tok = strtok(NULL,",\r\n"); + remote_port <<= 8; + remote_port += atoi(tok); + if (!tok) + { +#if defined(_FTP_DEBUG_) + printf("bad pport : %s\r\n", arg); +#endif + return -1; + } + } +#if defined(_FTP_DEBUG_) + printf("ip : %d.%d.%d.%d, port : %d\r\n", remote_ip.cVal[0], remote_ip.cVal[1], remote_ip.cVal[2], remote_ip.cVal[3], remote_port); +#endif + + return 0; +} + +#if defined(F_FILESYSTEM) +void print_filedsc(FIL *fil) +{ +#if defined(_FTP_DEBUG_) + printf("File System pointer : %08X\r\n", fil->fs); + printf("File System mount ID : %d\r\n", fil->id); + printf("File status flag : %08X\r\n", fil->flag); + printf("File System pads : %08X\r\n", fil->err); + printf("File read write pointer : %08X\r\n", fil->fptr); + printf("File size : %08X\r\n", fil->fsize); + printf("File start cluster : %08X\r\n", fil->sclust); + printf("current cluster : %08X\r\n", fil->clust); + printf("current data sector : %08X\r\n", fil->dsect); + printf("dir entry sector : %08X\r\n", fil->dir_sect); + printf("dir entry pointer : %08X\r\n", fil->dir_ptr); +#endif +} +#endif diff --git a/User/ioLibrary_Driver/Internet/FTPServer/ftpd.h b/User/ioLibrary_Driver/Internet/FTPServer/ftpd.h new file mode 100644 index 0000000..62324b5 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/FTPServer/ftpd.h @@ -0,0 +1,167 @@ +#ifndef _FTPD_H_ +#define _FTPD_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* +* Wiznet. +* (c) Copyright 2002, Wiznet. +* +* Filename : ftpd.h +* Version : 1.0 +* Programmer(s) : +* Created : 2003/01/28 +* Description : Header file of FTP daemon. (AVR-GCC Compiler) +*/ + +#include + +//#define F_FILESYSTEM // If your target support a file system, you have to activate this feature and implement. + +#if defined(F_FILESYSTEM) +#include "ff.h" +#endif + +#define F_APP_FTP +#define _FTP_DEBUG_ + + +#define LINELEN 100 +//#define DATA_BUF_SIZE 100 +#if !defined(F_FILESYSTEM) +#define _MAX_SS 512 +#endif + +#define CTRL_SOCK 2 +#define DATA_SOCK 3 +#define CTRL_SOCK1 4 + + +#define IPPORT_FTPD 20 /* FTP Data port */ +#define IPPORT_FTP 21 /* FTP Control port */ + +#define HOSTNAME "iinChip" +#define VERSION "1.0" + +#define FILENAME "a.txt" + +/* FTP commands */ +enum ftp_cmd { + USER_CMD, + ACCT_CMD, + PASS_CMD, + TYPE_CMD, + LIST_CMD, + CWD_CMD, + DELE_CMD, + NAME_CMD, + QUIT_CMD, + RETR_CMD, + STOR_CMD, + PORT_CMD, + NLST_CMD, + PWD_CMD, + XPWD_CMD, + MKD_CMD, + XMKD_CMD, + XRMD_CMD, + RMD_CMD, + STRU_CMD, + MODE_CMD, + SYST_CMD, + XMD5_CMD, + XCWD_CMD, + FEAT_CMD, + PASV_CMD, + SIZE_CMD, + MLSD_CMD, + APPE_CMD, + NO_CMD, +}; + +enum ftp_type { + ASCII_TYPE, + IMAGE_TYPE, + LOGICAL_TYPE +}; + +enum ftp_state { + FTPS_NOT_LOGIN, + FTPS_LOGIN +}; + +enum datasock_state{ + DATASOCK_IDLE, + DATASOCK_READY, + DATASOCK_START +}; + +enum datasock_mode{ + PASSIVE_MODE, + ACTIVE_MODE +}; + +enum ftp_use_status{ + STATUS_USED, + STATUS_NOT_USED +}; + +struct ftpd { + uint8_t control; /* Control stream */ + uint8_t data; /* Data stream */ + + enum ftp_type type; /* Transfer type */ + enum ftp_state state; + + enum ftp_cmd current_cmd; + + enum datasock_state dsock_state; + enum datasock_mode dsock_mode; + + enum ftp_use_status ID_Enable; + enum ftp_use_status PW_Enable; + + char username[LINELEN]; /* Arg to USER command */ + char userpassword[LINELEN]; + char workingdir[LINELEN]; + char filename[LINELEN]; + +#if defined(F_FILESYSTEM) + FIL fil; // FatFs File objects + FRESULT fr; // FatFs function common result code +#endif + +}; + +#ifndef un_I2cval +typedef union _un_l2cval { + uint32_t lVal; + uint8_t cVal[4]; +}un_l2cval; +#endif + +void ftpd_init(uint8_t * src_ip); +uint8_t ftpd_run(uint8_t * dbuf); +char proc_ftpd(uint8_t sn, char * buf); + +char ftplogin(uint8_t sn,char * pass); + +int pport(char * arg); + +int sendit(char * command); +int recvit(char * command); + +long sendfile(uint8_t s, char * command); +long recvfile(uint8_t s); + +#if defined(F_FILESYSTEM) +void print_filedsc(FIL *fil); +#endif + +#ifdef __cplusplus +} +#endif + +#endif // _FTPD_H_ diff --git a/User/ioLibrary_Driver/Internet/FTPServer/stdio_private.h b/User/ioLibrary_Driver/Internet/FTPServer/stdio_private.h new file mode 100644 index 0000000..f92a32f --- /dev/null +++ b/User/ioLibrary_Driver/Internet/FTPServer/stdio_private.h @@ -0,0 +1,74 @@ +/* Copyright (c) 2002, Joerg Wunsch + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: stdio_private.h,v 1.6 2003/01/07 22:17:24 joerg_wunsch Exp $ */ +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +struct __file { + char *buf; /* buffer pointer */ + unsigned char unget; /* ungetc() buffer */ + uint8_t flags; /* flags, see below */ +#define __SRD 0x0001 /* OK to read */ +#define __SWR 0x0002 /* OK to write */ +#define __SSTR 0x0004 /* this is an sprintf/snprintf string */ +#define __SPGM 0x0008 /* fmt string is in progmem */ +#define __SERR 0x0010 /* found error */ +#define __SEOF 0x0020 /* found EOF */ +#define __SUNGET 0x040 /* ungetc() happened */ +#if 0 +/* possible future extensions, will require uint16_t flags */ +#define __SRW 0x0080 /* open for reading & writing */ +#define __SLBF 0x0100 /* line buffered */ +#define __SNBF 0x0200 /* unbuffered */ +#define __SMBF 0x0400 /* buf is from malloc */ +#endif + int size; /* size of buffer */ + int len; /* characters read or written so far */ + int (*put)(char); /* function to write one char to device */ + int (*get)(void); /* function to read one char from device */ +}; + +/* values for PRINTF_LEVEL */ +#define PRINTF_MIN 1 +#define PRINTF_STD 2 +#define PRINTF_FLT 3 + +/* values for SCANF_LEVEL */ +#define SCANF_MIN 1 +#define SCANF_STD 2 +#define SCANF_FLT 3 + +#ifdef __cplusplus +} +#endif diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTClient.c b/User/ioLibrary_Driver/Internet/MQTT/MQTTClient.c new file mode 100644 index 0000000..6580aa1 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTClient.c @@ -0,0 +1,582 @@ +/******************************************************************************* + * Copyright (c) 2014, 2015 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Allan Stockdill-Mander/Ian Craggs - initial API and implementation and/or initial documentation + *******************************************************************************/ +#include "MQTTClient.h" + +static void NewMessageData(MessageData* md, MQTTString* aTopicName, MQTTMessage* aMessage) { + md->topicName = aTopicName; + md->message = aMessage; +} + + +static int getNextPacketId(MQTTClient *c) { + return c->next_packetid = (c->next_packetid == MAX_PACKET_ID) ? 1 : c->next_packetid + 1; +} + + +static int sendPacket(MQTTClient* c, int length, Timer* timer) +{ + int rc = FAILURE, + sent = 0; + + while (sent < length && !TimerIsExpired(timer)) + { + rc = c->ipstack->mqttwrite(c->ipstack, &c->buf[sent], length, TimerLeftMS(timer)); + if (rc < 0) // there was an error writing the data + break; + sent += rc; + } + if (sent == length) + { + TimerCountdown(&c->ping_timer, c->keepAliveInterval); // record the fact that we have successfully sent the packet + rc = SUCCESSS; + } + else + rc = FAILURE; + return rc; +} + + +void MQTTClientInit(MQTTClient* c, Network* network, unsigned int command_timeout_ms, + unsigned char* sendbuf, size_t sendbuf_size, unsigned char* readbuf, size_t readbuf_size) +{ + int i; + c->ipstack = network; + + for (i = 0; i < MAX_MESSAGE_HANDLERS; ++i) + c->messageHandlers[i].topicFilter = 0; + c->command_timeout_ms = command_timeout_ms; + c->buf = sendbuf; + c->buf_size = sendbuf_size; + c->readbuf = readbuf; + c->readbuf_size = readbuf_size; + c->isconnected = 0; + c->ping_outstanding = 0; + c->defaultMessageHandler = NULL; + c->next_packetid = 1; + TimerInit(&c->ping_timer); +#if defined(MQTT_TASK) + MutexInit(&c->mutex); +#endif +} + + +static int decodePacket(MQTTClient* c, int* value, int timeout) +{ + unsigned char i; + int multiplier = 1; + int len = 0; + const int MAX_NO_OF_REMAINING_LENGTH_BYTES = 4; + + *value = 0; + do + { + int rc = MQTTPACKET_READ_ERROR; + + if (++len > MAX_NO_OF_REMAINING_LENGTH_BYTES) + { + rc = MQTTPACKET_READ_ERROR; /* bad data */ + goto exit; + } + rc = c->ipstack->mqttread(c->ipstack, &i, 1, timeout); + if (rc != 1) + goto exit; + *value += (i & 127) * multiplier; + multiplier *= 128; + } while ((i & 128) != 0); +exit: + return len; +} + + +static int readPacket(MQTTClient* c, Timer* timer) +{ + int rc = FAILURE; + MQTTHeader header = {0}; + int len = 0; + int rem_len = 0; + + /* 1. read the header byte. This has the packet type in it */ + if (c->ipstack->mqttread(c->ipstack, c->readbuf, 1, TimerLeftMS(timer)) != 1) + goto exit; + + len = 1; + /* 2. read the remaining length. This is variable in itself */ + decodePacket(c, &rem_len, TimerLeftMS(timer)); + len += MQTTPacket_encode(c->readbuf + 1, rem_len); /* put the original remaining length back into the buffer */ + + /* 3. read the rest of the buffer using a callback to supply the rest of the data */ + if (rem_len > 0 && (c->ipstack->mqttread(c->ipstack, c->readbuf + len, rem_len, TimerLeftMS(timer)) != rem_len)) + goto exit; + + header.byte = c->readbuf[0]; + rc = header.bits.type; +exit: + return rc; +} + + +// assume topic filter and name is in correct format +// # can only be at end +// + and # can only be next to separator +static char isTopicMatched(char* topicFilter, MQTTString* topicName) +{ + char* curf = topicFilter; + char* curn = topicName->lenstring.data; + char* curn_end = curn + topicName->lenstring.len; + + while (*curf && curn < curn_end) + { + if (*curn == '/' && *curf != '/') + break; + if (*curf != '+' && *curf != '#' && *curf != *curn) + break; + if (*curf == '+') + { // skip until we meet the next separator, or end of string + char* nextpos = curn + 1; + while (nextpos < curn_end && *nextpos != '/') + nextpos = ++curn + 1; + } + else if (*curf == '#') + curn = curn_end - 1; // skip until end of string + curf++; + curn++; + }; + + return (curn == curn_end) && (*curf == '\0'); +} + + +int deliverMessage(MQTTClient* c, MQTTString* topicName, MQTTMessage* message) +{ + int i; + int rc = FAILURE; + + // we have to find the right message handler - indexed by topic + for (i = 0; i < MAX_MESSAGE_HANDLERS; ++i) + { + if (c->messageHandlers[i].topicFilter != 0 && (MQTTPacket_equals(topicName, (char*)c->messageHandlers[i].topicFilter) || + isTopicMatched((char*)c->messageHandlers[i].topicFilter, topicName))) + { + if (c->messageHandlers[i].fp != NULL) + { + MessageData md; + NewMessageData(&md, topicName, message); + c->messageHandlers[i].fp(&md); + rc = SUCCESSS; + } + } + } + + if (rc == FAILURE && c->defaultMessageHandler != NULL) + { + MessageData md; + NewMessageData(&md, topicName, message); + c->defaultMessageHandler(&md); + rc = SUCCESSS; + } + + return rc; +} + + +int keepalive(MQTTClient* c) +{ + int rc = FAILURE; + + if (c->keepAliveInterval == 0) + { + rc = SUCCESSS; + goto exit; + } + + if (TimerIsExpired(&c->ping_timer)) + { + if (!c->ping_outstanding) + { + Timer timer; + TimerInit(&timer); + TimerCountdownMS(&timer, 1000); + int len = MQTTSerialize_pingreq(c->buf, c->buf_size); + if (len > 0 && (rc = sendPacket(c, len, &timer)) == SUCCESSS) // send the ping packet + c->ping_outstanding = 1; + } + } + +exit: + return rc; +} + + +int cycle(MQTTClient* c, Timer* timer) +{ + // read the socket, see what work is due + unsigned short packet_type = readPacket(c, timer); + + int len = 0, + rc = SUCCESSS; + + switch (packet_type) + { + case CONNACK: + case PUBACK: + case SUBACK: + break; + case PUBLISH: + { + MQTTString topicName; + MQTTMessage msg; + int intQoS; + if (MQTTDeserialize_publish(&msg.dup, &intQoS, &msg.retained, &msg.id, &topicName, + (unsigned char**)&msg.payload, (int*)&msg.payloadlen, c->readbuf, c->readbuf_size) != 1) + goto exit; + msg.qos = (enum QoS)intQoS; + deliverMessage(c, &topicName, &msg); + if (msg.qos != QOS0) + { + if (msg.qos == QOS1) + len = MQTTSerialize_ack(c->buf, c->buf_size, PUBACK, 0, msg.id); + else if (msg.qos == QOS2) + len = MQTTSerialize_ack(c->buf, c->buf_size, PUBREC, 0, msg.id); + if (len <= 0) + rc = FAILURE; + else + rc = sendPacket(c, len, timer); + if (rc == FAILURE) + goto exit; // there was a problem + } + break; + } + case PUBREC: + { + unsigned short mypacketid; + unsigned char dup, type; + if (MQTTDeserialize_ack(&type, &dup, &mypacketid, c->readbuf, c->readbuf_size) != 1) + rc = FAILURE; + else if ((len = MQTTSerialize_ack(c->buf, c->buf_size, PUBREL, 0, mypacketid)) <= 0) + rc = FAILURE; + else if ((rc = sendPacket(c, len, timer)) != SUCCESSS) // send the PUBREL packet + rc = FAILURE; // there was a problem + if (rc == FAILURE) + goto exit; // there was a problem + break; + } + case PUBCOMP: + break; + case PINGRESP: + c->ping_outstanding = 0; + break; + } + keepalive(c); +exit: + if (rc == SUCCESSS) + rc = packet_type; + return rc; +} + + +int MQTTYield(MQTTClient* c, int timeout_ms) +{ + int rc = SUCCESSS; + Timer timer; + + TimerInit(&timer); + TimerCountdownMS(&timer, timeout_ms); + + if (cycle(c, &timer) == FAILURE) + { + rc = FAILURE; + } + + return rc; +} + + +void MQTTRun(void* parm) +{ + Timer timer; + MQTTClient* c = (MQTTClient*)parm; + + TimerInit(&timer); + + while (1) + { +#if defined(MQTT_TASK) + MutexLock(&c->mutex); +#endif + TimerCountdownMS(&timer, 500); /* Don't wait too long if no traffic is incoming */ + cycle(c, &timer); +#if defined(MQTT_TASK) + MutexUnlock(&c->mutex); +#endif + } +} + + +#if defined(MQTT_TASK) +int MQTTStartTask(MQTTClient* client) +{ + return ThreadStart(&client->thread, &MQTTRun, client); +} +#endif + + +int waitfor(MQTTClient* c, int packet_type, Timer* timer) +{ + int rc = FAILURE; + + do + { + if (TimerIsExpired(timer)) + break; // we timed out + } + while ((rc = cycle(c, timer)) != packet_type); + + return rc; +} + + +int MQTTConnect(MQTTClient* c, MQTTPacket_connectData* options) +{ + Timer connect_timer; + int rc = FAILURE; + MQTTPacket_connectData default_options = MQTTPacket_connectData_initializer; + int len = 0; + +#if defined(MQTT_TASK) + MutexLock(&c->mutex); +#endif + if (c->isconnected) /* don't send connect packet again if we are already connected */ + goto exit; + + TimerInit(&connect_timer); + TimerCountdownMS(&connect_timer, c->command_timeout_ms); + + if (options == 0) + options = &default_options; /* set default options if none were supplied */ + + c->keepAliveInterval = options->keepAliveInterval; + TimerCountdown(&c->ping_timer, c->keepAliveInterval); + if ((len = MQTTSerialize_connect(c->buf, c->buf_size, options)) <= 0) + goto exit; + if ((rc = sendPacket(c, len, &connect_timer)) != SUCCESSS) // send the connect packet + goto exit; // there was a problem + + // this will be a blocking call, wait for the connack + if (waitfor(c, CONNACK, &connect_timer) == CONNACK) + { + unsigned char connack_rc = 255; + unsigned char sessionPresent = 0; + if (MQTTDeserialize_connack(&sessionPresent, &connack_rc, c->readbuf, c->readbuf_size) == 1) + rc = connack_rc; + else + rc = FAILURE; + } + else + rc = FAILURE; + +exit: + if (rc == SUCCESSS) + c->isconnected = 1; + +#if defined(MQTT_TASK) + MutexUnlock(&c->mutex); +#endif + + return rc; +} + + +int MQTTSubscribe(MQTTClient* c, const char* topicFilter, enum QoS qos, messageHandler messageHandler) +{ + int rc = FAILURE; + Timer timer; + int len = 0; + MQTTString topic = MQTTString_initializer; + topic.cstring = (char *)topicFilter; + // This was added because enum QoS was previously typed to *int which resulted in HardFault and unaligned integer read. + // This coping below makes sure the parameter for MQTTSerialize_subscribe is always char no matter what compiler is using for enums + char charQos = (char)qos; + +#if defined(MQTT_TASK) + MutexLock(&c->mutex); +#endif + if (!c->isconnected) + goto exit; + + TimerInit(&timer); + TimerCountdownMS(&timer, c->command_timeout_ms); + + len = MQTTSerialize_subscribe(c->buf, c->buf_size, 0, getNextPacketId(c), 1, &topic, &charQos); + if (len <= 0) + goto exit; + if ((rc = sendPacket(c, len, &timer)) != SUCCESSS) // send the subscribe packet + goto exit; // there was a problem + + if (waitfor(c, SUBACK, &timer) == SUBACK) // wait for suback + { + int count = 0, grantedQoS = -1; + unsigned short mypacketid; + if (MQTTDeserialize_suback(&mypacketid, 1, &count, &grantedQoS, c->readbuf, c->readbuf_size) == 1) + rc = grantedQoS; // 0, 1, 2 or 0x80 + if (rc != 0x80) + { + int i; + for (i = 0; i < MAX_MESSAGE_HANDLERS; ++i) + { + if (c->messageHandlers[i].topicFilter == 0) + { + c->messageHandlers[i].topicFilter = topicFilter; + c->messageHandlers[i].fp = messageHandler; + rc = 0; + break; + } + } + } + } + else + rc = FAILURE; + +exit: +#if defined(MQTT_TASK) + MutexUnlock(&c->mutex); +#endif + return rc; +} + + +int MQTTUnsubscribe(MQTTClient* c, const char* topicFilter) +{ + int rc = FAILURE; + Timer timer; + MQTTString topic = MQTTString_initializer; + topic.cstring = (char *)topicFilter; + int len = 0; + +#if defined(MQTT_TASK) + MutexLock(&c->mutex); +#endif + if (!c->isconnected) + goto exit; + + TimerInit(&timer); + TimerCountdownMS(&timer, c->command_timeout_ms); + + if ((len = MQTTSerialize_unsubscribe(c->buf, c->buf_size, 0, getNextPacketId(c), 1, &topic)) <= 0) + goto exit; + if ((rc = sendPacket(c, len, &timer)) != SUCCESSS) // send the subscribe packet + goto exit; // there was a problem + + if (waitfor(c, UNSUBACK, &timer) == UNSUBACK) + { + unsigned short mypacketid; // should be the same as the packetid above + if (MQTTDeserialize_unsuback(&mypacketid, c->readbuf, c->readbuf_size) == 1) + rc = 0; + } + else + rc = FAILURE; + +exit: +#if defined(MQTT_TASK) + MutexUnlock(&c->mutex); +#endif + return rc; +} + + +int MQTTPublish(MQTTClient* c, const char* topicName, MQTTMessage* message) +{ + int rc = FAILURE; + Timer timer; + MQTTString topic = MQTTString_initializer; + topic.cstring = (char *)topicName; + int len = 0; + +#if defined(MQTT_TASK) + MutexLock(&c->mutex); +#endif + if (!c->isconnected) + goto exit; + + TimerInit(&timer); + TimerCountdownMS(&timer, c->command_timeout_ms); + + if (message->qos == QOS1 || message->qos == QOS2) + message->id = getNextPacketId(c); + + len = MQTTSerialize_publish(c->buf, c->buf_size, 0, message->qos, message->retained, message->id, + topic, (unsigned char*)message->payload, message->payloadlen); + if (len <= 0) + goto exit; + if ((rc = sendPacket(c, len, &timer)) != SUCCESSS) // send the subscribe packet + goto exit; // there was a problem + + if (message->qos == QOS1) + { + if (waitfor(c, PUBACK, &timer) == PUBACK) + { + unsigned short mypacketid; + unsigned char dup, type; + if (MQTTDeserialize_ack(&type, &dup, &mypacketid, c->readbuf, c->readbuf_size) != 1) + rc = FAILURE; + } + else + rc = FAILURE; + } + else if (message->qos == QOS2) + { + if (waitfor(c, PUBCOMP, &timer) == PUBCOMP) + { + unsigned short mypacketid; + unsigned char dup, type; + if (MQTTDeserialize_ack(&type, &dup, &mypacketid, c->readbuf, c->readbuf_size) != 1) + rc = FAILURE; + } + else + rc = FAILURE; + } + +exit: +#if defined(MQTT_TASK) + MutexUnlock(&c->mutex); +#endif + return rc; +} + + +int MQTTDisconnect(MQTTClient* c) +{ + int rc = FAILURE; + Timer timer; // we might wait for incomplete incoming publishes to complete + int len = 0; + +#if defined(MQTT_TASK) + MutexLock(&c->mutex); +#endif + TimerInit(&timer); + TimerCountdownMS(&timer, c->command_timeout_ms); + + len = MQTTSerialize_disconnect(c->buf, c->buf_size); + if (len > 0) + rc = sendPacket(c, len, &timer); // send the disconnect packet + + c->isconnected = 0; + +#if defined(MQTT_TASK) + MutexUnlock(&c->mutex); +#endif + return rc; +} + diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTClient.h b/User/ioLibrary_Driver/Internet/MQTT/MQTTClient.h new file mode 100644 index 0000000..47ea415 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTClient.h @@ -0,0 +1,182 @@ +/******************************************************************************* + * Copyright (c) 2014, 2015 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Allan Stockdill-Mander/Ian Craggs - initial API and implementation and/or initial documentation + * Ian Craggs - documentation and platform specific header + *******************************************************************************/ + +#if !defined(__MQTT_CLIENT_C_) +#define __MQTT_CLIENT_C_ + +#if defined(__cplusplus) + extern "C" { +#endif + +#if defined(WIN32_DLL) || defined(WIN64_DLL) + #define DLLImport __declspec(dllimport) + #define DLLExport __declspec(dllexport) +#elif defined(LINUX_SO) + #define DLLImport extern + #define DLLExport __attribute__ ((visibility ("default"))) +#else + #define DLLImport + #define DLLExport +#endif + +#include "./MQTTPacket/src/MQTTPacket.h" +#include "stdio.h" +#include "mqtt_interface.h" + +#define MAX_PACKET_ID 65535 /* according to the MQTT specification - do not change! */ + +#if !defined(MAX_MESSAGE_HANDLERS) +#define MAX_MESSAGE_HANDLERS 5 /* redefinable - how many subscriptions do you want? */ +#endif + +enum QoS { QOS0, QOS1, QOS2 }; + +/* all failure return codes must be negative */ +enum returnCode { BUFFER_OVERFLOW = -2, FAILURE = -1, SUCCESSS = 0 }; + +/* The Platform specific header must define the Network and Timer structures and functions + * which operate on them. + * +typedef struct Network +{ + int (*mqttread)(Network*, unsigned char* read_buffer, int, int); + int (*mqttwrite)(Network*, unsigned char* send_buffer, int, int); +} Network;*/ + +/* The Timer structure must be defined in the platform specific header, + * and have the following functions to operate on it. */ +extern void TimerInit(Timer*); +extern char TimerIsExpired(Timer*); +extern void TimerCountdownMS(Timer*, unsigned int); +extern void TimerCountdown(Timer*, unsigned int); +extern int TimerLeftMS(Timer*); + +typedef struct MQTTMessage +{ + enum QoS qos; + unsigned char retained; + unsigned char dup; + unsigned short id; + void *payload; + size_t payloadlen; +} MQTTMessage; + +typedef struct MessageData +{ + MQTTMessage* message; + MQTTString* topicName; +} MessageData; + +typedef void (*messageHandler)(MessageData*); + +typedef struct MQTTClient +{ + unsigned int next_packetid, + command_timeout_ms; + size_t buf_size, + readbuf_size; + unsigned char *buf, + *readbuf; + unsigned int keepAliveInterval; + char ping_outstanding; + int isconnected; + + struct MessageHandlers + { + const char* topicFilter; + void (*fp) (MessageData*); + } messageHandlers[MAX_MESSAGE_HANDLERS]; /* Message handlers are indexed by subscription topic */ + + void (*defaultMessageHandler) (MessageData*); + + Network* ipstack; + Timer ping_timer; +#if defined(MQTT_TASK) + Mutex mutex; + Thread thread; +#endif +} MQTTClient; + +#define DefaultClient {0, 0, 0, 0, NULL, NULL, 0, 0, 0} + + +/** + * Create an MQTT client object + * @param client + * @param network + * @param command_timeout_ms + * @param + */ +DLLExport void MQTTClientInit(MQTTClient* client, Network* network, unsigned int command_timeout_ms, + unsigned char* sendbuf, size_t sendbuf_size, unsigned char* readbuf, size_t readbuf_size); + +/** MQTT Connect - send an MQTT connect packet down the network and wait for a Connack + * The nework object must be connected to the network endpoint before calling this + * @param options - connect options + * @return success code + */ +DLLExport int MQTTConnect(MQTTClient* client, MQTTPacket_connectData* options); + +/** MQTT Publish - send an MQTT publish packet and wait for all acks to complete for all QoSs + * @param client - the client object to use + * @param topic - the topic to publish to + * @param message - the message to send + * @return success code + */ +DLLExport int MQTTPublish(MQTTClient* client, const char*, MQTTMessage*); + +/** MQTT Subscribe - send an MQTT subscribe packet and wait for suback before returning. + * @param client - the client object to use + * @param topicFilter - the topic filter to subscribe to + * @param message - the message to send + * @return success code + */ +DLLExport int MQTTSubscribe(MQTTClient* client, const char* topicFilter, enum QoS, messageHandler); + +/** MQTT Subscribe - send an MQTT unsubscribe packet and wait for unsuback before returning. + * @param client - the client object to use + * @param topicFilter - the topic filter to unsubscribe from + * @return success code + */ +DLLExport int MQTTUnsubscribe(MQTTClient* client, const char* topicFilter); + +/** MQTT Disconnect - send an MQTT disconnect packet and close the connection + * @param client - the client object to use + * @return success code + */ +DLLExport int MQTTDisconnect(MQTTClient* client); + +/** MQTT Yield - MQTT background + * @param client - the client object to use + * @param time - the time, in milliseconds, to yield for + * @return success code + */ +DLLExport int MQTTYield(MQTTClient* client, int time); + +#if defined(MQTT_TASK) +/** MQTT start background thread for a client. After this, MQTTYield should not be called. +* @param client - the client object to use +* @return success code +*/ +DLLExport int MQTTStartTask(MQTTClient* client); +#endif + +#if defined(__cplusplus) + } +#endif + +#endif diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTConnect.h b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTConnect.h new file mode 100644 index 0000000..db90251 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTConnect.h @@ -0,0 +1,136 @@ +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + * Xiang Rong - 442039 Add makefile to Embedded C client + *******************************************************************************/ + +#ifndef MQTTCONNECT_H_ +#define MQTTCONNECT_H_ + +#if !defined(DLLImport) + #define DLLImport +#endif +#if !defined(DLLExport) + #define DLLExport +#endif + + +typedef union +{ + unsigned char all; /**< all connect flags */ +#if defined(REVERSED) + struct + { + unsigned int username : 1; /**< 3.1 user name */ + unsigned int password : 1; /**< 3.1 password */ + unsigned int willRetain : 1; /**< will retain setting */ + unsigned int willQoS : 2; /**< will QoS value */ + unsigned int will : 1; /**< will flag */ + unsigned int cleansession : 1; /**< clean session flag */ + unsigned int : 1; /**< unused */ + } bits; +#else + struct + { + unsigned int : 1; /**< unused */ + unsigned int cleansession : 1; /**< cleansession flag */ + unsigned int will : 1; /**< will flag */ + unsigned int willQoS : 2; /**< will QoS value */ + unsigned int willRetain : 1; /**< will retain setting */ + unsigned int password : 1; /**< 3.1 password */ + unsigned int username : 1; /**< 3.1 user name */ + } bits; +#endif +} MQTTConnectFlags; /**< connect flags byte */ + + + +/** + * Defines the MQTT "Last Will and Testament" (LWT) settings for + * the connect packet. + */ +typedef struct +{ + /** The eyecatcher for this structure. must be MQTW. */ + char struct_id[4]; + /** The version number of this structure. Must be 0 */ + int struct_version; + /** The LWT topic to which the LWT message will be published. */ + MQTTString topicName; + /** The LWT payload. */ + MQTTString message; + /** + * The retained flag for the LWT message (see MQTTAsync_message.retained). + */ + unsigned char retained; + /** + * The quality of service setting for the LWT message (see + * MQTTAsync_message.qos and @ref qos). + */ + char qos; +} MQTTPacket_willOptions; + + +#define MQTTPacket_willOptions_initializer { {'M', 'Q', 'T', 'W'}, 0, {NULL, {0, NULL}}, {NULL, {0, NULL}}, 0, 0 } + + +typedef struct +{ + /** The eyecatcher for this structure. must be MQTC. */ + char struct_id[4]; + /** The version number of this structure. Must be 0 */ + int struct_version; + /** Version of MQTT to be used. 3 = 3.1 4 = 3.1.1 + */ + unsigned char MQTTVersion; + MQTTString clientID; + unsigned short keepAliveInterval; + unsigned char cleansession; + unsigned char willFlag; + MQTTPacket_willOptions will; + MQTTString username; + MQTTString password; +} MQTTPacket_connectData; + +typedef union +{ + unsigned char all; /**< all connack flags */ +#if defined(REVERSED) + struct + { + unsigned int sessionpresent : 1; /**< session present flag */ + unsigned int : 7; /**< unused */ + } bits; +#else + struct + { + unsigned int : 7; /**< unused */ + unsigned int sessionpresent : 1; /**< session present flag */ + } bits; +#endif +} MQTTConnackFlags; /**< connack flags byte */ + +#define MQTTPacket_connectData_initializer { {'M', 'Q', 'T', 'C'}, 0, 4, {NULL, {0, NULL}}, 60, 1, 0, \ + MQTTPacket_willOptions_initializer, {NULL, {0, NULL}}, {NULL, {0, NULL}} } + +DLLExport int MQTTSerialize_connect(unsigned char* buf, int buflen, MQTTPacket_connectData* options); +DLLExport int MQTTDeserialize_connect(MQTTPacket_connectData* data, unsigned char* buf, int len); + +DLLExport int MQTTSerialize_connack(unsigned char* buf, int buflen, unsigned char connack_rc, unsigned char sessionPresent); +DLLExport int MQTTDeserialize_connack(unsigned char* sessionPresent, unsigned char* connack_rc, unsigned char* buf, int buflen); + +DLLExport int MQTTSerialize_disconnect(unsigned char* buf, int buflen); +DLLExport int MQTTSerialize_pingreq(unsigned char* buf, int buflen); + +#endif /* MQTTCONNECT_H_ */ diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTConnectClient.c b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTConnectClient.c new file mode 100644 index 0000000..5f3cc29 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTConnectClient.c @@ -0,0 +1,214 @@ +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + *******************************************************************************/ + +#include "MQTTPacket.h" +#include "StackTrace.h" + +#include + +/** + * Determines the length of the MQTT connect packet that would be produced using the supplied connect options. + * @param options the options to be used to build the connect packet + * @return the length of buffer needed to contain the serialized version of the packet + */ +int MQTTSerialize_connectLength(MQTTPacket_connectData* options) +{ + int len = 0; + + FUNC_ENTRY; + + if (options->MQTTVersion == 3) + len = 12; /* variable depending on MQTT or MQIsdp */ + else if (options->MQTTVersion == 4) + len = 10; + + len += MQTTstrlen(options->clientID)+2; + if (options->willFlag) + len += MQTTstrlen(options->will.topicName)+2 + MQTTstrlen(options->will.message)+2; + if (options->username.cstring || options->username.lenstring.data) + len += MQTTstrlen(options->username)+2; + if (options->password.cstring || options->password.lenstring.data) + len += MQTTstrlen(options->password)+2; + + FUNC_EXIT_RC(len); + return len; +} + + +/** + * Serializes the connect options into the buffer. + * @param buf the buffer into which the packet will be serialized + * @param len the length in bytes of the supplied buffer + * @param options the options to be used to build the connect packet + * @return serialized length, or error if 0 + */ +int MQTTSerialize_connect(unsigned char* buf, int buflen, MQTTPacket_connectData* options) +{ + unsigned char *ptr = buf; + MQTTHeader header = {0}; + MQTTConnectFlags flags = {0}; + int len = 0; + int rc = -1; + + FUNC_ENTRY; + if (MQTTPacket_len(len = MQTTSerialize_connectLength(options)) > buflen) + { + rc = MQTTPACKET_BUFFER_TOO_SHORT; + goto exit; + } + + header.byte = 0; + header.bits.type = CONNECT; + writeChar(&ptr, header.byte); /* write header */ + + ptr += MQTTPacket_encode(ptr, len); /* write remaining length */ + + if (options->MQTTVersion == 4) + { + writeCString(&ptr, "MQTT"); + writeChar(&ptr, (char) 4); + } + else + { + writeCString(&ptr, "MQIsdp"); + writeChar(&ptr, (char) 3); + } + + flags.all = 0; + flags.bits.cleansession = options->cleansession; + flags.bits.will = (options->willFlag) ? 1 : 0; + if (flags.bits.will) + { + flags.bits.willQoS = options->will.qos; + flags.bits.willRetain = options->will.retained; + } + + if (options->username.cstring || options->username.lenstring.data) + flags.bits.username = 1; + if (options->password.cstring || options->password.lenstring.data) + flags.bits.password = 1; + + writeChar(&ptr, flags.all); + writeInt(&ptr, options->keepAliveInterval); + writeMQTTString(&ptr, options->clientID); + if (options->willFlag) + { + writeMQTTString(&ptr, options->will.topicName); + writeMQTTString(&ptr, options->will.message); + } + if (flags.bits.username) + writeMQTTString(&ptr, options->username); + if (flags.bits.password) + writeMQTTString(&ptr, options->password); + + rc = ptr - buf; + + exit: FUNC_EXIT_RC(rc); + return rc; +} + + +/** + * Deserializes the supplied (wire) buffer into connack data - return code + * @param sessionPresent the session present flag returned (only for MQTT 3.1.1) + * @param connack_rc returned integer value of the connack return code + * @param buf the raw buffer data, of the correct length determined by the remaining length field + * @param len the length in bytes of the data in the supplied buffer + * @return error code. 1 is success, 0 is failure + */ +int MQTTDeserialize_connack(unsigned char* sessionPresent, unsigned char* connack_rc, unsigned char* buf, int buflen) +{ + MQTTHeader header = {0}; + unsigned char* curdata = buf; + unsigned char* enddata = NULL; + int rc = 0; + int mylen; + MQTTConnackFlags flags = {0}; + + FUNC_ENTRY; + header.byte = readChar(&curdata); + if (header.bits.type != CONNACK) + goto exit; + + curdata += (rc = MQTTPacket_decodeBuf(curdata, &mylen)); /* read remaining length */ + enddata = curdata + mylen; + if (enddata - curdata < 2) + goto exit; + + flags.all = readChar(&curdata); + *sessionPresent = flags.bits.sessionpresent; + *connack_rc = readChar(&curdata); + + rc = 1; +exit: + FUNC_EXIT_RC(rc); + return rc; +} + + +/** + * Serializes a 0-length packet into the supplied buffer, ready for writing to a socket + * @param buf the buffer into which the packet will be serialized + * @param buflen the length in bytes of the supplied buffer, to avoid overruns + * @param packettype the message type + * @return serialized length, or error if 0 + */ +int MQTTSerialize_zero(unsigned char* buf, int buflen, unsigned char packettype) +{ + MQTTHeader header = {0}; + int rc = -1; + unsigned char *ptr = buf; + + FUNC_ENTRY; + if (buflen < 2) + { + rc = MQTTPACKET_BUFFER_TOO_SHORT; + goto exit; + } + header.byte = 0; + header.bits.type = packettype; + writeChar(&ptr, header.byte); /* write header */ + + ptr += MQTTPacket_encode(ptr, 0); /* write remaining length */ + rc = ptr - buf; +exit: + FUNC_EXIT_RC(rc); + return rc; +} + + +/** + * Serializes a disconnect packet into the supplied buffer, ready for writing to a socket + * @param buf the buffer into which the packet will be serialized + * @param buflen the length in bytes of the supplied buffer, to avoid overruns + * @return serialized length, or error if 0 + */ +int MQTTSerialize_disconnect(unsigned char* buf, int buflen) +{ + return MQTTSerialize_zero(buf, buflen, DISCONNECT); +} + + +/** + * Serializes a disconnect packet into the supplied buffer, ready for writing to a socket + * @param buf the buffer into which the packet will be serialized + * @param buflen the length in bytes of the supplied buffer, to avoid overruns + * @return serialized length, or error if 0 + */ +int MQTTSerialize_pingreq(unsigned char* buf, int buflen) +{ + return MQTTSerialize_zero(buf, buflen, PINGREQ); +} diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTConnectServer.c b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTConnectServer.c new file mode 100644 index 0000000..07c7cb5 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTConnectServer.c @@ -0,0 +1,148 @@ +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + *******************************************************************************/ + +#include "StackTrace.h" +#include "MQTTPacket.h" +#include + +#define min(a, b) ((a < b) ? a : b) + + +/** + * Validates MQTT protocol name and version combinations + * @param protocol the MQTT protocol name as an MQTTString + * @param version the MQTT protocol version number, as in the connect packet + * @return correct MQTT combination? 1 is true, 0 is false + */ +int MQTTPacket_checkVersion(MQTTString* protocol, int version) +{ + int rc = 0; + + if (version == 3 && memcmp(protocol->lenstring.data, "MQIsdp", + min(6, protocol->lenstring.len)) == 0) + rc = 1; + else if (version == 4 && memcmp(protocol->lenstring.data, "MQTT", + min(4, protocol->lenstring.len)) == 0) + rc = 1; + return rc; +} + + +/** + * Deserializes the supplied (wire) buffer into connect data structure + * @param data the connect data structure to be filled out + * @param buf the raw buffer data, of the correct length determined by the remaining length field + * @param len the length in bytes of the data in the supplied buffer + * @return error code. 1 is success, 0 is failure + */ +int MQTTDeserialize_connect(MQTTPacket_connectData* data, unsigned char* buf, int len) +{ + MQTTHeader header = {0}; + MQTTConnectFlags flags = {0}; + unsigned char* curdata = buf; + unsigned char* enddata = &buf[len]; + int rc = 0; + MQTTString Protocol; + int version; + int mylen = 0; + + FUNC_ENTRY; + header.byte = readChar(&curdata); + if (header.bits.type != CONNECT) + goto exit; + + curdata += MQTTPacket_decodeBuf(curdata, &mylen); /* read remaining length */ + + if (!readMQTTLenString(&Protocol, &curdata, enddata) || + enddata - curdata < 0) /* do we have enough data to read the protocol version byte? */ + goto exit; + + version = (int)readChar(&curdata); /* Protocol version */ + /* If we don't recognize the protocol version, we don't parse the connect packet on the + * basis that we don't know what the format will be. + */ + if (MQTTPacket_checkVersion(&Protocol, version)) + { + flags.all = readChar(&curdata); + data->cleansession = flags.bits.cleansession; + data->keepAliveInterval = readInt(&curdata); + if (!readMQTTLenString(&data->clientID, &curdata, enddata)) + goto exit; + data->willFlag = flags.bits.will; + if (flags.bits.will) + { + data->will.qos = flags.bits.willQoS; + data->will.retained = flags.bits.willRetain; + if (!readMQTTLenString(&data->will.topicName, &curdata, enddata) || + !readMQTTLenString(&data->will.message, &curdata, enddata)) + goto exit; + } + if (flags.bits.username) + { + if (enddata - curdata < 3 || !readMQTTLenString(&data->username, &curdata, enddata)) + goto exit; /* username flag set, but no username supplied - invalid */ + if (flags.bits.password && + (enddata - curdata < 3 || !readMQTTLenString(&data->password, &curdata, enddata))) + goto exit; /* password flag set, but no password supplied - invalid */ + } + else if (flags.bits.password) + goto exit; /* password flag set without username - invalid */ + rc = 1; + } +exit: + FUNC_EXIT_RC(rc); + return rc; +} + + +/** + * Serializes the connack packet into the supplied buffer. + * @param buf the buffer into which the packet will be serialized + * @param buflen the length in bytes of the supplied buffer + * @param connack_rc the integer connack return code to be used + * @param sessionPresent the MQTT 3.1.1 sessionPresent flag + * @return serialized length, or error if 0 + */ +int MQTTSerialize_connack(unsigned char* buf, int buflen, unsigned char connack_rc, unsigned char sessionPresent) +{ + MQTTHeader header = {0}; + int rc = 0; + unsigned char *ptr = buf; + MQTTConnackFlags flags = {0}; + + FUNC_ENTRY; + if (buflen < 2) + { + rc = MQTTPACKET_BUFFER_TOO_SHORT; + goto exit; + } + header.byte = 0; + header.bits.type = CONNACK; + writeChar(&ptr, header.byte); /* write header */ + + ptr += MQTTPacket_encode(ptr, 2); /* write remaining length */ + + flags.all = 0; + flags.bits.sessionpresent = sessionPresent; + writeChar(&ptr, flags.all); + writeChar(&ptr, connack_rc); + + rc = ptr - buf; +exit: + FUNC_EXIT_RC(rc); + return rc; +} + diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTDeserializePublish.c b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTDeserializePublish.c new file mode 100644 index 0000000..dafb6a3 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTDeserializePublish.c @@ -0,0 +1,107 @@ +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + *******************************************************************************/ + +#include "StackTrace.h" +#include "MQTTPacket.h" +#include + +#define min(a, b) ((a < b) ? 1 : 0) + +/** + * Deserializes the supplied (wire) buffer into publish data + * @param dup returned integer - the MQTT dup flag + * @param qos returned integer - the MQTT QoS value + * @param retained returned integer - the MQTT retained flag + * @param packetid returned integer - the MQTT packet identifier + * @param topicName returned MQTTString - the MQTT topic in the publish + * @param payload returned byte buffer - the MQTT publish payload + * @param payloadlen returned integer - the length of the MQTT payload + * @param buf the raw buffer data, of the correct length determined by the remaining length field + * @param buflen the length in bytes of the data in the supplied buffer + * @return error code. 1 is success + */ +int MQTTDeserialize_publish(unsigned char* dup, int* qos, unsigned char* retained, unsigned short* packetid, MQTTString* topicName, + unsigned char** payload, int* payloadlen, unsigned char* buf, int buflen) +{ + MQTTHeader header = {0}; + unsigned char* curdata = buf; + unsigned char* enddata = NULL; + int rc = 0; + int mylen = 0; + + FUNC_ENTRY; + header.byte = readChar(&curdata); + if (header.bits.type != PUBLISH) + goto exit; + *dup = header.bits.dup; + *qos = header.bits.qos; + *retained = header.bits.retain; + + curdata += (rc = MQTTPacket_decodeBuf(curdata, &mylen)); /* read remaining length */ + enddata = curdata + mylen; + + if (!readMQTTLenString(topicName, &curdata, enddata) || + enddata - curdata < 0) /* do we have enough data to read the protocol version byte? */ + goto exit; + + if (*qos > 0) + *packetid = readInt(&curdata); + + *payloadlen = enddata - curdata; + *payload = curdata; + rc = 1; +exit: + FUNC_EXIT_RC(rc); + return rc; +} + + + +/** + * Deserializes the supplied (wire) buffer into an ack + * @param packettype returned integer - the MQTT packet type + * @param dup returned integer - the MQTT dup flag + * @param packetid returned integer - the MQTT packet identifier + * @param buf the raw buffer data, of the correct length determined by the remaining length field + * @param buflen the length in bytes of the data in the supplied buffer + * @return error code. 1 is success, 0 is failure + */ +int MQTTDeserialize_ack(unsigned char* packettype, unsigned char* dup, unsigned short* packetid, unsigned char* buf, int buflen) +{ + MQTTHeader header = {0}; + unsigned char* curdata = buf; + unsigned char* enddata = NULL; + int rc = 0; + int mylen; + + FUNC_ENTRY; + header.byte = readChar(&curdata); + *dup = header.bits.dup; + *packettype = header.bits.type; + + curdata += (rc = MQTTPacket_decodeBuf(curdata, &mylen)); /* read remaining length */ + enddata = curdata + mylen; + + if (enddata - curdata < 2) + goto exit; + *packetid = readInt(&curdata); + + rc = 1; +exit: + FUNC_EXIT_RC(rc); + return rc; +} + diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTFormat.c b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTFormat.c new file mode 100644 index 0000000..9c9ef95 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTFormat.c @@ -0,0 +1,255 @@ +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + *******************************************************************************/ + +#include "StackTrace.h" +#include "MQTTPacket.h" + +#include + + +const char* MQTTPacket_names[] = +{ + "RESERVED", "CONNECT", "CONNACK", "PUBLISH", "PUBACK", "PUBREC", "PUBREL", + "PUBCOMP", "SUBSCRIBE", "SUBACK", "UNSUBSCRIBE", "UNSUBACK", + "PINGREQ", "PINGRESP", "DISCONNECT" +}; + + +const char* MQTTPacket_getName(unsigned short packetid) +{ + return MQTTPacket_names[packetid]; +} + + +int MQTTStringFormat_connect(char* strbuf, int strbuflen, MQTTPacket_connectData* data) +{ + int strindex = 0; + + strindex = snprintf(strbuf, strbuflen, + "CONNECT MQTT version %d, client id %.*s, clean session %d, keep alive %d", + (int)data->MQTTVersion, data->clientID.lenstring.len, data->clientID.lenstring.data, + (int)data->cleansession, data->keepAliveInterval); + if (data->willFlag) + strindex += snprintf(&strbuf[strindex], strbuflen - strindex, + ", will QoS %d, will retain %d, will topic %.*s, will message %.*s", + data->will.qos, data->will.retained, + data->will.topicName.lenstring.len, data->will.topicName.lenstring.data, + data->will.message.lenstring.len, data->will.message.lenstring.data); + if (data->username.lenstring.data && data->username.lenstring.len > 0) + strindex += snprintf(&strbuf[strindex], strbuflen - strindex, + ", user name %.*s", data->username.lenstring.len, data->username.lenstring.data); + if (data->password.lenstring.data && data->password.lenstring.len > 0) + strindex += snprintf(&strbuf[strindex], strbuflen - strindex, + ", password %.*s", data->password.lenstring.len, data->password.lenstring.data); + return strindex; +} + + +int MQTTStringFormat_connack(char* strbuf, int strbuflen, unsigned char connack_rc, unsigned char sessionPresent) +{ + int strindex = snprintf(strbuf, strbuflen, "CONNACK session present %d, rc %d", sessionPresent, connack_rc); + return strindex; +} + + +int MQTTStringFormat_publish(char* strbuf, int strbuflen, unsigned char dup, int qos, unsigned char retained, + unsigned short packetid, MQTTString topicName, unsigned char* payload, int payloadlen) +{ + int strindex = snprintf(strbuf, strbuflen, + "PUBLISH dup %d, QoS %d, retained %d, packet id %d, topic %.*s, payload length %d, payload %.*s", + dup, qos, retained, packetid, + (topicName.lenstring.len < 20) ? topicName.lenstring.len : 20, topicName.lenstring.data, + payloadlen, (payloadlen < 20) ? payloadlen : 20, payload); + return strindex; +} + + +int MQTTStringFormat_ack(char* strbuf, int strbuflen, unsigned char packettype, unsigned char dup, unsigned short packetid) +{ + int strindex = snprintf(strbuf, strbuflen, "%s, packet id %d", MQTTPacket_names[packettype], packetid); + if (dup) + strindex += snprintf(strbuf + strindex, strbuflen - strindex, ", dup %d", dup); + return strindex; +} + + +int MQTTStringFormat_subscribe(char* strbuf, int strbuflen, unsigned char dup, unsigned short packetid, int count, + MQTTString topicFilters[], int requestedQoSs[]) +{ + return snprintf(strbuf, strbuflen, + "SUBSCRIBE dup %d, packet id %d count %d topic %.*s qos %d", + dup, packetid, count, + topicFilters[0].lenstring.len, topicFilters[0].lenstring.data, + requestedQoSs[0]); +} + + +int MQTTStringFormat_suback(char* strbuf, int strbuflen, unsigned short packetid, int count, int* grantedQoSs) +{ + return snprintf(strbuf, strbuflen, + "SUBACK packet id %d count %d granted qos %d", packetid, count, grantedQoSs[0]); +} + + +int MQTTStringFormat_unsubscribe(char* strbuf, int strbuflen, unsigned char dup, unsigned short packetid, + int count, MQTTString topicFilters[]) +{ + return snprintf(strbuf, strbuflen, + "UNSUBSCRIBE dup %d, packet id %d count %d topic %.*s", + dup, packetid, count, + topicFilters[0].lenstring.len, topicFilters[0].lenstring.data); +} + + +char* MQTTFormat_toClientString(char* strbuf, int strbuflen, unsigned char* buf, int buflen) +{ + int index = 0; + int rem_length = 0; + MQTTHeader header = {0}; + header.byte = buf[index++]; + index += MQTTPacket_decodeBuf(&buf[index], &rem_length); + + switch (header.bits.type) + { + case CONNACK: + { + unsigned char sessionPresent, connack_rc; + if (MQTTDeserialize_connack(&sessionPresent, &connack_rc, buf, buflen) == 1) + MQTTStringFormat_connack(strbuf, strbuflen, connack_rc, sessionPresent); + } + break; + case PUBLISH: + { + unsigned char dup, retained, *payload; + unsigned short packetid; + int qos, payloadlen; + MQTTString topicName = MQTTString_initializer; + if (MQTTDeserialize_publish(&dup, &qos, &retained, &packetid, &topicName, + &payload, &payloadlen, buf, buflen) == 1) + MQTTStringFormat_publish(strbuf, strbuflen, dup, qos, retained, packetid, + topicName, payload, payloadlen); + } + break; + case PUBACK: + case PUBREC: + case PUBREL: + case PUBCOMP: + { + unsigned char packettype, dup; + unsigned short packetid; + if (MQTTDeserialize_ack(&packettype, &dup, &packetid, buf, buflen) == 1) + MQTTStringFormat_ack(strbuf, strbuflen, packettype, dup, packetid); + } + break; + case SUBACK: + { + unsigned short packetid; + int maxcount = 1, count = 0; + int grantedQoSs[1]; + if (MQTTDeserialize_suback(&packetid, maxcount, &count, grantedQoSs, buf, buflen) == 1) + MQTTStringFormat_suback(strbuf, strbuflen, packetid, count, grantedQoSs); + } + break; + case UNSUBACK: + { + unsigned short packetid; + if (MQTTDeserialize_unsuback(&packetid, buf, buflen) == 1) + MQTTStringFormat_ack(strbuf, strbuflen, UNSUBACK, 0, packetid); + } + break; + case PINGREQ: + case PINGRESP: + case DISCONNECT: + snprintf(strbuf, strbuflen, "%s", MQTTPacket_names[header.bits.type]); + break; + } + return strbuf; +} + + +char* MQTTFormat_toServerString(char* strbuf, int strbuflen, unsigned char* buf, int buflen) +{ + int index = 0; + int rem_length = 0; + MQTTHeader header = {0}; + + header.byte = buf[index++]; + index += MQTTPacket_decodeBuf(&buf[index], &rem_length); + + switch (header.bits.type) + { + case CONNECT: + { + MQTTPacket_connectData data; + int rc; + if ((rc = MQTTDeserialize_connect(&data, buf, buflen)) == 1) + MQTTStringFormat_connect(strbuf, strbuflen, &data); + } + break; + case PUBLISH: + { + unsigned char dup, retained, *payload; + unsigned short packetid; + int qos, payloadlen; + MQTTString topicName = MQTTString_initializer; + if (MQTTDeserialize_publish(&dup, &qos, &retained, &packetid, &topicName, + &payload, &payloadlen, buf, buflen) == 1) + MQTTStringFormat_publish(strbuf, strbuflen, dup, qos, retained, packetid, + topicName, payload, payloadlen); + } + break; + case PUBACK: + case PUBREC: + case PUBREL: + case PUBCOMP: + { + unsigned char packettype, dup; + unsigned short packetid; + if (MQTTDeserialize_ack(&packettype, &dup, &packetid, buf, buflen) == 1) + MQTTStringFormat_ack(strbuf, strbuflen, packettype, dup, packetid); + } + break; + case SUBSCRIBE: + { + unsigned char dup; + unsigned short packetid; + int maxcount = 1, count = 0; + MQTTString topicFilters[1]; + int requestedQoSs[1]; + if (MQTTDeserialize_subscribe(&dup, &packetid, maxcount, &count, + topicFilters, requestedQoSs, buf, buflen) == 1) + MQTTStringFormat_subscribe(strbuf, strbuflen, dup, packetid, count, topicFilters, requestedQoSs);; + } + break; + case UNSUBSCRIBE: + { + unsigned char dup; + unsigned short packetid; + int maxcount = 1, count = 0; + MQTTString topicFilters[1]; + if (MQTTDeserialize_unsubscribe(&dup, &packetid, maxcount, &count, topicFilters, buf, buflen) == 1) + MQTTStringFormat_unsubscribe(strbuf, strbuflen, dup, packetid, count, topicFilters); + } + break; + case PINGREQ: + case PINGRESP: + case DISCONNECT: + snprintf(strbuf, strbuflen, "%s", MQTTPacket_names[header.bits.type]); + break; + } + strbuf[strbuflen] = '\0'; + return strbuf; +} diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTFormat.h b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTFormat.h new file mode 100644 index 0000000..47b0c41 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTFormat.h @@ -0,0 +1,37 @@ +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + *******************************************************************************/ + +#if !defined(MQTTFORMAT_H) +#define MQTTFORMAT_H + +#include "StackTrace.h" +#include "MQTTPacket.h" + +const char* MQTTPacket_getName(unsigned short packetid); +int MQTTStringFormat_connect(char* strbuf, int strbuflen, MQTTPacket_connectData* data); +int MQTTStringFormat_connack(char* strbuf, int strbuflen, unsigned char connack_rc, unsigned char sessionPresent); +int MQTTStringFormat_publish(char* strbuf, int strbuflen, unsigned char dup, int qos, unsigned char retained, + unsigned short packetid, MQTTString topicName, unsigned char* payload, int payloadlen); +int MQTTStringFormat_ack(char* strbuf, int strbuflen, unsigned char packettype, unsigned char dup, unsigned short packetid); +int MQTTStringFormat_subscribe(char* strbuf, int strbuflen, unsigned char dup, unsigned short packetid, int count, + MQTTString topicFilters[], int requestedQoSs[]); +int MQTTStringFormat_suback(char* strbuf, int strbuflen, unsigned short packetid, int count, int* grantedQoSs); +int MQTTStringFormat_unsubscribe(char* strbuf, int strbuflen, unsigned char dup, unsigned short packetid, + int count, MQTTString topicFilters[]); +char* MQTTFormat_toClientString(char* strbuf, int strbuflen, unsigned char* buf, int buflen); +char* MQTTFormat_toServerString(char* strbuf, int strbuflen, unsigned char* buf, int buflen); + +#endif diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTPacket.c b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTPacket.c new file mode 100644 index 0000000..bd5f90a --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTPacket.c @@ -0,0 +1,410 @@ +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + * Sergio R. Caprile - non-blocking packet read functions for stream transport + *******************************************************************************/ + +#include "StackTrace.h" +#include "MQTTPacket.h" + +#include + +/** + * Encodes the message length according to the MQTT algorithm + * @param buf the buffer into which the encoded data is written + * @param length the length to be encoded + * @return the number of bytes written to buffer + */ +int MQTTPacket_encode(unsigned char* buf, int length) +{ + int rc = 0; + + FUNC_ENTRY; + do + { + char d = length % 128; + length /= 128; + /* if there are more digits to encode, set the top bit of this digit */ + if (length > 0) + d |= 0x80; + buf[rc++] = d; + } while (length > 0); + FUNC_EXIT_RC(rc); + return rc; +} + + +/** + * Decodes the message length according to the MQTT algorithm + * @param getcharfn pointer to function to read the next character from the data source + * @param value the decoded length returned + * @return the number of bytes read from the socket + */ +int MQTTPacket_decode(int (*getcharfn)(unsigned char*, int), int* value) +{ + unsigned char c; + int multiplier = 1; + int len = 0; +#define MAX_NO_OF_REMAINING_LENGTH_BYTES 4 + + FUNC_ENTRY; + *value = 0; + do + { + int rc = MQTTPACKET_READ_ERROR; + + if (++len > MAX_NO_OF_REMAINING_LENGTH_BYTES) + { + rc = MQTTPACKET_READ_ERROR; /* bad data */ + goto exit; + } + rc = (*getcharfn)(&c, 1); + if (rc != 1) + goto exit; + *value += (c & 127) * multiplier; + multiplier *= 128; + } while ((c & 128) != 0); +exit: + FUNC_EXIT_RC(len); + return len; +} + + +int MQTTPacket_len(int rem_len) +{ + rem_len += 1; /* header byte */ + + /* now remaining_length field */ + if (rem_len < 128) + rem_len += 1; + else if (rem_len < 16384) + rem_len += 2; + else if (rem_len < 2097151) + rem_len += 3; + else + rem_len += 4; + return rem_len; +} + + +static unsigned char* bufptr; + +int bufchar(unsigned char* c, int count) +{ + int i; + + for (i = 0; i < count; ++i) + *c = *bufptr++; + return count; +} + + +int MQTTPacket_decodeBuf(unsigned char* buf, int* value) +{ + bufptr = buf; + return MQTTPacket_decode(bufchar, value); +} + + +/** + * Calculates an integer from two bytes read from the input buffer + * @param pptr pointer to the input buffer - incremented by the number of bytes used & returned + * @return the integer value calculated + */ +int readInt(unsigned char** pptr) +{ + unsigned char* ptr = *pptr; + int len = 256*(*ptr) + (*(ptr+1)); + *pptr += 2; + return len; +} + + +/** + * Reads one character from the input buffer. + * @param pptr pointer to the input buffer - incremented by the number of bytes used & returned + * @return the character read + */ +char readChar(unsigned char** pptr) +{ + char c = **pptr; + (*pptr)++; + return c; +} + + +/** + * Writes one character to an output buffer. + * @param pptr pointer to the output buffer - incremented by the number of bytes used & returned + * @param c the character to write + */ +void writeChar(unsigned char** pptr, char c) +{ + **pptr = c; + (*pptr)++; +} + + +/** + * Writes an integer as 2 bytes to an output buffer. + * @param pptr pointer to the output buffer - incremented by the number of bytes used & returned + * @param anInt the integer to write + */ +void writeInt(unsigned char** pptr, int anInt) +{ + **pptr = (unsigned char)(anInt / 256); + (*pptr)++; + **pptr = (unsigned char)(anInt % 256); + (*pptr)++; +} + + +/** + * Writes a "UTF" string to an output buffer. Converts C string to length-delimited. + * @param pptr pointer to the output buffer - incremented by the number of bytes used & returned + * @param string the C string to write + */ +void writeCString(unsigned char** pptr, const char* string) +{ + int len = strlen(string); + writeInt(pptr, len); + memcpy(*pptr, string, len); + *pptr += len; +} + + +int getLenStringLen(char* ptr) +{ + int len = 256*((unsigned char)(*ptr)) + (unsigned char)(*(ptr+1)); + return len; +} + + +void writeMQTTString(unsigned char** pptr, MQTTString mqttstring) +{ + if (mqttstring.lenstring.len > 0) + { + writeInt(pptr, mqttstring.lenstring.len); + memcpy(*pptr, mqttstring.lenstring.data, mqttstring.lenstring.len); + *pptr += mqttstring.lenstring.len; + } + else if (mqttstring.cstring) + writeCString(pptr, mqttstring.cstring); + else + writeInt(pptr, 0); +} + + +/** + * @param mqttstring the MQTTString structure into which the data is to be read + * @param pptr pointer to the output buffer - incremented by the number of bytes used & returned + * @param enddata pointer to the end of the data: do not read beyond + * @return 1 if successful, 0 if not + */ +int readMQTTLenString(MQTTString* mqttstring, unsigned char** pptr, unsigned char* enddata) +{ + int rc = 0; + + FUNC_ENTRY; + /* the first two bytes are the length of the string */ + if (enddata - (*pptr) > 1) /* enough length to read the integer? */ + { + mqttstring->lenstring.len = readInt(pptr); /* increments pptr to point past length */ + if (&(*pptr)[mqttstring->lenstring.len] <= enddata) + { + mqttstring->lenstring.data = (char*)*pptr; + *pptr += mqttstring->lenstring.len; + rc = 1; + } + } + mqttstring->cstring = NULL; + FUNC_EXIT_RC(rc); + return rc; +} + + +/** + * Return the length of the MQTTstring - C string if there is one, otherwise the length delimited string + * @param mqttstring the string to return the length of + * @return the length of the string + */ +int MQTTstrlen(MQTTString mqttstring) +{ + int rc = 0; + + if (mqttstring.cstring) + rc = strlen(mqttstring.cstring); + else + rc = mqttstring.lenstring.len; + return rc; +} + + +/** + * Compares an MQTTString to a C string + * @param a the MQTTString to compare + * @param bptr the C string to compare + * @return boolean - equal or not + */ +int MQTTPacket_equals(MQTTString* a, char* bptr) +{ + int alen = 0, + blen = 0; + char *aptr; + + if (a->cstring) + { + aptr = a->cstring; + alen = strlen(a->cstring); + } + else + { + aptr = a->lenstring.data; + alen = a->lenstring.len; + } + blen = strlen(bptr); + + return (alen == blen) && (strncmp(aptr, bptr, alen) == 0); +} + + +/** + * Helper function to read packet data from some source into a buffer + * @param buf the buffer into which the packet will be serialized + * @param buflen the length in bytes of the supplied buffer + * @param getfn pointer to a function which will read any number of bytes from the needed source + * @return integer MQTT packet type, or -1 on error + * @note the whole message must fit into the caller's buffer + */ +int MQTTPacket_read(unsigned char* buf, int buflen, int (*getfn)(unsigned char*, int)) +{ + int rc = -1; + MQTTHeader header = {0}; + int len = 0; + int rem_len = 0; + + /* 1. read the header byte. This has the packet type in it */ + if ((*getfn)(buf, 1) != 1) + goto exit; + + len = 1; + /* 2. read the remaining length. This is variable in itself */ + MQTTPacket_decode(getfn, &rem_len); + len += MQTTPacket_encode(buf + 1, rem_len); /* put the original remaining length back into the buffer */ + + /* 3. read the rest of the buffer using a callback to supply the rest of the data */ + if((rem_len + len) > buflen) + goto exit; + if ((*getfn)(buf + len, rem_len) != rem_len) + goto exit; + + header.byte = buf[0]; + rc = header.bits.type; +exit: + return rc; +} + +/** + * Decodes the message length according to the MQTT algorithm, non-blocking + * @param trp pointer to a transport structure holding what is needed to solve getting data from it + * @param value the decoded length returned + * @return integer the number of bytes read from the socket, 0 for call again, or -1 on error + */ +static int MQTTPacket_decodenb(MQTTTransport *trp) +{ + unsigned char c; + int rc = MQTTPACKET_READ_ERROR; + + FUNC_ENTRY; + if(trp->len == 0){ /* initialize on first call */ + trp->multiplier = 1; + trp->rem_len = 0; + } + do { + int frc; + if (++(trp->len) > MAX_NO_OF_REMAINING_LENGTH_BYTES) + goto exit; + if ((frc=(*trp->getfn)(trp->sck, &c, 1)) == -1) + goto exit; + if (frc == 0){ + rc = 0; + goto exit; + } + trp->rem_len += (c & 127) * trp->multiplier; + trp->multiplier *= 128; + } while ((c & 128) != 0); + rc = trp->len; +exit: + FUNC_EXIT_RC(rc); + return rc; +} + +/** + * Helper function to read packet data from some source into a buffer, non-blocking + * @param buf the buffer into which the packet will be serialized + * @param buflen the length in bytes of the supplied buffer + * @param trp pointer to a transport structure holding what is needed to solve getting data from it + * @return integer MQTT packet type, 0 for call again, or -1 on error + * @note the whole message must fit into the caller's buffer + */ +int MQTTPacket_readnb(unsigned char* buf, int buflen, MQTTTransport *trp) +{ + int rc = -1, frc; + MQTTHeader header = {0}; + + switch(trp->state){ + default: + trp->state = 0; + /*FALLTHROUGH*/ + case 0: + /* read the header byte. This has the packet type in it */ + if ((frc=(*trp->getfn)(trp->sck, buf, 1)) == -1) + goto exit; + if (frc == 0) + return 0; + trp->len = 0; + ++trp->state; + /*FALLTHROUGH*/ + /* read the remaining length. This is variable in itself */ + case 1: + if((frc=MQTTPacket_decodenb(trp)) == MQTTPACKET_READ_ERROR) + goto exit; + if(frc == 0) + return 0; + trp->len = 1 + MQTTPacket_encode(buf + 1, trp->rem_len); /* put the original remaining length back into the buffer */ + if((trp->rem_len + trp->len) > buflen) + goto exit; + ++trp->state; + /*FALLTHROUGH*/ + case 2: + /* read the rest of the buffer using a callback to supply the rest of the data */ + if ((frc=(*trp->getfn)(trp->sck, buf + trp->len, trp->rem_len)) == -1) + goto exit; + if (frc == 0) + return 0; + trp->rem_len -= frc; + trp->len += frc; + if(trp->rem_len) + return 0; + + header.byte = buf[0]; + rc = header.bits.type; + break; + } + +exit: + trp->state = 0; + return rc; +} + diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTPacket.h b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTPacket.h new file mode 100644 index 0000000..588966d --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTPacket.h @@ -0,0 +1,133 @@ +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + * Xiang Rong - 442039 Add makefile to Embedded C client + *******************************************************************************/ + +#ifndef MQTTPACKET_H_ +#define MQTTPACKET_H_ + +#if defined(__cplusplus) /* If this is a C++ compiler, use C linkage */ +extern "C" { +#endif + +#if defined(WIN32_DLL) || defined(WIN64_DLL) + #define DLLImport __declspec(dllimport) + #define DLLExport __declspec(dllexport) +#elif defined(LINUX_SO) + #define DLLImport extern + #define DLLExport __attribute__ ((visibility ("default"))) +#else + #define DLLImport + #define DLLExport +#endif + +enum errors +{ + MQTTPACKET_BUFFER_TOO_SHORT = -2, + MQTTPACKET_READ_ERROR = -1, + MQTTPACKET_READ_COMPLETE +}; + +enum msgTypes +{ + CONNECT = 1, CONNACK, PUBLISH, PUBACK, PUBREC, PUBREL, + PUBCOMP, SUBSCRIBE, SUBACK, UNSUBSCRIBE, UNSUBACK, + PINGREQ, PINGRESP, DISCONNECT +}; + +/** + * Bitfields for the MQTT header byte. + */ +typedef union +{ + unsigned char byte; /**< the whole byte */ +#if defined(REVERSED) + struct + { + unsigned int type : 4; /**< message type nibble */ + unsigned int dup : 1; /**< DUP flag bit */ + unsigned int qos : 2; /**< QoS value, 0, 1 or 2 */ + unsigned int retain : 1; /**< retained flag bit */ + } bits; +#else + struct + { + unsigned int retain : 1; /**< retained flag bit */ + unsigned int qos : 2; /**< QoS value, 0, 1 or 2 */ + unsigned int dup : 1; /**< DUP flag bit */ + unsigned int type : 4; /**< message type nibble */ + } bits; +#endif +} MQTTHeader; + +typedef struct +{ + int len; + char* data; +} MQTTLenString; + +typedef struct +{ + char* cstring; + MQTTLenString lenstring; +} MQTTString; + +#define MQTTString_initializer {NULL, {0, NULL}} + +int MQTTstrlen(MQTTString mqttstring); + +#include "MQTTConnect.h" +#include "MQTTPublish.h" +#include "MQTTSubscribe.h" +#include "MQTTUnsubscribe.h" +#include "MQTTFormat.h" + +int MQTTSerialize_ack(unsigned char* buf, int buflen, unsigned char type, unsigned char dup, unsigned short packetid); +int MQTTDeserialize_ack(unsigned char* packettype, unsigned char* dup, unsigned short* packetid, unsigned char* buf, int buflen); + +int MQTTPacket_len(int rem_len); +int MQTTPacket_equals(MQTTString* a, char* b); + +int MQTTPacket_encode(unsigned char* buf, int length); +int MQTTPacket_decode(int (*getcharfn)(unsigned char*, int), int* value); +int MQTTPacket_decodeBuf(unsigned char* buf, int* value); + +int readInt(unsigned char** pptr); +char readChar(unsigned char** pptr); +void writeChar(unsigned char** pptr, char c); +void writeInt(unsigned char** pptr, int anInt); +int readMQTTLenString(MQTTString* mqttstring, unsigned char** pptr, unsigned char* enddata); +void writeCString(unsigned char** pptr, const char* string); +void writeMQTTString(unsigned char** pptr, MQTTString mqttstring); + +DLLExport int MQTTPacket_read(unsigned char* buf, int buflen, int (*getfn)(unsigned char*, int)); + +typedef struct { + int (*getfn)(void *, unsigned char*, int); /* must return -1 for error, 0 for call again, or the number of bytes read */ + void *sck; /* pointer to whatever the system may use to identify the transport */ + int multiplier; + int rem_len; + int len; + char state; +}MQTTTransport; + +int MQTTPacket_readnb(unsigned char* buf, int buflen, MQTTTransport *trp); + +#ifdef __cplusplus /* If this is a C++ compiler, use C linkage */ +} +#endif + + +#endif /* MQTTPACKET_H_ */ diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTPublish.h b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTPublish.h new file mode 100644 index 0000000..ebe479d --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTPublish.h @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + * Xiang Rong - 442039 Add makefile to Embedded C client + *******************************************************************************/ + +#ifndef MQTTPUBLISH_H_ +#define MQTTPUBLISH_H_ + +#if !defined(DLLImport) + #define DLLImport +#endif +#if !defined(DLLExport) + #define DLLExport +#endif + +DLLExport int MQTTSerialize_publish(unsigned char* buf, int buflen, unsigned char dup, int qos, unsigned char retained, unsigned short packetid, + MQTTString topicName, unsigned char* payload, int payloadlen); + +DLLExport int MQTTDeserialize_publish(unsigned char* dup, int* qos, unsigned char* retained, unsigned short* packetid, MQTTString* topicName, + unsigned char** payload, int* payloadlen, unsigned char* buf, int len); + +DLLExport int MQTTSerialize_puback(unsigned char* buf, int buflen, unsigned short packetid); +DLLExport int MQTTSerialize_pubrel(unsigned char* buf, int buflen, unsigned char dup, unsigned short packetid); +DLLExport int MQTTSerialize_pubcomp(unsigned char* buf, int buflen, unsigned short packetid); + +#endif /* MQTTPUBLISH_H_ */ diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTSerializePublish.c b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTSerializePublish.c new file mode 100644 index 0000000..77a58b5 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTSerializePublish.c @@ -0,0 +1,169 @@ +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + * Ian Craggs - fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=453144 + *******************************************************************************/ + +#include "MQTTPacket.h" +#include "StackTrace.h" + +#include + + +/** + * Determines the length of the MQTT publish packet that would be produced using the supplied parameters + * @param qos the MQTT QoS of the publish (packetid is omitted for QoS 0) + * @param topicName the topic name to be used in the publish + * @param payloadlen the length of the payload to be sent + * @return the length of buffer needed to contain the serialized version of the packet + */ +int MQTTSerialize_publishLength(int qos, MQTTString topicName, int payloadlen) +{ + int len = 0; + + len += 2 + MQTTstrlen(topicName) + payloadlen; + if (qos > 0) + len += 2; /* packetid */ + return len; +} + + +/** + * Serializes the supplied publish data into the supplied buffer, ready for sending + * @param buf the buffer into which the packet will be serialized + * @param buflen the length in bytes of the supplied buffer + * @param dup integer - the MQTT dup flag + * @param qos integer - the MQTT QoS value + * @param retained integer - the MQTT retained flag + * @param packetid integer - the MQTT packet identifier + * @param topicName MQTTString - the MQTT topic in the publish + * @param payload byte buffer - the MQTT publish payload + * @param payloadlen integer - the length of the MQTT payload + * @return the length of the serialized data. <= 0 indicates error + */ +int MQTTSerialize_publish(unsigned char* buf, int buflen, unsigned char dup, int qos, unsigned char retained, unsigned short packetid, + MQTTString topicName, unsigned char* payload, int payloadlen) +{ + unsigned char *ptr = buf; + MQTTHeader header = {0}; + int rem_len = 0; + int rc = 0; + + FUNC_ENTRY; + if (MQTTPacket_len(rem_len = MQTTSerialize_publishLength(qos, topicName, payloadlen)) > buflen) + { + rc = MQTTPACKET_BUFFER_TOO_SHORT; + goto exit; + } + + header.bits.type = PUBLISH; + header.bits.dup = dup; + header.bits.qos = qos; + header.bits.retain = retained; + writeChar(&ptr, header.byte); /* write header */ + + ptr += MQTTPacket_encode(ptr, rem_len); /* write remaining length */; + + writeMQTTString(&ptr, topicName); + + if (qos > 0) + writeInt(&ptr, packetid); + + memcpy(ptr, payload, payloadlen); + ptr += payloadlen; + + rc = ptr - buf; + +exit: + FUNC_EXIT_RC(rc); + return rc; +} + + + +/** + * Serializes the ack packet into the supplied buffer. + * @param buf the buffer into which the packet will be serialized + * @param buflen the length in bytes of the supplied buffer + * @param type the MQTT packet type + * @param dup the MQTT dup flag + * @param packetid the MQTT packet identifier + * @return serialized length, or error if 0 + */ +int MQTTSerialize_ack(unsigned char* buf, int buflen, unsigned char packettype, unsigned char dup, unsigned short packetid) +{ + MQTTHeader header = {0}; + int rc = 0; + unsigned char *ptr = buf; + + FUNC_ENTRY; + if (buflen < 4) + { + rc = MQTTPACKET_BUFFER_TOO_SHORT; + goto exit; + } + header.bits.type = packettype; + header.bits.dup = dup; + header.bits.qos = (packettype == PUBREL) ? 1 : 0; + writeChar(&ptr, header.byte); /* write header */ + + ptr += MQTTPacket_encode(ptr, 2); /* write remaining length */ + writeInt(&ptr, packetid); + rc = ptr - buf; +exit: + FUNC_EXIT_RC(rc); + return rc; +} + + +/** + * Serializes a puback packet into the supplied buffer. + * @param buf the buffer into which the packet will be serialized + * @param buflen the length in bytes of the supplied buffer + * @param packetid integer - the MQTT packet identifier + * @return serialized length, or error if 0 + */ +int MQTTSerialize_puback(unsigned char* buf, int buflen, unsigned short packetid) +{ + return MQTTSerialize_ack(buf, buflen, PUBACK, 0, packetid); +} + + +/** + * Serializes a pubrel packet into the supplied buffer. + * @param buf the buffer into which the packet will be serialized + * @param buflen the length in bytes of the supplied buffer + * @param dup integer - the MQTT dup flag + * @param packetid integer - the MQTT packet identifier + * @return serialized length, or error if 0 + */ +int MQTTSerialize_pubrel(unsigned char* buf, int buflen, unsigned char dup, unsigned short packetid) +{ + return MQTTSerialize_ack(buf, buflen, PUBREL, dup, packetid); +} + + +/** + * Serializes a pubrel packet into the supplied buffer. + * @param buf the buffer into which the packet will be serialized + * @param buflen the length in bytes of the supplied buffer + * @param packetid integer - the MQTT packet identifier + * @return serialized length, or error if 0 + */ +int MQTTSerialize_pubcomp(unsigned char* buf, int buflen, unsigned short packetid) +{ + return MQTTSerialize_ack(buf, buflen, PUBCOMP, 0, packetid); +} + + diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTSubscribe.h b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTSubscribe.h new file mode 100644 index 0000000..a31fd70 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTSubscribe.h @@ -0,0 +1,39 @@ +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + * Xiang Rong - 442039 Add makefile to Embedded C client + *******************************************************************************/ + +#ifndef MQTTSUBSCRIBE_H_ +#define MQTTSUBSCRIBE_H_ + +#if !defined(DLLImport) + #define DLLImport +#endif +#if !defined(DLLExport) + #define DLLExport +#endif + +DLLExport int MQTTSerialize_subscribe(unsigned char* buf, int buflen, unsigned char dup, unsigned short packetid, + int count, MQTTString topicFilters[], char requestedQoSs[]); + +DLLExport int MQTTDeserialize_subscribe(unsigned char* dup, unsigned short* packetid, + int maxcount, int* count, MQTTString topicFilters[], int requestedQoSs[], unsigned char* buf, int len); + +DLLExport int MQTTSerialize_suback(unsigned char* buf, int buflen, unsigned short packetid, int count, int* grantedQoSs); + +DLLExport int MQTTDeserialize_suback(unsigned short* packetid, int maxcount, int* count, int grantedQoSs[], unsigned char* buf, int len); + + +#endif /* MQTTSUBSCRIBE_H_ */ diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTSubscribeClient.c b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTSubscribeClient.c new file mode 100644 index 0000000..1a02255 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTSubscribeClient.c @@ -0,0 +1,137 @@ +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + *******************************************************************************/ + +#include "MQTTPacket.h" +#include "StackTrace.h" + +#include + +/** + * Determines the length of the MQTT subscribe packet that would be produced using the supplied parameters + * @param count the number of topic filter strings in topicFilters + * @param topicFilters the array of topic filter strings to be used in the publish + * @return the length of buffer needed to contain the serialized version of the packet + */ +int MQTTSerialize_subscribeLength(int count, MQTTString topicFilters[]) +{ + int i; + int len = 2; /* packetid */ + + for (i = 0; i < count; ++i) + len += 2 + MQTTstrlen(topicFilters[i]) + 1; /* length + topic + req_qos */ + return len; +} + + +/** + * Serializes the supplied subscribe data into the supplied buffer, ready for sending + * @param buf the buffer into which the packet will be serialized + * @param buflen the length in bytes of the supplied bufferr + * @param dup integer - the MQTT dup flag + * @param packetid integer - the MQTT packet identifier + * @param count - number of members in the topicFilters and reqQos arrays + * @param topicFilters - array of topic filter names + * @param requestedQoSs - array of requested QoS + * @return the length of the serialized data. <= 0 indicates error + */ +int MQTTSerialize_subscribe(unsigned char* buf, int buflen, unsigned char dup, unsigned short packetid, int count, + MQTTString topicFilters[], char requestedQoSs[]) +{ + unsigned char *ptr = buf; + MQTTHeader header = {0}; + int rem_len = 0; + int rc = 0; + int i = 0; + + FUNC_ENTRY; + if (MQTTPacket_len(rem_len = MQTTSerialize_subscribeLength(count, topicFilters)) > buflen) + { + rc = MQTTPACKET_BUFFER_TOO_SHORT; + goto exit; + } + + header.byte = 0; + header.bits.type = SUBSCRIBE; + header.bits.dup = dup; + header.bits.qos = 1; + writeChar(&ptr, header.byte); /* write header */ + + ptr += MQTTPacket_encode(ptr, rem_len); /* write remaining length */; + + writeInt(&ptr, packetid); + + for (i = 0; i < count; ++i) + { + writeMQTTString(&ptr, topicFilters[i]); + writeChar(&ptr, requestedQoSs[i]); + } + + rc = ptr - buf; +exit: + FUNC_EXIT_RC(rc); + return rc; +} + + + +/** + * Deserializes the supplied (wire) buffer into suback data + * @param packetid returned integer - the MQTT packet identifier + * @param maxcount - the maximum number of members allowed in the grantedQoSs array + * @param count returned integer - number of members in the grantedQoSs array + * @param grantedQoSs returned array of integers - the granted qualities of service + * @param buf the raw buffer data, of the correct length determined by the remaining length field + * @param buflen the length in bytes of the data in the supplied buffer + * @return error code. 1 is success, 0 is failure + */ +int MQTTDeserialize_suback(unsigned short* packetid, int maxcount, int* count, int grantedQoSs[], unsigned char* buf, int buflen) +{ + MQTTHeader header = {0}; + unsigned char* curdata = buf; + unsigned char* enddata = NULL; + int rc = 0; + int mylen; + + FUNC_ENTRY; + header.byte = readChar(&curdata); + if (header.bits.type != SUBACK) + goto exit; + + curdata += (rc = MQTTPacket_decodeBuf(curdata, &mylen)); /* read remaining length */ + enddata = curdata + mylen; + if (enddata - curdata < 2) + goto exit; + + *packetid = readInt(&curdata); + + *count = 0; + while (curdata < enddata) + { + if (*count > maxcount) + { + rc = -1; + goto exit; + } + grantedQoSs[(*count)++] = readChar(&curdata); + } + + rc = 1; +exit: + FUNC_EXIT_RC(rc); + return rc; +} + + diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTSubscribeServer.c b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTSubscribeServer.c new file mode 100644 index 0000000..5579645 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTSubscribeServer.c @@ -0,0 +1,112 @@ +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + *******************************************************************************/ + +#include "MQTTPacket.h" +#include "StackTrace.h" + +#include + + +/** + * Deserializes the supplied (wire) buffer into subscribe data + * @param dup integer returned - the MQTT dup flag + * @param packetid integer returned - the MQTT packet identifier + * @param maxcount - the maximum number of members allowed in the topicFilters and requestedQoSs arrays + * @param count - number of members in the topicFilters and requestedQoSs arrays + * @param topicFilters - array of topic filter names + * @param requestedQoSs - array of requested QoS + * @param buf the raw buffer data, of the correct length determined by the remaining length field + * @param buflen the length in bytes of the data in the supplied buffer + * @return the length of the serialized data. <= 0 indicates error + */ +int MQTTDeserialize_subscribe(unsigned char* dup, unsigned short* packetid, int maxcount, int* count, MQTTString topicFilters[], + int requestedQoSs[], unsigned char* buf, int buflen) +{ + MQTTHeader header = {0}; + unsigned char* curdata = buf; + unsigned char* enddata = NULL; + int rc = -1; + int mylen = 0; + + FUNC_ENTRY; + header.byte = readChar(&curdata); + if (header.bits.type != SUBSCRIBE) + goto exit; + *dup = header.bits.dup; + + curdata += (rc = MQTTPacket_decodeBuf(curdata, &mylen)); /* read remaining length */ + enddata = curdata + mylen; + + *packetid = readInt(&curdata); + + *count = 0; + while (curdata < enddata) + { + if (!readMQTTLenString(&topicFilters[*count], &curdata, enddata)) + goto exit; + if (curdata >= enddata) /* do we have enough data to read the req_qos version byte? */ + goto exit; + requestedQoSs[*count] = readChar(&curdata); + (*count)++; + } + + rc = 1; +exit: + FUNC_EXIT_RC(rc); + return rc; +} + + +/** + * Serializes the supplied suback data into the supplied buffer, ready for sending + * @param buf the buffer into which the packet will be serialized + * @param buflen the length in bytes of the supplied buffer + * @param packetid integer - the MQTT packet identifier + * @param count - number of members in the grantedQoSs array + * @param grantedQoSs - array of granted QoS + * @return the length of the serialized data. <= 0 indicates error + */ +int MQTTSerialize_suback(unsigned char* buf, int buflen, unsigned short packetid, int count, int* grantedQoSs) +{ + MQTTHeader header = {0}; + int rc = -1; + unsigned char *ptr = buf; + int i; + + FUNC_ENTRY; + if (buflen < 2 + count) + { + rc = MQTTPACKET_BUFFER_TOO_SHORT; + goto exit; + } + header.byte = 0; + header.bits.type = SUBACK; + writeChar(&ptr, header.byte); /* write header */ + + ptr += MQTTPacket_encode(ptr, 2 + count); /* write remaining length */ + + writeInt(&ptr, packetid); + + for (i = 0; i < count; ++i) + writeChar(&ptr, grantedQoSs[i]); + + rc = ptr - buf; +exit: + FUNC_EXIT_RC(rc); + return rc; +} + + diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTUnsubscribe.h b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTUnsubscribe.h new file mode 100644 index 0000000..355ca9a --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTUnsubscribe.h @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + * Xiang Rong - 442039 Add makefile to Embedded C client + *******************************************************************************/ + +#ifndef MQTTUNSUBSCRIBE_H_ +#define MQTTUNSUBSCRIBE_H_ + +#if !defined(DLLImport) + #define DLLImport +#endif +#if !defined(DLLExport) + #define DLLExport +#endif + +DLLExport int MQTTSerialize_unsubscribe(unsigned char* buf, int buflen, unsigned char dup, unsigned short packetid, + int count, MQTTString topicFilters[]); + +DLLExport int MQTTDeserialize_unsubscribe(unsigned char* dup, unsigned short* packetid, int max_count, int* count, MQTTString topicFilters[], + unsigned char* buf, int len); + +DLLExport int MQTTSerialize_unsuback(unsigned char* buf, int buflen, unsigned short packetid); + +DLLExport int MQTTDeserialize_unsuback(unsigned short* packetid, unsigned char* buf, int len); + +#endif /* MQTTUNSUBSCRIBE_H_ */ diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTUnsubscribeClient.c b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTUnsubscribeClient.c new file mode 100644 index 0000000..e7ec530 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTUnsubscribeClient.c @@ -0,0 +1,106 @@ +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + *******************************************************************************/ + +#include "MQTTPacket.h" +#include "StackTrace.h" + +#include + +/** + * Determines the length of the MQTT unsubscribe packet that would be produced using the supplied parameters + * @param count the number of topic filter strings in topicFilters + * @param topicFilters the array of topic filter strings to be used in the publish + * @return the length of buffer needed to contain the serialized version of the packet + */ +int MQTTSerialize_unsubscribeLength(int count, MQTTString topicFilters[]) +{ + int i; + int len = 2; /* packetid */ + + for (i = 0; i < count; ++i) + len += 2 + MQTTstrlen(topicFilters[i]); /* length + topic*/ + return len; +} + + +/** + * Serializes the supplied unsubscribe data into the supplied buffer, ready for sending + * @param buf the raw buffer data, of the correct length determined by the remaining length field + * @param buflen the length in bytes of the data in the supplied buffer + * @param dup integer - the MQTT dup flag + * @param packetid integer - the MQTT packet identifier + * @param count - number of members in the topicFilters array + * @param topicFilters - array of topic filter names + * @return the length of the serialized data. <= 0 indicates error + */ +int MQTTSerialize_unsubscribe(unsigned char* buf, int buflen, unsigned char dup, unsigned short packetid, + int count, MQTTString topicFilters[]) +{ + unsigned char *ptr = buf; + MQTTHeader header = {0}; + int rem_len = 0; + int rc = -1; + int i = 0; + + FUNC_ENTRY; + if (MQTTPacket_len(rem_len = MQTTSerialize_unsubscribeLength(count, topicFilters)) > buflen) + { + rc = MQTTPACKET_BUFFER_TOO_SHORT; + goto exit; + } + + header.byte = 0; + header.bits.type = UNSUBSCRIBE; + header.bits.dup = dup; + header.bits.qos = 1; + writeChar(&ptr, header.byte); /* write header */ + + ptr += MQTTPacket_encode(ptr, rem_len); /* write remaining length */; + + writeInt(&ptr, packetid); + + for (i = 0; i < count; ++i) + writeMQTTString(&ptr, topicFilters[i]); + + rc = ptr - buf; +exit: + FUNC_EXIT_RC(rc); + return rc; +} + + +/** + * Deserializes the supplied (wire) buffer into unsuback data + * @param packetid returned integer - the MQTT packet identifier + * @param buf the raw buffer data, of the correct length determined by the remaining length field + * @param buflen the length in bytes of the data in the supplied buffer + * @return error code. 1 is success, 0 is failure + */ +int MQTTDeserialize_unsuback(unsigned short* packetid, unsigned char* buf, int buflen) +{ + unsigned char type = 0; + unsigned char dup = 0; + int rc = 0; + + FUNC_ENTRY; + rc = MQTTDeserialize_ack(&type, &dup, packetid, buf, buflen); + if (type == UNSUBACK) + rc = 1; + FUNC_EXIT_RC(rc); + return rc; +} + + diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTUnsubscribeServer.c b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTUnsubscribeServer.c new file mode 100644 index 0000000..42b6102 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/MQTTUnsubscribeServer.c @@ -0,0 +1,102 @@ +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + *******************************************************************************/ + +#include "MQTTPacket.h" +#include "StackTrace.h" + +#include + + +/** + * Deserializes the supplied (wire) buffer into unsubscribe data + * @param dup integer returned - the MQTT dup flag + * @param packetid integer returned - the MQTT packet identifier + * @param maxcount - the maximum number of members allowed in the topicFilters and requestedQoSs arrays + * @param count - number of members in the topicFilters and requestedQoSs arrays + * @param topicFilters - array of topic filter names + * @param buf the raw buffer data, of the correct length determined by the remaining length field + * @param buflen the length in bytes of the data in the supplied buffer + * @return the length of the serialized data. <= 0 indicates error + */ +int MQTTDeserialize_unsubscribe(unsigned char* dup, unsigned short* packetid, int maxcount, int* count, MQTTString topicFilters[], + unsigned char* buf, int len) +{ + MQTTHeader header = {0}; + unsigned char* curdata = buf; + unsigned char* enddata = NULL; + int rc = 0; + int mylen = 0; + + FUNC_ENTRY; + header.byte = readChar(&curdata); + if (header.bits.type != UNSUBSCRIBE) + goto exit; + *dup = header.bits.dup; + + curdata += (rc = MQTTPacket_decodeBuf(curdata, &mylen)); /* read remaining length */ + enddata = curdata + mylen; + + *packetid = readInt(&curdata); + + *count = 0; + while (curdata < enddata) + { + if (!readMQTTLenString(&topicFilters[*count], &curdata, enddata)) + goto exit; + (*count)++; + } + + rc = 1; +exit: + FUNC_EXIT_RC(rc); + return rc; +} + + +/** + * Serializes the supplied unsuback data into the supplied buffer, ready for sending + * @param buf the buffer into which the packet will be serialized + * @param buflen the length in bytes of the supplied buffer + * @param packetid integer - the MQTT packet identifier + * @return the length of the serialized data. <= 0 indicates error + */ +int MQTTSerialize_unsuback(unsigned char* buf, int buflen, unsigned short packetid) +{ + MQTTHeader header = {0}; + int rc = 0; + unsigned char *ptr = buf; + + FUNC_ENTRY; + if (buflen < 2) + { + rc = MQTTPACKET_BUFFER_TOO_SHORT; + goto exit; + } + header.byte = 0; + header.bits.type = UNSUBACK; + writeChar(&ptr, header.byte); /* write header */ + + ptr += MQTTPacket_encode(ptr, 2); /* write remaining length */ + + writeInt(&ptr, packetid); + + rc = ptr - buf; +exit: + FUNC_EXIT_RC(rc); + return rc; +} + + diff --git a/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/StackTrace.h b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/StackTrace.h new file mode 100644 index 0000000..2808a0d --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/MQTTPacket/src/StackTrace.h @@ -0,0 +1,78 @@ +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + * Ian Craggs - fix for bug #434081 + *******************************************************************************/ + +#ifndef STACKTRACE_H_ +#define STACKTRACE_H_ + +#include +#define NOSTACKTRACE 1 + +#if defined(NOSTACKTRACE) +#define FUNC_ENTRY +#define FUNC_ENTRY_NOLOG +#define FUNC_ENTRY_MED +#define FUNC_ENTRY_MAX +#define FUNC_EXIT +#define FUNC_EXIT_NOLOG +#define FUNC_EXIT_MED +#define FUNC_EXIT_MAX +#define FUNC_EXIT_RC(x) +#define FUNC_EXIT_MED_RC(x) +#define FUNC_EXIT_MAX_RC(x) + +#else + +#if defined(WIN32) +#define inline __inline +#define FUNC_ENTRY StackTrace_entry(__FUNCTION__, __LINE__, TRACE_MINIMUM) +#define FUNC_ENTRY_NOLOG StackTrace_entry(__FUNCTION__, __LINE__, -1) +#define FUNC_ENTRY_MED StackTrace_entry(__FUNCTION__, __LINE__, TRACE_MEDIUM) +#define FUNC_ENTRY_MAX StackTrace_entry(__FUNCTION__, __LINE__, TRACE_MAXIMUM) +#define FUNC_EXIT StackTrace_exit(__FUNCTION__, __LINE__, NULL, TRACE_MINIMUM) +#define FUNC_EXIT_NOLOG StackTrace_exit(__FUNCTION__, __LINE__, -1) +#define FUNC_EXIT_MED StackTrace_exit(__FUNCTION__, __LINE__, NULL, TRACE_MEDIUM) +#define FUNC_EXIT_MAX StackTrace_exit(__FUNCTION__, __LINE__, NULL, TRACE_MAXIMUM) +#define FUNC_EXIT_RC(x) StackTrace_exit(__FUNCTION__, __LINE__, &x, TRACE_MINIMUM) +#define FUNC_EXIT_MED_RC(x) StackTrace_exit(__FUNCTION__, __LINE__, &x, TRACE_MEDIUM) +#define FUNC_EXIT_MAX_RC(x) StackTrace_exit(__FUNCTION__, __LINE__, &x, TRACE_MAXIMUM) +#else +#define FUNC_ENTRY StackTrace_entry(__func__, __LINE__, TRACE_MINIMUM) +#define FUNC_ENTRY_NOLOG StackTrace_entry(__func__, __LINE__, -1) +#define FUNC_ENTRY_MED StackTrace_entry(__func__, __LINE__, TRACE_MEDIUM) +#define FUNC_ENTRY_MAX StackTrace_entry(__func__, __LINE__, TRACE_MAXIMUM) +#define FUNC_EXIT StackTrace_exit(__func__, __LINE__, NULL, TRACE_MINIMUM) +#define FUNC_EXIT_NOLOG StackTrace_exit(__func__, __LINE__, NULL, -1) +#define FUNC_EXIT_MED StackTrace_exit(__func__, __LINE__, NULL, TRACE_MEDIUM) +#define FUNC_EXIT_MAX StackTrace_exit(__func__, __LINE__, NULL, TRACE_MAXIMUM) +#define FUNC_EXIT_RC(x) StackTrace_exit(__func__, __LINE__, &x, TRACE_MINIMUM) +#define FUNC_EXIT_MED_RC(x) StackTrace_exit(__func__, __LINE__, &x, TRACE_MEDIUM) +#define FUNC_EXIT_MAX_RC(x) StackTrace_exit(__func__, __LINE__, &x, TRACE_MAXIMUM) + +void StackTrace_entry(const char* name, int line, int trace); +void StackTrace_exit(const char* name, int line, void* return_value, int trace); + +void StackTrace_printStack(FILE* dest); +char* StackTrace_get(unsigned long); + +#endif + +#endif + + + + +#endif /* STACKTRACE_H_ */ diff --git a/User/ioLibrary_Driver/Internet/MQTT/mqtt_interface.c b/User/ioLibrary_Driver/Internet/MQTT/mqtt_interface.c new file mode 100644 index 0000000..3753543 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/mqtt_interface.c @@ -0,0 +1,182 @@ +//***************************************************************************** +//! \file mqtt_interface.c +//! \brief Paho MQTT to WIZnet Chip interface implement file. +//! \details The process of porting an interface to use paho MQTT. +//! \version 1.0.0 +//! \date 2016/12/06 +//! \par Revision history +//! <2016/12/06> 1st Release +//! +//! \author Peter Bang & Justin Kim +//! \copyright +//! +//! Copyright (c) 2016, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** + +#include "mqtt_interface.h" +#include "wizchip_conf.h" +#include "socket.h" + +unsigned long MilliTimer; + +/* + * @brief MQTT MilliTimer handler + * @note MUST BE register to your system 1m Tick timer handler. + */ +void MilliTimer_Handler(void) { + MilliTimer++; +} + +/* + * @brief Timer Initialize + * @param timer : pointer to a Timer structure + * that contains the configuration information for the Timer. + */ +void TimerInit(Timer* timer) { + timer->end_time = 0; +} + +/* + * @brief expired Timer + * @param timer : pointer to a Timer structure + * that contains the configuration information for the Timer. + */ +char TimerIsExpired(Timer* timer) { + long left = timer->end_time - MilliTimer; + return (left < 0); +} + +/* + * @brief Countdown millisecond Timer + * @param timer : pointer to a Timer structure + * that contains the configuration information for the Timer. + * timeout : setting timeout millisecond. + */ +void TimerCountdownMS(Timer* timer, unsigned int timeout) { + timer->end_time = MilliTimer + timeout; +} + +/* + * @brief Countdown second Timer + * @param timer : pointer to a Timer structure + * that contains the configuration information for the Timer. + * timeout : setting timeout millisecond. + */ +void TimerCountdown(Timer* timer, unsigned int timeout) { + timer->end_time = MilliTimer + (timeout * 1000); +} + +/* + * @brief left millisecond Timer + * @param timer : pointer to a Timer structure + * that contains the configuration information for the Timer. + */ +int TimerLeftMS(Timer* timer) { + long left = timer->end_time - MilliTimer; + return (left < 0) ? 0 : left; +} + +/* + * @brief New network setting + * @param n : pointer to a Network structure + * that contains the configuration information for the Network. + * sn : socket number where x can be (0..7). + * @retval None + */ +void NewNetwork(Network* n, int sn) { + n->my_socket = sn; + n->mqttread = w5x00_read; + n->mqttwrite = w5x00_write; + n->disconnect = w5x00_disconnect; +} + +/* + * @brief read function + * @param n : pointer to a Network structure + * that contains the configuration information for the Network. + * buffer : pointer to a read buffer. + * len : buffer length. + * @retval received data length or SOCKERR code + */ +int w5x00_read(Network* n, unsigned char* buffer, int len, long time) +{ + + if((getSn_SR(n->my_socket) == SOCK_ESTABLISHED) && (getSn_RX_RSR(n->my_socket)>0)) + return recv(n->my_socket, buffer, len); + + return SOCK_ERROR; +} + +/* + * @brief write function + * @param n : pointer to a Network structure + * that contains the configuration information for the Network. + * buffer : pointer to a read buffer. + * len : buffer length. + * @retval length of data sent or SOCKERR code + */ +int w5x00_write(Network* n, unsigned char* buffer, int len, long time) +{ + if(getSn_SR(n->my_socket) == SOCK_ESTABLISHED) + return send(n->my_socket, buffer, len); + + return SOCK_ERROR; +} + +/* + * @brief disconnect function + * @param n : pointer to a Network structure + * that contains the configuration information for the Network. + */ +void w5x00_disconnect(Network* n) +{ + disconnect(n->my_socket); +} + +/* + * @brief connect network function + * @param n : pointer to a Network structure + * that contains the configuration information for the Network. + * ip : server iP. + * port : server port. + * @retval SOCKOK code or SOCKERR code + */ +int ConnectNetwork(Network* n, uint8_t* ip, uint16_t port) +{ + uint16_t myport = 12345; + + if(socket(n->my_socket, Sn_MR_TCP, myport, 0) != n->my_socket) + return SOCK_ERROR; + + if(connect(n->my_socket, ip, port) != SOCK_OK) + return SOCK_ERROR; + + return SOCK_OK; +} diff --git a/User/ioLibrary_Driver/Internet/MQTT/mqtt_interface.h b/User/ioLibrary_Driver/Internet/MQTT/mqtt_interface.h new file mode 100644 index 0000000..a7d2b30 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/MQTT/mqtt_interface.h @@ -0,0 +1,271 @@ +//***************************************************************************** +//! \file mqtt_interface.h +//! \brief Paho MQTT to WIZnet Chip interface Header file. +//! \details The process of porting an interface to use paho MQTT. +//! \version 1.0.0 +//! \date 2016/12/06 +//! \par Revision history +//! <2016/12/06> 1st Release +//! +//! \author Peter Bang & Justin Kim +//! \copyright +//! +//! Copyright (c) 2016, WIZnet Co., LTD. +//! All rights reserved. +//! +//! Redistribution and use in source and binary forms, with or without +//! modification, are permitted provided that the following conditions +//! are met: +//! +//! * Redistributions of source code must retain the above copyright +//! notice, this list of conditions and the following disclaimer. +//! * Redistributions in binary form must reproduce the above copyright +//! notice, this list of conditions and the following disclaimer in the +//! documentation and/or other materials provided with the distribution. +//! * Neither the name of the nor the names of its +//! contributors may be used to endorse or promote products derived +//! from this software without specific prior written permission. +//! +//! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +//! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +//! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +//! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +//! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +//! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +//! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +//! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +//! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +//! THE POSSIBILITY OF SUCH DAMAGE. +// +//***************************************************************************** + +/* MQTT subscribe Example.... W5500 + STM32F103(IoT board) +//Include: Board configuration +#include "IoTEVB.h" + +//Include: MCU peripheral Library +#include "stm32f10x_rcc.h" +#include "stm32f10x.h" + +//Include: W5500 iolibrary +#include "w5500.h" +#include "wizchip_conf.h" +#include "misc.h" + +//Include: Internet iolibrary +#include "MQTTClient.h" + +//Include: MCU Specific W5500 driver +#include "W5500HardwareDriver.h" + +//Include: Standard IO Library +#include + +//Socket number defines +#define TCP_SOCKET 0 + +//Receive Buffer Size define +#define BUFFER_SIZE 2048 + +//Global variables +unsigned char targetIP[4] = {}; // mqtt server IP +unsigned int targetPort = 1883; // mqtt server port +uint8_t mac_address[6] = {}; +wiz_NetInfo gWIZNETINFO = { .mac = {}, //user MAC + .ip = {}, //user IP + .sn = {}, + .gw = {}, + .dns = {}, + .dhcp = NETINFO_STATIC}; + +unsigned char tempBuffer[BUFFER_SIZE] = {}; + +struct opts_struct +{ + char* clientid; + int nodelimiter; + char* delimiter; + enum QoS qos; + char* username; + char* password; + char* host; + int port; + int showtopics; +} opts ={ (char*)"stdout-subscriber", 0, (char*)"\n", QOS0, NULL, NULL, targetIP, targetPort, 0 }; + + +// @brief messageArrived callback function +void messageArrived(MessageData* md) +{ + unsigned char testbuffer[100]; + MQTTMessage* message = md->message; + + if (opts.showtopics) + { + memcpy(testbuffer,(char*)message->payload,(int)message->payloadlen); + *(testbuffer + (int)message->payloadlen + 1) = "\n"; + printf("%s\r\n",testbuffer); + } + + if (opts.nodelimiter) + printf("%.*s", (int)message->payloadlen, (char*)message->payload); + else + printf("%.*s%s", (int)message->payloadlen, (char*)message->payload, opts.delimiter); +} + + +// @brief 1 millisecond Tick Timer setting +void NVIC_configuration(void) +{ + NVIC_InitTypeDef NVIC_InitStructure; + SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); + SysTick_Config(72000); + NVIC_InitStructure.NVIC_IRQChannel = SysTick_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // Highest priority + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init(&NVIC_InitStructure); +} + +// @brief 1 millisecond Tick Timer Handler setting +void SysTick_Handler(void) +{ + MilliTimer_Handler(); +} + +int main(void) +{ + led_ctrl led1,led2; + int i; + int rc = 0; + unsigned char buf[100]; + //Usart initialization for Debug. + USART1Initialze(); + printf("USART initialized.\n\r"); + + I2C1Initialize(); + printf("I2C initialized.\n\r"); + + MACEEP_Read(mac_address,0xfa,6); + + printf("Mac address\n\r"); + for(i = 0 ; i < 6 ; i++) + { + printf("%02x ",mac_address[i]); + } + printf("\n\r"); + + //LED initialization. + led_initialize(); + led1 = led2 = ON; + + led2Ctrl(led2); + led1Ctrl(led1); + + //W5500 initialization. + W5500HardwareInitilize(); + printf("W5500 hardware interface initialized.\n\r"); + + W5500Initialze(); + printf("W5500 IC initialized.\n\r"); + + //Set network informations + wizchip_setnetinfo(&gWIZNETINFO); + + setSHAR(mac_address); + + print_network_information(); + + Network n; + MQTTClient c; + + NewNetwork(&n, TCP_SOCKET); + ConnectNetwork(&n, targetIP, targetPort); + MQTTClientInit(&c,&n,1000,buf,100,tempBuffer,2048); + + MQTTPacket_connectData data = MQTTPacket_connectData_initializer; + data.willFlag = 0; + data.MQTTVersion = 3; + data.clientID.cstring = opts.clientid; + data.username.cstring = opts.username; + data.password.cstring = opts.password; + + data.keepAliveInterval = 60; + data.cleansession = 1; + + rc = MQTTConnect(&c, &data); + printf("Connected %d\r\n", rc); + opts.showtopics = 1; + + printf("Subscribing to %s\r\n", "hello/wiznet"); + rc = MQTTSubscribe(&c, "hello/wiznet", opts.qos, messageArrived); + printf("Subscribed %d\r\n", rc); + + while(1) + { + MQTTYield(&c, data.keepAliveInterval); + } +} +*/ + +#ifndef __MQTT_INTERFACE_H_ +#define __MQTT_INTERFACE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* + * @brief MQTT MilliTimer handler + * @note MUST BE register to your system 1m Tick timer handler + */ +void MilliTimer_Handler(void); + +/* + * @brief Timer structure + */ +typedef struct Timer Timer; +struct Timer { + unsigned long systick_period; + unsigned long end_time; +}; + +/* + * @brief Network structure + */ +typedef struct Network Network; +struct Network +{ + int my_socket; + int (*mqttread) (Network*, unsigned char*, int, long); + int (*mqttwrite) (Network*, unsigned char*, int, long); + void (*disconnect) (Network*); +}; + +/* + * @brief Timer function + */ +void TimerInit(Timer*); +char TimerIsExpired(Timer*); +void TimerCountdownMS(Timer*, unsigned int); +void TimerCountdown(Timer*, unsigned int); +int TimerLeftMS(Timer*); + +/* + * @brief Network interface porting + */ +int w5x00_read(Network*, unsigned char*, int, long); +int w5x00_write(Network*, unsigned char*, int, long); +void w5x00_disconnect(Network*); +void NewNetwork(Network* n, int sn); +int ConnectNetwork(Network* n, uint8_t* ip, uint16_t port); + +#ifdef __cplusplus +} +#endif + +#endif //__MQTT_INTERFACE_H_ diff --git a/User/ioLibrary_Driver/Internet/SNMP/snmp.c b/User/ioLibrary_Driver/Internet/SNMP/snmp.c new file mode 100644 index 0000000..b705097 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/SNMP/snmp.c @@ -0,0 +1,927 @@ +#include +#include +#include +#include +#include + +#include "socket.h" +#include "snmp.h" +#include "snmp_custom.h" + +/********************************************************************************************/ +/* SNMP : Functions declaration */ +/********************************************************************************************/ +// SNMP Parsing functions +int32_t findEntry(uint8_t *oid, int32_t len); +int32_t getOID(int32_t id, uint8_t *oid, uint8_t *len); +int32_t getValue( uint8_t *vptr, int32_t vlen); +int32_t getEntry(int32_t id, uint8_t *dataType, void *ptr, int32_t *len); +int32_t setEntry(int32_t id, void *val, int32_t vlen, uint8_t dataType, int32_t index); +int32_t makeTrapVariableBindings(dataEntryType *oid_data, void *ptr, uint32_t *len); + +int32_t parseLength(const uint8_t *msg, int32_t *len); +int32_t parseTLV(const uint8_t *msg, int32_t index, tlvStructType *tlv); +void insertRespLen(int32_t reqStart, int32_t respStart, int32_t size); +int32_t parseVarBind(int32_t reqType, int32_t index); +int32_t parseSequence(int32_t reqType, int32_t index); +int32_t parseSequenceOf(int32_t reqType); +int32_t parseRequest(); +int32_t parseCommunity(); +int32_t parseVersion(); +int32_t parseSNMPMessage(); + +// Debugging function +#ifdef _SNMP_DEBUG_ +void dumpCode(uint8_t* header, uint8_t* tail, uint8_t *buff, int32_t len); +#endif + +// Utils +void ipToByteArray(int8_t *ip, uint8_t *pDes); + +/********************************************************************************************/ +/* SNMP : Variable declaration */ +/********************************************************************************************/ +// SNMP message structures +struct messageStruct request_msg; +struct messageStruct response_msg; + +// SNMP Time counter +static time_t startTime = 0; +volatile uint32_t snmp_tick_10ms = 0; //volatile uint32_t snmp_tick_1ms = 0; + +// SNMP Sockets +static uint8_t SOCK_SNMP_AGENT; +static uint8_t SOCK_SNMP_TRAP; + +uint8_t packet_trap[MAX_TRAPMSG_LEN] = {0,}; +uint8_t errorStatus, errorIndex; + + +/********************************************************************************************/ +/* SNMP : Time handler */ +/********************************************************************************************/ +void currentUptime(void *ptr, uint8_t *len) +{ + time_t curTime = getSNMPTimeTick(); + + //*(uint32_t *)ptr = (uint32_t)(curTime - startTime) / 10; // calculation for 1ms tick + *(uint32_t *)ptr = (uint32_t)(curTime - startTime); // calculation for 10ms tick + *len = 4; +} + +void SNMP_time_handler(void) +{ + //snmp_tick_1ms++; + snmp_tick_10ms++; +} + +uint32_t getSNMPTimeTick(void) +{ + //return snmp_tick_1ms; + return snmp_tick_10ms; +} + + +/********************************************************************************************/ +/* SNMP : Library Part */ +/********************************************************************************************/ +/** + * @addtogroup snmp_module + * @{ + */ + +/** + * Initialize SNMP Daemon. + * This should be called just one time at first time + * + * @param none + * @return none + */ +void snmpd_init(uint8_t * managerIP, uint8_t * agentIP, uint8_t sn_agent, uint8_t sn_trap) +{ +#ifdef _SNMP_DEBUG_ + printf("\r\n - SNMP : Start SNMP Agent Daemon\r\n"); +#endif + SOCK_SNMP_AGENT = sn_agent; + SOCK_SNMP_TRAP = sn_trap; + + if((SOCK_SNMP_AGENT > _WIZCHIP_SOCK_NUM_) || (SOCK_SNMP_TRAP > _WIZCHIP_SOCK_NUM_)) return; + + startTime = getSNMPTimeTick(); // Start time (unit: 10ms) + initTable(); // Settings for OID entry values + + initial_Trap(managerIP, agentIP); + +/* + // Example Codes for SNMP Trap + { + dataEntryType enterprise_oid = {0x0a, {0x2b, 0x06, 0x01, 0x04, 0x01, 0x81, 0x9b, 0x19, 0x01, 0x00}, + SNMPDTYPE_OBJ_ID, 0x0a, {"\x2b\x06\x01\x04\x01\x81\x9b\x19\x10\x00"}, NULL, NULL}; + + dataEntryType trap_oid1 = {8, {0x2b, 6, 1, 4, 1, 0, 11, 0}, SNMPDTYPE_OCTET_STRING, 30, {""}, NULL, NULL}; + dataEntryType trap_oid2 = {8, {0x2b, 6, 1, 4, 1, 0, 12, 0}, SNMPDTYPE_INTEGER, 4, {""}, NULL, NULL}; + + strcpy((char *)trap_oid1.u.octetstring, "Alert!!!"); // String added + trap_oid2.u.intval = 123456; // Integer value added + + // Generic Trap: warmStart + snmp_sendTrap((void *)"192.168.0.214", (void *)"192.168.0.112", (void *)"public", enterprise_oid, SNMPTRAP_WARMSTART, 0, 0); + + // Enterprise-Specific Trap + snmp_sendTrap((void *)"192.168.0.214", (void *)"192.168.0.112", (void *)"public", enterprise_oid, 6, 0, 2, &trap_oid1, &trap_oid2); + } +*/ +} + + +/** + * SNMP Process Handler. + * UDP Socket and SNMP Agent transaction handling. + * + * @param none + * @return none + */ + +int32_t snmpd_run(void) +{ + int32_t ret; + int32_t len = 0; + + uint8_t svr_addr[6]; + uint16_t svr_port; + + if(SOCK_SNMP_AGENT > _WIZCHIP_SOCK_NUM_) return -99; + + switch(getSn_SR(SOCK_SNMP_AGENT)) + { + case SOCK_UDP : + if ( (len = getSn_RX_RSR(SOCK_SNMP_AGENT)) > 0) + { + request_msg.len= recvfrom(SOCK_SNMP_AGENT, request_msg.buffer, len, svr_addr, &svr_port); + } + else + { + request_msg.len = 0; + } + + if (request_msg.len > 0) + { +#ifdef _SNMP_DEBUG_ + dumpCode((void *)"\r\n[Request]\r\n", (void *)"\r\n", request_msg.buffer, request_msg.len); +#endif + // Initialize + request_msg.index = 0; + response_msg.index = 0; + errorStatus = errorIndex = 0; + memset(response_msg.buffer, 0x00, MAX_SNMPMSG_LEN); + + // Received message parsing and send response process + if (parseSNMPMessage() != -1) + { + sendto(SOCK_SNMP_AGENT, response_msg.buffer, response_msg.index, svr_addr, svr_port); + } + +#ifdef _SNMP_DEBUG_ + dumpCode((void *)"\r\n[Response]\r\n", (void *)"\r\n", response_msg.buffer, response_msg.index); +#endif + } + break; + + case SOCK_CLOSED : + if((ret = socket(SOCK_SNMP_AGENT, Sn_MR_UDP, PORT_SNMP_AGENT, 0x00)) != SOCK_SNMP_AGENT) + return ret; +#ifdef _SNMP_DEBUG_ + printf(" - [%d] UDP Socket for SNMP Agent, port [%d]\r\n", SOCK_SNMP_AGENT, PORT_SNMP_AGENT); +#endif + break; + + default : + break; + } + + + return 1; +} + + +int32_t findEntry(uint8_t *oid, int32_t len) +{ + int32_t i; + + for (i = 0 ; i < maxData ; i++) + { + if (len == snmpData[i].oidlen) + { + if (!memcmp(snmpData[i].oid, oid, len)) return(i); + } + } + + return OID_NOT_FOUND; +} + + +int32_t getOID(int32_t id, uint8_t *oid, uint8_t *len) +{ + int32_t j; + + if (!((id >= 0) && (id < maxData))) return INVALID_ENTRY_ID; + + *len = snmpData[id].oidlen; + + for (j = 0 ; j < *len ; j++) + { + oid[j] = snmpData[id].oid[j]; + } + + return SNMP_SUCCESS; +} + + +int32_t getValue( uint8_t *vptr, int32_t vlen) +{ + int32_t index = 0; + int32_t value = 0; + + while (index < vlen) + { + if (index != 0) value <<= 8; + value |= vptr[index++]; + } + + return value; +} + + +int32_t getEntry(int32_t id, uint8_t *dataType, void *ptr, int32_t *len) +{ + uint8_t * ptr_8; + int32_t value; + + uint8_t * string; + int32_t j; + + if (!((id >= 0) && (id < maxData))) return INVALID_ENTRY_ID; + + *dataType = snmpData[id].dataType; + + switch(*dataType) + { + case SNMPDTYPE_OCTET_STRING : + case SNMPDTYPE_OBJ_ID : + { + string = ptr; + + if (snmpData[id].getfunction != NULL) + { + snmpData[id].getfunction( (void *)&snmpData[id].u.octetstring, &snmpData[id].dataLen ); + } + + if ( (*dataType)==SNMPDTYPE_OCTET_STRING ) + { + snmpData[id].dataLen = (uint8_t)strlen((char const*)&snmpData[id].u.octetstring); + } + + *len = snmpData[id].dataLen; + for (j = 0 ; j < *len ; j++) + { + string[j] = snmpData[id].u.octetstring[j]; + } + } + break; + + case SNMPDTYPE_INTEGER : + case SNMPDTYPE_TIME_TICKS : + case SNMPDTYPE_COUNTER : + case SNMPDTYPE_GAUGE : + { + if (snmpData[id].getfunction != NULL) + { + snmpData[id].getfunction( (void *)&snmpData[id].u.intval, &snmpData[id].dataLen ); + } + + if(snmpData[id].dataLen) *len = snmpData[id].dataLen; + else *len = sizeof(uint32_t); + + /* + // Original code (IAR, STM32) + // This code is not working in NXP+LPCXpresso (32-bit pointer operation error) + value = (int32_t *)ptr; + *value = HTONL(snmpData[id].u.intval); + */ + + ptr_8 = ptr; + //value = HTONL(snmpData[id].u.intval); // Endian convert when processing 32bit pointer operation + value = snmpData[id].u.intval; + + for (j = 0 ; j < *len ; j++) + { + ptr_8[j] = (uint8_t)((value >> ((*len-j-1)*8))); + } + } + break; + + default : + return INVALID_DATA_TYPE; + } + + return SNMP_SUCCESS; +} + + +int32_t setEntry(int32_t id, void *val, int32_t vlen, uint8_t dataType, int32_t index) +{ + + int32_t retStatus=OID_NOT_FOUND; + int32_t j; + + if (snmpData[id].dataType != dataType) + { + errorStatus = BAD_VALUE; + errorIndex = index; + return INVALID_DATA_TYPE; + } + + switch(snmpData[id].dataType) + { + case SNMPDTYPE_OCTET_STRING : + case SNMPDTYPE_OBJ_ID : + { + uint8_t *string = val; + for (j = 0 ; j < vlen ; j++) + { + snmpData[id].u.octetstring[j] = string[j]; + } + snmpData[id].dataLen = vlen; + } + retStatus = SNMP_SUCCESS; + break; + + case SNMPDTYPE_INTEGER : + case SNMPDTYPE_TIME_TICKS : + case SNMPDTYPE_COUNTER : + case SNMPDTYPE_GAUGE : + { + snmpData[id].u.intval = getValue( (uint8_t *)val, vlen); + snmpData[id].dataLen = vlen; + + if (snmpData[id].setfunction != NULL) + { + snmpData[id].setfunction(snmpData[id].u.intval); + } + + } + retStatus = SNMP_SUCCESS; + break; + + default : + retStatus = INVALID_DATA_TYPE; + break; + + } + + return retStatus; +} + + +int32_t parseLength(const uint8_t *msg, int32_t *len) +{ + int32_t i=1; + + if (msg[0] & 0x80) + { + int32_t tlen = (msg[0] & 0x7f) - 1; + *len = msg[i++]; + + while (tlen--) + { + *len <<= 8; + *len |= msg[i++]; + } + } + else + { + *len = msg[0]; + } + + return i; +} + + +int32_t parseTLV(const uint8_t *msg, int32_t index, tlvStructType *tlv) +{ + int32_t Llen = 0; + + tlv->start = index; + + Llen = parseLength((const uint8_t *)&msg[index+1], &tlv->len ); + + tlv->vstart = index + Llen + 1; + + switch (msg[index]) + { + case SNMPDTYPE_SEQUENCE: + case GET_REQUEST: + case GET_NEXT_REQUEST: + case SET_REQUEST: + tlv->nstart = tlv->vstart; + break; + default: + tlv->nstart = tlv->vstart + tlv->len; + break; + } + + return 0; +} + + +void insertRespLen(int32_t reqStart, int32_t respStart, int32_t size) +{ + int32_t indexStart, lenLength; + uint32_t mask = 0xff; + int32_t shift = 0; + + if (request_msg.buffer[reqStart+1] & 0x80) + { + lenLength = request_msg.buffer[reqStart+1] & 0x7f; + indexStart = respStart+2; + + while (lenLength--) + { + response_msg.buffer[indexStart+lenLength] = + (uint8_t)((size & mask) >> shift); + shift+=8; + mask <<= shift; + } + } + else + { + response_msg.buffer[respStart+1] = (uint8_t)(size & 0xff); + } +} + +int32_t parseVarBind(int32_t reqType, int32_t index) +{ + int32_t seglen = 0, id; + tlvStructType name, value; + int32_t size = 0; + + //extern const int32_t maxData; + + parseTLV(request_msg.buffer, request_msg.index, &name); + + if ( request_msg.buffer[name.start] != SNMPDTYPE_OBJ_ID ) return -1; + + id = findEntry(&request_msg.buffer[name.vstart], name.len); + + if ((reqType == GET_REQUEST) || (reqType == SET_REQUEST)) + { + seglen = name.nstart - name.start; + COPY_SEGMENT(name); + size = seglen; + } + else if (reqType == GET_NEXT_REQUEST) + { + response_msg.buffer[response_msg.index] = request_msg.buffer[name.start]; + + if (++id >= maxData) + { + id = OID_NOT_FOUND; + seglen = name.nstart - name.start; + COPY_SEGMENT(name); + size = seglen; + } + else + { + request_msg.index += name.nstart - name.start; + + getOID(id, &response_msg.buffer[response_msg.index+2], &response_msg.buffer[response_msg.index+1]); + + seglen = response_msg.buffer[response_msg.index+1]+2; + response_msg.index += seglen ; + size = seglen; + } + } + + parseTLV(request_msg.buffer, request_msg.index, &value); + + if (id != OID_NOT_FOUND) + { + uint8_t dataType; + int32_t len; + + if ((reqType == GET_REQUEST) || (reqType == GET_NEXT_REQUEST)) + { + getEntry(id, &dataType, &response_msg.buffer[response_msg.index+2], &len); + + response_msg.buffer[response_msg.index] = dataType; + response_msg.buffer[response_msg.index+1] = len; + seglen = (2 + len); + response_msg.index += seglen; + + request_msg.index += (value.nstart - value.start); + + } + else if (reqType == SET_REQUEST) + { + setEntry(id, &request_msg.buffer[value.vstart], value.len, request_msg.buffer[value.start], index); + seglen = value.nstart - value.start; + COPY_SEGMENT(value); + } + } + else + { + seglen = value.nstart - value.start; + COPY_SEGMENT(value); + + errorIndex = index; + errorStatus = NO_SUCH_NAME; + } + + size += seglen; + + return size; +} + + +int32_t parseSequence(int32_t reqType, int32_t index) +{ + int32_t seglen; + tlvStructType seq; + int32_t size = 0, respLoc; + + parseTLV(request_msg.buffer, request_msg.index, &seq); + + if ( request_msg.buffer[seq.start] != SNMPDTYPE_SEQUENCE ) return -1; + + seglen = seq.vstart - seq.start; + respLoc = response_msg.index; + COPY_SEGMENT(seq); + + size = parseVarBind( reqType, index ); + insertRespLen(seq.start, respLoc, size); + size += seglen; + + return size; +} + + +int32_t parseSequenceOf(int32_t reqType) +{ + int32_t seglen; + tlvStructType seqof; + int32_t size = 0, respLoc; + int32_t index = 0; + + parseTLV(request_msg.buffer, request_msg.index, &seqof); + + if ( request_msg.buffer[seqof.start] != SNMPDTYPE_SEQUENCE_OF ) return -1; + + seglen = seqof.vstart - seqof.start; + respLoc = response_msg.index; + COPY_SEGMENT(seqof); + + while (request_msg.index < request_msg.len) + { + size += parseSequence( reqType, index++ ); + } + + insertRespLen(seqof.start, respLoc, size); + + return size; +} + + +int32_t parseRequest() +{ + int32_t ret, seglen; + tlvStructType snmpreq, requestid, errStatus, errIndex; + int32_t size = 0, respLoc, reqType; + + parseTLV(request_msg.buffer, request_msg.index, &snmpreq); + + reqType = request_msg.buffer[snmpreq.start]; + + if ( !VALID_REQUEST(reqType) ) return -1; + + seglen = snmpreq.vstart - snmpreq.start; + respLoc = snmpreq.start; + size += seglen; + COPY_SEGMENT(snmpreq); + + response_msg.buffer[snmpreq.start] = GET_RESPONSE; + + parseTLV(request_msg.buffer, request_msg.index, &requestid); + seglen = requestid.nstart - requestid.start; + size += seglen; + COPY_SEGMENT(requestid); + + parseTLV(request_msg.buffer, request_msg.index, &errStatus); + seglen = errStatus.nstart - errStatus.start; + size += seglen; + COPY_SEGMENT(errStatus); + + parseTLV(request_msg.buffer, request_msg.index, &errIndex); + seglen = errIndex.nstart - errIndex.start; + size += seglen; + COPY_SEGMENT(errIndex); + + ret = parseSequenceOf(reqType); + if (ret == -1) return -1; + else size += ret; + + insertRespLen(snmpreq.start, respLoc, size); + + if (errorStatus) + { + response_msg.buffer[errStatus.vstart] = errorStatus; + response_msg.buffer[errIndex.vstart] = errorIndex + 1; + } + + return size; +} + + +int32_t parseCommunity() +{ + int32_t seglen; + tlvStructType community; + int32_t size=0; + + parseTLV(request_msg.buffer, request_msg.index, &community); + + if (!((request_msg.buffer[community.start] == SNMPDTYPE_OCTET_STRING) && (community.len == COMMUNITY_SIZE))) + { + return -1; + } + + if (!memcmp(&request_msg.buffer[community.vstart], (int8_t *)COMMUNITY, COMMUNITY_SIZE)) + { + seglen = community.nstart - community.start; + size += seglen; + COPY_SEGMENT(community); + + size += parseRequest(); + } + else + { + return -1; + } + + return size; +} + + +int32_t parseVersion() +{ + int32_t size = 0, seglen; + tlvStructType tlv; + + size = parseTLV(request_msg.buffer, request_msg.index, &tlv); + + if (!((request_msg.buffer[tlv.start] == SNMPDTYPE_INTEGER) && (request_msg.buffer[tlv.vstart] == SNMP_V1))) + return -1; + + seglen = tlv.nstart - tlv.start; + size += seglen; + COPY_SEGMENT(tlv); + size = parseCommunity(); + + if (size == -1) return size; + else return (size + seglen); +} + + +int32_t parseSNMPMessage() +{ + int32_t size = 0, seglen, respLoc; + tlvStructType tlv; + + parseTLV(request_msg.buffer, request_msg.index, &tlv); + + if (request_msg.buffer[tlv.start] != SNMPDTYPE_SEQUENCE_OF) return -1; + + seglen = tlv.vstart - tlv.start; + respLoc = tlv.start; + COPY_SEGMENT(tlv); + + size = parseVersion(); + + if (size == -1) return -1; + else size += seglen; + + insertRespLen(tlv.start, respLoc, size); + + return 0; +} + +void ipToByteArray(int8_t *ip, uint8_t *pDes) +{ + uint32_t i, ip1=0, ip2=0, ip3=0, ip4=0; + int8_t buff[32]; + uint32_t len = (uint32_t)strlen((char const*)ip); + strcpy((char *)buff, (char const*)ip); + + for (i=0; ioidlen; + + for (j = 0 ; j < oid_data->oidlen ; j++) + { + ((uint8_t*)ptr)[j+4] = oid_data->oid[j]; + } + + switch(oid_data->dataType) + { + case SNMPDTYPE_OCTET_STRING : + case SNMPDTYPE_OBJ_ID : + { + uint8_t *string = &((uint8_t*)ptr)[4+oid_data->oidlen+2]; + + if ( oid_data->dataType==SNMPDTYPE_OCTET_STRING ) + { + oid_data->dataLen = (uint8_t)strlen((char const*)&oid_data->u.octetstring); + } + for (j = 0 ; j < oid_data->dataLen ; j++) + { + string[j] = oid_data->u.octetstring[j]; + } + + ((uint8_t*)ptr)[4+oid_data->oidlen] = oid_data->dataType; + ((uint8_t*)ptr)[4+oid_data->oidlen+1] = oid_data->dataLen; + ((uint8_t*)ptr)[1] = 2 + oid_data->oidlen + 2 + oid_data->dataLen; + *len = 4 + oid_data->oidlen + 2 + oid_data->dataLen; + } + break; + + case SNMPDTYPE_INTEGER : + case SNMPDTYPE_TIME_TICKS : + case SNMPDTYPE_COUNTER : + case SNMPDTYPE_GAUGE : + { + oid_data->dataLen = 4; + + *(int32_t*)(&((uint8_t*)ptr)[4+oid_data->oidlen+2]) = HTONL(oid_data->u.intval); + + ((uint8_t*)ptr)[4+oid_data->oidlen] = oid_data->dataType; + ((uint8_t*)ptr)[4+oid_data->oidlen+1] = oid_data->dataLen; + ((uint8_t*)ptr)[1] = 2 + oid_data->oidlen + 2 + oid_data->dataLen; + *len = 4 + oid_data->oidlen + 2 + oid_data->dataLen; + } + break; + + default : + return INVALID_DATA_TYPE; + } + + return SNMP_SUCCESS; +} + + +int32_t snmp_sendTrap(uint8_t * managerIP, uint8_t * agentIP, int8_t* community, dataEntryType enterprise_oid, uint32_t genericTrap, uint32_t specificTrap, uint32_t va_count, ...) +{ + uint32_t i; + int32_t packet_index = 0; + int32_t packet_buff1 = 0; + int32_t packet_buff2 = 0; + int32_t packet_buff3 = 0; + + va_list ap; + uint32_t length_var_bindings = 0; + uint32_t length_buff = 0; + + //SNMP Trap packet generation + packet_trap[packet_index++] = 0x30; // ASN.1 Header + + packet_trap[packet_index] = 0xff; // pdu_length, temp + packet_buff1 = packet_index++; + + packet_trap[packet_index++] = 0x02; // Version + packet_trap[packet_index++] = 0x01; + packet_trap[packet_index++] = 0x00; + + packet_trap[packet_index++] = 0x04; // Community + packet_trap[packet_index++] = (uint8_t)strlen((char const*)community); + memcpy(&(packet_trap[packet_index]), community, strlen((char const*)community)); + + packet_index = packet_index + (uint8_t)strlen((char const*)community); + + packet_trap[packet_index++] = 0xa4; // trap + packet_trap[packet_index] = 0xff; // length, temp + packet_buff2 = packet_index++; + + packet_trap[packet_index++] = 0x06; // enterprise_oid + packet_trap[packet_index++] = enterprise_oid.oidlen; + for (i=0; i> 24) & 0x000000ff) | \ + (((x) >> 8) & 0x0000ff00) | \ + (((x) << 8) & 0x00ff0000) | \ + (((x) << 24) & 0xff000000)) +#endif + +typedef struct { + uint8_t oidlen; + uint8_t oid[MAX_OID]; + uint8_t dataType; + uint8_t dataLen; + union { + uint8_t octetstring[MAX_STRING]; + uint32_t intval; + } u; + void (*getfunction)(void *, uint8_t *); + void (*setfunction)(int32_t); +} dataEntryType; + +struct messageStruct { + uint8_t buffer[MAX_SNMPMSG_LEN]; + int32_t len; + int32_t index; +}; + +typedef struct { + int32_t start; /* Absolute Index of the TLV */ + int32_t len; /* The L value of the TLV */ + int32_t vstart; /* Absolute Index of this TLV's Value */ + int32_t nstart; /* Absolute Index of the next TLV */ +} tlvStructType; + + +/********************************************************************************************/ +/* SNMP : Functions */ +/********************************************************************************************/ +// SNMP Main functions +void snmpd_init(uint8_t * managerIP, uint8_t * agentIP, uint8_t sn_agent, uint8_t sn_trap); +int32_t snmpd_run(void); +int32_t snmp_sendTrap(uint8_t * managerIP, uint8_t * agentIP, int8_t* community, dataEntryType enterprise_oid, uint32_t genericTrap, uint32_t specificTrap, uint32_t va_count, ...); + +// SNMP Time handler functions +void SNMP_time_handler(void); +uint32_t getSNMPTimeTick(void); +void currentUptime(void *ptr, uint8_t *len); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/User/ioLibrary_Driver/Internet/SNMP/snmp_custom.c b/User/ioLibrary_Driver/Internet/SNMP/snmp_custom.c new file mode 100644 index 0000000..68590c7 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/SNMP/snmp_custom.c @@ -0,0 +1,147 @@ + +/******************************************************************************************** + * SNMP : User Customization Part + * - OID Registration + * - User defined functions for OID related + * + Integer value, String + * + I/O control / Chip registers + * + Network Informations + * + Etc. + * + *********************************************************************************************/ +#include "snmp_custom.h" + +#ifdef _USE_WIZNET_W5500_EVB_ + #include "board.h" +#endif + +dataEntryType snmpData[] = +{ + // System MIB + // SysDescr Entry + {8, {0x2b, 6, 1, 2, 1, 1, 1, 0}, + SNMPDTYPE_OCTET_STRING, 30, {"WIZnet Embedded SNMP Agent"}, + NULL, NULL}, + + // SysObjectID Entry + {8, {0x2b, 6, 1, 2, 1, 1, 2, 0}, + SNMPDTYPE_OBJ_ID, 8, {"\x2b\x06\x01\x02\x01\x01\x02\x00"}, + NULL, NULL}, + + // SysUptime Entry + {8, {0x2b, 6, 1, 2, 1, 1, 3, 0}, + SNMPDTYPE_TIME_TICKS, 0, {""}, + currentUptime, NULL}, + + // sysContact Entry + {8, {0x2b, 6, 1, 2, 1, 1, 4, 0}, + SNMPDTYPE_OCTET_STRING, 30, {"http://www.wizwiki.net/forum"}, + NULL, NULL}, + + // sysName Entry + {8, {0x2b, 6, 1, 2, 1, 1, 5, 0}, + SNMPDTYPE_OCTET_STRING, 30, {"http://www.wiznet.co.kr"}, + NULL, NULL}, + + // Location Entry + {8, {0x2b, 6, 1, 2, 1, 1, 6, 0}, + SNMPDTYPE_OCTET_STRING, 30, {"4F Humax Village"}, + NULL, NULL}, + + // SysServices + {8, {0x2b, 6, 1, 2, 1, 1, 7, 0}, + SNMPDTYPE_INTEGER, 4, {""}, + NULL, NULL}, + +#ifdef _USE_WIZNET_W5500_EVB_ + // Get the WIZnet W5500-EVB LED Status + {8, {0x2b, 6, 1, 4, 1, 6, 1, 0}, + SNMPDTYPE_OCTET_STRING, 40, {""}, + get_LEDStatus_all, NULL}, + + // Set the LED_R (RGB LED) + {8, {0x2b, 6, 1, 4, 1, 6, 1, 1}, + SNMPDTYPE_INTEGER, 4, {""}, + NULL, set_LEDStatus_R}, + + // Set the LED_G (RGB LED) + {8, {0x2b, 6, 1, 4, 1, 6, 1, 2}, + SNMPDTYPE_INTEGER, 4, {""}, + NULL, set_LEDStatus_G}, + + // Set the LED_B (RGB LED) + {8, {0x2b, 6, 1, 4, 1, 6, 1, 3}, + SNMPDTYPE_INTEGER, 4, {""}, + NULL, set_LEDStatus_B}, +#endif + + // OID Test #1 (long-length OID example, 19865) + {0x0a, {0x2b, 0x06, 0x01, 0x04, 0x01, 0x81, 0x9b, 0x19, 0x01, 0x00}, + SNMPDTYPE_OCTET_STRING, 30, {"long-length OID Test #1"}, + NULL, NULL}, + + // OID Test #2 (long-length OID example, 22210) + {0x0a, {0x2b, 0x06, 0x01, 0x04, 0x01, 0x81, 0xad, 0x42, 0x01, 0x00}, + SNMPDTYPE_OCTET_STRING, 35, {"long-length OID Test #2"}, + NULL, NULL}, + + // OID Test #2: SysObjectID Entry + {0x0a, {0x2b, 0x06, 0x01, 0x04, 0x01, 0x81, 0xad, 0x42, 0x02, 0x00}, + SNMPDTYPE_OBJ_ID, 0x0a, {"\x2b\x06\x01\x04\x01\x81\xad\x42\x02\x00"}, + NULL, NULL}, +}; + +const int32_t maxData = (sizeof(snmpData) / sizeof(dataEntryType)); + +void initTable() +{ + // Example integer value for [OID 1.3.6.1.2.1.1.7.0] + snmpData[6].u.intval = -5; + +} + + +// W5500-EVB: LED Control /////////////////////////////////////////////////////////////////////////// +#ifdef _USE_WIZNET_W5500_EVB_ +void get_LEDStatus_all(void *ptr, uint8_t *len) +{ + uint8_t led_status[3] = {0, }; + + led_status[LED_R] = (uint8_t)Board_LED_Test(LED_R); + led_status[LED_G] = (uint8_t)Board_LED_Test(LED_G); + led_status[LED_B] = (uint8_t)Board_LED_Test(LED_B); + + *len = sprintf((char *)ptr, "LED R [%s] / G [%s] / B [%s]", led_status[LED_R]?"On":"Off", led_status[LED_G]?"On":"Off", led_status[LED_B]?"On":"Off"); +} + +void set_LEDStatus_R(int32_t val) +{ + if(val == 0) Board_LED_Set(LED_R, false); + else Board_LED_Set(LED_R, true); +} + +void set_LEDStatus_G(int32_t val) +{ + if(val == 0) Board_LED_Set(LED_G, false); + else Board_LED_Set(LED_G, true); +} + +void set_LEDStatus_B(int32_t val) +{ + if(val == 0) Board_LED_Set(LED_B, false); + else Board_LED_Set(LED_B, true); +} +#endif +///////////////////////////////////////////////////////////////////////////////////////////////////// + +void initial_Trap(uint8_t * managerIP, uint8_t * agentIP) +{ + // SNMP Trap: WarmStart(1) Trap + { + dataEntryType enterprise_oid = {0x0a, {0x2b, 0x06, 0x01, 0x04, 0x01, 0x81, 0x9b, 0x19, 0x01, 0x00}, + SNMPDTYPE_OBJ_ID, 0x0a, {"\x2b\x06\x01\x04\x01\x81\x9b\x19\x10\x00"}, NULL, NULL}; + // Generic Trap: warmStart COMMUNITY + snmp_sendTrap(managerIP, agentIP, (void *)COMMUNITY, enterprise_oid, SNMPTRAP_WARMSTART, 0, 0); + } + +} diff --git a/User/ioLibrary_Driver/Internet/SNMP/snmp_custom.h b/User/ioLibrary_Driver/Internet/SNMP/snmp_custom.h new file mode 100644 index 0000000..c4afa30 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/SNMP/snmp_custom.h @@ -0,0 +1,41 @@ +#ifndef _SNMP_CUSTOM_H_ +#define _SNMP_CUSTOM_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include + +#include "snmp.h" + +extern dataEntryType snmpData[]; +extern const int32_t maxData; + +// Define for using W5500-EVB: H/W Dependency (e.g., LEDs...) +//#define _USE_WIZNET_W5500_EVB_ + +#define COMMUNITY "public\0" +#define COMMUNITY_SIZE (strlen(COMMUNITY)) + +/* Predefined function: Response value control */ +void initTable(); + +/* User defined functions: LED control examples */ +#ifdef _USE_WIZNET_W5500_EVB_ + void get_LEDStatus_all(void *ptr, uint8_t *len); + void set_LEDStatus_R(int32_t val); + void set_LEDStatus_G(int32_t val); + void set_LEDStatus_B(int32_t val); +#endif +/* SNMP Trap: warmStart(1) */ +void initial_Trap(uint8_t * managerIP, uint8_t * agentIP); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/User/ioLibrary_Driver/Internet/SNMP/tools/OID_Converter/Readme.txt b/User/ioLibrary_Driver/Internet/SNMP/tools/OID_Converter/Readme.txt new file mode 100644 index 0000000..4476586 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/SNMP/tools/OID_Converter/Readme.txt @@ -0,0 +1,45 @@ +============================================================ + +============================================================ + ++ Example OID for convert + 1.3.6.1.4.1.19865.1.0 + +(1) Convert Usage + CMD>>oid 1.3.6.1.4.1.19865.1.0 + => 06 0A 2B 06 01 04 01 81 9B 19 01 00 + + >> TLV(tag-length-value) Example OID + (06) Tag + (0A) Length + [2B] 1(iso).3(identified-organization) (in ASN.1 BER encoding, i.e. 1*40+3 = 0x2b) + [06] 6(dod) + [01] 1(internet) + [04] 4(private) + [01] 1(enterprise) + [81 9B 19] 19865(Vendor-Specific) + ... + +(2) Add the entry to OID table in source code (DataEntryType, put the converted value to array) + {0x0a, {0x2b, 0x06, 0x01, 0x04, 0x01, 0x81, 0x9b, 0x19, 0x01, 0x00}, + SNMPDTYPE_OCTET_STRING, 30, {"long-length OID Test"}, + NULL, NULL}, + +============================================================ +OID Converter: OID encoder/decoder +v1.3 - Matthias Gaertner 1999/2001 - Freeware +============================================================ + +The OID converter is a handy little tool to convert ASN.1 OIDs from readable dotted decimal notation to binary hexadecimal Distinguished Encoding Rules (DER) representation and vice versa. +If you're into x.509 certificates, this may be useful to you, too. + +Usage: + OID [-c|-C] [-o] {-i|1.2.3.4} + converts dotted form to ASCII HEX DER output. + OID -x [-o] {-i|hex-digits} + decodes ASCII HEX DER and gives dotted form. + +If you need more information, please refer to Matthias Gaertner's page, +http://www.rtner.de/software/oid.html + +=============================================================================================== \ No newline at end of file diff --git a/User/ioLibrary_Driver/Internet/SNMP/tools/net-snmp-5.7(win32-bin)/snmptrapd.conf b/User/ioLibrary_Driver/Internet/SNMP/tools/net-snmp-5.7(win32-bin)/snmptrapd.conf new file mode 100644 index 0000000..494e4ec --- /dev/null +++ b/User/ioLibrary_Driver/Internet/SNMP/tools/net-snmp-5.7(win32-bin)/snmptrapd.conf @@ -0,0 +1,33 @@ +# +# net-snmp (or ucd-snmp) persistent data file. +# +############################################################################ +# STOP STOP STOP STOP STOP STOP STOP STOP STOP +# +# **** DO NOT EDIT THIS FILE **** +# +# STOP STOP STOP STOP STOP STOP STOP STOP STOP +############################################################################ +# +# DO NOT STORE CONFIGURATION ENTRIES HERE. +# Please save normal configuration tokens for snmptrapd in SNMPCONFPATH/snmptrapd.conf. +# Only "createUser" tokens should be placed here by snmptrapd administrators. +# (Did I mention: do not edit this file?) +# + + +authCommunity log,execute,net public + + + + + + + + + + + + +engineBoots 1 +oldEngineID 0x80001f88803d6f00001ba7934e00000000 diff --git a/User/ioLibrary_Driver/Internet/SNTP/sntp.c b/User/ioLibrary_Driver/Internet/SNTP/sntp.c new file mode 100644 index 0000000..5b9c463 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/SNTP/sntp.c @@ -0,0 +1,450 @@ +/* + * sntp.c + * + * Created on: 2014. 12. 15. + * Author: Administrator + */ + + +#include + +#include "sntp.h" +#include "socket.h" + +ntpformat NTPformat; +datetime Nowdatetime; +uint8_t ntpmessage[48]; +uint8_t *data_buf; +uint8_t NTP_SOCKET; +uint8_t time_zone; +uint16_t ntp_retry_cnt=0; //counting the ntp retry number + +/* +00)UTC-12:00 Baker Island, Howland Island (both uninhabited) +01) UTC-11:00 American Samoa, Samoa +02) UTC-10:00 (Summer)French Polynesia (most), United States (Aleutian Islands, Hawaii) +03) UTC-09:30 Marquesas Islands +04) UTC-09:00 Gambier Islands;(Summer)United States (most of Alaska) +05) UTC-08:00 (Summer)Canada (most of British Columbia), Mexico (Baja California) +06) UTC-08:00 United States (California, most of Nevada, most of Oregon, Washington (state)) +07) UTC-07:00 Mexico (Sonora), United States (Arizona); (Summer)Canada (Alberta) +08) UTC-07:00 Mexico (Chihuahua), United States (Colorado) +09) UTC-06:00 Costa Rica, El Salvador, Ecuador (Galapagos Islands), Guatemala, Honduras +10) UTC-06:00 Mexico (most), Nicaragua;(Summer)Canada (Manitoba, Saskatchewan), United States (Illinois, most of Texas) +11) UTC-05:00 Colombia, Cuba, Ecuador (continental), Haiti, Jamaica, Panama, Peru +12) UTC-05:00 (Summer)Canada (most of Ontario, most of Quebec) +13) UTC-05:00 United States (most of Florida, Georgia, Massachusetts, most of Michigan, New York, North Carolina, Ohio, Washington D.C.) +14) UTC-04:30 Venezuela +15) UTC-04:00 Bolivia, Brazil (Amazonas), Chile (continental), Dominican Republic, Canada (Nova Scotia), Paraguay, +16) UTC-04:00 Puerto Rico, Trinidad and Tobago +17) UTC-03:30 Canada (Newfoundland) +18) UTC-03:00 Argentina; (Summer) Brazil (Brasilia, Rio de Janeiro, Sao Paulo), most of Greenland, Uruguay +19) UTC-02:00 Brazil (Fernando de Noronha), South Georgia and the South Sandwich Islands +20) UTC-01:00 Portugal (Azores), Cape Verde +21) UTC±00:00 Cote d'Ivoire, Faroe Islands, Ghana, Iceland, Senegal; (Summer) Ireland, Portugal (continental and Madeira) +22) UTC±00:00 Spain (Canary Islands), Morocco, United Kingdom +23) UTC+01:00 Angola, Cameroon, Nigeria, Tunisia; (Summer)Albania, Algeria, Austria, Belgium, Bosnia and Herzegovina, +24) UTC+01:00 Spain (continental), Croatia, Czech Republic, Denmark, Germany, Hungary, Italy, Kinshasa, Kosovo, +25) UTC+01:00 Macedonia, France (metropolitan), the Netherlands, Norway, Poland, Serbia, Slovakia, Slovenia, Sweden, Switzerland +26) UTC+02:00 Libya, Egypt, Malawi, Mozambique, South Africa, Zambia, Zimbabwe, (Summer)Bulgaria, Cyprus, Estonia, +27) UTC+02:00 Finland, Greece, Israel, Jordan, Latvia, Lebanon, Lithuania, Moldova, Palestine, Romania, Syria, Turkey, Ukraine +28) UTC+03:00 Belarus, Djibouti, Eritrea, Ethiopia, Iraq, Kenya, Madagascar, Russia (Kaliningrad Oblast), Saudi Arabia, +29) UTC+03:00 South Sudan, Sudan, Somalia, South Sudan, Tanzania, Uganda, Yemen +30) UTC+03:30 (Summer)Iran +31) UTC+04:00 Armenia, Azerbaijan, Georgia, Mauritius, Oman, Russia (European), Seychelles, United Arab Emirates +32) UTC+04:30 Afghanistan +33) UTC+05:00 Kazakhstan (West), Maldives, Pakistan, Uzbekistan +34) UTC+05:30 India, Sri Lanka +35) UTC+05:45 Nepal +36) UTC+06:00 Kazakhstan (most), Bangladesh, Russia (Ural: Sverdlovsk Oblast, Chelyabinsk Oblast) +37) UTC+06:30 Cocos Islands, Myanmar +38) UTC+07:00 Jakarta, Russia (Novosibirsk Oblast), Thailand, Vietnam +39) UTC+08:00 China, Hong Kong, Russia (Krasnoyarsk Krai), Malaysia, Philippines, Singapore, Taiwan, most of Mongolia, Western Australia +40) UTC+09:00 Korea, East Timor, Russia (Irkutsk Oblast), Japan +41) UTC+09:30 Australia (Northern Territory);(Summer)Australia (South Australia)) +42) UTC+10:00 Russia (Zabaykalsky Krai); (Summer)Australia (New South Wales, Queensland, Tasmania, Victoria) +43) UTC+10:30 Lord Howe Island +44) UTC+11:00 New Caledonia, Russia (Primorsky Krai), Solomon Islands +45) UTC+11:30 Norfolk Island +46) UTC+12:00 Fiji, Russia (Kamchatka Krai);(Summer)New Zealand +47) UTC+12:45 (Summer)New Zealand +48) UTC+13:00 Tonga +49) UTC+14:00 Kiribati (Line Islands) +*/ +void get_seconds_from_ntp_server(uint8_t *buf, uint16_t idx) +{ + tstamp seconds = 0; + uint8_t i=0; + for (i = 0; i < 4; i++) + { + seconds = (seconds << 8) | buf[idx + i]; + } + switch (time_zone) + { + case 0: + seconds -= 12*3600; + break; + case 1: + seconds -= 11*3600; + break; + case 2: + seconds -= 10*3600; + break; + case 3: + seconds -= (9*3600+30*60); + break; + case 4: + seconds -= 9*3600; + break; + case 5: + case 6: + seconds -= 8*3600; + break; + case 7: + case 8: + seconds -= 7*3600; + break; + case 9: + case 10: + seconds -= 6*3600; + break; + case 11: + case 12: + case 13: + seconds -= 5*3600; + break; + case 14: + seconds -= (4*3600+30*60); + break; + case 15: + case 16: + seconds -= 4*3600; + break; + case 17: + seconds -= (3*3600+30*60); + break; + case 18: + seconds -= 3*3600; + break; + case 19: + seconds -= 2*3600; + break; + case 20: + seconds -= 1*3600; + break; + case 21: //? + case 22: + break; + case 23: + case 24: + case 25: + seconds += 1*3600; + break; + case 26: + case 27: + seconds += 2*3600; + break; + case 28: + case 29: + seconds += 3*3600; + break; + case 30: + seconds += (3*3600+30*60); + break; + case 31: + seconds += 4*3600; + break; + case 32: + seconds += (4*3600+30*60); + break; + case 33: + seconds += 5*3600; + break; + case 34: + seconds += (5*3600+30*60); + break; + case 35: + seconds += (5*3600+45*60); + break; + case 36: + seconds += 6*3600; + break; + case 37: + seconds += (6*3600+30*60); + break; + case 38: + seconds += 7*3600; + break; + case 39: + seconds += 8*3600; + break; + case 40: + seconds += 9*3600; + break; + case 41: + seconds += (9*3600+30*60); + break; + case 42: + seconds += 10*3600; + break; + case 43: + seconds += (10*3600+30*60); + break; + case 44: + seconds += 11*3600; + break; + case 45: + seconds += (11*3600+30*60); + break; + case 46: + seconds += 12*3600; + break; + case 47: + seconds += (12*3600+45*60); + break; + case 48: + seconds += 13*3600; + break; + case 49: + seconds += 14*3600; + break; + + } + + //calculation for date + calcdatetime(seconds); +} + +void SNTP_init(uint8_t s, uint8_t *ntp_server, uint8_t tz, uint8_t *buf) +{ + NTP_SOCKET = s; + + NTPformat.dstaddr[0] = ntp_server[0]; + NTPformat.dstaddr[1] = ntp_server[1]; + NTPformat.dstaddr[2] = ntp_server[2]; + NTPformat.dstaddr[3] = ntp_server[3]; + + time_zone = tz; + + data_buf = buf; + + uint8_t Flag; + NTPformat.leap = 0; /* leap indicator */ + NTPformat.version = 4; /* version number */ + NTPformat.mode = 3; /* mode */ + NTPformat.stratum = 0; /* stratum */ + NTPformat.poll = 0; /* poll interval */ + NTPformat.precision = 0; /* precision */ + NTPformat.rootdelay = 0; /* root delay */ + NTPformat.rootdisp = 0; /* root dispersion */ + NTPformat.refid = 0; /* reference ID */ + NTPformat.reftime = 0; /* reference time */ + NTPformat.org = 0; /* origin timestamp */ + NTPformat.rec = 0; /* receive timestamp */ + NTPformat.xmt = 1; /* transmit timestamp */ + + Flag = (NTPformat.leap<<6)+(NTPformat.version<<3)+NTPformat.mode; //one byte Flag + memcpy(ntpmessage,(void const*)(&Flag),1); +} + +int8_t SNTP_run(datetime *time) +{ + uint16_t RSR_len; + uint32_t destip = 0; + uint16_t destport; + uint16_t startindex = 40; //last 8-byte of data_buf[size is 48 byte] is xmt, so the startindex should be 40 + + switch(getSn_SR(NTP_SOCKET)) + { + case SOCK_UDP: + if ((RSR_len = getSn_RX_RSR(NTP_SOCKET)) > 0) + { + if (RSR_len > MAX_SNTP_BUF_SIZE) RSR_len = MAX_SNTP_BUF_SIZE; // if Rx data size is lager than TX_RX_MAX_BUF_SIZE + recvfrom(NTP_SOCKET, data_buf, RSR_len, (uint8_t *)&destip, &destport); + + get_seconds_from_ntp_server(data_buf,startindex); + time->yy = Nowdatetime.yy; + time->mo = Nowdatetime.mo; + time->dd = Nowdatetime.dd; + time->hh = Nowdatetime.hh; + time->mm = Nowdatetime.mm; + time->ss = Nowdatetime.ss; + + ntp_retry_cnt=0; + close(NTP_SOCKET); + + return 1; + } + + if(ntp_retry_cnt<0xFFFF) + { + if(ntp_retry_cnt==0)//first send request, no need to wait + { + sendto(NTP_SOCKET,ntpmessage,sizeof(ntpmessage),NTPformat.dstaddr,ntp_port); + ntp_retry_cnt++; + } + else // send request again? it should wait for a while + { + if((ntp_retry_cnt % 0xFFF) == 0) //wait time + { + sendto(NTP_SOCKET,ntpmessage,sizeof(ntpmessage),NTPformat.dstaddr,ntp_port); +#ifdef _SNTP_DEBUG_ + printf("ntp retry: %d\r\n", ntp_retry_cnt); +#endif + ntp_retry_cnt++; + } + } + } + else //ntp retry fail + { + ntp_retry_cnt=0; +#ifdef _SNTP_DEBUG_ + printf("ntp retry failed!\r\n"); +#endif + close(NTP_SOCKET); + } + break; + case SOCK_CLOSED: + socket(NTP_SOCKET,Sn_MR_UDP,ntp_port,0); + break; + } + // Return value + // 0 - failed / 1 - success + return 0; +} + +void calcdatetime(tstamp seconds) +{ + uint8_t yf=0; + tstamp n=0,d=0,total_d=0,rz=0; + uint16_t y=0,r=0,yr=0; + signed long long yd=0; + + n = seconds; + total_d = seconds/(SECS_PERDAY); + d=0; + uint32_t p_year_total_sec=SECS_PERDAY*365; + uint32_t r_year_total_sec=SECS_PERDAY*366; + while(n>=p_year_total_sec) + { + if((EPOCH+r)%400==0 || ((EPOCH+r)%100!=0 && (EPOCH+r)%4==0)) + { + n = n -(r_year_total_sec); + d = d + 366; + } + else + { + n = n - (p_year_total_sec); + d = d + 365; + } + r+=1; + y+=1; + + } + + y += EPOCH; + + Nowdatetime.yy = y; + + yd=0; + yd = total_d - d; + + yf=1; + while(yd>=28) + { + + if(yf==1 || yf==3 || yf==5 || yf==7 || yf==8 || yf==10 || yf==12) + { + yd -= 31; + if(yd<0)break; + rz += 31; + } + + if (yf==2) + { + if (y%400==0 || (y%100!=0 && y%4==0)) + { + yd -= 29; + if(yd<0)break; + rz += 29; + } + else + { + yd -= 28; + if(yd<0)break; + rz += 28; + } + } + if(yf==4 || yf==6 || yf==9 || yf==11 ) + { + yd -= 30; + if(yd<0)break; + rz += 30; + } + yf += 1; + + } + Nowdatetime.mo=yf; + yr = total_d-d-rz; + + yr += 1; + + Nowdatetime.dd=yr; + + //calculation for time + seconds = seconds%SECS_PERDAY; + Nowdatetime.hh = seconds/3600; + Nowdatetime.mm = (seconds%3600)/60; + Nowdatetime.ss = (seconds%3600)%60; + +} + +tstamp changedatetime_to_seconds(void) +{ + tstamp seconds=0; + uint32_t total_day=0; + uint16_t i=0,run_year_cnt=0,l=0; + + l = Nowdatetime.yy;//low + + + for(i=EPOCH;i + +/* + * @brief Define it for Debug & Monitor DNS processing. + * @note If defined, it dependens on + */ +//#define _SNTP_DEBUG_ + +#define MAX_SNTP_BUF_SIZE sizeof(ntpformat) ///< maximum size of DNS buffer. */ + +/* for ntpclient */ +typedef signed char s_char; +typedef unsigned long long tstamp; +typedef unsigned int tdist; + +typedef struct _ntpformat +{ + + uint8_t dstaddr[4]; /* destination (local) address */ + char version; /* version number */ + char leap; /* leap indicator */ + char mode; /* mode */ + char stratum; /* stratum */ + char poll; /* poll interval */ + s_char precision; /* precision */ + tdist rootdelay; /* root delay */ + tdist rootdisp; /* root dispersion */ + char refid; /* reference ID */ + tstamp reftime; /* reference time */ + tstamp org; /* origin timestamp */ + tstamp rec; /* receive timestamp */ + tstamp xmt; /* transmit timestamp */ + + +} ntpformat; + +typedef struct _datetime +{ + uint16_t yy; + uint8_t mo; + uint8_t dd; + uint8_t hh; + uint8_t mm; + uint8_t ss; +} datetime; + +#define ntp_port 123 //ntp server port number +#define SECS_PERDAY 86400UL // seconds in a day = 60*60*24 +#define UTC_ADJ_HRS 9 // SEOUL : GMT+9 +#define EPOCH 1900 // NTP start year + +void get_seconds_from_ntp_server(uint8_t *buf, uint16_t idx); +void SNTP_init(uint8_t s, uint8_t *ntp_server, uint8_t tz, uint8_t *buf); +int8_t SNTP_run(datetime *time); +tstamp changedatetime_to_seconds(void); +void calcdatetime(tstamp seconds); + +#ifdef __cplusplus +} +#endif + +#endif /* SNTP_H_ */ diff --git a/User/ioLibrary_Driver/Internet/TFTP/netutil.c b/User/ioLibrary_Driver/Internet/TFTP/netutil.c new file mode 100644 index 0000000..77b0992 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/TFTP/netutil.c @@ -0,0 +1,158 @@ +#include +#include +#include +#include "netutil.h" + +/** + * Convert a 32bit Address into a Dotted Decimal Format string. + * + * @param addr 32bit address. + * @return Dotted Decimal Format string. + */ +int8_t* inet_ntoa(uint32_t addr) +{ + static int8_t addr_str[16]; + memset(addr_str,0,16); + sprintf((char*)addr_str,"%d.%d.%d.%d",(int32_t)(addr>>24 & 0xFF),(int32_t)(addr>>16 & 0xFF),(int32_t)(addr>>8 & 0xFF),(int32_t)(addr & 0xFF)); + return addr_str; +} + +/** + * Convert a 32bit Address into a Dotted Decimal Format string. + * This is differ from inet_ntoa in fixed length. + * + * @param addr 32bit address. + * @return Dotted Decimal Format string. + */ +int8_t* inet_ntoa_pad(uint32_t addr) +{ + static int8_t addr_str[16]; + memset(addr_str,0,16); + sprintf((char*)addr_str,"%03d.%03d.%03d.%03d",(int32_t)(addr>>24 & 0xFF),(int32_t)(addr>>16 & 0xFF),(int32_t)(addr>>8 & 0xFF),(int32_t)(addr & 0xFF)); + return addr_str; +} + +/** + * Converts a string containing an (Ipv4) Internet Protocol decimal dotted address into a 32bit address. + * + * @param addr Dotted Decimal Format string. + * @return 32bit address. + */ +uint32_t inet_addr(uint8_t* addr) +{ + int8_t i; + uint32_t inetaddr = 0; + int8_t taddr[30]; + int8_t * nexttok; + int32_t num; + strcpy((char*)taddr,(char*)addr); + + nexttok = taddr; + for(i = 0; i < 4 ; i++) + { + nexttok = (int8_t*)strtok((char*)nexttok,"."); + if(nexttok[0] == '0' && nexttok[1] == 'x') num = strtol((char*)nexttok+2, NULL, 16); + else num = strtol((char*)nexttok, NULL, 10); + inetaddr = inetaddr << 8; + inetaddr |= (num & 0xFF); + nexttok = NULL; + } + return inetaddr; +} + +/** + * Swap the byte order of 16bit(short) wide variable. + * + * @param i 16bit value to swap + * @return Swapped value + */ +uint16_t swaps(uint16_t i) +{ + uint16_t ret=0; + ret = (i & 0xFF) << 8; + ret |= ((i >> 8)& 0xFF); + return ret; +} + +/** + * Swap the byte order of 32bit(long) wide variable. + * + * @param l 32bit value to convert + * @return Swapped value + */ +uint32_t swapl(uint32_t l) +{ + uint32_t ret=0; + ret = (l & 0xFF) << 24; + ret |= ((l >> 8) & 0xFF) << 16; + ret |= ((l >> 16) & 0xFF) << 8; + ret |= ((l >> 24) & 0xFF); + return ret; +} + +/** + * htons function converts a unsigned short from host to TCP/IP network byte order (which is big-endian). + * + * @param hostshort The value to convert. + * @return The value in TCP/IP network byte order. + */ +uint16_t htons(uint16_t hostshort) +{ +#ifdef SYSTEM_LITTLE_ENDIAN + return swaps(hostshort); +#else + return hostshort; +#endif +} + + +/** + * htonl function converts a unsigned long from host to TCP/IP network byte order (which is big-endian). + * + * @param hostlong The value to convert. + * @return The value in TCP/IP network byte order. + */ +uint32_t htonl(uint32_t hostlong) +{ +#ifdef SYSTEM_LITTLE_ENDIAN + return swapl(hostlong); +#else + return hostlong; +#endif +} + + +/** + * ntohs function converts a unsigned short from TCP/IP network byte order + * to host byte order (which is little-endian on Intel processors). + * + * @param netshort The value to convert. + * @return A 16-bit number in host byte order + */ +uint32_t ntohs(uint16_t netshort) +{ +#ifdef SYSTEM_LITTLE_ENDIAN + return htons(netshort); +#else + return netshort; +#endif +} + +/** + * converts a unsigned long from TCP/IP network byte order to host byte order + * (which is little-endian on Intel processors). + * + * @param netlong The value to convert. + * @return A 16-bit number in host byte order + */ +uint32_t ntohl(uint32_t netlong) +{ +#ifdef SYSTEM_LITTLE_ENDIAN + return swapl(netlong); +#else + return netlong; +#endif +} +/** + * @} + */ diff --git a/User/ioLibrary_Driver/Internet/TFTP/netutil.h b/User/ioLibrary_Driver/Internet/TFTP/netutil.h new file mode 100644 index 0000000..08375a3 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/TFTP/netutil.h @@ -0,0 +1,27 @@ + +#ifndef __NETUTIL_H__ +#define __NETUTIL_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define SYSTEM_LITTLE_ENDIAN + +int8_t* inet_ntoa(uint32_t addr); +int8_t* inet_ntoa_pad(uint32_t addr); +uint32_t inet_addr(uint8_t* addr); +uint16_t swaps(uint16_t i); +uint32_t swapl(uint32_t l); +uint16_t htons(uint16_t hostshort); +uint32_t htonl(uint32_t hostlong); +uint32_t ntohs(uint16_t netshort); +uint32_t ntohl(uint32_t netlong); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/User/ioLibrary_Driver/Internet/TFTP/tftp.c b/User/ioLibrary_Driver/Internet/TFTP/tftp.c new file mode 100644 index 0000000..2002ca4 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/TFTP/tftp.c @@ -0,0 +1,660 @@ +/** + * @file tftp.c + * @brief TFTP Source File. + * @version 0.1.0 + * @author Sang-sik Kim + */ + +/* Includes -----------------------------------------------------*/ +#include +#include "tftp.h" +#include "socket.h" +#include "netutil.h" + +/* define -------------------------------------------------------*/ + +/* typedef ------------------------------------------------------*/ + +/* Extern Variable ----------------------------------------------*/ + +/* Extern Functions ---------------------------------------------*/ +#ifdef F_STORAGE +extern void save_data(uint8_t *data, uint32_t data_len, uint16_t block_number); +#endif + +/* Global Variable ----------------------------------------------*/ +static int g_tftp_socket = -1; + +static uint8_t g_filename[FILE_NAME_SIZE]; + +static uint32_t g_server_ip = 0; +static uint16_t g_server_port = 0; +static uint16_t g_local_port = 0; + +static uint32_t g_tftp_state = STATE_NONE; +static uint16_t g_block_num = 0; + +static uint32_t g_timeout = 5; +static uint32_t g_resend_flag = 0; +static uint32_t tftp_time_cnt = 0; +static uint32_t tftp_retry_cnt = 0; + +static uint8_t *g_tftp_rcv_buf = NULL; + +static TFTP_OPTION default_tftp_opt = { + .code = (uint8_t *)"timeout", + .value = (uint8_t *)"5" +}; + +uint8_t g_progress_state = TFTP_PROGRESS; + +#ifdef __TFTP_DEBUG__ +int dbg_level = (INFO_DBG | ERROR_DBG | IPC_DBG); +#endif + +/* static function define ---------------------------------------*/ +static void set_filename(uint8_t *file, uint32_t file_size) +{ + memcpy(g_filename, file, file_size); +} + +static inline void set_server_ip(uint32_t ipaddr) +{ + g_server_ip = ipaddr; +} + +static inline uint32_t get_server_ip() +{ + return g_server_ip; +} + +static inline void set_server_port(uint16_t port) +{ + g_server_port = port; +} + +static inline uint16_t get_server_port() +{ + return g_server_port; +} + +static inline void set_local_port(uint16_t port) +{ + g_local_port = port; +} + +static inline uint16_t get_local_port() +{ + return g_local_port; +} + +static inline uint16_t genernate_port() +{ + /* TODO */ + return 0; +} + +static inline void set_tftp_state(uint32_t state) +{ + g_tftp_state = state; +} + +static inline uint32_t get_tftp_state() +{ + return g_tftp_state; +} + +static inline void set_tftp_timeout(uint32_t timeout) +{ + g_timeout = timeout; +} + +static inline uint32_t get_tftp_timeout() +{ + return g_timeout; +} + +static inline void set_block_number(uint16_t block_number) +{ + g_block_num = block_number; +} + +static inline uint16_t get_block_number() +{ + return g_block_num; +} + +static int open_tftp_socket(uint8_t sock) +{ + uint8_t sd, sck_state; + + sd = socket(sock, Sn_MR_UDP, 51000, SF_IO_NONBLOCK); + if(sd != sock) { + //DBG_PRINT(ERROR_DBG, "[%s] socket error\r\n", __func__); + return -1; + } + + do { + getsockopt(sd , SO_STATUS, &sck_state); + } while(sck_state != SOCK_UDP); + + return sd; +} + +static int send_udp_packet(int socket, uint8_t *packet, uint32_t len, uint32_t ip, uint16_t port) +{ + int snd_len; + + ip = htonl(ip); + + snd_len = sendto(socket, packet, len, (uint8_t *)&ip, port); + if(snd_len != len) { + //DBG_PRINT(ERROR_DBG, "[%s] sendto error\r\n", __func__); + return -1; + } + + return snd_len; +} + +static int recv_udp_packet(int socket, uint8_t *packet, uint32_t len, uint32_t *ip, uint16_t *port) +{ + int ret; + uint8_t sck_state; + uint16_t recv_len; + + /* Receive Packet Process */ + ret = getsockopt(socket, SO_STATUS, &sck_state); + if(ret != SOCK_OK) { + //DBG_PRINT(ERROR_DBG, "[%s] getsockopt SO_STATUS error\r\n", __func__); + return -1; + } + + if(sck_state == SOCK_UDP) { + ret = getsockopt(socket, SO_RECVBUF, &recv_len); + if(ret != SOCK_OK) { + //DBG_PRINT(ERROR_DBG, "[%s] getsockopt SO_RECVBUF error\r\n", __func__); + return -1; + } + + if(recv_len) { + recv_len = recvfrom(socket, packet, len, (uint8_t *)ip, port); + if(recv_len < 0) { + //DBG_PRINT(ERROR_DBG, "[%s] recvfrom error\r\n", __func__); + return -1; + } + + *ip = ntohl(*ip); + + return recv_len; + } + } + return -1; +} + +static void close_tftp_socket(int socket) +{ + close(socket); +} + + +static void init_tftp(void) +{ + g_filename[0] = 0; + + set_server_ip(0); + set_server_port(0); + set_local_port(0); + + set_tftp_state(STATE_NONE); + set_block_number(0); + + /* timeout flag */ + g_resend_flag = 0; + tftp_retry_cnt = tftp_time_cnt = 0; + + g_progress_state = TFTP_PROGRESS; +} + +static void tftp_cancel_timeout(void) +{ + if(g_resend_flag) { + g_resend_flag = 0; + tftp_retry_cnt = tftp_time_cnt = 0; + } +} + +static void tftp_reg_timeout() +{ + if(g_resend_flag == 0) { + g_resend_flag = 1; + tftp_retry_cnt = tftp_time_cnt = 0; + } +} + +static void process_tftp_option(uint8_t *msg, uint32_t msg_len) +{ + /* TODO Option Process */ +} + +static void send_tftp_rrq(uint8_t *filename, uint8_t *mode, TFTP_OPTION *opt, uint8_t opt_len) +{ + uint8_t snd_buf[MAX_MTU_SIZE]; + uint8_t *pkt = snd_buf; + uint32_t i, len; + + *((uint16_t *)pkt) = htons(TFTP_RRQ); + pkt += 2; + strcpy((char *)pkt, (const char *)filename); + pkt += strlen((char *)filename) + 1; + strcpy((char *)pkt, (const char *)mode); + pkt += strlen((char *)mode) + 1; + + for(i = 0 ; i < opt_len ; i++) { + strcpy((char *)pkt, (const char *)opt[i].code); + pkt += strlen((char *)opt[i].code) + 1; + strcpy((char *)pkt, (const char *)opt[i].value); + pkt += strlen((char *)opt[i].value) + 1; + } + + len = pkt - snd_buf; + + send_udp_packet(g_tftp_socket, snd_buf, len, get_server_ip(), TFTP_SERVER_PORT); + set_tftp_state(STATE_RRQ); + set_filename(filename, strlen((char *)filename) + 1); + tftp_reg_timeout(); +#ifdef __TFTP_DEBUG__ + DBG_PRINT(IPC_DBG, ">> TFTP RRQ : FileName(%s), Mode(%s)\r\n", filename, mode); +#endif +} + +#if 0 // 2014.07.01 sskim +static void send_tftp_wrq(uint8_t *filename, uint8_t *mode, TFTP_OPTION *opt, uint8_t opt_len) +{ + uint8_t snd_buf[MAX_MTU_SIZE]; + uint8_t *pkt = snd_buf; + uint32_t i, len; + + *((uint16_t *)pkt) = htons((uint16_t)TFTP_WRQ); + pkt += 2; + strcpy((char *)pkt, (const char *)filename); + pkt += strlen((char *)filename) + 1; + strcpy((char *)pkt, (const char *)mode); + pkt += strlen((char *)mode) + 1; + + for(i = 0 ; i < opt_len ; i++) { + strcpy((char *)pkt, (const char *)opt[i].code); + pkt += strlen((char *)opt[i].code) + 1; + strcpy((char *)pkt, (const char *)opt[i].value); + pkt += strlen((char *)opt[i].value) + 1; + } + + len = pkt - snd_buf; + + send_udp_packet(g_tftp_socket , snd_buf, len, get_server_ip(), TFTP_SERVER_PORT); + set_tftp_state(STATE_WRQ); + set_filename(filename, strlen((char *)filename) + 1); + tftp_reg_timeout(); +#ifdef __TFTP_DEBUG__ + DBG_PRINT(IPC_DBG, ">> TFTP WRQ : FileName(%s), Mode(%s)\r\n", filename, mode); +#endif +} +#endif + +#if 0 // 2014.07.01 sskim +static void send_tftp_data(uint16_t block_number, uint8_t *data, uint16_t data_len) +{ + uint8_t snd_buf[MAX_MTU_SIZE]; + uint8_t *pkt = snd_buf; + uint32_t len; + + *((uint16_t *)pkt) = htons((uint16_t)TFTP_DATA); + pkt += 2; + *((uint16_t *)pkt) = htons(block_number); + pkt += 2; + memcpy(pkt, data, data_len); + pkt += data_len; + + len = pkt - snd_buf; + + send_udp_packet(g_tftp_socket , snd_buf, len, get_server_ip(), get_server_port()); + tftp_reg_timeout(); +#ifdef __TFTP_DEBUG__ + DBG_PRINT(IPC_DBG, ">> TFTP DATA : Block Number(%d), Data Length(%d)\r\n", block_number, data_len); +#endif +} +#endif + +static void send_tftp_ack(uint16_t block_number) +{ + uint8_t snd_buf[4]; + uint8_t *pkt = snd_buf; + + *((uint16_t *)pkt) = htons((uint16_t)TFTP_ACK); + pkt += 2; + *((uint16_t *)pkt) = htons(block_number); + pkt += 2; + + send_udp_packet(g_tftp_socket , snd_buf, 4, get_server_ip(), get_server_port()); + tftp_reg_timeout(); +#ifdef __TFTP_DEBUG__ + DBG_PRINT(IPC_DBG, ">> TFTP ACK : Block Number(%d)\r\n", block_number); +#endif +} + +#if 0 // 2014.07.01 sskim +static void send_tftp_oack(TFTP_OPTION *opt, uint8_t opt_len) +{ + uint8_t snd_buf[MAX_MTU_SIZE]; + uint8_t *pkt = snd_buf; + uint32_t i, len; + + *((uint16_t *)pkt) = htons((uint16_t)TFTP_OACK); + pkt += 2; + + for(i = 0 ; i < opt_len ; i++) { + strcpy((char *)pkt, (const char *)opt[i].code); + pkt += strlen((char *)opt[i].code) + 1; + strcpy((char *)pkt, (const char *)opt[i].value); + pkt += strlen((char *)opt[i].value) + 1; + } + + len = pkt - snd_buf; + + send_udp_packet(g_tftp_socket , snd_buf, len, get_server_ip(), get_server_port()); + tftp_reg_timeout(); +#ifdef __TFTP_DEBUG__ + DBG_PRINT(IPC_DBG, ">> TFTP OACK \r\n"); +#endif +} +#endif + +#if 0 // 2014.07.01 sskim +static void send_tftp_error(uint16_t error_number, uint8_t *error_message) +{ + uint8_t snd_buf[MAX_MTU_SIZE]; + uint8_t *pkt = snd_buf; + uint32_t len; + + *((uint16_t *)pkt) = htons((uint16_t)TFTP_ERROR); + pkt += 2; + *((uint16_t *)pkt) = htons(error_number); + pkt += 2; + strcpy((char *)pkt, (const char *)error_message); + pkt += strlen((char *)error_message) + 1; + + len = pkt - snd_buf; + + send_udp_packet(g_tftp_socket , snd_buf, len, get_server_ip(), get_server_port()); + tftp_reg_timeout(); +#ifdef __TFTP_DEBUG__ + DBG_PRINT(IPC_DBG, ">> TFTP ERROR : Error Number(%d)\r\n", error_number); +#endif +} +#endif + +static void recv_tftp_rrq(uint8_t *msg, uint32_t msg_len) +{ + /* When TFTP Server Mode */ +} + +static void recv_tftp_wrq(uint8_t *msg, uint32_t msg_len) +{ + /* When TFTP Server Mode */ +} + +static void recv_tftp_data(uint8_t *msg, uint32_t msg_len) +{ + TFTP_DATA_T *data = (TFTP_DATA_T *)msg; + + data->opcode = ntohs(data->opcode); + data->block_num = ntohs(data->block_num); +#ifdef __TFTP_DEBUG__ + DBG_PRINT(IPC_DBG, "<< TFTP_DATA : opcode(%d), block_num(%d)\r\n", data->opcode, data->block_num); +#endif + + switch(get_tftp_state()) + { + case STATE_RRQ : + case STATE_OACK : + if(data->block_num == 1) { + set_tftp_state(STATE_DATA); + set_block_number(data->block_num); +#ifdef F_STORAGE + save_data(data->data, msg_len - 4, data->block_num); +#endif + tftp_cancel_timeout(); + } + send_tftp_ack(data->block_num); + + if((msg_len - 4) < TFTP_BLK_SIZE) { + init_tftp(); + g_progress_state = TFTP_SUCCESS; + } + + break; + + case STATE_DATA : + if(data->block_num == (get_block_number() + 1)) { + set_block_number(data->block_num); +#ifdef F_STORAGE + save_data(data->data, msg_len - 4, data->block_num); +#endif + tftp_cancel_timeout(); + } + send_tftp_ack(data->block_num); + + if((msg_len - 4) < TFTP_BLK_SIZE) { + init_tftp(); + g_progress_state = TFTP_SUCCESS; + } + + break; + + default : + /* invalid message */ + break; + } +} + +static void recv_tftp_ack(uint8_t *msg, uint32_t msg_len) +{ +#ifdef __TFTP_DEBUG__ + DBG_PRINT(IPC_DBG, "<< TFTP_ACK : \r\n"); +#endif + + switch(get_tftp_state()) + { + case STATE_WRQ : + break; + + case STATE_ACK : + break; + + default : + /* invalid message */ + break; + } +} + +static void recv_tftp_oack(uint8_t *msg, uint32_t msg_len) +{ +#ifdef __TFTP_DEBUG__ + DBG_PRINT(IPC_DBG, "<< TFTP_OACK : \r\n"); +#endif + + switch(get_tftp_state()) + { + case STATE_RRQ : + process_tftp_option(msg, msg_len); + set_tftp_state(STATE_OACK); + tftp_cancel_timeout(); + send_tftp_ack(0); + break; + + case STATE_WRQ : + process_tftp_option(msg, msg_len); + set_tftp_state(STATE_ACK); + tftp_cancel_timeout(); + + /* TODO DATA Transfer */ + //send_tftp_data(...); + break; + + default : + /* invalid message */ + break; + } +} + +static void recv_tftp_error(uint8_t *msg, uint32_t msg_len) +{ + TFTP_ERROR_T *data= (TFTP_ERROR_T *)msg; + + data->opcode = ntohs(data->opcode); + data->error_code = ntohs(data->error_code); + +#ifdef __TFTP_DEBUG__ + DBG_PRINT(IPC_DBG, "<< TFTP_ERROR : %d (%s)\r\n", data->error_code, data->error_msg); + DBG_PRINT(ERROR_DBG, "[%s] Error Code : %d (%s)\r\n", __func__, data->error_code, data->error_msg); +#endif + init_tftp(); + g_progress_state = TFTP_FAIL; +} + +static void recv_tftp_packet(uint8_t *packet, uint32_t packet_len, uint32_t from_ip, uint16_t from_port) +{ + uint16_t opcode; + + /* Verify Server IP */ + if(from_ip != get_server_ip()) { +#ifdef __TFTP_DEBUG__ + DBG_PRINT(ERROR_DBG, "[%s] Server IP faults\r\n", __func__); + DBG_PRINT(ERROR_DBG, "from IP : %08x, Server IP : %08x\r\n", from_ip, get_server_ip()); +#endif + return; + } + + opcode = ntohs(*((uint16_t *)packet)); + + /* Set Server Port */ + if((get_tftp_state() == STATE_WRQ) || (get_tftp_state() == STATE_RRQ)) { + set_server_port(from_port); +#ifdef __TFTP_DEBUG__ + DBG_PRINT(INFO_DBG, "[%s] Set Server Port : %d\r\n", __func__, from_port); +#endif + } + + switch(opcode) + { + case TFTP_RRQ : /* When Server */ + recv_tftp_rrq(packet, packet_len); + break; + case TFTP_WRQ : /* When Server */ + recv_tftp_wrq(packet, packet_len); + break; + case TFTP_DATA : + recv_tftp_data(packet, packet_len); + break; + case TFTP_ACK : + recv_tftp_ack(packet, packet_len); + break; + case TFTP_OACK : + recv_tftp_oack(packet, packet_len); + break; + case TFTP_ERROR : + recv_tftp_error(packet, packet_len); + break; + + default : + // Unknown Mesage + break; + } +} + +/* Functions ----------------------------------------------------*/ +void TFTP_init(uint8_t socket, uint8_t *buf) +{ + init_tftp(); + + g_tftp_socket = open_tftp_socket(socket); + g_tftp_rcv_buf = buf; +} + +void TFTP_exit(void) +{ + init_tftp(); + + close_tftp_socket(g_tftp_socket); + g_tftp_socket = -1; + + g_tftp_rcv_buf = NULL; +} + +int TFTP_run(void) +{ + uint16_t len, from_port; + uint32_t from_ip; + + /* Timeout Process */ + if(g_resend_flag) { + if(tftp_time_cnt >= g_timeout) { + switch(get_tftp_state()) { + case STATE_WRQ: // 미구현 + break; + + case STATE_RRQ: + send_tftp_rrq(g_filename, (uint8_t *)TRANS_BINARY, &default_tftp_opt, 1); + break; + + case STATE_OACK: + case STATE_DATA: + send_tftp_ack(get_block_number()); + break; + + case STATE_ACK: // 미구현 + break; + + default: + break; + } + + tftp_time_cnt = 0; + tftp_retry_cnt++; + + if(tftp_retry_cnt >= 5) { + init_tftp(); + g_progress_state = TFTP_FAIL; + } + } + } + + /* Receive Packet Process */ + len = recv_udp_packet(g_tftp_socket, g_tftp_rcv_buf, MAX_MTU_SIZE, &from_ip, &from_port); + if(len < 0) { +#ifdef __TFTP_DEBUG__ + DBG_PRINT(ERROR_DBG, "[%s] recv_udp_packet error\r\n", __func__); +#endif + return g_progress_state; + } + + recv_tftp_packet(g_tftp_rcv_buf, len, from_ip, from_port); + + return g_progress_state; +} + +void TFTP_read_request(uint32_t server_ip, uint8_t *filename) +{ + set_server_ip(server_ip); +#ifdef __TFTP_DEBUG__ + DBG_PRINT(INFO_DBG, "[%s] Set Tftp Server : %x\r\n", __func__, server_ip); +#endif + + g_progress_state = TFTP_PROGRESS; + send_tftp_rrq(filename, (uint8_t *)TRANS_BINARY, &default_tftp_opt, 1); +} + +void tftp_timeout_handler(void) +{ + if(g_resend_flag) + tftp_time_cnt++; +} diff --git a/User/ioLibrary_Driver/Internet/TFTP/tftp.h b/User/ioLibrary_Driver/Internet/TFTP/tftp.h new file mode 100644 index 0000000..b8f3b4d --- /dev/null +++ b/User/ioLibrary_Driver/Internet/TFTP/tftp.h @@ -0,0 +1,101 @@ +/** + * @file tftp.h + * @brief TFTP Header File. + * @version 0.1.0 + * @author Sang-sik Kim + */ +#ifndef __TFTP_H__ +#define __TFTP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define F_APP_TFTP +#define __TFTP_DEBUG__ + +#define F_STORAGE // If your target support a storage, you have to activate this feature and implement. + +#define SOCK_TFTP 1 + +#define INFO_DBG 0x01 +#define ERROR_DBG 0x02 +#define DEBUG_DBG 0x04 +#define IPC_DBG 0x08 + +#define DBG_PRINT(level, format, args...) { \ + if(dbg_level & level) \ + printf(format, ##args); \ + } + +#define NORMAL_MODE 0 +#define TFTP_MODE 1 + +extern int dbg_level; + +/* tftp message */ +#define TFTP_RRQ 1 +#define TFTP_WRQ 2 +#define TFTP_DATA 3 +#define TFTP_ACK 4 +#define TFTP_ERROR 5 +#define TFTP_OACK 6 + +/* tftp state */ +#define STATE_NONE 0 +#define STATE_RRQ 1 +#define STATE_WRQ 2 +#define STATE_DATA 3 +#define STATE_ACK 4 +#define STATE_OACK 5 + +/* tftp transfer mode */ +#define TRANS_ASCII "netascii" +#define TRANS_BINARY "octet" + +/* tftp progress state */ +#define TFTP_PROGRESS 0 +#define TFTP_FAIL 1 +#define TFTP_SUCCESS 2 + +/* define */ +#define TFTP_SERVER_PORT 69 +#define TFTP_TEMP_PORT 51000 +#define TFTP_BLK_SIZE 512 +#define MAX_MTU_SIZE 1514 +#define FILE_NAME_SIZE 20 + +//#define __TFTP_DEBUG__ + +/* typedef */ +typedef struct tftp_data { + uint16_t opcode; + uint16_t block_num; + uint8_t data[0]; +} TFTP_DATA_T; + +typedef struct tftp_error { + uint16_t opcode; + uint16_t error_code; + uint8_t error_msg[0]; +} TFTP_ERROR_T; + +typedef struct tftp_option { + uint8_t *code; + uint8_t *value; +} TFTP_OPTION; + +/* Functions */ +void TFTP_init(uint8_t socket, uint8_t *buf); +void TFTP_exit(void); +int TFTP_run(void); +void TFTP_read_request(uint32_t server_ip, uint8_t *filename); +void tftp_timeout_handler(void); + +#ifdef __cplusplus +} +#endif + +#endif /*__TFTP_H__ */ diff --git a/User/ioLibrary_Driver/Internet/httpServer/httpParser.c b/User/ioLibrary_Driver/Internet/httpServer/httpParser.c new file mode 100644 index 0000000..3d353e3 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/httpServer/httpParser.c @@ -0,0 +1,402 @@ +/** + @file httpd.c + @brief functions associated http processing + */ + +#include +#include +#include "socket.h" +#include "httpParser.h" + +/***************************************************************************** + * Public types/enumerations/variables + ****************************************************************************/ +//uint8_t BUFPUB[2048]; +uint8_t BUFPUB[256]; + +/***************************************************************************** + * Private functions + ****************************************************************************/ +static void replacetochar(uint8_t * str, uint8_t oldchar, uint8_t newchar); /* Replace old character with new character in the string */ +static uint8_t C2D(uint8_t c); /* Convert a character to HEX */ + +/** + @brief convert escape characters(%XX) to ASCII character + */ +void unescape_http_url( + char * url /**< pointer to be converted ( escape characters )*/ + ) +{ + int x, y; + + for (x = 0, y = 0; url[y]; ++x, ++y) { + if ((url[x] = url[y]) == '%') { + url[x] = C2D(url[y+1])*0x10+C2D(url[y+2]); + y+=2; + } + } + url[x] = '\0'; +} + + +/** + @brief make response header such as html, gif, jpeg,etc. + */ +void make_http_response_head( + char * buf, /**< pointer to response header to be made */ + char type, /**< response type */ + uint32_t len /**< size of response header */ + ) +{ + char * head; + char tmp[10]; + + /* file type*/ + if (type == PTYPE_HTML) head = RES_HTMLHEAD_OK; + else if (type == PTYPE_GIF) head = RES_GIFHEAD_OK; + else if (type == PTYPE_TEXT) head = RES_TEXTHEAD_OK; + else if (type == PTYPE_JPEG) head = RES_JPEGHEAD_OK; + else if (type == PTYPE_FLASH) head = RES_FLASHHEAD_OK; + else if (type == PTYPE_XML) head = RES_XMLHEAD_OK; + else if (type == PTYPE_CSS) head = RES_CSSHEAD_OK; + else if (type == PTYPE_JSON) head = RES_JSONHEAD_OK; + else if (type == PTYPE_JS) head = RES_JSHEAD_OK; + else if (type == PTYPE_CGI) head = RES_CGIHEAD_OK; + else if (type == PTYPE_PNG) head = RES_PNGHEAD_OK; + else if (type == PTYPE_ICO) head = RES_ICOHEAD_OK; + else if (type == PTYPE_TTF) head = RES_TTFHEAD_OK; + else if (type == PTYPE_OTF) head = RES_OTFHEAD_OK; + else if (type == PTYPE_WOFF) head = RES_WOFFHEAD_OK; + else if (type == PTYPE_EOT) head = RES_EOTHEAD_OK; + else if (type == PTYPE_SVG) head = RES_SVGHEAD_OK; +#ifdef _HTTPPARSER_DEBUG_ + else + { + head = NULL; + printf("\r\n\r\n-MAKE HEAD UNKNOWN-\r\n"); + } +#else + else head = NULL; +#endif + + sprintf(tmp, "%ld", len); + strcpy(buf, head); + strcat(buf, tmp); + strcat(buf, "\r\n\r\n"); +} + + +/** + @brief find MIME type of a file + */ +void find_http_uri_type( + uint8_t * type, /**< type to be returned */ + uint8_t * buff /**< file name */ + ) +{ + /* Decide type according to extension*/ + + char * buf; + buf = (char *)buff; + + if (strstr(buf, ".htm") || strstr(buf, ".html")) *type = PTYPE_HTML; + else if (strstr(buf, ".gif")) *type = PTYPE_GIF; + else if (strstr(buf, ".text") || strstr(buf,".txt")) *type = PTYPE_TEXT; + else if (strstr(buf, ".jpeg") || strstr(buf,".jpg")) *type = PTYPE_JPEG; + else if (strstr(buf, ".swf")) *type = PTYPE_FLASH; + else if (strstr(buf, ".cgi") || strstr(buf,".CGI")) *type = PTYPE_CGI; + else if (strstr(buf, ".json") || strstr(buf,".JSON")) *type = PTYPE_JSON; + else if (strstr(buf, ".js") || strstr(buf,".JS")) *type = PTYPE_JS; + else if (strstr(buf, ".CGI") || strstr(buf,".cgi")) *type = PTYPE_CGI; + else if (strstr(buf, ".xml") || strstr(buf,".XML")) *type = PTYPE_XML; + else if (strstr(buf, ".css") || strstr(buf,".CSS")) *type = PTYPE_CSS; + else if (strstr(buf, ".png") || strstr(buf,".PNG")) *type = PTYPE_PNG; + else if (strstr(buf, ".ico") || strstr(buf,".ICO")) *type = PTYPE_ICO; + else if (strstr(buf, ".ttf") || strstr(buf,".TTF")) *type = PTYPE_TTF; + else if (strstr(buf, ".otf") || strstr(buf,".OTF")) *type = PTYPE_OTF; + else if (strstr(buf, ".woff") || strstr(buf,".WOFF")) *type = PTYPE_WOFF; + else if (strstr(buf, ".eot") || strstr(buf,".EOT")) *type = PTYPE_EOT; + else if (strstr(buf, ".svg") || strstr(buf,".SVG")) *type = PTYPE_SVG; + else *type = PTYPE_ERR; +} + + +/** + @brief parse http request from a peer + */ +void parse_http_request( + st_http_request * request, /**< request to be returned */ + uint8_t * buf /**< pointer to be parsed */ + ) +{ + char * nexttok; + nexttok = strtok((char*)buf," "); + if(!nexttok) + { + request->METHOD = METHOD_ERR; + return; + } + if(!strcmp(nexttok, "GET") || !strcmp(nexttok,"get")) + { + request->METHOD = METHOD_GET; + nexttok = strtok(NULL," "); + + } + else if (!strcmp(nexttok, "HEAD") || !strcmp(nexttok,"head")) + { + request->METHOD = METHOD_HEAD; + nexttok = strtok(NULL," "); + + } + else if (!strcmp(nexttok, "POST") || !strcmp(nexttok,"post")) + { + nexttok = strtok(NULL,"\0"); + request->METHOD = METHOD_POST; + } + else + { + request->METHOD = METHOD_ERR; + } + + if(!nexttok) + { + request->METHOD = METHOD_ERR; + return; + } + strcpy((char *)request->URI, nexttok); +} + +#ifdef _OLD_ +/** + @brief get next parameter value in the request + */ +uint8_t * get_http_param_value( + char* uri, + char* param_name + ) +{ + char tempURI[MAX_URI_SIZE]; + uint8_t * name = 0; + + + if(!uri || !param_name) return 0; + + strcpy((char*)tempURI,uri); + if((name = (uint8_t*)strstr(tempURI, param_name))) + { + name += strlen(param_name) + 1; // strlen(para_name) + strlen("=") + if((name = (uint8_t*)strtok((char *)name,"& \r\n\t\0"))) + { + unescape_http_url((char *)name); + replacetochar(name, '+', ' '); + } + } +#ifdef _HTTPPARSER_DEBUG_ + printf(" %s=%s",param_name,name); +#endif + + return name; +} +#else +/** + @brief get next parameter value in the request + */ +uint8_t * get_http_param_value(char* uri, char* param_name) +{ + + uint8_t * name = 0; + uint8_t * ret = BUFPUB; + uint8_t * pos2; + uint16_t len = 0, content_len = 0; + uint8_t tmp_buf[10]={0x00, }; + + if(!uri || !param_name) return 0; + + /***************/ + mid(uri, "Content-Length: ", "\r\n", (char *)tmp_buf); + content_len = ATOI(tmp_buf, 10); + uri = strstr(uri, "\r\n\r\n"); + uri += 4; + uri[content_len] = 0; + /***************/ + + if((name = (uint8_t *)strstr(uri, param_name))) + { + name += strlen(param_name) + 1; + pos2 = (uint8_t*)strstr((char*)name, "&"); + if(!pos2) + { + pos2 = name + strlen((char*)name); + } + len = pos2 - name; + + if(len) + { + ret[len] = 0; + strncpy((char*)ret,(char*)name, len); + unescape_http_url((char *)ret); + replacetochar(ret, '+' ,' '); + //ret[len] = 0; + //ret[strlen((int8*)ret)] = 0; + //printf("len=%d\r\n",len); + } + else + { + ret[0] = 0; + } + } + else + { + return 0; + } +#ifdef _HTTPPARSER_DEBUG_ + printf(" %s=%s\r\n", param_name, ret); +#endif + return ret; +} +#endif + +#ifdef _OLD_ +uint8_t * get_http_uri_name(uint8_t * uri) +{ + char tempURI[MAX_URI_SIZE]; + uint8_t * uri_name; + + if(!uri) return 0; + + strcpy(tempURI, (char *)uri); + + uri_name = (uint8_t *)strtok(tempURI, " ?"); + + if(strcmp((char *)uri_name,"/")) uri_name++; + +#ifdef _HTTPPARSER_DEBUG_ + printf(" uri_name = %s\r\n", uri_name); +#endif + + return uri_name; +} +#else + +uint8_t get_http_uri_name(uint8_t * uri, uint8_t * uri_buf) +{ + uint8_t * uri_ptr; + if(!uri) return 0; + + strcpy((char *)uri_buf, (char *)uri); + + uri_ptr = (uint8_t *)strtok((char *)uri_buf, " ?"); + + if(strcmp((char *)uri_ptr,"/")) uri_ptr++; + strcpy((char *)uri_buf, (char *)uri_ptr); + +#ifdef _HTTPPARSER_DEBUG_ + printf(" uri_name = %s\r\n", uri_buf); +#endif + + return 1; +} + +#endif + +void inet_addr_(uint8_t * addr, uint8_t *ip) +{ + uint8_t i; + uint8_t taddr[30]; + uint8_t * nexttok; + uint8_t num; + + strcpy((char *)taddr, (char *)addr); + + nexttok = taddr; + for(i = 0; i < 4 ; i++) + { + nexttok = (uint8_t *)strtok((char *)nexttok, "."); + if(nexttok[0] == '0' && nexttok[1] == 'x') num = ATOI(nexttok+2,0x10); + else num = ATOI(nexttok,10); + ip[i] = num; + nexttok = NULL; + } +} + + +/** +@brief CONVERT STRING INTO INTEGER +@return a integer number +*/ +uint16_t ATOI( + uint8_t * str, /**< is a pointer to convert */ + uint8_t base /**< is a base value (must be in the range 2 - 16) */ + ) +{ + unsigned int num = 0; +// debug_2013_11_25 +// while (*str !=0) + while ((*str !=0) && (*str != 0x20)) // not include the space(0x020) + num = num * base + C2D(*str++); + return num; +} + +/** + * @brief Check strings and then execute callback function by each string. + * @param src The information of URI + * @param s1 The start string to be researched + * @param s2 The end string to be researched + * @param sub The string between s1 and s2 + * @return The length value atfer working + */ +void mid(char* src, char* s1, char* s2, char* sub) +{ + char* sub1; + char* sub2; + uint16_t n; + + sub1=strstr((char*)src,(char*)s1); + sub1+=strlen((char*)s1); + sub2=strstr((char*)sub1,(char*)s2); + + n=sub2-sub1; + strncpy((char*)sub,(char*)sub1,n); + sub[n]='\0'; +} + +//////////////////////////////////////////////////////////////////// +// Static functions +//////////////////////////////////////////////////////////////////// + +/** +@brief replace the specified character in a string with new character +*/ +static void replacetochar( + uint8_t * str, /**< pointer to be replaced */ + uint8_t oldchar, /**< old character */ + uint8_t newchar /**< new character */ + ) +{ + int x; + for (x = 0; str[x]; x++) + if (str[x] == oldchar) str[x] = newchar; +} + +/** +@brief CONVERT CHAR INTO HEX +@return HEX + +This function converts HEX(0-F) to a character +*/ +static uint8_t C2D( + uint8_t c /**< is a character('0'-'F') to convert to HEX */ + ) +{ + if (c >= '0' && c <= '9') + return c - '0'; + if (c >= 'a' && c <= 'f') + return 10 + c -'a'; + if (c >= 'A' && c <= 'F') + return 10 + c -'A'; + + return (char)c; +} + + + diff --git a/User/ioLibrary_Driver/Internet/httpServer/httpParser.h b/User/ioLibrary_Driver/Internet/httpServer/httpParser.h new file mode 100644 index 0000000..b64be68 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/httpServer/httpParser.h @@ -0,0 +1,158 @@ +/** + @file httpd.h + @brief Define Constants and fucntions associated with HTTP protocol. + */ + +#include + +#ifndef __HTTPPARSER_H__ +#define __HTTPPARSER_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +//#define _HTTPPARSER_DEBUG_ + +#define HTTP_SERVER_PORT 80 /**< HTTP server well-known port number */ + +/* HTTP Method */ +#define METHOD_ERR 0 /**< Error Method. */ +#define METHOD_GET 1 /**< GET Method. */ +#define METHOD_HEAD 2 /**< HEAD Method. */ +#define METHOD_POST 3 /**< POST Method. */ + +/* HTTP GET Method */ +#define PTYPE_ERR 0 /**< Error file. */ +#define PTYPE_HTML 1 /**< HTML file. */ +#define PTYPE_GIF 2 /**< GIF file. */ +#define PTYPE_TEXT 3 /**< TEXT file. */ +#define PTYPE_JPEG 4 /**< JPEG file. */ +#define PTYPE_FLASH 5 /**< FLASH file. */ +#define PTYPE_MPEG 6 /**< MPEG file. */ +#define PTYPE_PDF 7 /**< PDF file. */ +#define PTYPE_CGI 8 /**< CGI file. */ +#define PTYPE_XML 9 /**< XML file. */ +#define PTYPE_CSS 10 /**< CSS file. */ +#define PTYPE_JS 11 /**< JavaScript file. */ +#define PTYPE_JSON 12 /**< JSON (JavaScript Standard Object Notation) file. */ +#define PTYPE_PNG 13 /**< PNG file. */ +#define PTYPE_ICO 14 /**< ICON file. */ + +#define PTYPE_TTF 20 /**< Font type: TTF file. */ +#define PTYPE_OTF 21 /**< Font type: OTF file. */ +#define PTYPE_WOFF 22 /**< Font type: WOFF file. */ +#define PTYPE_EOT 23 /**< Font type: EOT file. */ +#define PTYPE_SVG 24 /**< Font type: SVG file. */ + + +/* HTTP response */ +#define STATUS_OK 200 +#define STATUS_CREATED 201 +#define STATUS_ACCEPTED 202 +#define STATUS_NO_CONTENT 204 +#define STATUS_MV_PERM 301 +#define STATUS_MV_TEMP 302 +#define STATUS_NOT_MODIF 304 +#define STATUS_BAD_REQ 400 +#define STATUS_UNAUTH 401 +#define STATUS_FORBIDDEN 403 +#define STATUS_NOT_FOUND 404 +#define STATUS_INT_SERR 500 +#define STATUS_NOT_IMPL 501 +#define STATUS_BAD_GATEWAY 502 +#define STATUS_SERV_UNAVAIL 503 + +/* HTML Doc. for ERROR */ +static const char ERROR_HTML_PAGE[] = "HTTP/1.1 404 Not Found\r\nContent-Type: text/html\r\nContent-Length: 78\r\n\r\n\r\n\r\nSorry, the page you requested was not found.\r\n\r\n\r\n\0"; +static const char ERROR_REQUEST_PAGE[] = "HTTP/1.1 400 OK\r\nContent-Type: text/html\r\nContent-Length: 50\r\n\r\n\r\n\r\nInvalid request.\r\n\r\n\r\n\0"; + +/* HTML Doc. for CGI result */ +#define HTML_HEADER "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nContent-Length: " + +/* Response header for HTML*/ +#define RES_HTMLHEAD_OK "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: keep-alive\r\nContent-Length: " + +/* Response head for TEXT */ +#define RES_TEXTHEAD_OK "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nContent-Length: " + +/* Response head for GIF */ +#define RES_GIFHEAD_OK "HTTP/1.1 200 OK\r\nContent-Type: image/gif\r\nContent-Length: " + +/* Response head for JPEG */ +#define RES_JPEGHEAD_OK "HTTP/1.1 200 OK\r\nContent-Type: image/jpeg\r\nContent-Length: " + +/* Response head for PNG */ +#define RES_PNGHEAD_OK "HTTP/1.1 200 OK\r\nContent-Type: image/png\r\nContent-Length: " + +/* Response head for FLASH */ +#define RES_FLASHHEAD_OK "HTTP/1.1 200 OK\r\nContent-Type: application/x-shockwave-flash\r\nContent-Length: " + +/* Response head for XML */ +#define RES_XMLHEAD_OK "HTTP/1.1 200 OK\r\nContent-Type: text/xml\r\nConnection: keep-alive\r\nContent-Length: " + +/* Response head for CSS */ +#define RES_CSSHEAD_OK "HTTP/1.1 200 OK\r\nContent-Type: text/css\r\nContent-Length: " + +/* Response head for JavaScript */ +#define RES_JSHEAD_OK "HTTP/1.1 200 OK\r\nContent-Type: application/javascript\r\nContent-Length: " + +/* Response head for JSON */ +#define RES_JSONHEAD_OK "HTTP/1.1 200 OK\r\nContent-Type: application/json\r\nContent-Length: " + +/* Response head for ICO */ +#define RES_ICOHEAD_OK "HTTP/1.1 200 OK\r\nContent-Type: image/x-icon\r\nContent-Length: " + +/* Response head for CGI */ +#define RES_CGIHEAD_OK "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nContent-Length: " + +/* Response head for TTF, Font */ +#define RES_TTFHEAD_OK "HTTP/1.1 200 OK\r\nContent-Type: application/x-font-truetype\r\nContent-Length: " + +/* Response head for OTF, Font */ +#define RES_OTFHEAD_OK "HTTP/1.1 200 OK\r\nContent-Type: application/x-font-opentype\r\nContent-Length: " + +/* Response head for WOFF, Font */ +#define RES_WOFFHEAD_OK "HTTP/1.1 200 OK\r\nContent-Type: application/font-woff\r\nContent-Length: " + +/* Response head for EOT, Font */ +#define RES_EOTHEAD_OK "HTTP/1.1 200 OK\r\nContent-Type: application/vnd.ms-fontobject\r\nContent-Length: " + +/* Response head for SVG, Font */ +#define RES_SVGHEAD_OK "HTTP/1.1 200 OK\r\nContent-Type: image/svg+xml\r\nContent-Length: " + +/** + @brief Structure of HTTP REQUEST + */ + +//#define MAX_URI_SIZE 1461 +#define MAX_URI_SIZE 512 + +typedef struct _st_http_request +{ + uint8_t METHOD; /**< request method(METHOD_GET...). */ + uint8_t TYPE; /**< request type(PTYPE_HTML...). */ + uint8_t URI[MAX_URI_SIZE]; /**< request file name. */ +}st_http_request; + +// HTTP Parsing functions +void unescape_http_url(char * url); /* convert escape character to ascii */ +void parse_http_request(st_http_request *, uint8_t *); /* parse request from peer */ +void find_http_uri_type(uint8_t *, uint8_t *); /* find MIME type of a file */ +void make_http_response_head(char *, char, uint32_t); /* make response header */ +uint8_t * get_http_param_value(char* uri, char* param_name); /* get the user-specific parameter value */ +uint8_t get_http_uri_name(uint8_t * uri, uint8_t * uri_buf); /* get the requested URI name */ +#ifdef _OLD_ +uint8_t * get_http_uri_name(uint8_t * uri); +#endif + +// Utility functions +uint16_t ATOI(uint8_t * str, uint8_t base); +void mid(char* src, char* s1, char* s2, char* sub); +void inet_addr_(uint8_t * addr, uint8_t * ip); + +#ifdef __cplusplus +} +#endif + +#endif /* end of __HTTPPARSER_H__ */ diff --git a/User/ioLibrary_Driver/Internet/httpServer/httpServer.c b/User/ioLibrary_Driver/Internet/httpServer/httpServer.c new file mode 100644 index 0000000..d98c482 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/httpServer/httpServer.c @@ -0,0 +1,749 @@ +#include +#include +#include + +#include "socket.h" +#include "wizchip_conf.h" + +#include "httpServer.h" +#include "httpParser.h" +#include "httpUtil.h" + +#ifdef _USE_SDCARD_ +#include "ff.h" // header file for FatFs library (FAT file system) +#endif + +#ifndef DATA_BUF_SIZE + #define DATA_BUF_SIZE 2048 +#endif + +/***************************************************************************** + * Private types/enumerations/variables + ****************************************************************************/ +static uint8_t HTTPSock_Num[_WIZCHIP_SOCK_NUM_] = {0, }; +static st_http_request * http_request; /**< Pointer to received HTTP request */ +static st_http_request * parsed_http_request; /**< Pointer to parsed HTTP request */ +static uint8_t * http_response; /**< Pointer to HTTP response */ + +// ## For Debugging +//static uint8_t uri_buf[128]; + +// Number of registered web content in code flash memory +static uint16_t total_content_cnt = 0; +/***************************************************************************** + * Public types/enumerations/variables + ****************************************************************************/ +uint8_t * pHTTP_TX; +uint8_t * pHTTP_RX; + +volatile uint32_t httpServer_tick_1s = 0; +st_http_socket HTTPSock_Status[_WIZCHIP_SOCK_NUM_] = { {STATE_HTTP_IDLE, }, }; +httpServer_webContent web_content[MAX_CONTENT_CALLBACK]; + +#ifdef _USE_SDCARD_ +FIL fs; // FatFs: File object +FRESULT fr; // FatFs: File function return code +#endif + +/***************************************************************************** + * Private functions + ****************************************************************************/ +void httpServer_Sockinit(uint8_t cnt, uint8_t * socklist); +static uint8_t getHTTPSocketNum(uint8_t seqnum); +static int8_t getHTTPSequenceNum(uint8_t socket); +static int8_t http_disconnect(uint8_t sn); + +static void http_process_handler(uint8_t s, st_http_request * p_http_request); +static void send_http_response_header(uint8_t s, uint8_t content_type, uint32_t body_len, uint16_t http_status); +static void send_http_response_body(uint8_t s, uint8_t * uri_name, uint8_t * buf, uint32_t start_addr, uint32_t file_len); +static void send_http_response_cgi(uint8_t s, uint8_t * buf, uint8_t * http_body, uint16_t file_len); + +/***************************************************************************** + * Public functions + ****************************************************************************/ +// Callback functions definition: MCU Reset / WDT Reset +void default_mcu_reset(void) {;} +void default_wdt_reset(void) {;} +void (*HTTPServer_ReStart)(void) = default_mcu_reset; +void (*HTTPServer_WDT_Reset)(void) = default_wdt_reset; + +void httpServer_Sockinit(uint8_t cnt, uint8_t * socklist) +{ + uint8_t i; + + for(i = 0; i < cnt; i++) + { + // Mapping the H/W socket numbers to the sequential index numbers + HTTPSock_Num[i] = socklist[i]; + } +} + +static uint8_t getHTTPSocketNum(uint8_t seqnum) +{ + // Return the 'H/W socket number' corresponding to the index number + return HTTPSock_Num[seqnum]; +} + +static int8_t getHTTPSequenceNum(uint8_t socket) +{ + uint8_t i; + + for(i = 0; i < _WIZCHIP_SOCK_NUM_; i++) + if(HTTPSock_Num[i] == socket) return i; + + return -1; +} + +void httpServer_init(uint8_t * tx_buf, uint8_t * rx_buf, uint8_t cnt, uint8_t * socklist) +{ + // User's shared buffer + pHTTP_TX = tx_buf; + pHTTP_RX = rx_buf; + + // H/W Socket number mapping + httpServer_Sockinit(cnt, socklist); +} + + +/* Register the call back functions for HTTP Server */ +void reg_httpServer_cbfunc(void(*mcu_reset)(void), void(*wdt_reset)(void)) +{ + // Callback: HW Reset and WDT reset function for each MCU platforms + if(mcu_reset) HTTPServer_ReStart = mcu_reset; + if(wdt_reset) HTTPServer_WDT_Reset = wdt_reset; +} + + +void httpServer_run(uint8_t seqnum) +{ + uint8_t s; // socket number + uint16_t len; + uint32_t gettime = 0; + +#ifdef _HTTPSERVER_DEBUG_ + uint8_t destip[4] = {0, }; + uint16_t destport = 0; +#endif + + http_request = (st_http_request *)pHTTP_RX; // Structure of HTTP Request + parsed_http_request = (st_http_request *)pHTTP_TX; + + // Get the H/W socket number + s = getHTTPSocketNum(seqnum); + + /* HTTP Service Start */ + switch(getSn_SR(s)) + { + case SOCK_ESTABLISHED: + // Interrupt clear + if(getSn_IR(s) & Sn_IR_CON) + { + setSn_IR(s, Sn_IR_CON); + } + + // HTTP Process states + switch(HTTPSock_Status[seqnum].sock_status) + { + + case STATE_HTTP_IDLE : + if ((len = getSn_RX_RSR(s)) > 0) + { + if (len > DATA_BUF_SIZE) len = DATA_BUF_SIZE; + len = recv(s, (uint8_t *)http_request, len); + + *(((uint8_t *)http_request) + len) = '\0'; + + parse_http_request(parsed_http_request, (uint8_t *)http_request); +#ifdef _HTTPSERVER_DEBUG_ + getSn_DIPR(s, destip); + destport = getSn_DPORT(s); + printf("\r\n"); + printf("> HTTPSocket[%d] : HTTP Request received ", s); + printf("from %d.%d.%d.%d : %d\r\n", destip[0], destip[1], destip[2], destip[3], destport); +#endif +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : [State] STATE_HTTP_REQ_DONE\r\n", s); +#endif + // HTTP 'response' handler; includes send_http_response_header / body function + http_process_handler(s, parsed_http_request); + + gettime = get_httpServer_timecount(); + // Check the TX socket buffer for End of HTTP response sends + while(getSn_TX_FSR(s) != (getSn_TxMAX(s))) + { + if((get_httpServer_timecount() - gettime) > 3) + { +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : [State] STATE_HTTP_REQ_DONE: TX Buffer clear timeout\r\n", s); +#endif + break; + } + } + + if(HTTPSock_Status[seqnum].file_len > 0) HTTPSock_Status[seqnum].sock_status = STATE_HTTP_RES_INPROC; + else HTTPSock_Status[seqnum].sock_status = STATE_HTTP_RES_DONE; // Send the 'HTTP response' end + } + break; + + case STATE_HTTP_RES_INPROC : + /* Repeat: Send the remain parts of HTTP responses */ +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : [State] STATE_HTTP_RES_INPROC\r\n", s); +#endif + // Repeatedly send remaining data to client + send_http_response_body(s, 0, http_response, 0, 0); + + if(HTTPSock_Status[seqnum].file_len == 0) HTTPSock_Status[seqnum].sock_status = STATE_HTTP_RES_DONE; + break; + + case STATE_HTTP_RES_DONE : +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : [State] STATE_HTTP_RES_DONE\r\n", s); +#endif + // Socket file info structure re-initialize + HTTPSock_Status[seqnum].file_len = 0; + HTTPSock_Status[seqnum].file_offset = 0; + HTTPSock_Status[seqnum].file_start = 0; + HTTPSock_Status[seqnum].sock_status = STATE_HTTP_IDLE; + +//#ifdef _USE_SDCARD_ +// f_close(&fs); +//#endif +#ifdef _USE_WATCHDOG_ + HTTPServer_WDT_Reset(); +#endif + http_disconnect(s); + break; + + default : + break; + } + break; + + case SOCK_CLOSE_WAIT: +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : ClOSE_WAIT\r\n", s); // if a peer requests to close the current connection +#endif + disconnect(s); + break; + + case SOCK_CLOSED: +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : CLOSED\r\n", s); +#endif + if(socket(s, Sn_MR_TCP, HTTP_SERVER_PORT, 0x00) == s) /* Reinitialize the socket */ + { +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : OPEN\r\n", s); +#endif + } + break; + + case SOCK_INIT: + listen(s); + break; + + case SOCK_LISTEN: + break; + + default : + break; + + } // end of switch + +#ifdef _USE_WATCHDOG_ + HTTPServer_WDT_Reset(); +#endif +} + +//////////////////////////////////////////// +// Private Functions +//////////////////////////////////////////// +static void send_http_response_header(uint8_t s, uint8_t content_type, uint32_t body_len, uint16_t http_status) +{ + switch(http_status) + { + case STATUS_OK: // HTTP/1.1 200 OK + if((content_type != PTYPE_CGI) && (content_type != PTYPE_XML)) // CGI/XML type request does not respond HTTP header + { +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : HTTP Response Header - STATUS_OK\r\n", s); +#endif + make_http_response_head((char*)http_response, content_type, body_len); + } + else + { +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : HTTP Response Header - NONE / CGI or XML\r\n", s); +#endif + // CGI/XML type request does not respond HTTP header to client + http_status = 0; + } + break; + case STATUS_BAD_REQ: // HTTP/1.1 400 OK +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : HTTP Response Header - STATUS_BAD_REQ\r\n", s); +#endif + memcpy(http_response, ERROR_REQUEST_PAGE, sizeof(ERROR_REQUEST_PAGE)); + break; + case STATUS_NOT_FOUND: // HTTP/1.1 404 Not Found +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : HTTP Response Header - STATUS_NOT_FOUND\r\n", s); +#endif + memcpy(http_response, ERROR_HTML_PAGE, sizeof(ERROR_HTML_PAGE)); + break; + default: + break; + } + + // Send the HTTP Response 'header' + if(http_status) + { +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : [Send] HTTP Response Header [ %d ]byte\r\n", s, (uint16_t)strlen((char *)http_response)); +#endif + send(s, http_response, strlen((char *)http_response)); + } +} + +static void send_http_response_body(uint8_t s, uint8_t * uri_name, uint8_t * buf, uint32_t start_addr, uint32_t file_len) +{ + int8_t get_seqnum; + uint32_t send_len; + + uint8_t flag_datasend_end = 0; + +#ifdef _USE_SDCARD_ + uint16_t blocklen; +#endif +#ifdef _USE_FLASH_ + uint32_t addr = 0; +#endif + + if((get_seqnum = getHTTPSequenceNum(s)) == -1) return; // exception handling; invalid number + + // Send the HTTP Response 'body'; requested file + if(!HTTPSock_Status[get_seqnum].file_len) // ### Send HTTP response body: First part ### + { + if (file_len > DATA_BUF_SIZE - 1) + { + HTTPSock_Status[get_seqnum].file_start = start_addr; + HTTPSock_Status[get_seqnum].file_len = file_len; + send_len = DATA_BUF_SIZE - 1; + +///////////////////////////////////////////////////////////////////////////////////////////////// +// ## 20141219 Eric added, for 'File object structure' (fs) allocation reduced (8 -> 1) + memset(HTTPSock_Status[get_seqnum].file_name, 0x00, MAX_CONTENT_NAME_LEN); + strcpy((char *)HTTPSock_Status[get_seqnum].file_name, (char *)uri_name); +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : HTTP Response body - file name [ %s ]\r\n", s, HTTPSock_Status[get_seqnum].file_name); +#endif +///////////////////////////////////////////////////////////////////////////////////////////////// + +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : HTTP Response body - file len [ %ld ]byte\r\n", s, file_len); +#endif + } + else + { + // Send process end + send_len = file_len; + +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : HTTP Response end - file len [ %ld ]byte\r\n", s, send_len); +#endif + } +#ifdef _USE_FLASH_ + if(HTTPSock_Status[get_seqnum]->storage_type == DATAFLASH) addr = start_addr; +#endif + } + else // remained parts + { +#ifdef _USE_FLASH_ + if(HTTPSock_Status[get_seqnum]->storage_type == DATAFLASH) + { + addr = HTTPSock_Status[get_seqnum].file_start + HTTPSock_Status[get_seqnum].file_offset; + } +#endif + send_len = HTTPSock_Status[get_seqnum].file_len - HTTPSock_Status[get_seqnum].file_offset; + + if(send_len > DATA_BUF_SIZE - 1) + { + send_len = DATA_BUF_SIZE - 1; + //HTTPSock_Status[get_seqnum]->file_offset += send_len; + } + else + { +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : HTTP Response end - file len [ %ld ]byte\r\n", s, HTTPSock_Status[get_seqnum].file_len); +#endif + // Send process end + flag_datasend_end = 1; + } +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : HTTP Response body - send len [ %ld ]byte\r\n", s, send_len); +#endif + } + +/*****************************************************/ + //HTTPSock_Status[get_seqnum]->storage_type == NONE + //HTTPSock_Status[get_seqnum]->storage_type == CODEFLASH + //HTTPSock_Status[get_seqnum]->storage_type == SDCARD + //HTTPSock_Status[get_seqnum]->storage_type == DATAFLASH +/*****************************************************/ + + if(HTTPSock_Status[get_seqnum].storage_type == CODEFLASH) + { + if(HTTPSock_Status[get_seqnum].file_len) start_addr = HTTPSock_Status[get_seqnum].file_start; + read_userReg_webContent(start_addr, &buf[0], HTTPSock_Status[get_seqnum].file_offset, send_len); + } +#ifdef _USE_SDCARD_ + else if(HTTPSock_Status[get_seqnum].storage_type == SDCARD) + { + // Data read from SD Card + fr = f_read(&fs, &buf[0], send_len, (void *)&blocklen); + if(fr != FR_OK) + { + send_len = 0; +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : [FatFs] Error code return: %d (File Read) / HTTP Send Failed - %s\r\n", s, fr, HTTPSock_Status[get_seqnum].file_name); +#endif + } + else + { + *(buf+send_len+1) = 0; // Insert '/0' for indicates the 'End of String' (null terminated) + } + } +#endif + +#ifdef _USE_FLASH_ + else if(HTTPSock_Status[get_seqnum]->storage_type == DATAFLASH) + { + // Data read from external data flash memory + read_from_flashbuf(addr, &buf[0], send_len); + *(buf+send_len+1) = 0; // Insert '/0' for indicates the 'End of String' (null terminated) + } +#endif + else + { + send_len = 0; + } + // Requested content send to HTTP client +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : [Send] HTTP Response body [ %ld ]byte\r\n", s, send_len); +#endif + + if(send_len) send(s, buf, send_len); + else flag_datasend_end = 1; + + if(flag_datasend_end) + { + HTTPSock_Status[get_seqnum].file_start = 0; + HTTPSock_Status[get_seqnum].file_len = 0; + HTTPSock_Status[get_seqnum].file_offset = 0; + flag_datasend_end = 0; + } + else + { + HTTPSock_Status[get_seqnum].file_offset += send_len; +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : HTTP Response body - offset [ %ld ]\r\n", s, HTTPSock_Status[get_seqnum].file_offset); +#endif + } + +// ## 20141219 Eric added, for 'File object structure' (fs) allocation reduced (8 -> 1) +#ifdef _USE_SDCARD_ + f_close(&fs); +#endif +// ## 20141219 added end +} + +static void send_http_response_cgi(uint8_t s, uint8_t * buf, uint8_t * http_body, uint16_t file_len) +{ + uint16_t send_len = 0; + +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : HTTP Response Header + Body - CGI\r\n", s); +#endif + send_len = sprintf((char *)buf, "%s%d\r\n\r\n%s", RES_CGIHEAD_OK, file_len, http_body); +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : HTTP Response Header + Body - send len [ %d ]byte\r\n", s, send_len); +#endif + + send(s, buf, send_len); +} + + +static int8_t http_disconnect(uint8_t sn) +{ + setSn_CR(sn,Sn_CR_DISCON); + /* wait to process the command... */ + while(getSn_CR(sn)); + + return SOCK_OK; +} + + +static void http_process_handler(uint8_t s, st_http_request * p_http_request) +{ + uint8_t * uri_name; + uint32_t content_addr = 0; + uint16_t content_num = 0; + uint32_t file_len = 0; + + uint8_t uri_buf[MAX_URI_SIZE]={0x00, }; + + uint16_t http_status; + int8_t get_seqnum; + uint8_t content_found; + + if((get_seqnum = getHTTPSequenceNum(s)) == -1) return; // exception handling; invalid number + + http_status = 0; + http_response = pHTTP_RX; + file_len = 0; + + //method Analyze + switch (p_http_request->METHOD) + { + case METHOD_ERR : + http_status = STATUS_BAD_REQ; + send_http_response_header(s, 0, 0, http_status); + break; + + case METHOD_HEAD : + case METHOD_GET : + get_http_uri_name(p_http_request->URI, uri_buf); + uri_name = uri_buf; + + if (!strcmp((char *)uri_name, "/")) strcpy((char *)uri_name, INITIAL_WEBPAGE); // If URI is "/", respond by index.html + if (!strcmp((char *)uri_name, "m")) strcpy((char *)uri_name, M_INITIAL_WEBPAGE); + if (!strcmp((char *)uri_name, "mobile")) strcpy((char *)uri_name, MOBILE_INITIAL_WEBPAGE); + find_http_uri_type(&p_http_request->TYPE, uri_name); // Checking requested file types (HTML, TEXT, GIF, JPEG and Etc. are included) + +#ifdef _HTTPSERVER_DEBUG_ + printf("\r\n> HTTPSocket[%d] : HTTP Method GET\r\n", s); + printf("> HTTPSocket[%d] : Request Type = %d\r\n", s, p_http_request->TYPE); + printf("> HTTPSocket[%d] : Request URI = %s\r\n", s, uri_name); +#endif + + if(p_http_request->TYPE == PTYPE_CGI) + { + content_found = http_get_cgi_handler(uri_name, pHTTP_TX, &file_len); + if(content_found && (file_len <= (DATA_BUF_SIZE-(strlen(RES_CGIHEAD_OK)+8)))) + { + send_http_response_cgi(s, http_response, pHTTP_TX, (uint16_t)file_len); + } + else + { + send_http_response_header(s, PTYPE_CGI, 0, STATUS_NOT_FOUND); + } + } + else + { + // Find the User registered index for web content + if(find_userReg_webContent(uri_buf, &content_num, &file_len)) + { + content_found = 1; // Web content found in code flash memory + content_addr = (uint32_t)content_num; + HTTPSock_Status[get_seqnum].storage_type = CODEFLASH; + } + // Not CGI request, Web content in 'SD card' or 'Data flash' requested +#ifdef _USE_SDCARD_ +#ifdef _HTTPSERVER_DEBUG_ + printf("\r\n> HTTPSocket[%d] : Searching the requested content\r\n", s); +#endif + if((fr = f_open(&fs, (const char *)uri_name, FA_READ)) == 0) + { + content_found = 1; // file open succeed + + file_len = fs.fsize; + content_addr = fs.sclust; + HTTPSock_Status[get_seqnum].storage_type = SDCARD; + } +#elif _USE_FLASH_ + else if(/* Read content from Dataflash */) + { + content_found = 1; + HTTPSock_Status[get_seqnum]->storage_type = DATAFLASH; + ; // To do + } +#endif + else + { + content_found = 0; // fail to find content + } + + if(!content_found) + { +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : Unknown Page Request\r\n", s); +#endif + http_status = STATUS_NOT_FOUND; + } + else + { +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : Find Content [%s] ok - Start [%ld] len [ %ld ]byte\r\n", s, uri_name, content_addr, file_len); +#endif + http_status = STATUS_OK; + } + + // Send HTTP header + if(http_status) + { +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : Requested content len = [ %ld ]byte\r\n", s, file_len); +#endif + send_http_response_header(s, p_http_request->TYPE, file_len, http_status); + } + + // Send HTTP body (content) + if(http_status == STATUS_OK) + { + send_http_response_body(s, uri_name, http_response, content_addr, file_len); + } + } + break; + + case METHOD_POST : + mid((char *)p_http_request->URI, "/", " HTTP", (char *)uri_buf); + uri_name = uri_buf; + find_http_uri_type(&p_http_request->TYPE, uri_name); // Check file type (HTML, TEXT, GIF, JPEG are included) + +#ifdef _HTTPSERVER_DEBUG_ + printf("\r\n> HTTPSocket[%d] : HTTP Method POST\r\n", s); + printf("> HTTPSocket[%d] : Request URI = %s ", s, uri_name); + printf("Type = %d\r\n", p_http_request->TYPE); +#endif + + if(p_http_request->TYPE == PTYPE_CGI) // HTTP POST Method; CGI Process + { + content_found = http_post_cgi_handler(uri_name, p_http_request, http_response, &file_len); +#ifdef _HTTPSERVER_DEBUG_ + printf("> HTTPSocket[%d] : [CGI: %s] / Response len [ %ld ]byte\r\n", s, content_found?"Content found":"Content not found", file_len); +#endif + if(content_found && (file_len <= (DATA_BUF_SIZE-(strlen(RES_CGIHEAD_OK)+8)))) + { + send_http_response_cgi(s, pHTTP_TX, http_response, (uint16_t)file_len); + + // Reset the H/W for apply to the change configuration information + if(content_found == HTTP_RESET) HTTPServer_ReStart(); + } + else + { + send_http_response_header(s, PTYPE_CGI, 0, STATUS_NOT_FOUND); + } + } + else // HTTP POST Method; Content not found + { + send_http_response_header(s, 0, 0, STATUS_NOT_FOUND); + } + break; + + default : + http_status = STATUS_BAD_REQ; + send_http_response_header(s, 0, 0, http_status); + break; + } +} + +void httpServer_time_handler(void) +{ + httpServer_tick_1s++; +} + +uint32_t get_httpServer_timecount(void) +{ + return httpServer_tick_1s; +} + +void reg_httpServer_webContent(uint8_t * content_name, uint8_t * content) +{ + uint16_t name_len; + uint32_t content_len; + + if(content_name == NULL || content == NULL) + { + return; + } + else if(total_content_cnt >= MAX_CONTENT_CALLBACK) + { + return; + } + + name_len = strlen((char *)content_name); + content_len = strlen((char *)content); + + web_content[total_content_cnt].content_name = malloc(name_len+1); + strcpy((char *)web_content[total_content_cnt].content_name, (const char *)content_name); + web_content[total_content_cnt].content_len = content_len; + web_content[total_content_cnt].content = content; + + total_content_cnt++; +} + +uint8_t display_reg_webContent_list(void) +{ + uint16_t i; + uint8_t ret; + + if(total_content_cnt == 0) + { + printf(">> Web content file not found\r\n"); + ret = 0; + } + else + { + printf("\r\n=== List of Web content in code flash ===\r\n"); + for(i = 0; i < total_content_cnt; i++) + { + printf(" [%d] ", i+1); + printf("%s, ", web_content[i].content_name); + printf("%ld byte, ", web_content[i].content_len); + + if(web_content[i].content_len < 30) printf("[%s]\r\n", web_content[i].content); + else printf("[ ... ]\r\n"); + } + printf("=========================================\r\n\r\n"); + ret = 1; + } + + return ret; +} + +uint8_t find_userReg_webContent(uint8_t * content_name, uint16_t * content_num, uint32_t * file_len) +{ + uint16_t i; + uint8_t ret = 0; // '0' means 'File Not Found' + + for(i = 0; i < total_content_cnt; i++) + { + if(!strcmp((char *)content_name, (char *)web_content[i].content_name)) + { + *file_len = web_content[i].content_len; + *content_num = i; + ret = 1; // If the requested content found, ret set to '1' (Found) + break; + } + } + return ret; +} + + +uint16_t read_userReg_webContent(uint16_t content_num, uint8_t * buf, uint32_t offset, uint16_t size) +{ + uint16_t ret = 0; + uint8_t * ptr; + + if(content_num > total_content_cnt) return 0; + + ptr = web_content[content_num].content; + if(offset) ptr += offset; + + strncpy((char *)buf, (char *)ptr, size); + *(buf+size) = 0; // Insert '/0' for indicates the 'End of String' (null terminated) + + ret = strlen((void *)buf); + return ret; +} diff --git a/User/ioLibrary_Driver/Internet/httpServer/httpServer.h b/User/ioLibrary_Driver/Internet/httpServer/httpServer.h new file mode 100644 index 0000000..dcd0b00 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/httpServer/httpServer.h @@ -0,0 +1,111 @@ +/** + @file httpServer.h + @brief Define constants and functions related HTTP Web server. + */ + +#include + +#ifndef __HTTPSERVER_H__ +#define __HTTPSERVER_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +// HTTP Server debug message enable +#define _HTTPSERVER_DEBUG_ + +#define INITIAL_WEBPAGE "index.html" +#define M_INITIAL_WEBPAGE "m/index.html" +#define MOBILE_INITIAL_WEBPAGE "mobile/index.html" + +/* Web Server Content Storage Select */ +//#define _USE_SDCARD_ +#ifndef _USE_SDCARD_ +//#define _USE_FLASH_ +#endif + +#if !defined(_USE_SDCARD_) && !defined(_USE_FLASH_) +#define _NOTUSED_STORAGE_ +#endif + + +/* Watchdog timer */ +//#define _USE_WATCHDOG_ + +/********************************************* +* HTTP Process states list +*********************************************/ +#define STATE_HTTP_IDLE 0 /* IDLE, Waiting for data received (TCP established) */ +#define STATE_HTTP_REQ_INPROC 1 /* Received HTTP request from HTTP client */ +#define STATE_HTTP_REQ_DONE 2 /* The end of HTTP request parse */ +#define STATE_HTTP_RES_INPROC 3 /* Sending the HTTP response to HTTP client (in progress) */ +#define STATE_HTTP_RES_DONE 4 /* The end of HTTP response send (HTTP transaction ended) */ + +/********************************************* +* HTTP Simple Return Value +*********************************************/ +#define HTTP_FAILED 0 +#define HTTP_OK 1 +#define HTTP_RESET 2 + +/********************************************* +* HTTP Content NAME length +*********************************************/ +#define MAX_CONTENT_NAME_LEN 128 + +/********************************************* +* HTTP Timeout +*********************************************/ +#define HTTP_MAX_TIMEOUT_SEC 3 // Sec. + +typedef enum +{ + NONE, ///< Web storage none + CODEFLASH, ///< Code flash memory + SDCARD, ///< SD card + DATAFLASH ///< External data flash memory +}StorageType; + +typedef struct _st_http_socket +{ + uint8_t sock_status; + uint8_t file_name[MAX_CONTENT_NAME_LEN]; + uint32_t file_start; + uint32_t file_len; + uint32_t file_offset; // (start addr + sent size...) + uint8_t storage_type; // Storage type; Code flash, SDcard, Data flash ... +}st_http_socket; + +// Web content structure for file in code flash memory +#define MAX_CONTENT_CALLBACK 20 + +typedef struct _httpServer_webContent +{ + uint8_t * content_name; + uint32_t content_len; + uint8_t * content; +}httpServer_webContent; + + +void httpServer_init(uint8_t * tx_buf, uint8_t * rx_buf, uint8_t cnt, uint8_t * socklist); +void reg_httpServer_cbfunc(void(*mcu_reset)(void), void(*wdt_reset)(void)); +void httpServer_run(uint8_t seqnum); + +void reg_httpServer_webContent(uint8_t * content_name, uint8_t * content); +uint8_t find_userReg_webContent(uint8_t * content_name, uint16_t * content_num, uint32_t * file_len); +uint16_t read_userReg_webContent(uint16_t content_num, uint8_t * buf, uint32_t offset, uint16_t size); +uint8_t display_reg_webContent_list(void); + +/* + * @brief HTTP Server 1sec Tick Timer handler + * @note SHOULD BE register to your system 1s Tick timer handler + */ +void httpServer_time_handler(void); +uint32_t get_httpServer_timecount(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/User/ioLibrary_Driver/Internet/httpServer/httpUtil.c b/User/ioLibrary_Driver/Internet/httpServer/httpUtil.c new file mode 100644 index 0000000..1c8cbf2 --- /dev/null +++ b/User/ioLibrary_Driver/Internet/httpServer/httpUtil.c @@ -0,0 +1,75 @@ +/** + * @file httpUtil.c + * @brief HTTP Server Utilities + * @version 1.0 + * @date 2014/07/15 + * @par Revision + * 2014/07/15 - 1.0 Release + * @author + * \n\n @par Copyright (C) 1998 - 2014 WIZnet. All rights reserved. + */ + +#include +#include +#include +#include "httpUtil.h" + +uint8_t http_get_cgi_handler(uint8_t * uri_name, uint8_t * buf, uint32_t * file_len) +{ + uint8_t ret = HTTP_OK; + uint16_t len = 0; + + if(predefined_get_cgi_processor(uri_name, buf, &len)) + { + ; + } + else if(strcmp((const char *)uri_name, "example.cgi") == 0) + { + // To do + ; + } + else + { + // CGI file not found + ret = HTTP_FAILED; + } + + if(ret) *file_len = len; + return ret; +} + +uint8_t http_post_cgi_handler(uint8_t * uri_name, st_http_request * p_http_request, uint8_t * buf, uint32_t * file_len) +{ + uint8_t ret = HTTP_OK; + uint16_t len = 0; + uint8_t val = 0; + + if(predefined_set_cgi_processor(uri_name, p_http_request->URI, buf, &len)) + { + ; + } + else if(strcmp((const char *)uri_name, "example.cgi") == 0) + { + // To do + val = 1; + len = sprintf((char *)buf, "%d", val); + } + else + { + // CGI file not found + ret = HTTP_FAILED; + } + + if(ret) *file_len = len; + return ret; +} + +uint8_t predefined_get_cgi_processor(uint8_t * uri_name, uint8_t * buf, uint16_t * len) +{ + ; +} + +uint8_t predefined_set_cgi_processor(uint8_t * uri_name, uint8_t * uri, uint8_t * buf, uint16_t * en) +{ + ; +} diff --git a/User/ioLibrary_Driver/Internet/httpServer/httpUtil.h b/User/ioLibrary_Driver/Internet/httpServer/httpUtil.h new file mode 100644 index 0000000..f2c384a --- /dev/null +++ b/User/ioLibrary_Driver/Internet/httpServer/httpUtil.h @@ -0,0 +1,32 @@ +/** + * @file httpUtil.h + * @brief Header File for HTTP Server Utilities + * @version 1.0 + * @date 2014/07/15 + * @par Revision + * 2014/07/15 - 1.0 Release + * @author + * \n\n @par Copyright (C) 1998 - 2014 WIZnet. All rights reserved. + */ + +#ifndef __HTTPUTIL_H__ +#define __HTTPUTIL_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "httpServer.h" +#include "httpParser.h" + +uint8_t http_get_cgi_handler(uint8_t * uri_name, uint8_t * buf, uint32_t * file_len); +uint8_t http_post_cgi_handler(uint8_t * uri_name, st_http_request * p_http_request, uint8_t * buf, uint32_t * file_len); + +uint8_t predefined_get_cgi_processor(uint8_t * uri_name, uint8_t * buf, uint16_t * len); +uint8_t predefined_set_cgi_processor(uint8_t * uri_name, uint8_t * uri, uint8_t * buf, uint16_t * len); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/User/ioLibrary_Driver/README.md b/User/ioLibrary_Driver/README.md new file mode 100644 index 0000000..60367a0 --- /dev/null +++ b/User/ioLibrary_Driver/README.md @@ -0,0 +1,128 @@ +# ioLibrary Driver +The ioLibrary means “Internet Offload Library” for WIZnet chip. It includes drivers and application protocols. +The driver (ioLibrary) can be used for the application design of WIZnet TCP/IP chips as [W5500](http://wizwiki.net/wiki/doku.php?id=products:w5500:start), W5300, W5200, W5100 [W5100S](http://wizwiki.net/wiki/doku.php?id=products:w5100s:start). + +## ioLibrary +This driver provides the Berkeley Socket type APIs. +- The tree of Directory + + +```1 +ioLibrary + ┣ Application + ┃ ┣ loopback + ┃ ┃ ┣ loopback.c + ┃ ┃ ┗ loopback.h + ┃ ┗ multicast + ┃ ┣ multicast.c + ┃ ┗ multicast.h + ┣ Ethernet + ┃ ┣ W5100 + ┃ ┃ ┣ w5100.c + ┃ ┃ ┗ w5100.h + ┃ ┣ W5100S + ┃ ┃ ┣ w5100s.c + ┃ ┃ ┗ w5100s.h + ┃ ┣ W5200 + ┃ ┃ ┣ w5200.c + ┃ ┃ ┗ w5200.h + ┃ ┣ W5300 + ┃ ┃ ┣ w5300.c + ┃ ┃ ┗ w5300.h + ┃ ┗ W5500 + ┃ ┣ w5500.c + ┃ ┗ w5500.h + ┗ Internet + ┣ DHCP + ┃ ┣ dhcp.c + ┃ ┗ dhcp.h + ┣ DNS + ┃ ┣ dns.c + ┃ ┗ dns.h + ┣ FTPClient + ┃ ┣ ftpc.c + ┃ ┣ ftpc.h + ┃ ┗ stdio_private.h + ┣ FTPServer + ┃ ┣ ftpd.c + ┃ ┣ ftpd.h + ┃ ┣ REAME.md + ┃ ┗ stdio_private.h + ┣ httpServer + ┃ ┣ httpParser.c + ┃ ┣ httpParser.h + ┃ ┣ httpServer.c + ┃ ┣ httpServer.h + ┃ ┣ httpUtil.c + ┃ ┗ httpUtil.h + ┣ MQTT + ┃ ┣ MQTTPacket + ┃ ┣ mqtt_interface.c + ┃ ┣ mqtt_interface.h + ┃ ┣ MQTTClient.c + ┃ ┗ MQTTClient.h + ┣ SNMP + ┃ ┣ tools + ┃ ┣ snmp.c + ┃ ┣ snmp.h + ┃ ┣ snmp_custom.c + ┃ ┗ snmp_custom.h + ┣ SNTP + ┃ ┣ sntp.c + ┃ ┗ sntp.h + ┗ TFTP + ┣ netutil.c + ┣ netutil.h + ┣ tftp.c + ┗ tftp.h + +``` + +- Ethernet : SOCKET APIs like BSD & WIZCHIP([W5500](http://wizwiki.net/wiki/doku.php?id=products:w5500:start) / W5300 / W5200 / W5100 / [W5100S](http://wizwiki.net/wiki/doku.php?id=products:w5100s:start)) Driver +- Internet : + - DHCP client + - DNS client + - FTP client + - FTP server + - SNMP agent/trap + - SNTP client + - TFTP client + - HTTP server + - MQTT Client + - Others will be added. + +## How to add an ioLibrary in project through github site. + - Example, refer to https://www.youtube.com/watch?v=mt815RBGdsA + - [ioLibrary Doxygen doument](https://github.com/Wiznet/ioLibrary_Driver/blob/master/Ethernet/Socket_APIs_V3.0.3.chm) : Refer to **TODO** in this document + - Define what chip is used in **wizchip_conf.h** + - Define what Host I/F mode is used in **wizchip_conf.h** + +## Revision History + * ioLibrary V4.0.0 Released : 29, MAR, 2018 + * New features added: Library for W5100S added. + * ioLibrary V3.1.1 Released : 14, Dec, 2016 + * Bug fixed : In Socket.c Fixed MACraw & IPraw sendto function. + * ioLibrary V3.1.0 Released : 05, Dec, 2016 + * Internet application protocol add to MQTT Client (using paho MQTT 3.11) + * ioLibrary V3.0.3 Released : 03, May, 2016 + * In W5300, Fixed some compile errors in close(). Refer to M20160503 + * In close(), replace socket() with some command sequences. + * ioLibrary V3.0.2 Released : 26, April, 2016 + * Applied the erratum #1 in close() of socket.c (Refer to A20160426) + * ioLibrary V3.0.1 Released : 15, July, 2015 + * Bug fixed : In W5100, Fixed CS control problem in read/write buffer with SPI. Refer to M20150715. + * ioLibrary V3.0 Released : 01, June, 2015 + * Add to W5300 + * Typing Error in comments + * Refer to 20150601 in sources. + + * Type casting error Fixed : 09, April. 2015 + In socket.c, send() : Refer to M20150409 + + * ioLibrary V2.0 released : April. 2015 + * Added to W5100, W5200 + * Correct to some typing error + * Fixed the warning of type casting. + + * Last release : Nov. 2014 + diff --git a/User/ioLibrary_Driver/iolibrary.chm b/User/ioLibrary_Driver/iolibrary.chm new file mode 100644 index 0000000..22ed4b0 Binary files /dev/null and b/User/ioLibrary_Driver/iolibrary.chm differ diff --git a/User/ioLibrary_Driver/license.txt b/User/ioLibrary_Driver/license.txt new file mode 100644 index 0000000..12b994a --- /dev/null +++ b/User/ioLibrary_Driver/license.txt @@ -0,0 +1,22 @@ + +Copyright (c) 2014 WIZnet Co.,Ltd. +Copyright (c) WIZnet ioLibrary Project. +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/User/user_main/user_main.c b/User/user_main/user_main.c new file mode 100644 index 0000000..3a41ac3 --- /dev/null +++ b/User/user_main/user_main.c @@ -0,0 +1,46 @@ +#include "user_main.h" +#include +#include +#include "wizchip_conf.h" +#include "wiz_interface.h" +#include "loopback.h" + +/*wizchip->STM32 Hardware Pin define*/ +// wizchip_SCS ---> STM32_GPIOD7 +// wizchip_SCLK ---> STM32_GPIOB13 +// wizchip_MISO ---> STM32_GPIOB14 +// wizchip_MOSI ---> STM32_GPIOB15 +// wizchip_RESET ---> STM32_GPIOD8 +// wizchip_INT ---> STM32_GPIOD9 + +/* Define network information */ +wiz_NetInfo default_net_info = { + .mac = {0x00, 0x08, 0xdc, 0x12, 0x22, 0x12}, + .ip = {192, 168, 6, 212}, + .gw = {192, 168, 6, 1}, + .sn = {255, 255, 255, 0}, + .dns = {8, 8, 8, 8}, + .dhcp = NETINFO_STATIC + //.dhcp = NETINFO_STATIC //static ip +}; +uint16_t local_port = 8000; +static uint8_t ethernet_buf[ETHERNET_BUF_MAX_SIZE] = {0}; +/** + * @brief User Run Program + * @param none + * @return none + */ +void user_run(void) +{ + printf("wizchip UDP example\r\n"); + + /* wizchip init */ + wizchip_initialize(); + + /* set network information */ + network_init(ethernet_buf, &default_net_info); + while (1) + { + loopback_udps(SOCKET_ID, ethernet_buf, local_port); + } +} diff --git a/User/user_main/user_main.h b/User/user_main/user_main.h new file mode 100644 index 0000000..d2ee565 --- /dev/null +++ b/User/user_main/user_main.h @@ -0,0 +1,18 @@ +#ifndef __USER_MAIN_H__ +#define __USER_MAIN_H__ + +#include "wizchip_conf.h" // 加入這行以識別 wiz_NetInfo 型別 + +// 透過 extern 將網路配置參數暴露給 main.c 使用 +extern wiz_NetInfo default_net_info; +#define SOCKET_ID 0 +#define ETHERNET_BUF_MAX_SIZE (1024 * 2) + +/** + * @brief User Run Program + * @param none + * @return none + */ + +void user_run(void); +#endif diff --git a/User/wiz_interface/wiz_interface.c b/User/wiz_interface/wiz_interface.c new file mode 100644 index 0000000..ddb216c --- /dev/null +++ b/User/wiz_interface/wiz_interface.c @@ -0,0 +1,321 @@ +#include "wiz_interface.h" +#include "wiz_platform.h" +#include "wizchip_conf.h" +#include "dhcp.h" +#include +#include +#include + +#define W5500_VERSION 0x04 + +struct wiz_timer +{ + void (*func)(void); // Callback function pointer for a function to execute when the timer fires + uint32_t trigger_time; // Trigger time(ms) + uint32_t count_time; // Current count value(ms) + struct wiz_timer *next; // next timer node +}; + +struct wiz_timer *wiz_timer_head = NULL; +volatile uint32_t wiz_delay_ms_count = 0; + +/** + * @brief Create wiz_timer Node + * @param func :Callback function pointer for a function to execute when the timer fires + * @param time :Trigger time, usually in milliseconds + * + * @return Returns pointer to wiz_timer node when successfully created, otherwise returns NULL + */ +static struct wiz_timer *create_wiz_timer_node(void (*func)(void), uint32_t time) +{ + struct wiz_timer *newNode = (struct wiz_timer *)malloc(sizeof(struct wiz_timer)); + if (newNode == NULL) + { + printf("Memory allocation failed.\n"); + return NULL; + } + newNode->func = func; + newNode->trigger_time = time; + newNode->count_time = 0; + newNode->next = NULL; + return newNode; +} + +/** + * @brief Add a new timer node to the timer chain table + * @param func Callback function pointer, called when the timer time is reached + * @param time Trigger time (ms) + */ +void wiz_add_timer(void (*func)(void), uint32_t time) +{ + struct wiz_timer *newNode = create_wiz_timer_node(func, time); + if (wiz_timer_head == NULL) + { + wiz_timer_head = newNode; + return; + } + struct wiz_timer *temp = wiz_timer_head; + while (temp->next != NULL) + { + temp = temp->next; + } + temp->next = newNode; +} + +/** + * @brief Delete the timer for the specified callback function + * @param func callback function pointer + * @return none + */ +void wiz_delete_timer(void (*func)(void)) +{ + struct wiz_timer *temp = wiz_timer_head; + struct wiz_timer *prev = NULL; + + if (temp != NULL && temp->func == func) + { + wiz_timer_head = temp->next; + free(temp); + return; + } + + while (temp != NULL && temp->func != func) + { + prev = temp; + temp = temp->next; + } + + if (temp == NULL) + return; + + prev->next = temp->next; + free(temp); +} + +/** + * @brief wiz timer event handler + * + * You must add this function to your 1ms timer interrupt + * + */ +void wiz_timer_handler(void) +{ + + wiz_delay_ms_count++; + struct wiz_timer *temp = wiz_timer_head; + while (temp != NULL) + { + temp->count_time++; + if (temp->count_time >= temp->trigger_time) + { + temp->count_time = 0; + temp->func(); + } + temp = temp->next; + } +} + +/** + * @brief Delay function in milliseconds + * @param nms :Delay Time + */ +void wiz_user_delay_ms(uint32_t nms) +{ + wiz_delay_ms_count = 0; + while (wiz_delay_ms_count < nms) + { + } +} + +/** + * @brief Check the WIZCHIP version + */ +void wizchip_version_check(void) +{ + uint8_t error_count = 0; + while (1) + { + wiz_user_delay_ms(1000); + if (getVERSIONR() != W5500_VERSION) + { + error_count++; + if (error_count > 5) + { + printf("error, W5500 version is 0x%02x, but read W5500 version value = 0x%02x\r\n", W5500_VERSION, getVERSIONR()); + while (1) + ; + } + } + else + { + break; + } + } +} + +/** + * @brief Print PHY information + */ +void wiz_print_phy_info(void) +{ + uint8_t get_phy_conf; + get_phy_conf = getPHYCFGR(); + printf("The current Mbtis speed : %dMbps\r\n", get_phy_conf & 0x02 ? 100 : 10); + printf("The current Duplex Mode : %s\r\n", get_phy_conf & 0x04 ? "Full-Duplex" : "Half-Duplex"); +} + +/** + * @brief Ethernet Link Detection + */ +void wiz_phy_link_check(void) +{ + uint8_t phy_link_status; + do + { + wiz_user_delay_ms(1000); + ctlwizchip(CW_GET_PHYLINK, (void *)&phy_link_status); + if (phy_link_status == PHY_LINK_ON) + { + printf("PHY link\r\n"); + wiz_print_phy_info(); + } + else + { + printf("PHY no link\r\n"); + } + } while (phy_link_status == PHY_LINK_OFF); +} + +/** + * @brief wizchip init function + * @param none + * @return none + */ +void wizchip_initialize(void) +{ + printf(" -> [WIZ] 注册SPI回调...\r\n"); + wizchip_spi_cb_reg(); + + printf(" -> [WIZ] 执行硬件复位(测试延时是否卡死)...\r\n"); + wizchip_reset(); // <--- 之前是死在这里 + printf(" -> [WIZ] 硬件复位通过!说明 TIM2 定时器工作完全正常!\r\n"); + + printf(" -> [WIZ] 检查SPI通信与芯片版本号...\r\n"); + wizchip_version_check(); // <--- 如果 SPI 线接错了会死在这里 + printf(" -> [WIZ] 版本号检查通过!SPI 通信正常!\r\n"); + + wiz_phy_link_check(); +} + +/** + * @brief print network information + * @param none + * @return none + */ +void print_network_information(void) +{ + wiz_NetInfo net_info; + wizchip_getnetinfo(&net_info); // Get chip configuration information + + if (net_info.dhcp == NETINFO_DHCP) + { + printf("====================================================================================================\r\n"); + printf(" %s network configuration : DHCP\r\n\r\n", _WIZCHIP_ID_); + } + else + { + printf("====================================================================================================\r\n"); + printf(" %s network configuration : static\r\n\r\n", _WIZCHIP_ID_); + } + + printf(" MAC : %02X:%02X:%02X:%02X:%02X:%02X\r\n", net_info.mac[0], net_info.mac[1], net_info.mac[2], net_info.mac[3], net_info.mac[4], net_info.mac[5]); + printf(" IP : %d.%d.%d.%d\r\n", net_info.ip[0], net_info.ip[1], net_info.ip[2], net_info.ip[3]); + printf(" Subnet Mask : %d.%d.%d.%d\r\n", net_info.sn[0], net_info.sn[1], net_info.sn[2], net_info.sn[3]); + printf(" Gateway : %d.%d.%d.%d\r\n", net_info.gw[0], net_info.gw[1], net_info.gw[2], net_info.gw[3]); + printf(" DNS : %d.%d.%d.%d\r\n", net_info.dns[0], net_info.dns[1], net_info.dns[2], net_info.dns[3]); + printf("====================================================================================================\r\n\r\n"); +} + +/** + * @brief DHCP process + * @param sn :socket number + * @param buffer :socket buffer + */ +static uint8_t wiz_dhcp_process(uint8_t sn, uint8_t *buffer) +{ + wiz_NetInfo conf_info; + uint8_t dhcp_run_flag = 1; + uint8_t dhcp_ok_flag = 0; + /* Registration DHCP_time_handler to 1 second timer */ + wiz_add_timer(DHCP_time_handler, 1000); + DHCP_init(sn, buffer); + printf("DHCP running\r\n"); + while (1) + { + switch (DHCP_run()) // Do the DHCP client + { + case DHCP_IP_LEASED: // DHCP Acquiring network information successfully + { + if (dhcp_ok_flag == 0) + { + dhcp_ok_flag = 1; + dhcp_run_flag = 0; + } + break; + } + case DHCP_FAILED: + { + dhcp_run_flag = 0; + break; + } + } + if (dhcp_run_flag == 0) + { + printf("DHCP %s!\r\n", dhcp_ok_flag ? "success" : "fail"); + DHCP_stop(); + + /*DHCP obtained successfully, cancel the registration DHCP_time_handler*/ + wiz_delete_timer(DHCP_time_handler); + + if (dhcp_ok_flag) + { + getIPfromDHCP(conf_info.ip); + getGWfromDHCP(conf_info.gw); + getSNfromDHCP(conf_info.sn); + getDNSfromDHCP(conf_info.dns); + conf_info.dhcp = NETINFO_DHCP; + getSHAR(conf_info.mac); + wizchip_setnetinfo(&conf_info); // Update network information to network information obtained by DHCP + return 1; + } + return 0; + } + } +} + +/** + * @brief set network information + * + * First determine whether to use DHCP. If DHCP is used, first obtain the Internet Protocol Address through DHCP. + * When DHCP fails, use static IP to configure network information. If static IP is used, configure network information directly + * + * @param sn: socketid + * @param ethernet_buff: + * @param net_info: network information struct + * @return none + */ +void network_init(uint8_t *ethernet_buff, wiz_NetInfo *conf_info) +{ + int ret; + wizchip_setnetinfo(conf_info); // Configuring Network Information + if (conf_info->dhcp == NETINFO_DHCP) + { + ret = wiz_dhcp_process(0, ethernet_buff); + if (ret == 0) + { + conf_info->dhcp = NETINFO_STATIC; + wizchip_setnetinfo(conf_info); + } + } + print_network_information(); +} diff --git a/User/wiz_interface/wiz_interface.h b/User/wiz_interface/wiz_interface.h new file mode 100644 index 0000000..cf3d355 --- /dev/null +++ b/User/wiz_interface/wiz_interface.h @@ -0,0 +1,71 @@ +#ifndef __WIZ_INTERFACE_H__ +#define __WIZ_INTERFACE_H__ + +#include "wizchip_conf.h" + +/** + * @brief Add a new timer node to the timer chain table + * @param func Callback function pointer, called when the timer time is reached + * @param time Trigger time (ms) + */ +void wiz_add_timer(void (*func)(void), uint32_t time); + +/** + * @brief Delete the timer for the specified callback function + * @param func callback function pointer + * @return none + */ +void wiz_delete_timer(void (*func)(void)); + +/** + * @brief wiz timer event handler + * + * You must add this function to your 1ms timer interrupt + * + */ +void wiz_timer_handler(void); + +/** + * @brief Delay function in milliseconds + * @param nms :Delay Time + */ +void wiz_user_delay_ms(uint32_t nms); + +/** + * @brief wizchip init function + * @param none + * @return none + */ +void wizchip_initialize(void); + +/** + * @brief print network information + * @param none + * @return none + */ +void print_network_information(void); + +/** + * @brief set network information + * @param sn: socketid + * @param ethernet_buff: + * @param net_info: network information struct + * @return none + */ +void network_init(uint8_t *ethernet_buff, wiz_NetInfo *conf_info); + +/** + * @brief Check the WIZCHIP version + */ +void wizchip_version_check(void); + +/** + * @brief Ethernet Link Detection + */ +void wiz_phy_link_check(void); + +/** + * @brief Print PHY information + */ +void wiz_print_phy_info(void); +#endif diff --git a/User/wiz_platform/wiz_platform.c b/User/wiz_platform/wiz_platform.c new file mode 100644 index 0000000..4c987ce --- /dev/null +++ b/User/wiz_platform/wiz_platform.c @@ -0,0 +1,142 @@ +#include "wiz_platform.h" +#include "wizchip_conf.h" +#include "main.h" +#include "wiz_interface.h" +#include "../Core/Inc/tim.h" +#include +#include + +// W5500 pin definitions +#define SCSn_GPIO_Port W5500_CS_GPIO_Port +#define SCSn_Pin W5500_CS_Pin +#define RSTn_GPIO_Port W5500_RESET_GPIO_Port +#define RSTn_Pin W5500_RESET_Pin + +extern SPI_HandleTypeDef hspi2; +extern UART_HandleTypeDef huart1; +extern TIM_HandleTypeDef htim2; + +/** + * @brief SPI select wizchip + * @param none + * @return none + */ +void wizchip_select(void) +{ + HAL_GPIO_WritePin(SCSn_GPIO_Port, SCSn_Pin, GPIO_PIN_RESET); +} + +/** + * @brief SPI deselect wizchip + * @param none + * @return none + */ +void wizchip_deselect(void) +{ + HAL_GPIO_WritePin(SCSn_GPIO_Port, SCSn_Pin, GPIO_PIN_SET); +} + +/** + * @brief SPI write 1 byte to wizchip + * @param dat:1 byte data + * @return none + */ +void wizchip_write_byte(uint8_t dat) +{ + HAL_SPI_Transmit(&hspi2, &dat, 1, 0xffff); +} + +/** + * @brief SPI read 1 byte from wizchip + * @param none + * @return 1 byte data + */ +uint8_t wizchip_read_byte(void) +{ + uint8_t dat; + HAL_SPI_Receive(&hspi2, &dat, 1, 0xffff); + return dat; +} + +/** + * @brief SPI write buff from wizchip + * @param buff:write buff + * @param len:write len + * @return none + */ +void wizchip_write_buff(uint8_t *buf, uint16_t len) +{ + HAL_SPI_Transmit(&hspi2, buf, len, 0xffff); +} + +/** + * @brief SPI read buff from wizchip + * @param buff:read buff + * @param len:read len + * @return none + */ +void wizchip_read_buff(uint8_t *buf, uint16_t len) +{ + HAL_SPI_Receive(&hspi2, buf, len, 0xffff); +} + +/** + * @brief hardware reset wizchip + * @param none + * @return none + */ +void wizchip_reset(void) +{ + HAL_GPIO_WritePin(RSTn_GPIO_Port, RSTn_Pin, GPIO_PIN_SET); + wiz_user_delay_ms(10); + HAL_GPIO_WritePin(RSTn_GPIO_Port, RSTn_Pin, GPIO_PIN_RESET); + wiz_user_delay_ms(10); + HAL_GPIO_WritePin(RSTn_GPIO_Port, RSTn_Pin, GPIO_PIN_SET); + wiz_user_delay_ms(10); +} + +/** + * @brief wizchip spi callback register + * @param none + * @return none + */ +void wizchip_spi_cb_reg(void) +{ + reg_wizchip_cs_cbfunc(wizchip_select, wizchip_deselect); + reg_wizchip_spi_cbfunc(wizchip_read_byte, wizchip_write_byte); + reg_wizchip_spiburst_cbfunc(wizchip_read_buff, wizchip_write_buff); +} + +/** + * @brief Hardware Platform Timer Interrupt Callback Function + + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + if (htim->Instance == TIM2) + { + wiz_timer_handler(); + } +} + +/** + * @brief Turn on wiz timer interrupt + * @param none + * @return none + */ +void wiz_tim_irq_enable(void) +{ + HAL_TIM_Base_Start_IT(&htim2); +} + +/** + * @brief Turn off wiz timer interrupt + * @param none + * @return none + */ +void wiz_tim_irq_disable(void) +{ + HAL_TIM_Base_Stop_IT(&htim2); +} + + diff --git a/User/wiz_platform/wiz_platform.h b/User/wiz_platform/wiz_platform.h new file mode 100644 index 0000000..09f270d --- /dev/null +++ b/User/wiz_platform/wiz_platform.h @@ -0,0 +1,33 @@ +#ifndef __WIZ_PLATFORM_H__ +#define __WIZ_PLATFORM_H__ + +#include + +/** + * @brief hardware reset wizchip + * @param none + * @return none + */ +void wizchip_reset(void); + +/** + * @brief Register the WIZCHIP SPI callback function + * @param none + * @return none + */ +void wizchip_spi_cb_reg(void); + +/** + * @brief Turn on wiz timer interrupt + * @param none + * @return none + */ +void wiz_tim_irq_enable(void); + +/** + * @brief Turn off wiz timer interrupt + * @param none + * @return none + */ +void wiz_tim_irq_disable(void); +#endif diff --git a/project.ioc b/project.ioc index a46abfc..ced8f9d 100644 --- a/project.ioc +++ b/project.ioc @@ -11,10 +11,11 @@ Mcu.IP0=NVIC Mcu.IP1=RCC Mcu.IP2=SPI2 Mcu.IP3=SYS -Mcu.IP4=USART1 -Mcu.IP5=USART2 -Mcu.IP6=USART3 -Mcu.IPNb=7 +Mcu.IP4=TIM2 +Mcu.IP5=USART1 +Mcu.IP6=USART2 +Mcu.IP7=USART3 +Mcu.IPNb=8 Mcu.Name=STM32F103C(8-B)Tx Mcu.Package=LQFP48 Mcu.Pin0=PC14-OSC32_IN @@ -39,6 +40,7 @@ Mcu.Pin25=PB6 Mcu.Pin26=PB7 Mcu.Pin27=PB9 Mcu.Pin28=VP_SYS_VS_Systick +Mcu.Pin29=VP_TIM2_VS_ClockSourceINT Mcu.Pin3=PD1-OSC_OUT Mcu.Pin4=PA2 Mcu.Pin5=PA3 @@ -46,7 +48,7 @@ Mcu.Pin6=PA7 Mcu.Pin7=PB0 Mcu.Pin8=PB1 Mcu.Pin9=PB2 -Mcu.PinsNb=29 +Mcu.PinsNb=30 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F103C8Tx @@ -62,6 +64,7 @@ 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.TIM2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true NVIC.USART2_IRQn=true\:1\:0\:true\:false\:true\:true\:true\:true NVIC.USART3_IRQn=true\:2\:0\:true\:false\:true\:true\:true\:true @@ -200,7 +203,7 @@ 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_USART1_UART_Init-USART1-false-HAL-true,4-MX_SPI2_Init-SPI2-false-HAL-true,5-MX_USART2_UART_Init-USART2-false-HAL-true,6-MX_USART3_UART_Init-USART3-false-HAL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USART1_UART_Init-USART1-false-HAL-true,4-MX_SPI2_Init-SPI2-false-HAL-true,5-MX_USART2_UART_Init-USART2-false-HAL-true,6-MX_USART3_UART_Init-USART3-false-HAL-true,7-MX_TIM2_Init-TIM2-false-HAL-true RCC.ADCFreqValue=36000000 RCC.AHBFreq_Value=72000000 RCC.APB1CLKDivider=RCC_HCLK_DIV2 @@ -229,6 +232,8 @@ SPI2.Direction=SPI_DIRECTION_2LINES SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,CRCCalculation SPI2.Mode=SPI_MODE_MASTER SPI2.VirtualType=VM_MASTER +TIM2.IPParameters=Prescaler +TIM2.Prescaler=72-1 USART1.BaudRate=9600 USART1.IPParameters=VirtualMode,BaudRate USART1.VirtualMode=VM_ASYNC @@ -239,4 +244,6 @@ USART3.IPParameters=VirtualMode,BaudRate USART3.VirtualMode=VM_ASYNC VP_SYS_VS_Systick.Mode=SysTick VP_SYS_VS_Systick.Signal=SYS_VS_Systick +VP_TIM2_VS_ClockSourceINT.Mode=Internal +VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT board=custom