settings_api.h 2.4 KB

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