@@ -3,24 +3,28 @@ use std::time::Duration;
3
3
4
4
use embedded_hal:: digital:: { InputPin , OutputPin , PinState } ;
5
5
use embedded_hal_async:: digital:: Wait ;
6
- use gpio_cdev :: { Chip , LineRequestFlags } ;
6
+ use gpiocdev :: Request ;
7
7
use linux_embedded_hal:: CdevPin ;
8
8
use tokio:: time:: { sleep, timeout} ;
9
9
10
10
// This example assumes that input/output pins are shorted.
11
+ const CHIP : & str = "/dev/gpiochip0" ;
11
12
const INPUT_LINE : u32 = 4 ;
12
13
const OUTPUT_LINE : u32 = 17 ;
13
14
14
15
#[ tokio:: main]
15
16
async fn main ( ) -> Result < ( ) , Box < dyn Error > > {
16
- let mut chip = Chip :: new ( "/dev/gpiochip0" ) ?;
17
- let input = chip. get_line ( INPUT_LINE ) ?;
18
- let output = chip. get_line ( OUTPUT_LINE ) ?;
19
-
20
- let mut input_pin =
21
- CdevPin :: new ( input. request ( LineRequestFlags :: INPUT , 0 , "" ) ?) ?. into_input_pin ( ) ?;
22
- let mut output_pin = CdevPin :: new ( output. request ( LineRequestFlags :: OUTPUT , 0 , "" ) ?) ?
23
- . into_output_pin ( PinState :: Low ) ?;
17
+ let input = Request :: builder ( )
18
+ . on_chip ( CHIP )
19
+ . with_line ( INPUT_LINE )
20
+ . request ( ) ?;
21
+ let output = Request :: builder ( )
22
+ . on_chip ( CHIP )
23
+ . with_line ( OUTPUT_LINE )
24
+ . request ( ) ?;
25
+
26
+ let mut input_pin = CdevPin :: new ( input) ?. into_input_pin ( ) ?;
27
+ let mut output_pin = CdevPin :: new ( output) ?. into_output_pin ( PinState :: Low ) ?;
24
28
25
29
timeout ( Duration :: from_secs ( 10 ) , async move {
26
30
let set_output = tokio:: spawn ( async move {
@@ -30,7 +34,6 @@ async fn main() -> Result<(), Box<dyn Error>> {
30
34
} ) ;
31
35
32
36
println ! ( "Waiting for input to go high." ) ;
33
-
34
37
input_pin. wait_for_high ( ) . await ?;
35
38
36
39
assert ! ( input_pin. is_high( ) ?) ;
0 commit comments