Files
Balsam_167/Source/Internal/Include/message.h

58 lines
2.2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* @file message.h
* @brief Форматы команд, размеры ответов и API обработки Modbus-сообщений.
*
* CMD_TO_TMS описывает точную раскладку принятого кадра, включая CRC. Поля и
* ANSWER_LEN/REPLY_LEN согласованы с удалённым мастером; структура использует
* целевые типы DSP, поэтому не должна сериализоваться простым memcpy на PC.
*/
#ifndef MESSAGE_H
#define MESSAGE_H
typedef unsigned char CHAR;
#define ANSWER_LEN 0x80 //70 // 16+16+16+16+6
#define REPLY_LEN 0x19
#define byte_hi byte_1
#define byte_lo byte_0
typedef struct
{
unsigned char Address; // Адрес контроллера
unsigned char Number; // Номер команды
BAITE byte0;
BAITE byte1;
BAITE byte2;
BAITE byte3;
BAITE byte4;
BAITE byte5;
BAITE byte6;
BAITE byte7;
unsigned char crc_lo;
unsigned char crc_hi;
unsigned char add_byte;
} CMD_TO_TMS;
extern int modbus[];
/** Принимает запрос чтения регистров и подготавливает соответствующий ответ. */
void ReceiveCommandModbus3(RS_DATA *rs_arr);
/** Принимает запрос записи одного регистра и применяет разрешённый параметр. */
void ReceiveCommandModbus6(RS_DATA *rs_arr);
/** Отправляет текущий блок телеметрии ответом прикладной функции 4. */
void SendCommandModbus4(RS_DATA *rs_arr);
/** Разбирает ответ функции 4, полученный от ведомого устройства. */
void ReceiveAnswerModbus4(RS_DATA *rs_arr);
/** Сохраняет текущий массив параметров в EEPROM. */
void Save_params(void);
/** Загружает параметры из EEPROM и заменяет некорректные значения безопасными. */
void Load_params(void);
/** Заполняет параметры значениями для выбранного в package.h варианта платы. */
void Default_params(void);
#endif //MESSAGE_H