Fork of the official USBDevice library

Fork of USBDevice by mbed official

Committer:
screamer
Date:
Fri Apr 28 17:01:10 2017 +0000
Branch:
device-files
Revision:
76:f0fd8d911b24
Parent:
73:8d28a0cb7b43
Changed the layout of USBDevice implementation for various targets to match mbed-os/targets. This also reduces the amount of files being compiled as USBDevice code for other targets is not compiled.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
screamer 73:8d28a0cb7b43 1 /* Copyright (c) 2010-2011 mbed.org, MIT License
screamer 73:8d28a0cb7b43 2 *
screamer 73:8d28a0cb7b43 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
screamer 73:8d28a0cb7b43 4 * and associated documentation files (the "Software"), to deal in the Software without
screamer 73:8d28a0cb7b43 5 * restriction, including without limitation the rights to use, copy, modify, merge, publish,
screamer 73:8d28a0cb7b43 6 * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
screamer 73:8d28a0cb7b43 7 * Software is furnished to do so, subject to the following conditions:
screamer 73:8d28a0cb7b43 8 *
screamer 73:8d28a0cb7b43 9 * The above copyright notice and this permission notice shall be included in all copies or
screamer 73:8d28a0cb7b43 10 * substantial portions of the Software.
screamer 73:8d28a0cb7b43 11 *
screamer 73:8d28a0cb7b43 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
screamer 73:8d28a0cb7b43 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
screamer 73:8d28a0cb7b43 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
screamer 73:8d28a0cb7b43 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
screamer 73:8d28a0cb7b43 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
screamer 73:8d28a0cb7b43 17 */
screamer 73:8d28a0cb7b43 18
screamer 73:8d28a0cb7b43 19 #ifndef USBCLASS_HID_TYPES
screamer 73:8d28a0cb7b43 20 #define USBCLASS_HID_TYPES
screamer 73:8d28a0cb7b43 21
screamer 73:8d28a0cb7b43 22 #include <stdint.h>
screamer 73:8d28a0cb7b43 23
screamer 73:8d28a0cb7b43 24 /* */
screamer 73:8d28a0cb7b43 25 #define HID_VERSION_1_11 (0x0111)
screamer 73:8d28a0cb7b43 26
screamer 73:8d28a0cb7b43 27 /* HID Class */
screamer 73:8d28a0cb7b43 28 #define HID_CLASS (3)
screamer 73:8d28a0cb7b43 29 #define HID_SUBCLASS_NONE (0)
screamer 73:8d28a0cb7b43 30 #define HID_SUBCLASS_BOOT (1)
screamer 73:8d28a0cb7b43 31 #define HID_PROTOCOL_NONE (0)
screamer 73:8d28a0cb7b43 32 #define HID_PROTOCOL_KEYBOARD (1)
screamer 73:8d28a0cb7b43 33 #define HID_PROTOCOL_MOUSE (2)
screamer 73:8d28a0cb7b43 34
screamer 73:8d28a0cb7b43 35 /* Descriptors */
screamer 73:8d28a0cb7b43 36 #define HID_DESCRIPTOR (33)
screamer 73:8d28a0cb7b43 37 #define HID_DESCRIPTOR_LENGTH (0x09)
screamer 73:8d28a0cb7b43 38 #define REPORT_DESCRIPTOR (34)
screamer 73:8d28a0cb7b43 39
screamer 73:8d28a0cb7b43 40 /* Class requests */
screamer 73:8d28a0cb7b43 41 #define GET_REPORT (0x1)
screamer 73:8d28a0cb7b43 42 #define GET_IDLE (0x2)
screamer 73:8d28a0cb7b43 43 #define SET_REPORT (0x9)
screamer 73:8d28a0cb7b43 44 #define SET_IDLE (0xa)
screamer 73:8d28a0cb7b43 45
screamer 73:8d28a0cb7b43 46 /* HID Class Report Descriptor */
screamer 73:8d28a0cb7b43 47 /* Short items: size is 0, 1, 2 or 3 specifying 0, 1, 2 or 4 (four) bytes */
screamer 73:8d28a0cb7b43 48 /* of data as per HID Class standard */
screamer 73:8d28a0cb7b43 49
screamer 73:8d28a0cb7b43 50 /* Main items */
screamer 73:8d28a0cb7b43 51 #define INPUT(size) (0x80 | size)
screamer 73:8d28a0cb7b43 52 #define OUTPUT(size) (0x90 | size)
screamer 73:8d28a0cb7b43 53 #define FEATURE(size) (0xb0 | size)
screamer 73:8d28a0cb7b43 54 #define COLLECTION(size) (0xa0 | size)
screamer 73:8d28a0cb7b43 55 #define END_COLLECTION(size) (0xc0 | size)
screamer 73:8d28a0cb7b43 56
screamer 73:8d28a0cb7b43 57 /* Global items */
screamer 73:8d28a0cb7b43 58 #define USAGE_PAGE(size) (0x04 | size)
screamer 73:8d28a0cb7b43 59 #define LOGICAL_MINIMUM(size) (0x14 | size)
screamer 73:8d28a0cb7b43 60 #define LOGICAL_MAXIMUM(size) (0x24 | size)
screamer 73:8d28a0cb7b43 61 #define PHYSICAL_MINIMUM(size) (0x34 | size)
screamer 73:8d28a0cb7b43 62 #define PHYSICAL_MAXIMUM(size) (0x44 | size)
screamer 73:8d28a0cb7b43 63 #define UNIT_EXPONENT(size) (0x54 | size)
screamer 73:8d28a0cb7b43 64 #define UNIT(size) (0x64 | size)
screamer 73:8d28a0cb7b43 65 #define REPORT_SIZE(size) (0x74 | size)
screamer 73:8d28a0cb7b43 66 #define REPORT_ID(size) (0x84 | size)
screamer 73:8d28a0cb7b43 67 #define REPORT_COUNT(size) (0x94 | size)
screamer 73:8d28a0cb7b43 68 #define PUSH(size) (0xa4 | size)
screamer 73:8d28a0cb7b43 69 #define POP(size) (0xb4 | size)
screamer 73:8d28a0cb7b43 70
screamer 73:8d28a0cb7b43 71 /* Local items */
screamer 73:8d28a0cb7b43 72 #define USAGE(size) (0x08 | size)
screamer 73:8d28a0cb7b43 73 #define USAGE_MINIMUM(size) (0x18 | size)
screamer 73:8d28a0cb7b43 74 #define USAGE_MAXIMUM(size) (0x28 | size)
screamer 73:8d28a0cb7b43 75 #define DESIGNATOR_INDEX(size) (0x38 | size)
screamer 73:8d28a0cb7b43 76 #define DESIGNATOR_MINIMUM(size) (0x48 | size)
screamer 73:8d28a0cb7b43 77 #define DESIGNATOR_MAXIMUM(size) (0x58 | size)
screamer 73:8d28a0cb7b43 78 #define STRING_INDEX(size) (0x78 | size)
screamer 73:8d28a0cb7b43 79 #define STRING_MINIMUM(size) (0x88 | size)
screamer 73:8d28a0cb7b43 80 #define STRING_MAXIMUM(size) (0x98 | size)
screamer 73:8d28a0cb7b43 81 #define DELIMITER(size) (0xa8 | size)
screamer 73:8d28a0cb7b43 82
screamer 73:8d28a0cb7b43 83 /* HID Report */
screamer 73:8d28a0cb7b43 84 /* Where report IDs are used the first byte of 'data' will be the */
screamer 73:8d28a0cb7b43 85 /* report ID and 'length' will include this report ID byte. */
screamer 73:8d28a0cb7b43 86
screamer 73:8d28a0cb7b43 87 #define MAX_HID_REPORT_SIZE (64)
screamer 73:8d28a0cb7b43 88
screamer 73:8d28a0cb7b43 89 typedef struct {
screamer 73:8d28a0cb7b43 90 uint32_t length;
screamer 73:8d28a0cb7b43 91 uint8_t data[MAX_HID_REPORT_SIZE];
screamer 73:8d28a0cb7b43 92 } HID_REPORT;
screamer 73:8d28a0cb7b43 93
screamer 73:8d28a0cb7b43 94 #endif