Skip to content

Commit b82e764

Browse files
committed
Improve test
1 parent 115419b commit b82e764

File tree

1 file changed

+78
-34
lines changed

1 file changed

+78
-34
lines changed

qa-test/src/bin/embassy_wifi_drop.rs

Lines changed: 78 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
#![no_main]
88

99
use embassy_executor::Spawner;
10-
use embassy_time::Duration;
1110
use esp_alloc as _;
1211
use esp_backtrace as _;
1312
use esp_hal::{
@@ -18,14 +17,15 @@ use esp_hal::{
1817
};
1918
use esp_println::println;
2019
use esp_radio::wifi::{ModeConfig, sta::StationConfig};
20+
use smoltcp::phy::Device;
2121

2222
esp_bootloader_esp_idf::esp_app_desc!();
2323

2424
const SSID: &str = env!("SSID");
2525
const PASSWORD: &str = env!("PASSWORD");
2626

2727
#[esp_rtos::main]
28-
async fn main(_spawner: Spawner) -> ! {
28+
async fn main(_spawner: Spawner) {
2929
esp_println::logger::init_logger_from_env();
3030
let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max());
3131
let peripherals = esp_hal::init(config);
@@ -39,39 +39,83 @@ async fn main(_spawner: Spawner) -> ! {
3939
esp_rtos::start(timg0.timer0, sw_int.software_interrupt0);
4040

4141
let mut wifi = peripherals.WIFI;
42-
let (mut controller, interfaces) =
43-
esp_radio::wifi::new(wifi.reborrow(), Default::default()).unwrap();
44-
45-
let station_config = ModeConfig::Station(
46-
StationConfig::default()
47-
.with_ssid(SSID.into())
48-
.with_password(PASSWORD.into()),
49-
);
50-
controller.set_config(&station_config).unwrap();
51-
controller.start_async().await.unwrap();
52-
controller.connect_async().await.unwrap();
53-
54-
let mut wifi_interface = interfaces.station;
55-
56-
use smoltcp::phy::Device;
57-
let token = wifi_interface.transmit(smoltcp::time::Instant::from_millis(
58-
esp_hal::time::Instant::now()
59-
.duration_since_epoch()
60-
.as_millis() as i64,
61-
));
62-
63-
println!("got token {}", token.is_some());
64-
65-
core::mem::drop(controller);
66-
67-
if let Some(token) = token {
68-
token.consume_token(10, |tx| tx.fill(0));
69-
println!("tx done");
70-
} else {
71-
println!("no token");
42+
{
43+
let (mut controller, interfaces) =
44+
esp_radio::wifi::new(wifi.reborrow(), Default::default()).unwrap();
45+
46+
let mut wifi_interface = interfaces.station;
47+
48+
let token = wifi_interface.transmit(smoltcp::time::Instant::from_millis(
49+
esp_hal::time::Instant::now()
50+
.duration_since_epoch()
51+
.as_millis() as i64,
52+
));
53+
assert!(matches!(token, None));
54+
55+
let station_config = ModeConfig::Station(
56+
StationConfig::default()
57+
.with_ssid(SSID.into())
58+
.with_password(PASSWORD.into()),
59+
);
60+
controller.set_config(&station_config).unwrap();
61+
controller.start_async().await.unwrap();
62+
controller.connect_async().await.unwrap();
63+
64+
let token = wifi_interface.transmit(smoltcp::time::Instant::from_millis(
65+
esp_hal::time::Instant::now()
66+
.duration_since_epoch()
67+
.as_millis() as i64,
68+
));
69+
70+
println!("got token {}", token.is_some());
71+
72+
core::mem::drop(controller);
73+
74+
if let Some(token) = token {
75+
token.consume_token(10, |tx| tx.fill(0));
76+
println!("survived consumer_token");
77+
} else {
78+
println!("no token");
79+
}
80+
81+
let token = wifi_interface.transmit(smoltcp::time::Instant::from_millis(
82+
esp_hal::time::Instant::now()
83+
.duration_since_epoch()
84+
.as_millis() as i64,
85+
));
86+
assert!(matches!(token, None));
7287
}
7388

74-
loop {
75-
embassy_time::Timer::after(Duration::from_millis(10)).await;
89+
{
90+
let (mut controller, interfaces) =
91+
esp_radio::wifi::new(wifi.reborrow(), Default::default()).unwrap();
92+
93+
let station_config = ModeConfig::Station(
94+
StationConfig::default()
95+
.with_ssid(SSID.into())
96+
.with_password(PASSWORD.into()),
97+
);
98+
controller.set_config(&station_config).unwrap();
99+
controller.start_async().await.unwrap();
100+
controller.connect_async().await.unwrap();
101+
102+
let mut wifi_interface = interfaces.station;
103+
104+
let token = wifi_interface.transmit(smoltcp::time::Instant::from_millis(
105+
esp_hal::time::Instant::now()
106+
.duration_since_epoch()
107+
.as_millis() as i64,
108+
));
109+
110+
println!("got token {}", token.is_some());
111+
112+
if let Some(token) = token {
113+
token.consume_token(10, |tx| tx.fill(0));
114+
println!("tx done");
115+
} else {
116+
println!("no token");
117+
}
76118
}
119+
120+
println!("Done");
77121
}

0 commit comments

Comments
 (0)