Committer:
chris
Date:
Fri Oct 21 23:02:16 2011 +0000
Revision:
1:4d08e0ebf5dd
Parent:
0:e98d1c2b16c6

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chris 0:e98d1c2b16c6 1 /* USBAbsMouseKeyboard.h */
chris 0:e98d1c2b16c6 2 /* USB device example: keyboard and an absolute mouse */
chris 0:e98d1c2b16c6 3 /* Copyright (c) 2011 ARM Limited. All rights reserved. */
chris 0:e98d1c2b16c6 4
chris 0:e98d1c2b16c6 5 #ifndef _USB_KEYBOARD_ABS_MOUSE_
chris 0:e98d1c2b16c6 6 #define _USB_KEYBOARD_ABS_MOUSE_
chris 0:e98d1c2b16c6 7
chris 0:e98d1c2b16c6 8 #include "GenericMouse.h"
chris 0:e98d1c2b16c6 9 #include "GenericKeyboard.h"
chris 0:e98d1c2b16c6 10 #include "USBHID.h"
chris 0:e98d1c2b16c6 11
chris 0:e98d1c2b16c6 12
chris 0:e98d1c2b16c6 13 /** USB device: a keyboard and an absolute mouse
chris 0:e98d1c2b16c6 14 *
chris 0:e98d1c2b16c6 15 * Warning: you can only instantiate one instance of a USB device: USBMouse, USBKeyboard, USBAbsMouse, USBMouseKeyboard, or USBAbsMouseKeyboard.
chris 0:e98d1c2b16c6 16 *
chris 0:e98d1c2b16c6 17 * Example:
chris 0:e98d1c2b16c6 18 * @code
chris 0:e98d1c2b16c6 19 *
chris 0:e98d1c2b16c6 20 * #include "mbed.h"
chris 0:e98d1c2b16c6 21 * #include "USBAbsMouseKeyboard.h"
chris 0:e98d1c2b16c6 22 *
chris 0:e98d1c2b16c6 23 * USBAbsMouseKeyboard key_mouse;
chris 0:e98d1c2b16c6 24 *
chris 0:e98d1c2b16c6 25 * #define STEP (1000)
chris 0:e98d1c2b16c6 26 *
chris 0:e98d1c2b16c6 27 * int main(void)
chris 0:e98d1c2b16c6 28 * {
chris 0:e98d1c2b16c6 29 * int32_t a = X_MIN;
chris 0:e98d1c2b16c6 30 * int32_t dir = STEP;
chris 0:e98d1c2b16c6 31 *
chris 0:e98d1c2b16c6 32 * while (1)
chris 0:e98d1c2b16c6 33 * {
chris 0:e98d1c2b16c6 34 * key_mouse.move(a, a);
chris 0:e98d1c2b16c6 35 * key_mouse.puts("Hello From Mbed\r\n");
chris 0:e98d1c2b16c6 36 *
chris 0:e98d1c2b16c6 37 * if (((a+dir) > X_MAX) || ((a+dir) < X_MIN))
chris 0:e98d1c2b16c6 38 * {
chris 0:e98d1c2b16c6 39 * // Change direction
chris 0:e98d1c2b16c6 40 * dir = -dir;
chris 0:e98d1c2b16c6 41 * }
chris 0:e98d1c2b16c6 42 * a += dir;
chris 0:e98d1c2b16c6 43 *
chris 0:e98d1c2b16c6 44 * wait(1);
chris 0:e98d1c2b16c6 45 * }
chris 0:e98d1c2b16c6 46 * }
chris 0:e98d1c2b16c6 47 * @endcode
chris 0:e98d1c2b16c6 48 */
chris 0:e98d1c2b16c6 49 class USBAbsMouseKeyboard: public GenericMouse, public GenericKeyboard, public USBHID
chris 0:e98d1c2b16c6 50 {
chris 0:e98d1c2b16c6 51 public:
chris 0:e98d1c2b16c6 52
chris 0:e98d1c2b16c6 53 /**
chris 0:e98d1c2b16c6 54 * Constructor for an absolute mouse and a keyboard
chris 0:e98d1c2b16c6 55 */
chris 0:e98d1c2b16c6 56 USBAbsMouseKeyboard(){};
chris 0:e98d1c2b16c6 57
chris 0:e98d1c2b16c6 58 /**
chris 0:e98d1c2b16c6 59 * Write a state of the mouse
chris 0:e98d1c2b16c6 60 *
chris 0:e98d1c2b16c6 61 * @param x x absolute position
chris 0:e98d1c2b16c6 62 * @param y y absolute position
chris 0:e98d1c2b16c6 63 * @param buttons buttons state (first bit represents MOUSE_LEFT, second bit MOUSE_RIGHT and third bit MOUSE_MIDDLE)
chris 0:e98d1c2b16c6 64 * @param z wheel state (>0 to scroll down, <0 to scroll up)
chris 0:e98d1c2b16c6 65 * @return true if there is no error, false otherwise
chris 0:e98d1c2b16c6 66 */
chris 0:e98d1c2b16c6 67 virtual bool update(int16_t x, int16_t y, uint8_t buttons, int8_t z);
chris 0:e98d1c2b16c6 68
chris 0:e98d1c2b16c6 69 virtual uint8_t * ReportDesc();
chris 0:e98d1c2b16c6 70 };
chris 0:e98d1c2b16c6 71
chris 0:e98d1c2b16c6 72 #endif