allow startup with initial board mode and nearly no pin configs

This commit is contained in:
2025-06-11 22:08:59 +02:00
parent a9d7936376
commit 6499b18ada
8 changed files with 627 additions and 469 deletions

View File

@@ -1,6 +1,5 @@
use std::str::FromStr;
use serde::{Deserialize, Serialize};
use std::str::FromStr;
use crate::plant_state::PlantWateringMode;
use crate::PLANT_COUNT;
@@ -13,6 +12,7 @@ pub struct NetworkConfig {
pub password: Option<heapless::String<64>>,
pub mqtt_url: Option<heapless::String<128>>,
pub base_topic: Option<heapless::String<64>>,
pub max_wait: u32
}
impl Default for NetworkConfig {
fn default() -> Self {
@@ -22,6 +22,7 @@ impl Default for NetworkConfig {
password: None,
mqtt_url: None,
base_topic: None,
max_wait: 10000,
}
}
}
@@ -72,9 +73,26 @@ impl Default for TankConfig {
}
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)]
pub enum BatteryBoardVersion{
#[default]
Disabled,
BQ34Z100G1,
WchI2cSlave
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)]
pub enum BoardVersion{
#[default]
INITIAL,
V3,
V4
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Default)]
#[serde(default)]
pub struct PlantControllerConfig {
pub board_hardware: BoardVersion,
pub battery_hardware: BatteryBoardVersion,
pub network: NetworkConfig,
pub tank: TankConfig,
pub night_lamp: NightLampConfig,