Index: ctrl/firmware/Main/SES/charger.emProject
===================================================================
--- ctrl/firmware/Main/SES/charger.emProject	(revision 51)
+++ ctrl/firmware/Main/SES/charger.emProject	(revision 54)
@@ -34,5 +34,5 @@
       c_enforce_ansi_checking="Yes"
       c_preprocessor_definitions="STM32H723xx"
-      c_user_include_directories="./../CubeMX/Core/Inc;./../CubeMX/Drivers/STM32H7xx_HAL_Driver/Inc;./../CubeMX/Drivers/CMSIS/Device/ST/STM32H7xx/Include;./../CubeMX/Drivers/CMSIS/Core/Include"
+      c_user_include_directories="./../CubeMX/Core/Inc;./../CubeMX/Drivers/STM32H7xx_HAL_Driver/Inc;./../CubeMX/Drivers/CMSIS/Device/ST/STM32H7xx/Include;./../CubeMX/Drivers/CMSIS/Core/Include;./../CubeMX/Middlewares/ST/threadx/common/inc;./../CubeMX/Middlewares/ST/threadx/ports/cortex_m7/gnu/inc;./../CubeMX/FileX/App;./../CubeMX/Middlewares/ST/filex/common/inc;./../CubeMX/Middlewares/ST/filex/ports/generic/inc;./../CubeMX/FileX/Target"
       compiler_color_diagnostics="Yes"
       debug_initial_breakpoint_set_option="Never"
@@ -65,7 +65,9 @@
     <folder Name="Core">
       <folder Name="Inc">
+        <file file_name="../CubeMX/Core/Inc/app_threadx.h" />
         <file file_name="../CubeMX/Core/Inc/dma.h" />
         <file file_name="../CubeMX/Core/Inc/gpio.h" />
         <file file_name="../CubeMX/Core/Inc/main.h" />
+        <file file_name="../CubeMX/Core/Inc/memorymap.h" />
         <file file_name="../CubeMX/Core/Inc/rtc.h" />
         <file file_name="../CubeMX/Core/Inc/sdmmc.h" />
@@ -75,4 +77,5 @@
       </folder>
       <folder Name="Src">
+        <file file_name="../CubeMX/Core/Src/app_threadx.c" />
         <file file_name="../CubeMX/Core/Src/dma.c" />
         <file file_name="../CubeMX/Core/Src/gpio.c" />
@@ -80,10 +83,13 @@
           <configuration Name="Common" file_type="C++" />
         </file>
+        <file file_name="../CubeMX/Core/Src/memorymap.c" />
         <file file_name="../CubeMX/Core/Src/rtc.c" />
         <file file_name="../CubeMX/Core/Src/sdmmc.c" />
         <file file_name="../CubeMX/Core/Src/spi.c" />
         <file file_name="../CubeMX/Core/Src/stm32h7xx_hal_msp.c" />
+        <file file_name="../CubeMX/Core/Src/stm32h7xx_hal_timebase_tim.c" />
         <file file_name="../CubeMX/Core/Src/stm32h7xx_it.c" />
         <file file_name="../CubeMX/Core/Src/system_stm32h7xx.c" />
+        <file file_name="../CubeMX/Core/Src/tx_initialize_low_level.S" />
       </folder>
     </folder>
@@ -114,4 +120,6 @@
           <file file_name="../CubeMX/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_spi.h" />
           <file file_name="../CubeMX/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_spi_ex.h" />
+          <file file_name="../CubeMX/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_tim.h" />
+          <file file_name="../CubeMX/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_tim_ex.h" />
           <file file_name="../CubeMX/Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_ll_sdmmc.h" />
         </folder>
@@ -128,5 +136,133 @@
           <file file_name="../CubeMX/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sd.c" />
           <file file_name="../CubeMX/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi.c" />
+          <file file_name="../CubeMX/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.c" />
+          <file file_name="../CubeMX/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.c" />
           <file file_name="../CubeMX/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_sdmmc.c" />
+        </folder>
+      </folder>
+    </folder>
+    <folder Name="Middlewares">
+      <folder Name="AZURE_RTOS">
+        <folder Name="Inc" />
+        <folder Name="Src">
+          <file file_name="../CubeMX/AZURE_RTOS/App/app_azure_rtos.c" />
+        </folder>
+      </folder>
+      <folder Name="FileX">
+        <folder Name="Inc">
+          <file file_name="../CubeMX/FileX/App/app_filex.h" />
+          <file file_name="../CubeMX/FileX/Target/fx_stm32_sd_driver.h" />
+        </folder>
+        <folder Name="Src">
+          <file file_name="../CubeMX/FileX/App/app_filex.c" />
+          <file file_name="../CubeMX/FileX/Target/fx_stm32_sd_driver_glue.c" />
+        </folder>
+      </folder>
+      <folder Name="ST">
+        <folder Name="FileX">
+          <folder Name="Common">
+            <folder Name="Drivers">
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/drivers/fx_stm32_sd_driver.c" />
+            </folder>
+            <folder Name="Inc">
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/inc/fx_api.h" />
+            </folder>
+            <folder Name="Src">
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/src/fx_media_boot_info_extract.c" />
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/src/fx_media_open.c" />
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/src/fx_partition_offset_calculate.c" />
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/src/fx_system_initialize.c" />
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/src/fx_system_timer_entry.c" />
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/src/fx_utility_16_unsigned_read.c" />
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/src/fx_utility_16_unsigned_write.c" />
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/src/fx_utility_32_unsigned_read.c" />
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/src/fx_utility_32_unsigned_write.c" />
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/src/fx_utility_FAT_entry_read.c" />
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/src/fx_utility_FAT_flush.c" />
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/src/fx_utility_logical_sector_cache_entry_read.c" />
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/src/fx_utility_logical_sector_flush.c" />
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/src/fx_utility_logical_sector_read.c" />
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/src/fx_utility_logical_sector_write.c" />
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/src/fx_utility_memory_copy.c" />
+              <file file_name="../CubeMX/Middlewares/ST/filex/common/src/fxe_media_open.c" />
+            </folder>
+          </folder>
+          <folder Name="Ports">
+            <folder Name="Generic">
+              <folder Name="Inc">
+                <file file_name="../CubeMX/Middlewares/ST/filex/ports/generic/inc/fx_port.h" />
+              </folder>
+            </folder>
+          </folder>
+        </folder>
+        <folder Name="ThreadX">
+          <folder Name="Common">
+            <folder Name="Inc">
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/inc/tx_api.h" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/inc/tx_initialize.h" />
+            </folder>
+            <folder Name="Src">
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_byte_allocate.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_byte_pool_cleanup.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_byte_pool_create.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_byte_pool_search.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_initialize_high_level.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_initialize_kernel_enter.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_mutex_cleanup.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_mutex_create.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_mutex_prioritize.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_mutex_priority_change.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_mutex_put.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_semaphore_cleanup.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_semaphore_create.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_semaphore_delete.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_semaphore_get.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_semaphore_put.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_thread_create.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_thread_identify.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_thread_initialize.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_thread_preemption_change.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_thread_shell_entry.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_thread_system_preempt_check.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_thread_system_resume.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_thread_system_suspend.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_thread_time_slice.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_thread_timeout.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_time_get.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_timer_create.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_timer_expiration_process.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_timer_initialize.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_timer_system_activate.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_timer_system_deactivate.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/tx_timer_thread_entry.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/txe_byte_allocate.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/txe_byte_pool_create.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/txe_semaphore_create.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/txe_semaphore_delete.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/txe_semaphore_get.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/txe_semaphore_put.c" />
+              <file file_name="../CubeMX/Middlewares/ST/threadx/common/src/txe_thread_create.c" />
+            </folder>
+          </folder>
+          <folder Name="Ports">
+            <folder Name="Cortex_M7">
+              <folder Name="GNU">
+                <folder Name="Inc">
+                  <file file_name="../CubeMX/Middlewares/ST/threadx/ports/cortex_m7/gnu/inc/tx_port.h" />
+                </folder>
+                <folder Name="Src">
+                  <file file_name="../CubeMX/Middlewares/ST/threadx/ports/cortex_m7/gnu/src/tx_thread_context_restore.S" />
+                  <file file_name="../CubeMX/Middlewares/ST/threadx/ports/cortex_m7/gnu/src/tx_thread_context_save.S" />
+                  <file file_name="../CubeMX/Middlewares/ST/threadx/ports/cortex_m7/gnu/src/tx_thread_interrupt_control.S" />
+                  <file file_name="../CubeMX/Middlewares/ST/threadx/ports/cortex_m7/gnu/src/tx_thread_interrupt_disable.S" />
+                  <file file_name="../CubeMX/Middlewares/ST/threadx/ports/cortex_m7/gnu/src/tx_thread_interrupt_restore.S" />
+                  <file file_name="../CubeMX/Middlewares/ST/threadx/ports/cortex_m7/gnu/src/tx_thread_schedule.S" />
+                  <file file_name="../CubeMX/Middlewares/ST/threadx/ports/cortex_m7/gnu/src/tx_thread_stack_build.S" />
+                  <file file_name="../CubeMX/Middlewares/ST/threadx/ports/cortex_m7/gnu/src/tx_thread_system_return.S" />
+                  <file file_name="../CubeMX/Middlewares/ST/threadx/ports/cortex_m7/gnu/src/tx_timer_interrupt.S" />
+                </folder>
+              </folder>
+            </folder>
+          </folder>
         </folder>
       </folder>
