поле - <flags>
длина - 2 байта
тип - int16
Описание - Определяет опции пакета:
NPL_FLAG_CRC- определяет расчет контрольной суммы пакета (CRC). Принимает значения: 0 – нет, 1- да. Если отправитель пакета рассчитывает CRC он должен выставить данный флаг (1), в таком случае получатель имеет возможность проверить валидность пакета.
NPL_FLAG_ENCRYPTION – определяет шифрование поля <data>, принимает значение: 0 – нет, 1 – да. Поле <data> шифруется по алгоритму Blowfish**.
NPL_FLAG_DELAY – определяет необходимо ли сохранить команду на сервере, если устройство или АРМ недоступны сейчас.
0 - пакет не надо сохранять на сервере в очереди отложенных команд ни при каких обстоятелствах,
1 — пакет необходимо сохранить в очереди отложенных команд только тогда, когда адресат сейчас недоступен.
Адресатом пакета может быть только конкретное устройство или АРМ.
Не могу разобраться в протоколе v6 "Навигационные данные"
Код:
<flags> = 0; Куда этот ноль относится к NPL_FLAG_CRC или NPL_FLAG_ENCRYPTION или NPL_FLAG_ENCRYPTION
Дополнительной документации по этому вопросу в описании протокола я не нашел.
Размер поля 2 байта. Если бы оно было бы строковое и в строке приходило название опции тогда понятно. Или какая либо структура. Т.е. во всем описании протокола присутствуют подобные параметры NPL_FLAG_CRC ... а как понять какой именно параметр указан в пришедшем сообщении?
Код:
short flags = читаешь_пакет;
if(flags & NPL_FLAG_CRC)
{
//проверяешь CRC
}
if(flags & NPL_FLAG_ENCRYPTION)
{
//Дешифруешь сообщение
}
if(flags & NPL_FLAG_DELAY)
{
//Ставишь в очередь
}
if(flags & NPL_FLAG_CRC)
{
//проверяешь CRC
}
if(flags & NPL_FLAG_ENCRYPTION)
{
//Дешифруешь сообщение
}
if(flags & NPL_FLAG_DELAY)
{
//Ставишь в очередь
}
Благодарю. В том то и дело что есть только документация к протоколу. А заголовочных файлов в комплекте не предусмотрено. Попробую обратиться к разработчику протокола, мне кажется должна быть таблица в которой расписано значение флага и его битовое значение.
приложите доку - глянем .
Благодарю за помощь. И впрямь к доковскому файлу идет заголовочный "protocol.h" в котором все флаги определены. Как оказалось разработчик не выслал этот файл вместе с текстовым документом описывающим протокол.