summaryrefslogtreecommitdiffstats
path: root/firmware/target/arm/tms320dm320
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/tms320dm320')
-rw-r--r--firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c32
-rw-r--r--firmware/target/arm/tms320dm320/mrobe-500/button-target.h20
2 files changed, 48 insertions, 4 deletions
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 @@
static short last_x, last_y, last_z1, last_z2; /* for the touch screen */
static bool touch_available = false;
+static enum touchpad_mode current_mode = TOUCHPAD_POINT;
+static int touchpad_buttons[3][3] = {
+ {BUTTON_TOPLEFT, BUTTON_TOPMIDDLE, BUTTON_TOPRIGHT},
+ {BUTTON_MIDLEFT, BUTTON_CENTER, BUTTON_MIDRIGHT},
+ {BUTTON_BOTTOMLEFT, BUTTON_BOTTOMMIDDLE, BUTTON_BOTTOMRIGHT},
+};
+
+void touchpad_set_mode(enum touchpad_mode mode)
+{
+ current_mode = mode;
+}
+enum touchpad_mode touchpad_get_mode(void)
+{
+ return current_mode;
+}
+
static struct touch_calibration_point topleft, bottomright;
/* Jd's tests.. These will hopefully work for everyone so we dont have to
@@ -165,7 +181,19 @@ int button_read_device(int *data)
last_x = x;
last_y = y;
*data = touch_to_pixels(x, y);
- r_button |= BUTTON_TOUCHPAD;
+ switch (current_mode)
+ {
+ case TOUCHPAD_POINT:
+ r_button |= BUTTON_TOUCHPAD;
+ break;
+ case TOUCHPAD_BUTTON:
+ {
+ int px_x = ((*data&0xffff0000)>>16), px_y = ((*data&0x0000ffff));
+ r_button |= touchpad_buttons[px_y/(LCD_HEIGHT/3)][px_x/(LCD_WIDTH/3)];
+ oldbutton = r_button;
+ break;
+ }
+ }
}
last_touch = current_tick;
touch_available = false;
@@ -219,6 +247,6 @@ void GIO14(void)
read_battery_inputs();
break;
}
- touch_available = true;
+ //touch_available = true;
IO_INTC_IRQ2 = (1<<3); /* IRQ_GIO14 == 35 */
}
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);
#define BUTTON_TOUCH 0x00000200
-/* compatibility hacks */
+/* Touchpad Screen Area Buttons */
+#define BUTTON_TOPLEFT 0x00004000
+#define BUTTON_TOPMIDDLE 0x00008000
+#define BUTTON_TOPRIGHT 0x00010000
+#define BUTTON_MIDLEFT 0x00020000
+#define BUTTON_CENTER 0x00040000
+#define BUTTON_MIDRIGHT 0x00080000
+#define BUTTON_BOTTOMLEFT 0x00100000
+#define BUTTON_BOTTOMMIDDLE 0x00200000
+#define BUTTON_BOTTOMRIGHT 0x00400000
+
+/* compatibility hacks
+ not mapped to the touchpad button areas because
+ the touchpad is not always in that mode */
#define BUTTON_LEFT BUTTON_RC_REW
#define BUTTON_RIGHT BUTTON_RC_FF
#define POWEROFF_BUTTON BUTTON_POWER
#define POWEROFF_COUNT 10
-#define BUTTON_MAIN BUTTON_POWER
+#define BUTTON_MAIN (BUTTON_POWER| \
+ BUTTON_TOPLEFT|BUTTON_TOPMIDDLE|BUTTON_TOPRIGHT \
+ BUTTON_MIDLEFT|BUTTON_CENTER|BUTTON_MIDRIGHT \
+ BUTTON_BOTTOMLEFT|BUTTON_BOTTOMMIDDLE|BUTTON_BOTTOMRIGHT)
#define BUTTON_REMOTE (BUTTON_RC_HEART|BUTTON_RC_MODE| \
BUTTON_RC_VOL_DOWN|BUTTON_RC_VOL_UP| \