立即注册
查看: 417|回复: 0

[资料] LoRaWAN®有效载荷编解码器API规范

已绑定手机
已实名认证
发表于 2022-12-2 17:50:27 | 显示全部楼层 |阅读模式 来自 广东省深圳市
本文件描述了LORAWAN编解码API,它为LoRaWAN设备标准化了一个通用的JavaScript编解码器,使设备制造商和应用服务器供应商都能采用。
在没有任何标准化的情况下,每次引入新的设备或应用服务器时,应用服务器供应商需要为设备或应用开发一个编解码器,或者设备制造商需要为应用服务器供应商开发一个编解码器。 标准编解码器提供了解码上行/下行链路和编码下行链路的能力,使新的LoRaWAN设备可以轻松集成到任何兼容平台。

3 定义和关键字
在本文档中使用以下术语和缩写:
•编解码器:编解码器是负责Decodingunlinks/downlinks的JavaScript代码的一部分,并为设备或设备组编码下行链接。
•设备:该设备是一种可以与该提案兼容的Anylorawan平台交互的Lorawan物理设备。
•上行链路:从设备发送到Lorawan网络服务器的帧。
•下行链路:从Lorawan网络服务器发送到设备的帧。
•M:强制性。
•MS:成功时必须进行。
•MF:失败时强制性。
•o:可选。

4 JavaScript API
该编解码器中使用的编程语言是JavaScript,它是一种轻巧的,可以解释的,即时编译的编程语言,具有一流的功能。
更确切地说,使用JavaScript ES5(请参阅Ecmascript®语言规范),因为它在大多数社区中都是简单且广泛支持的。
本节介绍了编解码器可以声明执行编码和解码任务的三个JavaScript函数。
每个编解码器函数都由其名称,输入和输出定义。 在所有情况下,输入和输出都是JavaScript对象。 这是为了通过添加新属性而无需创建任何破坏变化,允许API的未来演变。

4.1上行链路解码
要解码上行链路,编解码器开发人员必须声明以下结构中显示的以下功能:函数DECODEUPLINK(INPUT){...返回输出; }
创建编解码器时,此功能是必须的。 没有它,编解码器被认为是无效的。
输入是一个嵌入表1所示属性的JavaScript对象:
NameMandatory/ OptionalTypeDescription
bytesMint[]上行链路有效载荷字节数组,其中每个字节用0至255之间的整数表示。
fPortMint上行消息LoRaWAN fPort。
recvTimeMDateLoRaWAN网络服务器记录的上行链路消息的时间戳,是一个JavaScript Date对象。

函数的输出对象必须是一个具有表2所示属性的JavaScript对象:
NameMandatory/OptionalTypeDescription
dataMsObject当解码时没有遇到错误时,代表解码后的有效载荷的开放JavaScript对象。
errorsMfstring[]解码所提供的有效载荷时的错误信息列表。
warningsOstring[]不妨碍编解码器解码有效载荷的警告信息列表。
失败意味着无法解码提供的有效负载。

4.2 下行编码
要对下行链路进行编码,编解码器开发人员必须声明以下结构中所示的函数: function encodeDownlink(input) { ... return output; }
与 decodeUplink 函数相反,此函数的实现仅在设备支持下行链路时才强制执行。
输入是嵌入表 3 中所示属性的 JavaScript 对象:
NameMandatory/ OptionalTypeDescription
dataMObject代表下行链路的开放式JavaScript对象。它是由编解码器开发者定义的。
fPortMint下行链路LoRaWAN fPort,如果没有发生错误。
bytesMsint[]下行链路有效载荷字节数组,其中每个字节用0-255之间的整数表示,如果没有发生错误。
errorsMfstring[]编码所提供的有效载荷时的错误信息列表。
warningsOstring[]不妨碍编解码器对有效载荷进行编码的警告信息列表。

失败意味着无法对提供的有效负载进行编码。

4.3 下行解码
要解码下行链路,编解码器开发人员必须声明以下结构中显示的以下函数: function decodeDownlink(input) { ... return output; }
该功能的实现是可选的; 当设备支持下行链路时,它可能会出现,以简化发送下行链路的监控和日志。
输入是嵌入表 5 中所示属性的 JavaScript 对象:
NameMandatory/ OptionalTypeDescription
bytesMint[]下行链路有效载荷字节数组,其中每个字节用0至255之间的整数表示。
fPortMint下行链路信息LoRaWAN fPort。
recvTimeMDateLoRaWAN平台作为JavaScript Date对象计算的下行链路消息时间。
dataMsObject当解码时没有遇到错误时,代表解码后的有效载荷的开放JavaScript对象。
errorsMfstring[]解码所提供的有效载荷时的错误信息列表。
warningsOstring[]不妨碍编解码器解码有效载荷的警告信息列表。


5 额外功能要求
5.1 安全
出于安全原因,并且由于编解码器直接在 LoRaWAN 平台上执行,因此对编解码器开发人员的操作有一些限制。 编解码器本身不得使用在运行时动态使用的外部代码。

5.2 脚本的大小
根据一些内存分配限制,编解码器脚本的大小不得超过 64KB。 应用服务器供应商应支持最大 64 KB 的编解码器脚本。

5.3 库
一些预定义的库应用于简化有效负载的解码/编码并避免大型 polyfill,例如:
•Nodejs Buffer 类,其版本为12[NBUFFER],旨在处理原始二进制数据。

游客,如果您要查看本帖隐藏内容请回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表