diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/export/button.h | 19 | ||||
-rw-r--r-- | firmware/export/config-cowond2.h | 1 | ||||
-rw-r--r-- | firmware/target/arm/tcc780x/cowond2/button-target.h | 23 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c | 32 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/mrobe-500/button-target.h | 20 |
5 files changed, 85 insertions, 10 deletions
diff --git a/firmware/export/button.h b/firmware/export/button.h index 95da7adc42..6decf6ec69 100644 --- a/firmware/export/button.h +++ b/firmware/export/button.h | |||
@@ -64,4 +64,23 @@ int button_apply_acceleration(const unsigned int data); | |||
64 | #define BUTTON_REPEAT 0x04000000 | 64 | #define BUTTON_REPEAT 0x04000000 |
65 | #define BUTTON_TOUCHPAD 0x08000000 | 65 | #define BUTTON_TOUCHPAD 0x08000000 |
66 | 66 | ||
67 | #ifdef HAVE_TOUCHPAD | ||
68 | #if !defined(BUTTON_TOPLEFT) || !defined(BUTTON_TOPMIDDLE) \ | ||
69 | || !defined(BUTTON_TOPRIGHT) || !defined(BUTTON_MIDLEFT) \ | ||
70 | || !defined(BUTTON_CENTER) || !defined(BUTTON_MIDRIGHT) \ | ||
71 | || !defined(BUTTON_BOTTOMLEFT) || !defined(BUTTON_BOTTOMMIDDLE) \ | ||
72 | || !defined(BUTTON_BOTTOMRIGHT) | ||
73 | #error Touchpad button mode BUTTON_* defines not set up correctly | ||
74 | #endif | ||
75 | enum touchpad_mode { | ||
76 | TOUCHPAD_POINT = 0, /* touchpad returns pixel co-ords */ | ||
77 | TOUCHPAD_BUTTON, /* touchpad returns BUTTON_* area codes | ||
78 | actual pixel value will still be accessable | ||
79 | from button_get_data */ | ||
80 | }; | ||
81 | /* maybe define the number of buttons in button-target.h ? */ | ||
82 | void touchpad_set_mode(enum touchpad_mode mode); | ||
83 | enum touchpad_mode touchpad_get_mode(void); | ||
84 | #endif | ||
85 | |||
67 | #endif /* _BUTTON_H_ */ | 86 | #endif /* _BUTTON_H_ */ |
diff --git a/firmware/export/config-cowond2.h b/firmware/export/config-cowond2.h index 9380de57ef..d3b23b225d 100644 --- a/firmware/export/config-cowond2.h +++ b/firmware/export/config-cowond2.h | |||
@@ -56,6 +56,7 @@ | |||
56 | 56 | ||
57 | /* define this to indicate your device's keypad */ | 57 | /* define this to indicate your device's keypad */ |
58 | #define CONFIG_KEYPAD COWOND2_PAD | 58 | #define CONFIG_KEYPAD COWOND2_PAD |
59 | #define HAVE_TOUCHPAD | ||
59 | 60 | ||
60 | /* define this if you have a real-time clock */ | 61 | /* define this if you have a real-time clock */ |
61 | //#define CONFIG_RTC RTC_TCC780X | 62 | //#define CONFIG_RTC RTC_TCC780X |
diff --git a/firmware/target/arm/tcc780x/cowond2/button-target.h b/firmware/target/arm/tcc780x/cowond2/button-target.h index 3ccf70cffd..573ab03a11 100644 --- a/firmware/target/arm/tcc780x/cowond2/button-target.h +++ b/firmware/target/arm/tcc780x/cowond2/button-target.h | |||
@@ -35,14 +35,25 @@ int button_read_device(void); | |||
35 | #define BUTTON_MINUS 0x00000004 | 35 | #define BUTTON_MINUS 0x00000004 |
36 | #define BUTTON_MENU 0x00000008 | 36 | #define BUTTON_MENU 0x00000008 |
37 | 37 | ||
38 | /* compatibility hacks | ||
39 | not mapped to the touchpad button areas because | ||
40 | the touchpad is not always in that mode */ | ||
41 | #define BUTTON_LEFT BUTTON_MINUS | ||
42 | #define BUTTON_RIGHT BUTTON_PLUS | ||
43 | |||
38 | /* Faked buttons based on touchscreen quadrants (not yet read) */ | 44 | /* Faked buttons based on touchscreen quadrants (not yet read) */ |
39 | #define BUTTON_UP 0x00000020 | 45 | /* Touchpad Screen Area Buttons */ |
40 | #define BUTTON_DOWN 0x00000040 | 46 | #define BUTTON_TOPLEFT 0x00000010 |
41 | #define BUTTON_LEFT 0x00000080 | 47 | #define BUTTON_TOPMIDDLE 0x00000020 |
42 | #define BUTTON_RIGHT 0x00000100 | 48 | #define BUTTON_TOPRIGHT 0x00000040 |
43 | #define BUTTON_SELECT 0x00000200 | 49 | #define BUTTON_MIDLEFT 0x00000080 |
50 | #define BUTTON_CENTER 0x00000100 | ||
51 | #define BUTTON_MIDRIGHT 0x00000200 | ||
52 | #define BUTTON_BOTTOMLEFT 0x00000400 | ||
53 | #define BUTTON_BOTTOMMIDDLE 0x00000800 | ||
54 | #define BUTTON_BOTTOMRIGHT 0x00001000 | ||
44 | 55 | ||
45 | #define BUTTON_MAIN 0x3FF | 56 | #define BUTTON_MAIN 0x1FFF |
46 | 57 | ||
47 | /* No remote */ | 58 | /* No remote */ |
48 | #define BUTTON_REMOTE 0 | 59 | #define BUTTON_REMOTE 0 |
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c index 0eb1c07e74..d1fd2eb702 100644 --- a/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c +++ b/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c | |||
@@ -40,6 +40,22 @@ | |||
40 | static short last_x, last_y, last_z1, last_z2; /* for the touch screen */ | 40 | static short last_x, last_y, last_z1, last_z2; /* for the touch screen */ |
41 | static bool touch_available = false; | 41 | static bool touch_available = false; |
42 | 42 | ||
43 | static enum touchpad_mode current_mode = TOUCHPAD_POINT; | ||
44 | static int touchpad_buttons[3][3] = { | ||
45 | {BUTTON_TOPLEFT, BUTTON_TOPMIDDLE, BUTTON_TOPRIGHT}, | ||
46 | {BUTTON_MIDLEFT, BUTTON_CENTER, BUTTON_MIDRIGHT}, | ||
47 | {BUTTON_BOTTOMLEFT, BUTTON_BOTTOMMIDDLE, BUTTON_BOTTOMRIGHT}, | ||
48 | }; | ||
49 | |||
50 | void touchpad_set_mode(enum touchpad_mode mode) | ||
51 | { | ||
52 | current_mode = mode; | ||
53 | } | ||
54 | enum touchpad_mode touchpad_get_mode(void) | ||
55 | { | ||
56 | return current_mode; | ||
57 | } | ||
58 | |||
43 | static struct touch_calibration_point topleft, bottomright; | 59 | static struct touch_calibration_point topleft, bottomright; |
44 | 60 | ||
45 | /* Jd's tests.. These will hopefully work for everyone so we dont have to | 61 | /* Jd's tests.. These will hopefully work for everyone so we dont have to |
@@ -165,7 +181,19 @@ int button_read_device(int *data) | |||
165 | last_x = x; | 181 | last_x = x; |
166 | last_y = y; | 182 | last_y = y; |
167 | *data = touch_to_pixels(x, y); | 183 | *data = touch_to_pixels(x, y); |
168 | r_button |= BUTTON_TOUCHPAD; | 184 | switch (current_mode) |
185 | { | ||
186 | case TOUCHPAD_POINT: | ||
187 | r_button |= BUTTON_TOUCHPAD; | ||
188 | break; | ||
189 | case TOUCHPAD_BUTTON: | ||
190 | { | ||
191 | int px_x = ((*data&0xffff0000)>>16), px_y = ((*data&0x0000ffff)); | ||
192 | r_button |= touchpad_buttons[px_y/(LCD_HEIGHT/3)][px_x/(LCD_WIDTH/3)]; | ||
193 | oldbutton = r_button; | ||
194 | break; | ||
195 | } | ||
196 | } | ||
169 | } | 197 | } |
170 | last_touch = current_tick; | 198 | last_touch = current_tick; |
171 | touch_available = false; | 199 | touch_available = false; |
@@ -219,6 +247,6 @@ void GIO14(void) | |||
219 | read_battery_inputs(); | 247 | read_battery_inputs(); |
220 | break; | 248 | break; |
221 | } | 249 | } |
222 | touch_available = true; | 250 | //touch_available = true; |
223 | IO_INTC_IRQ2 = (1<<3); /* IRQ_GIO14 == 35 */ | 251 | IO_INTC_IRQ2 = (1<<3); /* IRQ_GIO14 == 35 */ |
224 | } | 252 | } |
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/button-target.h b/firmware/target/arm/tms320dm320/mrobe-500/button-target.h index 1f17f3f3c8..ae23346814 100644 --- a/firmware/target/arm/tms320dm320/mrobe-500/button-target.h +++ b/firmware/target/arm/tms320dm320/mrobe-500/button-target.h | |||
@@ -53,14 +53,30 @@ void use_calibration(bool enable); | |||
53 | 53 | ||
54 | #define BUTTON_TOUCH 0x00000200 | 54 | #define BUTTON_TOUCH 0x00000200 |
55 | 55 | ||
56 | /* compatibility hacks */ | 56 | /* Touchpad Screen Area Buttons */ |
57 | #define BUTTON_TOPLEFT 0x00004000 | ||
58 | #define BUTTON_TOPMIDDLE 0x00008000 | ||
59 | #define BUTTON_TOPRIGHT 0x00010000 | ||
60 | #define BUTTON_MIDLEFT 0x00020000 | ||
61 | #define BUTTON_CENTER 0x00040000 | ||
62 | #define BUTTON_MIDRIGHT 0x00080000 | ||
63 | #define BUTTON_BOTTOMLEFT 0x00100000 | ||
64 | #define BUTTON_BOTTOMMIDDLE 0x00200000 | ||
65 | #define BUTTON_BOTTOMRIGHT 0x00400000 | ||
66 | |||
67 | /* compatibility hacks | ||
68 | not mapped to the touchpad button areas because | ||
69 | the touchpad is not always in that mode */ | ||
57 | #define BUTTON_LEFT BUTTON_RC_REW | 70 | #define BUTTON_LEFT BUTTON_RC_REW |
58 | #define BUTTON_RIGHT BUTTON_RC_FF | 71 | #define BUTTON_RIGHT BUTTON_RC_FF |
59 | 72 | ||
60 | #define POWEROFF_BUTTON BUTTON_POWER | 73 | #define POWEROFF_BUTTON BUTTON_POWER |
61 | #define POWEROFF_COUNT 10 | 74 | #define POWEROFF_COUNT 10 |
62 | 75 | ||
63 | #define BUTTON_MAIN BUTTON_POWER | 76 | #define BUTTON_MAIN (BUTTON_POWER| \ |
77 | BUTTON_TOPLEFT|BUTTON_TOPMIDDLE|BUTTON_TOPRIGHT \ | ||
78 | BUTTON_MIDLEFT|BUTTON_CENTER|BUTTON_MIDRIGHT \ | ||
79 | BUTTON_BOTTOMLEFT|BUTTON_BOTTOMMIDDLE|BUTTON_BOTTOMRIGHT) | ||
64 | 80 | ||
65 | #define BUTTON_REMOTE (BUTTON_RC_HEART|BUTTON_RC_MODE| \ | 81 | #define BUTTON_REMOTE (BUTTON_RC_HEART|BUTTON_RC_MODE| \ |
66 | BUTTON_RC_VOL_DOWN|BUTTON_RC_VOL_UP| \ | 82 | BUTTON_RC_VOL_DOWN|BUTTON_RC_VOL_UP| \ |