summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2004-07-21 08:02:23 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2004-07-21 08:02:23 +0000
commita754dd84b82c9aa92e7b94d0154e67500607a6a7 (patch)
treeea8f4865df30e90bdddebbe61f37aacbf19f0058
parent69697aefe84f3e576daad595259a8dd16b00ea99 (diff)
downloadrockbox-a754dd84b82c9aa92e7b94d0154e67500607a6a7.tar.gz
rockbox-a754dd84b82c9aa92e7b94d0154e67500607a6a7.zip
Added raw button reading functionality
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4907 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/plugin.c7
-rw-r--r--apps/plugin.h2
-rw-r--r--firmware/drivers/button.c10
-rw-r--r--firmware/export/button.h2
-rw-r--r--uisimulator/win32/button.c13
-rw-r--r--uisimulator/x11/button-x11.c23
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)
+{
+}