123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #ifndef SETTINGS_API_H
- #define SETTINGS_API_H
- #include "at32f403a_407.h"
- #include <stdbool.h>
- #include "usart.h"
- #include "sys_api.h"
- #include "mb.h"
- #include "mbport.h"
- #define MODEL_LEN 16
- // ------------------------------------------------------------------- //
- // Modbus
- // ------------------------------------------------------------------- //
- // Modbus
- typedef struct
- {
- rate_t baud; // Скорость порта
- parity_t parity; // Четность
- databits_t databits; // Число бит данных
- stopbits_t stopbits; // Число стоп-бит
- } modbus_t;
- // Общая структура настроек для IAP и FW
- typedef struct
- {
- uint16_t mb_port; // Настройки порта для modbus
- char model[MODEL_LEN]; // Модель
-
- } com_settings_t;
- // Полная структура настроек
- typedef struct
- {
- com_settings_t com_settings;
- uint32_t critical_section_crc;
-
- } settings_t;
- //
- typedef enum
- {
- MB_BOOT_ERR_NO = 0x01,
-
- MB_BOOT_ERR_WRONG_CONTENT = 0x02,
- MB_BOOT_ERR_WRONG_FW_SIZE = 0x03,
- MB_BOOT_ERR_WRONG_KEY = 0x04,
- MB_BOOT_FLASH_ERR = 0x05,
- MB_BOOT_WRONG_PACK_INDEX = 0x06,
- MB_BOOT_ERR_WRONG_FW_CRC = 0x07,
- } mb_err_code_t ;
- // Загрузка структуры настроек из flesh
- void settings_load(settings_t *settings);
- //
- void init_settings(void);
- //
- void settings_read_from_flash(uint8_t *data, uint32_t size);
- //
- uint32_t settings_get_crc(settings_t *settings);
- //
- uint32_t settings_get_crit_sec_crc(settings_t *settings);
- // Сброс всех настроек в значения по умолчанию
- void settings_set_all_default(void);
- // -------------------------------------------------------------------------- //
- // Настройки по умолчанию
- //
- void settings_set_modbus_def(uint16_t *mb_port);
- //
- void settings_conv_modbus_def(modbus_t *mb_settings, uint16_t *mb_port);
- // Установка параметров Modbus
- void settings_set_modbus_params(uint16_t mb_port);
- // -------------------------------------------------------------------------- //
- // Запись структуры настроек во flash
- void settings_save(settings_t *settings);
- //
- void settings_write_to_flash(uint8_t *data, uint32_t size);
- // Очистка сектора настроек
- void settings_erase_flash_sector(void);
- //
- uint32_t settings_get_mb_baud(modbus_t *mb_settings);
- //
- eMBParity settings_get_mb_par(modbus_t *mb_settings);
- // Системные настройки
- extern sys_settings_t sys_settings;
- //
- extern settings_t settings;
- //
- extern modbus_t mb_port_settings;
- #endif /* #ifndef SETTINGS_API_H */
|