summaryrefslogtreecommitdiff
path: root/firmware/drivers/button.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/button.c')
-rw-r--r--firmware/drivers/button.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c
index 847a0ba82d..c0cd046db6 100644
--- a/firmware/drivers/button.c
+++ b/firmware/drivers/button.c
@@ -328,4 +328,38 @@ static int button_read(void)
328 return btn; 328 return btn;
329} 329}
330 330
331#elif HAVE_NEO_KEYPAD
332static bool mStation = false;
333void button_init(void)
334{
335 /* set port pins as input */
336 PAIOR &= ~0x4000; //PA14 for stop button
337
338 queue_init(&button_queue);
339 tick_add_task(button_tick);
340
341 last_keypress = current_tick;
342}
343int button_read(void)
344{
345 int btn=BUTTON_NONE;
346
347 btn|=((~PCDR)&0xFF);
348
349 /* mStation does not have a stop button and this floods the button queue
350 with stops if used on a mStation */
351 if (!mStation)
352 btn|=((~(PADR>>6))&0x100);
353
354 return btn;
355}
356
357/* This function adds a button press event to the button queue, and this
358 really isn't anything Neo-specific but might be subject for adding to
359 the generic button driver */
360int button_add(unsigned int button)
361{
362 queue_post(&button_queue,button,NULL);
363 return 1;
364}
331#endif 365#endif