|0.1.1||Aug 10, 2021|
|0.1.0||Aug 10, 2021|
|0.0.3||Feb 2, 2021|
|0.0.2||Feb 2, 2021|
|0.0.1||Sep 2, 2020|
#63 in Embedded development
29 downloads per month
Used in 3 crates
This crate implements the embedded-nal network traits for operating systems that support the standard library's network. .
In that, it is to embedded-nal what linux-embedded-hal is to embedded-hal: A way to use libraries written for the bare-metal embedded world on Linux. (Just that network interfaces are better standardized than hardware access, so it should work on any system).
As the operating system's network stack is always available, it can be instanciated and used at any time without need for synchronization, roughly like this:
use embedded_nal::nb::block; use std_embedded_nal::Stack; use embedded_nal::UdpClient; let message = [0x50, 0x01, 0x00, 0x00]; let mut stack = Stack::default(); let mut socket = stack.socket()?; block!(stack.connect(&mut socket, "127.0.0.1:5683".parse()?)?); block!(stack.send(&mut socket, &message)?);
See the CoAP and HTTP examples for full and working versions.
As embedded-nal is exclusively operating in nonblocking mode starting from version 0.2, any practical use of this ends up busy-waiting for network events. That's abysmal for any production application. It my be acceptable during development (which is what this crate is primarily intended for: Test network components before flashing them onto embedded hardware), but still requires user awareness.
A nb based selector main loop, or a future migration of embedded-nal to a more elaborate async mechanism, might mitigate this to some extent, but the author is not aware of any such implementation.
This crate contains minimal working implementations the traits currently in embedded-nal.
This crate is build-tested on stable Rust 1.51.0. That is largely following the embedded-nal MSRV. It might compile with older versions but that may change at any time.