This commit is contained in:
2026-03-16 20:39:44 +00:00
parent 510662a6fb
commit 9c38717a40
2 changed files with 38 additions and 10 deletions

View File

@@ -23,3 +23,12 @@ pub struct BatteryMutable {
pub struct BatteryStatic {
pub total_capacity: i64,
}
impl Data {
pub fn new(battery_static: BatteryStatic) -> Data {
Data {
data_chunks: Vec::new(),
data_static: battery_static,
}
}
}

View File

@@ -1,14 +1,14 @@
use std::{
error::Error,
fs,
io::Read,
io::{Read, Write},
thread::sleep,
time::{Duration, SystemTime},
};
use rkyv::api::low::deserialize;
use rkyv::{Deserialize, api::low::deserialize, rancor};
use crate::data::{Data, DataChunk};
use crate::data::{ArchivedData, Data, DataChunk};
mod battery;
mod data;
@@ -16,17 +16,33 @@ mod data;
fn main() -> Result<(), Box<dyn Error>> {
let mut battery = battery::Battery::new().unwrap();
battery.update().unwrap();
let battery_file = fs::OpenOptions::new()
.read(true)
.write(true)
.open("./battery.data");
let battery_file = fs::OpenOptions::new().read(true).open("./battery.data");
let mut data: Data;
let mut meow = battery_file?;
let mut buf: Vec<u8> = Vec::new();
meow.read_to_end(&mut buf)?;
match battery_file {
Ok(mut file) => {
let mut buf: Vec<u8> = Vec::new();
file.read_to_end(&mut buf)?;
let meow_data = rkyv::access::<ArchivedData, rancor::Error>(&buf[..]).unwrap();
data = deserialize::<Data, rancor::Error>(meow_data).unwrap();
}
Err(err) => {
let battery_file = fs::OpenOptions::new()
.read(true)
.create(true)
.open("./battery.data");
let new_data = Data::new(battery.as_data().0);
let raw_data = rkyv::to_bytes::<rancor::Error>(&new_data).unwrap();
battery_file?.write_all(&raw_data)?;
data = new_data;
}
}
let battery_file = fs::OpenOptions::new()
.write(true)
.open("./battery.data")
.unwrap();
loop {
battery.update().unwrap();
let timestamp: u64 = SystemTime::now()
@@ -39,6 +55,9 @@ fn main() -> Result<(), Box<dyn Error>> {
battery: batt_data.1,
timestamp,
};
data.data_chunks.push(new_chunk);
let raw_data = rkyv::to_bytes::<rancor::Error>(&data).unwrap();
battery_file.try_clone()?.write_all(&raw_data)?;
sleep(Duration::from_secs(3));
}