This commit is contained in:
Empire Phoenix 2025-09-14 13:50:46 +02:00
parent 4aa25c687b
commit 049a9d027c
3 changed files with 27 additions and 29 deletions

View File

@ -85,7 +85,7 @@ embassy-executor = { version = "0.7.0", features = [
"log", "log",
"task-arena-size-20480", "task-arena-size-20480",
] } ] }
embassy-time = { version = "0.4.0", features = ["log"] } embassy-time = { version = "0.5.0", features = ["log"] }
esp-hal-embassy = { version = "0.9.0", features = ["esp32c6", "log-04"] } esp-hal-embassy = { version = "0.9.0", features = ["esp32c6", "log-04"] }
esp-storage = { version = "0.7.0", features = ["esp32c6"] } esp-storage = { version = "0.7.0", features = ["esp32c6"] }
@ -97,19 +97,20 @@ esp-wifi = { version = "0.15.0", features = [
"smoltcp", "smoltcp",
"wifi", "wifi",
] } ] }
#smoltcp = { version = "0.12.0", default-features = false, features = [ smoltcp = { version = "0.12.0", default-features = false, features = [
# "log", "alloc",
# "medium-ethernet", "log",
# "multicast", "medium-ethernet",
# "proto-dhcpv4", "multicast",
# "proto-dns", "proto-dhcpv4",
# "proto-ipv4", "proto-dns",
# "socket-dns", "proto-ipv4",
# "socket-icmp", "socket-dns",
# "socket-raw", "socket-icmp",
# "socket-tcp", "socket-raw",
# "socket-udp", "socket-tcp",
#] } "socket-udp",
] }
#static_cell = "2.1.1" #static_cell = "2.1.1"
embedded-hal = "1.0.0" embedded-hal = "1.0.0"
heapless = { version = "0.8", features = ["serde"] } heapless = { version = "0.8", features = ["serde"] }

View File

@ -6,6 +6,7 @@ use anyhow::{anyhow, bail, Context};
use chrono::{DateTime, Utc}; use chrono::{DateTime, Utc};
use serde::Serialize; use serde::Serialize;
use alloc::string::ToString;
use alloc::{string::String, vec::Vec}; use alloc::{string::String, vec::Vec};
use core::marker::PhantomData; use core::marker::PhantomData;
use core::net::{IpAddr, Ipv4Addr}; use core::net::{IpAddr, Ipv4Addr};
@ -176,9 +177,9 @@ impl Esp<'_> {
} }
pub(crate) async fn wifi_ap(&mut self) -> anyhow::Result<Stack<'static>> { pub(crate) async fn wifi_ap(&mut self) -> anyhow::Result<Stack<'static>> {
let _ssid = match self.load_config() { let ssid = match self.load_config() {
Ok(config) => config.network.ap_ssid.clone(), Ok(config) => config.network.ap_ssid.as_str().to_string(),
Err(_) => heapless::String::from_str("PlantCtrl Emergency Mode").unwrap(), Err(_) => "PlantCtrl Emergency Mode".to_string(),
}; };
let spawner = Spawner::for_current_executor().await; let spawner = Spawner::for_current_executor().await;
@ -205,7 +206,7 @@ impl Esp<'_> {
let stack = mk_static!(Stack, stack); let stack = mk_static!(Stack, stack);
let controller = self.controller.take().unwrap(); let controller = self.controller.take().unwrap();
spawner.spawn(connection(controller)).ok(); spawner.spawn(connection(controller, ssid)).ok();
spawner.spawn(net_task(runner)).ok(); spawner.spawn(net_task(runner)).ok();
spawner.spawn(run_dhcp(stack.clone(), gw_ip_addr_str)).ok(); spawner.spawn(run_dhcp(stack.clone(), gw_ip_addr_str)).ok();
@ -739,7 +740,7 @@ async fn run_dhcp(stack: Stack<'static>, gw_ip_addr: &'static str) {
} }
#[embassy_executor::task] #[embassy_executor::task]
async fn connection(mut controller: WifiController<'static>) { async fn connection(mut controller: WifiController<'static>, ssid: String) {
println!("start connection task"); println!("start connection task");
println!("Device capabilities: {:?}", controller.capabilities()); println!("Device capabilities: {:?}", controller.capabilities());
loop { loop {
@ -753,7 +754,7 @@ async fn connection(mut controller: WifiController<'static>) {
} }
if !matches!(controller.is_started(), core::result::Result::Ok(true)) { if !matches!(controller.is_started(), core::result::Result::Ok(true)) {
let client_config = Configuration::AccessPoint(AccessPointConfiguration { let client_config = Configuration::AccessPoint(AccessPointConfiguration {
ssid: "esp-wifi".try_into().unwrap(), ssid: ssid.clone(),
..Default::default() ..Default::default()
}); });
controller.set_configuration(&client_config).unwrap(); controller.set_configuration(&client_config).unwrap();

View File

@ -394,11 +394,10 @@ pub struct NightLampCommand {
pub async fn httpd(reboot_now: Arc<AtomicBool>, stack: Stack<'static>) { pub async fn httpd(reboot_now: Arc<AtomicBool>, stack: Stack<'static>) {
let mut rx_buffer = [0; 1536]; let mut rx_buffer = [0; 1536];
let mut tx_buffer = [0; 1536]; let mut tx_buffer = [0; 1536];
println!("Stack {}", stack.is_config_up());
let mut socket = TcpSocket::new(stack, &mut rx_buffer, &mut tx_buffer); let mut socket = TcpSocket::new(stack, &mut rx_buffer, &mut tx_buffer);
println!("Socket created"); socket.set_keep_alive(Some(Duration::from_secs(30)));
//let d = embassy_time::Duration::from_millis(1000); socket.set_timeout(Some(Duration::from_secs(5)));
//socket.set_timeout(Some(d));
loop { loop {
println!("Wait for connection..."); println!("Wait for connection...");
let r = socket let r = socket
@ -443,7 +442,6 @@ pub async fn httpd(reboot_now: Arc<AtomicBool>, stack: Stack<'static>) {
} }
}; };
} }
let r = socket let r = socket
.write_all( .write_all(
b"HTTP/1.0 200 OK\r\n\r\n\ b"HTTP/1.0 200 OK\r\n\r\n\
@ -463,11 +461,9 @@ pub async fn httpd(reboot_now: Arc<AtomicBool>, stack: Stack<'static>) {
if let Err(e) = r { if let Err(e) = r {
println!("flush error: {:?}", e); println!("flush error: {:?}", e);
} }
Timer::after(Duration::from_millis(1000)).await; Timer::after_millis(100).await;
socket.close(); socket.close();
Timer::after(Duration::from_millis(1000)).await; Timer::after_millis(100).await;
socket.abort(); socket.abort();
} }