EA BaseBoard, playing wav, PC see\'s SD-card through USB port.

Dependencies:   mbed

Committer:
Lerche
Date:
Tue Nov 22 05:45:58 2011 +0000
Revision:
0:fef366d2ed20
Thanks to those who provided EA_WavPlayer and USB_MSC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Lerche 0:fef366d2ed20 1 /* USBKeyboard.h */
Lerche 0:fef366d2ed20 2 /* USB device example: Standard keyboard */
Lerche 0:fef366d2ed20 3 /* Copyright (c) 2011 ARM Limited. All rights reserved. */
Lerche 0:fef366d2ed20 4
Lerche 0:fef366d2ed20 5 #ifndef USBKEYBOARD_H
Lerche 0:fef366d2ed20 6 #define USBKEYBOARD_H
Lerche 0:fef366d2ed20 7
Lerche 0:fef366d2ed20 8 #include "USBHID.h"
Lerche 0:fef366d2ed20 9 #include "Stream.h"
Lerche 0:fef366d2ed20 10
Lerche 0:fef366d2ed20 11 /* Modifiers */
Lerche 0:fef366d2ed20 12 enum MODIFIER_KEY
Lerche 0:fef366d2ed20 13 {
Lerche 0:fef366d2ed20 14 KEY_CTRL = 1,
Lerche 0:fef366d2ed20 15 KEY_SHIFT = 2,
Lerche 0:fef366d2ed20 16 KEY_ALT = 4,
Lerche 0:fef366d2ed20 17 };
Lerche 0:fef366d2ed20 18
Lerche 0:fef366d2ed20 19
Lerche 0:fef366d2ed20 20 enum MEDIA_KEY
Lerche 0:fef366d2ed20 21 {
Lerche 0:fef366d2ed20 22 KEY_NEXT_TRACK, /*!< next Track Button */
Lerche 0:fef366d2ed20 23 KEY_PREVIOUS_TRACK, /*!< Previous track Button */
Lerche 0:fef366d2ed20 24 KEY_STOP, /*!< Stop Button */
Lerche 0:fef366d2ed20 25 KEY_PLAY_PAUSE, /*!< Play/Pause Button */
Lerche 0:fef366d2ed20 26 KEY_MUTE, /*!< Mute Button */
Lerche 0:fef366d2ed20 27 KEY_VOLUME_UP, /*!< Volume Up Button */
Lerche 0:fef366d2ed20 28 KEY_VOLUME_DOWN, /*!< Volume Down Button */
Lerche 0:fef366d2ed20 29 };
Lerche 0:fef366d2ed20 30
Lerche 0:fef366d2ed20 31 enum FUNCTION_KEY
Lerche 0:fef366d2ed20 32 {
Lerche 0:fef366d2ed20 33 KEY_F1 = 128, /* F1 key */
Lerche 0:fef366d2ed20 34 KEY_F2, /* F2 key */
Lerche 0:fef366d2ed20 35 KEY_F3, /* F3 key */
Lerche 0:fef366d2ed20 36 KEY_F4, /* F4 key */
Lerche 0:fef366d2ed20 37 KEY_F5, /* F5 key */
Lerche 0:fef366d2ed20 38 KEY_F6, /* F6 key */
Lerche 0:fef366d2ed20 39 KEY_F7, /* F7 key */
Lerche 0:fef366d2ed20 40 KEY_F8, /* F8 key */
Lerche 0:fef366d2ed20 41 KEY_F9, /* F9 key */
Lerche 0:fef366d2ed20 42 KEY_F10, /* F10 key */
Lerche 0:fef366d2ed20 43 KEY_F11, /* F11 key */
Lerche 0:fef366d2ed20 44 KEY_F12, /* F12 key */
Lerche 0:fef366d2ed20 45 KEY_PRINT_SCREEN, /* Print Screen key */
Lerche 0:fef366d2ed20 46 KEY_INSERT, /* Insert key */
Lerche 0:fef366d2ed20 47 KEY_HOME, /* Home key */
Lerche 0:fef366d2ed20 48 KEY_PAGE_UP, /* Page Up key */
Lerche 0:fef366d2ed20 49 KEY_PAGE_DOWN, /* Page Down key */
Lerche 0:fef366d2ed20 50 };
Lerche 0:fef366d2ed20 51
Lerche 0:fef366d2ed20 52 /**
Lerche 0:fef366d2ed20 53 * USBKeyboard example
Lerche 0:fef366d2ed20 54 * @code
Lerche 0:fef366d2ed20 55 *
Lerche 0:fef366d2ed20 56 * #include "mbed.h"
Lerche 0:fef366d2ed20 57 * #include "USBKeyboard.h"
Lerche 0:fef366d2ed20 58 *
Lerche 0:fef366d2ed20 59 * USBKeyboard key;
Lerche 0:fef366d2ed20 60 *
Lerche 0:fef366d2ed20 61 * int main(void)
Lerche 0:fef366d2ed20 62 * {
Lerche 0:fef366d2ed20 63 * while (1)
Lerche 0:fef366d2ed20 64 * {
Lerche 0:fef366d2ed20 65 * key.printf("Hello World\r\n");
Lerche 0:fef366d2ed20 66 * wait(1);
Lerche 0:fef366d2ed20 67 * }
Lerche 0:fef366d2ed20 68 * }
Lerche 0:fef366d2ed20 69 *
Lerche 0:fef366d2ed20 70 * @endcode
Lerche 0:fef366d2ed20 71 */
Lerche 0:fef366d2ed20 72 class USBKeyboard: public USBHID, public Stream
Lerche 0:fef366d2ed20 73 {
Lerche 0:fef366d2ed20 74 public:
Lerche 0:fef366d2ed20 75
Lerche 0:fef366d2ed20 76 /**
Lerche 0:fef366d2ed20 77 * Constructor
Lerche 0:fef366d2ed20 78 *
Lerche 0:fef366d2ed20 79 * @param vendor_id Your vendor_id (default: 0x1234)
Lerche 0:fef366d2ed20 80 * @param product_id Your product_id (default: 0x0001)
Lerche 0:fef366d2ed20 81 * @param product_release Your preoduct_release (default: 0x0001)
Lerche 0:fef366d2ed20 82 *
Lerche 0:fef366d2ed20 83 */
Lerche 0:fef366d2ed20 84 USBKeyboard(uint16_t vendor_id = 0x1234, uint16_t product_id = 0x0003, uint16_t product_release = 0x0001): USBHID(0, 0, vendor_id, product_id, product_release){};
Lerche 0:fef366d2ed20 85
Lerche 0:fef366d2ed20 86 /**
Lerche 0:fef366d2ed20 87 * To send a character defined by a modifier(CTRL, SHIFT, ALT) and the key
Lerche 0:fef366d2ed20 88 *
Lerche 0:fef366d2ed20 89 * @code
Lerche 0:fef366d2ed20 90 * //To send CTRL + s (save)
Lerche 0:fef366d2ed20 91 * keyboard.keyCode('s', KEY_CTRL);
Lerche 0:fef366d2ed20 92 * @endcode
Lerche 0:fef366d2ed20 93 *
Lerche 0:fef366d2ed20 94 * @param modifier bit 0: KEY_CTRL, bit 1: KEY_SHIFT, bit 2: KEY_ALT (default: 0)
Lerche 0:fef366d2ed20 95 * @param key character to send
Lerche 0:fef366d2ed20 96 * @returns true if there is no error, false otherwise
Lerche 0:fef366d2ed20 97 */
Lerche 0:fef366d2ed20 98 bool keyCode(uint8_t key, uint8_t modifier = 0);
Lerche 0:fef366d2ed20 99
Lerche 0:fef366d2ed20 100 /**
Lerche 0:fef366d2ed20 101 * Send a character
Lerche 0:fef366d2ed20 102 *
Lerche 0:fef366d2ed20 103 * @param c character to be sent
Lerche 0:fef366d2ed20 104 * @returns true if there is no error, false otherwise
Lerche 0:fef366d2ed20 105 */
Lerche 0:fef366d2ed20 106 virtual int _putc(int c);
Lerche 0:fef366d2ed20 107
Lerche 0:fef366d2ed20 108 /**
Lerche 0:fef366d2ed20 109 * Control media keys
Lerche 0:fef366d2ed20 110 *
Lerche 0:fef366d2ed20 111 * @param key media key pressed (KEY_NEXT_TRACK, KEY_PREVIOUS_TRACK, KEY_STOP, KEY_PLAY_PAUSE, KEY_MUTE, KEY_VOLUME_UP, KEY_VOLUME_DOWN)
Lerche 0:fef366d2ed20 112 * @returns true if there is no error, false otherwise
Lerche 0:fef366d2ed20 113 */
Lerche 0:fef366d2ed20 114 bool mediaControl(MEDIA_KEY key);
Lerche 0:fef366d2ed20 115
Lerche 0:fef366d2ed20 116 /*
Lerche 0:fef366d2ed20 117 * To define the report descriptor. Warning: this method has to store the length of the report descriptor in reportLength.
Lerche 0:fef366d2ed20 118 *
Lerche 0:fef366d2ed20 119 * @returns pointer to the report descriptor
Lerche 0:fef366d2ed20 120 */
Lerche 0:fef366d2ed20 121 virtual uint8_t * reportDesc();
Lerche 0:fef366d2ed20 122
Lerche 0:fef366d2ed20 123 private:
Lerche 0:fef366d2ed20 124 //dummy otherwise it doesn,t compile (we must define all methods of an abstract class)
Lerche 0:fef366d2ed20 125 virtual int _getc() { return -1;}
Lerche 0:fef366d2ed20 126 };
Lerche 0:fef366d2ed20 127
Lerche 0:fef366d2ed20 128 #endif
Lerche 0:fef366d2ed20 129
Lerche 0:fef366d2ed20 130