Проект

Общее

Профиль

Включить проброс сообщений между каналами (COMMAND_GATEWAY_ON 0x31)

Включение проброса сообщений между CAN и CANFD каналами устройства. Данную команду можно выполнить только после открытия двух каналов. При включении проброса между каналами мы можем указать между какими каналами осуществлять проброс и правило фильтрации по умолчанию (пропускать все сообщения кроме указанных в фильтре или блокировать все сообщения кроме указанных фильтре).
По сравнению с первой версией протокола здесь поменялись флаги, отвечающие за настройку проброса сообщений:

enum FLAG_GW_SRC_CHANNELS {
    FLAG_GW_SRC_CHANNEL_1 = 0x02,
    FLAG_GW_SRC_CHANNEL_2 = 0x04,
    FLAG_GW_SRC_CHANNEL_3 = 0x06,
    FLAG_GW_SRC_CHANNEL_4 = 0x08,
    FLAG_GW_SRC_CHANNEL_5 = 0x0A,
    FLAG_GW_SRC_CHANNEL_6 = 0x0C,
    FLAG_GW_SRC_CHANNEL_7 = 0x0E
};

enum FLAG_GW_DST_CHANNELS {
    FLAG_GW_DST_CHANNEL_1 = 0x20,
    FLAG_GW_DST_CHANNEL_2 = 0x40,
    FLAG_GW_DST_CHANNEL_3 = 0x60,
    FLAG_GW_DST_CHANNEL_4 = 0x80,
    FLAG_GW_DST_CHANNEL_5 = 0xA0,
    FLAG_GW_DST_CHANNEL_6 = 0xC0,
    FLAG_GW_DST_CHANNEL_7 = 0xE0
};

#define FLAG_GATEWAY_DEFAULT_ACCEPT = 0x01; // Если установить во флагах, то по умолчанию пробрасываем все сообщения.

Проброс можно включить между CAN и CANFD каналами. В итоге, если сообщение пробрасывается из CANFD в CAN, то длина сообщения обрезается под размер сообщения классического CAN. При пробросе сообщений из CAN в CANFD сообщение остаётся неизменным только к флагам отправки в CANFD добавляются флаги его настройки: FDF и BRS, если CANFD настроен с переключением скоростей.

Запрос

Поле Значение
command 0x31
sequence порядковый номер запроса
flags FLAG_GW_DST_CHANNEL_x — номер канала, в который будет происходить проброс сообщений; FLAG_GW_SRC_CHANNEL_x — номер канала, из которого будут обрабатываться сообщения; FLAG_GATEWAY_DEFAULT_ACCEPT
dSize 0x00

Ответ

Поле Значение
command 0xB1
sequence порядковый номер запроса
flags 0x00
dSize 0x00

Пример
Включение проброса сообщений из канала 1 в канал 2.

⇒ 31 xx 43 00
⇐ B1 xx 00 00

Попытка включения проброса сообщений из несуществующего канала.

⇒ 31 xx A1 00
⇐ FF xx 00 00