summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2013-04-07 19:33:40 +0700
committerhathach <[email protected]>2013-04-07 19:33:40 +0700
commit4b63a2bc5ccb1dd8c207f68b01be5ff6014a03da (patch)
tree68d1098666b3fe6fbd98e6bec61cdbdb3054f678
parentdfe2b942489cd60bd92d507f4147900cf9b3f48e (diff)
- fix HID_MOUSEBUTTON right & left
- add mouse app to mount mouse interface
-rw-r--r--demos/host/keyboard_app.c2
-rw-r--r--demos/host/main.c3
-rw-r--r--demos/host/mouse_app.c90
-rw-r--r--demos/host/mouse_app.h67
-rw-r--r--demos/host/tusb_config.h1
-rw-r--r--tinyusb/class/hid.h12
6 files changed, 166 insertions, 9 deletions
diff --git a/demos/host/keyboard_app.c b/demos/host/keyboard_app.c
index 5dee23c31..32827b987 100644
--- a/demos/host/keyboard_app.c
+++ b/demos/host/keyboard_app.c
@@ -47,7 +47,7 @@
// INTERNAL OBJECT & FUNCTION DECLARATION
//--------------------------------------------------------------------+
//TUSB_CFG_ATTR_USBRAM
-__attribute__ ((section(".data.$RAM3")))
+__attribute__ ((section(".data.$RAM3"))) // TODO hack for USB RAM
tusb_keyboard_report_t keyboard_report;
//--------------------------------------------------------------------+
diff --git a/demos/host/main.c b/demos/host/main.c
index 60e00f405..247b91cdd 100644
--- a/demos/host/main.c
+++ b/demos/host/main.c
@@ -26,12 +26,13 @@ int main(void)
{
tusb_task_runner();
keyboard_app_task();
+ mouse_app_task();
if (current_tick + 10*CFG_TICKS_PER_SECOND < system_ticks)
{
current_tick = system_ticks;
// board_leds(0x01, (current_tick/CFG_TICKS_PER_SECOND)%2); /* Toggle LED once per second */
- printf("tinyusb: " __DATE__ "\t" __TIME__ "\n");
+ printf("tinyusb: " __DATE__ "\t" __TIME__ "\n"); // toggle leds on EA4357 is quite troublesome
}
}
diff --git a/demos/host/mouse_app.c b/demos/host/mouse_app.c
new file mode 100644
index 000000000..c7d845b2d
--- /dev/null
+++ b/demos/host/mouse_app.c
@@ -0,0 +1,90 @@
+/*
+ * mouse_app.c
+ *
+ * Created on: Mar 24, 2013
+ * Author: hathach
+ */
+
+/*
+ * Software License Agreement (BSD License)
+ * Copyright (c) 2012, hathach (tinyusb.org)
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * This file is part of the tiny usb stack.
+ */
+
+//--------------------------------------------------------------------+
+// INCLUDE
+//--------------------------------------------------------------------+
+#include "mouse_app.h"
+//--------------------------------------------------------------------+
+// MACRO CONSTANT TYPEDEF
+//--------------------------------------------------------------------+
+
+//--------------------------------------------------------------------+
+// INTERNAL OBJECT & FUNCTION DECLARATION
+//--------------------------------------------------------------------+
+//TUSB_CFG_ATTR_USBRAM
+__attribute__ ((section(".data.$RAM3"))) // TODO hack for USB RAM
+tusb_mouse_report_t mouse_report;
+
+//--------------------------------------------------------------------+
+// IMPLEMENTATION
+//--------------------------------------------------------------------+
+void mouse_app_task(void)
+{
+ for (uint8_t dev_addr = 1; dev_addr <= TUSB_CFG_HOST_DEVICE_MAX; dev_addr++)
+ {
+ if ( tusbh_hid_mouse_is_supported(dev_addr) )
+ {
+ switch (tusbh_hid_mouse_status(dev_addr,0))
+ {
+ case TUSB_INTERFACE_STATUS_READY:
+ case TUSB_INTERFACE_STATUS_ERROR: // skip error, get next key
+ tusbh_hid_mouse_get_report(dev_addr, 0, (uint8_t*) &mouse_report);
+ break;
+
+ case TUSB_INTERFACE_STATUS_COMPLETE:
+ // TODO buffer in queue
+ if ( mouse_report.buttons || mouse_report.x || mouse_report.y)
+ {
+ printf("buttons: %c%c%c (x, y) = (%d, %d)\n",
+ mouse_report.buttons & HID_MOUSEBUTTON_LEFT ? 'L' : '-',
+ mouse_report.buttons & HID_MOUSEBUTTON_MIDDLE ? 'M' : '-',
+ mouse_report.buttons & HID_MOUSEBUTTON_RIGHT ? 'R' : '-',
+ mouse_report.x, mouse_report.y);
+ }
+
+ memclr_(&mouse_report, sizeof(tusb_mouse_report_t)); // TODO use callback to synchronize
+ tusbh_hid_mouse_get_report(dev_addr, 0, (uint8_t*) &mouse_report);
+ break;
+
+ case TUSB_INTERFACE_STATUS_BUSY:
+ break;
+
+ }
+ }
+ }
+}
diff --git a/demos/host/mouse_app.h b/demos/host/mouse_app.h
new file mode 100644
index 000000000..373aa1f07
--- /dev/null
+++ b/demos/host/mouse_app.h
@@ -0,0 +1,67 @@
+/*
+ * mouse_app.h
+ *
+ * Created on: April 07, 2013
+ * Author: hathach
+ */
+
+/*
+ * Software License Agreement (BSD License)
+ * Copyright (c) 2012, hathach (tinyusb.org)
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * This file is part of the tiny usb stack.
+ */
+
+/** \file
+ * \brief TBD
+ *
+ * \note TBD
+ */
+
+/** \ingroup TBD
+ * \defgroup TBD
+ * \brief TBD
+ *
+ * @{
+ */
+
+#ifndef _TUSB_MOUSE_APP_H_
+#define _TUSB_MOUSE_APP_H_
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "boards/board.h"
+#include "tusb.h"
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* _TUSB_MOUSE_APP_H_ */
+
+/** @} */
diff --git a/demos/host/tusb_config.h b/demos/host/tusb_config.h
index bbaf57875..3a72e0b84 100644
--- a/demos/host/tusb_config.h
+++ b/demos/host/tusb_config.h
@@ -72,6 +72,7 @@
//------------- CLASS -------------//
#define TUSB_CFG_HOST_HID_KEYBOARD 1
+#define TUSB_CFG_HOST_HID_MOUSE 1
//--------------------------------------------------------------------+
// DEVICE CONFIGURATION
diff --git a/tinyusb/class/hid.h b/tinyusb/class/hid.h
index 1d423a53e..2bd98ac5d 100644
--- a/tinyusb/class/hid.h
+++ b/tinyusb/class/hid.h
@@ -112,18 +112,16 @@ typedef ATTR_PACKED_STRUCT(struct)
/**
* \brief buttons codes for HID mouse
*/
-enum
-{
- HID_MOUSEBUTTON_RIGHT = 0,
- HID_MOUSEBUTTON_LEFT = 1,
- HID_MOUSEBUTTON_MIDDLE = 2
+enum {
+ HID_MOUSEBUTTON_LEFT = BIT_(0),
+ HID_MOUSEBUTTON_RIGHT = BIT_(1),
+ HID_MOUSEBUTTON_MIDDLE = BIT_(2)
};
/**
* \brief KB modifier codes for HID KB
*/
-enum
-{
+enum {
KEYBOARD_MODIFIER_LEFTCTRL = BIT_(0),
KEYBOARD_MODIFIER_LEFTSHIFT = BIT_(1),
KEYBOARD_MODIFIER_LEFTALT = BIT_(2),