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 • Rust 包仓库 52/week @ 2024-05-03 • Rust 包仓库 58/week @ 2024-05-10 • Rust 包仓库 13/week @ 2024-05-17 • Rust 包仓库 20/week @ 2024-05-24 • Rust 包仓库 60/week @ 2024-05-31 • Rust 包仓库 204/week @ 2024-06-07 • Rust 包仓库 96/week @ 2024-06-14 • Rust 包仓库 58/week @ 2024-06-21 • Rust 包仓库 40/week @ 2024-06-28 • Rust 包仓库 29/week @ 2024-07-05 • Rust 包仓库 45/week @ 2024-07-12 • Rust 包仓库 94/week @ 2024-07-19 • Rust 包仓库 97/week @ 2024-07-26 • Rust 包仓库 91/week @ 2024-08-02 • Rust 包仓库 67/week @ 2024-08-09 • Rust 包仓库 45/week @ 2024-08-16 • Rust 包仓库

每月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