Housekeeping #18
@ -97,6 +97,7 @@ impl BatteryInteraction for NoBatteryMonitor {
|
||||
}
|
||||
|
||||
//TODO implement this battery monitor kind once controller is complete
|
||||
#[allow(dead_code)]
|
||||
pub struct WchI2cSlave {}
|
||||
|
||||
pub struct BQ34Z100G1<'a> {
|
||||
|
@ -51,11 +51,6 @@ const TANK_MULTI_SAMPLE: usize = 11;
|
||||
|
||||
pub static I2C_DRIVER: Lazy<Mutex<I2cDriver<'static>>> = Lazy::new(PlantHal::create_i2c);
|
||||
|
||||
#[non_exhaustive]
|
||||
struct V3Constants;
|
||||
|
||||
impl V3Constants {}
|
||||
|
||||
const X25: crc::Crc<u16> = crc::Crc::<u16>::new(&crc::CRC_16_IBM_SDLC);
|
||||
|
||||
fn deep_sleep(duration_in_ms: u64) -> ! {
|
||||
@ -132,6 +127,7 @@ pub trait BoardInteraction<'a> {
|
||||
fn set_config(&mut self, config: PlantControllerConfig) -> Result<()>;
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub struct FreePeripherals {
|
||||
pub gpio0: Gpio0,
|
||||
pub gpio1: Gpio1,
|
||||
|
@ -84,7 +84,7 @@ pub struct V3<'a> {
|
||||
PinDriver<'a, esp_idf_hal::gpio::AnyIOPin, InputOutput>,
|
||||
PinDriver<'a, esp_idf_hal::gpio::AnyIOPin, InputOutput>,
|
||||
>,
|
||||
shift_register_enable_invert:
|
||||
_shift_register_enable_invert:
|
||||
PinDriver<'a, esp_idf_hal::gpio::AnyIOPin, esp_idf_hal::gpio::Output>,
|
||||
tank_channel: AdcChannelDriver<'a, Gpio5, AdcDriver<'a, esp_idf_hal::adc::ADC1>>,
|
||||
solar_is_day: PinDriver<'a, esp_idf_hal::gpio::AnyIOPin, esp_idf_hal::gpio::Input>,
|
||||
@ -109,7 +109,7 @@ pub(crate) fn create_v3(
|
||||
esp: ESP<'static>,
|
||||
config: PlantControllerConfig,
|
||||
battery_monitor: Box<dyn BatteryInteraction + Send>,
|
||||
) -> Result<Box<dyn BoardInteraction + Send + '_>> {
|
||||
) -> Result<Box<dyn BoardInteraction<'static> + Send>> {
|
||||
let mut clock = PinDriver::input_output(peripherals.gpio15.downgrade())?;
|
||||
clock.set_pull(Pull::Floating)?;
|
||||
let mut latch = PinDriver::input_output(peripherals.gpio3.downgrade())?;
|
||||
@ -234,7 +234,7 @@ pub(crate) fn create_v3(
|
||||
battery_monitor,
|
||||
esp,
|
||||
shift_register,
|
||||
shift_register_enable_invert,
|
||||
_shift_register_enable_invert: shift_register_enable_invert,
|
||||
tank_channel,
|
||||
solar_is_day,
|
||||
light,
|
||||
|
@ -38,7 +38,7 @@ const MS4: u8 = 2_u8;
|
||||
const SENSOR_ON: u8 = 5_u8;
|
||||
|
||||
pub struct V4<'a> {
|
||||
mppt_ina: SyncIna219<MutexDevice<'a, I2cDriver<'a>>, UnCalibrated>,
|
||||
_mppt_ina: SyncIna219<MutexDevice<'a, I2cDriver<'a>>, UnCalibrated>,
|
||||
esp: ESP<'a>,
|
||||
battery_monitor: Box<dyn BatteryInteraction + Send>,
|
||||
config: PlantControllerConfig,
|
||||
@ -63,12 +63,12 @@ pub struct V4<'a> {
|
||||
sensor_expander: Pca9535Immediate<MutexDevice<'a, I2cDriver<'a>>>,
|
||||
}
|
||||
|
||||
pub(crate) fn create_v4(
|
||||
pub(crate) fn create_v4<'a>(
|
||||
peripherals: FreePeripherals,
|
||||
esp: ESP<'static>,
|
||||
config: PlantControllerConfig,
|
||||
battery_monitor: Box<dyn BatteryInteraction + Send>,
|
||||
) -> anyhow::Result<Box<dyn BoardInteraction + Send + '_>> {
|
||||
) -> anyhow::Result<Box<dyn BoardInteraction<'static> + Send>> {
|
||||
let mut awake = PinDriver::output(peripherals.gpio15.downgrade())?;
|
||||
awake.set_high()?;
|
||||
|
||||
@ -188,7 +188,7 @@ pub(crate) fn create_v4(
|
||||
println!("Shunt Current: {}", current);
|
||||
|
||||
let v = V4 {
|
||||
mppt_ina,
|
||||
_mppt_ina: mppt_ina,
|
||||
esp,
|
||||
awake,
|
||||
tank_channel,
|
||||
|
@ -20,11 +20,7 @@ use log::{log, LogMessage};
|
||||
use once_cell::sync::Lazy;
|
||||
use plant_state::PlantState;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::sync::MutexGuard;
|
||||
use std::{
|
||||
fmt::Display,
|
||||
sync::{atomic::AtomicBool, Arc, Mutex},
|
||||
};
|
||||
use std::sync::{atomic::AtomicBool, Arc, Mutex, MutexGuard};
|
||||
use tank::*;
|
||||
|
||||
mod config;
|
||||
@ -841,15 +837,6 @@ fn main() {
|
||||
}
|
||||
}
|
||||
|
||||
fn to_string<T: Display>(value: anyhow::Result<T>) -> String {
|
||||
match value {
|
||||
Ok(v) => v.to_string(),
|
||||
Err(err) => {
|
||||
format!("{:?}", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn in_time_range(cur: &DateTime<Tz>, start: u8, end: u8) -> bool {
|
||||
let curhour = cur.hour() as u8;
|
||||
//eg 10-14
|
||||
|
@ -239,7 +239,11 @@ impl PlantState {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn to_mqtt_info(&self, plant_conf: &PlantConfig, current_time: &DateTime<Tz>) -> PlantInfo {
|
||||
pub fn to_mqtt_info(
|
||||
&self,
|
||||
plant_conf: &PlantConfig,
|
||||
current_time: &DateTime<Tz>,
|
||||
) -> PlantInfo<'_> {
|
||||
PlantInfo {
|
||||
sensor_a: &self.sensor_a,
|
||||
sensor_b: &self.sensor_b,
|
||||
|
@ -214,7 +214,7 @@ fn set_config(
|
||||
let config: PlantControllerConfig = serde_json::from_slice(&all)?;
|
||||
|
||||
let mut board = BOARD_ACCESS.lock().expect("board access");
|
||||
board.board_hal.set_config(config);
|
||||
let _ = board.board_hal.set_config(config);
|
||||
anyhow::Ok(Some("saved".to_owned()))
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user