mreow
This commit is contained in:
@@ -23,3 +23,12 @@ pub struct BatteryMutable {
|
|||||||
pub struct BatteryStatic {
|
pub struct BatteryStatic {
|
||||||
pub total_capacity: i64,
|
pub total_capacity: i64,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Data {
|
||||||
|
pub fn new(battery_static: BatteryStatic) -> Data {
|
||||||
|
Data {
|
||||||
|
data_chunks: Vec::new(),
|
||||||
|
data_static: battery_static,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
37
src/main.rs
37
src/main.rs
@@ -1,14 +1,14 @@
|
|||||||
use std::{
|
use std::{
|
||||||
error::Error,
|
error::Error,
|
||||||
fs,
|
fs,
|
||||||
io::Read,
|
io::{Read, Write},
|
||||||
thread::sleep,
|
thread::sleep,
|
||||||
time::{Duration, SystemTime},
|
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 battery;
|
||||||
mod data;
|
mod data;
|
||||||
@@ -16,17 +16,33 @@ mod data;
|
|||||||
fn main() -> Result<(), Box<dyn Error>> {
|
fn main() -> Result<(), Box<dyn Error>> {
|
||||||
let mut battery = battery::Battery::new().unwrap();
|
let mut battery = battery::Battery::new().unwrap();
|
||||||
battery.update().unwrap();
|
battery.update().unwrap();
|
||||||
let battery_file = fs::OpenOptions::new()
|
let battery_file = fs::OpenOptions::new().read(true).open("./battery.data");
|
||||||
.read(true)
|
|
||||||
.write(true)
|
|
||||||
.open("./battery.data");
|
|
||||||
|
|
||||||
let mut data: Data;
|
let mut data: Data;
|
||||||
|
|
||||||
let mut meow = battery_file?;
|
match battery_file {
|
||||||
|
Ok(mut file) => {
|
||||||
let mut buf: Vec<u8> = Vec::new();
|
let mut buf: Vec<u8> = Vec::new();
|
||||||
meow.read_to_end(&mut buf)?;
|
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 {
|
loop {
|
||||||
battery.update().unwrap();
|
battery.update().unwrap();
|
||||||
let timestamp: u64 = SystemTime::now()
|
let timestamp: u64 = SystemTime::now()
|
||||||
@@ -39,6 +55,9 @@ fn main() -> Result<(), Box<dyn Error>> {
|
|||||||
battery: batt_data.1,
|
battery: batt_data.1,
|
||||||
timestamp,
|
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));
|
sleep(Duration::from_secs(3));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user