Включить проброс сообщений между каналами (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