rustphone/src/strf.rs

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
}