cleanup reboot logic, fix json upload

This commit is contained in:
2025-01-04 00:04:40 +01:00
parent 0f77ac163a
commit c070e68349
5 changed files with 196 additions and 92 deletions

View File

@@ -7,6 +7,7 @@ use embedded_hal_bus::i2c::MutexDevice;
use embedded_svc::wifi::{
AccessPointConfiguration, AccessPointInfo, AuthMethod, ClientConfiguration, Configuration,
};
use esp_idf_hal::adc::oneshot::config::AdcChannelConfig;
use esp_idf_hal::adc::oneshot::{AdcChannelDriver, AdcDriver};
use esp_idf_hal::adc::{attenuation, Resolution};
@@ -23,6 +24,8 @@ use esp_idf_svc::wifi::EspWifi;
use measurements::Temperature;
use once_cell::sync::Lazy;
use plant_ctrl2::sipo::ShiftRegister40;
use esp_idf_sys::esp_deep_sleep;
use esp_idf_sys::esp_restart;
use anyhow::{anyhow, Context};
use anyhow::{bail, Ok, Result};
@@ -53,6 +56,7 @@ use esp_idf_sys::{esp, esp_spiffs_check, gpio_hold_dis, gpio_hold_en, vTaskDelay
use one_wire_bus::OneWire;
use crate::config::{self, PlantControllerConfig};
use crate::espota::mark_app_valid;
use crate::{plant_hal, to_string, STAY_ALIVE};
//Only support for 8 right now!
@@ -196,6 +200,21 @@ pub struct BatteryState {
}
impl PlantCtrlBoard<'_> {
pub fn deep_sleep(&mut self, duration_in_ms:u64) -> !{
unsafe {
//if we dont do this here, we might just revert a newly flashed firmeware
mark_app_valid();
//allow early wakup by pressing the boot button
if duration_in_ms == 0 {
esp_restart();
} else {
// esp_sleep_enable_ext1_wakeup(0b10u64, esp_sleep_ext1_wakeup_mode_t_ESP_EXT1_WAKEUP_ANY_LOW);
esp_deep_sleep(duration_in_ms);
}
};
}
pub fn get_battery_state(&mut self) -> BatteryState {
let bat = BatteryState {
voltage_milli_volt: to_string(self.voltage_milli_volt()),