Microchip® Advanced Software Framework

usb_protocol_cdc.h File Reference

USB Communication Device Class (CDC) protocol definitions.

Copyright (c) 2009-2018 Microchip Technology Inc. and its subsidiaries.

#include "compiler.h"

Data Structures

struct  usb_cdc_acm_desc_t
 CDC ACM Functional Descriptor. More...
 
struct  usb_cdc_call_mgmt_desc_t
 CDC Call Management Functional Descriptor. More...
 
struct  usb_cdc_control_signal_t
 Control signal structure. More...
 
struct  usb_cdc_hdr_desc_t
 CDC Header Functional Descriptor. More...
 
struct  usb_cdc_line_coding_t
 Line Coding structure. More...
 
struct  usb_cdc_notify_msg_t
 
struct  usb_cdc_notify_serial_state_t
 Hardware handshake support (cdc spec 1.1 chapter 6.3.5) More...
 
struct  usb_cdc_union_desc_t
 CDC Union Functional Descriptor. More...
 

Macros

Possible values of class
#define CDC_CLASS_DEVICE   0x02
 USB Communication Device Class. More...
 
#define CDC_CLASS_COMM   0x02
 CDC Communication Class Interface. More...
 
#define CDC_CLASS_DATA   0x0A
 CDC Data Class Interface. More...
 
USB CDC Subclass IDs
#define CDC_SUBCLASS_DLCM   0x01
 Direct Line Control Model. More...
 
#define CDC_SUBCLASS_ACM   0x02
 Abstract Control Model. More...
 
#define CDC_SUBCLASS_TCM   0x03
 Telephone Control Model. More...
 
#define CDC_SUBCLASS_MCCM   0x04
 Multi-Channel Control Model. More...
 
#define CDC_SUBCLASS_CCM   0x05
 CAPI Control Model. More...
 
#define CDC_SUBCLASS_ETH   0x06
 Ethernet Networking Control Model. More...
 
#define CDC_SUBCLASS_ATM   0x07
 ATM Networking Control Model. More...
 
USB CDC Communication Interface Protocol IDs
#define CDC_PROTOCOL_V25TER   0x01
 Common AT commands. More...
 
USB CDC Data Interface Protocol IDs
#define CDC_PROTOCOL_I430   0x30
 ISDN BRI. More...
 
#define CDC_PROTOCOL_HDLC   0x31
 HDLC. More...
 
#define CDC_PROTOCOL_TRANS   0x32
 Transparent. More...
 
#define CDC_PROTOCOL_Q921M   0x50
 Q.921 management protocol. More...
 
#define CDC_PROTOCOL_Q921   0x51
 Q.931 [sic] Data link protocol. More...
 
#define CDC_PROTOCOL_Q921TM   0x52
 Q.921 TEI-multiplexor. More...
 
#define CDC_PROTOCOL_V42BIS   0x90
 Data compression procedures. More...
 
#define CDC_PROTOCOL_Q931   0x91
 Euro-ISDN protocol control. More...
 
#define CDC_PROTOCOL_V120   0x92
 V.24 rate adaption to ISDN. More...
 
#define CDC_PROTOCOL_CAPI20   0x93
 CAPI Commands. More...
 
#define CDC_PROTOCOL_HOST   0xFD
 Host based driver. More...
 
#define CDC_PROTOCOL_PUFD   0xFE
 Describes the Protocol Unit Functional Descriptors [sic] on Communication Class Interface. More...
 
USB CDC Functional Descriptor Types
#define CDC_CS_INTERFACE   0x24
 Interface Functional Descriptor. More...
 
#define CDC_CS_ENDPOINT   0x25
 Endpoint Functional Descriptor. More...
 
USB CDC Functional Descriptor Subtypes
#define CDC_SCS_HEADER   0x00
 Header Functional Descriptor. More...
 
#define CDC_SCS_CALL_MGMT   0x01
 Call Management. More...
 
#define CDC_SCS_ACM   0x02
 Abstract Control Management. More...
 
#define CDC_SCS_UNION   0x06
 Union Functional Descriptor. More...
 
USB CDC Request IDs
#define USB_REQ_CDC_SEND_ENCAPSULATED_COMMAND   0x00
 
#define USB_REQ_CDC_GET_ENCAPSULATED_RESPONSE   0x01
 
#define USB_REQ_CDC_SET_COMM_FEATURE   0x02
 
#define USB_REQ_CDC_GET_COMM_FEATURE   0x03
 
#define USB_REQ_CDC_CLEAR_COMM_FEATURE   0x04
 
#define USB_REQ_CDC_SET_AUX_LINE_STATE   0x10
 
#define USB_REQ_CDC_SET_HOOK_STATE   0x11
 
#define USB_REQ_CDC_PULSE_SETUP   0x12
 
#define USB_REQ_CDC_SEND_PULSE   0x13
 
#define USB_REQ_CDC_SET_PULSE_TIME   0x14
 
#define USB_REQ_CDC_RING_AUX_JACK   0x15
 
#define USB_REQ_CDC_SET_LINE_CODING   0x20
 
#define USB_REQ_CDC_GET_LINE_CODING   0x21
 
#define USB_REQ_CDC_SET_CONTROL_LINE_STATE   0x22
 
#define USB_REQ_CDC_SEND_BREAK   0x23
 
#define USB_REQ_CDC_SET_RINGER_PARMS   0x30
 
#define USB_REQ_CDC_GET_RINGER_PARMS   0x31
 
#define USB_REQ_CDC_SET_OPERATION_PARMS   0x32
 
#define USB_REQ_CDC_GET_OPERATION_PARMS   0x33
 
#define USB_REQ_CDC_SET_LINE_PARMS   0x34
 
#define USB_REQ_CDC_GET_LINE_PARMS   0x35
 
#define USB_REQ_CDC_DIAL_DIGITS   0x36
 
#define USB_REQ_CDC_SET_UNIT_PARAMETER   0x37
 
#define USB_REQ_CDC_GET_UNIT_PARAMETER   0x38
 
#define USB_REQ_CDC_CLEAR_UNIT_PARAMETER   0x39
 
#define USB_REQ_CDC_GET_PROFILE   0x3A
 
#define USB_REQ_CDC_SET_ETHERNET_MULTICAST_FILTERS   0x40
 
#define USB_REQ_CDC_SET_ETHERNET_POWER_MANAGEMENT_PATTERNFILTER   0x41
 
#define USB_REQ_CDC_GET_ETHERNET_POWER_MANAGEMENT_PATTERNFILTER   0x42
 
#define USB_REQ_CDC_SET_ETHERNET_PACKET_FILTER   0x43
 
#define USB_REQ_CDC_GET_ETHERNET_STATISTIC   0x44
 
#define USB_REQ_CDC_SET_ATM_DATA_FORMAT   0x50
 
#define USB_REQ_CDC_GET_ATM_DEVICE_STATISTICS   0x51
 
#define USB_REQ_CDC_SET_ATM_DEFAULT_VC   0x52
 
#define USB_REQ_CDC_GET_ATM_VC_STATISTICS   0x53
 
#define USB_REQ_CDC_NOTIFY_RING_DETECT   0x09
 
#define USB_REQ_CDC_NOTIFY_SERIAL_STATE   0x20
 
#define USB_REQ_CDC_NOTIFY_CALL_STATE_CHANGE   0x28
 
#define USB_REQ_CDC_NOTIFY_LINE_STATE_CHANGE   0x29
 
USB CDC Call Management Capabilities
#define CDC_CALL_MGMT_SUPPORTED   (1 << 0)
 Device handles call management itself. More...
 
#define CDC_CALL_MGMT_OVER_DCI   (1 << 1)
 Device can send/receive call management info over a Data Class interface. More...
 
USB CDC ACM Capabilities
#define CDC_ACM_SUPPORT_FEATURE_REQUESTS   (1 << 0)
 Device supports the request combination of Set_Comm_Feature, Clear_Comm_Feature, and Get_Comm_Feature. More...
 
#define CDC_ACM_SUPPORT_LINE_REQUESTS   (1 << 1)
 Device supports the request combination of Set_Line_Coding, Set_Control_Line_State, Get_Line_Coding, and the notification Serial_State. More...
 
#define CDC_ACM_SUPPORT_SENDBREAK_REQUESTS   (1 << 2)
 Device supports the request Send_Break. More...
 
#define CDC_ACM_SUPPORT_NOTIFY_REQUESTS   (1 << 3)
 Device supports the notification Network_Connection. More...
 
Possible values in usb_cdc_control_signal_t
#define CDC_CTRL_SIGNAL_ACTIVATE_CARRIER   (1 << 1)
 Carrier control for half duplex modems. More...
 
#define CDC_CTRL_SIGNAL_DTE_PRESENT   (1 << 0)
 Indicates to DCE if DTE is present or not. More...
 
Possible values in usb_cdc_notify_serial_state_t
#define CDC_SERIAL_STATE_DCD   CPU_TO_LE16((1<<0))
 
#define CDC_SERIAL_STATE_DSR   CPU_TO_LE16((1<<1))
 
#define CDC_SERIAL_STATE_BREAK   CPU_TO_LE16((1<<2))
 
#define CDC_SERIAL_STATE_RING   CPU_TO_LE16((1<<3))
 
#define CDC_SERIAL_STATE_FRAMING   CPU_TO_LE16((1<<4))
 
#define CDC_SERIAL_STATE_PARITY   CPU_TO_LE16((1<<5))
 
#define CDC_SERIAL_STATE_OVERRUN   CPU_TO_LE16((1<<6))
 

Enumerations

USB CDC line coding
enum  cdc_char_format {
  CDC_STOP_BITS_1 = 0,
  CDC_STOP_BITS_1_5 = 1,
  CDC_STOP_BITS_2 = 2
}
 Possible values of bCharFormat. More...
 
enum  cdc_parity {
  CDC_PAR_NONE = 0,
  CDC_PAR_ODD = 1,
  CDC_PAR_EVEN = 2,
  CDC_PAR_MARK = 3,
  CDC_PAR_SPACE = 4
}
 Possible values of bParityType. More...
 

#define CDC_CTRL_SIGNAL_ACTIVATE_CARRIER   (1 << 1)

Carrier control for half duplex modems.

This signal corresponds to V.24 signal 105 and RS-232 signal RTS. The device ignores the value of this bit when operating in full duplex mode.

Referenced by udi_cdc_comm_setup().

#define CDC_CTRL_SIGNAL_DTE_PRESENT   (1 << 0)

Indicates to DCE if DTE is present or not.

This signal corresponds to V.24 signal 108/2 and RS-232 signal DTR.

Referenced by udi_cdc_comm_setup().

#define CDC_SERIAL_STATE_BREAK   CPU_TO_LE16((1<<2))
#define CDC_SERIAL_STATE_DCD   CPU_TO_LE16((1<<0))
#define CDC_SERIAL_STATE_DSR   CPU_TO_LE16((1<<1))
#define CDC_SERIAL_STATE_FRAMING   CPU_TO_LE16((1<<4))
#define CDC_SERIAL_STATE_OVERRUN   CPU_TO_LE16((1<<6))
#define CDC_SERIAL_STATE_PARITY   CPU_TO_LE16((1<<5))
#define CDC_SERIAL_STATE_RING   CPU_TO_LE16((1<<3))

Possible values of bCharFormat.

Enumerator
CDC_STOP_BITS_1 

1 stop bit

CDC_STOP_BITS_1_5 

1.5 stop bits

CDC_STOP_BITS_2 

2 stop bits

enum cdc_parity

Possible values of bParityType.

Enumerator
CDC_PAR_NONE 

No parity.

CDC_PAR_ODD 

Odd parity.

CDC_PAR_EVEN 

Even parity.

CDC_PAR_MARK 

Parity forced to 0 (space)

CDC_PAR_SPACE 

Parity forced to 1 (mark)