6个版本 (3个重大变更)
0.4.0 | 2024年1月17日 |
---|---|
0.3.1 | 2023年1月11日 |
0.3.0 | 2021年8月10日 |
0.2.1 | 2021年2月11日 |
0.1.0 | 2021年2月9日 |
在嵌入式开发中排名354
每月下载量569次
用于coap-message-demos
20KB
136 代码行
嵌入式-nal-minimal-coapserver
基于[embedded_nal]构建的最小CoAP服务器实现。
使用和操作
直到项目进一步成熟,请参阅示例了解使用方法。一般步骤如下:
-
获取一个具有实现embedded_nal::UdpServer的UDP服务器套接字的网络堆栈
-
创建一个实现coap_handler::Handler的CoAP处理程序;coap_handler::implementations模块包含一些构建块(包括将单个资源的处理程序组合成从URI路径中选择子处理程序的处理程序的一些构建块)。
-
当有迹象表明可能收到了请求时,请使用堆栈、套接字和处理程序调用[poll]。这将从套接字接收数据,解码CoAP消息,将其传递给处理程序,并发送响应。
如果处理了一条消息(或接收到了可以忽略的内容),则返回成功;从套接字传播错误,并在套接字未就绪时返回WouldBlock。
通过应用以下约束并行使CoAP中设计的一些自由度,服务器不需要保留任何自己的状态。
注意事项
-
服务器不执行任何放大缓解(处理程序由于缺乏远程信息而无法执行);仅在可接受的环境中(例如,在封闭网络中)使用此功能。
-
服务器不执行任何消息去重。因此,所有处理程序函数都必须是幂等的。
-
响应逻辑使用nb实现,并不尝试存储后续调用中的响应。如果收到请求且无法立即发送响应,则将其丢弃。
-
基于嵌入式-nal,它绑定到任何地址,但将发送地址的选择留给网络堆栈;当在具有多个IP地址的系统上运行时,这会导致微妙的错误。
-
消息的创建尽可能地减少复制,符合[embedded_nal]允许的最小复制。对于可写消息,这意味着它们需要按升序CoAP选项号写入。这与已实现的coap_message::MinimalWritableMessage和coap_message::MutableWritableMessage特质相一致。
这种限制使这个库不仅可以是
no_std
,而且也不需要alloc
。
路线图
该服务器的目标是成为一个可以轻松使用的组件,为嵌入式设备提供CoAP连接,同时仍然具有实际可用性。
这意味着需要解决放大缓解问题,并必须提供安全性支持(可能通过参考OSCORE/EDHOC混合实现)。
除此之外,该实现的计划是保持简单,并利用CoAP提供的优化,即使这意味着限制应用程序(例如,限制为立即响应和幂等处理程序)。
许可证:MIT OR Apache-2.0
依赖项
~3MB
~70K SLoC