esp-hal/esp-wifi/MIGRATING-0.10.md

99 lines
4.0 KiB
Markdown

# Migration Guide from 0.10.x to v0.11.x
## Initialization changes
`EspWifiInitFor` has been removed, individual drivers such as `Wifi` and `BleConnector` handle the initialization and de-initialization of the radio stack.
`EspWifiInit` has been removed in favour of `EspWifiController`, each radio driver takes reference to this object. If no driver is borrowing `EspWifiController`,
you can safely call `EspWifiController::deinit()` to completely deinit the stack and return the peripherals used in `esp_wifi::init`.
`esp-wifi::init` now takes all peripherals using the `PeripheralRef` pattern, with the exception of the rng source.
`esp_wifi::init` now accepts `esp_hal::rng::Rng` or `esp_hal::rng::Trng`.
The following error enum variants have been removed from `InitializationError`:
- `Timer(hal::timer::Error)`
- `TimerUnavailable`
- `RadioClockUnavailable`
```diff
- let init: EspWifiInitialization = esp_wifi::init(EspWifiInitFor::Wifi, timg0.timer0, rng.clone(), peripherals.RADIO_CLK).unwrap();
+ let init: EspWifiController = esp_wifi::init(timg0.timer0, rng.clone(), peripherals.RADIO_CLK).unwrap();
```
## No need to include `rom_functions.x` manually
Don't include `rom_functions.x` from esp-wifi
```diff
rustflags = [
"-C", "link-arg=-Tlinkall.x",
- "-C", "link-arg=-Trom_functions.x",
]
```
## ESP-NOW: Use `data` to access the received payload
Previously `data` and `len` were public - use the previously already existing `data()` function.
Accessing `data` or `len` was never encouraged.
## Async features have been removed and async functionality is always available
The cost of this is that we need to rename the various `async` methods on `WifiController`.
```diff
- controller.start().await.unwrap();
+ controller.start_async().await.unwrap();
```
## The blocking networking stack was removed
The blocking networking stack is not included anymore. You can use e.g. `smoltcp-nal` or even use `smoltcp` directly.
For an easy migration path there is https://github.com/bjoernQ/blocking-network-stack.git which is basically the previously included networking stack as it's
own crate.
The `create_network_interface` function doesn't take `&mut SocketSet[..]` anymore.
```diff
+use blocking_network_stack::Stack;
use esp_wifi::{
- wifi_interface::WifiStack,
};
+ let mut rng = Rng::new(peripherals.RNG);
- let init = init(timg0.timer0, rng, peripherals.RADIO_CLK).unwrap();
+ let init = init(timg0.timer0, rng.clone(), peripherals.RADIO_CLK).unwrap();
let mut wifi = peripherals.WIFI;
let mut socket_set_entries: [SocketStorage; 3] = Default::default();
+ let (iface, device, mut controller) =
+ create_network_interface(&init, &mut wifi, WifiStaDevice).unwrap();
+
- let (iface, device, mut controller, sockets) =
- create_network_interface(&init, &mut wifi, WifiStaDevice, &mut socket_set_entries).unwrap();
+ let socket_set = SocketSet::new(&mut socket_set_entries[..]);
let now = || time::now().duration_since_epoch().to_millis();
- let wifi_stack = WifiStack::new(iface, device, sockets, now);
+ let wifi_stack = Stack::new(iface, device, socket_set, now, rng.random());
```
The related features are removed from `esp-wifi`: wifi-default, ipv6, ipv4, tcp, udp, icmp, igmp, dns, dhcpv4
## `get_` prefixes have been removed from functions
In order to better comply with the Rust API Guidelines [getter names convention], we have removed the `get_` prefixes from all functions which previously had it. Due to the number of changes it's not practical to list all changes here, however if a function previous began with `get_`, you can simply remove this prefix.
[getter names convention]: https://rust-lang.github.io/api-guidelines/naming.html#c-getter
## Removal of features
Along with the features removed regarding the blocking network stack, the following features have been removed:
- `async` - Enabled by default
- `phy-enable-usb` - Turned into a configuration option
- `dump-packets` - Turned into a configuration option
- `ps-min-modem` & `ps-max-modem` - Turned into a runtime configuration, see `set_power_saving`