Набор MAC-команд предназначен для сетевого администрирования и может быть использован для обмена между сервером сети и оконечным устройством на MAC-уровне (см. таблицу 4). Команды МАС-уровня не обрабатываются сервером приложений и приложением, запущенным на устройстве.
Один кадр данных может содержать любую последовательность MAC-команд, вставленную в поле "Параметры кадра" (FOpts) или отправленную в отдельном кадре данных, в поле "Прикладные данные" (FRMPayload) со значением поля "Порт" (FPort), равным 0.
MAC-команды, передаваемые в поле "Параметры кадра" (FOpts), отправляются в кодированном виде и не должны превышать 15 байт. MAC-команды, отправляемые в поле "Прикладные данные" (FRMPayload), всегда кодируются, и их длина не должна превышать максимальную длину поля "Прикладные данные" (FRMPayload).
MAC-команда состоит из поля "Идентификатор команды" (CID) размером 1 байт и поля "Атрибуты команды" размером от 0 до 14 байт. Для некоторых команд поле "Атрибуты команды" может быть пустым.
MAC-команды со значениями идентификаторов команды (CID) от 0x01 до 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 | Используется сервером сети, чтобы установить максимально допустимое время задержки и максимальную эффективную изотропную мощность излучения (EIRP) оконечного устройства на основе локальных соглашений и нормативных актов |
0x09 | TxParamSetupAns | x | - | Подтверждает команду TxParamSetupReq |
0x0A | DIChannelReq | - | x | Изменяет определение нисходящего радиоканала окна приема RX1 путем смещения частоты передачи нисходящей линии от частоты восходящей линии связи (т.е. создание асимметричного канала) |
0x0A | DIChannelAns | 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 | Посылается сетью для запроса немедленного переприсоединения устройства к сети, дополнительно указывается количество и периодичность повторов |
0x0F | RejoinParamSetupReq | - | x | Используется сетью для установки периодичности отправки устройством запросов на переприсоединение к сети |
0x0F | RejoinParamSetupAns | x | - | Подтверждает команду RejoinParamSetupReq |
От 0x80 до 0xFF | Проприетарные команды | x | x | Зарезервировано для команд, действующих только в региональных сетях |
Примечания
1 В основном оконечное устройство будет отвечать только один раз на любую полученную MAC-команду. Если ответ потерян, то сеть вынуждена будет снова послать команду. Сервер сети решает, что команда должна быть отправлена повторно, когда она получает новое восходящее сообщение, которое не содержит ответа.