settings_api.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #ifndef SETTINGS_API_H
  2. #define SETTINGS_API_H
  3. #include "at32f403a_407.h"
  4. #include <stdbool.h>
  5. #include "usart.h"
  6. #include "sys_api.h"
  7. #include "mb.h"
  8. #include "mbport.h"
  9. #define MODEL_LEN 16
  10. // ------------------------------------------------------------------- //
  11. // Modbus
  12. // ------------------------------------------------------------------- //
  13. // Modbus
  14. typedef struct
  15. {
  16. rate_t baud; // Скорость порта
  17. parity_t parity; // Четность
  18. databits_t databits; // Число бит данных
  19. stopbits_t stopbits; // Число стоп-бит
  20. } modbus_t;
  21. // Общая структура настроек для IAP и FW
  22. typedef struct
  23. {
  24. uint16_t mb_port; // Настройки порта для modbus
  25. char model[MODEL_LEN]; // Модель
  26. } com_settings_t;
  27. // Полная структура настроек
  28. typedef struct
  29. {
  30. com_settings_t com_settings;
  31. uint32_t critical_section_crc;
  32. } settings_t;
  33. //
  34. typedef enum
  35. {
  36. MB_BOOT_ERR_NO = 0x01,
  37. MB_BOOT_ERR_WRONG_CONTENT = 0x02,
  38. MB_BOOT_ERR_WRONG_FW_SIZE = 0x03,
  39. MB_BOOT_ERR_WRONG_KEY = 0x04,
  40. MB_BOOT_FLASH_ERR = 0x05,
  41. MB_BOOT_WRONG_PACK_INDEX = 0x06,
  42. MB_BOOT_ERR_WRONG_FW_CRC = 0x07,
  43. } mb_err_code_t ;
  44. // Загрузка структуры настроек из flesh
  45. void settings_load(settings_t *settings);
  46. //
  47. void init_settings(void);
  48. //
  49. void settings_read_from_flash(uint8_t *data, uint32_t size);
  50. //
  51. uint32_t settings_get_crc(settings_t *settings);
  52. //
  53. uint32_t settings_get_crit_sec_crc(settings_t *settings);
  54. // Сброс всех настроек в значения по умолчанию
  55. void settings_set_all_default(void);
  56. // -------------------------------------------------------------------------- //
  57. // Настройки по умолчанию
  58. //
  59. void settings_set_modbus_def(uint16_t *mb_port);
  60. //
  61. void settings_conv_modbus_def(modbus_t *mb_settings, uint16_t *mb_port);
  62. // Установка параметров Modbus
  63. void settings_set_modbus_params(uint16_t mb_port);
  64. // -------------------------------------------------------------------------- //
  65. // Запись структуры настроек во flash
  66. void settings_save(settings_t *settings);
  67. //
  68. void settings_write_to_flash(uint8_t *data, uint32_t size);
  69. // Очистка сектора настроек
  70. void settings_erase_flash_sector(void);
  71. //
  72. uint32_t settings_get_mb_baud(modbus_t *mb_settings);
  73. //
  74. eMBParity settings_get_mb_par(modbus_t *mb_settings);
  75. // Системные настройки
  76. extern sys_settings_t sys_settings;
  77. //
  78. extern settings_t settings;
  79. //
  80. extern modbus_t mb_port_settings;
  81. #endif /* #ifndef SETTINGS_API_H */