LoRaWAN协议解析 第5章 MAC命令

1 前言

我正在陆续对《LoRaWAN102》即LoRaWAN协议规范 V1.0.2 版本(2016年7月定稿)协议的各个章节进行翻译。译文之外还对LoRaWAN协议和源码进行了解析,可点此查看帖子LoRa学习笔记_汇总

欢迎同行朋友们留言交流。

本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/

2 梳理解析

从LoRaWAN第4章的帧格式可以得到如下信息:MAC命令,要么使用FPort0来单独传输,要么使用非零的FPort来和数据一起传输。

LoRaWAN第5章,LoRaWAN出于网络管理需要,提出了9条MAC命令,这个章节是对9条命令进行具体的描述。

说个题外话,CLAA(中国LoRa应用联盟)在9条命令以外还扩充了一些MAC命令。现阶段协议还不能公开,所以我就不多说了。中兴目前作为LoRa联盟董事会成员,也许以后会把这些拓展MAC命令引入到LoRaWAN协议也说不准,大家暂且当个课外知识了解下就好。

3 代码位置

MAC命令枚举


MAC命令的接收处理

OnRadioRxDone()携带着MAC帧进来,经过层层筛选,最终到达ProcessMacCommands()来处理MAC命令。
这里代码中涉及的两种处理方式,可以跟协议对应起来:port = 0时,MAC命令放在FRMPayload中,需要先解密再处理;port非零时,MAC命令放在fopts中。


MAC命令的发送及回复

MAC命令的发送及回复处理都在这个函数中,AddMacCommand()。

协议栈对MAC命令发送的处理还是比较简单的,都是放在Fopts中来传输,都在这个15字节的MacCommandsBuffer中。

说明:LPWA物联网应用站(LPWAP.com)通过公开互联网收集、整理并转载有关LPWA物联网应用解决方案,以供广大LPWA应用开发者和爱好者共同学习交流和参考运用到实际生产生活中。本站所有转载的文章、图片、音频、视频等资料的版权归版权所有人所有并衷心感谢您的付出,由于本站采纳的非本站原创文章及图片等内容无法一一联系确认版权者,如果本网所选内容的文章原创作者认为其作品不宜放在本站,请及时通过以下留言功能通知我们采取适当措施,避免给双方造成不必要的经济损失。如果您希望保留文章在本站,但希望文章末尾提供对作者的致谢或者产品、网站交换链接的,也请将需求写入以下留言栏中,谢谢您的支持。让我们共同努力,打造万物互联的未来美好生活!

您的留言或需求:

  • 黄伟贤
    Reply

    MAC命令是由AS组成完整命令包,还是NS组成的呢(就MHDR+MACPayload+MIC这种完整包)?
    如果是NS组成的,是由AS和NS定义特定JSON格式来通信吗(比如是LinkADRReq指令,就传个包含type和参数的json),让NS知道是LinkADRReq这个指令,然后组成完整包传给网关。

    –还有那个网络控制器不是很明白它的具体运用(感觉没它也无所谓),有相关文章吗,麻烦了!

    • 黄伟贤

      就算是NS组成的,貌似也不用特别定义JSON,AS就按文档格式把CID+参数加密(或不加密),然后走正常下行数据流程就行了,NS收到后按下行数据处理,组成完整包,发给网关!

    • LPWA应用站长

      应该是NS负责发送MAC命令。
      网络控制器主要用于网络控制:为某个终端节点决定最相关的通信速度或扩频因子,即所谓的ADR(Adaptive Data Rate),或自适应数据速率策略,还有与终端通信的网关路由选择。
      可以参考这篇:http://www.lpwap.com/lora-university-case/201705021316/