Задание режима расчёта контрольной суммы (FLAG_CONFIG_CRC_MODE 0x07)¶
Для каналов, отвечающих за работу с шиной LIN можно задать тип контрольной суммы, используемой для отправки данных в шину. Для данной настройки используется структура:
enum CRC_MODES {
LIN_CRC_MODE_CLASSIC = 0x00,
LIN_CRC_MODE_ENCHANCED = 0x01
};
typedef struct {
CommandHeader header;
uint8_t mode;
} __attribute__((packed)) ChannelConfigureCRCMode;
Запрос
Поле | Значение |
header.command | 0x11 |
header.sequence | порядковый номер запроса |
header.flags | FLAG_CHANNEL_x + FLAG_CONFIG_CRC_MODE |
header.dSize | 0x01 |
mode | значение из CRC_MODES |
Ответ
Если запрос успешно обработан и значение вида контрольной суммы задано из допустимого диапазона значений.
Поле | Значение |
command | 0x91 |
sequence | порядковый номер запроса |
flags | 0x00 |
dSize | 0x00 |
Если запрос не обработан.
Поле | Значение |
command | 0xFF |
sequence | порядковый номер запроса |
flags | 0x00 |
dSize | 0x00 |
Пример
Задание расчёта классической контрольной суммы для канала 2.
⇒ 11 xx 47 01 00
⇐ 91 xx 00 00
Задание вида расчёта контрольной суммы для канала 2 с неправильным значением.
⇒ 11 xx 47 01 10
⇐ FF xx 00 00