net: Add features for pool size and remove unwrap on smoltcp device

This commit is contained in:
Thales Fragoso 2021-06-14 18:06:12 -03:00 committed by Dario Nieuwenhuis
parent 6cecc6d4b5
commit 3396a51938
3 changed files with 18 additions and 1 deletions

View file

@ -5,6 +5,7 @@ authors = ["Dario Nieuwenhuis <dirbaio@dirbaio.net>"]
edition = "2018" edition = "2018"
[features] [features]
default = ["pool-4"]
std = [] std = []
defmt-trace = [] defmt-trace = []
defmt-debug = [] defmt-debug = []
@ -17,6 +18,11 @@ dhcpv4 = ["medium-ethernet", "smoltcp/socket-dhcpv4"]
medium-ethernet = ["smoltcp/medium-ethernet"] medium-ethernet = ["smoltcp/medium-ethernet"]
medium-ip = ["smoltcp/medium-ip"] medium-ip = ["smoltcp/medium-ip"]
pool-4 = []
pool-8 = []
pool-16 = []
pool-32 = []
[dependencies] [dependencies]
defmt = { version = "0.2.0", optional = true } defmt = { version = "0.2.0", optional = true }

View file

@ -43,8 +43,8 @@ impl<'a> SmolDevice<'a> for DeviceAdapter {
type TxToken = TxToken<'a>; type TxToken = TxToken<'a>;
fn receive(&'a mut self) -> Option<(Self::RxToken, Self::TxToken)> { fn receive(&'a mut self) -> Option<(Self::RxToken, Self::TxToken)> {
let tx_pkt = PacketBox::new(Packet::new())?;
let rx_pkt = self.device.receive()?; let rx_pkt = self.device.receive()?;
let tx_pkt = PacketBox::new(Packet::new()).unwrap(); // TODO: not sure about unwrap
let rx_token = RxToken { pkt: rx_pkt }; let rx_token = RxToken { pkt: rx_pkt };
let tx_token = TxToken { let tx_token = TxToken {
device: self.device, device: self.device,

View file

@ -4,8 +4,19 @@ use core::ops::{Deref, DerefMut, Range};
use atomic_pool::{pool, Box}; use atomic_pool::{pool, Box};
pub const MTU: usize = 1516; pub const MTU: usize = 1516;
#[cfg(feature = "pool-4")]
pub const PACKET_POOL_SIZE: usize = 4; pub const PACKET_POOL_SIZE: usize = 4;
#[cfg(feature = "pool-8")]
pub const PACKET_POOL_SIZE: usize = 8;
#[cfg(feature = "pool-16")]
pub const PACKET_POOL_SIZE: usize = 16;
#[cfg(feature = "pool-32")]
pub const PACKET_POOL_SIZE: usize = 32;
pool!(pub PacketPool: [Packet; PACKET_POOL_SIZE]); pool!(pub PacketPool: [Packet; PACKET_POOL_SIZE]);
pub type PacketBox = Box<PacketPool>; pub type PacketBox = Box<PacketPool>;