USB Mouse (relative) example for mbed NXP LPC11U24 beta
HID_devices/USBKeyboard.c@1:e089be2a6aa1, 2011-11-09 (annotated)
- 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?
User | Revision | Line number | New contents of line |
---|---|---|---|
chris | 0:163560051396 | 1 | /* USBKeyboard.c */ |
chris | 0:163560051396 | 2 | /* USB device example: Standard keyboard */ |
chris | 0:163560051396 | 3 | /* Copyright (c) 2011 ARM Limited. All rights reserved. */ |
chris | 0:163560051396 | 4 | |
chris | 0:163560051396 | 5 | #include "stdint.h" |
chris | 0:163560051396 | 6 | |
chris | 0:163560051396 | 7 | #include "USBKeyboard.h" |
chris | 0:163560051396 | 8 | |
chris | 0:163560051396 | 9 | /* |
chris | 0:163560051396 | 10 | * Descriptors |
chris | 0:163560051396 | 11 | */ |
chris | 0:163560051396 | 12 | |
chris | 0:163560051396 | 13 | uint8_t * USBKeyboard::ReportDesc() { |
chris | 0:163560051396 | 14 | static uint8_t reportDescriptor[] = { |
chris | 0:163560051396 | 15 | |
chris | 0:163560051396 | 16 | /* Based on Appendix E.6 of "Device Class Definition for Human Interface |
chris | 0:163560051396 | 17 | Devices (HID)" Version 1.11. */ |
chris | 0:163560051396 | 18 | |
chris | 0:163560051396 | 19 | USAGE_PAGE(1), 0x01, /* Generic Desktop */ |
chris | 0:163560051396 | 20 | USAGE(1), 0x06, /* Keyboard */ |
chris | 0:163560051396 | 21 | COLLECTION(1), 0x01, /* Application*/ |
chris | 0:163560051396 | 22 | REPORT_ID(1), REPORT_ID_KEYBOARD, |
chris | 0:163560051396 | 23 | |
chris | 0:163560051396 | 24 | USAGE_PAGE(1), 0x07, /* Key Codes */ |
chris | 0:163560051396 | 25 | USAGE_MINIMUM(1), 0xE0, |
chris | 0:163560051396 | 26 | USAGE_MAXIMUM(1), 0xE7, |
chris | 0:163560051396 | 27 | LOGICAL_MINIMUM(1), 0x00, |
chris | 0:163560051396 | 28 | LOGICAL_MAXIMUM(1), 0x01, |
chris | 0:163560051396 | 29 | REPORT_SIZE(1), 0x01, |
chris | 0:163560051396 | 30 | REPORT_COUNT(1), 0x08, |
chris | 0:163560051396 | 31 | INPUT(1), 0x02, /* Data, Variable, Absolute */ |
chris | 0:163560051396 | 32 | REPORT_COUNT(1), 0x01, |
chris | 0:163560051396 | 33 | REPORT_SIZE(1), 0x08, |
chris | 0:163560051396 | 34 | INPUT(1), 0x01, /* Constant */ |
chris | 0:163560051396 | 35 | REPORT_COUNT(1), 0x05, |
chris | 0:163560051396 | 36 | REPORT_SIZE(1), 0x01, |
chris | 0:163560051396 | 37 | |
chris | 0:163560051396 | 38 | |
chris | 0:163560051396 | 39 | USAGE_PAGE(1), 0x08, /* LEDs */ |
chris | 0:163560051396 | 40 | USAGE_MINIMUM(1), 0x01, |
chris | 0:163560051396 | 41 | USAGE_MAXIMUM(1), 0x05, |
chris | 0:163560051396 | 42 | OUTPUT(1), 0x02, /* Data, Variable, Absolute */ |
chris | 0:163560051396 | 43 | REPORT_COUNT(1), 0x01, |
chris | 0:163560051396 | 44 | REPORT_SIZE(1), 0x03, |
chris | 0:163560051396 | 45 | OUTPUT(1), 0x01, /* Constant */ |
chris | 0:163560051396 | 46 | REPORT_COUNT(1), 0x06, |
chris | 0:163560051396 | 47 | REPORT_SIZE(1), 0x08, |
chris | 0:163560051396 | 48 | LOGICAL_MINIMUM(1), 0x00, |
chris | 0:163560051396 | 49 | LOGICAL_MAXIMUM(1), 0x65, |
chris | 0:163560051396 | 50 | |
chris | 0:163560051396 | 51 | |
chris | 0:163560051396 | 52 | USAGE_PAGE(1), 0x07, /* Key Codes */ |
chris | 0:163560051396 | 53 | USAGE_MINIMUM(1), 0x00, |
chris | 0:163560051396 | 54 | USAGE_MAXIMUM(1), 0x65, |
chris | 0:163560051396 | 55 | INPUT(1), 0x00, /* Data, Array */ |
chris | 0:163560051396 | 56 | END_COLLECTION(0), |
chris | 0:163560051396 | 57 | |
chris | 0:163560051396 | 58 | /* Media Control */ |
chris | 0:163560051396 | 59 | USAGE_PAGE(1), 0x0C, |
chris | 0:163560051396 | 60 | USAGE(1), 0x01, |
chris | 0:163560051396 | 61 | COLLECTION(1), 0x01, |
chris | 0:163560051396 | 62 | REPORT_ID(1), REPORT_ID_VOLUME, |
chris | 0:163560051396 | 63 | USAGE_PAGE(1), 0x0C, |
chris | 0:163560051396 | 64 | LOGICAL_MINIMUM(1), 0x00, |
chris | 0:163560051396 | 65 | LOGICAL_MAXIMUM(1), 0x01, |
chris | 0:163560051396 | 66 | REPORT_SIZE(1), 0x01, |
chris | 0:163560051396 | 67 | REPORT_COUNT(1), 0x07, |
chris | 0:163560051396 | 68 | USAGE(1), 0xB5, /* Next Track */ |
chris | 0:163560051396 | 69 | USAGE(1), 0xB6, /* Previous Track */ |
chris | 0:163560051396 | 70 | USAGE(1), 0xB7, /* Stop */ |
chris | 0:163560051396 | 71 | USAGE(1), 0xCD, /* Play / Pause */ |
chris | 0:163560051396 | 72 | USAGE(1), 0xE2, /* Mute */ |
chris | 0:163560051396 | 73 | USAGE(1), 0xE9, /* Volume Up */ |
chris | 0:163560051396 | 74 | USAGE(1), 0xEA, /* Volume Down */ |
chris | 0:163560051396 | 75 | INPUT(1), 0x02, /* Input (Data, Variable, Absolute) */ |
chris | 0:163560051396 | 76 | REPORT_COUNT(1), 0x01, |
chris | 0:163560051396 | 77 | INPUT(1), 0x01, |
chris | 0:163560051396 | 78 | END_COLLECTION(0), |
chris | 0:163560051396 | 79 | |
chris | 0:163560051396 | 80 | }; |
chris | 0:163560051396 | 81 | reportLength = sizeof(reportDescriptor); |
chris | 0:163560051396 | 82 | return reportDescriptor; |
chris | 0:163560051396 | 83 | } |