3 Physical Message Formats
第3章 PHY 帧格式LoRa 有上行消息和下行消息。 3.1 上行消息上行消息是由终端发出,经过一个或多个网关转发给网络服务器。 上行消息使用 LoRa 射频帧的严格模式,消息中含有 PHDR 和 PHDR_CRC 。载荷有CRC校验来保证完整性。 PHDR,PHDR_CRC 及载荷 CRC 域都通过射频收发器加入。 上行 PHY: Preamble PHDR PHDR_CRC PHYPayload CRC 图2.上行PHY帧格式 3.2 下行消息下行消息是由网络服务器发出,经过单个网关转发给单个终端。 下行消息使用射频帧的严格模式,消息中包含 PHDR 和 PHDR_CRC。 下行 PHY: Preamble PHDR PHDR_CRC PHYPayload 图3.下行PHY帧格式 3.3 接收窗口每个上行传输后终端都要开两个短的接收窗口。接收窗口开始时间的规定,是以传输结束时间为参考。 图4.终端接收时隙的时序图 ...
5 MAC Commands
第5章 MAC命令对网络管理者而言,有一套专门的MAC命令用来在服务器和终端MAC层之间交互。这套MAC命令对应用程序或者应用服务器或者运行在终端设备上的应用程序是不可见的。 单个数据帧中可以包含MAC命令序列,要么在FOpts字段中捎带,要么作为独立帧将FPort设成0后放在FRMPayload里。如果采用FOpts捎带的方式,MAC命令不进行加密并且长度不能超过15字节。如果采用独立帧放在FRMPayload的方式,那就必须采用加密方式,并且不能超过FRMPayload的最大长度。 注意:如果MAC命令不想被窃听,那就必须以独立帧形式放在FRMPayload中进行发送。 每个MAC命令是由 1字节命令码 (CID) 跟着一段可能为空的特定命令字节序列组成的。 CID Command 由谁发送 描述 终端 网关 0x02 LinkCheckReq x 终端利用这个命令来判断网络连接质量 ...
6 End-Device Activation
第6章 终端激活为了加入LoRaWAN网络,每个终端需要初始化及激活。 终端的激活有两种方式,一种是空中激活 Over-The-Air Activation (OTAA),当设备部署和重置时使用; 另一种是独立激活 Activation By Personalization (ABP),此时初始化和激活这两步就在一个步骤内完成。 twowinter 备注: ABP 这个词不太好翻译,通常会翻成个性化激活,也就是通过独立配置参数的方式激活。但总感觉少点味道,与空中激活摆在一起,感觉独立激活这个词在语义上更有并列感。当然这是我的主观感觉,建议大家和同行交流时,还是说 ABP激活 吧。 6.1 终端激活后的数据存储激活后,终端会存储如下信息:设备地址(DevAddr),应用ID(AppEUI),网络会话密钥(NwkSKey),应用会话密钥(AppSKey)。 6.1.1 终端地址(DevAddr) 终端地址(DevAddr)由可标识当前网络设备的32位ID所组成,具体格式如下: Bit# [31..25] [24..0] ...
8 Introduction to Class B
第8章 Class B 介绍这章描述了LoRaWAN Class B层,这是为电池节点优化设计的,不管节点是移动的还是固定在某个位置。 Class B 的终端必须执行如下操作,为了获得服务端发起的下行消息,终端必须按要求开启一个固定时间间隔的接收窗口。 LoRaWAN Class B 就是在终端上增加一个经过同步的接收窗口。 LoRaWAN Class A 的限制之一就是终端发送数据使用的Aloha算法;这使得客户应用程序或者服务端不能在确定时间内联系上终端。Class B 的目的就是在Class A 终端随机上行后的接收窗口之外,让终端也能在可预见的时间内开启接收。Class B 是让网关周期发送信标来同步网络中的所有终端,以便终端能够在周期时隙的确定时间点打开一个短的接收窗口(叫做“ping slot”)。 注意:是否要从Class A 切换到 Class B,这个要在终端的应用层进行处理。如果打算从网络端将Class A 切换到 Class B,客户程序只能利用终端 Class A的上行包来反馈一个下行包给节点,需要应用层上处理来识别这个请求 - 这个处理不在LoRaWA...
7 Retransmissions back-off Activation
第7章 重传退避上行帧如下面这样: 需要网络或者应用服务器进行确认或者应答时,如果超时没有接收到,终端需要进行重传。 同时, 某些外部事件(断电,无线电干扰,网络断电,地震),将会导致大量的(>100)的设备出现同一时间上行的行为。 这样可能会引发灾难性的、持久的、射频网络过载的情况。 注意:这种上行帧的一个典型例子是 JoinRequest,当发生网络中断时,一组终端将会复位 MAC 层。 这一组的终端将会开始广播 JoinRequest 上行帧,只有当从网络中接收到 JoinResponse 命令时才会停止。 对于这些数据帧的重传,RX2时隙的末端和下一个上行帧的重传间隔应该是随机的,并且每个终端遵循不同的顺序(例如使用设备地址作为伪随机生成器的种子)。这些消息的发射占空比,要根据当地的参数要求,以及如下的限定,取二者中更严格的一个限定。 在上电或者复位后的第1个小时 T0 < t < T0+1h 发射时间 < 36秒 在接下来的10小时 ...
9 Principle of synchronous network initiated downlink
第9章 下行同步网络的原理对于一个支持ClassB的网络,所有网关必须同步广播一个信标,以给所有终端提供一个参考时间。基于这个时间参考,终端可以周期性地打开接收窗口,下文称之为“ping slot”,这个“ping slot”被网络建设者用于发起下行通信。网络使用ping slots其中之一来发起下行通讯的行为,称之为“ping”。用来发起下行通讯的网关,是network server根据终端最近一次上行包的信号传输质量来选择的。基于此,如果终端根据广播的信标帧发现网络发生了切换(通信的网关发生了变化),它必须发出上行帧给network server,以使server端更新下行路径的数据库。 所有终端启动后,以Class A来加入网络。之后终端应用层可以切换到Class B。通过以下步骤来实现: 终端应用层请求LoRaWAN层切换到Class B模式。终端的LoRaWAN层搜索信标帧,如果搜索到并且锁定了信标帧,那么就向应用层返回BEACON_LOCKED的服务原语,反之则返回BEACON_NOT_FOUND的服务原语。为了促进信标帧的搜索,LoRaWAN层可以使用稍后介绍的 ...
CLASS A - ALL END-DEVICE
CLASS A - ALL END-DEVICE所有的LoRaWAN终端都必须满足Class A的规定。
CLASS B - BEACON
CLASS B – BEACONClass B在当前协议版本中还仅作实验性参考。
CLASS C – CONTINUOUSLY LISTENING
CLASS C – CONTINUOUSLY LISTENING
freertos
[TOC] 0.前言0.1 变量及函数命名规范 变量名 ‘c’ for char ‘s’ for int16_t(short) ‘l’ for int32_t (long) ‘x’ for BaseType_t and any other non-standard types (structures, task handles, queue handles, etc.). If a variable is unsigned, it is also prefixed with a ‘u’. If a variable is a pointer, it is also prefixed with a ‘p’. For example, a variable of type uint8_t will be prefixed with ‘uc’, and a variable of type pointer to char (char *) will be prefixed with ‘pc’. 函数名 函数的前缀是它们返回的类型和定义它们的文件 vTaskPriorit...







