Skip to content

Commit 6341c38

Browse files
committed
mcp23009e: Add D-PAD button tests in polling and interrupt modes.
1 parent c4121a1 commit 6341c38

1 file changed

Lines changed: 201 additions & 4 deletions

File tree

tests/scenarios/mcp23009e.yaml

Lines changed: 201 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,206 @@ tests:
6363
- name: "D-PAD buttons state"
6464
action: manual
6565
display:
66-
- method: get_gpio
67-
label: "GPIO register"
68-
unit: ""
69-
prompt: "La valeur du registre GPIO est-elle cohérente (boutons D-PAD non pressés) ?"
66+
- method: get_level
67+
args: [7]
68+
label: "UP (GP7)"
69+
unit: "(1=relâché, 0=appuyé)"
70+
- method: get_level
71+
args: [5]
72+
label: "DOWN (GP5)"
73+
unit: "(1=relâché, 0=appuyé)"
74+
- method: get_level
75+
args: [6]
76+
label: "LEFT (GP6)"
77+
unit: "(1=relâché, 0=appuyé)"
78+
- method: get_level
79+
args: [4]
80+
label: "RIGHT (GP4)"
81+
unit: "(1=relâché, 0=appuyé)"
82+
prompt: "Tous les boutons sont-ils relâchés (valeur 1) ?"
83+
expect_true: true
84+
mode: [hardware]
85+
86+
# --- Polling tests (one per D-PAD button) ---
87+
# LED_GREEN signals when the board is ready to read the button.
88+
89+
- name: "D-PAD UP button (polling)"
90+
action: hardware_script
91+
pre_prompt: "Test polling D-PAD : appuyez sur chaque bouton quand la LED verte s'allume (5s). Commençons par UP."
92+
script: |
93+
from machine import Pin
94+
from time import sleep_ms, ticks_ms, ticks_diff
95+
led = Pin("LED_GREEN", Pin.OUT)
96+
led.on()
97+
start = ticks_ms()
98+
detected = False
99+
while ticks_diff(ticks_ms(), start) < 5000:
100+
if dev.get_level(7) == 0:
101+
detected = True
102+
break
103+
sleep_ms(50)
104+
led.off()
105+
result = detected
106+
expect_true: true
107+
mode: [hardware]
108+
109+
- name: "D-PAD DOWN button (polling)"
110+
action: hardware_script
111+
pre_prompt: "Bouton DOWN"
112+
wait: false
113+
script: |
114+
from machine import Pin
115+
from time import sleep_ms, ticks_ms, ticks_diff
116+
led = Pin("LED_GREEN", Pin.OUT)
117+
led.on()
118+
start = ticks_ms()
119+
detected = False
120+
while ticks_diff(ticks_ms(), start) < 5000:
121+
if dev.get_level(5) == 0:
122+
detected = True
123+
break
124+
sleep_ms(50)
125+
led.off()
126+
result = detected
127+
expect_true: true
128+
mode: [hardware]
129+
130+
- name: "D-PAD LEFT button (polling)"
131+
action: hardware_script
132+
pre_prompt: "Bouton LEFT"
133+
wait: false
134+
script: |
135+
from machine import Pin
136+
from time import sleep_ms, ticks_ms, ticks_diff
137+
led = Pin("LED_GREEN", Pin.OUT)
138+
led.on()
139+
start = ticks_ms()
140+
detected = False
141+
while ticks_diff(ticks_ms(), start) < 5000:
142+
if dev.get_level(6) == 0:
143+
detected = True
144+
break
145+
sleep_ms(50)
146+
led.off()
147+
result = detected
148+
expect_true: true
149+
mode: [hardware]
150+
151+
- name: "D-PAD RIGHT button (polling)"
152+
action: hardware_script
153+
pre_prompt: "Bouton RIGHT"
154+
wait: false
155+
script: |
156+
from machine import Pin
157+
from time import sleep_ms, ticks_ms, ticks_diff
158+
led = Pin("LED_GREEN", Pin.OUT)
159+
led.on()
160+
start = ticks_ms()
161+
detected = False
162+
while ticks_diff(ticks_ms(), start) < 5000:
163+
if dev.get_level(4) == 0:
164+
detected = True
165+
break
166+
sleep_ms(50)
167+
led.off()
168+
result = detected
169+
expect_true: true
170+
mode: [hardware]
171+
172+
# --- Interrupt tests (one per D-PAD button) ---
173+
# LED_GREEN signals when the board is ready; polls INTF register.
174+
175+
- name: "D-PAD UP button (interrupt)"
176+
action: hardware_script
177+
pre_prompt: "Test interrupt D-PAD : appuyez brièvement sur chaque bouton quand la LED verte s'allume (5s). Commençons par UP."
178+
script: |
179+
from machine import Pin
180+
from time import sleep_ms, ticks_ms, ticks_diff
181+
led = Pin("LED_GREEN", Pin.OUT)
182+
dev._send_enable_interrupt(7)
183+
dev.get_gpio()
184+
led.on()
185+
start = ticks_ms()
186+
detected = False
187+
while ticks_diff(ticks_ms(), start) < 5000:
188+
if dev.get_intf() & (1 << 7):
189+
detected = True
190+
dev.get_intcap()
191+
break
192+
sleep_ms(50)
193+
led.off()
194+
result = detected
195+
expect_true: true
196+
mode: [hardware]
197+
198+
- name: "D-PAD DOWN button (interrupt)"
199+
action: hardware_script
200+
pre_prompt: "Bouton DOWN"
201+
wait: false
202+
script: |
203+
from machine import Pin
204+
from time import sleep_ms, ticks_ms, ticks_diff
205+
led = Pin("LED_GREEN", Pin.OUT)
206+
dev._send_enable_interrupt(5)
207+
dev.get_gpio()
208+
led.on()
209+
start = ticks_ms()
210+
detected = False
211+
while ticks_diff(ticks_ms(), start) < 5000:
212+
if dev.get_intf() & (1 << 5):
213+
detected = True
214+
dev.get_intcap()
215+
break
216+
sleep_ms(50)
217+
led.off()
218+
result = detected
219+
expect_true: true
220+
mode: [hardware]
221+
222+
- name: "D-PAD LEFT button (interrupt)"
223+
action: hardware_script
224+
pre_prompt: "Bouton LEFT"
225+
wait: false
226+
script: |
227+
from machine import Pin
228+
from time import sleep_ms, ticks_ms, ticks_diff
229+
led = Pin("LED_GREEN", Pin.OUT)
230+
dev._send_enable_interrupt(6)
231+
dev.get_gpio()
232+
led.on()
233+
start = ticks_ms()
234+
detected = False
235+
while ticks_diff(ticks_ms(), start) < 5000:
236+
if dev.get_intf() & (1 << 6):
237+
detected = True
238+
dev.get_intcap()
239+
break
240+
sleep_ms(50)
241+
led.off()
242+
result = detected
243+
expect_true: true
244+
mode: [hardware]
245+
246+
- name: "D-PAD RIGHT button (interrupt)"
247+
action: hardware_script
248+
pre_prompt: "Bouton RIGHT"
249+
wait: false
250+
script: |
251+
from machine import Pin
252+
from time import sleep_ms, ticks_ms, ticks_diff
253+
led = Pin("LED_GREEN", Pin.OUT)
254+
dev._send_enable_interrupt(4)
255+
dev.get_gpio()
256+
led.on()
257+
start = ticks_ms()
258+
detected = False
259+
while ticks_diff(ticks_ms(), start) < 5000:
260+
if dev.get_intf() & (1 << 4):
261+
detected = True
262+
dev.get_intcap()
263+
break
264+
sleep_ms(50)
265+
led.off()
266+
result = detected
70267
expect_true: true
71268
mode: [hardware]

0 commit comments

Comments
 (0)