Этот пример показывает, как пользоваться Библиотекой Communications Toolbox™ для Протокола ZigBee®, чтобы сгенерировать и декодировать СЕТЕВЫЕ кадры спецификации [1] ZigBee.
Стандарт ZigBee задает сеть (СЕТЕВОЙ или NWK) и приложение (APP или APL) слои для беспроводных персональных сетей области с низкой ставкой. Они СЕТЕВЫЕ - и спецификации слоя APP полагаются на PHY и спецификации MAC IEEE® 802.15.4™ [2]. Устройства ZigBee находят применение в домашней автоматизации и организации сети датчика и очень относятся к тренду Интернета вещей (IoT).
zigbee. Объект настройки NETFrameConfig используется и в генерации и в декодировании ZigBee СЕТЕВЫЕ кадры. Такие объекты описывают кадр СЕТЕВОГО слоя и задают его тип кадра и все применимые свойства. zigbee. Функция NETFrameGenerator принимает zigbee. Объект NETFrameConfig, описывающий кадр, и опционально полезную нагрузку СЕТЕВОГО слоя (кадр слоя APP) в байтах (2D символы) и выходные параметры СЕТЕВОЙ кадр в байтах. zigbee. Функция NETFrameDecoder принимает Сетевой модуль данных о протоколе (NPDU) в байтах и выводит zigbee. Объект NETFrameConfig, описывающий кадр и возможно СЕТЕВОЙ слой, структурирует в байтах. Пункт 3.3 в [1] описывает СЕТЕВЫЕ форматы кадра.
Этот раздел декодирует СЕТЕВЫЕ кадры, переданные от коммерческого радио ZigBee, разрешающего домашнюю автоматизацию и полученное использование USRP® B200-мини-радио и Пакет Поддержки Communications Toolbox для радио USRP®.
zigbee. Функция NETFrameDecoder может декодировать СЕТЕВОЙ слой кадры данных ZigBee и заголовок типов кадра сетевой команды.
load zigbeeNETCaptures % netFrame [netConfig, netPayload] = zigbee.NETFrameDecoder(netFrame); netConfig
netConfig = NETFrameConfig with properties: FrameType: 'Data' ProtocolVersion: 'ZigBee 2007' SequenceNumber: 212 Addressing: SourceAddress: '0000' DestinationAddress: '35EA' IEEEAddressing: 'None' Security: Security: 1 DataEncryption: 0 MICLength: 0 KeyIdentifier: 'Network' ExtendedNonce: 1 FrameCounter: 193458 SecuritySourceAddress: '24FD5B00000014B6' KeySequence: 0 Routing: Radius: 30 DiscoverRoute: 1 SourceRouting: 1 RelayIndex: 0 RelayList: [0x4 char] Multicast: Multicast: 0
Обратите внимание на то, что декодирование СЕТЕВОГО слоя указывает, что полезная нагрузка СЕТЕВОГО слоя зашифрована (безопасность = верный). Безопасность может использоваться или в сети или в прикладном уровне; этот кадр использует безопасность сетевого слоя. С одной стороны, поле DataEncryption является ложным в кадре, и длина Кода целостности сообщения (MIC) является нулем, которые указывают, что уровень безопасности № 0 используется и что полезная нагрузка не зашифрована. Однако согласно стандарту ZigBee (Пункт 4.4.1.2 в [1]), эти два поля перезаписываются со значениями, локально сохраненными во время сетевой настройки. В этом случае этот кадр был защищен с уровнем безопасности № 5, что означает, что СЕТЕВАЯ полезная нагрузка зашифрована и что длина MIC составляет 32 бита.
zigbee. Функция NETFrameGenerator может сгенерировать небезопасный СЕТЕВОЙ слой кадры данных ZigBee. Объект настройки может быть далее настроен.
netConfig = zigbee.NETFrameConfig('SequenceNumber', 123, 'DestinationAddress', 'E568'); numOctets = 50; payload = dec2hex(randi([0 2^8-1], numOctets, 1), 2); netFrame = zigbee.NETFrameGenerator(netConfig, payload);
Можно далее исследовать следующий генератор и декодирующие функции, а также объект настройки:
Союз ZigBee, документ 053474r17, 2007 спецификации ZigBee
IEEE 802.15.4-2011 - Стандарт IEEE для Локальных сетей и городских компьютерных сетей - Часть 15.4: Беспроводные Персональные Сети области С низкой ставкой (LR-WPANs)