@@ -225,6 +225,7 @@ pub struct Cli {
225225 pub charge_current_limit : Option < ( u32 , Option < u32 > ) > ,
226226 pub charge_rate_limit : Option < ( f32 , Option < f32 > ) > ,
227227 pub get_gpio : Option < Option < String > > ,
228+ pub set_gpio : Option < ( String , String ) > ,
228229 pub fp_led_level : Option < Option < FpBrightnessArg > > ,
229230 pub fp_brightness : Option < Option < u8 > > ,
230231 pub kblight : Option < Option < u8 > > ,
@@ -317,6 +318,7 @@ pub fn parse(args: &[String]) -> Cli {
317318 // charge_current_limit
318319 // charge_rate_limit
319320 get_gpio : cli. get_gpio ,
321+ // set_gpio
320322 fp_led_level : cli. fp_led_level ,
321323 fp_brightness : cli. fp_brightness ,
322324 kblight : cli. kblight ,
@@ -1459,6 +1461,20 @@ pub fn run_with_args(args: &Cli, _allupdate: bool) -> i32 {
14591461 } else {
14601462 print_err ( ec. get_all_gpios ( ) ) ;
14611463 }
1464+ } else if let Some ( ( gpio_name, gpio_value) ) = & args. set_gpio {
1465+ if args. force {
1466+ let value = match gpio_value. as_str ( ) {
1467+ "0" => false ,
1468+ "1" => true ,
1469+ _ => {
1470+ error ! ( "GPIO value must be 0 or 1" ) ;
1471+ return 1 ;
1472+ }
1473+ } ;
1474+ print_err ( ec. set_gpio ( gpio_name, value) ) ;
1475+ } else {
1476+ error ! ( "--set-gpio is a dangerous command that can brick or burn your system. Not supported without --force" ) ;
1477+ }
14621478 } else if let Some ( maybe_led_level) = & args. fp_led_level {
14631479 print_err ( handle_fp_led_level ( & ec, * maybe_led_level) ) ;
14641480 } else if let Some ( maybe_brightness) = & args. fp_brightness {
@@ -1926,6 +1942,7 @@ Options:
19261942 --charge-current-limit [<VAL>] Get or set battery current charge limit (Percentage number as arg, e.g. '100')
19271943 --charge-rate-limit [<VAL>] Set max charge rate limit
19281944 --get-gpio <GET_GPIO> Get GPIO value by name or all, if no name provided
1945+ --set-gpio <NAME> <0|1> Set GPIO value by name (Dangerous, requires --force)
19291946 --fp-led-level [<VAL>] Get or set fingerprint LED brightness level [possible values: high, medium, low]
19301947 --fp-brightness [<VAL>]Get or set fingerprint LED brightness percentage
19311948 --kblight [<KBLIGHT>] Set keyboard backlight percentage or get, if no value provided
0 commit comments