lib8: drop custom RGB8 struct for rgb crate

This commit is contained in:
2024-10-30 20:48:00 +01:00
parent b7995423d7
commit 1668db2c85
6 changed files with 54 additions and 75 deletions

View File

@ -1,7 +1,24 @@
use rgb::RGB8;
pub trait AsMilliwatts {
fn as_milliwatts(&self) -> u32;
}
impl AsMilliwatts for RGB8 {
fn as_milliwatts(&self) -> u32 {
const RED_MW : u32 = 16 * 5; //< 16mA @ 5v = 80mW
const GREEN_MW : u32 = 11 * 5; //< 11mA @ 5v = 55mW
const BLUE_MW : u32 = 15 * 5; //< 15mA @ 5v = 75mW
const DARK_MW : u32 = 1 * 5; //< 1mA @ 5v = 5mW
let red = (self.r as u32 * RED_MW).wrapping_shr(8);
let green = (self.g as u32 * GREEN_MW).wrapping_shr(8);
let blue = (self.b as u32 * BLUE_MW).wrapping_shr(8);
return red + green + blue + DARK_MW;
}
}
pub fn brightness_for_mw(total_mw : u32, target : u8, max_power: u32) -> u8 {
let target32 = target as u32;
let requested_mw = (total_mw * target32) / 256;