Skip to content

Commit b9cc5fe

Browse files
committed
chore: remove old esp-now experiment
1 parent 00d8266 commit b9cc5fe

File tree

2 files changed

+106
-188
lines changed

2 files changed

+106
-188
lines changed

Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ trouble-host = { version = "0.5.0", features = ["scan", "security"] }
5050

5151
[features]
5252
default = ["sleep"]
53-
esp_now = ["esp-radio/esp-now"]
5453
gen_version = []
5554
bat_dev_lcd = []
5655
release_build = ["sleep"]

src/main.rs

Lines changed: 106 additions & 187 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,6 @@ use structs::ConnSettings;
2020
use utils::{logger::FkmLogger, set_brownout_detection};
2121
use ws_framer::{WsUrl, WsUrlOwned};
2222

23-
#[cfg(feature = "esp_now")]
24-
use esp_radio::esp_now::{EspNowManager, EspNowSender};
25-
2623
mod battery;
2724
mod bluetooth;
2825
mod board;
@@ -56,19 +53,6 @@ pub fn custom_rng(buf: &mut [u8]) -> Result<(), getrandom::Error> {
5653
Ok(())
5754
}
5855
getrandom::register_custom_getrandom!(custom_rng);
59-
60-
#[cfg(feature = "esp_now")]
61-
const ESP_NOW_DST: &[u8; 6] = &[156, 158, 110, 52, 70, 200];
62-
#[cfg(feature = "esp_now")]
63-
macro_rules! mk_static {
64-
($t:ty,$val:expr) => {{
65-
static STATIC_CELL: static_cell::StaticCell<$t> = static_cell::StaticCell::new();
66-
#[deny(unused_attributes)]
67-
let x = STATIC_CELL.uninit().write(($val));
68-
x
69-
}};
70-
}
71-
7256
esp_bootloader_esp_idf::esp_app_desc!();
7357

7458
#[esp_rtos::main]
@@ -183,165 +167,122 @@ async fn main(spawner: Spawner) {
183167
}
184168
}
185169
}
170+
let wifi_res = esp_hal_wifimanager::init_wm(
171+
wm_settings,
172+
&spawner,
173+
#[cfg(feature = "qa")]
174+
None,
175+
#[cfg(not(feature = "qa"))]
176+
Some(&nvs),
177+
board.rng,
178+
board.wifi,
179+
unsafe { board.bt.clone_unchecked() },
180+
Some(wifi_setup_sig),
181+
)
182+
.await;
183+
184+
let Ok(mut wifi_res) = wifi_res else {
185+
log::error!("WifiManager failed!!! Restarting in 1s!");
186+
Timer::after_millis(1000).await;
187+
esp_hal::system::software_reset();
188+
};
186189

187-
#[cfg(feature = "esp_now")]
188-
{
189-
let init = &*mk_static!(
190-
esp_wifi::EspWifiController<'static>,
191-
esp_wifi::init(board.timg0.timer0, board.rng.clone(), board.radio_clk)
192-
.expect("EXPERIMENT")
193-
);
194-
195-
let (manager, tx, mut rx) = esp_wifi::esp_now::EspNow::new(&init, board.wifi)
196-
.expect("EXPERIMENT")
197-
.split();
198-
199-
_ = manager.set_power_saving(esp_wifi::config::PowerSaveMode::None);
200-
//_ = manager.set_rate(esp_wifi::esp_now::WifiPhyRate::RateMax);
201-
_ = manager.set_pmk(&[69, 4, 2, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
202-
203-
spawner.must_spawn(bc_test_task(tx, manager));
204-
let mut last_counter = 0;
205-
loop {
206-
let recv = rx.receive_async().await;
207-
log::info!("ESP_NOW frame recv: {:?}", recv.info);
208-
log::info!("{:?}", recv.data());
209-
210-
if &recv.info.dst_address == ESP_NOW_DST {
211-
if recv.data().len() == 16 {
212-
let counter = u128::from_be_bytes(recv.data().try_into().expect("EXPERIMENT"));
213-
if counter - last_counter == 0 {
214-
log::warn!("First packet?");
215-
} else if counter - last_counter > 1 {
216-
log::error!("PACKET LOST!");
217-
}
218-
219-
last_counter = counter;
220-
}
221-
}
222-
}
223-
}
224-
225-
#[cfg(not(feature = "esp_now"))]
226-
{
227-
let wifi_res = esp_hal_wifimanager::init_wm(
228-
wm_settings,
229-
&spawner,
230-
#[cfg(feature = "qa")]
231-
None,
232-
#[cfg(not(feature = "qa"))]
233-
Some(&nvs),
234-
board.rng,
235-
board.wifi,
236-
unsafe { board.bt.clone_unchecked() },
237-
Some(wifi_setup_sig),
238-
)
239-
.await;
240-
241-
let Ok(mut wifi_res) = wifi_res else {
242-
log::error!("WifiManager failed!!! Restarting in 1s!");
243-
Timer::after_millis(1000).await;
244-
esp_hal::system::software_reset();
190+
#[cfg(feature = "qa")]
191+
crate::qa::send_qa_resp(crate::qa::QaSignal::WifiSetup);
192+
193+
let conn_settings: ConnSettings = wifi_res
194+
.data
195+
.take()
196+
.and_then(|d| serde_json::from_value(d).ok())
197+
.unwrap_or_default();
198+
199+
let mut parse_retry_count = 0;
200+
let ws_url = loop {
201+
let url = if conn_settings.mdns || conn_settings.ws_url.is_none() || parse_retry_count > 0 {
202+
log::info!("Starting mdns lookup...");
203+
global_state.state.lock().await.scene = Scene::MdnsWait;
204+
let mdns_res = mdns::mdns_query(wifi_res.sta_stack).await;
205+
log::info!("Mdns result: {mdns_res:?}");
206+
207+
mdns_res.to_string()
208+
} else {
209+
conn_settings.ws_url.clone().unwrap_or_default()
245210
};
246211

247-
#[cfg(feature = "qa")]
248-
crate::qa::send_qa_resp(crate::qa::QaSignal::WifiSetup);
249-
250-
let conn_settings: ConnSettings = wifi_res
251-
.data
252-
.take()
253-
.and_then(|d| serde_json::from_value(d).ok())
254-
.unwrap_or_default();
255-
256-
let mut parse_retry_count = 0;
257-
let ws_url = loop {
258-
let url =
259-
if conn_settings.mdns || conn_settings.ws_url.is_none() || parse_retry_count > 0 {
260-
log::info!("Starting mdns lookup...");
261-
global_state.state.lock().await.scene = Scene::MdnsWait;
262-
let mdns_res = mdns::mdns_query(wifi_res.sta_stack).await;
263-
log::info!("Mdns result: {mdns_res:?}");
264-
265-
mdns_res.to_string()
266-
} else {
267-
conn_settings.ws_url.clone().unwrap_or_default()
268-
};
269-
270-
let ws_url = WsUrl::from_str(&url);
271-
match ws_url {
272-
Some(ws_url) => break WsUrlOwned::new(&ws_url),
273-
None => {
274-
parse_retry_count += 1;
275-
log::error!("Mdns parse failed! Retry ({parse_retry_count})..");
212+
let ws_url = WsUrl::from_str(&url);
213+
match ws_url {
214+
Some(ws_url) => break WsUrlOwned::new(&ws_url),
215+
None => {
216+
parse_retry_count += 1;
217+
log::error!("Mdns parse failed! Retry ({parse_retry_count})..");
218+
Timer::after_millis(1000).await;
219+
if parse_retry_count > 3 {
220+
log::error!("Cannot parse wsurl! Reseting wifi configuration!");
221+
_ = nvs.invalidate_key(WIFI_NVS_KEY).await;
276222
Timer::after_millis(1000).await;
277-
if parse_retry_count > 3 {
278-
log::error!("Cannot parse wsurl! Reseting wifi configuration!");
279-
_ = nvs.invalidate_key(WIFI_NVS_KEY).await;
280-
Timer::after_millis(1000).await;
281223

282-
esp_hal::system::software_reset();
283-
}
284-
285-
continue;
224+
esp_hal::system::software_reset();
286225
}
287-
}
288-
};
289226

290-
utils::backtrace_store::read_saved_backtrace().await;
291-
// TODO: test disable usb
292-
/*
293-
esp_hal::gpio::Input::new(
294-
board.usb_dp,
295-
esp_hal::gpio::InputConfig::default().with_pull(esp_hal::gpio::Pull::None),
296-
);
297-
esp_hal::gpio::Input::new(
298-
board.usb_dm,
299-
esp_hal::gpio::InputConfig::default().with_pull(esp_hal::gpio::Pull::None),
300-
);
301-
*/
302-
303-
let ws_sleep_sig = Rc::new(Signal::new());
304-
spawner.must_spawn(ws::ws_task(
305-
wifi_res.sta_stack,
306-
ws_url,
307-
global_state.clone(),
308-
ws_sleep_sig.clone(),
309-
));
310-
spawner.must_spawn(logger_task(global_state.clone()));
311-
312-
let ble_sleep_sig = Rc::new(Signal::new());
313-
spawner.must_spawn(bluetooth::bluetooth_timer_task(
314-
wifi_res.wifi_init,
315-
board.bt,
316-
global_state.clone(),
317-
ble_sleep_sig.clone(),
318-
));
319-
320-
set_brownout_detection(true);
321-
global_state.state.lock().await.scene = Scene::WaitingForCompetitor;
322-
if let Some(saved_state) = SavedGlobalState::from_nvs(&nvs).await {
323-
global_state
324-
.state
325-
.lock()
326-
.await
327-
.parse_saved_state(saved_state);
227+
continue;
228+
}
328229
}
230+
};
329231

330-
let mut last_sleep = false;
331-
loop {
332-
Timer::after_millis(100).await;
333-
if sleep_state() != last_sleep {
334-
last_sleep = sleep_state();
335-
ws_sleep_sig.signal(last_sleep);
336-
ble_sleep_sig.signal(last_sleep);
337-
338-
match last_sleep {
339-
true => {
340-
unsafe { crate::state::TRUST_SERVER = false };
341-
wifi_res.stop_radio()
342-
}
343-
false => wifi_res.restart_radio(),
232+
utils::backtrace_store::read_saved_backtrace().await;
233+
// TODO: test disable usb
234+
/*
235+
esp_hal::gpio::Input::new(
236+
board.usb_dp,
237+
esp_hal::gpio::InputConfig::default().with_pull(esp_hal::gpio::Pull::None),
238+
);
239+
esp_hal::gpio::Input::new(
240+
board.usb_dm,
241+
esp_hal::gpio::InputConfig::default().with_pull(esp_hal::gpio::Pull::None),
242+
);
243+
*/
244+
245+
let ws_sleep_sig = Rc::new(Signal::new());
246+
spawner.must_spawn(ws::ws_task(
247+
wifi_res.sta_stack,
248+
ws_url,
249+
global_state.clone(),
250+
ws_sleep_sig.clone(),
251+
));
252+
spawner.must_spawn(logger_task(global_state.clone()));
253+
254+
let ble_sleep_sig = Rc::new(Signal::new());
255+
spawner.must_spawn(bluetooth::bluetooth_timer_task(
256+
wifi_res.wifi_init,
257+
board.bt,
258+
global_state.clone(),
259+
ble_sleep_sig.clone(),
260+
));
261+
262+
set_brownout_detection(true);
263+
global_state.state.lock().await.scene = Scene::WaitingForCompetitor;
264+
if let Some(saved_state) = SavedGlobalState::from_nvs(&nvs).await {
265+
global_state
266+
.state
267+
.lock()
268+
.await
269+
.parse_saved_state(saved_state);
270+
}
271+
272+
let mut last_sleep = false;
273+
loop {
274+
Timer::after_millis(100).await;
275+
if sleep_state() != last_sleep {
276+
last_sleep = sleep_state();
277+
ws_sleep_sig.signal(last_sleep);
278+
ble_sleep_sig.signal(last_sleep);
279+
280+
match last_sleep {
281+
true => {
282+
unsafe { crate::state::TRUST_SERVER = false };
283+
wifi_res.stop_radio()
344284
}
285+
false => wifi_res.restart_radio(),
345286
}
346287
}
347288
}
@@ -384,25 +325,3 @@ async fn logger_task(global_state: GlobalState) {
384325
}
385326
}
386327
}
387-
388-
#[cfg(feature = "esp_now")]
389-
#[embassy_executor::task]
390-
async fn bc_test_task(mut tx: EspNowSender<'static>, manager: EspNowManager<'static>) {
391-
let mut counter = 0u128;
392-
loop {
393-
manager
394-
.add_peer(esp_wifi::esp_now::PeerInfo {
395-
peer_address: *ESP_NOW_DST,
396-
lmk: None,
397-
channel: None,
398-
encrypt: false,
399-
})
400-
.expect("EXPERIMENT");
401-
402-
let r = tx.send_async(ESP_NOW_DST, &counter.to_be_bytes()).await;
403-
manager.remove_peer(ESP_NOW_DST).expect("EXPERIMENT");
404-
405-
counter += 1;
406-
Timer::after_millis(1000).await;
407-
}
408-
}

0 commit comments

Comments
 (0)