Проект

Общее

Профиль

Изменение настроек канала (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