Изменение настроек канала (COMMAND_CHANNEL_OPTION 0x14)¶
Некоторые настройки канала можно выставлять как до открытия соединения, так и после. Для этого введена данная команда. Каждая опция может выставляться отдельно или же скопом. Описание схоже с получением информации об устройстве.
Пакет принимает следующий вид:
typedef struct {
CommandHeader header;
uint32_t options[];
} __attribute__((packed)) ChannelOptions;
// Включить или выключить терминатор
#define CHANNEL_OPT_CAN_TERMINATOR 0x01000000U
// Включить или выключить отслеживание проигрыша арбитража
#define CHANNEL_OPT_CAN_ALS_CONTROL 0x02000000U
// Включить ии выключить подтяжку линии LIN к +12В
#define CHANNEL_OPT_LIN_PULLUP 0x11000000U
// Включить или выключить расширенный расчёт CRC
#define CHANNEL_OPT_LIN_ENHANCED_CRC 0x12000000U
// Перевести устройство в режим ведомомго устройства
#define CHANNEL_OPT_LIN_SLAVE_MODE 0x13000000U
Все эти опции принимают 1 или 0 в младшем байте опции.
Запрос
Поле | Значение |
header.command | 0x11 |
header.sequence | порядковый номер запроса |
header.flags | FLAG_CHANNEL_x |
header.dSize | длина кратная 4 байтам |
options | набор включаемых или отключаемых опций |
Ответ
Если запрос успешно обработан и все опции удалось установить. Не поддерживаемые каналом опции игнорируются.
Поле | Значение |
command | 0x94 |
sequence | порядковый номер запроса |
flags | 0x00 |
dSize | 0x00 |
Если запрос не обработан.
Поле | Значение |
command | 0xFF |
sequence | порядковый номер запроса |
flags | 0x00 |
dSize | 0x00 |
Пример
Включение терминирующего резистора и контроля арбитража на втором канале CAN.
⇒ 11 xx 40 08 01 00 00 01 01 00 00 02
⇐ 91 xx 00 00