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 嵌入式开发

Download history 52/week @ 2024-05-03 58/week @ 2024-05-10 13/week @ 2024-05-17 20/week @ 2024-05-24 60/week @ 2024-05-31 204/week @ 2024-06-07 96/week @ 2024-06-14 58/week @ 2024-06-21 40/week @ 2024-06-28 29/week @ 2024-07-05 45/week @ 2024-07-12 94/week @ 2024-07-19 97/week @ 2024-07-26 91/week @ 2024-08-02 67/week @ 2024-08-09 45/week @ 2024-08-16

每月319次下载
用于 5 crate

MIT 许可证

425KB
3.5K SLoC

w5500-hl

适用于Wiznet W5500互联网卸载芯片的平台无关Rust驱动程序。

此crate包含高级(hl)套接字操作,建立在另一个crate w5500-ll之上,该crate包含寄存器访问器和W5500的网络数据类型。

设计

没有单独的套接字结构。此crate中提供的TcpUdp特质仅扩展了Registers特质,该特质在w5500-ll中提供。这导致API不太方便,但API更易于移植,因为没有互斥锁或运行时检查来启用套接字结构共享底层W5500设备的所有权。

您可能希望将实现RegistersTcpUdp特质的底层结构包装起来,以利用您的平台/ 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