USB Mouse (relative) example for mbed NXP LPC11U24 beta

Committer:
chris
Date:
Wed Nov 09 15:55:10 2011 +0000
Revision:
1:e089be2a6aa1
Parent:
0:163560051396
removed include for <math.h> that is already included by mbed.h

Who changed what in which revision?

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