6个版本 (3个重大变更)
0.4.0 | 2019年10月29日 |
---|---|
0.3.0 | 2019年4月22日 |
0.2.1 | 2019年4月17日 |
0.1.1 | 2019年4月13日 |
#1397 in 嵌入式开发
每月26次下载
24KB
346 代码行
nrf52-bin-logger
nRF52的UARTE日志的二进制协议
目前仅支持nrf52832。
最终我可能只是将这个crate做成一个embedded-hal
crate。哎呀。
许可证
许可方式为以下之一
- Apache License, Version 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确说明,否则您提交给作品以供包含的任何贡献,根据Apache-2.0许可证的定义,将根据上述方式双许可,不附加任何额外条款或条件。
lib.rs
:
nrf52-bin-logger
这是一个方便地将nRF52 UART从以字节流为接口转换为以“Rust Struct”为焦点接口的方法。用户可以决定是否要在串行端口上发送、接收或两者都做。
消息使用postcard
+ serde
进行序列化和反序列化,所有消息都使用COBS编码进行帧定界。这可以用于快速在nRF52的串行端口上设置单工或双工通信协议。
use serde::{Serialize, Deserialize};
use heapless::consts::*;
use nrf52_bin_logger::{Logger, senders::RealSender, receivers::RealReceiver};
#[derive(Serialize, Deserialize)]
enum MyProtocol {
MsgA(u32),
MsgB(f32),
MsgC(bool),
}
type ModemLogger = Logger<
// `MyProtocol` outgoing messages, 16 bytes used as a serialization buffer
RealSender<MyProtocol, U16>,
// `MyProtocol` incoming messages, 16 bytes used as a deserialization buffer,
// a max of 8 `MyProtocol` messages can be enqueued
RealReceiver<MyProtocol, U16, U8>,
>;
不需要发送者或接收者?只需替换类型为NullSender/NullReceiver。将不会为此接口的一半生成任何代码。
use serde::{Serialize, Deserialize};
use heapless::consts::*;
use nrf52_bin_logger::{Logger, senders::RealSender, receivers::NullReceiver};
#[derive(Serialize, Deserialize)]
enum MyProtocol {
MsgA(u32),
MsgB(f32),
MsgC(bool),
}
type ModemLogger = Logger<
// `MyProtocol` outgoing messages, 16 bytes used as a serialization buffer
RealSender<MyProtocol, U16>,
// Nothing will be received
NullReceiver,
>;
依赖项
~8MB
~208K SLoC