Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не могу разобраться в протоколе v6 "Навигационные данные"

80K
08 июня 2012 года
Bludodey
9 / / 17.05.2012
Вот описание одного из полей структуры данных протокола по передачи навигационных данных.
Код:
поле -  <flags>        
длина -    2 байта
тип -  int16
Описание -  Определяет опции пакета:        
NPL_FLAG_CRC- определяет расчет контрольной суммы пакета (CRC). Принимает значения: 0 – нет, 1- да. Если отправитель пакета рассчитывает CRC он должен выставить данный флаг (1), в таком случае получатель имеет возможность проверить валидность пакета.

NPL_FLAG_ENCRYPTION – определяет шифрование поля <data>, принимает значение: 0 – нет, 1 – да. Поле <data> шифруется по алгоритму Blowfish**.

NPL_FLAG_DELAY – определяет необходимо ли сохранить команду на сервере, если устройство или АРМ недоступны сейчас.
0  - пакет не надо сохранять на сервере в очереди отложенных команд ни при каких обстоятелствах,
1 — пакет необходимо сохранить в очереди отложенных команд только тогда, когда адресат сейчас недоступен.
Адресатом пакета может быть только конкретное устройство или АРМ.
Мне не понятна следующая вещь. Когда я получаю это поле то оно у меня принимает значение 0 или 1. Так к какой опции и как отнести полученное значение. К примеру

<flags> = 0; Куда этот ноль относится к NPL_FLAG_CRC или NPL_FLAG_ENCRYPTION или NPL_FLAG_ENCRYPTION
Дополнительной документации по этому вопросу в описании протокола я не нашел.
Размер поля 2 байта. Если бы оно было бы строковое и в строке приходило название опции тогда понятно. Или какая либо структура. Т.е. во всем описании протокола присутствуют подобные параметры NPL_FLAG_CRC ... а как понять какой именно параметр указан в пришедшем сообщении?
277
08 июня 2012 года
arrjj
1.7K / / 26.01.2011
поидее так:
Код:
short flags = читаешь_пакет;
if(flags & NPL_FLAG_CRC)
{
//проверяешь CRC
}
if(flags & NPL_FLAG_ENCRYPTION)
{
//Дешифруешь сообщение
}
if(flags & NPL_FLAG_DELAY)
{
//Ставишь в очередь
}
Посмотри там в заголовочных файлах NPL_FLAG_* константы или enum есть?
80K
09 июня 2012 года
Bludodey
9 / / 17.05.2012
Благодарю. В том то и дело что есть только документация к протоколу. А заголовочных файлов в комплекте не предусмотрено. Попробую обратиться к разработчику протокола, мне кажется должна быть таблица в которой расписано значение флага и его битовое значение.
252
09 июня 2012 года
koderAlex
1.4K / / 07.09.2005
приложите доку - глянем .
80K
19 июня 2012 года
Bludodey
9 / / 17.05.2012
Благодарю за помощь. И впрямь к доковскому файлу идет заголовочный "protocol.h" в котором все флаги определены. Как оказалось разработчик не выслал этот файл вместе с текстовым документом описывающим протокол.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог