USB Mouse (relative) example for mbed NXP LPC11U24 beta

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers USBKeyboard.c Source File

USBKeyboard.c

00001 /* USBKeyboard.c */
00002 /* USB device example: Standard keyboard */
00003 /* Copyright (c) 2011 ARM Limited. All rights reserved. */
00004 
00005 #include "stdint.h"
00006 
00007 #include "USBKeyboard.h"
00008 
00009 /*
00010  *  Descriptors
00011  */
00012 
00013 uint8_t * USBKeyboard::ReportDesc() {
00014     static uint8_t reportDescriptor[] = {
00015 
00016         /* Based on Appendix E.6 of "Device Class Definition for Human Interface
00017            Devices (HID)" Version 1.11. */
00018 
00019         USAGE_PAGE(1), 0x01,                    /* Generic Desktop */
00020         USAGE(1), 0x06,                         /* Keyboard */
00021         COLLECTION(1), 0x01,                    /* Application*/
00022         REPORT_ID(1),       REPORT_ID_KEYBOARD,
00023 
00024         USAGE_PAGE(1), 0x07,                    /* Key Codes */
00025         USAGE_MINIMUM(1), 0xE0,
00026         USAGE_MAXIMUM(1), 0xE7,
00027         LOGICAL_MINIMUM(1), 0x00,
00028         LOGICAL_MAXIMUM(1), 0x01,
00029         REPORT_SIZE(1), 0x01,
00030         REPORT_COUNT(1), 0x08,
00031         INPUT(1), 0x02,                         /* Data, Variable, Absolute */
00032         REPORT_COUNT(1), 0x01,
00033         REPORT_SIZE(1), 0x08,
00034         INPUT(1), 0x01,                         /* Constant */
00035         REPORT_COUNT(1), 0x05,
00036         REPORT_SIZE(1), 0x01,
00037 
00038 
00039         USAGE_PAGE(1), 0x08,                    /* LEDs */
00040         USAGE_MINIMUM(1), 0x01,
00041         USAGE_MAXIMUM(1), 0x05,
00042         OUTPUT(1), 0x02,                        /* Data, Variable, Absolute */
00043         REPORT_COUNT(1), 0x01,
00044         REPORT_SIZE(1), 0x03,
00045         OUTPUT(1), 0x01,                        /* Constant */
00046         REPORT_COUNT(1), 0x06,
00047         REPORT_SIZE(1), 0x08,
00048         LOGICAL_MINIMUM(1), 0x00,
00049         LOGICAL_MAXIMUM(1), 0x65,
00050 
00051 
00052         USAGE_PAGE(1), 0x07,                    /* Key Codes */
00053         USAGE_MINIMUM(1), 0x00,
00054         USAGE_MAXIMUM(1), 0x65,
00055         INPUT(1), 0x00,                         /* Data, Array */
00056         END_COLLECTION(0),
00057 
00058         /* Media Control */
00059         USAGE_PAGE(1), 0x0C,
00060         USAGE(1), 0x01,
00061         COLLECTION(1), 0x01,
00062         REPORT_ID(1), REPORT_ID_VOLUME,
00063         USAGE_PAGE(1), 0x0C,
00064         LOGICAL_MINIMUM(1), 0x00,
00065         LOGICAL_MAXIMUM(1), 0x01,
00066         REPORT_SIZE(1), 0x01,
00067         REPORT_COUNT(1), 0x07,
00068         USAGE(1), 0xB5,             /* Next Track */
00069         USAGE(1), 0xB6,             /* Previous Track */
00070         USAGE(1), 0xB7,             /* Stop */
00071         USAGE(1), 0xCD,             /* Play / Pause */
00072         USAGE(1), 0xE2,             /* Mute */
00073         USAGE(1), 0xE9,             /* Volume Up */
00074         USAGE(1), 0xEA,             /* Volume Down */
00075         INPUT(1), 0x02,             /* Input (Data, Variable, Absolute) */
00076         REPORT_COUNT(1), 0x01,
00077         INPUT(1), 0x01,
00078         END_COLLECTION(0),
00079 
00080     };
00081     reportLength = sizeof(reportDescriptor);
00082     return reportDescriptor;
00083 }