58 lines
1.2 KiB
Rust
58 lines
1.2 KiB
Rust
use tz::DateTime;
|
|
|
|
use crate::energy::EnergyStatus;
|
|
|
|
static WEEK_DAYS: [[u8; 3]; 7] = [
|
|
*b"Sun", *b"Mon", *b"Tue", *b"Wed", *b"Thu", *b"Fri", *b"Sat",
|
|
];
|
|
|
|
/// hh:mm
|
|
pub fn fmt_time_hm(hour: u8, minute: u8) -> [u8; 5] {
|
|
let mut buf = *b"00:00";
|
|
buf[0] += hour / 10;
|
|
buf[1] += hour % 10;
|
|
buf[3] += minute / 10;
|
|
buf[4] += minute % 10;
|
|
buf
|
|
}
|
|
|
|
/// yyyy-mm-dd Www
|
|
pub fn fmt_time_ymdw(year: i32, month: u8, day: u8, week_day: u8) -> [u8; 14] {
|
|
let mut buf = *b"0000-00-00 \x00\x00\x00";
|
|
|
|
let mut year = year as u16 % 10_000;
|
|
buf[3] += (year % 10) as u8;
|
|
year /= 10;
|
|
buf[2] += (year % 10) as u8;
|
|
year /= 10;
|
|
buf[1] += (year % 10) as u8;
|
|
year /= 10;
|
|
buf[0] += year as u8;
|
|
|
|
buf[5] += month / 10;
|
|
buf[6] += month % 10;
|
|
|
|
buf[8] += day / 10;
|
|
buf[9] += day % 10;
|
|
|
|
buf[11..14].copy_from_slice(&WEEK_DAYS[week_day as usize]);
|
|
|
|
buf
|
|
}
|
|
|
|
pub fn fmt_energy(energy_status: &EnergyStatus) -> [u8; 4] {
|
|
let mut buf = *b" 0 ";
|
|
|
|
buf[3] |= energy_status.charging as u8 * b'+';
|
|
|
|
let mut battery = energy_status.battery;
|
|
buf[2] += energy_status.battery % 10;
|
|
battery /= 10;
|
|
buf[1] |= (battery > 9) as u8 * (b'0' + battery % 10);
|
|
battery /= 10;
|
|
let d = battery % 10;
|
|
buf[0] |= d * (b'0' + d);
|
|
|
|
buf
|
|
}
|