aboutsummaryrefslogtreecommitdiffstats
path: root/android/multitouch-port.h
diff options
context:
space:
mode:
authorVladimir Chtchetkine <vchtchetkine@google.com>2012-03-05 14:20:00 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-03-05 14:20:00 -0800
commit025a347156acb6c22444f7d4d06c0f44da573c5e (patch)
tree8252ef05e1127002f2b0fa4c5452bbce4e603571 /android/multitouch-port.h
parent7fc0c500e5bcb4fad084302d217708a7a07da452 (diff)
parent8dd31e8e10fc3ca10192368acf19d2345eeddde7 (diff)
downloadexternal_qemu-025a347156acb6c22444f7d4d06c0f44da573c5e.zip
external_qemu-025a347156acb6c22444f7d4d06c0f44da573c5e.tar.gz
external_qemu-025a347156acb6c22444f7d4d06c0f44da573c5e.tar.bz2
Merge "Multi-touch emulation support"
Diffstat (limited to 'android/multitouch-port.h')
-rw-r--r--android/multitouch-port.h132
1 files changed, 132 insertions, 0 deletions
diff --git a/android/multitouch-port.h b/android/multitouch-port.h
new file mode 100644
index 0000000..553617b
--- /dev/null
+++ b/android/multitouch-port.h
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_ANDROID_MULTITOUCH_PORT_H_
+#define ANDROID_ANDROID_MULTITOUCH_PORT_H_
+
+/*
+ * Encapsulates exchange protocol between the multi-touch screen emulator, and an
+ * application running on an Android device that provides touch events, and is
+ * connected to the host via USB.
+ */
+
+#include "android/android-device.h"
+
+/* TCP port reserved for multi-touch emulation. */
+#define AD_MULTITOUCH_PORT 1969
+
+/*
+ * Codes that define transmitted framebuffer format:
+ *
+ * NOTE: Application on the device side depends on these values. Any changes
+ * made here must be reflected in the app too. Application location is at
+ * 'sdk/apps/SdkController/SdkControllerMultitouch' root.
+ */
+
+/* Framebuffer is transmitted as JPEG. */
+#define MTFB_JPEG 1
+/* Framebuffer is transmitted as raw RGB565 bitmap. */
+#define MTFB_RGB565 2
+/* Framebuffer is transmitted as raw RGB888 bitmap. */
+#define MTFB_RGB888 3
+
+/* Framebuffer update descriptor.
+ * This descriptor is used to collect properties of the updated framebuffer
+ * region. This descriptor is also sent to the MT emulation application on the
+ * device, so it can properly redraw its screen.
+ *
+ * NOTE: Application on the device side depends on that structure. Any changes
+ * made here must be reflected in the app too. Application location is at
+ * 'sdk/apps/SdkController/SdkControllerMultitouch' root.
+ */
+typedef struct MTFrameHeader {
+ /* Size of the header. Must be always sizeof(MTFrameHeader). */
+ int header_size;
+ /* Display width */
+ int disp_width;
+ /* Display height */
+ int disp_height;
+ /* x, y, w, and h define framebuffer region that has been updated. */
+ int x;
+ int y;
+ int w;
+ int h;
+ /* Bytes per line in the framebufer. */
+ int bpl;
+ /* Bytes per pixel in the framebufer. */
+ int bpp;
+ /* Defines format in which framebuffer is transmitted to the device. */
+ int format;
+} MTFrameHeader;
+
+/* Declares multi-touch port descriptor. */
+typedef struct AndroidMTSPort AndroidMTSPort;
+
+/* Creates multi-touch port, and connects it to the device.
+ * Param:
+ * opaque - An opaque pointer that is passed back to the callback routines.
+ * Return:
+ * Initialized device descriptor on success, or NULL on failure. If failure is
+ * returned from this routine, 'errno' indicates the reason for failure. If this
+ * routine successeds, a connection is established with the sensor reading
+ * application on the device.
+ */
+extern AndroidMTSPort* mts_port_create(void* opaque);
+
+/* Disconnects from the multi-touch port, and destroys the descriptor. */
+extern void mts_port_destroy(AndroidMTSPort* amtp);
+
+/* Checks if port is connected to a MT-emulating application on the device.
+ * Note that connection can go out and then be restored at any time after
+ * mts_port_create API succeeded.
+ */
+extern int mts_port_is_connected(AndroidMTSPort* amtp);
+
+/* Queries the connected application to start delivering multi-touch events.
+ * Param:
+ * amtp - Android multi-touch port instance returned from mts_port_create.
+ * Return:
+ * Zero on success, failure otherwise.
+ */
+extern int mts_port_start(AndroidMTSPort* amtp);
+
+/* Queries the connected application to stop delivering multi-touch events.
+ * Param:
+ * amtp - Android multi-touch port instance returned from mts_port_create.
+ * Return:
+ * Zero on success, failure otherwise.
+ */
+extern int mts_port_stop(AndroidMTSPort* amtp);
+
+/* Sends framebuffer update to the multi-touch emulation application, running on
+ * the android device.
+ * Param:
+ * mtsp - Android multi-touch port instance returned from mts_port_create.
+ * fmt - Framebuffer update descriptor.
+ * fb - Beginning of the framebuffer.
+ * cb - Callback to invoke when update has been transferred to the MT-emulating
+ * application on the device.
+ * cb_opaque - An opaque parameter to pass back to the 'cb' callback.
+ * Return:
+ * 0 on success, or != 0 on failure.
+ */
+extern int mts_port_send_frame(AndroidMTSPort* mtsp,
+ MTFrameHeader* fmt,
+ const uint8_t* fb,
+ async_send_cb cb,
+ void* cb_opaque);
+
+#endif /* ANDROID_ANDROID_MULTITOUCH_PORT_H_ */