@@ -269,6 +269,13 @@ unsafe fn fan_set(ec: &mut Ec<Box<dyn Access>>, index: u8, duty: u8) -> Result<(
269
269
ec. fan_set ( index, duty)
270
270
}
271
271
272
+ unsafe fn fan_tach ( ec : & mut Ec < Box < dyn Access > > , index : u8 ) -> Result < ( ) , Error > {
273
+ let tach = ec. fan_tach ( index) ?;
274
+ println ! ( "{}" , tach) ;
275
+
276
+ Ok ( ( ) )
277
+ }
278
+
272
279
unsafe fn keymap_get ( ec : & mut Ec < Box < dyn Access > > , layer : u8 , output : u8 , input : u8 ) -> Result < ( ) , Error > {
273
280
let value = ec. keymap_get ( layer, output, input) ?;
274
281
println ! ( "{:04X}" , value) ;
@@ -321,6 +328,12 @@ fn main() {
321
328
. value_parser ( clap:: value_parser!( u8 ) )
322
329
)
323
330
)
331
+ . subcommand ( SubCommand :: with_name ( "fan_tach" )
332
+ . arg ( Arg :: with_name ( "index" )
333
+ . value_parser ( clap:: value_parser!( u8 ) )
334
+ . required ( true )
335
+ )
336
+ )
324
337
. subcommand ( SubCommand :: with_name ( "flash" )
325
338
. arg ( Arg :: with_name ( "path" )
326
339
. required ( true )
@@ -423,7 +436,9 @@ fn main() {
423
436
// System76 launch_2
424
437
( 0x3384 , 0x0006 , 1 ) |
425
438
// System76 launch_heavy_1
426
- ( 0x3384 , 0x0007 , 1 ) => {
439
+ ( 0x3384 , 0x0007 , 1 ) |
440
+ // System76 thelio_io_2
441
+ ( 0x3384 , 0x000B , 1 ) => {
427
442
let device = info. open_device ( & api) ?;
428
443
let access = AccessHid :: new ( device, 10 , 100 ) ?;
429
444
return Ok ( Ec :: new ( access) ?. into_dyn ( ) ) ;
@@ -454,17 +469,17 @@ fn main() {
454
469
} ,
455
470
} ,
456
471
Some ( ( "fan" , sub_m) ) => {
457
- let index = sub_m. value_of ( "index" ) . unwrap ( ) . parse :: < u8 > ( ) . unwrap ( ) ;
458
- let duty_opt = sub_m. value_of ( "duty" ) . map ( |x| x . parse :: < u8 > ( ) . unwrap ( ) ) ;
472
+ let index = sub_m. get_one :: < u8 > ( "index" ) . unwrap ( ) ;
473
+ let duty_opt = sub_m. get_one :: < u8 > ( "duty" ) ;
459
474
match duty_opt {
460
- Some ( duty) => match unsafe { fan_set ( & mut ec, index, duty) } {
475
+ Some ( duty) => match unsafe { fan_set ( & mut ec, * index, * duty) } {
461
476
Ok ( ( ) ) => ( ) ,
462
477
Err ( err) => {
463
478
eprintln ! ( "failed to set fan {} to {}: {:X?}" , index, duty, err) ;
464
479
process:: exit ( 1 ) ;
465
480
} ,
466
481
} ,
467
- None => match unsafe { fan_get ( & mut ec, index) } {
482
+ None => match unsafe { fan_get ( & mut ec, * index) } {
468
483
Ok ( ( ) ) => ( ) ,
469
484
Err ( err) => {
470
485
eprintln ! ( "failed to get fan {}: {:X?}" , index, err) ;
@@ -473,6 +488,16 @@ fn main() {
473
488
} ,
474
489
}
475
490
} ,
491
+ Some ( ( "fan_tach" , sub_m) ) => {
492
+ let index = sub_m. get_one :: < u8 > ( "index" ) . unwrap ( ) ;
493
+ match unsafe { fan_tach ( & mut ec, * index) } {
494
+ Ok ( ( ) ) => ( ) ,
495
+ Err ( err) => {
496
+ eprintln ! ( "failed to get fan {} tachometer: {:X?}" , index, err) ;
497
+ process:: exit ( 1 ) ;
498
+ } ,
499
+ }
500
+ } ,
476
501
Some ( ( "flash" , sub_m) ) => {
477
502
let path = sub_m. value_of ( "path" ) . unwrap ( ) ;
478
503
match unsafe { flash ( & mut ec, path, SpiTarget :: Main ) } {
@@ -501,12 +526,12 @@ fn main() {
501
526
} ,
502
527
} ,
503
528
Some ( ( "keymap" , sub_m) ) => {
504
- let layer = sub_m. value_of ( "layer" ) . unwrap ( ) . parse :: < u8 > ( ) . unwrap ( ) ;
505
- let output = sub_m. value_of ( "output" ) . unwrap ( ) . parse :: < u8 > ( ) . unwrap ( ) ;
506
- let input = sub_m. value_of ( "input" ) . unwrap ( ) . parse :: < u8 > ( ) . unwrap ( ) ;
529
+ let layer = sub_m. get_one :: < u8 > ( "layer" ) . unwrap ( ) ;
530
+ let output = sub_m. get_one :: < u8 > ( "output" ) . unwrap ( ) ;
531
+ let input = sub_m. get_one :: < u8 > ( "input" ) . unwrap ( ) ;
507
532
match sub_m. value_of ( "value" ) {
508
533
Some ( value_str) => match u16:: from_str_radix ( value_str. trim_start_matches ( "0x" ) , 16 ) {
509
- Ok ( value) => match unsafe { keymap_set ( & mut ec, layer, output, input, value) } {
534
+ Ok ( value) => match unsafe { keymap_set ( & mut ec, * layer, * output, * input, value) } {
510
535
Ok ( ( ) ) => ( ) ,
511
536
Err ( err) => {
512
537
eprintln ! ( "failed to set keymap {}, {}, {} to {}: {:X?}" , layer, output, input, value, err) ;
@@ -518,7 +543,7 @@ fn main() {
518
543
process:: exit ( 1 ) ;
519
544
}
520
545
} ,
521
- None => match unsafe { keymap_get ( & mut ec, layer, output, input) } {
546
+ None => match unsafe { keymap_get ( & mut ec, * layer, * output, * input) } {
522
547
Ok ( ( ) ) => ( ) ,
523
548
Err ( err) => {
524
549
eprintln ! ( "failed to get keymap {}, {}, {}: {:X?}" , layer, output, input, err) ;
@@ -528,19 +553,19 @@ fn main() {
528
553
}
529
554
} ,
530
555
Some ( ( "led_color" , sub_m) ) => {
531
- let index = sub_m. value_of ( "index" ) . unwrap ( ) . parse :: < u8 > ( ) . unwrap ( ) ;
556
+ let index = sub_m. get_one :: < u8 > ( "index" ) . unwrap ( ) ;
532
557
let value = sub_m. value_of ( "value" ) ;
533
558
if let Some ( value) = value {
534
559
let ( r, g, b) = parse_color ( value) . unwrap ( ) ;
535
- match unsafe { ec. led_set_color ( index, r, g, b) } {
560
+ match unsafe { ec. led_set_color ( * index, r, g, b) } {
536
561
Ok ( ( ) ) => ( ) ,
537
562
Err ( err) => {
538
563
eprintln ! ( "failed to set color {}: {:X?}" , value, err) ;
539
564
process:: exit ( 1 ) ;
540
565
} ,
541
566
}
542
567
} else {
543
- match unsafe { ec. led_get_color ( index) } {
568
+ match unsafe { ec. led_get_color ( * index) } {
544
569
Ok ( ( r, g, b) ) => println ! ( "{:02x}{:02x}{:02x}" , r, g, b) ,
545
570
Err ( err) => {
546
571
eprintln ! ( "failed to get color: {:X?}" , err) ;
@@ -550,18 +575,18 @@ fn main() {
550
575
}
551
576
} ,
552
577
Some ( ( "led_value" , sub_m) ) => {
553
- let index = sub_m. value_of ( "index" ) . unwrap ( ) . parse :: < u8 > ( ) . unwrap ( ) ;
554
- let value = sub_m. value_of ( "value" ) . map ( |x| x . parse :: < u8 > ( ) . unwrap ( ) ) ;
578
+ let index = sub_m. get_one :: < u8 > ( "index" ) . unwrap ( ) ;
579
+ let value = sub_m. get_one :: < u8 > ( "value" ) ;
555
580
if let Some ( value) = value {
556
- match unsafe { ec. led_set_value ( index, value) } {
581
+ match unsafe { ec. led_set_value ( * index, * value) } {
557
582
Ok ( ( ) ) => ( ) ,
558
583
Err ( err) => {
559
584
eprintln ! ( "failed to set value {}: {:X?}" , value, err) ;
560
585
process:: exit ( 1 ) ;
561
586
} ,
562
587
}
563
588
} else {
564
- match unsafe { ec. led_get_value ( index) } {
589
+ match unsafe { ec. led_get_value ( * index) } {
565
590
Ok ( ( value, max) ) => {
566
591
println ! ( "value: {}" , value) ;
567
592
println ! ( "max: {}" , max) ;
@@ -574,19 +599,19 @@ fn main() {
574
599
}
575
600
} ,
576
601
Some ( ( "led_mode" , sub_m) ) => {
577
- let layer = sub_m. value_of ( "layer" ) . unwrap ( ) . parse :: < u8 > ( ) . unwrap ( ) ;
578
- let mode = sub_m. value_of ( "mode" ) . map ( |x| x . parse :: < u8 > ( ) . unwrap ( ) ) ;
579
- let speed = sub_m. value_of ( "speed" ) . map ( |x| x . parse :: < u8 > ( ) . unwrap ( ) ) ;
602
+ let layer = sub_m. get_one :: < u8 > ( "layer" ) . unwrap ( ) ;
603
+ let mode = sub_m. get_one :: < u8 > ( "mode" ) ;
604
+ let speed = sub_m. get_one :: < u8 > ( "speed" ) ;
580
605
if let ( Some ( mode) , Some ( speed) ) = ( mode, speed) {
581
- match unsafe { ec. led_set_mode ( layer, mode, speed) } {
606
+ match unsafe { ec. led_set_mode ( * layer, * mode, * speed) } {
582
607
Ok ( ( ) ) => ( ) ,
583
608
Err ( err) => {
584
609
eprintln ! ( "failed to set layer {} mode {} at speed {}: {:X?}" , layer, mode, speed, err) ;
585
610
process:: exit ( 1 ) ;
586
611
} ,
587
612
}
588
613
} else {
589
- match unsafe { ec. led_get_mode ( layer) } {
614
+ match unsafe { ec. led_get_mode ( * layer) } {
590
615
Ok ( ( mode, speed) ) => {
591
616
println ! ( "mode: {}" , mode) ;
592
617
println ! ( "speed: {}" , speed) ;
0 commit comments