38 lines
1.1 KiB
Rust
38 lines
1.1 KiB
Rust
|
|
use esp_hal::{Async, uart::UartRx};
|
||
|
|
use log::{debug, info, error};
|
||
|
|
|
||
|
|
pub async fn run_console(mut uart_rx: UartRx<'_, Async>) {
|
||
|
|
let mut buf = [0_u8; 32];
|
||
|
|
|
||
|
|
info!("Debugging console opened.");
|
||
|
|
|
||
|
|
loop {
|
||
|
|
use log::warn;
|
||
|
|
|
||
|
|
let len = match uart_rx.read_async(&mut buf[..]).await {
|
||
|
|
Ok(len) => len,
|
||
|
|
Err(error) => {
|
||
|
|
error!("Failed to read from the alt UART port: {error:?}");
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
};
|
||
|
|
let mut read_data = match str::from_utf8(&buf[0..len]) {
|
||
|
|
Ok(utf8) => utf8,
|
||
|
|
Err(error) => {
|
||
|
|
error!("Failed to parse data from the UART port as UTF-8: {error:?}");
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
debug!("Read from alt UART: {read_data:?}");
|
||
|
|
|
||
|
|
match read_data.trim() {
|
||
|
|
"reset" | "reboot" | "rst" | "r" => {
|
||
|
|
info!("Performing software reset.");
|
||
|
|
esp_hal::system::software_reset();
|
||
|
|
}
|
||
|
|
_ => warn!("Command not recognized: {read_data:?}"),
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|