@@ -14,7 +14,7 @@ use nrf52840_hal::gpio::{Floating, Input, Pin};
14
14
15
15
struct State {
16
16
input_pin : Pin < Input < Floating > > ,
17
- pull_pin : Option < Pin < Input < Floating > > > ,
17
+ puller_pin : Option < Pin < Input < Floating > > > ,
18
18
}
19
19
20
20
#[ defmt_test:: tests]
@@ -31,33 +31,57 @@ mod tests {
31
31
let port0 = p0:: Parts :: new ( p. P0 ) ;
32
32
33
33
let input_pin = port0. p0_28 . into_floating_input ( ) . degrade ( ) ;
34
- let pull_pin = Some ( port0. p0_29 . into_floating_input ( ) . degrade ( ) ) ;
34
+ let puller_pin = Some ( port0. p0_29 . into_floating_input ( ) . degrade ( ) ) ;
35
35
36
36
State {
37
37
input_pin,
38
- pull_pin ,
38
+ puller_pin ,
39
39
}
40
40
}
41
41
42
42
#[ test]
43
43
fn pulldown_is_low ( state : & mut State ) {
44
- let pull_pin = unwrap ! ( state. pull_pin . take( ) ) ;
44
+ let puller_pin = unwrap ! ( state. puller_pin . take( ) ) ;
45
45
46
- let pulldown_pin = pull_pin. into_pulldown_input ( ) ;
46
+ let pulldown_pin = puller_pin. into_pulldown_input ( ) ;
47
+ // GPIO re-configuration is not instantaneous so a delay is needed
48
+ asm:: delay ( 100 ) ;
49
+ assert ! ( pulldown_pin. is_low( ) . unwrap( ) ) ;
50
+
51
+ state. puller_pin = Some ( pulldown_pin. into_floating_input ( ) ) ;
52
+ }
53
+
54
+ #[ test]
55
+ fn pulldown_drives_low ( state : & mut State ) {
56
+ let puller_pin = unwrap ! ( state. puller_pin. take( ) ) ;
57
+
58
+ let pulldown_pin = puller_pin. into_pulldown_input ( ) ;
47
59
assert ! ( state. input_pin. is_low( ) . unwrap( ) ) ;
48
60
49
- state. pull_pin = Some ( pulldown_pin. into_floating_input ( ) ) ;
61
+ state. puller_pin = Some ( pulldown_pin. into_floating_input ( ) ) ;
50
62
}
51
63
52
64
#[ test]
53
65
fn pullup_is_high ( state : & mut State ) {
54
- let pull_pin = unwrap ! ( state. pull_pin. take( ) ) ;
66
+ let puller_pin = unwrap ! ( state. puller_pin. take( ) ) ;
67
+
68
+ let pullup_pin = puller_pin. into_pullup_input ( ) ;
69
+ // GPIO re-configuration is not instantaneous so a delay is needed
70
+ asm:: delay ( 100 ) ;
71
+ assert ! ( pullup_pin. is_high( ) . unwrap( ) ) ;
72
+
73
+ state. puller_pin = Some ( pullup_pin. into_floating_input ( ) ) ;
74
+ }
75
+
76
+ #[ test]
77
+ fn pullup_drives_high ( state : & mut State ) {
78
+ let puller_pin = unwrap ! ( state. puller_pin. take( ) ) ;
55
79
56
- let pullup_pin = pull_pin . into_pullup_input ( ) ;
80
+ let pullup_pin = puller_pin . into_pullup_input ( ) ;
57
81
// GPIO re-configuration is not instantaneous so a delay is needed
58
82
asm:: delay ( 100 ) ;
59
83
assert ! ( state. input_pin. is_high( ) . unwrap( ) ) ;
60
84
61
- state. pull_pin = Some ( pullup_pin. into_floating_input ( ) ) ;
85
+ state. puller_pin = Some ( pullup_pin. into_floating_input ( ) ) ;
62
86
}
63
87
}
0 commit comments