mreow
This commit is contained in:
@@ -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,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
39
src/main.rs
39
src/main.rs
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user