Crate w5500_hl[−][src]
Platform agnostic rust driver for the Wiznet W5500 internet offload chip.
This crate contains higher level (hl) socket operations, built on-top of my other crate, w5500-ll, which contains register accessors, and networking data types for the W5500.
Warning
This crate is still in an early alpha state. This has been published early to solicit feedback.
Design
There are no separate socket structures.
The Tcp
and Udp
traits provided in this crate simply extend the
Registers
trait provided in w5500-ll.
This makes for a less ergonomic API, but a much more portable API because
there are no mutexes or runtime checks to enable socket structures to share
ownership of the underlying W5500 device.
You will likely want to wrap up the underlying structure that implements
the Registers
, Tcp
, and Udp
traits to provide separate socket
structures utilizing whatever Mutex is available for your platform / RTOS.
Examples
UDP sockets
use w5500_hl::ll::{ net::{Ipv4Addr, SocketAddrV4}, Registers, Socket::Socket0, }; use w5500_hl::Udp; // open Socket0 as a UDP socket on port 1234 w5500.udp_bind(Socket0, 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(Socket0, &data, &destination);
TCP streams (client)
use w5500_hl::ll::{ net::{Ipv4Addr, SocketAddrV4}, Registers, Socket, }; use w5500_hl::Tcp; const MQTT_SOCKET: Socket = Socket::Socket0; 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 listeners (server)
use w5500_hl::ll::{ net::{Ipv4Addr, SocketAddrV4}, Registers, Socket, }; use w5500_hl::Tcp; const HTTP_SOCKET: Socket = Socket::Socket1; const HTTP_PORT: u16 = 80; // serve HTTP w5500.tcp_listen(HTTP_SOCKET, HTTP_PORT)?;
See the examples directory in the repository for more comprehensive examples.
Related Crates
- w5500-ll - Low level W5500 register accessors.
- w5500-regsim - Register simulation using
std::net
.
Re-exports
pub use w5500_ll as ll; |
Modules
net | Networking data types. |
Traits
Common | Methods common to all W5500 socket types. |
Tcp | A W5500 TCP trait. |
Udp | A W5500 UDP socket trait. |