ADC Niose test Connect four analog signals to your MBED. and then run the Windows app. The four traces are displayed on an oscilloscope like display. I have used a USB HID DEVICE link, so connections to D+, D- are required. The MBED code is otherwise quite basic, So you can modify it to your own test needs. Additionaly, there is a 16 bit count value, in my MBED code Mainly to test if MSB & LSB are correct.

Dependencies:   mbed

Committer:
ceri
Date:
Sat Nov 19 22:54:22 2011 +0000
Revision:
0:cbe01b678bd4
just enough to work

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ceri 0:cbe01b678bd4 1 /* USBMouseKeyboard.h */
ceri 0:cbe01b678bd4 2 /* USB device example: Keyboard with a relative mouse */
ceri 0:cbe01b678bd4 3 /* Copyright (c) 2011 ARM Limited. All rights reserved. */
ceri 0:cbe01b678bd4 4
ceri 0:cbe01b678bd4 5 #ifndef USBMOUSEKEYBOARD_H
ceri 0:cbe01b678bd4 6 #define USBMOUSEKEYBOARD_H
ceri 0:cbe01b678bd4 7
ceri 0:cbe01b678bd4 8 #define REPORT_ID_KEYBOARD 1
ceri 0:cbe01b678bd4 9 #define REPORT_ID_MOUSE 2
ceri 0:cbe01b678bd4 10 #define REPORT_ID_VOLUME 3
ceri 0:cbe01b678bd4 11
ceri 0:cbe01b678bd4 12 #include "USBMouse.h"
ceri 0:cbe01b678bd4 13 #include "USBKeyboard.h"
ceri 0:cbe01b678bd4 14 #include "Stream.h"
ceri 0:cbe01b678bd4 15 #include "USBHID.h"
ceri 0:cbe01b678bd4 16
ceri 0:cbe01b678bd4 17 /**
ceri 0:cbe01b678bd4 18 * USBMouseKeyboard example
ceri 0:cbe01b678bd4 19 * @code
ceri 0:cbe01b678bd4 20 *
ceri 0:cbe01b678bd4 21 * #include "mbed.h"
ceri 0:cbe01b678bd4 22 * #include "USBMouseKeyboard.h"
ceri 0:cbe01b678bd4 23 *
ceri 0:cbe01b678bd4 24 * USBMouseKeyboard key_mouse;
ceri 0:cbe01b678bd4 25 *
ceri 0:cbe01b678bd4 26 * int main(void)
ceri 0:cbe01b678bd4 27 * {
ceri 0:cbe01b678bd4 28 * while(1)
ceri 0:cbe01b678bd4 29 * {
ceri 0:cbe01b678bd4 30 * key_mouse.move(20, 0);
ceri 0:cbe01b678bd4 31 * key_mouse.puts("Hello From MBED\r\n");
ceri 0:cbe01b678bd4 32 * wait(1);
ceri 0:cbe01b678bd4 33 * }
ceri 0:cbe01b678bd4 34 * }
ceri 0:cbe01b678bd4 35 * @endcode
ceri 0:cbe01b678bd4 36 *
ceri 0:cbe01b678bd4 37 *
ceri 0:cbe01b678bd4 38 * @code
ceri 0:cbe01b678bd4 39 *
ceri 0:cbe01b678bd4 40 * #include "mbed.h"
ceri 0:cbe01b678bd4 41 * #include "USBMouseKeyboard.h"
ceri 0:cbe01b678bd4 42 *
ceri 0:cbe01b678bd4 43 * USBMouseKeyboard key_mouse(ABS_MOUSE);
ceri 0:cbe01b678bd4 44 *
ceri 0:cbe01b678bd4 45 * int main(void)
ceri 0:cbe01b678bd4 46 * {
ceri 0:cbe01b678bd4 47 * while(1)
ceri 0:cbe01b678bd4 48 * {
ceri 0:cbe01b678bd4 49 * key_mouse.move(X_MAX_ABS/2, Y_MAX_ABS/2);
ceri 0:cbe01b678bd4 50 * key_mouse.puts("Hello from MBED\r\n");
ceri 0:cbe01b678bd4 51 * wait(1);
ceri 0:cbe01b678bd4 52 * }
ceri 0:cbe01b678bd4 53 * }
ceri 0:cbe01b678bd4 54 * @endcode
ceri 0:cbe01b678bd4 55 */
ceri 0:cbe01b678bd4 56 class USBMouseKeyboard: public USBHID, public Stream
ceri 0:cbe01b678bd4 57 {
ceri 0:cbe01b678bd4 58 public:
ceri 0:cbe01b678bd4 59
ceri 0:cbe01b678bd4 60 /**
ceri 0:cbe01b678bd4 61 * Constructor
ceri 0:cbe01b678bd4 62 *
ceri 0:cbe01b678bd4 63 * @param mouse_type Mouse type: ABS_MOUSE (absolute mouse) or REL_MOUSE (relative mouse) (default: REL_MOUSE)
ceri 0:cbe01b678bd4 64 * @param vendor_id Your vendor_id (default: 0x1234)
ceri 0:cbe01b678bd4 65 * @param product_id Your product_id (default: 0x0001)
ceri 0:cbe01b678bd4 66 * @param product_release Your preoduct_release (default: 0x0001)
ceri 0:cbe01b678bd4 67 *
ceri 0:cbe01b678bd4 68 */
ceri 0:cbe01b678bd4 69 USBMouseKeyboard(MOUSE_TYPE mouse_type = REL_MOUSE, uint16_t vendor_id = 0x1234, uint16_t product_id = 0x0010, uint16_t product_release = 0x0001):
ceri 0:cbe01b678bd4 70 USBHID(vendor_id, product_id, product_release)
ceri 0:cbe01b678bd4 71 {
ceri 0:cbe01b678bd4 72 button = 0;
ceri 0:cbe01b678bd4 73 this->mouse_type = mouse_type;
ceri 0:cbe01b678bd4 74 };
ceri 0:cbe01b678bd4 75
ceri 0:cbe01b678bd4 76
ceri 0:cbe01b678bd4 77 /**
ceri 0:cbe01b678bd4 78 * Write a state of the mouse
ceri 0:cbe01b678bd4 79 *
ceri 0:cbe01b678bd4 80 * @param x x-axis position
ceri 0:cbe01b678bd4 81 * @param y y-axis position
ceri 0:cbe01b678bd4 82 * @param buttons buttons state (first bit represents MOUSE_LEFT, second bit MOUSE_RIGHT and third bit MOUSE_MIDDLE)
ceri 0:cbe01b678bd4 83 * @param z wheel state (>0 to scroll down, <0 to scroll up)
ceri 0:cbe01b678bd4 84 * @returns true if there is no error, false otherwise
ceri 0:cbe01b678bd4 85 */
ceri 0:cbe01b678bd4 86 bool update(int16_t x, int16_t y, uint8_t buttons, int8_t z);
ceri 0:cbe01b678bd4 87
ceri 0:cbe01b678bd4 88
ceri 0:cbe01b678bd4 89 /**
ceri 0:cbe01b678bd4 90 * Move the cursor to (x, y)
ceri 0:cbe01b678bd4 91 *
ceri 0:cbe01b678bd4 92 * @param x x-axis position
ceri 0:cbe01b678bd4 93 * @param y y-axis position
ceri 0:cbe01b678bd4 94 * @returns true if there is no error, false otherwise
ceri 0:cbe01b678bd4 95 */
ceri 0:cbe01b678bd4 96 bool move(int16_t x, int16_t y);
ceri 0:cbe01b678bd4 97
ceri 0:cbe01b678bd4 98 /**
ceri 0:cbe01b678bd4 99 * Press one or several buttons
ceri 0:cbe01b678bd4 100 *
ceri 0:cbe01b678bd4 101 * @param button button state (ex: press(MOUSE_LEFT))
ceri 0:cbe01b678bd4 102 * @returns true if there is no error, false otherwise
ceri 0:cbe01b678bd4 103 */
ceri 0:cbe01b678bd4 104 bool press(uint8_t button);
ceri 0:cbe01b678bd4 105
ceri 0:cbe01b678bd4 106 /**
ceri 0:cbe01b678bd4 107 * Release one or several buttons
ceri 0:cbe01b678bd4 108 *
ceri 0:cbe01b678bd4 109 * @param button button state (ex: release(MOUSE_LEFT))
ceri 0:cbe01b678bd4 110 * @returns true if there is no error, false otherwise
ceri 0:cbe01b678bd4 111 */
ceri 0:cbe01b678bd4 112 bool release(uint8_t button);
ceri 0:cbe01b678bd4 113
ceri 0:cbe01b678bd4 114 /**
ceri 0:cbe01b678bd4 115 * Double click (MOUSE_LEFT)
ceri 0:cbe01b678bd4 116 *
ceri 0:cbe01b678bd4 117 * @returns true if there is no error, false otherwise
ceri 0:cbe01b678bd4 118 */
ceri 0:cbe01b678bd4 119 bool doubleClick();
ceri 0:cbe01b678bd4 120
ceri 0:cbe01b678bd4 121 /**
ceri 0:cbe01b678bd4 122 * Click
ceri 0:cbe01b678bd4 123 *
ceri 0:cbe01b678bd4 124 * @param button state of the buttons ( ex: clic(MOUSE_LEFT))
ceri 0:cbe01b678bd4 125 * @returns true if there is no error, false otherwise
ceri 0:cbe01b678bd4 126 */
ceri 0:cbe01b678bd4 127 bool click(uint8_t button);
ceri 0:cbe01b678bd4 128
ceri 0:cbe01b678bd4 129 /**
ceri 0:cbe01b678bd4 130 * Scrolling
ceri 0:cbe01b678bd4 131 *
ceri 0:cbe01b678bd4 132 * @param z value of the wheel (>0 to go down, <0 to go up)
ceri 0:cbe01b678bd4 133 * @returns true if there is no error, false otherwise
ceri 0:cbe01b678bd4 134 */
ceri 0:cbe01b678bd4 135 bool scroll(int8_t z);
ceri 0:cbe01b678bd4 136
ceri 0:cbe01b678bd4 137 /**
ceri 0:cbe01b678bd4 138 * To send a character defined by a modifier(CTRL, SHIFT, ALT) and the key
ceri 0:cbe01b678bd4 139 *
ceri 0:cbe01b678bd4 140 * @code
ceri 0:cbe01b678bd4 141 * //To send CTRL + s (save)
ceri 0:cbe01b678bd4 142 * keyboard.keyCode('s', KEY_CTRL);
ceri 0:cbe01b678bd4 143 * @endcode
ceri 0:cbe01b678bd4 144 *
ceri 0:cbe01b678bd4 145 * @param modifier bit 0: CTRL, bit 1: SHIFT, bit 2: ALT (default: 0)
ceri 0:cbe01b678bd4 146 * @param key character to send
ceri 0:cbe01b678bd4 147 * @returns true if there is no error, false otherwise
ceri 0:cbe01b678bd4 148 */
ceri 0:cbe01b678bd4 149 bool keyCode(uint8_t key, uint8_t modifier = 0);
ceri 0:cbe01b678bd4 150
ceri 0:cbe01b678bd4 151 /**
ceri 0:cbe01b678bd4 152 * Send a character
ceri 0:cbe01b678bd4 153 *
ceri 0:cbe01b678bd4 154 * @param c character to be sent
ceri 0:cbe01b678bd4 155 * @returns true if there is no error, false otherwise
ceri 0:cbe01b678bd4 156 */
ceri 0:cbe01b678bd4 157 virtual int _putc(int c);
ceri 0:cbe01b678bd4 158
ceri 0:cbe01b678bd4 159 /**
ceri 0:cbe01b678bd4 160 * Control media keys
ceri 0:cbe01b678bd4 161 *
ceri 0:cbe01b678bd4 162 * @param key media key pressed (KEY_NEXT_TRACK, KEY_PREVIOUS_TRACK, KEY_STOP, KEY_PLAY_PAUSE, KEY_MUTE, KEY_VOLUME_UP, KEY_VOLUME_DOWN)
ceri 0:cbe01b678bd4 163 * @returns true if there is no error, false otherwise
ceri 0:cbe01b678bd4 164 */
ceri 0:cbe01b678bd4 165 bool mediaControl(MEDIA_KEY key);
ceri 0:cbe01b678bd4 166
ceri 0:cbe01b678bd4 167 /**
ceri 0:cbe01b678bd4 168 * To define the report descriptor. Warning: this method has to store the length of the report descriptor in reportLength.
ceri 0:cbe01b678bd4 169 *
ceri 0:cbe01b678bd4 170 * @returns pointer to the report descriptor
ceri 0:cbe01b678bd4 171 */
ceri 0:cbe01b678bd4 172 virtual uint8_t * reportDesc();
ceri 0:cbe01b678bd4 173
ceri 0:cbe01b678bd4 174
ceri 0:cbe01b678bd4 175 private:
ceri 0:cbe01b678bd4 176 bool mouseWrite(int8_t x, int8_t y, uint8_t buttons, int8_t z);
ceri 0:cbe01b678bd4 177 MOUSE_TYPE mouse_type;
ceri 0:cbe01b678bd4 178 uint8_t button;
ceri 0:cbe01b678bd4 179 bool mouseSend(int8_t x, int8_t y, uint8_t buttons, int8_t z);
ceri 0:cbe01b678bd4 180
ceri 0:cbe01b678bd4 181 //dummy otherwise it doesn,t compile (we must define all methods of an abstract class)
ceri 0:cbe01b678bd4 182 virtual int _getc() { return -1;}
ceri 0:cbe01b678bd4 183 };
ceri 0:cbe01b678bd4 184
ceri 0:cbe01b678bd4 185 #endif