5个不稳定版本
新 0.3.0 | 2024年8月18日 |
---|---|
0.2.2 | 2024年8月18日 |
0.2.1 | 2024年8月18日 |
0.2.0 | 2024年8月18日 |
0.1.0 | 2024年8月18日 |
#3 in #transceiver
每月 78 次下载
99KB
1K SLoC
ac4490-rs
这是一个为Ezurio(以前是Laird,以前是Aerocomm)的AC4490收发器编写的驱动程序。驱动程序是接口无关的,因此可以与嵌入式或桌面应用程序一起使用。
在此处查看文档 https://docs.rs/ac4490.
快速入门
对于使用 embassy_stm32::usart::Uart
的设备
struct MyDeviceInterface(Uart<'static, embassy_stm32::mode::Async>);
impl DeviceInterface for MyDeviceInterface {
async fn write(&mut self, data: &[u8]) -> Result<(), ac4490::Error> {
self.0.write(data).await.map_err(|_| ac4490::Error::WriteError)
}
async fn read(&mut self, data: &mut [u8]) -> Result<(), ac4490::Error> {
self.0.read(data).await.map_err(|_| ac4490::Error::ReadError)
}
}
// ...
let usart6 = usart::Uart::new(
p.USART6,
p.PC7,
p.PC6,
Irqs,
p.GPDMA1_CH0,
p.GPDMA1_CH1,
uart_config,
)
.expect("Failed to initialize USART6");
// Init AC4490
let mut ac4490 = AC4490::new(
Ac4490UartInterface(usart6)
);
对于使用 serialport::SerialPort
的设备
use ac4490::DeviceInterface;
use serialport::SerialPort;
struct SerialPortDeviceInterface(Box<dyn serialport::SerialPort>);
impl DeviceInterface for SerialPortDeviceInterface {
async fn write(&mut self, data: &[u8]) -> std::result::Result<(), ac4490::Error> {
self.0.write_all(data).map_err(|_| ac4490::Error::WriteError)?;
Ok(())
}
async fn read(&mut self, buf: &mut [u8]) -> std::result::Result<(), ac4490::Error> {
self.0.read(buf).map_err(|_| ac4490::Error::ReadError)?;
Ok(())
}
}
async fn main() -> Result<()> {
let port = serialport::new("/dev/ttyUSB0", 9600).open()?;
let mut transceiver = AC4490::new(SerialPortDeviceInterface(port));
Ok(())
}
依赖项
~0.5–1MB
~22K SLoC