settings_api.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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. // ------------------------------------------------------------------- //
  8. // Modbus
  9. // ------------------------------------------------------------------- //
  10. // Modbus
  11. typedef struct
  12. {
  13. rate_t baud; // Скорость порта
  14. parity_t parity; // Четность
  15. databits_t databits; // Число бит данных
  16. stopbits_t stopbits; // Число стоп-бит
  17. } modbus_t;
  18. // Общая структура настроек для IAP и FW
  19. typedef struct
  20. {
  21. uint16_t mb_port; // Настройки порта для modbus
  22. } com_settings_t;
  23. // Полная структура настроек
  24. typedef struct
  25. {
  26. com_settings_t com_settings;
  27. uint32_t critical_section_crc;
  28. } settings_t;
  29. // Загрузка структуры настроек из flesh
  30. void settings_load(settings_t *settings);
  31. //
  32. void init_settings(void);
  33. //
  34. void settings_read_from_flash(uint8_t *data, uint32_t size);
  35. //
  36. uint32_t settings_get_crc(settings_t *settings);
  37. //
  38. uint32_t settings_get_crit_sec_crc(settings_t *settings);
  39. // Сброс всех настроек в значения по умолчанию
  40. void settings_set_all_default(void);
  41. // -------------------------------------------------------------------------- //
  42. // Настройки по умолчанию
  43. //
  44. void settings_set_modbus_def(uint16_t *mb_port);
  45. //
  46. void settings_conv_modbus_def(modbus_t *mb_settings, uint16_t *mb_port);
  47. // Установка параметров Modbus
  48. void settings_set_modbus_params(uint16_t mb_port);
  49. // -------------------------------------------------------------------------- //
  50. // Запись структуры настроек во flash
  51. void settings_save(settings_t *settings);
  52. //
  53. void settings_write_to_flash(uint8_t *data, uint32_t size);
  54. // Очистка сектора настроек
  55. void settings_erase_flash_sector(void);
  56. // Системные настройки
  57. extern sys_settings_t sys_settings;
  58. //
  59. extern settings_t settings;
  60. //
  61. extern modbus_t mb_port_settings;
  62. #endif /* #ifndef SETTINGS_API_H */