15个版本 (破坏性)
0.12.0 | 2024年6月9日 |
---|---|
0.11.0 | 2023年10月2日 |
0.10.0 | 2023年8月6日 |
0.9.0 | 2022年5月4日 |
0.3.0 | 2021年2月27日 |
#91 in 嵌入式开发
每月319次下载
用于 5 crate
425KB
3.5K SLoC
w5500-hl
适用于Wiznet W5500互联网卸载芯片的平台无关Rust驱动程序。
此crate包含高级(hl)套接字操作,建立在另一个crate w5500-ll
之上,该crate包含寄存器访问器和W5500的网络数据类型。
设计
没有单独的套接字结构。此crate中提供的Tcp
和Udp
特质仅扩展了Registers
特质,该特质在w5500-ll
中提供。这导致API不太方便,但API更易于移植,因为没有互斥锁或运行时检查来启用套接字结构共享底层W5500设备的所有权。
您可能希望将实现Registers
、Tcp
和Udp
特质的底层结构包装起来,以利用您的平台/ RTOS中可用的任何Mutex,以提供单独的套接字结构。
功能标志
默认禁用所有功能。
示例
UDP套接字
use w5500_hl::ll::{
net::{Ipv4Addr, SocketAddrV4},
Registers,
Sn::Sn0,
};
use w5500_hl::Udp;
// open Sn0 as a UDP socket on port 1234
w5500.udp_bind(Sn0, 1234)?;
// send 4 bytes to 192.168.2.4:8080, and get the number of bytes transmitted
let data: [u8; 4] = [0, 1, 2, 3];
let destination = SocketAddrV4::new(Ipv4Addr::new(192, 168, 2, 4), 8080);
let tx_bytes = w5500.udp_send_to(Sn0, &data, &destination)?;
TCP流(客户端)
use w5500_hl::ll::{
net::{Ipv4Addr, SocketAddrV4},
Registers, Sn,
};
use w5500_hl::Tcp;
const MQTT_SOCKET: Sn = Sn::Sn0;
const MQTT_SOURCE_PORT: u16 = 33650;
const MQTT_SERVER: SocketAddrV4 = SocketAddrV4::new(Ipv4Addr::new(192, 168, 2, 10), 1883);
// initiate a TCP connection to a MQTT server
w5500.tcp_connect(MQTT_SOCKET, MQTT_SOURCE_PORT, &MQTT_SERVER)?;
TCP监听器(服务器)
use w5500_hl::ll::{
net::{Ipv4Addr, SocketAddrV4},
Registers, Sn,
};
use w5500_hl::Tcp;
const HTTP_SOCKET: Sn = Sn::Sn1;
const HTTP_PORT: u16 = 80;
// serve HTTP
w5500.tcp_listen(HTTP_SOCKET, HTTP_PORT)?;
依赖项
~170KB