From a754dd84b82c9aa92e7b94d0154e67500607a6a7 Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Wed, 21 Jul 2004 08:02:23 +0000 Subject: Added raw button reading functionality git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4907 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugin.c | 7 ++++++- apps/plugin.h | 2 ++ firmware/drivers/button.c | 10 ++++++++++ firmware/export/button.h | 2 ++ uisimulator/win32/button.c | 13 ++++++++++++- uisimulator/x11/button-x11.c | 23 +++++++++-------------- 6 files changed, 41 insertions(+), 16 deletions(-) diff --git a/apps/plugin.c b/apps/plugin.c index 251d433d76..3cdc56ceb4 100644 --- a/apps/plugin.c +++ b/apps/plugin.c @@ -253,6 +253,8 @@ static const struct plugin_api rockbox_api = { #endif settings_parseline, strcmp, + button_status, + button_clear_queue, }; int plugin_load(char* plugin, void* parameter) @@ -332,7 +334,10 @@ int plugin_load(char* plugin, void* parameter) plugin_loaded = true; rc = plugin_start((struct plugin_api*) &rockbox_api, parameter); - /* explicitly casting the pointer here to avoid touching every plugin. */ + /* explicitly casting the pointer here to avoid touching every plugin. */ + + button_clear_queue(); + plugin_loaded = false; switch (rc) { diff --git a/apps/plugin.h b/apps/plugin.h index c2243a59fb..b93d406498 100644 --- a/apps/plugin.h +++ b/apps/plugin.h @@ -289,6 +289,8 @@ struct plugin_api { #endif bool (*settings_parseline)(char* line, char** name, char** value); int (*strcmp)(const char *, const char *); + int (*button_status)(void); + void (*button_clear_queue)(void); }; /* defined by the plugin loader (plugin.c) */ diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c index 9f19bc0945..7e1ab47952 100644 --- a/firmware/drivers/button.c +++ b/firmware/drivers/button.c @@ -421,3 +421,13 @@ int button_add(unsigned int button) return 1; } #endif + +int button_status(void) +{ + return button_read(); +} + +void button_clear_queue(void) +{ + queue_empty(&button_queue); +} diff --git a/firmware/export/button.h b/firmware/export/button.h index d1d5ddea5c..f174262de2 100644 --- a/firmware/export/button.h +++ b/firmware/export/button.h @@ -28,6 +28,8 @@ extern struct event_queue button_queue; void button_init (void); int button_get (bool block); int button_get_w_tmo(int ticks); +int button_status(void); +void button_clear_queue(void); #ifdef HAVE_RECORDER_KEYPAD void button_set_flip(bool flip); /* turn 180 degrees */ #endif diff --git a/uisimulator/win32/button.c b/uisimulator/win32/button.c index 4532727200..0af6ff40a6 100644 --- a/uisimulator/win32/button.c +++ b/uisimulator/win32/button.c @@ -36,13 +36,14 @@ struct event_queue button_queue; +static int btn = 0; /* Hopefully keeps track of currently pressed keys... */ + void button_event(int key, bool pressed) { bool post = false; int new_btn = 0; int diff = 0; static int count = 0; - static int btn = 0; /* Hopefully keeps track of currently pressed keys... */ static int lastbtn; static int repeat_speed = REPEAT_INTERVAL_START; static int repeat_count = 0; @@ -180,6 +181,11 @@ void button_event(int key, bool pressed) lastbtn = btn & ~(BUTTON_REL | BUTTON_REPEAT); } +int button_status(void) +{ + return btn; +} + void button_init(void) { } @@ -203,3 +209,8 @@ int button_get_w_tmo(int ticks) queue_wait_w_tmo(&button_queue, &ev, ticks); return (ev.id != SYS_TIMEOUT)? ev.id: BUTTON_NONE; } + +void button_clear_queue(void) +{ + queue_empty(&button_queue); +} diff --git a/uisimulator/x11/button-x11.c b/uisimulator/x11/button-x11.c index 1b2c19232f..6567c2a9bc 100644 --- a/uisimulator/x11/button-x11.c +++ b/uisimulator/x11/button-x11.c @@ -33,20 +33,6 @@ void button_init() { } -int button_set_repeat(int newmask) -{ - int oldmask = repeat_mask; - repeat_mask = newmask; - return oldmask; -} - -int button_set_release(int newmask) -{ - int oldmask = release_mask; - release_mask = newmask; - return oldmask; -} - /* * Translate X keys to Recorder keys * @@ -214,3 +200,12 @@ int button_get(bool block) return bits; } + +int button_status(void) +{ + return get_raw_button(); +} + +void button_clear_queue(void) +{ +} -- cgit