LoRaWAN协议解析 第6章 终端激活
来源:互联网 发布:库里技术特点知乎 编辑:程序博客网 时间:2024/04/30 09:52
1 前言
我正在陆续对《LoRaWAN102》即LoRaWAN协议规范 V1.0.2 版本(2016年7月定稿)协议的各个章节进行翻译。译文之外还对LoRaWAN协议和源码进行了解析,可点此查看帖子LoRa学习笔记_汇总。
欢迎同行朋友们留言交流。
本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/
2 梳理解析
LoRaWAN第6章,主要对节点加网做了描述,它有两种方式。如果要用一句话来总结的话,那就是这一句了,请看:
如果是空中激活,则需要准备 DevEUI,AppEUI,AppKey 这三个参数,即设备自身MAC地址和要使用的应用(应用ID和密钥)。
如果是ABP激活,则直接配置 DevAddr,NwkSKey,AppSKey 这三个LoRaWAN最终通讯的参数,不再需要join流程。在这种情况下,这个设备是可以直接发应用数据的。
这里插个题外话,商用的LoRaWAN网络一般都是走OTAA流程,这样安全性才得以保证。
(twowinter,你数数,这是一句话?)
(如果是空中激活,则需要准备 DevEUI,AppEUI,AppKey来join。如果是ABP激活,则直接配置 DevAddr,NwkSKey,AppSKey。)
3 代码位置
3.1 激活处理
协议的第6章,相关的核心代码是这么几行,位于 \src\mac\main.c。
整个代码结构非常清晰,用一个宏(OVER_THE_AIR_ACTIVATION)分开两段,分别对应两种激活方式。
case DEVICE_STATE_JOIN:{#if( OVER_THE_AIR_ACTIVATION != 0 ) MlmeReq_t mlmeReq; // Initialize LoRaMac device unique ID BoardGetUniqueId( DevEui ); mlmeReq.Type = MLME_JOIN; mlmeReq.Req.Join.DevEui = DevEui; mlmeReq.Req.Join.AppEui = AppEui; mlmeReq.Req.Join.AppKey = AppKey; if( NextTx == true ) { LoRaMacMlmeRequest( &mlmeReq ); } DeviceState = DEVICE_STATE_SLEEP;#else // Choose a random device address if not already defined in Comissioning.h if( DevAddr == 0 ) { // Random seed initialization srand1( BoardGetRandomSeed( ) ); // Choose a random device address DevAddr = randr( 0, 0x01FFFFFF ); } mibReq.Type = MIB_NET_ID; mibReq.Param.NetID = LORAWAN_NETWORK_ID; LoRaMacMibSetRequestConfirm( &mibReq ); mibReq.Type = MIB_DEV_ADDR; mibReq.Param.DevAddr = DevAddr; LoRaMacMibSetRequestConfirm( &mibReq ); mibReq.Type = MIB_NWK_SKEY; mibReq.Param.NwkSKey = NwkSKey; LoRaMacMibSetRequestConfirm( &mibReq ); mibReq.Type = MIB_APP_SKEY; mibReq.Param.AppSKey = AppSKey; LoRaMacMibSetRequestConfirm( &mibReq ); mibReq.Type = MIB_NETWORK_JOINED; mibReq.Param.IsNetworkJoined = true; LoRaMacMibSetRequestConfirm( &mibReq ); DeviceState = DEVICE_STATE_SEND;#endif break;}
3.2 参数配置
关于参数部分,相关的默认值全部位于\src\apps\LoRaMac\classA\硬件平台\Comissioning.h
本尊有机会接触了几个LoRaWAN基站厂家,发现大家为了调试方便,一般也会支持这些默认值。
/*! * Mote device IEEE EUI (big endian) * * \remark In this application the value is automatically generated by calling * BoardGetUniqueId function */#define LORAWAN_DEVICE_EUI { IEEE_OUI, 0x00, 0x00, 0x00, 0x00, 0x00 }/*! * Application IEEE EUI (big endian) */#define LORAWAN_APPLICATION_EUI { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }</code></pre><pre><code>/*! * AES encryption/decryption cipher application key */#define LORAWAN_APPLICATION_KEY { 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C }/*! * Current network ID */#define LORAWAN_NETWORK_ID ( uint32_t )0/*! * Device address on the network (big endian) * * \remark In this application the value is automatically generated using * a pseudo random generator seeded with a value derived from * BoardUniqueId value if LORAWAN_DEVICE_ADDRESS is set to 0 */#define LORAWAN_DEVICE_ADDRESS ( uint32_t )0x00000000/*! * AES encryption/decryption cipher network session key */#define LORAWAN_NWKSKEY { 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C }/*! * AES encryption/decryption cipher application session key */#define LORAWAN_APPSKEY { 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C }
End
That’s all.
- LoRaWAN协议解析 第6章 终端激活
- LoRaWAN协议1.0中文版_第6章_终端激活
- LoRaWAN协议解析 第4章 MAC帧格式
- LoRaWAN协议解析 第5章 MAC命令
- LoRaWAN协议解析 第3章 PHY帧格式
- LoRaWAN协议中文版 第2章 LoRaWAN Classes 类型介绍
- LoRaWAN协议中文版 第1章 介绍
- LoRaWAN协议中文版_第5章 MAC命令
- LoRaWAN协议中文版 第8章 Class B介绍
- LoRaWAN协议中文版 第3章 PHY帧格式
- LoRaWAN协议中文版 第17章 Class C
- LoRaWan协议
- LoRaWAN协议
- LoRaWAN协议1.0中文版_第4章_MAC帧格式
- LoRaWAN协议中文版 第9章 下行同步网络的原理
- LoRaWAN协议中文版 第10章 Class B 模式的上行帧
- LoRaWAN协议中文版 第11章 下行ping帧格式(仅Class B)
- LoRaWAN协议解析 配套文件 地区参数(物理层)
- 1.java 变量(数据类型)
- 【备忘】IOS(iPhone)开发中级视频教程下载
- git 遇到问题:Please make sure you have the correct access rightsand the repository exists 或Permission de
- GoogleNet :Going deeper with convolutions 论文阅读
- SaltStack安装
- LoRaWAN协议解析 第6章 终端激活
- oracle基本笔记整理
- numpy的常用函数reshape、matmul
- spring的自动装配
- hdu1411 校庆神秘建筑(求四面体体积)
- 产品经理之与用户进行产品交流
- bzoj 1880: [Sdoi2009]Elaxia的路线 最短路
- qemu-kvm命令行参数
- Android AOP之字节码插桩