COSA
An Object-Oriented Platform for Arduino Programming
Core.h File Reference
#include "Cosa/Types.h"
Include dependency graph for Core.h:

Go to the source code of this file.

Classes

struct  DeviceDescriptor
 
struct  ConfigDescriptor
 
struct  InterfaceDescriptor
 
struct  EndpointDescriptor
 
struct  IADDescriptor
 
struct  CDCCSInterfaceDescriptor
 
struct  CDCCSInterfaceDescriptor4
 
struct  CMFunctionalDescriptor
 
struct  ACMFunctionalDescriptor
 
struct  CDCDescriptor
 
struct  MSCDescriptor
 
struct  HIDDescDescriptor
 
struct  HIDDescriptor
 

Macros

#define GET_STATUS   0
 
#define CLEAR_FEATURE   1
 
#define SET_FEATURE   3
 
#define SET_ADDRESS   5
 
#define GET_DESCRIPTOR   6
 
#define SET_DESCRIPTOR   7
 
#define GET_CONFIGURATION   8
 
#define SET_CONFIGURATION   9
 
#define GET_INTERFACE   10
 
#define SET_INTERFACE   11
 
#define REQUEST_HOSTTODEVICE   0x00
 
#define REQUEST_DEVICETOHOST   0x80
 
#define REQUEST_DIRECTION   0x80
 
#define REQUEST_STANDARD   0x00
 
#define REQUEST_CLASS   0x20
 
#define REQUEST_VENDOR   0x40
 
#define REQUEST_TYPE   0x60
 
#define REQUEST_DEVICE   0x00
 
#define REQUEST_INTERFACE   0x01
 
#define REQUEST_ENDPOINT   0x02
 
#define REQUEST_OTHER   0x03
 
#define REQUEST_RECIPIENT   0x03
 
#define REQUEST_DEVICETOHOST_CLASS_INTERFACE   (REQUEST_DEVICETOHOST + REQUEST_CLASS + REQUEST_INTERFACE)
 
#define REQUEST_HOSTTODEVICE_CLASS_INTERFACE   (REQUEST_HOSTTODEVICE + REQUEST_CLASS + REQUEST_INTERFACE)
 
#define CDC_SET_LINE_CODING   0x20
 
#define CDC_GET_LINE_CODING   0x21
 
#define CDC_SET_CONTROL_LINE_STATE   0x22
 
#define CDC_SEND_BREAK   0x23
 
#define MSC_RESET   0xFF
 
#define MSC_GET_MAX_LUN   0xFE
 
#define HID_GET_REPORT   0x01
 
#define HID_GET_IDLE   0x02
 
#define HID_GET_PROTOCOL   0x03
 
#define HID_SET_REPORT   0x09
 
#define HID_SET_IDLE   0x0A
 
#define HID_SET_PROTOCOL   0x0B
 
#define USB_DEVICE_DESC_SIZE   18
 
#define USB_CONFIGUARTION_DESC_SIZE   9
 
#define USB_INTERFACE_DESC_SIZE   9
 
#define USB_ENDPOINT_DESC_SIZE   7
 
#define USB_DEVICE_DESCRIPTOR_TYPE   1
 
#define USB_CONFIGURATION_DESCRIPTOR_TYPE   2
 
#define USB_STRING_DESCRIPTOR_TYPE   3
 
#define USB_INTERFACE_DESCRIPTOR_TYPE   4
 
#define USB_ENDPOINT_DESCRIPTOR_TYPE   5
 
#define USB_DEVICE_CLASS_COMMUNICATIONS   0x02
 
#define USB_DEVICE_CLASS_HUMAN_INTERFACE   0x03
 
#define USB_DEVICE_CLASS_STORAGE   0x08
 
#define USB_DEVICE_CLASS_VENDOR_SPECIFIC   0xFF
 
#define USB_CONFIG_POWERED_MASK   0x40
 
#define USB_CONFIG_BUS_POWERED   0x80
 
#define USB_CONFIG_SELF_POWERED   0xC0
 
#define USB_CONFIG_REMOTE_WAKEUP   0x20
 
#define USB_CONFIG_POWER_MA(mA)   ((mA)/2)
 
#define USB_ENDPOINT_DIRECTION_MASK   0x80
 
#define USB_ENDPOINT_OUT(addr)   ((addr) | 0x00)
 
#define USB_ENDPOINT_IN(addr)   ((addr) | 0x80)
 
#define USB_ENDPOINT_TYPE_MASK   0x03
 
#define USB_ENDPOINT_TYPE_CONTROL   0x00
 
#define USB_ENDPOINT_TYPE_ISOCHRONOUS   0x01
 
#define USB_ENDPOINT_TYPE_BULK   0x02
 
#define USB_ENDPOINT_TYPE_INTERRUPT   0x03
 
#define TOBYTES(x)   ((x) & 0xFF),(((x) >> 8) & 0xFF)
 
#define CDC_V1_10   0x0110
 
#define CDC_COMMUNICATION_INTERFACE_CLASS   0x02
 
#define CDC_CALL_MANAGEMENT   0x01
 
#define CDC_ABSTRACT_CONTROL_MODEL   0x02
 
#define CDC_HEADER   0x00
 
#define CDC_ABSTRACT_CONTROL_MANAGEMENT   0x02
 
#define CDC_UNION   0x06
 
#define CDC_CS_INTERFACE   0x24
 
#define CDC_CS_ENDPOINT   0x25
 
#define CDC_DATA_INTERFACE_CLASS   0x0A
 
#define MSC_SUBCLASS_SCSI   0x06
 
#define MSC_PROTOCOL_BULK_ONLY   0x50
 
#define HID_HID_DESCRIPTOR_TYPE   0x21
 
#define HID_REPORT_DESCRIPTOR_TYPE   0x22
 
#define HID_PHYSICAL_DESCRIPTOR_TYPE   0x23
 
#define D_DEVICE(_class, _subClass, _proto, _packetSize0, _vid, _pid, _version, _im, _ip, _is, _configs)   { 18, 1, 0x200, _class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs }
 
#define D_CONFIG(_totalLength, _interfaces)   { 9, 2, _totalLength,_interfaces, 1, 0, USB_CONFIG_BUS_POWERED, USB_CONFIG_POWER_MA(500) }
 
#define D_INTERFACE(_n, _numEndpoints, _class, _subClass, _protocol)   { 9, 4, _n, 0, _numEndpoints, _class,_subClass, _protocol, 0 }
 
#define D_ENDPOINT(_addr, _attr, _packetSize, _interval)   { 7, 5, _addr,_attr,_packetSize, _interval }
 
#define D_IAD(_firstInterface, _count, _class, _subClass, _protocol)   { 8, 11, _firstInterface, _count, _class, _subClass, _protocol, 0 }
 
#define D_HIDREPORT(_descriptorLength)   { 9, 0x21, 0x1, 0x1, 0, 1, 0x22, _descriptorLength, 0 }
 
#define D_CDCCS(_subtype, _d0, _d1)   { 5, 0x24, _subtype, _d0, _d1 }
 
#define D_CDCCS4(_subtype, _d0)   { 4, 0x24, _subtype, _d0 }
 

Detailed Description

Version
1.0

License

Copyright (c) 2010, Peter Barrett (original author) Copyright (C) 2013-2015, Mikael Patel (refactoring and extensions)

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

This file is part of the Arduino Che Cosa project.

Definition in file Core.h.

Macro Definition Documentation

#define CDC_ABSTRACT_CONTROL_MANAGEMENT   0x02

Definition at line 122 of file Core.h.

#define CDC_ABSTRACT_CONTROL_MODEL   0x02

Definition at line 120 of file Core.h.

#define CDC_CALL_MANAGEMENT   0x01

Definition at line 119 of file Core.h.

#define CDC_COMMUNICATION_INTERFACE_CLASS   0x02

Definition at line 117 of file Core.h.

#define CDC_CS_ENDPOINT   0x25

Definition at line 125 of file Core.h.

#define CDC_CS_INTERFACE   0x24

Definition at line 124 of file Core.h.

#define CDC_DATA_INTERFACE_CLASS   0x0A

Definition at line 126 of file Core.h.

#define CDC_GET_LINE_CODING   0x21

Definition at line 63 of file Core.h.

#define CDC_HEADER   0x00

Definition at line 121 of file Core.h.

#define CDC_SEND_BREAK   0x23

Definition at line 65 of file Core.h.

#define CDC_SET_CONTROL_LINE_STATE   0x22

Definition at line 64 of file Core.h.

#define CDC_SET_LINE_CODING   0x20

Definition at line 62 of file Core.h.

#define CDC_UNION   0x06

Definition at line 123 of file Core.h.

#define CDC_V1_10   0x0110

Definition at line 116 of file Core.h.

#define CLEAR_FEATURE   1

Definition at line 29 of file Core.h.

#define D_CDCCS (   _subtype,
  _d0,
  _d1 
)    { 5, 0x24, _subtype, _d0, _d1 }

Definition at line 292 of file Core.h.

#define D_CDCCS4 (   _subtype,
  _d0 
)    { 4, 0x24, _subtype, _d0 }

Definition at line 293 of file Core.h.

#define D_CONFIG (   _totalLength,
  _interfaces 
)    { 9, 2, _totalLength,_interfaces, 1, 0, USB_CONFIG_BUS_POWERED, USB_CONFIG_POWER_MA(500) }

Definition at line 277 of file Core.h.

#define D_DEVICE (   _class,
  _subClass,
  _proto,
  _packetSize0,
  _vid,
  _pid,
  _version,
  _im,
  _ip,
  _is,
  _configs 
)    { 18, 1, 0x200, _class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs }

Definition at line 274 of file Core.h.

#define D_ENDPOINT (   _addr,
  _attr,
  _packetSize,
  _interval 
)    { 7, 5, _addr,_attr,_packetSize, _interval }

Definition at line 283 of file Core.h.

#define D_HIDREPORT (   _descriptorLength)    { 9, 0x21, 0x1, 0x1, 0, 1, 0x22, _descriptorLength, 0 }

Definition at line 289 of file Core.h.

#define D_IAD (   _firstInterface,
  _count,
  _class,
  _subClass,
  _protocol 
)    { 8, 11, _firstInterface, _count, _class, _subClass, _protocol, 0 }

Definition at line 286 of file Core.h.

#define D_INTERFACE (   _n,
  _numEndpoints,
  _class,
  _subClass,
  _protocol 
)    { 9, 4, _n, 0, _numEndpoints, _class,_subClass, _protocol, 0 }

Definition at line 280 of file Core.h.

#define GET_CONFIGURATION   8

Definition at line 34 of file Core.h.

#define GET_DESCRIPTOR   6

Definition at line 32 of file Core.h.

#define GET_INTERFACE   10

Definition at line 36 of file Core.h.

#define GET_STATUS   0

Definition at line 28 of file Core.h.

#define HID_GET_IDLE   0x02

Definition at line 71 of file Core.h.

#define HID_GET_PROTOCOL   0x03

Definition at line 72 of file Core.h.

#define HID_GET_REPORT   0x01

Definition at line 70 of file Core.h.

#define HID_HID_DESCRIPTOR_TYPE   0x21

Definition at line 131 of file Core.h.

#define HID_PHYSICAL_DESCRIPTOR_TYPE   0x23

Definition at line 133 of file Core.h.

#define HID_REPORT_DESCRIPTOR_TYPE   0x22

Definition at line 132 of file Core.h.

#define HID_SET_IDLE   0x0A

Definition at line 74 of file Core.h.

#define HID_SET_PROTOCOL   0x0B

Definition at line 75 of file Core.h.

#define HID_SET_REPORT   0x09

Definition at line 73 of file Core.h.

#define MSC_GET_MAX_LUN   0xFE

Definition at line 68 of file Core.h.

#define MSC_PROTOCOL_BULK_ONLY   0x50

Definition at line 129 of file Core.h.

#define MSC_RESET   0xFF

Definition at line 67 of file Core.h.

#define MSC_SUBCLASS_SCSI   0x06

Definition at line 128 of file Core.h.

#define REQUEST_CLASS   0x20

Definition at line 45 of file Core.h.

#define REQUEST_DEVICE   0x00

Definition at line 49 of file Core.h.

#define REQUEST_DEVICETOHOST   0x80

Definition at line 41 of file Core.h.

#define REQUEST_DEVICETOHOST_CLASS_INTERFACE   (REQUEST_DEVICETOHOST + REQUEST_CLASS + REQUEST_INTERFACE)

Definition at line 55 of file Core.h.

#define REQUEST_DIRECTION   0x80

Definition at line 42 of file Core.h.

#define REQUEST_ENDPOINT   0x02

Definition at line 51 of file Core.h.

#define REQUEST_HOSTTODEVICE   0x00

Definition at line 40 of file Core.h.

#define REQUEST_HOSTTODEVICE_CLASS_INTERFACE   (REQUEST_HOSTTODEVICE + REQUEST_CLASS + REQUEST_INTERFACE)

Definition at line 58 of file Core.h.

#define REQUEST_INTERFACE   0x01

Definition at line 50 of file Core.h.

#define REQUEST_OTHER   0x03

Definition at line 52 of file Core.h.

#define REQUEST_RECIPIENT   0x03

Definition at line 53 of file Core.h.

#define REQUEST_STANDARD   0x00

Definition at line 44 of file Core.h.

#define REQUEST_TYPE   0x60

Definition at line 47 of file Core.h.

#define REQUEST_VENDOR   0x40

Definition at line 46 of file Core.h.

#define SET_ADDRESS   5

Definition at line 31 of file Core.h.

#define SET_CONFIGURATION   9

Definition at line 35 of file Core.h.

#define SET_DESCRIPTOR   7

Definition at line 33 of file Core.h.

#define SET_FEATURE   3

Definition at line 30 of file Core.h.

#define SET_INTERFACE   11

Definition at line 37 of file Core.h.

#define TOBYTES (   x)    ((x) & 0xFF),(((x) >> 8) & 0xFF)

Definition at line 114 of file Core.h.

#define USB_CONFIG_BUS_POWERED   0x80

Definition at line 96 of file Core.h.

#define USB_CONFIG_POWER_MA (   mA)    ((mA)/2)

Definition at line 101 of file Core.h.

#define USB_CONFIG_POWERED_MASK   0x40

Definition at line 95 of file Core.h.

#define USB_CONFIG_REMOTE_WAKEUP   0x20

Definition at line 98 of file Core.h.

#define USB_CONFIG_SELF_POWERED   0xC0

Definition at line 97 of file Core.h.

#define USB_CONFIGUARTION_DESC_SIZE   9

Definition at line 80 of file Core.h.

#define USB_CONFIGURATION_DESCRIPTOR_TYPE   2

Definition at line 85 of file Core.h.

#define USB_DEVICE_CLASS_COMMUNICATIONS   0x02

Definition at line 90 of file Core.h.

#define USB_DEVICE_CLASS_HUMAN_INTERFACE   0x03

Definition at line 91 of file Core.h.

#define USB_DEVICE_CLASS_STORAGE   0x08

Definition at line 92 of file Core.h.

#define USB_DEVICE_CLASS_VENDOR_SPECIFIC   0xFF

Definition at line 93 of file Core.h.

#define USB_DEVICE_DESC_SIZE   18

Definition at line 79 of file Core.h.

#define USB_DEVICE_DESCRIPTOR_TYPE   1

Definition at line 84 of file Core.h.

#define USB_ENDPOINT_DESC_SIZE   7

Definition at line 82 of file Core.h.

#define USB_ENDPOINT_DESCRIPTOR_TYPE   5

Definition at line 88 of file Core.h.

#define USB_ENDPOINT_DIRECTION_MASK   0x80

Definition at line 104 of file Core.h.

#define USB_ENDPOINT_IN (   addr)    ((addr) | 0x80)

Definition at line 106 of file Core.h.

#define USB_ENDPOINT_OUT (   addr)    ((addr) | 0x00)

Definition at line 105 of file Core.h.

#define USB_ENDPOINT_TYPE_BULK   0x02

Definition at line 111 of file Core.h.

#define USB_ENDPOINT_TYPE_CONTROL   0x00

Definition at line 109 of file Core.h.

#define USB_ENDPOINT_TYPE_INTERRUPT   0x03

Definition at line 112 of file Core.h.

#define USB_ENDPOINT_TYPE_ISOCHRONOUS   0x01

Definition at line 110 of file Core.h.

#define USB_ENDPOINT_TYPE_MASK   0x03

Definition at line 108 of file Core.h.

#define USB_INTERFACE_DESC_SIZE   9

Definition at line 81 of file Core.h.

#define USB_INTERFACE_DESCRIPTOR_TYPE   4

Definition at line 87 of file Core.h.

#define USB_STRING_DESCRIPTOR_TYPE   3

Definition at line 86 of file Core.h.