Эх сурвалжийг харах

Добавляю работу с настройками.

TelenkovDmitry 1 жил өмнө
parent
commit
072efea2ef
100 өөрчлөгдсөн 2859 нэмэгдсэн , 646 устгасан
  1. BIN
      doc/~$_модули_входов_выходов_редакция_4.doc
  2. 44 14
      fw/modules/io/input.c
  3. 3 0
      fw/modules/io/input.h
  4. 11 3
      fw/modules/io/io.c
  5. 7 2
      fw/modules/io/io.h
  6. 38 0
      fw/modules/misc/at32_uid.c
  7. 18 0
      fw/modules/misc/at32_uid.h
  8. 15 0
      fw/modules/misc/hash.c
  9. 13 0
      fw/modules/misc/hash.h
  10. 89 0
      fw/modules/misc/uptime.c
  11. 29 0
      fw/modules/misc/uptime.h
  12. 56 8
      fw/modules/modbus/modbus_params.c
  13. 1083 0
      fw/modules/settings/settings_api.c
  14. 480 0
      fw/modules/settings/settings_api.h
  15. 5 27
      fw/user/main.c
  16. 34 0
      fw/user/main.h
  17. BIN
      project/ewarm/Debug/Exe/module_universal_io.out
  18. BIN
      project/ewarm/Debug/Exe/module_universal_io.sim
  19. 373 370
      project/ewarm/Debug/List/module_universal_io.map
  20. 308 132
      project/ewarm/Debug/Obj/.ninja_log
  21. BIN
      project/ewarm/Debug/Obj/FreeRTOS-openocd.o
  22. 6 2
      project/ewarm/Debug/Obj/FreeRTOS-openocd.xcl
  23. BIN
      project/ewarm/Debug/Obj/api_lib.o
  24. 6 2
      project/ewarm/Debug/Obj/api_lib.xcl
  25. BIN
      project/ewarm/Debug/Obj/api_msg.o
  26. 6 2
      project/ewarm/Debug/Obj/api_msg.xcl
  27. BIN
      project/ewarm/Debug/Obj/at32f403a_407_acc.o
  28. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_acc.xcl
  29. BIN
      project/ewarm/Debug/Obj/at32f403a_407_adc.o
  30. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_adc.xcl
  31. BIN
      project/ewarm/Debug/Obj/at32f403a_407_board.o
  32. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_board.xcl
  33. BIN
      project/ewarm/Debug/Obj/at32f403a_407_bpr.o
  34. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_bpr.xcl
  35. BIN
      project/ewarm/Debug/Obj/at32f403a_407_can.o
  36. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_can.xcl
  37. BIN
      project/ewarm/Debug/Obj/at32f403a_407_clock.o
  38. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_clock.xcl
  39. BIN
      project/ewarm/Debug/Obj/at32f403a_407_crc.o
  40. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_crc.xcl
  41. BIN
      project/ewarm/Debug/Obj/at32f403a_407_crm.o
  42. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_crm.xcl
  43. BIN
      project/ewarm/Debug/Obj/at32f403a_407_dac.o
  44. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_dac.xcl
  45. BIN
      project/ewarm/Debug/Obj/at32f403a_407_debug.o
  46. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_debug.xcl
  47. BIN
      project/ewarm/Debug/Obj/at32f403a_407_dma.o
  48. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_dma.xcl
  49. BIN
      project/ewarm/Debug/Obj/at32f403a_407_emac.o
  50. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_emac.xcl
  51. BIN
      project/ewarm/Debug/Obj/at32f403a_407_exint.o
  52. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_exint.xcl
  53. BIN
      project/ewarm/Debug/Obj/at32f403a_407_flash.o
  54. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_flash.xcl
  55. BIN
      project/ewarm/Debug/Obj/at32f403a_407_gpio.o
  56. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_gpio.xcl
  57. BIN
      project/ewarm/Debug/Obj/at32f403a_407_i2c.o
  58. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_i2c.xcl
  59. BIN
      project/ewarm/Debug/Obj/at32f403a_407_int.o
  60. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_int.xcl
  61. BIN
      project/ewarm/Debug/Obj/at32f403a_407_misc.o
  62. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_misc.xcl
  63. BIN
      project/ewarm/Debug/Obj/at32f403a_407_pwc.o
  64. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_pwc.xcl
  65. BIN
      project/ewarm/Debug/Obj/at32f403a_407_rtc.o
  66. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_rtc.xcl
  67. BIN
      project/ewarm/Debug/Obj/at32f403a_407_sdio.o
  68. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_sdio.xcl
  69. BIN
      project/ewarm/Debug/Obj/at32f403a_407_spi.o
  70. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_spi.xcl
  71. BIN
      project/ewarm/Debug/Obj/at32f403a_407_tmr.o
  72. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_tmr.xcl
  73. BIN
      project/ewarm/Debug/Obj/at32f403a_407_usart.o
  74. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_usart.xcl
  75. BIN
      project/ewarm/Debug/Obj/at32f403a_407_usb.o
  76. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_usb.xcl
  77. BIN
      project/ewarm/Debug/Obj/at32f403a_407_wdt.o
  78. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_wdt.xcl
  79. BIN
      project/ewarm/Debug/Obj/at32f403a_407_wwdt.o
  80. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_wwdt.xcl
  81. BIN
      project/ewarm/Debug/Obj/at32f403a_407_xmc.o
  82. 6 2
      project/ewarm/Debug/Obj/at32f403a_407_xmc.xcl
  83. BIN
      project/ewarm/Debug/Obj/autoip.o
  84. 6 2
      project/ewarm/Debug/Obj/autoip.xcl
  85. 19 12
      project/ewarm/Debug/Obj/build.ninja
  86. BIN
      project/ewarm/Debug/Obj/common_gpio.o
  87. 6 2
      project/ewarm/Debug/Obj/common_gpio.xcl
  88. BIN
      project/ewarm/Debug/Obj/croutine.o
  89. 6 2
      project/ewarm/Debug/Obj/croutine.xcl
  90. BIN
      project/ewarm/Debug/Obj/def.o
  91. 6 2
      project/ewarm/Debug/Obj/def.xcl
  92. BIN
      project/ewarm/Debug/Obj/dhcp.o
  93. 6 2
      project/ewarm/Debug/Obj/dhcp.xcl
  94. BIN
      project/ewarm/Debug/Obj/dhserver.o
  95. 6 2
      project/ewarm/Debug/Obj/dhserver.xcl
  96. BIN
      project/ewarm/Debug/Obj/diskio.o
  97. 6 2
      project/ewarm/Debug/Obj/diskio.xcl
  98. BIN
      project/ewarm/Debug/Obj/dns.o
  99. 6 2
      project/ewarm/Debug/Obj/dns.xcl
  100. BIN
      project/ewarm/Debug/Obj/dnserver.o

BIN
doc/~$_модули_входов_выходов_редакция_4.doc


+ 44 - 14
fw/modules/io/input.c

@@ -6,14 +6,14 @@
 
 
 in_t inputs[INPUT_NUMBER] = {
-    {GPIOB, GPIO_PINS_11, 1, GPIO_PORT_SOURCE_GPIOB, GPIO_PINS_SOURCE11, 0},
-    {GPIOB, GPIO_PINS_10, 1, GPIO_PORT_SOURCE_GPIOB, GPIO_PINS_SOURCE10, 0},
-    {GPIOE, GPIO_PINS_14, 1, GPIO_PORT_SOURCE_GPIOB, GPIO_PINS_SOURCE14, 0}, // перенесли {GPIOB, GPIO_PINS_1,  1, GPIO_PORT_SOURCE_GPIOB, GPIO_PINS_SOURCE1,  0},
-    {GPIOE, GPIO_PINS_15, 1, GPIO_PORT_SOURCE_GPIOB, GPIO_PINS_SOURCE15, 0}, // перенесли {GPIOB, GPIO_PINS_0,  1, GPIO_PORT_SOURCE_GPIOB, GPIO_PINS_SOURCE0,  0},
-    {GPIOA, GPIO_PINS_3,  1, GPIO_PORT_SOURCE_GPIOA, GPIO_PINS_SOURCE3,  0},
-    {GPIOA, GPIO_PINS_2,  1, GPIO_PORT_SOURCE_GPIOA, GPIO_PINS_SOURCE2,  0},
-    {GPIOA, GPIO_PINS_1,  1, GPIO_PORT_SOURCE_GPIOA, GPIO_PINS_SOURCE1,  0},
-    {GPIOA, GPIO_PINS_0,  1, GPIO_PORT_SOURCE_GPIOA, GPIO_PINS_SOURCE0,  0}
+    {GPIOB, GPIO_PINS_11, 1, GPIO_PORT_SOURCE_GPIOB, GPIO_PINS_SOURCE11, 0, false, 0}, // 1   
+    {GPIOB, GPIO_PINS_10, 1, GPIO_PORT_SOURCE_GPIOB, GPIO_PINS_SOURCE10, 0, false, 0}, // 2
+    {GPIOE, GPIO_PINS_14, 1, GPIO_PORT_SOURCE_GPIOE, GPIO_PINS_SOURCE14, 0, false, 0}, // 3 перенесли {GPIOB, GPIO_PINS_1,  1, GPIO_PORT_SOURCE_GPIOB, GPIO_PINS_SOURCE1,  0},
+    {GPIOE, GPIO_PINS_15, 1, GPIO_PORT_SOURCE_GPIOE, GPIO_PINS_SOURCE15, 0, false, 0}, // 4 перенесли {GPIOB, GPIO_PINS_0,  1, GPIO_PORT_SOURCE_GPIOB, GPIO_PINS_SOURCE0,  0},
+    {GPIOA, GPIO_PINS_3,  1, GPIO_PORT_SOURCE_GPIOA, GPIO_PINS_SOURCE3,  0, false, 0}, // 5
+    {GPIOA, GPIO_PINS_2,  1, GPIO_PORT_SOURCE_GPIOA, GPIO_PINS_SOURCE2,  0, false, 0}, // 6
+    {GPIOA, GPIO_PINS_1,  1, GPIO_PORT_SOURCE_GPIOA, GPIO_PINS_SOURCE1,  0, false, 0}, // 7
+    {GPIOA, GPIO_PINS_0,  1, GPIO_PORT_SOURCE_GPIOA, GPIO_PINS_SOURCE0,  0, false, 0}  // 8
 };
 
 
@@ -77,6 +77,7 @@ void in_exint_init(void)
 //
 void io_test(void)
 {
+#if 0  
     printf("IN_1: %u IN_2: %u IN_3: %u IN_4: %u IN_5: %u IN_6: %u IN_7: %u IN_8: %u\r\n", 
            gpio_input_data_bit_read(inputs[0].port, inputs[0].pin),
            gpio_input_data_bit_read(inputs[1].port, inputs[1].pin),
@@ -86,6 +87,12 @@ void io_test(void)
            gpio_input_data_bit_read(inputs[5].port, inputs[5].pin),
            gpio_input_data_bit_read(inputs[6].port, inputs[6].pin), 
            gpio_input_data_bit_read(inputs[7].port, inputs[7].pin));
+#endif    
+    
+    printf("IN_1: %u IN_2: %u IN_3: %u IN_4: %u IN_5: %u IN_6: %u IN_7: %u IN_8: %u\r\n", 
+           input_cnt[0], input_cnt[1], input_cnt[2], input_cnt[3], 
+           input_cnt[4], input_cnt[5], input_cnt[6], input_cnt[7]);
+    
 }
 
 //
@@ -106,36 +113,55 @@ void input_task(void *params)
     }
 }
 
+//
+inline void debounce(void)
+{
+    for (int i = 0; i < INPUT_NUMBER; i++)
+    {
+        if (inputs[i].p_flag) {
+            if (++inputs[i].cnt == DEBOUNCE_CNT) {
+                inputs[i].cnt = 0;
+                inputs[i].p_flag = false;
+                input_cnt[i]++;
+            }
+        }
+    }
+}
+
 
 void EXINT0_IRQHandler(void)
 {
-    if(exint_flag_get(EXINT_LINE_0) != RESET)
+    if (exint_flag_get(EXINT_LINE_0) != RESET) // IN_8 GPIOA_0
     {
         exint_flag_clear(EXINT_LINE_0);
+        inputs[7].p_flag = true;
     }
 }
 
 void EXINT1_IRQHandler(void)
 {
-    if(exint_flag_get(EXINT_LINE_1) != RESET)   // IN_3 GPIOB_1
+    if(exint_flag_get(EXINT_LINE_1) != RESET) // IN_7 GPIOA_1
     {
         exint_flag_clear(EXINT_LINE_1);
+        inputs[6].p_flag = true;
     }
 }
 
 void EXINT2_IRQHandler(void)
 {
-    if(exint_flag_get(EXINT_LINE_2) != RESET)
+    if(exint_flag_get(EXINT_LINE_2) != RESET) // IN_6 GPIOA_2
     {
         exint_flag_clear(EXINT_LINE_2);
+        inputs[5].p_flag = true;
     }
 }
 
 void EXINT3_IRQHandler(void)
 {
-    if(exint_flag_get(EXINT_LINE_3) != RESET)
+    if(exint_flag_get(EXINT_LINE_3) != RESET) // IN_5 GPIOA_3
     {
         exint_flag_clear(EXINT_LINE_3);
+        inputs[4].p_flag = true;
     }
 }
 
@@ -144,18 +170,22 @@ void EXINT15_10_IRQHandler(void)
     if (exint_flag_get(EXINT_LINE_10) != RESET)  // IN_2 GPIOB_10
     {
         exint_flag_clear(EXINT_LINE_10);
+        inputs[1].p_flag = true;
     }
     else if (exint_flag_get(EXINT_LINE_11) != RESET)  // IN_1 GPIOB_11
     {
         exint_flag_clear(EXINT_LINE_11);
+        inputs[0].p_flag = true;
     }
-    else if (exint_flag_get(EXINT_LINE_14) != RESET)  // IN_1 GPIOB_11
+    else if (exint_flag_get(EXINT_LINE_14) != RESET)  // IN_3 GPIOE_14
     {
         exint_flag_clear(EXINT_LINE_14);
+        inputs[2].p_flag = true;
     }
-    else if (exint_flag_get(EXINT_LINE_15) != RESET)  // IN_1 GPIOB_11
+    else if (exint_flag_get(EXINT_LINE_15) != RESET)  // IN_4 GPIOE_15
     {
         exint_flag_clear(EXINT_LINE_15);
+        inputs[3].p_flag = true;
     }
     
 }

+ 3 - 0
fw/modules/io/input.h

@@ -19,6 +19,9 @@ void io_test(void);
 //
 void input_task(void *params);
 
+//
+void debounce(void);
+
 
 #endif  // __INPUT_H
 

+ 11 - 3
fw/modules/io/io.c

@@ -13,7 +13,7 @@ uint16_t input_state[INPUT_NUMBER];     // состояние входа
 // Текущие параметры
 
 //uint16_t input_state[INPUT_NUMBER];     // состояние входа
-//uint32_t input_cnt[INPUT_NUMBER];       // счетчики входов
+uint32_t input_cnt[INPUT_NUMBER];       // счетчики входов
 
 
 //
@@ -64,7 +64,7 @@ void io_tim_init(void)
     nvic_irq_enable(TMR8_BRK_TMR12_IRQn, 5, 0);
     
     tmr_flag_clear(TMR12, TMR_OVF_FLAG);
-    tmr_interrupt_enable(TMR12, TMR_OVF_INT, FALSE);
+    tmr_interrupt_enable(TMR12, TMR_OVF_INT, TRUE);
     tmr_counter_value_set(TMR12, 0);
     tmr_counter_enable(TMR12, TRUE);  
 }
@@ -78,6 +78,14 @@ void TMR8_BRK_TMR12_IRQHandler(void)
     if(tmr_flag_get(TMR12, TMR_OVF_FLAG) != RESET)
     {
         tmr_flag_clear(TMR12, TMR_OVF_FLAG);
-        
+
+        debounce();
+#if 0        
+        if (i++ == 1000) {
+            i = 0;
+            cnt++;
+            printf("CNT: %u\r\n");
+        }
+#endif        
     }
 }

+ 7 - 2
fw/modules/io/io.h

@@ -1,12 +1,15 @@
 #ifndef __IO_H
 #define __IO_H
 
+#include <stdbool.h>
 
 // Период опроса входов 100 мс
 
 #define INPUT_NUMBER    8    // Количество входов
 #define OUTPUT_NUMBER   8    // Количество выходов
 
+#define DEBOUNCE_CNT    50
+
 // Прочие параметры из других модулей для передачи по modbus
 
 //uint32_t uptime;
@@ -41,7 +44,9 @@ typedef struct
     gpio_port_source_type port_source;
     uint16_t pin_source;
     uint32_t deb_counter;
-      
+    bool p_flag;
+    uint32_t cnt;
+    
 } in_t;
 
 
@@ -61,7 +66,7 @@ typedef struct
 
 extern uint16_t input_state[INPUT_NUMBER];     // состояние входа
 
-//uint32_t input_cnt[INPUT_NUMBER];       // счетчики входов
+extern uint32_t input_cnt[INPUT_NUMBER];       // счетчики входов
 
 //uint16_t output_state[INPUT_NUMBER];    // состояние выхода, 0 - норма, 1 - обрыв, 2 - КЗ
 

+ 38 - 0
fw/modules/misc/at32_uid.c

@@ -0,0 +1,38 @@
+#include "at32_uid.h"
+
+#ifdef PRINTF_STDLIB
+#include <stdio.h>
+#endif
+#ifdef PRINTF_CUSTOM
+#include "tinystdio.h"
+#endif
+
+#include <string.h>
+
+
+void GetAT32IDStr(char* str, uint8_t* len)
+{
+	char TempStr[33];
+
+	memset(TempStr, 0, 33);
+	
+	for(uint8_t i = 0; i < 12; i++)
+	{
+		sprintf(TempStr, "%02X", AT32_UUID[i]);
+		*len = strlen(TempStr);
+		strncat(str, TempStr, *len);
+	}
+	*len = strlen(str);
+}
+
+void GetAT32IDInt(char* value)
+{
+	uint8_t i;
+
+	for(i = 0; i < 12; i++)
+	{
+		value[i] = AT32_UUID[i];
+	}
+}
+
+

+ 18 - 0
fw/modules/misc/at32_uid.h

@@ -0,0 +1,18 @@
+#ifndef AT32_UID_H_
+#define AT32_UID_H_
+
+#include <stdint.h>
+
+/**
+ * The Artery factory-programmed UUID memory.
+ * Three values of 32 bits each starting at this address
+ * Use like this: STM32_UUID[0], STM32_UUID[1], STM32_UUID[2]
+ */
+#define AT32_UUID ((uint8_t *)0x1FFFF7E8)
+
+void GetAT32IDStr(char* str, uint8_t* len);
+
+void GetAT32IDInt(char* value);
+
+
+#endif /* AT32_UID_H_ */

+ 15 - 0
fw/modules/misc/hash.c

@@ -0,0 +1,15 @@
+#include "lwip/arch.h"
+#include "md5.h"
+#include "hash.h"
+
+
+void md5hash(unsigned char *hash, unsigned char *msg, unsigned int msg_len) 
+{
+#if 0  
+    md5_context mdContext;
+	
+    md5_starts(&mdContext);
+    md5_update(&mdContext, msg, msg_len);  
+    md5_finish(&mdContext, hash);
+#endif    
+}

+ 13 - 0
fw/modules/misc/hash.h

@@ -0,0 +1,13 @@
+/*
+ * hash.h
+ *
+ *  Created on: 06.12.2016
+ *      Author: pavel
+ */
+
+#ifndef HASH_H_
+#define HASH_H_
+
+void md5hash(unsigned char *hash, unsigned char *msg, unsigned int msg_len);
+
+#endif /* HASH_H_ */

+ 89 - 0
fw/modules/misc/uptime.c

@@ -0,0 +1,89 @@
+#include "uptime.h" 
+
+#define ONE_DAY_RESET_SEC       86400
+
+#define TASK_LIST_SIZE          6
+
+static uint32_t uptime = 0;
+
+task_list_t task_list[TASK_LIST_SIZE];
+static uint8_t task_number = 0;
+
+//
+void get_uptime(uint32_t *value)
+{
+    *value = uptime;
+}
+
+
+//
+void uptime_init(void)
+{
+    crm_clocks_freq_type crm_clocks_freq_struct = {0};
+    
+    crm_periph_clock_enable(CRM_TMR6_PERIPH_CLOCK, TRUE);
+
+    crm_clocks_freq_get(&crm_clocks_freq_struct);
+    tmr_base_init(TMR6, 9999, (crm_clocks_freq_struct.ahb_freq / 20000) - 1);
+    tmr_cnt_dir_set(TMR6, TMR_COUNT_UP);
+        
+    tmr_flag_clear(TMR6, TMR_OVF_FLAG);
+
+    nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
+    nvic_irq_enable(TMR6_GLOBAL_IRQn, 5, 0);
+       
+    tmr_counter_enable(TMR6, TRUE);
+    
+    tmr_interrupt_enable(TMR6, TMR_OVF_INT, TRUE);
+}
+
+/**
+  * @brief
+  * @retval 
+  */
+//
+void TMR6_GLOBAL_IRQHandler(void)
+{
+    if(tmr_flag_get(TMR6, TMR_OVF_FLAG) != RESET)
+    {
+        tmr_flag_clear(TMR6, TMR_OVF_FLAG);
+        uptime++;
+        
+        if (uptime >= ONE_DAY_RESET_SEC) {
+            nvic_system_reset();
+        }
+        
+        wdt_task_process();
+    }
+}
+
+
+//
+uint8_t wdt_add_task(uint32_t max)
+{
+    if (task_number == TASK_LIST_SIZE)
+        return 0;
+    task_list[task_number++].max_cnt = max;
+    return task_number - 1;
+}
+
+
+//
+void wdt_reset_cnt(uint8_t id)
+{
+    task_list[id].cnt = 0;
+}
+
+
+//
+void wdt_task_process(void) 
+{
+    for (uint8_t i = 0; i < task_number; i++)
+    {
+        if (task_list[i].cnt++ > task_list[i].max_cnt) 
+        {
+            //printf("Alarm! Task id %u wdt error!\r\n", i);
+            NVIC_SystemReset();
+        }
+    }
+}

+ 29 - 0
fw/modules/misc/uptime.h

@@ -0,0 +1,29 @@
+/* Define to prevent recursive  ----------------------------------------------*/
+#ifndef UPTIME_H
+#define UPTIME_H
+
+#include "at32f403a_407.h"
+
+
+typedef struct 
+{   
+    uint32_t id;
+    uint32_t cnt;
+    uint32_t max_cnt;
+    
+} task_list_t;
+
+
+
+//
+void uptime_init(void);
+  
+void get_uptime(uint32_t *value);
+
+uint8_t wdt_add_task(uint32_t max);
+
+void wdt_reset_cnt(uint8_t id);
+
+void wdt_task_process(void);
+
+#endif /* #ifndef UPTIME */

+ 56 - 8
fw/modules/modbus/modbus_params.c

@@ -13,51 +13,99 @@ void mb_init_params(void)
 {
     mb_param[0].reg = 0x0100;
 	mb_param[0].size = 1;
-	mb_param[0].param = (uint8_t*)&input_state[0];
+	mb_param[0].param = (uint8_t*)&input_state[0];  // Текущее состояние входа
 	mb_param[0].set_handler = NULL;
     mb_param[0].check_handler = mb_check_dummy;
     
     mb_param[1].reg = 0x0101;
 	mb_param[1].size = 1;
-	mb_param[1].param = (uint8_t*)&input_state[1];
+	mb_param[1].param = (uint8_t*)&input_state[1];  // Текущее состояние входа
 	mb_param[1].set_handler = NULL;
     mb_param[1].check_handler = mb_check_dummy;
     
     mb_param[2].reg = 0x0102;
 	mb_param[2].size = 1;
-	mb_param[2].param = (uint8_t*)&input_state[2];
+	mb_param[2].param = (uint8_t*)&input_state[2];  // Текущее состояние входа
 	mb_param[2].set_handler = NULL;
     mb_param[2].check_handler = mb_check_dummy;
     
     mb_param[3].reg = 0x0103;
 	mb_param[3].size = 1;
-	mb_param[3].param = (uint8_t*)&input_state[3];
+	mb_param[3].param = (uint8_t*)&input_state[3];  // Текущее состояние входа
 	mb_param[3].set_handler = NULL;
     mb_param[3].check_handler = mb_check_dummy;
     
     mb_param[4].reg = 0x0104;
 	mb_param[4].size = 1;
-	mb_param[4].param = (uint8_t*)&input_state[4];
+	mb_param[4].param = (uint8_t*)&input_state[4];  // Текущее состояние входа
 	mb_param[4].set_handler = NULL;
     mb_param[4].check_handler = mb_check_dummy;
     
     mb_param[5].reg = 0x0105;
 	mb_param[5].size = 1;
-	mb_param[5].param = (uint8_t*)&input_state[5];
+	mb_param[5].param = (uint8_t*)&input_state[5];  // Текущее состояние входа
 	mb_param[5].set_handler = NULL;
     mb_param[5].check_handler = mb_check_dummy;
     
     mb_param[6].reg = 0x0106;
 	mb_param[6].size = 1;
-	mb_param[6].param = (uint8_t*)&input_state[6];
+	mb_param[6].param = (uint8_t*)&input_state[6];  // Текущее состояние входа
 	mb_param[6].set_handler = NULL;
     mb_param[6].check_handler = mb_check_dummy;
     
     mb_param[7].reg = 0x0107;
 	mb_param[7].size = 1;
-	mb_param[7].param = (uint8_t*)&input_state[7];
+	mb_param[7].param = (uint8_t*)&input_state[7];  // Текущее состояние входа
 	mb_param[7].set_handler = NULL;
     mb_param[7].check_handler = mb_check_dummy;
+    
+    mb_param[8].reg = 0x0110;
+	mb_param[8].size = 2;
+	mb_param[8].param = (uint8_t*)&input_cnt[0];  // Счетчик ипульсов
+	mb_param[8].set_handler = NULL;
+    mb_param[8].check_handler = mb_check_dummy;
+    
+    mb_param[9].reg = 0x0112;
+	mb_param[9].size = 2;
+	mb_param[9].param = (uint8_t*)&input_cnt[0];  // Счетчик ипульсов
+	mb_param[9].set_handler = NULL;
+    mb_param[9].check_handler = mb_check_dummy;
+    
+    mb_param[10].reg = 0x0114;
+	mb_param[10].size = 2;
+	mb_param[10].param = (uint8_t*)&input_cnt[0];  // Счетчик ипульсов
+	mb_param[10].set_handler = NULL;
+    mb_param[10].check_handler = mb_check_dummy;
+    
+    mb_param[11].reg = 0x0116;
+	mb_param[11].size = 2;
+	mb_param[11].param = (uint8_t*)&input_cnt[0];  // Счетчик ипульсов
+	mb_param[11].set_handler = NULL;
+    mb_param[11].check_handler = mb_check_dummy;
+    
+    mb_param[12].reg = 0x0118;
+	mb_param[12].size = 2;
+	mb_param[12].param = (uint8_t*)&input_cnt[0];  // Счетчик ипульсов
+	mb_param[12].set_handler = NULL;
+    mb_param[12].check_handler = mb_check_dummy;
+    
+    mb_param[13].reg = 0x011A;
+	mb_param[13].size = 2;
+	mb_param[13].param = (uint8_t*)&input_cnt[0];  // Счетчик ипульсов
+	mb_param[13].set_handler = NULL;
+    mb_param[13].check_handler = mb_check_dummy;
+    
+    mb_param[14].reg = 0x011C;
+	mb_param[14].size = 2;
+	mb_param[14].param = (uint8_t*)&input_cnt[0];  // Счетчик ипульсов
+	mb_param[14].set_handler = NULL;
+    mb_param[14].check_handler = mb_check_dummy;
+    
+    mb_param[15].reg = 0x011E;
+	mb_param[15].size = 2;
+	mb_param[15].param = (uint8_t*)&input_cnt[0];  // Счетчик ипульсов
+	mb_param[15].set_handler = NULL;
+    mb_param[15].check_handler = mb_check_dummy;
 }
 
 

+ 1083 - 0
fw/modules/settings/settings_api.c

@@ -0,0 +1,1083 @@
+#include "at32f403a_407.h" 
+#include "settings_api.h"
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "common_config.h"
+#include "common.h"
+#include "at32_uid.h"
+#include "hash.h"
+//#include "log.h"
+
+#include <math.h> 
+#include <string.h>
+#include <stdlib.h>
+#ifdef PRINTF_STDLIB
+#include <stdio.h>
+#endif
+#ifdef PRINTF_CUSTOM
+#include "tinystdio.h"
+#endif
+
+
+SemaphoreHandle_t flash_mutex;
+
+
+// Флаг подтверждения новых сетевых параметров пользователем
+bool fConfirmWebParams = false;
+   
+// Системные настройки
+SYS_t sSys;
+
+// Общая структура настроек
+SETTINGS_t sSettings;
+
+
+
+// Установить параметры сетевого подключения по умолчанию
+void SETTINGS_SetWebParamsDef(void)
+{
+    strcpy(sSettings.sWebParams.ip, "192.168.10.254");
+    strcpy(sSettings.sWebParams.gate, "192.168.10.1");
+    strcpy(sSettings.sWebParams.mask, "255.255.255.0");
+    strcpy(sSettings.sWebParams.dns1, "8.8.8.8");
+    strcpy(sSettings.sWebParams.dns2, "8.8.4.4");
+    sSettings.sWebParams.dhcpEnable = 1;
+}
+
+
+// Установить временные параметры сетевого подключения по умолчанию
+void SETTINGS_SetTempWebParamsDef(void)
+{
+    strcpy(sSettings.sWebTempParams.ip, "192.168.10.254");
+    strcpy(sSettings.sWebTempParams.gate, "192.168.10.1");
+    strcpy(sSettings.sWebTempParams.mask, "255.255.255.0");
+    strcpy(sSettings.sWebTempParams.dns1, "8.8.8.8");
+    strcpy(sSettings.sWebTempParams.dns2, "8.8.4.4");
+    sSettings.sWebTempParams.dhcpEnable = 1;
+}
+
+
+// Установить Информацию об устройстве по умолчанию
+void SETTINGS_SetInfoDef(void)
+{
+    SYS_t *sSys = NULL;
+    
+    sSys = pvPortMalloc(sizeof(*sSys));
+    
+    if (sSys) 
+    {
+        SYS_Load(sSys);
+        strcpy(sSettings.sInfo.mac, sSys->mac);
+        strcpy(sSettings.sInfo.serialNumber, sSys->serial);
+        strcpy(sSettings.sInfo.productionData, sSys->proddate);
+        strcpy(sSettings.sFlags.testState, sSys->testState);
+        vPortFree(sSys);
+    }
+    else 
+    {
+        strcpy(sSettings.sInfo.productionData, "00.00.00 00:00");
+        strcpy(sSettings.sInfo.mac, DEVICE_MAC);
+        strcpy(sSettings.sInfo.serialNumber, DEVICE_SERIAL);
+        memset(sSettings.sFlags.testState, 0, 16);
+    }
+    
+    sSettings.sInfo.id = 0;
+    strcpy(sSettings.sInfo.location, "");
+    strcpy(sSettings.sInfo.owner, "");
+    strcpy(sSettings.sInfo.comments, "");
+    strcpy(sSettings.sInfo.incharge, "");
+}  
+
+/**
+  * @brief  Установить флаги по умолчанию
+  */
+void SETTINGS_SetFlagsDef(void)
+{
+    sSettings.sFlags.netsettingsChanged = false;
+}
+
+/**
+  * @brief  Установить параметры сетевого подключения по умолчанию
+  */
+void SETTINGS_SetEthternetSwitchDef(void)
+{
+    sSettings.sEthernet.Enabled = true;
+    sSettings.sEthernet.prior = 1;
+    strcpy(sSettings.sEthernet.ip_test, "10.254.0.33");
+}
+
+/**
+  * @brief  Установить параметры GSM подключения по умолчанию
+  */
+void SETTINGS_SetGSMDef(void)
+{
+    for(uint8_t i = 0; i < NUM_GSM; i++)
+    {
+        sSettings.sGSM[i].Enabled = true;
+        sSettings.sGSM[i].prior = 0;
+        sSettings.sGSM[i].type_profile = USER;
+        strcpy(sSettings.sGSM[i].ip_test, "10.254.0.33");
+        strcpy(sSettings.sGSM[i].APNaddr, "MDUDPTN");
+        strcpy(sSettings.sGSM[i].APNlogin, "");
+        strcpy(sSettings.sGSM[i].APNpass, "");
+        strcpy(sSettings.sGSM[i].msisdn, "");
+        sSettings.sGSM[i].timeout = 30;
+        sSettings.sGSM[i].period_test = 100;
+        sSettings.sGSM[i].num_bad_connect = 3;
+        sSettings.sGSM[i].modem_mode = AUTOMATIC;
+    }
+    sSettings.sGSM[0].prior = 3;
+    sSettings.sGSM[1].prior = 2;
+}
+
+/**
+  * @brief  Установить параметры SNTP по умолчанию
+  */
+void SETTINGS_SetSntpDef(void)
+{
+    sSettings.sSNTP.sntpEnable = true;
+    strcpy(sSettings.sSNTP.ip1, "10.254.0.50"); 
+    strcpy(sSettings.sSNTP.ip2, "10.254.0.50"); 
+    sSettings.sSNTP.timeZone = 3.0;  
+    strcpy(sSettings.sSNTP.data, "none");
+}
+
+/**
+  * @brief  Установить параметры подключения к серверу по умолчанию
+  */
+void SETTINGS_SetServerParamsDef(void)
+{
+    strcpy(sSettings.sServer.ip, "10.254.0.69");
+    sSettings.sServer.port = 1884;
+    sSettings.sServer.serverEnable = true;
+    sSettings.sServer.controlConnect = true;
+}
+
+/**
+  * @brief  Установить параметры PROXY по умолчанию
+  */
+void SETTINGS_SetProxyParamsDef(void)
+{
+    strcpy(sSettings.sProxy.ip, "79.135.245.84");
+    sSettings.sProxy.port = 55679;
+    sSettings.sProxy.local_port = 0;
+}
+
+/**
+  * @brief  Установить значение настроек прозрачного порта по умолчанию
+  */
+void SETTINGS_SetPortGwDef(void)
+{
+    for(uint8_t i = 0; i < NUM_PORTGW; i ++)
+    {
+        sSettings.sPortGw[i].enableDispatch = false;    // Параллельная диспетчеризация (Вкл./Выкл.)
+        sSettings.sPortGw[i].type_port = ACCOUNT_METER; // Тип порта (Модем / Прибор учета)
+        sSettings.sPortGw[i].connect_port = 2;          // Связанный порт (#1-#3)
+        strcpy(sSettings.sPortGw[i].description, "");   // Описание
+        sSettings.sPortGw[i].enabled = true;            // Вкл/Откл 
+        sSettings.sPortGw[i].transtype = GW_TCP;        // Тип транспорта (TCP/UDP)
+        sSettings.sPortGw[i].mode = GW_SERVER;          // Режим: Клиент/Сервер 
+        strcpy(sSettings.sPortGw[i].ip, "192.168.1.2"); // IP-адрес сервера (для клиента) 
+        sSettings.sPortGw[i].port = 1001;               // Порт 
+        sSettings.sPortGw[i].rs_mode = RS_485_1;        // Режим (RS-232/RS-485)
+        sSettings.sPortGw[i].uart_set.baud = BRD_9600;  // Скорость порта
+        sSettings.sPortGw[i].uart_set.parity = NO_PAR;  // Четность 
+        sSettings.sPortGw[i].uart_set.databits = DATABITS_8;  // Число бит данных
+        sSettings.sPortGw[i].uart_set.stopbits = STOP_1;      // Число стоп-бит
+    }  
+
+    sSettings.sPortGw[0].rs_mode = RS_232_1;
+    sSettings.sPortGw[0].port = 1001;
+    sSettings.sPortGw[0].connect_port = 1;
+    
+    sSettings.sPortGw[1].rs_mode = RS_485_1;
+    sSettings.sPortGw[1].port = 1002;
+    sSettings.sPortGw[1].connect_port = 2;
+    sSettings.sPortGw[1].enabled = false;
+    
+    sSettings.sPortGw[2].rs_mode = RS_232_2;
+    sSettings.sPortGw[2].port = 1003;
+    sSettings.sPortGw[2].connect_port = 0;
+    sSettings.sPortGw[2].enabled = false;
+}
+
+/**
+  * @brief  Установить значение системы параллельной диспетчеризации по умолчанию
+  */
+void SETTINGS_SetPSDDef(void)
+{
+    sSettings.sPSD.enabled = false;
+    sSettings.sPSD.mux_mode = PSD_MODE_7;
+    sSettings.sPSD.rs_mode = RS_232_1;
+    sSettings.sPSD.web_port = 0;
+    sSettings.sPSD.assd_timeout = 120;
+}
+
+/**
+  * @brief  Установить значение пароля по умолчанию
+  */
+void SETTINGS_SetServiceDef(void)
+{
+    sSettings.sAuth[0].level = ADMIN;
+    strcpy(sSettings.sAuth[0].login, "user");
+    //"b26b1868 705a3f0a a82cbd79 7cd58b4e" uchetmo
+    *(uint32_t *)sSettings.sAuth[0].hash        = 0x68186bb2;
+    *(uint32_t *)(sSettings.sAuth[0].hash + 4)  = 0x0a3f5a70;
+    *(uint32_t *)(sSettings.sAuth[0].hash + 8)  = 0x79bd2ca8;
+    *(uint32_t *)(sSettings.sAuth[0].hash + 12) = 0x4e8bd57c;
+}
+
+/**
+  * @brief  Сброс всех настроек в значения по умолчанию кроме сетевых настроек
+  */
+void SETTINGS_SetPartDefault(void)
+{
+    SETTINGS_SetFlagsDef();
+    
+    SETTINGS_SetEthternetSwitchDef();
+    SETTINGS_SetWebParamsDef();
+    SETTINGS_SetTempWebParamsDef();
+    SETTINGS_SetGSMDef();
+    SETTINGS_SetSntpDef();
+    SETTINGS_SetServerParamsDef();
+    SETTINGS_SetProxyParamsDef();
+    SETTINGS_SetPortGwDef();
+    SETTINGS_SetPSDDef();
+    
+    sSettings.settVer = SETTINGS_VERSION;
+    
+    sSettings.CritSecCRC = SETTINGS_GetCritSecCRC();
+    
+    sSettings.controlWorld = SETTINGS_CONTROL_WORD;
+}
+
+/**
+  * @brief  Сброс всех настроек в значения по умолчанию
+  */
+void SETTINGS_SetAllDefault(void)
+{
+    SETTINGS_SetWebParamsDef();
+    SETTINGS_SetTempWebParamsDef();
+    SETTINGS_SetInfoDef();
+    SETTINGS_SetGSMDef();
+    SETTINGS_SetFlagsDef();
+    
+    SETTINGS_SetEthternetSwitchDef();
+    SETTINGS_SetSntpDef();
+    SETTINGS_SetServerParamsDef();
+    SETTINGS_SetProxyParamsDef();
+    SETTINGS_SetPortGwDef();
+    SETTINGS_SetPSDDef();
+    SETTINGS_SetServiceDef();
+    
+    sSettings.settVer = SETTINGS_VERSION;
+    
+    sSettings.CritSecCRC = SETTINGS_GetCritSecCRC();
+    
+    sSettings.controlWorld = SETTINGS_CONTROL_WORD;
+}
+  
+/**
+  * @brief  Запись структуры настроек во flesh
+  */
+void SETTINGS_Save(void)
+{
+    xSemaphoreTake(flash_mutex, portMAX_DELAY);
+    // Calc critical section CRC and store to the settings structure
+    sSettings.CritSecCRC = SETTINGS_GetCritSecCRC();
+    
+    SETTINGS_WriteToFlash((uint8_t*)&sSettings, sizeof(sSettings));
+    xSemaphoreGive(flash_mutex);
+}
+
+/**
+  * @brief  Загрузка структуры настроек из flesh
+  */
+void SETTINGS_Load(void)
+{
+    uint32_t loadCRC;  // CRC из flash
+    uint32_t newCRC;   // CRC загруженной структуры настроек
+    bool need_default = false;
+    
+    WEB_PARAMS_t sWebParamsBackup;
+    
+    SETTINGS_ReadFromFlash((uint8_t*)&sSettings, sizeof(sSettings));
+    
+    // Считываем CRC из флеш памяти
+    loadCRC = (*(uint32_t*)CRC_ADDRESS);
+    
+    // Рассчитываем CRC для структуры настроек
+    newCRC = SETTINGS_GetCRC();
+    
+    // Если CRC не совпадают нужно прошивать дефолтные настройки
+    if (loadCRC != newCRC) {
+        need_default = true;
+    }
+    // CRC совпала, проверяем контрольное слово если слово не совпадает
+    // то это значит, что поплыла структура нстроек, прошиваем дефолт
+    else if (sSettings.controlWorld != SETTINGS_CONTROL_WORD)
+    {
+        need_default = true;
+    }
+    // CRC и контрольное слово совпали, проверяем номер версии настроек.
+    // Если версия в настройках и прошивке не совпадают
+    // (при обновлении изменили структуру настроек), прошиваем дефолт 
+    else if (sSettings.settVer != SETTINGS_VERSION)
+    {
+        need_default = true;
+    }
+    
+    // Прошиваем дефолтные настройки если нужно
+    if (need_default) 
+    {
+        // Бэкапим сетевые параметры загрузчика
+        memcpy(&sWebParamsBackup, &sSettings.sWebParams, sizeof(sWebParamsBackup));
+    
+        loadCRC = sSettings.CritSecCRC;
+        newCRC = SETTINGS_GetCritSecCRC();
+        SETTINGS_SetAllDefault();
+        if (loadCRC == newCRC) {
+            // Применяем сетевые параметры загрузчика
+            memcpy(&sSettings.sWebParams, &sWebParamsBackup, sizeof(sSettings.sWebParams));
+        }
+    
+        SETTINGS_Save();
+    }
+    
+    SDBG SETTINGS_Print();
+}
+
+/**
+  * @brief  
+  */
+void SETTINGS_WriteToFlash(uint8_t *data, uint32_t size)
+{
+    uint32_t baseAddress = SETTINGS_SECTOR;
+    uint32_t checkCrc = 0;
+    uint32_t crc = SETTINGS_GetCRC();
+    flash_status_type status;
+    
+    for (uint8_t i = 0; i < 3; i++)
+    {	
+        flash_unlock();
+    
+        SETTINGS_EraseFlashSector();
+    
+        for (uint32_t i = 0; i < size; i++)
+            if ((status = flash_byte_program(baseAddress++, *data++)) != FLASH_OPERATE_DONE) {
+                SDBG printf("FLASH_ProgramByte error: status = %d\r\n", status);
+                break;
+            }
+    
+        if ((status = flash_word_program((uint32_t)CRC_ADDRESS, crc)) != FLASH_OPERATE_DONE) {
+            SDBG printf("FLASH_ProgramWord error: status = %d\r\n", status);
+        }
+    
+        flash_lock();
+    
+        /* Считываем что записали */
+        SETTINGS_ReadFromFlash((uint8_t*)&sSettings, sizeof(sSettings));
+    
+        checkCrc = SETTINGS_GetCRC();
+    
+        /* Проверяем  CRC того что было записано */
+        if (checkCrc == crc)
+            break;
+    }
+
+}
+
+/**
+  * @brief  
+  */
+void SETTINGS_ReadFromFlash(uint8_t *data, uint32_t size)
+{
+    uint32_t baseAddress = SETTINGS_SECTOR;
+        
+    for (uint32_t i = 0; i < size; i++)
+        *data++ = (*(uint32_t*)baseAddress++);;
+}
+
+/**
+  * @brief  Очистка сектора настроек
+  * @retval 
+  */
+void SETTINGS_EraseFlashSector(void)
+{
+    flash_status_type status;
+
+    if ((status = flash_sector_erase(SETTINGS_SECTOR)) != FLASH_OPERATE_DONE) {
+        SDBG printf("SETTINGS_EraseFlashSector error: status = %d/r/n", status);
+    }
+}
+
+/**
+  * @brief  
+  * @retval 
+  */
+uint32_t SETTINGS_GetCRC(void)
+{
+    crc_data_reset();
+    return crc_block_calculate((uint32_t*)&sSettings, sizeof(sSettings)/4 - 1);
+}
+
+/**
+  * @brief
+  * @retval
+  */
+uint32_t SETTINGS_GetCritSecCRC(void)
+{
+    crc_data_reset();
+    uint32_t critsec_len = (uint32_t)((uint8_t *)(&sSettings.CritSecCRC) - (uint8_t *)&sSettings) / 4;
+    return crc_block_calculate((uint32_t *)&sSettings, critsec_len);
+}
+
+/**
+  * @brief   Сброс флага boottry в регистре RTC
+  */
+void SETTINGS_ResetBootTry(void)
+{
+    uint8_t bootTry = (uint8_t)bpr_data_read(BPR_DATA2);
+    
+    if (bootTry > 0 )
+    {
+        bootTry = 0;
+        bpr_data_write(BPR_DATA2, 0);
+    
+        // Check FW update flag
+        if (bpr_data_read(BPR_DATA3)) {
+            log_add_record(UPDATED_FW, 0);
+            // Clear FW update flag
+            bpr_data_write(BPR_DATA3, 0);
+        }
+    }
+}
+
+/**
+  * @brief  Преобразует mac адрес строкового формата в массив uint8_t
+  * @param  mac - буфер для вывода mac адреса
+  */
+void SETTINGS_GetMac(uint8_t *mac)
+{
+    char dummy[2];
+    char *macPtr = sSettings.sInfo.mac;	
+  
+    for (uint8_t i = 0; i < 6; i++)
+    {
+        strncpy(dummy, macPtr+i*3, 2);
+        mac[i] = (uint8_t)strtol(dummy, NULL, 16);
+    }
+}
+
+/**
+  * @brief  Установить дату производства
+  */
+void SETTINGS_SetProDate(char *proDate, uint8_t len)
+{
+    SYS_t *sSys = NULL;
+    
+    sSys = pvPortMalloc(sizeof(*sSys));
+    if (sSys) 
+    {
+        SYS_Load(sSys);
+        strcpy(sSys->proddate, proDate);
+        SYS_Save(sSys);
+        memset(sSettings.sInfo.productionData, 0, 40);
+        memcpy(sSettings.sInfo.productionData, proDate, len);
+        vPortFree(sSys);
+        //SETTINGS_Save();
+    }
+}
+
+/**
+  * @brief  Установить серийный номер
+  */
+void SETTINGS_SetSerialNumber(char *sn, uint8_t len)
+{
+    SYS_t *sSys = NULL;
+    
+    sSys = pvPortMalloc(sizeof(*sSys));
+    if (sSys) 
+    {
+        SYS_Load(sSys);
+        strcpy(sSys->serial, sn);
+        SYS_Save(sSys);
+        memset(sSettings.sInfo.serialNumber, 0, 16);
+        memcpy(sSettings.sInfo.serialNumber, sn, len);
+        vPortFree(sSys);
+        //SETTINGS_Save();
+    }
+}
+
+/**
+  * @brief  Установить MAC
+  */
+void SysSETTINGS_SetMAC(char *mac, uint8_t len)
+{
+    SYS_t *sSys = NULL;
+    
+    sSys = pvPortMalloc(sizeof(*sSys));
+    if (sSys) 
+    {
+        SYS_Load(sSys);
+        strcpy(sSys->mac, mac);
+        SYS_Save(sSys);
+        memset(sSettings.sInfo.mac, 0, 18);
+        memcpy(sSettings.sInfo.mac, mac, len);
+        vPortFree(sSys);
+        //SETTINGS_Save();
+    }
+}
+
+/**
+  * @brief  Установить статус тестирования
+  */
+void SETTINGS_StatusTest(char *status, uint8_t len)
+{
+    SYS_t *sSys = NULL;
+    
+    sSys = pvPortMalloc(sizeof(*sSys));
+    if (sSys) 
+    {
+        SYS_Load(sSys);
+        strcpy(sSys->testState, status);
+        SYS_Save(sSys);
+        memset(sSettings.sFlags.testState, 0, 16);
+        memcpy(sSettings.sFlags.testState, status, len);
+        vPortFree(sSys);
+        SETTINGS_Save();
+    }
+}
+
+/**
+  * @brief  Установить статус тестирования "T2OK"
+  */
+void SETTINGS_SetT2OK(void)
+{
+    SYS_t *sSys = NULL;
+    
+    sSys = pvPortMalloc(sizeof(*sSys));
+    if (sSys) 
+    {
+        SYS_Load(sSys);
+        
+        //SETTINGS_SetEthternetSwitchDef(); // TODO временное решение
+        
+        memset(sSettings.sFlags.testState, 0, 16);
+        memcpy(sSettings.sFlags.testState, "T2OK", 4);
+        strcpy(sSys->testState, sSettings.sFlags.testState);
+        SYS_Save(sSys);
+        vPortFree(sSys);
+        SETTINGS_Save();
+    }
+}
+
+
+/**
+  * @brief  Сбросить статус тестирования "T2OK"
+  */
+void SETTINGS_ResetT2OK(void)
+{
+    SYS_t *sSys = NULL;
+    
+    sSys = pvPortMalloc(sizeof(*sSys));
+    if (sSys) 
+    {
+        SYS_Load(sSys);
+        
+        SETTINGS_SetEthternetSwitchDef(); // TODO временное решение
+        
+        memset(sSettings.sFlags.testState, 0, 16);
+        strcpy(sSys->testState, sSettings.sFlags.testState);
+        SYS_Save(sSys);
+        vPortFree(sSys);
+        SETTINGS_Save();
+    }
+}
+
+
+/**
+  * @brief  Устанавливает mac адрес исходя из unique id
+  */
+void COM_SetTestMAC(void)
+{
+    uint8_t octet1 = 0;
+    uint8_t octet2 = 0;
+    uint8_t octet3 = 0;
+    uint8_t octet4 = 0;
+    uint8_t octet5 = 0;
+
+    char AT_ID_HEX[12];
+    uint8_t hash[16];
+    
+    GetAT32IDInt(AT_ID_HEX);
+    
+    md5hash(hash, (unsigned char*)AT_ID_HEX, sizeof(AT_ID_HEX));
+    
+    octet1 = hash[0];
+    octet2 = hash[1];
+    octet3 = hash[2];
+    octet4 = hash[3];
+    octet5 = hash[4];
+    /* Устанавливаем MAC, но не сохраняем */
+    snprintf(sSettings.sInfo.mac, MAC_LEN, "%02X-%02X-%02X-%02X-%02X-00", octet1 & 0xFE, octet2, octet3, octet4, octet5);
+}
+
+/**
+  * @brief  Включить DHCP
+  */
+void SETTINGS_SetDHCPOn(void)
+{
+    sSettings.sWebTempParams.dhcpEnable = 1;
+}
+
+//
+void init_settings(void)
+{
+    flash_mutex = xSemaphoreCreateMutex();
+}
+
+//
+bool SETTINGS_Check_9b(void)
+{
+    for (uint8_t i = 0; i < NUM_PORTGW; i++) {
+        if (sSettings.sPortGw[i].uart_set.databits == DATABITS_9) {
+            return true;
+        }
+    }
+    return false;
+}
+
+//
+void SETTINGS_Replace_9b(void)
+{
+    bool ret = false;
+    for (uint8_t i = 0; i < NUM_PORTGW; i++) {
+        if (sSettings.sPortGw[i].uart_set.databits == DATABITS_9) {
+            sSettings.sPortGw[i].uart_set.databits = DATABITS_8;
+            ret = true;
+        }
+    }
+    if (ret) {
+        SETTINGS_Save();
+    }
+}
+
+
+//
+void SETTINGS_Print(void)
+{
+    printf("\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n");
+    printf("   Общие настройки для bootloader и FW");
+    printf("\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n\n");
+    
+    printf("Сетевые настройки:\r\n");
+    
+    printf("\tIP: ");
+    printf("%s\r\n", sSettings.sWebParams.ip);
+    
+    printf("\tGate: ");
+    printf("%s\r\n", sSettings.sWebParams.gate);
+    
+    printf("\tMask: ");
+    printf("%s\r\n", sSettings.sWebParams.mask);
+    
+    printf("\tDNS1: ");
+    printf("%s\r\n", sSettings.sWebParams.dns1);
+    
+    printf("\tDNS2: ");
+    printf("%s\r\n", sSettings.sWebParams.dns2);
+    
+    if (sSettings.sWebParams.dhcpEnable)
+        printf("\tDHCP: On\r\n");
+    else
+        printf("\tDHCP: Off\r\n");
+        
+// -------------------------------------------------------------------------- //        
+  
+    printf("\r\nИнформация об устройстве:\r\n");
+    
+    printf("\tID: ");
+    printf("%u\r\n", sSettings.sInfo.id);
+    
+    printf("\tДата производства: ");
+    printf("%s\r\n", sSettings.sInfo.productionData);
+    
+    printf("\tMAC: ");
+    printf("%s\r\n", sSettings.sInfo.mac);
+    
+    printf("\tСерийный номер: ");
+    printf("%s\r\n", sSettings.sInfo.serialNumber);
+    
+    printf("\tВладелец: ");
+    printf("%s\r\n", sSettings.sInfo.owner);
+    
+    printf("\tАдрес: ");
+    printf("%s\r\n", sSettings.sInfo.location);
+    
+    printf("\tКомментарии: ");
+    printf("%s\r\n", sSettings.sInfo.comments);
+    
+    printf("\tОтветственное лицо: ");
+    printf("%s\r\n", sSettings.sInfo.incharge);
+    
+// -------------------------------------------------------------------------- //    
+    
+    for (uint8_t i = 0; i < NUM_GSM; i++)
+    {
+        printf("\r\nНастройки GSM модема:\r\n");
+        printf("Профиль GSM %u:\r\n", i + 1);
+        
+        if (sSettings.sGSM[i].Enabled)
+            printf("\tChannel: On\r\n");
+        else
+            printf("\tChannel: Off\r\n");
+          
+        printf("\tПриоритет: %u\r\n", sSettings.sGSM[i].prior);
+       
+        switch (sSettings.sGSM[i].type_profile)
+        {
+            case BEELINE :
+                printf("\tТип профиля: BEELINE\r\n");
+            break;
+            case MTS :
+                printf("\tТип профиля: MTS\r\n");
+            break;
+            case MEGAFON :
+                printf("\tТип профиля: MEGAFON\r\n");
+            break;
+            case TELE2 :
+                printf("\tТип профиля: TELE2\r\n");
+            break;
+            case USER :
+                printf("\tТип профиля: USER\r\n");
+            break;
+        }
+        
+        printf("\tAPN: %s\r\n", sSettings.sGSM[i].APNaddr);
+        printf("\tAPN логин: %s\r\n", sSettings.sGSM[i].APNlogin);
+        printf("\tAPN пароль: %s\r\n", sSettings.sGSM[i].APNpass);
+        printf("\tIP для проверки связи: %s\r\n", sSettings.sGSM[i].ip_test);
+        printf("\tНомер SIM карты: %s\r\n", sSettings.sGSM[i].msisdn);
+        printf("\tТаймаут ожидания ответа: %u, с\r\n", sSettings.sGSM[i].timeout);
+        printf("\tВремя проверки каналов связи: %u\r\n", sSettings.sGSM[i].period_test);
+        printf("\tКоличество неудачных попыток: %u\r\n", sSettings.sGSM[i].num_bad_connect);
+        printf("\tРежим работы GSM модема: ");
+        
+        switch (sSettings.sGSM[i].modem_mode)
+        {
+            case AUTOMATIC :
+                printf("Automatic\r\n");
+            break;
+            
+            case GSM_3G :
+                printf("GSM + 3G\r\n");
+            break;
+            
+            case LTE :
+                printf("LTE only\r\n");
+            break;
+            
+            case WCDMA :
+                printf("3G only\r\n");
+            break;
+            
+            case GSM :
+                printf("GSM only\r\n");
+            break;
+        }
+        
+    }
+    
+// -------------------------------------------------------------------------- //        
+    
+    printf("\r\nCRC критической секции: %X\r\n", sSettings.CritSecCRC);
+    
+// -------------------------------------------------------------------------- //    
+    
+    printf("\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n");
+    printf("   Секция настрок для FW");
+    printf("\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n\n");
+    
+// -------------------------------------------------------------------------- //        
+    
+    printf("\r\nФлаги:\r\n");
+    
+    printf("\tИзменение сетевых настроек: %u\r\n", sSettings.sFlags.netsettingsChanged);
+    printf("\tСтатус тестирования: %s\r\n", sSettings.sFlags.testState);
+    
+// -------------------------------------------------------------------------- //        
+    
+    printf("\r\nEthernet канал:\r\n");
+    
+    if (sSettings.sEthernet.Enabled)
+        printf("\tКанал: вкл\r\n");
+    else
+        printf("\tКанал: выкл\r\n");
+
+    printf("\tПриоритет: %u\r\n", sSettings.sEthernet.prior);
+    printf("\tIP для проверки связи: %s\r\n", sSettings.sEthernet.ip_test);
+    
+// -------------------------------------------------------------------------- //
+    
+    printf("\r\nСервер:\r\n");
+    
+    if (sSettings.sServer.serverEnable)
+        printf("\tСервер: вкл\r\n");
+    else
+        printf("\tСервер: выкл\r\n");
+    
+    printf("\tIP: %s\r\n", sSettings.sServer.ip);
+    printf("\tPort: %u\r\n", sSettings.sServer.port);
+    
+    if (sSettings.sServer.controlConnect)
+        printf("\tКонтроль соединения: вкл\r\n");
+    else
+        printf("\tКонтроль соединения: выкл\r\n");
+    
+// -------------------------------------------------------------------------- //    
+    
+    printf("\r\nProxy:\r\n");
+    
+    printf("\tIP: %s\r\n", sSettings.sProxy.ip);
+    printf("\tPort: %u\r\n", sSettings.sProxy.port);
+    printf("\tLocal port: %u\r\n", sSettings.sProxy.local_port);
+    
+// -------------------------------------------------------------------------- //        
+
+    for (uint8_t i = 0; i < MAX_WEB_USERS; i++)
+    {
+        printf("\r\nНастройки аутентификации пользователя %u:\r\n", i + 1);
+
+        switch (sSettings.sAuth[i].level)
+        {
+            case FACTORY :
+                printf("\tУровень пользователя: FACTORY\r\n");
+            break;
+            case ADMIN :
+                printf("\tУровень пользователя: ADMIN\r\n");
+            break;
+        }
+    
+        printf("\tlogin: %s\r\n", sSettings.sAuth[i].login);
+        printf("\thash: %X\r\n", sSettings.sAuth[i].hash);
+    }
+    
+// -------------------------------------------------------------------------- //        
+    
+    for (uint8_t i = 0; i < NUM_PORTGW; i++)
+    {
+        printf("\r\nНастройки прозрачного порта %u:\r\n", i + 1);
+        
+        if (sSettings.sPortGw[i].enableDispatch)
+            printf("\tПараллельная диспетчеризация: вкл\r\n");
+        else
+            printf("\tПараллельная диспетчеризация: выкл\r\n");
+        
+        if (sSettings.sPortGw[i].enabled)
+            printf("\tПрозрачный порт: вкл\r\n");
+        else
+            printf("\tПрозрачный порт: выкл\r\n");
+        
+        switch (sSettings.sPortGw[i].type_port)
+        {
+            case MODEM :
+                printf("\tТип порта: Модем\r\n");
+            break;
+            case ACCOUNT_METER :
+                printf("\tТип порта: Прибор учета\r\n");
+            break;
+        }
+        
+        printf("\tСвязанный порт %u:\r\n", sSettings.sPortGw[i].connect_port);
+        printf("\tОписание: %s\r\n", sSettings.sPortGw[i].description);
+        
+        
+        switch (sSettings.sPortGw[i].transtype)
+        {
+            case GW_UDP :
+                printf("\tТип транспорта: UDP\r\n");
+            break;
+            case GW_TCP :
+                printf("\tТип транспорта: TCP\r\n");
+            break;
+        }
+        
+        switch (sSettings.sPortGw[i].mode)
+        {
+            case GW_SERVER :
+                printf("\tРежим: сервер\r\n");
+            break;
+            case GW_CLIENT :
+              printf("\tРежим: клиент\r\n");
+            break;
+        }
+        
+        printf("\tIP сервера (режим клиента): %s\r\n", sSettings.sPortGw[i].ip);
+        printf("\tПорт: %u\r\n", sSettings.sPortGw[i].port);
+        
+        switch (sSettings.sPortGw[i].rs_mode)
+        {
+            case RS_232_1 :
+                printf("\tРежим (RS-232/RS-485): RS_232_1\r\n");
+            break;
+            case RS_232_2 :
+                printf("\tРежим (RS-232/RS-485): RS_232_2\r\n");
+            break;
+            case RS_232_3 :
+                printf("\tРежим (RS-232/RS-485): RS_232_3\r\n");
+            break;
+            case RS_485_1 :
+                printf("\tРежим (RS-232/RS-485): RS_485_1\r\n");
+            break;
+            case RS_485_2 :
+                printf("\tРежим (RS-232/RS-485): RS_485_2\r\n");
+            break;
+        }
+                
+        switch (sSettings.sPortGw[i].uart_set.baud)
+        {
+            case BRD_1200 :
+                printf("\tBaudrate: 1200\r\n");
+            break;
+            case BRD_2400 :
+                printf("\tBaudrate: 2400\r\n");
+            break;
+            case BRD_4800 :
+                printf("\tBaudrate: 4800\r\n");
+            break;
+            case BRD_9600 :
+                printf("\tBaudrate: 9600\r\n");
+            break;
+            case BRD_19200 :
+                printf("\tBaudrate: 19200\r\n");
+            break;
+            case BRD_38400 :
+                printf("\tBaudrate: 38400\r\n");
+            break;
+            case BRD_57600 :
+                printf("\tBaudrate: 57600\r\n");
+            break;
+            case BRD_115200 :
+                printf("\tBaudrate: 115200\r\n");
+            break;
+            case BRD_230400 :
+                printf("\tBaudrate: 230400\r\n");
+            break;
+            case BRD_460800 :
+                printf("\tBaudrate: 460800\r\n");
+            break;
+        }
+
+        switch (sSettings.sPortGw[i].uart_set.databits)
+        {
+            case DATABITS_7 :
+                printf("\tData bits: 7\r\n");
+            break;
+            case DATABITS_8 :
+                printf("\tData bits: 8\r\n");
+            break;
+            case DATABITS_9 :
+                printf("\tData bits: 9\r\n");
+            break;
+        }
+        
+        switch (sSettings.sPortGw[i].uart_set.stopbits)
+        {
+            case STOP_0_5 :
+                printf("\tStop bits: 0_5\r\n");
+            break;
+            case STOP_1 :
+                printf("\tStop bits: 1\r\n");
+            break;
+            case STOP_1_5 :
+                printf("\tStop bits: 1_5\r\n");
+            break;
+            case STOP_2 :
+                printf("\tStop bits: 2\r\n");
+            break;
+        }
+    }
+    
+// -------------------------------------------------------------------------- //    
+    
+    printf("\r\nПротокол SNTP:\r\n");    
+    
+    if (sSettings.sSNTP.sntpEnable)
+        printf("\tSNTP: вкл\r\n");
+    else
+        printf("\tSNTP: выкл\r\n");
+        
+    printf("\tСервер 1 IP: %s\r\n", sSettings.sSNTP.ip1);
+    printf("\tСервер 2 IP: %s\r\n", sSettings.sSNTP.ip2);
+    printf("\tДата последней синхронизации: %s\r\n", sSettings.sSNTP.data);
+    printf("\tЧасовой пояс (utc): %f\r\n", sSettings.sSNTP.timeZone);
+    
+// -------------------------------------------------------------------------- //    
+    
+    printf("\r\nПараллельная диспетчеризация:\r\n");
+    
+    if (sSettings.sPSD.enabled)
+        printf("\tДиспечеризация: вкл\r\n");
+    else
+        printf("\tДиспечеризация: выкл\r\n");
+
+    switch (sSettings.sPSD.mux_mode)
+    {
+        case PSD_MODE_1 :
+            printf("\tРежим (управление мультиплексором): MODE_1 - RS232#1 <-> RS232#2, USART6 <-> RS232#3\r\n");
+        break;
+        case PSD_MODE_2 :
+            printf("\tРежим (управление мультиплексором): MODE_2 - RS485#1 <-> RS232#2, USART6 <-> RS232#3\r\n");
+        break;
+        case PSD_MODE_3 :
+            printf("\tРежим (управление мультиплексором): MODE_3 - RS232#1 <-> RS485#2, USART6 <-> RS232#3\r\n");
+        break;
+        case PSD_MODE_4 :
+            printf("\tРежим (управление мультиплексором): MODE_4 - RS485#1 <-> RS485#2, USART6 <-> RS232#3\r\n");
+        break;
+        case PSD_MODE_5 :
+            printf("\tРежим (управление мультиплексором): MODE_5 - RS232#1 <-> RS232#3\r\n");
+        break;
+        case PSD_MODE_6 :
+            printf("\tРежим (управление мультиплексором): MODE_6 - RS485#1 <-> RS232#3\r\n");
+        break;
+        case PSD_MODE_7 :
+            printf("\tРежим (управление мультиплексором): MODE_7 - USART1 <-> RS485#1, \r\n\t\tUSART3 <-> RS485#2, USART4 <-> RS232#1, \r\n\t\tUSART5 <-> RS232#2, USART6 <-> RS232#3\r\n");
+        break;
+        
+    }
+    
+    switch (sSettings.sPSD.rs_mode)
+    {
+        case RS_232_1 :
+            printf("\tРежим (RS-232/RS-485): RS_232_1\r\n");
+        break;
+        case RS_232_2 :
+            printf("\tРежим (RS-232/RS-485): RS_232_2\r\n");
+        break;
+        case RS_232_3 :
+            printf("\tРежим (RS-232/RS-485): RS_232_3\r\n");
+        break;
+        case RS_485_1 :
+            printf("\tРежим (RS-232/RS-485): RS_485_1\r\n");
+        break;
+        case RS_485_2 :
+            printf("\tРежим (RS-232/RS-485): RS_485_2\r\n");
+        break;
+    }
+    
+    printf("\tНомер прозрачного порта: %u\r\n", sSettings.sPSD.web_port);
+    printf("\tТаймаут: %u, сек\r\n", sSettings.sPSD.assd_timeout);
+    
+// -------------------------------------------------------------------------- //    
+    
+    printf("\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n");
+    
+    printf("\tКонтрольное слово: %u\r\n", sSettings.controlWorld);
+    printf("\tCRC: %X\r\n", *(uint32_t*)CRC_ADDRESS);
+}
+
+/********************************* (C) ROTEK **********************************/

+ 480 - 0
fw/modules/settings/settings_api.h

@@ -0,0 +1,480 @@
+#ifndef SETTINGS_API_H
+#define SETTINGS_API_H
+
+#include "at32f403a_407.h"
+#include <stdbool.h>
+//#include "units.h"
+#include "usart.h"
+#include "sys_api.h"
+
+/* Reference SETTINGS_t structure size value */
+/* Modify this value every time you change its size and increse SETTINGS_VERSION value */
+#define REF_SETTINGS_SIZE   0x56C
+
+/* Changing SETTINGS_VERSION causes loading default settings on start. */
+#define SETTINGS_VERSION    0
+
+
+#define NUM_GSM                 2 // количество GSM каналов (количество SIM)
+#define NUM_PORTGW              3 // количество прозрачных портов
+
+/* Максимальная длинна логина и пароля для входа в Web */
+#define MAX_WEB_LOGIN_LEN       11
+#define MAX_WEB_COOKIE_LEN      16
+
+/* Максимальная длинна строки параметра, передаваемого в Web */
+#define MAX_WEB_PARAM_LEN              102//64
+
+/* Max WEB users in the system/
+ * 
+ **/
+#define MAX_WEB_USERS                  1
+
+/**
+  * @brief  Параметры сетевого подключения
+  */
+typedef struct
+{
+  char    ip[16];
+  char    gate[16];
+  char    mask[16];
+  char    dns1[16];
+  char    dns2[16];
+  uint8_t dhcpEnable;  // 0 - DHCP отключен, 1 - включен
+} WEB_PARAMS_t;
+
+/**
+  * @brief Настройки Ethernet подключения
+  */
+typedef struct
+{
+  bool     Enabled;                        // Вкл/Выкл Ethernet 
+  uint8_t  prior;                          // Приоритет (1/2/3)
+  char     ip_test[32];                    // IP-адрес проверки связи
+}ETHERNET_t;
+
+/**
+  * @brief  Типы профиля GSM
+  */
+typedef enum
+{
+    BEELINE = 0,
+    MTS,
+    MEGAFON,
+    TELE2,
+    USER,
+    MAX_GSM_TYPES_PROFILE
+} type_profile_gsm_t;
+
+/**
+  * @brief  Типы GSM модема
+  */
+typedef enum
+{
+    SIM800 = 0,
+    SIM7500,
+} MODEM_TYPE_t;
+
+/**
+  * @brief  Режим работы GSM модема
+  */
+typedef enum
+{
+    AUTOMATIC = 2,
+    GSM_3G = 48,
+    LTE = 38,
+    WCDMA = 14,
+    GSM = 13,
+} MODEM_MODE_t;
+
+/**
+  * @brief Настройки GSM модуля
+  */
+typedef struct
+{
+  bool     Enabled;                        // Вкл/Выкл GSM модуля 
+  uint8_t  prior;                          // Приоритет (1/2/3)
+  type_profile_gsm_t type_profile;         // Тип профиля
+  char     APNaddr[64];                    // Адрес точки доступа APN 
+  char     APNlogin[32];                   // Логин APN 
+  char     APNpass[32];                    // Пароль APN 
+  char     ip_test[32];                    // IP-адрес проверки связи
+  char     msisdn[14];                     // Номер SIM-карты (MSISDN)
+  uint32_t timeout;                        // Таймаут ожидания ответа, сек
+  uint32_t period_test;                    // Время между проверками доступности канала связи
+  uint8_t  num_bad_connect;                // Количество неудачных попыток до переключения канала
+  MODEM_MODE_t  modem_mode;                // Режим работы GSM модема
+} GSM_t;
+
+/**
+  * @brief  Параметры SNTP
+  */
+typedef struct
+{
+    bool  sntpEnable;                       // Вкл/выкл
+    char  ip1[16];                          // Адрес SNTP сервера 1
+    char  ip2[16];                          // Адрес SNTP сервера 2
+    char  data[30];                         // Дата последней синхронизации
+    float timeZone;                         // Часовой пояс  
+} SNTP_t; 
+
+/**
+  * @brief  Параметры сервера
+  */
+typedef struct
+{
+    bool      serverEnable;                 // Вкл/выкл
+    char      ip[16];                       // Адрес сервера
+    uint16_t  port;                         // Номер порта
+    bool      controlConnect;               // Контроль соединения (1 - да; 0 - нет)
+} SERVER_t;
+
+/**
+  * @brief  Параметры PROXY                                                                                                                                                         PROXY
+  */
+typedef struct
+{
+    char      ip[16];                       // IP-адрес подключения
+    uint16_t  port;                         // Порт подключения
+    uint8_t   local_port;                   // Локальный порт 
+} PROXY_t;
+
+
+/**
+  * @brief  Информация об устройстве
+  */
+typedef struct
+{
+  uint32_t  id;                     // Цифровой идентификатор
+  char      productionData[40];     // Дата производства
+  char      mac[18];                // MAC адрес
+  char      serialNumber[16];       // Серийный номер
+  char      owner[102];             // Владелец
+  char      location[102];          // Адрес
+  char      comments[102];          // Комментарии
+  char      incharge[62];           // Ответсвенное лицо
+} DEVICE_INFO_t; 
+
+/**
+  * @brief  Уровни пользователей Web.
+  */
+typedef enum
+{
+  FACTORY = 0,
+  ADMIN,
+  MAX_USER_LEVELS
+} user_level_t;
+
+/**
+  * @brief  Настройки аутентификации.
+  */
+typedef struct
+{
+  user_level_t level;
+  char login[MAX_WEB_LOGIN_LEN];
+  uint8_t hash[16];
+} AUTH_t;
+
+/**
+  * @brief  Флаги, ключи и т.д.
+  */
+typedef struct
+{
+  bool netsettingsChanged;		     // Признак изменения сетевых настроек пользователем
+  char testState[16];			     // Статус производственного тестирования
+} FLAGS_t;
+
+/**
+  * @brief  Типы транспорта прозрачного порта
+  */
+typedef enum
+{
+  GW_UDP = 0,
+  GW_TCP,
+  MAX_TRANS_TYPES
+} gwtrans_t;
+
+/**
+  * @brief  Режим прозрачного порта
+  */
+typedef enum
+{
+  GW_SERVER = 0,
+  GW_CLIENT,
+  MAX_MODE_TYPES
+} gwmode_t;
+
+/**
+  * @brief  Режим (RS-232/RS-485)
+  */
+typedef enum
+{
+  RS_232_1 = 0,
+  RS_232_2,
+  RS_232_3,
+  RS_485_1,
+  RS_485_2,
+  MAX_RS_PORTS
+} rsmode_t;
+
+/**
+  * @brief  Тип порта (Модем / Прибор учета)
+  */
+typedef enum
+{
+  MODEM = 0,
+  ACCOUNT_METER,
+  MAX_DISPATCH_MODES
+} dispatchport_t;
+
+/**
+  * @brief Настройки прозрачного порта
+  */
+typedef struct
+{
+  bool enableDispatch;                // Параллельная диспетчеризация (Вкл./Выкл.)
+  bool enabled;                       // Вкл/Откл 
+  dispatchport_t type_port;           // Тип порта (Модем / Прибор учета)
+  uint8_t connect_port;               // Связанный порт (#1-#3)
+  char description[30];               // Описание
+  gwtrans_t transtype;                // Тип транспорта 
+  gwmode_t mode;                      // Режим: Клиент/Сервер 
+  char ip[16];                        // IP-адрес сервера (для клиента) 
+  uint16_t port;                      // Порт 
+  rsmode_t rs_mode;                   // Режим (RS-232/RS-485)
+  uart_settings_t uart_set;           // Настройки UART прозрачного порта
+} PORTGW_t;
+
+/**                 
+  * @brief  Режимы параллельной диспетчеризации
+  */
+typedef enum
+{
+  PSD_MODE_1 = 0,                     // RS232#1 <-> RS232#2, USART6 <-> RS232#3
+  PSD_MODE_2,                         // RS485#1 <-> RS232#2, USART6 <-> RS232#3
+  PSD_MODE_3,                         // RS232#1 <-> RS485#2, USART6 <-> RS232#3
+  PSD_MODE_4,                         // RS485#1 <-> RS485#2, USART6 <-> RS232#3
+  PSD_MODE_5,                         // RS232#1 <-> RS232#3
+  PSD_MODE_6,                         // RS485#1 <-> RS232#3
+  PSD_MODE_7,                         // USART1 <-> RS485#1, USART3 <-> RS485#2, USART4 <-> RS232#1, USART5 <-> RS232#2, USART6 <-> RS232#3,
+  MAX_PSD_MODES
+} PSD_MODE_t;
+
+/**
+  * @brief Настройки системы параллельной диспетчеризации
+  */
+typedef struct
+{
+  bool enabled;                       // Вкл/Откл 
+  PSD_MODE_t mux_mode;                // Режим (управление мультиплексором)
+  rsmode_t rs_mode;                   // Режим (RS-232/RS-485)
+  uint8_t web_port;                   // На каком из прозрачных портов работает PSD
+  uint16_t assd_timeout;              // Timeout
+} PSD_t;
+
+
+
+/**
+  * @brief  Общая структура настроек
+  */
+typedef struct
+{
+  WEB_PARAMS_t  sWebParams;
+  WEB_PARAMS_t  sWebTempParams;
+  DEVICE_INFO_t sInfo;
+  uint32_t      CritSecCRC;
+/* WARNING! До поля CritSecCRC включительно структура настроек должна быть
+* идентичной между бутлоадером и основным ПО и не должна изменяться при обновлении ПО.
+* Контроль целостности настроек внутри IAP выполняется только для критической секции,
+* т.к. контроль целостности всей структуры не имеет смысла
+* (структура настроек всегда будет отличаться внутри основного ПО).
+* В случае повреждения критического сектора, загружаются параметры по умолчанию. */
+  GSM_t         sGSM[NUM_GSM]; 
+  FLAGS_t       sFlags;
+  ETHERNET_t    sEthernet;      //настройка подключения Ethernet 
+  SERVER_t      sServer;
+  PROXY_t       sProxy;
+  AUTH_t        sAuth[MAX_WEB_USERS];
+  PORTGW_t      sPortGw[NUM_PORTGW];        // Настройки прозрачного порта
+  SNTP_t        sSNTP;   
+  PSD_t         sPSD;   
+  uint16_t      settVer;       // Версия структуры настроек 
+  uint32_t      controlWorld;  // Слово для контроля целостности структуры настроек
+} SETTINGS_t;
+
+/**
+  * @brief  Общая структура настроек
+  */
+extern SETTINGS_t sSettings;
+
+/**
+  * @brief
+  * @retval
+  */
+uint32_t SETTINGS_GetCritSecCRC(void);
+
+/**
+  * @brief  Установить параметры сетевого подключения по умолчанию
+  */
+void SETTINGS_SetWebParamsDef(void);
+
+/**
+  * @brief  Установить временные параметры сетевого подключения по умолчанию
+  */
+void SETTINGS_SetTempWebParamsDef(void);
+
+/**
+  * @brief  Установить Информацию об устройстве по умолчанию
+  */
+void SETTINGS_SetInfoDef(void);
+
+/**
+  * @brief  Установить параметры сетевого подключения по умолчанию
+  */
+void SETTINGS_SetEthternetSwitchDef(void);
+
+/**
+  * @brief  Установить параметры GSM подключения по умолчанию
+  */
+void SETTINGS_SetGSMDef(void);
+
+/**
+  * @brief  Установить параметры SNTP по умолчанию
+  */
+void SETTINGS_SetSntpDef(void);
+
+/**
+  * @brief  Установить параметры подключения к серверу по умолчанию
+  */
+void SETTINGS_SetServerParamsDef(void);
+
+/**
+  * @brief  Установить параметры PROXY по умолчанию
+  */
+void SETTINGS_SetProxyParamsDef(void);
+
+/**
+  * @brief  Очистка сектора настроек
+  */
+void SETTINGS_EraseFlashSector(void);
+
+/**
+  * @brief  Установить значение пароля по умолчанию
+  */
+void SETTINGS_SetServiceDef(void);
+
+/**
+  * @brief  Установить значение настроек прозрачного порта по умолчанию
+  */
+void SETTINGS_SetPortGwDef(void);
+
+/**
+  * @brief  Установить значение системы параллельной диспетчеризации по умолчанию
+  */
+void SETTINGS_SetPDSDef(void);
+
+/**
+  * @brief  Сброс всех настроек в значения по умолчанию кроме сетевых настроек
+  */
+void SETTINGS_SetPartDefault(void);
+
+/**
+  * @brief  Сброс всех настроек в значения по умолчанию
+  */
+void SETTINGS_SetAllDefault(void);
+
+/**
+  * @brief  Запись структуры настроек во flesh
+  */
+void SETTINGS_Save(void);
+
+/**
+  * @brief  Загрузка структуры настроек из flesh
+  */
+void SETTINGS_Load(void);
+
+/**
+  * @brief  
+  */
+void SETTINGS_WriteToFlash(uint8_t *data, uint32_t size);
+
+/**
+  * @brief  
+  */
+void SETTINGS_ReadFromFlash(uint8_t *data, uint32_t size);
+
+/**
+  * @brief  
+  */
+uint32_t SETTINGS_GetCRC(void);
+
+/**
+  * @brief  Сброс флага boottry и сохранение структуры настроек
+  */
+void SETTINGS_ResetBootTry(void);
+
+/**
+  * @brief  Преобразует mac адрес строкового формата в массив uint8_t
+  * @param  mac - буфер для вывода mac адреса
+  */
+void SETTINGS_GetMac(uint8_t *mac);
+
+/**
+  * @brief  Установить дату производства
+  */
+void SETTINGS_SetProDate(char *proDate, uint8_t len);
+
+/**
+  * @brief  Установить серийный номер
+  */
+void SETTINGS_SetSerialNumber(char *sn, uint8_t len);
+
+/**
+  * @brief  Установить MAC
+  */
+void SysSETTINGS_SetMAC(char *mac, uint8_t len);
+
+/**
+  * @brief  Установить статус тестирования
+  */
+void SETTINGS_StatusTest(char *status, uint8_t len);
+
+/**
+  * @brief  Установить статус тестирования "T2OK"
+  */
+void SETTINGS_SetT2OK(void);
+
+/**
+  * @brief  Сбросить статус тестирования "T2OK"
+  */
+void SETTINGS_ResetT2OK(void);
+
+/**
+  * @brief  Устанавливает mac адрес исходя из unique id
+  */
+void COM_SetTestMAC(void);
+
+/**
+  * @brief  Включить DHCP
+  */
+void SETTINGS_SetDHCPOn(void);
+
+//
+void init_settings(void);
+
+//
+void SETTINGS_Print(void);
+
+//
+bool SETTINGS_Check_9b(void);
+
+//
+void SETTINGS_Replace_9b(void);
+
+// Системные настройки
+extern SYS_t sSys;
+
+
+#endif /* #ifndef SETTINGS_API_H */
+
+/********************************* (C) РОТЕК **********************************/

+ 5 - 27
fw/user/main.c

@@ -1,28 +1,4 @@
-#include "at32f403a_407.h"
-#include "at32f403a_407_board.h"
-#include "at32f403a_407_clock.h"
-#include "common_config.h"
-#include "FreeRTOS.h"
-#include "task.h"
-#include "queue.h"
-#include "semphr.h"
-#include "usb_eth.h"
-#include "mux.h"
-#include "misc.h"
-#include "spi_common.h"
-#include "user_fatfs.h"
-#include "spi_flash.h"
-#include "usb_eth.h"
-#include "extended_sram.h"
-#include "modbus.h"
-#include "common_gpio.h"
-#include "io.h"
-#include "input.h"
-#include "output.h"
-#include <stdio.h>
-#include <stdbool.h>
-#include <string.h>
-
+#include "main.h"
 
 
 void init_task(void *argument);
@@ -46,6 +22,8 @@ int main(void)
 
     delay_init();
     
+    SYS_Load(&sSys);
+    
     //usb_clock48m_select(USB_CLK_HEXT);
     
     crm_periph_clock_enable(CRM_USB_PERIPH_CLOCK, TRUE);
@@ -151,8 +129,8 @@ void test_gpio(void *params)
     
     for (;;)
     {
-        vTaskDelay(2000);
-        io_test();
+        vTaskDelay(1000);
+        //io_test();
         //out_test();
     }
 }

+ 34 - 0
fw/user/main.h

@@ -0,0 +1,34 @@
+#ifndef __MAIN_H
+#define __MAIN_H
+
+#include "at32f403a_407.h"
+#include "at32f403a_407_board.h"
+#include "at32f403a_407_clock.h"
+#include "common_config.h"
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "usb_eth.h"
+#include "mux.h"
+#include "misc.h"
+#include "spi_common.h"
+#include "user_fatfs.h"
+#include "spi_flash.h"
+#include "usb_eth.h"
+#include "extended_sram.h"
+#include "modbus.h"
+#include "common_gpio.h"
+#include "io.h"
+#include "input.h"
+#include "output.h"
+#include "sys_api.h"
+#include "settings_api.h"
+#include <stdio.h>
+#include <stdbool.h>
+#include <string.h>
+
+
+
+
+#endif

BIN
project/ewarm/Debug/Exe/module_universal_io.out


BIN
project/ewarm/Debug/Exe/module_universal_io.sim


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 373 - 370
project/ewarm/Debug/List/module_universal_io.map


+ 308 - 132
project/ewarm/Debug/Obj/.ninja_log

@@ -1,133 +1,309 @@
 # ninja log v5
-8805	9156	7295349396485393	module_universal_io_part10.pbi	2354aba8da00332a
-5564	5630	7295349361181615	autoip.pbi	3410c31b7a185ef
-955	1194	7295349316824942	at32f403a_407_adc.pbi	26d55732a88d7716
-4275	4398	7295349348875009	netdb.pbi	f6dbc401c1b75eff
-2733	2959	7295349334484749	at32f403a_407_debug.pbi	60e15a3c5c271d1
-1369	1608	7295349320983814	at32f403a_407_can.pbi	bb000e04e19c41fc
-826	1114	7295349316027074	user_fatfs.pbi	83a0520befde6969
-1194	1531	7295349320195927	at32f403a_407_bpr.pbi	edf8d27acb087cdd
-1685	2050	7295349325394330	input.pbi	cc127fba907a3f91
-2141	2325	7295349328112017	heap_4.pbi	b9206b44de15305a
-688	954	7295349314441313	modbus_params.pbi	521cb8c6475893eb
-318	687	7295349311768809	output.pbi	4a93015e7f57e397
-6592	6983	7295349374752721	module_universal_io_part2.pbi	798e4b1c471a4036
-309	666	7295349311559032	mux.pbi	b62f54fd69e70817
-5873	6330	7295349368218144	module_universal_io_part0.pbi	8da195a3ffd91b65
-9084	9339	7295349398280906	mbutils.pbi	9a42e5292c78f9e6
-50	317	7295349308063300	modbus.pbi	9d93dee408465c3f
-54	297	7295349307874106	common_gpio.pbi	6febe002160ad458
-56	309	7295349307943622	io.pbi	53120150c070c645
-298	562	7295349310521804	spi_flash.pbi	b6925f452a09068c
-5338	5525	7295349360134415	def.pbi	e07c35954cba8126
-1453	1684	7295349321741797	at32f403a_407_int.pbi	906c519932e820e1
-4410	4501	7295349349902258	ip4_frag.pbi	fa52477c77120ef4
-6133	6495	7295349369843800	usb.pbi	1b33831d424288a3
-8481	8755	7295349392441144	mbfuncother.pbi	65dfbf0500f73e74
-4955	5141	7295349356295319	sockets.pbi	78e00629bb9c7bf3
-666	1021	7295349315099555	usb_eth.pbi	1c1276f61ed00315
-562	825	7295349313144777	misc.pbi	cc1427fe86531ca
-4182	4416	7295349349054523	at32f403a_407_crm.pbi	6fa79eb950f4b706
-8713	8809	7295349392979702	ethernet.pbi	1c6c427f99926c56
-2233	2322	7295349328112017	event_groups.pbi	b0117a93bb36a613
-1532	1816	7295349323048294	main.pbi	98f5ddcfa15fcbf9
-1021	1369	7295349318590506	system_at32f403a_407.pbi	19e6ed7ce1b70744
-5903	6297	7295349367889320	module_universal_io_part1.pbi	1c746443b0362344
-1114	1453	7295349319418308	at32f403a_407_acc.pbi	126e6f3827817e9b
-4746	4855	7295349353432813	etharp.pbi	e786b02ceeb55ca1
-5048	5209	7295349356993456	api_msg.pbi	dc19040cffd00b32
-4399	4512	7295349350021940	mem.pbi	5433c52f969448d6
-5071	5196	7295349356843858	tcpip.pbi	1036b9144f88c425
-3454	3704	7295349341933907	usbd_core.pbi	6af6afbab86fcb32
-4838	5071	7295349355602096	pbuf.pbi	8f8fc39b0bf13e03
-4685	4838	7295349353273241	memp.pbi	ba607d316d0db951
-2280	2510	7295349330001654	at32f403a_407_dma.pbi	7e15745d8abafda6
-5280	5474	7295349359645717	ip4_addr.pbi	fa8625d39d6cb082
-5196	5258	7295349357472173	FreeRTOS-openocd.pbi	6afd4f5d141d7d6c
-5258	5369	7295349358592514	ip4.pbi	1c9d7f8a0eafaddb
-2998	3220	7295349337086244	at32f403a_407_misc.pbi	1f69b6e4e023f2a4
-4814	4954	7295349354440126	netif.pbi	5010d8e60e2b8aef
-4620	4685	7295349351737349	igmp.pbi	8d6da84d694b748a
-5210	5280	7295349357681616	list.pbi	85bae7d49ea82543
-3791	4152	7295349346421865	at32f403a_407_tmr.pbi	8d3b78349c7a59be
-4631	4814	7295349353043853	fr_timers.pbi	79368dfd2989e742
-4947	5048	7295349355362732	err.pbi	28d27f8f02f32e8
-5474	5564	7295349360523371	netbuf.pbi	9ab4d3c693ca250a
-2201	2280	7295349327693144	croutine.pbi	65e3213de074fe6a
-1817	2053	7295349325424096	at32f403a_407_usb.pbi	6f9753b218030889
-5141	5338	7295349358283346	icmp.pbi	311d772edbd9397b
-5435	5532	7295349360214203	queue.pbi	14ac0bd34d1dee7a
-3542	3791	7295349342801285	usbd_int.pbi	7914595c1b5f0703
-6331	6565	7295349370541935	spi_common.pbi	7edea8c36d7b233
-4416	4664	7295349351537885	api_lib.pbi	68c467c129312531
-4513	4619	7295349351089082	tasks.pbi	b6d2e7233a0c4a29
-5608	5712	7295349362019638	dns.pbi	a24a6defc7d2b6cb
-5525	5607	7295349360962197	inet_chksum.pbi	604c31d8cc8d82ee
-5370	5435	7295349359226832	netifapi.pbi	41eeb461c8e8e06
-4501	4631	7295349351198789	dhcp.pbi	b7a2e42362c12d74
-5532	5674	7295349361640387	init.pbi	d7d0ed53ee5b1b04
-4664	4746	7295349352365674	ip.pbi	590d4534c4de48ce
-2164	2232	7295349327224391	port.pbi	6601f1f6b557096c
-2551	2781	7295349332689839	at32f403a_407_spi.pbi	f5ca126e2f323a13
-7502	7765	7295349382536049	usbd_rndis_core.pbi	7bdfd763e52c799d
-2959	3302	7295349337894089	at32f403a_407_gpio.pbi	cb5a6e80c4e2495b
-2656	2998	7295349334874006	at32f403a_407_emac.pbi	13623b35ce3b9d28
-2782	3119	7295349336079225	at32f403a_407_exint.pbi	cbed7cabbf9ec5a7
-3302	3542	7295349340307628	at32f403a_407_xmc.pbi	8c76c728dbe71c11
-3119	3450	7295349339390079	at32f403a_407_wdt.pbi	4569f9aad239f2e1
-3704	3938	7295349344275067	at32f403a_407_usart.pbi	7125d76429ddf2f3
-4035	4275	7295349347648284	at32f403a_407_flash.pbi	4fc7bdbc164675f7
-2323	2656	7295349331441773	at32f403a_407_i2c.pbi	6daa0ceb22ce5132
-7249	7498	7295349379873163	porttimer.pbi	ade7d59e369abaf
-3678	4035	7295349345232512	at32f403a_407_pwc.pbi	63a4cbfd4289eaec
-2326	2551	7295349330410560	at32f403a_407_sdio.pbi	63ffb1ea9a33b2e0
-2510	2732	7295349332231101	at32f403a_407_rtc.pbi	bb60c2765c979541
-3220	3453	7295349339429979	at32f403a_407_wwdt.pbi	a015f9aae0617747
-1838	2201	7295349326915219	usbd_sdr.pbi	cf2767748e10e546
-3938	4181	7295349346700822	at32f403a_407_dac.pbi	8d8574a207e748b5
-2050	2124	7295349326137567	fatfs_spi_flash.pbi	136dc5ca3a603cb2
-3451	3678	7295349341674585	at32f403a_407_clock.pbi	b74edcdffa8e942f
-7200	7516	7295349380052691	ethernetif.pbi	44aea922f181f569
-4153	4410	7295349348994683	diskio.pbi	fafcfbb4f7d9bde3
-7768	7863	7295349383523410	sys.pbi	4823310c615ee090
-2053	2140	7295349326286882	ff.pbi	746ba546376bca75
-2125	2163	7295349326526264	syscall.pbi	9fde46365660190a
-1608	1837	7295349323258055	at32f403a_407_crc.pbi	5b132c0cf4795ec
-7863	8217	7295349387073913	mbcrc.pbi	548ab4bca39195af
-8578	8713	7295349392022260	timeouts.pbi	1d773859698f8a01
-8023	8300	7295349387892017	mb.pbi	d15c48b15039d3b6
-8560	8805	7295349392949779	rng.pbi	9a7548d1d0eb5a09
-7716	7827	7295349383164372	udp.pbi	d042359ae981f472
-6968	7088	7295349375779971	tcp_out.pbi	c29c5c85e8c8e2d9
-8218	8481	7295349389706872	mbfunccoils.pbi	44373c6841a8b18f
-7827	8090	7295349385797600	mbascii.pbi	4047099935ec1868
-6984	7249	7295349377395655	mbfuncdisc.pbi	285c957261a71f43
-6455	6711	7295349372008012	utility.pbi	4d101e38d3b56fcf
-7619	7715	7295349382047353	dhserver.pbi	96c90dfc96711b7e
-9025	9105	7295349395936858	stats.pbi	1cd2e113e610096b
-8755	9025	7295349395148964	mbfuncinput.pbi	5a46bb5ed3e0bd41
-8301	8559	7295349390486368	usbd_desc.pbi	2c944b8cdee0cd3a
-6712	6743	7295349372327154	mbfuncdiag.pbi	18a7b177e0bc1978
-7765	8022	7295349385119138	portevent.pbi	83b38927de050926
-7499	7768	7295349382555996	mbrtu.pbi	7177b5e6762babe5
-7516	7618	7295349381079937	sys_arch.pbi	f2f98e1ca4fb092b
-8091	8207	7295349386964505	tcp.pbi	7976241f5bcac0cc
-8207	8473	7295349389627381	mbfuncholding.pbi	2bf2b5bf9e0090fd
-6743	7006	7295349374952186	portother.pbi	c89f8859092ab559
-8474	8578	7295349390665891	dnserver.pbi	8a5674ecbe3f754b
-7236	7501	7295349379903085	portserial.pbi	dd5007ac716e4d70
-7006	7235	7295349377246053	tim_delay.pbi	b60ecd4d830a00f4
-7088	7199	7295349376887010	tcp_in.pbi	62f7342b24edfe12
-4855	4947	7295349354360334	raw.pbi	b4f1ea402c6aa49
-6495	6592	7295349370841134	module_universal_io_part6.pbi	d522aecd2d6e7d14
-5630	5873	7295349363610763	at32f403a_407_board.pbi	4b58d009aa6f2679
-5674	5903	7295349363919939	extended_sram.pbi	9821fdaf070f27e9
-6566	6967	7295349374593145	module_universal_io_part3.pbi	605beb070d069da8
-5712	5793	7295349362852501	module_universal_io_part4.pbi	e3d01f8b13a77a41
-8809	9083	7295349395757335	module_universal_io_part8.pbi	9b38de0fe52801e4
-9105	9243	7295349397353363	module_universal_io_part7.pbi	4f1c6f28a099560b
-5794	6132	7295349366213505	wdt.pbi	c15a4f0592fefe9d
-9340	9743	7295349402353168	module_universal_io_part9.pbi	6ad6fddacfd10e63
-6298	6454	7295349369464812	module_universal_io_part5.pbi	7a27fd2375d30d19
-9743	10237	7295349407295897	module_universal_io.pbd	6f3049f1ad2c5dc7
-10238	12410	7295349428664366	module_universal_io.pbw	9bf63675a62b919d
+9625	10016	7297949003351180	module_universal_io_part10.pbi	44b757639e74aaa4
+2734	2797	7297948931151924	autoip.pbi	3410c31b7a185ef
+895	1222	7297948915454755	at32f403a_407_adc.pbi	26d55732a88d7716
+1867	2098	7297948924152548	netdb.pbi	f6dbc401c1b75eff
+4832	5050	7297948953677099	at32f403a_407_debug.pbi	60e15a3c5c271d1
+3458	3794	7297948941153640	at32f403a_407_can.pbi	bb000e04e19c41fc
+944	1213	7297948915364696	user_fatfs.pbi	83a0520befde6969
+5050	5269	7297948955897000	at32f403a_407_bpr.pbi	edf8d27acb087cdd
+670	916	7297948912363967	input.pbi	cc127fba907a3f91
+2638	2712	7297948930281980	heap_4.pbi	b9206b44de15305a
+307	669	7297948909840619	modbus_params.pbi	521cb8c6475893eb
+916	1162	7297948914844454	output.pbi	4a93015e7f57e397
+5386	5760	7297948960869753	module_universal_io_part2.pbi	886e54fa538c4450
+439	680	7297948909970304	mux.pbi	b62f54fd69e70817
+6635	7011	7297948973369659	module_universal_io_part0.pbi	df9bdfa8747565b8
+8404	8684	7297948990060231	mbutils.pbi	9a42e5292c78f9e6
+54	307	7297948906227649	modbus.pbi	9d93dee408465c3f
+1223	1460	7297948917760607	common_gpio.pbi	6febe002160ad458
+1461	1706	7297948920280934	io.pbi	53120150c070c645
+415	672	7297948909970304	spi_flash.pbi	b6925f452a09068c
+2446	2623	7297948929412050	def.pbi	e07c35954cba8126
+56	381	7297948906968493	at32f403a_407_int.pbi	906c519932e820e1
+2360	2446	7297948927672179	ip4_frag.pbi	fa52477c77120ef4
+5604	5842	7297948961659683	usb.pbi	1b33831d424288a3
+7169	7427	7297948977498085	mbfuncother.pbi	65dfbf0500f73e74
+2191	2359	7297948926762330	sockets.pbi	78e00629bb9c7bf3
+1435	1768	7297948920891213	usb_eth.pbi	1c1276f61ed00315
+51	414	7297948907358124	misc.pbi	cc1427fe86531ca
+5055	5277	7297948956026975	at32f403a_407_crm.pbi	6fa79eb950f4b706
+7945	8041	7297948983600642	ethernet.pbi	1c6c427f99926c56
+2559	2638	7297948929542020	event_groups.pbi	b0117a93bb36a613
+672	944	7297948912584693	main.pbi	98f5ddcfa15fcbf9
+1213	1434	7297948917580453	system_at32f403a_407.pbi	19e6ed7ce1b70744
+6916	7336	7297948976588426	module_universal_io_part1.pbi	70198e839ae393d9
+680	895	7297948912104019	at32f403a_407_acc.pbi	126e6f3827817e9b
+2784	2911	7297948932269134	etharp.pbi	e786b02ceeb55ca1
+2175	2327	7297948926412325	api_msg.pbi	dc19040cffd00b32
+2623	2733	7297948930541925	mem.pbi	5433c52f969448d6
+2270	2389	7297948927022318	tcpip.pbi	1036b9144f88c425
+3217	3457	7297948937764242	usbd_core.pbi	6af6afbab86fcb32
+8041	8158	7297948984790196	pbuf.pbi	8f8fc39b0bf13e03
+1793	2055	7297948923762597	memp.pbi	ba607d316d0db951
+4187	4410	7297948947284869	at32f403a_407_dma.pbi	7e15745d8abafda6
+2031	2112	7297948924282521	ip4_addr.pbi	fa8625d39d6cb082
+2112	2174	7297948924892512	FreeRTOS-openocd.pbi	6afd4f5d141d7d6c
+1768	1875	7297948922021087	ip4.pbi	1c9d7f8a0eafaddb
+4410	4625	7297948949414750	at32f403a_407_misc.pbi	1f69b6e4e023f2a4
+7539	7678	7297948979992935	netif.pbi	5010d8e60e2b8aef
+2327	2494	7297948928152188	igmp.pbi	8d6da84d694b748a
+2978	3147	7297948934674133	list.pbi	85bae7d49ea82543
+3838	4186	7297948945025069	at32f403a_407_tmr.pbi	8d3b78349c7a59be
+2911	2995	7297948933154349	fr_timers.pbi	79368dfd2989e742
+2797	2908	7297948932269134	err.pbi	28d27f8f02f32e8
+1706	1787	7297948921021183	netbuf.pbi	9ab4d3c693ca250a
+2712	2784	7297948931021948	croutine.pbi	65e3213de074fe6a
+2988	3216	7297948935414105	at32f403a_407_usb.pbi	6f9753b218030889
+1938	2030	7297948923541174	icmp.pbi	311d772edbd9397b
+2098	2190	7297948925152463	queue.pbi	14ac0bd34d1dee7a
+3599	3838	7297948941543583	usbd_int.pbi	7914595c1b5f0703
+1162	1432	7297948917559429	settings_api.pbi	ecda1325133e721b
+5729	6059	7297948963840047	spi_common.pbi	7edea8c36d7b233
+1653	1793	7297948921151156	api_lib.pbi	68c467c129312531
+2055	2270	7297948925892439	tasks.pbi	b6d2e7233a0c4a29
+2494	2595	7297948929152102	dns.pbi	a24a6defc7d2b6cb
+2908	2988	7297948933024370	inet_chksum.pbi	604c31d8cc8d82ee
+1876	1938	7297948922541296	netifapi.pbi	41eeb461c8e8e06
+2736	2977	7297948933024370	dhcp.pbi	b7a2e42362c12d74
+2595	2736	7297948930541925	init.pbi	d7d0ed53ee5b1b04
+1787	1867	7297948921891112	ip.pbi	590d4534c4de48ce
+2389	2558	7297948928762140	port.pbi	6601f1f6b557096c
+5269	5604	7297948959287005	at32f403a_407_spi.pbi	f5ca126e2f323a13
+7476	7847	7297948981672291	usbd_rndis_core.pbi	7bdfd763e52c799d
+3431	3654	7297948939804206	at32f403a_407_gpio.pbi	cb5a6e80c4e2495b
+4839	5055	7297948953767184	at32f403a_407_emac.pbi	13623b35ce3b9d28
+4091	4315	7297948946284907	at32f403a_407_exint.pbi	cbed7cabbf9ec5a7
+4844	5065	7297948953897191	at32f403a_407_xmc.pbi	8c76c728dbe71c11
+4471	4796	7297948951155725	at32f403a_407_wdt.pbi	4569f9aad239f2e1
+3147	3368	7297948936894035	at32f403a_407_usart.pbi	7125d76429ddf2f3
+3369	3598	7297948939154684	at32f403a_407_flash.pbi	4fc7bdbc164675f7
+4281	4508	7297948948284775	at32f403a_407_i2c.pbi	6daa0ceb22ce5132
+8158	8403	7297948987239543	porttimer.pbi	ade7d59e369abaf
+2995	3212	7297948935284141	at32f403a_407_pwc.pbi	63a4cbfd4289eaec
+3654	3874	7297948941893963	at32f403a_407_sdio.pbi	63ffb1ea9a33b2e0
+3212	3431	7297948937544186	at32f403a_407_rtc.pbi	bb60c2765c979541
+3874	4091	7297948944154819	at32f403a_407_wwdt.pbi	a015f9aae0617747
+4042	4281	7297948946024960	usbd_sdr.pbi	cf2767748e10e546
+5065	5386	7297948957026880	at32f403a_407_dac.pbi	8d8574a207e748b5
+4315	4387	7297948947024923	fatfs_spi_flash.pbi	136dc5ca3a603cb2
+4508	4839	7297948951545658	at32f403a_407_clock.pbi	b74edcdffa8e942f
+7967	8283	7297948986049709	ethernetif.pbi	44aea922f181f569
+3795	4041	7297948943674509	diskio.pbi	fafcfbb4f7d9bde3
+8283	8481	7297948988060924	sys.pbi	4823310c615ee090
+4388	4470	7297948947894852	ff.pbi	746ba546376bca75
+4796	4832	7297948951545658	syscall.pbi	9fde46365660190a
+4625	4844	7297948951675329	at32f403a_407_crc.pbi	5b132c0cf4795ec
+7011	7251	7297948975748759	mbcrc.pbi	548ab4bca39195af
+8901	9034	7297948993558892	timeouts.pbi	1d773859698f8a01
+6060	6324	7297948966442312	mb.pbi	d15c48b15039d3b6
+5277	5508	7297948958287377	rng.pbi	9a7548d1d0eb5a09
+8687	8900	7297948992229399	udp.pbi	d042359ae981f472
+7362	7476	7297948977987893	tcp_out.pbi	c29c5c85e8c8e2d9
+7712	7967	7297948982861845	mbfunccoils.pbi	44373c6841a8b18f
+8684	9055	7297948993768812	mbascii.pbi	4047099935ec1868
+8315	8687	7297948990060231	mbfuncdisc.pbi	285c957261a71f43
+5761	6016	7297948963400134	utility.pbi	4d101e38d3b56fcf
+8219	8315	7297948986399586	dhserver.pbi	96c90dfc96711b7e
+7092	7168	7297948974909069	stats.pbi	1cd2e113e610096b
+9034	9403	7297948997267479	mbfuncinput.pbi	5a46bb5ed3e0bd41
+8834	9186	7297948995098308	usbd_desc.pbi	2c944b8cdee0cd3a
+7678	7712	7297948980342803	mbfuncdiag.pbi	18a7b177e0bc1978
+7698	7945	7297948982652204	portevent.pbi	83b38927de050926
+6016	6276	7297948966022471	mbrtu.pbi	7177b5e6762babe5
+7595	7698	7297948980202863	sys_arch.pbi	f2f98e1ca4fb092b
+7427	7539	7297948978617657	tcp.pbi	7976241f5bcac0cc
+7336	7595	7297948979177769	mbfuncholding.pbi	2bf2b5bf9e0090fd
+9056	9413	7297948997337757	portother.pbi	c89f8859092ab559
+9186	9280	7297948996007960	dnserver.pbi	8a5674ecbe3f754b
+7847	8218	7297948985419948	portserial.pbi	dd5007ac716e4d70
+9403	9625	7297948999506909	tim_delay.pbi	b60ecd4d830a00f4
+7252	7362	7297948976868320	tcp_in.pbi	62f7342b24edfe12
+8481	8708	7297948990340427	raw.pbi	b4f1ea402c6aa49
+6663	6760	7297948970850977	module_universal_io_part6.pbi	911a3b316d4c01a5
+6404	6634	7297948969591101	at32f403a_407_board.pbi	4b58d009aa6f2679
+6462	6789	7297948971130823	extended_sram.pbi	9821fdaf070f27e9
+1432	1653	7297948919760714	uptime.pbi	932b7d998dea5d4e
+6277	6662	7297948969870987	module_universal_io_part3.pbi	604b09340a58567
+5842	6033	7297948963609653	module_universal_io_part4.pbi	eb6be3f6d52b3e6b
+9280	9513	7297948998387054	module_universal_io_part8.pbi	1c74812669248db5
+8708	8834	7297948991599949	module_universal_io_part7.pbi	a3ba8562ffb12cd
+5509	5729	7297948960547160	wdt.pbi	c15a4f0592fefe9d
+9413	9792	7297949001160060	module_universal_io_part9.pbi	c7f360520c28a936
+6324	6461	7297948967841767	module_universal_io_part5.pbi	d96b33c3f39fe461
+10017	10557	7297949008784701	module_universal_io.pbd	21a8effa42505154
+10558	12723	7297949030056234	module_universal_io.pbw	9bf63675a62b919d
+5572	5705	7297918194208641	sys_settings.pbi	577e933455673256
+49	94	7297889080083549	common_settings.pbi	fc8ffaaa249b3baa
+6033	6404	7297948967281980	sys_api.pbi	54cc67cfed8c5994
+6760	7092	7297948974139368	sys_hal.pbi	489f6613618d1494
+6789	6915	7297948972390343	module_universal_io_part11.pbi	3df179853edb0bc7
+382	439	7297948907549972	at32_uid.pbi	4236b4da0e4ba3d4
+50	315	7297953405542001	main.pbi	98f5ddcfa15fcbf9
+315	716	7297953409542854	module_universal_io_part1.pbi	70198e839ae393d9
+717	1267	7297953415043165	module_universal_io.pbd	21a8effa42505154
+1268	3421	7297953436245426	module_universal_io.pbw	9bf63675a62b919d
+53	184	7297956211569946	hash.pbi	470f3df97f64da35
+60	205	7297956211829250	module_universal_io_part7.pbi	6727895f771cda6d
+57	465	7297956214412345	module_universal_io_part3.pbi	2a68f3b760661c8e
+206	594	7297956215718850	module_universal_io_part9.pbi	e3cc8b0a9040f459
+184	610	7297956215868451	module_universal_io_part1.pbi	aed75ce9e1cba842
+466	628	7297956216048275	module_universal_io_part11.pbi	94db0828f3123726
+628	747	7297956217244773	module_universal_io_part5.pbi	6d816445fbfc6fb3
+611	824	7297956218012767	module_universal_io_part4.pbi	b32735e0d8bbebae
+748	858	7297956218342175	module_universal_io_part6.pbi	2bb77ce825fc92e7
+595	970	7297956219468879	module_universal_io_part2.pbi	862931efe843cc6d
+825	1175	7297956221513705	module_universal_io_part0.pbi	f87d4c2b3352baf6
+971	1180	7297956221573244	module_universal_io_part8.pbi	a2f88113ee680f91
+858	1259	7297956222371450	module_universal_io_part10.pbi	23f87e1291f5687b
+55	298	7297956378724235	mux.pbi	b62f54fd69e70817
+51	301	7297956378754157	input.pbi	cc127fba907a3f91
+57	330	7297956379043381	user_fatfs.pbi	83a0520befde6969
+301	550	7297956381257368	io.pbi	53120150c070c645
+298	555	7297956381307241	modbus_params.pbi	521cb8c6475893eb
+331	696	7297956382703504	misc.pbi	cc1427fe86531ca
+555	779	7297956383541271	uptime.pbi	932b7d998dea5d4e
+550	812	7297956383870392	spi_flash.pbi	b6925f452a09068c
+696	1026	7297956386014649	usb_eth.pbi	1c1276f61ed00315
+812	1082	7297956386573153	main.pbi	98f5ddcfa15fcbf9
+779	1107	7297956386822495	at32f403a_407_int.pbi	906c519932e820e1
+1082	1134	7297956387091767	at32_uid.pbi	4236b4da0e4ba3d4
+1134	1200	7297956387759980	hash.pbi	470f3df97f64da35
+1026	1334	7297956389096410	settings_api.pbi	ecda1325133e721b
+1107	1360	7297956389355717	common_gpio.pbi	6febe002160ad458
+1360	1459	7297956390273266	fr_timers.pbi	79368dfd2989e742
+1200	1510	7297956390861688	modbus.pbi	9d93dee408465c3f
+1459	1550	7297956391260630	FreeRTOS-openocd.pbi	6afd4f5d141d7d6c
+1510	1611	7297956391849044	queue.pbi	14ac0bd34d1dee7a
+1334	1615	7297956391908890	output.pbi	4a93015e7f57e397
+1615	1651	7297956392267926	syscall.pbi	9fde46365660190a
+1550	1677	7297956392517262	netdb.pbi	f6dbc401c1b75eff
+1611	1736	7297956393115657	tcpip.pbi	1036b9144f88c425
+1737	1842	7297956394169295	tasks.pbi	b6d2e7233a0c4a29
+1677	1855	7297956394298609	def.pbi	e07c35954cba8126
+1652	1859	7297956394348475	etharp.pbi	e786b02ceeb55ca1
+1842	1908	7297956394827488	netifapi.pbi	41eeb461c8e8e06
+1855	1925	7297956395006713	list.pbi	85bae7d49ea82543
+1859	1969	7297956395435565	ip4.pbi	1c9d7f8a0eafaddb
+1925	2025	7297956395994089	inet_chksum.pbi	604c31d8cc8d82ee
+1908	2032	7297956396073866	dns.pbi	a24a6defc7d2b6cb
+1969	2049	7297956396243405	event_groups.pbi	b0117a93bb36a613
+2025	2097	7297956396722127	fatfs_spi_flash.pbi	136dc5ca3a603cb2
+2098	2185	7297956397599790	ip4_frag.pbi	fa52477c77120ef4
+2032	2267	7297956398417925	dhcp.pbi	b7a2e42362c12d74
+2049	2292	7297956398666953	init.pbi	d7d0ed53ee5b1b04
+2267	2351	7297956399255352	ff.pbi	746ba546376bca75
+2185	2432	7297956400063484	api_lib.pbi	68c467c129312531
+2292	2444	7297956400202820	api_msg.pbi	dc19040cffd00b32
+2432	2495	7297956400711455	autoip.pbi	3410c31b7a185ef
+2444	2513	7297956400890983	croutine.pbi	65e3213de074fe6a
+2351	2540	7297956401150581	netbuf.pbi	9ab4d3c693ca250a
+2513	2587	7297956401619029	heap_4.pbi	b9206b44de15305a
+2495	2590	7297956401648955	icmp.pbi	311d772edbd9397b
+2540	2623	7297956401978361	ip4_addr.pbi	fa8625d39d6cb082
+2623	2688	7297956402626630	igmp.pbi	8d6da84d694b748a
+2587	2690	7297956402636313	err.pbi	28d27f8f02f32e8
+2688	2756	7297956403304525	port.pbi	6601f1f6b557096c
+2590	2760	7297956403354397	sockets.pbi	78e00629bb9c7bf3
+2691	2915	7297956404900264	at32f403a_407_crm.pbi	6fa79eb950f4b706
+2760	2997	7297956405728339	usbd_sdr.pbi	cf2767748e10e546
+2756	3000	7297956405757976	usbd_core.pbi	6af6afbab86fcb32
+2915	3137	7297956407124309	at32f403a_407_dma.pbi	7e15745d8abafda6
+2997	3216	7297956407912200	at32f403a_407_exint.pbi	cbed7cabbf9ec5a7
+3001	3231	7297956408052170	at32f403a_407_flash.pbi	4fc7bdbc164675f7
+3231	3453	7297956410281140	at32f403a_407_spi.pbi	f5ca126e2f323a13
+3138	3470	7297956410450976	system_at32f403a_407.pbi	19e6ed7ce1b70744
+3216	3545	7297956411198687	at32f403a_407_misc.pbi	1f69b6e4e023f2a4
+3454	3676	7297956412525429	at32f403a_407_usart.pbi	7125d76429ddf2f3
+3545	3764	7297956413393187	at32f403a_407_pwc.pbi	63a4cbfd4289eaec
+3470	3799	7297956413752148	at32f403a_407_acc.pbi	126e6f3827817e9b
+3765	3981	7297956415557330	at32f403a_407_wwdt.pbi	a015f9aae0617747
+3677	4006	7297956415806668	at32f403a_407_bpr.pbi	edf8d27acb087cdd
+3799	4131	7297956417053037	at32f403a_407_gpio.pbi	cb5a6e80c4e2495b
+3982	4206	7297956417801044	at32f403a_407_adc.pbi	26d55732a88d7716
+4007	4224	7297956417990821	at32f403a_407_rtc.pbi	bb60c2765c979541
+4131	4362	7297956419366851	at32f403a_407_usb.pbi	6f9753b218030889
+4206	4444	7297956420184655	usbd_int.pbi	7914595c1b5f0703
+4224	4469	7297956420443967	diskio.pbi	fafcfbb4f7d9bde3
+4363	4683	7297956422588233	at32f403a_407_clock.pbi	b74edcdffa8e942f
+4470	4687	7297956422628124	at32f403a_407_dac.pbi	8d8574a207e748b5
+4444	4775	7297956423495809	at32f403a_407_crc.pbi	5b132c0cf4795ec
+4683	4899	7297956424742813	at32f403a_407_debug.pbi	60e15a3c5c271d1
+4687	4902	7297956424772391	at32f403a_407_emac.pbi	13623b35ce3b9d28
+4776	5102	7297956426777030	at32f403a_407_i2c.pbi	6daa0ceb22ce5132
+4900	5229	7297956428033963	at32f403a_407_can.pbi	bb000e04e19c41fc
+4902	5236	7297956428113599	at32f403a_407_sdio.pbi	63ffb1ea9a33b2e0
+5103	5337	7297956429120761	at32f403a_407_tmr.pbi	8d3b78349c7a59be
+5229	5445	7297956430208159	at32f403a_407_wdt.pbi	4569f9aad239f2e1
+5236	5455	7297956430297615	at32f403a_407_xmc.pbi	8c76c728dbe71c11
+5338	5541	7297956431165046	raw.pbi	b4f1ea402c6aa49
+5456	5560	7297956431354246	sys_arch.pbi	f2f98e1ca4fb092b
+5445	5563	7297956431374195	tcp_out.pbi	c29c5c85e8c8e2d9
+5542	5624	7297956431982566	ip.pbi	590d4534c4de48ce
+5563	5657	7297956432321666	dnserver.pbi	8a5674ecbe3f754b
+5624	5732	7297956433069660	udp.pbi	d042359ae981f472
+5560	5752	7297956433269126	stats.pbi	1cd2e113e610096b
+5658	5907	7297956434815306	usbd_desc.pbi	2c944b8cdee0cd3a
+5732	5988	7297956435623128	mbascii.pbi	4047099935ec1868
+5752	6006	7297956435812325	mbutils.pbi	9a42e5292c78f9e6
+5907	6016	7297956435922323	tcp_in.pbi	62f7342b24edfe12
+5988	6085	7297956436600227	dhserver.pbi	96c90dfc96711b7e
+6086	6205	7297956437795589	pbuf.pbi	8f8fc39b0bf13e03
+6016	6272	7297956438473776	portother.pbi	c89f8859092ab559
+6006	6366	7297956439411563	mbfuncdisc.pbi	285c957261a71f43
+6205	6461	7297956440378681	mbfuncother.pbi	65dfbf0500f73e74
+6272	6529	7297956441037214	portserial.pbi	dd5007ac716e4d70
+6462	6555	7297956441296519	sys.pbi	4823310c615ee090
+6366	6615	7297956441904897	porttimer.pbi	ade7d59e369abaf
+6615	6646	7297956442213781	mbfuncdiag.pbi	18a7b177e0bc1978
+6529	6681	7297956442553159	memp.pbi	ba607d316d0db951
+6647	6777	7297956443520281	timeouts.pbi	1d773859698f8a01
+6555	6805	7297956443812212	portevent.pbi	83b38927de050926
+6777	6870	7297956444450803	ethernet.pbi	1c6c427f99926c56
+6681	6938	7297956445128692	usbd_rndis_core.pbi	7bdfd763e52c799d
+6938	7194	7297956447702108	mbfunccoils.pbi	44373c6841a8b18f
+6806	7230	7297956448041223	ethernetif.pbi	44aea922f181f569
+6870	7233	7297956448080799	mbfuncinput.pbi	5a46bb5ed3e0bd41
+7234	7345	7297956449197808	mem.pbi	5433c52f969448d6
+7230	7349	7297956449237712	tcp.pbi	7976241f5bcac0cc
+7194	7462	7297956450354714	mbfuncholding.pbi	2bf2b5bf9e0090fd
+7349	7469	7297956450474403	module_universal_io_part5.pbi	6d816445fbfc6fb3
+7345	7485	7297956450598360	netif.pbi	5010d8e60e2b8aef
+7462	7597	7297956451755569	module_universal_io_part6.pbi	2bb77ce825fc92e7
+7469	7694	7297956452693041	spi_common.pbi	7edea8c36d7b233
+7485	7707	7297956452812723	tim_delay.pbi	b60ecd4d830a00f4
+7598	7849	7297956454238911	utility.pbi	4d101e38d3b56fcf
+7695	7899	7297956454777475	module_universal_io_part8.pbi	a2f88113ee680f91
+7707	8089	7297956456672399	module_universal_io_part9.pbi	e3cc8b0a9040f459
+7849	8222	7297956458008532	module_universal_io_part2.pbi	862931efe843cc6d
+7900	8240	7297956458148168	rng.pbi	9a7548d1d0eb5a09
+8090	8322	7297956458975946	sys_hal.pbi	489f6613618d1494
+8240	8477	7297956460512145	usb.pbi	1b33831d424288a3
+8223	8484	7297956460581656	mbrtu.pbi	7177b5e6762babe5
+8322	8580	7297956461549366	sys_api.pbi	54cc67cfed8c5994
+8484	8703	7297956462776077	extended_sram.pbi	9821fdaf070f27e9
+8477	8824	7297956464012479	module_universal_io_part0.pbi	f87d4c2b3352baf6
+8824	8948	7297956465259142	module_universal_io_part7.pbi	6727895f771cda6d
+8581	9011	7297956465897436	module_universal_io_part1.pbi	aed75ce9e1cba842
+8704	9080	7297956466585884	module_universal_io_part3.pbi	2a68f3b760661c8e
+8948	9210	7297956467852521	mb.pbi	d15c48b15039d3b6
+9012	9227	7297956468051693	module_universal_io_part4.pbi	b32735e0d8bbebae
+9081	9303	7297956468780029	wdt.pbi	c15a4f0592fefe9d
+9210	9438	7297956470126417	at32f403a_407_board.pbi	4b58d009aa6f2679
+9227	9464	7297956470385734	mbcrc.pbi	548ab4bca39195af
+9438	9597	7297956471752120	module_universal_io_part11.pbi	94db0828f3123726
+9464	9860	7297956474374770	module_universal_io_part10.pbi	23f87e1291f5687b
+9860	10414	7297956479920653	module_universal_io.pbd	21a8effa42505154
+10415	12664	7297956502055781	module_universal_io.pbw	9bf63675a62b919d
+51	248	7297956589995507	hash.pbi	470f3df97f64da35
+248	587	7297956593406361	module_universal_io_part0.pbi	f87d4c2b3352baf6
+587	1153	7297956599070923	module_universal_io.pbd	21a8effa42505154
+1154	3405	7297956621238482	module_universal_io.pbw	9bf63675a62b919d
+50	320	7297956690613695	main.pbi	98f5ddcfa15fcbf9
+320	737	7297956694822389	module_universal_io_part1.pbi	aed75ce9e1cba842
+738	1307	7297956700526820	module_universal_io.pbd	21a8effa42505154
+1308	3557	7297956722662568	module_universal_io.pbw	9bf63675a62b919d
+50	323	7297962592236760	main.pbi	98f5ddcfa15fcbf9
+324	736	7297962596348668	module_universal_io_part1.pbi	aed75ce9e1cba842
+737	1288	7297962601904115	module_universal_io.pbd	21a8effa42505154
+1289	3538	7297962624060914	module_universal_io.pbw	9bf63675a62b919d

BIN
project/ewarm/Debug/Obj/FreeRTOS-openocd.o


+ 6 - 2
project/ewarm/Debug/Obj/FreeRTOS-openocd.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/api_lib.o


+ 6 - 2
project/ewarm/Debug/Obj/api_lib.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/api_msg.o


+ 6 - 2
project/ewarm/Debug/Obj/api_msg.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_acc.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_acc.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_adc.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_adc.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_board.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_board.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_bpr.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_bpr.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_can.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_can.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_clock.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_clock.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_crc.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_crc.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_crm.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_crm.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_dac.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_dac.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_debug.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_debug.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_dma.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_dma.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_emac.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_emac.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_exint.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_exint.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_flash.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_flash.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_gpio.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_gpio.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_i2c.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_i2c.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_int.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_int.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_misc.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_misc.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_pwc.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_pwc.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_rtc.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_rtc.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_sdio.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_sdio.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_spi.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_spi.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_tmr.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_tmr.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_usart.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_usart.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_usb.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_usb.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_wdt.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_wdt.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_wwdt.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_wwdt.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/at32f403a_407_xmc.o


+ 6 - 2
project/ewarm/Debug/Obj/at32f403a_407_xmc.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/autoip.o


+ 6 - 2
project/ewarm/Debug/Obj/autoip.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

+ 19 - 12
project/ewarm/Debug/Obj/build.ninja

@@ -25,9 +25,13 @@ build input.pbi : index input.xcl
 build io.pbi : index io.xcl
 build mux.pbi : index mux.xcl
 build output.pbi : index output.xcl
+build at32_uid.pbi : index at32_uid.xcl
+build hash.pbi : index hash.xcl
 build misc.pbi : index misc.xcl
+build uptime.pbi : index uptime.xcl
 build modbus.pbi : index modbus.xcl
 build modbus_params.pbi : index modbus_params.xcl
+build settings_api.pbi : index settings_api.xcl
 build spi_flash.pbi : index spi_flash.xcl
 build usb_eth.pbi : index usb_eth.xcl
 build user_fatfs.pbi : index user_fatfs.xcl
@@ -135,22 +139,25 @@ build mb.pbi : index mb.xcl
 build rng.pbi : index rng.xcl
 build spi_common.pbi : index spi_common.xcl
 build usb.pbi : index usb.xcl
+build sys_api.pbi : index sys_api.xcl
+build sys_hal.pbi : index sys_hal.xcl
 build at32f403a_407_board.pbi : index at32f403a_407_board.xcl
 build extended_sram.pbi : index extended_sram.xcl
 build utility.pbi : index utility.xcl
 build wdt.pbi : index wdt.xcl
-build module_universal_io_part0.pbi : link common_gpio.pbi input.pbi io.pbi mux.pbi output.pbi misc.pbi modbus.pbi modbus_params.pbi spi_flash.pbi usb_eth.pbi user_fatfs.pbi
-build module_universal_io_part1.pbi : link at32f403a_407_int.pbi main.pbi system_at32f403a_407.pbi at32f403a_407_acc.pbi at32f403a_407_adc.pbi at32f403a_407_bpr.pbi at32f403a_407_can.pbi at32f403a_407_crc.pbi at32f403a_407_crm.pbi at32f403a_407_dac.pbi at32f403a_407_debug.pbi
-build module_universal_io_part2.pbi : link at32f403a_407_dma.pbi at32f403a_407_emac.pbi at32f403a_407_exint.pbi at32f403a_407_flash.pbi at32f403a_407_gpio.pbi at32f403a_407_i2c.pbi at32f403a_407_misc.pbi at32f403a_407_pwc.pbi at32f403a_407_rtc.pbi at32f403a_407_sdio.pbi at32f403a_407_spi.pbi
-build module_universal_io_part3.pbi : link at32f403a_407_tmr.pbi at32f403a_407_usart.pbi at32f403a_407_usb.pbi at32f403a_407_wdt.pbi at32f403a_407_wwdt.pbi at32f403a_407_xmc.pbi at32f403a_407_clock.pbi usbd_core.pbi usbd_int.pbi usbd_sdr.pbi diskio.pbi
-build module_universal_io_part4.pbi : link fatfs_spi_flash.pbi ff.pbi syscall.pbi heap_4.pbi port.pbi croutine.pbi event_groups.pbi fr_timers.pbi FreeRTOS-openocd.pbi list.pbi queue.pbi
-build module_universal_io_part5.pbi : link tasks.pbi api_lib.pbi api_msg.pbi err.pbi netbuf.pbi netdb.pbi netifapi.pbi sockets.pbi tcpip.pbi autoip.pbi dhcp.pbi
-build module_universal_io_part6.pbi : link etharp.pbi icmp.pbi igmp.pbi ip4.pbi ip4_addr.pbi ip4_frag.pbi def.pbi dns.pbi inet_chksum.pbi init.pbi ip.pbi
-build module_universal_io_part7.pbi : link mem.pbi memp.pbi netif.pbi pbuf.pbi raw.pbi stats.pbi sys.pbi tcp.pbi tcp_in.pbi tcp_out.pbi timeouts.pbi
-build module_universal_io_part8.pbi : link udp.pbi ethernet.pbi ethernetif.pbi sys_arch.pbi dhserver.pbi dnserver.pbi usbd_desc.pbi usbd_rndis_core.pbi mbascii.pbi mbfunccoils.pbi mbfuncdiag.pbi
-build module_universal_io_part9.pbi : link mbfuncdisc.pbi mbfuncholding.pbi mbfuncinput.pbi mbfuncother.pbi mbutils.pbi portevent.pbi portother.pbi portserial.pbi porttimer.pbi tim_delay.pbi mbcrc.pbi
-build module_universal_io_part10.pbi : link mbrtu.pbi mb.pbi rng.pbi spi_common.pbi usb.pbi at32f403a_407_board.pbi extended_sram.pbi utility.pbi wdt.pbi
-build module_universal_io.pbd : link module_universal_io_part0.pbi module_universal_io_part1.pbi module_universal_io_part2.pbi module_universal_io_part3.pbi module_universal_io_part4.pbi module_universal_io_part5.pbi module_universal_io_part6.pbi module_universal_io_part7.pbi module_universal_io_part8.pbi module_universal_io_part9.pbi module_universal_io_part10.pbi
+build module_universal_io_part0.pbi : link common_gpio.pbi input.pbi io.pbi mux.pbi output.pbi at32_uid.pbi hash.pbi misc.pbi uptime.pbi modbus.pbi modbus_params.pbi
+build module_universal_io_part1.pbi : link settings_api.pbi spi_flash.pbi usb_eth.pbi user_fatfs.pbi at32f403a_407_int.pbi main.pbi system_at32f403a_407.pbi at32f403a_407_acc.pbi at32f403a_407_adc.pbi at32f403a_407_bpr.pbi at32f403a_407_can.pbi
+build module_universal_io_part2.pbi : link at32f403a_407_crc.pbi at32f403a_407_crm.pbi at32f403a_407_dac.pbi at32f403a_407_debug.pbi at32f403a_407_dma.pbi at32f403a_407_emac.pbi at32f403a_407_exint.pbi at32f403a_407_flash.pbi at32f403a_407_gpio.pbi at32f403a_407_i2c.pbi at32f403a_407_misc.pbi
+build module_universal_io_part3.pbi : link at32f403a_407_pwc.pbi at32f403a_407_rtc.pbi at32f403a_407_sdio.pbi at32f403a_407_spi.pbi at32f403a_407_tmr.pbi at32f403a_407_usart.pbi at32f403a_407_usb.pbi at32f403a_407_wdt.pbi at32f403a_407_wwdt.pbi at32f403a_407_xmc.pbi at32f403a_407_clock.pbi
+build module_universal_io_part4.pbi : link usbd_core.pbi usbd_int.pbi usbd_sdr.pbi diskio.pbi fatfs_spi_flash.pbi ff.pbi syscall.pbi heap_4.pbi port.pbi croutine.pbi event_groups.pbi
+build module_universal_io_part5.pbi : link fr_timers.pbi FreeRTOS-openocd.pbi list.pbi queue.pbi tasks.pbi api_lib.pbi api_msg.pbi err.pbi netbuf.pbi netdb.pbi netifapi.pbi
+build module_universal_io_part6.pbi : link sockets.pbi tcpip.pbi autoip.pbi dhcp.pbi etharp.pbi icmp.pbi igmp.pbi ip4.pbi ip4_addr.pbi ip4_frag.pbi def.pbi
+build module_universal_io_part7.pbi : link dns.pbi inet_chksum.pbi init.pbi ip.pbi mem.pbi memp.pbi netif.pbi pbuf.pbi raw.pbi stats.pbi sys.pbi
+build module_universal_io_part8.pbi : link tcp.pbi tcp_in.pbi tcp_out.pbi timeouts.pbi udp.pbi ethernet.pbi ethernetif.pbi sys_arch.pbi dhserver.pbi dnserver.pbi usbd_desc.pbi
+build module_universal_io_part9.pbi : link usbd_rndis_core.pbi mbascii.pbi mbfunccoils.pbi mbfuncdiag.pbi mbfuncdisc.pbi mbfuncholding.pbi mbfuncinput.pbi mbfuncother.pbi mbutils.pbi portevent.pbi portother.pbi
+build module_universal_io_part10.pbi : link portserial.pbi porttimer.pbi tim_delay.pbi mbcrc.pbi mbrtu.pbi mb.pbi rng.pbi spi_common.pbi usb.pbi sys_api.pbi sys_hal.pbi
+build module_universal_io_part11.pbi : link at32f403a_407_board.pbi extended_sram.pbi utility.pbi wdt.pbi
+build module_universal_io.pbd : link module_universal_io_part0.pbi module_universal_io_part1.pbi module_universal_io_part2.pbi module_universal_io_part3.pbi module_universal_io_part4.pbi module_universal_io_part5.pbi module_universal_io_part6.pbi module_universal_io_part7.pbi module_universal_io_part8.pbi module_universal_io_part9.pbi module_universal_io_part10.pbi module_universal_io_part11.pbi
 build module_universal_io.pbw : browsedata module_universal_io.pbd
 
 

BIN
project/ewarm/Debug/Obj/common_gpio.o


+ 6 - 2
project/ewarm/Debug/Obj/common_gpio.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/croutine.o


+ 6 - 2
project/ewarm/Debug/Obj/croutine.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/def.o


+ 6 - 2
project/ewarm/Debug/Obj/def.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/dhcp.o


+ 6 - 2
project/ewarm/Debug/Obj/dhcp.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/dhserver.o


+ 6 - 2
project/ewarm/Debug/Obj/dhserver.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/diskio.o


+ 6 - 2
project/ewarm/Debug/Obj/diskio.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/dns.o


+ 6 - 2
project/ewarm/Debug/Obj/dns.xcl

@@ -48,7 +48,7 @@ B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\project\ewarm\..\..\shared\settings
+B:\projects\module_universal_io\project\ewarm\..\..\shared\sys
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\usb
 -I
@@ -62,6 +62,8 @@ B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\modbus
 -I
+B:\projects\module_universal_io\project\ewarm\..\..\fw\modules\settings
+-I
 B:\projects\module_universal_io\project\ewarm\..\..\fw\user
 -I
 B:\projects\module_universal_io\project\ewarm\..\..\libs\thirdparty\freertos\include
@@ -134,7 +136,7 @@ B:\projects\module_universal_io\shared\freemodbus\port
 -I
 B:\projects\module_universal_io\shared\freemodbus\rtu
 -I
-B:\projects\module_universal_io\shared\settings
+B:\projects\module_universal_io\shared\sys
 -I
 B:\projects\module_universal_io\fw\modules\usb
 -I
@@ -148,6 +150,8 @@ B:\projects\module_universal_io\fw\modules\user_fatfs
 -I
 B:\projects\module_universal_io\fw\modules\modbus
 -I
+B:\projects\module_universal_io\fw\modules\settings
+-I
 B:\projects\module_universal_io\fw\user
 -I
 B:\projects\module_universal_io\libs\thirdparty\freertos\include

BIN
project/ewarm/Debug/Obj/dnserver.o


Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно