use crate::{ShellCmdApi, CommonEnv}; use xous_ipc::String; #[derive(Debug)] pub struct Backlight { } impl<'a> ShellCmdApi<'a> for Backlight { cmd_api!(backlight); // inserts boilerplate for command API fn process(&mut self, args: String::<1024>, env: &mut CommonEnv) -> Result>, xous::Error> { use core::fmt::Write; let mut ret = String::<1024>::new(); let helpstring = "backlight [on] [off] [0-5]"; let mut tokens = args.as_str().unwrap().split(' '); if let Some(sub_cmd) = tokens.next() { // note that the secondary backlight appears brighter, so generally, we want to set it to a lower setting // to save battery power match sub_cmd { "on" => { env.com.set_backlight(255, 255).unwrap(); write!(ret, "backlight set to 100%").unwrap(); } "off" => { env.com.set_backlight(0, 0).unwrap(); write!(ret, "backlight turned off").unwrap(); } "0" => { env.com.set_backlight(0, 0).unwrap(); write!(ret, "backlight 0").unwrap(); } "1" => { env.com.set_backlight(32, 32).unwrap(); write!(ret, "backlight 1").unwrap(); } "2" => { env.com.set_backlight(96, 48).unwrap(); write!(ret, "backlight 2").unwrap(); } "3" => { env.com.set_backlight(128, 64).unwrap(); write!(ret, "backlight 3").unwrap(); } "4" => { env.com.set_backlight(196, 96).unwrap(); write!(ret, "backlight 4").unwrap(); } "5" => { env.com.set_backlight(255, 128).unwrap(); write!(ret, "backlight 5").unwrap(); } _ => { write!(ret, "{}", helpstring).unwrap(); } } } else { write!(ret, "{}", helpstring).unwrap(); } Ok(Some(ret)) } }