added ringbuffer
This commit is contained in:
parent
b8fc6477b2
commit
ef002e918c
@ -81,6 +81,7 @@ eeprom24x = "0.7.2"
|
||||
url = "2.5.3"
|
||||
crc = "3.2.1"
|
||||
bincode = "1.3.3"
|
||||
ringbuffer = "0.15.0"
|
||||
|
||||
|
||||
[patch.crates-io]
|
||||
|
@ -30,6 +30,7 @@ use esp_idf_sys::esp_restart;
|
||||
|
||||
use anyhow::{anyhow, Context};
|
||||
use anyhow::{bail, Ok, Result};
|
||||
use ringbuffer::{ConstGenericRingBuffer, RingBuffer};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::ffi::CString;
|
||||
use std::fs::{self, File};
|
||||
@ -45,7 +46,7 @@ use std::time::Duration;
|
||||
|
||||
use embedded_hal::digital::OutputPin;
|
||||
use esp_idf_hal::delay::Delay;
|
||||
use esp_idf_hal::gpio::{AnyInputPin, Gpio18, Gpio5, IOPin, InputOutput, Level, PinDriver, Pull};
|
||||
use esp_idf_hal::gpio::{AnyInputPin, Gpio18, Gpio5, Gpio7, Gpio8, IOPin, InputOutput, Level, PinDriver, Pull};
|
||||
use esp_idf_hal::pcnt::{
|
||||
PcntChannel, PcntChannelConfig, PcntControlMode, PcntCountMode, PcntDriver, PinIndex,
|
||||
};
|
||||
@ -127,6 +128,12 @@ static mut LOW_VOLTAGE_DETECTED: bool = false;
|
||||
#[link_section = ".rtc.data"]
|
||||
static mut RESTART_TO_CONF: bool = false;
|
||||
|
||||
const BUFFER_SIZE:usize = 120;
|
||||
const ENTRY_SIZE:usize = 120;
|
||||
#[link_section = ".rtc.data"]
|
||||
static mut BUFFER:ConstGenericRingBuffer::<heapless::String<ENTRY_SIZE>, BUFFER_SIZE> = ConstGenericRingBuffer::<heapless::String<ENTRY_SIZE>, BUFFER_SIZE>::new();
|
||||
|
||||
|
||||
pub struct FileSystemSizeInfo {
|
||||
pub total_size: usize,
|
||||
pub used_size: usize,
|
||||
@ -273,7 +280,21 @@ impl PlantCtrlBoard<'_> {
|
||||
let checksum = X25.checksum(&data_buffer);
|
||||
if checksum != header.crc16 {
|
||||
bail!("Invalid checksum, got {} but expected {}", checksum, header.crc16 );
|
||||
}
|
||||
}
|
||||
|
||||
unsafe {
|
||||
let value = heapless::String::try_from("dummy").unwrap();
|
||||
BUFFER.push(value);
|
||||
}
|
||||
unsafe {
|
||||
for entry in BUFFER.iter() {
|
||||
let test = entry.as_bytes().to_owned();
|
||||
for p in test {
|
||||
data_buffer.push(p);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Ok(data_buffer)
|
||||
}
|
||||
|
||||
@ -1415,6 +1436,7 @@ impl PlantHal {
|
||||
LAST_WATERING_TIMESTAMP = [0; PLANT_COUNT];
|
||||
CONSECUTIVE_WATERING_PLANT = [0; PLANT_COUNT];
|
||||
LOW_VOLTAGE_DETECTED = false;
|
||||
BUFFER = ConstGenericRingBuffer::<heapless::String<ENTRY_SIZE>, BUFFER_SIZE>::new();
|
||||
RESTART_TO_CONF = to_config_mode;
|
||||
};
|
||||
} else {
|
||||
@ -1482,7 +1504,7 @@ impl PlantHal {
|
||||
let tank_channel: AdcChannelDriver<Gpio5, AdcDriver<esp_idf_hal::adc::ADC1>> =
|
||||
AdcChannelDriver::new(tank_driver, peripherals.pins.gpio5, &adc_config)?;
|
||||
|
||||
let mut solar_is_day = PinDriver::input(peripherals.pins.gpio8.downgrade())?;
|
||||
let mut solar_is_day = PinDriver::input(peripherals.pins.gpio7.downgrade())?;
|
||||
solar_is_day.set_pull(Pull::Floating)?;
|
||||
|
||||
let mut boot_button = PinDriver::input(peripherals.pins.gpio9.downgrade())?;
|
||||
|
Loading…
x
Reference in New Issue
Block a user