settings_api.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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. //
  32. typedef enum
  33. {
  34. MB_BOOT_ERR_NO = 0x01,
  35. MB_BOOT_ERR_WRONG_CONTENT = 0x02,
  36. MB_BOOT_ERR_WRONG_FW_SIZE = 0x03,
  37. MB_BOOT_ERR_WRONG_KEY = 0x04,
  38. MB_BOOT_FLASH_ERR = 0x05,
  39. MB_BOOT_WRONG_PACK_INDEX = 0x06,
  40. MB_BOOT_ERR_WRONG_FW_CRC = 0x07,
  41. } mb_err_code_t ;
  42. // Загрузка структуры настроек из flesh
  43. void settings_load(settings_t *settings);
  44. //
  45. void init_settings(void);
  46. //
  47. void settings_read_from_flash(uint8_t *data, uint32_t size);
  48. //
  49. uint32_t settings_get_crc(settings_t *settings);
  50. //
  51. uint32_t settings_get_crit_sec_crc(settings_t *settings);
  52. // Сброс всех настроек в значения по умолчанию
  53. void settings_set_all_default(void);
  54. // -------------------------------------------------------------------------- //
  55. // Настройки по умолчанию
  56. //
  57. void settings_set_modbus_def(uint16_t *mb_port);
  58. //
  59. void settings_conv_modbus_def(modbus_t *mb_settings, uint16_t *mb_port);
  60. // Установка параметров Modbus
  61. void settings_set_modbus_params(uint16_t mb_port);
  62. // -------------------------------------------------------------------------- //
  63. // Запись структуры настроек во flash
  64. void settings_save(settings_t *settings);
  65. //
  66. void settings_write_to_flash(uint8_t *data, uint32_t size);
  67. // Очистка сектора настроек
  68. void settings_erase_flash_sector(void);
  69. //
  70. uint32_t settings_get_mb_baud(modbus_t *mb_settings);
  71. //
  72. eMBParity settings_get_mb_par(modbus_t *mb_settings);
  73. // Системные настройки
  74. extern sys_settings_t sys_settings;
  75. //
  76. extern settings_t settings;
  77. //
  78. extern modbus_t mb_port_settings;
  79. #endif /* #ifndef SETTINGS_API_H */