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 USBDEVICE_TYPES_H
screamer 73:8d28a0cb7b43 20 #define USBDEVICE_TYPES_H
screamer 73:8d28a0cb7b43 21
screamer 73:8d28a0cb7b43 22 /* Standard requests */
screamer 73:8d28a0cb7b43 23 #define GET_STATUS (0)
screamer 73:8d28a0cb7b43 24 #define CLEAR_FEATURE (1)
screamer 73:8d28a0cb7b43 25 #define SET_FEATURE (3)
screamer 73:8d28a0cb7b43 26 #define SET_ADDRESS (5)
screamer 73:8d28a0cb7b43 27 #define GET_DESCRIPTOR (6)
screamer 73:8d28a0cb7b43 28 #define SET_DESCRIPTOR (7)
screamer 73:8d28a0cb7b43 29 #define GET_CONFIGURATION (8)
screamer 73:8d28a0cb7b43 30 #define SET_CONFIGURATION (9)
screamer 73:8d28a0cb7b43 31 #define GET_INTERFACE (10)
screamer 73:8d28a0cb7b43 32 #define SET_INTERFACE (11)
screamer 73:8d28a0cb7b43 33
screamer 73:8d28a0cb7b43 34 /* bmRequestType.dataTransferDirection */
screamer 73:8d28a0cb7b43 35 #define HOST_TO_DEVICE (0)
screamer 73:8d28a0cb7b43 36 #define DEVICE_TO_HOST (1)
screamer 73:8d28a0cb7b43 37
screamer 73:8d28a0cb7b43 38 /* bmRequestType.Type*/
screamer 73:8d28a0cb7b43 39 #define STANDARD_TYPE (0)
screamer 73:8d28a0cb7b43 40 #define CLASS_TYPE (1)
screamer 73:8d28a0cb7b43 41 #define VENDOR_TYPE (2)
screamer 73:8d28a0cb7b43 42 #define RESERVED_TYPE (3)
screamer 73:8d28a0cb7b43 43
screamer 73:8d28a0cb7b43 44 /* bmRequestType.Recipient */
screamer 73:8d28a0cb7b43 45 #define DEVICE_RECIPIENT (0)
screamer 73:8d28a0cb7b43 46 #define INTERFACE_RECIPIENT (1)
screamer 73:8d28a0cb7b43 47 #define ENDPOINT_RECIPIENT (2)
screamer 73:8d28a0cb7b43 48 #define OTHER_RECIPIENT (3)
screamer 73:8d28a0cb7b43 49
screamer 73:8d28a0cb7b43 50 /* Descriptors */
screamer 73:8d28a0cb7b43 51 #define DESCRIPTOR_TYPE(wValue) (wValue >> 8)
screamer 73:8d28a0cb7b43 52 #define DESCRIPTOR_INDEX(wValue) (wValue & 0xff)
screamer 73:8d28a0cb7b43 53
screamer 73:8d28a0cb7b43 54 typedef struct {
screamer 73:8d28a0cb7b43 55 struct {
screamer 73:8d28a0cb7b43 56 uint8_t dataTransferDirection;
screamer 73:8d28a0cb7b43 57 uint8_t Type;
screamer 73:8d28a0cb7b43 58 uint8_t Recipient;
screamer 73:8d28a0cb7b43 59 } bmRequestType;
screamer 73:8d28a0cb7b43 60 uint8_t bRequest;
screamer 73:8d28a0cb7b43 61 uint16_t wValue;
screamer 73:8d28a0cb7b43 62 uint16_t wIndex;
screamer 73:8d28a0cb7b43 63 uint16_t wLength;
screamer 73:8d28a0cb7b43 64 } SETUP_PACKET;
screamer 73:8d28a0cb7b43 65
screamer 73:8d28a0cb7b43 66 typedef struct {
screamer 73:8d28a0cb7b43 67 SETUP_PACKET setup;
screamer 73:8d28a0cb7b43 68 uint8_t *ptr;
screamer 73:8d28a0cb7b43 69 uint32_t remaining;
screamer 73:8d28a0cb7b43 70 uint8_t direction;
screamer 73:8d28a0cb7b43 71 bool zlp;
screamer 73:8d28a0cb7b43 72 bool notify;
screamer 73:8d28a0cb7b43 73 } CONTROL_TRANSFER;
screamer 73:8d28a0cb7b43 74
screamer 73:8d28a0cb7b43 75 typedef enum {ATTACHED, POWERED, DEFAULT, ADDRESS, CONFIGURED} DEVICE_STATE;
screamer 73:8d28a0cb7b43 76
screamer 73:8d28a0cb7b43 77 typedef struct {
screamer 73:8d28a0cb7b43 78 volatile DEVICE_STATE state;
screamer 73:8d28a0cb7b43 79 uint8_t configuration;
screamer 73:8d28a0cb7b43 80 bool suspended;
screamer 73:8d28a0cb7b43 81 } USB_DEVICE;
screamer 73:8d28a0cb7b43 82
screamer 73:8d28a0cb7b43 83 #endif