Набор MAC-команд предназначен для сетевого администрирования и может быть использован для обмена между сервером сети и оконечным устройством на MAC-уровне (таблица 4). Команды МАС-уровня не обрабатываются сервером приложений и приложением, запущенным на устройстве.
Один кадр данных может содержать любую последовательность MAC-команд, вставленную в поле "Параметры кадра" (FOpts) или отправленную в отдельном кадре данных, в поле "Прикладные данные" (FRMPayload) с значением поля "Порт" (FPort), равным 0.
MAC-команды, передаваемые в поле "Параметры кадра" (FOpts), отправляются в кодированном виде и не должны превышать 15 байт. MAC-команды, отправляемые в поле "Прикладные данные" (FRMPayload), всегда кодируются и их длина не должна превышать максимальную длину поля "Прикладные данные" (FRMPayload).
MAC-команда состоит из поля "Идентификатор команды" (CID) размером 1 байт и поля "Атрибуты команды" размером от 0 байт до 14 байт. Для некоторых команд поле "Атрибуты команды" может быть пустым.
MAC-команды со значениями идентификаторов команды (CID) от 0х01 до 0x7F предназначены для использования во всех сетях LoRaWAN RU.
Приемная сторона отвечает/подтверждает получение MAC-команд в том же порядке, как они передаются. Ответ для каждой MAC-команды последовательно добавляется в буфер. На все MAC-команды, полученные в одном кадре, ответы должны быть переданы в одном кадре (т.е. буфер, содержащий ответы на МАС-команды, должен быть отправлен в одном кадре). Если длина буфера с MAC-ответами больше, чем максимальная длина поля "Параметры кадра" (FOpts), устройство должно отправить буфер в поле "Прикладные данные" (FRMPayload) на порт 0. Если устройству надо отправить прикладные данные и MAC ответы, и они не помещаются в один кадр, то MAC ответы должны быть отправлены в первую очередь. Если длина буфера превышает максимальный используемый размер поля "Прикладные данные" (FRMPayload), устройство перед сборкой кадра должно уменьшить буфер до максимального размера поля "Прикладные данные" (FRMPayload). Поэтому ответы на последние MAC-команды могут быть неполными. В любом случае, полный список MAC команд выполняется, даже если буфер, содержащий MAC-ответы, должен быть обрезан. Сетевой сервер не должен генерировать последовательность MAC-команд, на которые оконечное устройство не может ответить одним восходящим кадром. Сетевой сервер должен вычислять максимальный размер поля "Прикладные данные" (FRMPayload) для ответов на MAC команды, следующим образом:
- если поле "Адаптивная скорость передачи данных" (ADR) последнего восходящего сообщения имеет значение 0, то необходимо устанавливать максимальный размер поля "Прикладные данные" (FRMPayload), соответствующий самой низкой скорости передачи данных;
- если поле "Адаптивная скорость передачи данных" (ADR) последнего восходящего сообщения имеет значение 1, то необходимо устанавливать максимальный размер поля "Прикладные данные" (FRMPayload) соответствующим скорости передачи данных, используемой устройством для передачи последнего восходящего сообщения.
Примечание - При получении обрезанного MAC-ответа сервер сети может ретранслировать MAC-команды, на которые не получил ответ.
Таблица 4 - MAC-команды
CID | Команда | Передается | Краткое описание | |
оконечному устройству | базовой станции | |||
0x01 | ResetInd | x | - | Используются устройствами с активацией через персонализацию для индикации сброса и согласования версий протокола |
0x01 | ResetConf | - | x | Подтверждает команду ResetInd |
0x02 | LinkCheckReq | x | - | Используется оконечным устройством для проверки его подключения к сети |
0x02 | LinkCheckAns | - | x | Ответ на команду LinkCheckReq. |
0x03 | LinkADRReq | - | x | Запрашивает оконечное устройство изменить скорость передачи данных, мощность передачи, количество повторений или канал |
0x03 | LinkADRAns | x | - | Подтверждает команду LinkADRReq |
0x04 | DutyCycleReq | - | x | Устанавливает максимальное агрегированное значение рабочего цикла устройства на передачу |
0x04 | DutyCycleAns | x | - | Подтверждает команду DutyCycleReq |
0x05 | RXParamSetupReq | - | x | Устанавливает параметры окон приема |
0x05 | RXParamSetupAns | x | - | Подтверждает команду RXParamSetupReq |
0x06 | DevStatusReq | - | x | Запрашивает статус оконечного устройства |
0x06 | DevStatusAns | x | - | Возвращает статус (состояние) оконечного устройства, а именно уровень заряда его батареи и отношение сигнал/шум (оценка демодуляции) |
0x07 | NewChannelReq | - | x | Создает или изменяет определение радиоканала |
0x07 | NewChannelAns | x | - | Подтверждает команду NewChannelReq |
0x08 | RXTimingSetupReq | - | x | Устанавливает временные интервалы для окон приема |
0x08 | RXTimingSetupAns | x | - | Подтверждает команду RXTimingSetupReq |
0x09 | TxParamSetupReq | - | x | Используется сервером сети, чтобы установить максимально допустимое время задержки (dwell time) и максимальную эффективную изотропную мощность излучения (EIRP) оконечного устройства, на основе локальных соглашений и нормативных актов |
0x09 | TxParamSetupAns | x | - | Подтверждает команду TxParamSetupReq |
0x0A | DlChannelReq | - | x | Изменяет определение нисходящего радиоканала окна приема RX1 путем смещения частоты передачи нисходящей линии от частоты восходящей линии связи (т.е. создание асимметричного канала) |
0x0A | DlChannelAns | x | - | Подтверждает команду DlChannelReq |
0x0B | RekeyInd | x | - | Используется устройством с активацией по воздуху для оповещения об обновлении сеанса связи устройства с сервером сети (обновление ключей) |
0x0B | RekeyConf | - | x | Подтверждает команду RekeyInd |
0x0C | ADRParamSetupReq | - | x | Используется сервером сети для установки ADR_ACK_LIMT и ADR_ACK_DELAY параметров оконечного устройства |
0x0C | ADRParamSetupAns | x | - | Подтверждает команду ADRParamSetupReq |
0x0D | DeviceTimeReq | x | - | Используется оконечным устройством для запроса текущей даты и времени |
0x0D | DeviceTimeAns | - | x | Сеть отправляет ответ на запрос DeviceTimeReq |
0x0E | ForceRejoinReq | - | x | Посылается сетью для запроса немедленного повторного присоединения (Rejoin) устройства, дополнительно указывается количество и периодичность повторов |
0x0F | RejoinParamSetup Req | - | x | Используется сетью для установки периодичности отправки устройством запросов на повторное присоединение (Rejoin) |
0x0F | RejoinParamSetup Ans | x | - | Подтверждает команду RejoinParamSetupReq |
От 0x80 до 0xFF | Проприетарные команды | x | x | Зарезервировано для команд, действующих только в региональных сетях |
Примечания
1 В основном, оконечное устройство будет отвечать только один раз на любую полученную MAC команду. Если ответ потерян, то сеть вынуждена будет снова послать команду. Сервер сети решает, что команда должна быть отправлена повторно, когда она получает новое восходящее сообщение, которое не содержит ответа.
Только RxParamSetupReq, RxTimingSetupReq и DIChannelReq имеют другой механизм подтверждения, описанный в соответствующих разделах, так как они влияют на параметры нисходящей линии связи.
2 Когда MAC-команда инициируется оконечным устройством, сеть делает все возможное для отправки подтверждения/ответа в окна приема RX1/RX2 сразу после запроса. Если ответ не получен в окна RX1 и RX2, то оконечное устройство может реализовать любой механизм повтора, который сочтет нужным.
3 Длина MAC-команды не задается явно и должна быть неявно известной по MAC-реализации. Поэтому неизвестные MAC-команды не могут быть пропущены, и первая неизвестная MAC-команда завершает обработку последовательности MAC-команд. Целесообразно использовать MAC-команды, соответствующие версиям стандарта, в котором MAC-команда была впервые опубликована. Таким образом, все MAC-команды, реализованные до появления настоящего стандарта, могут быть обработаны оконечным устройством даже среди MAC-команд, описанных только в текущей версии спецификации LoRaWAN RU и, если она новее, чем реализация оконечного устройства.
6.3.1 Команды индикации сброса (Resetlnd, ResetConf)
Данная MAC-команда доступна только для устройств с активацией через персонализацию, активированных в сети с сервером сети, поддерживающим LoRaWAN 1.1. На сервере сети, поддерживающим только LoRaWAN 1.0, данная MAC-команда не реализована.
Устройства с активацией по воздуху не должны отправлять эту команду. Сетевой сервер должен игнорировать команду Resetlnd, поступившую от устройства с активацией по воздуху.
С помощью команды ResetInd, устройство с активацией через персонализацию извещает сети, что оно было повторно инициализировано, и что оно переключено на свои MAC и радио настройки по умолчанию (т.е. параметры, изначально запрограммированные в устройстве при изготовлении, за исключением трех счетчиков кадров). Команда ResetInd должна добавляться в поле "Параметры кадра" (FOpts) всех восходящих кадров, пока не будет получена команда ResetConf.
Данная команда не является сигналом сетевому серверу, что были сброшены счетчики кадров. Счетчики кадров нисходящих и восходящих сообщений не должны сбрасываться в устройствах с активацией через персонализацию.
Примечание - Данная команда предназначена для устройств с активацией через персонализацию, питание которых может быть отключено в какой-то момент времени (например, замена батареи). Устройство может потерять настройки соединения на сеансном уровне, хранящиеся в ОЗУ (кроме счетчиков кадров, которые должны быть сохранены в энергонезависимой памяти). В этом случае, устройство нуждается в том, чтобы как-то сообщить серверу сети о потере настроек соединения на сеансном уровне. В будущих версиях протокола LoRaWAN RU, эта команда может также использоваться для согласования некоторых параметров протокола между устройством и сервером сети.
Команда ResetInd включает в себя дополнительный номер версии LoRaWAN RU, поддерживаемой устройством (рисунки 14, 15).
Размер (в байтах) | 1 |
Данные ResetInd (ResetInd Payload) | Версия LoRaWAN RU устройства (Dev LoRaWAN RU version) |