From 3c67c0a5121454277f52a60368d713bfc7547cf7 Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Wed, 7 Aug 2002 07:22:44 +0000 Subject: Added button_get_w_tmo() git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1576 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/button.c | 18 ++++++++++++++++++ firmware/drivers/button.h | 1 + 2 files changed, 19 insertions(+) (limited to 'firmware') diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c index 878f041c78..d709b012de 100644 --- a/firmware/drivers/button.c +++ b/firmware/drivers/button.c @@ -149,6 +149,24 @@ int button_get(bool block) return BUTTON_NONE; } +int button_get_w_tmo(int ticks) +{ + struct event ev; + unsigned int timeout = current_tick + ticks; + + while (TIME_BEFORE( current_tick, timeout )) + { + if(!queue_empty(&button_queue)) + { + queue_wait(&button_queue, &ev); + return ev.id; + } + yield(); + } + + return BUTTON_NONE; +} + int button_set_repeat(int newmask) { int oldmask = repeat_mask; diff --git a/firmware/drivers/button.h b/firmware/drivers/button.h index 22d648caf6..035fedd739 100644 --- a/firmware/drivers/button.h +++ b/firmware/drivers/button.h @@ -26,6 +26,7 @@ extern struct event_queue button_queue; void button_init (void); int button_get (bool block); +int button_get_w_tmo(int ticks); int button_set_repeat(int newmask); int button_set_release(int newmask); -- cgit v1.2.3