diff options
Diffstat (limited to 'firmware/drivers/button.c')
-rw-r--r-- | firmware/drivers/button.c | 18 |
1 files changed, 18 insertions, 0 deletions
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) | |||
149 | return BUTTON_NONE; | 149 | return BUTTON_NONE; |
150 | } | 150 | } |
151 | 151 | ||
152 | int button_get_w_tmo(int ticks) | ||
153 | { | ||
154 | struct event ev; | ||
155 | unsigned int timeout = current_tick + ticks; | ||
156 | |||
157 | while (TIME_BEFORE( current_tick, timeout )) | ||
158 | { | ||
159 | if(!queue_empty(&button_queue)) | ||
160 | { | ||
161 | queue_wait(&button_queue, &ev); | ||
162 | return ev.id; | ||
163 | } | ||
164 | yield(); | ||
165 | } | ||
166 | |||
167 | return BUTTON_NONE; | ||
168 | } | ||
169 | |||
152 | int button_set_repeat(int newmask) | 170 | int button_set_repeat(int newmask) |
153 | { | 171 | { |
154 | int oldmask = repeat_mask; | 172 | int oldmask = repeat_mask; |