1*10465441SEvalZero /* 2*10465441SEvalZero * Copyright (c) 2006-2018, RT-Thread Development Team 3*10465441SEvalZero * 4*10465441SEvalZero * SPDX-License-Identifier: Apache-2.0 5*10465441SEvalZero * 6*10465441SEvalZero * Change Logs: 7*10465441SEvalZero * Date Author Notes 8*10465441SEvalZero * 2012-10-03 Yi Qiu first version 9*10465441SEvalZero * 2012-12-12 heyuanjie87 add CDC endpoints collection 10*10465441SEvalZero */ 11*10465441SEvalZero 12*10465441SEvalZero #ifndef __CDC_H__ 13*10465441SEvalZero #define __CDC_H__ 14*10465441SEvalZero 15*10465441SEvalZero #define USB_CDC_BUFSIZE 0x40 16*10465441SEvalZero 17*10465441SEvalZero #define USB_CDC_CLASS_COMM 0x02 18*10465441SEvalZero #define USB_CDC_CLASS_DATA 0x0A 19*10465441SEvalZero 20*10465441SEvalZero #define USB_CDC_SUBCLASS_NONE 0x00 21*10465441SEvalZero #define USB_CDC_SUBCLASS_DLCM 0x01 22*10465441SEvalZero #define USB_CDC_SUBCLASS_ACM 0x02 23*10465441SEvalZero #define USB_CDC_SUBCLASS_TCM 0x03 24*10465441SEvalZero #define USB_CDC_SUBCLASS_MCCM 0x04 25*10465441SEvalZero #define USB_CDC_SUBCLASS_CCM 0x05 26*10465441SEvalZero #define USB_CDC_SUBCLASS_ETH 0x06 27*10465441SEvalZero #define USB_CDC_SUBCLASS_ATM 0x07 28*10465441SEvalZero #define USB_CDC_SUBCLASS_EEM 0x0C 29*10465441SEvalZero 30*10465441SEvalZero #define USB_CDC_PROTOCOL_NONE 0x00 31*10465441SEvalZero #define USB_CDC_PROTOCOL_V25TER 0x01 32*10465441SEvalZero #define USB_CDC_PROTOCOL_I430 0x30 33*10465441SEvalZero #define USB_CDC_PROTOCOL_HDLC 0x31 34*10465441SEvalZero #define USB_CDC_PROTOCOL_TRANS 0x32 35*10465441SEvalZero #define USB_CDC_PROTOCOL_Q921M 0x50 36*10465441SEvalZero #define USB_CDC_PROTOCOL_Q921 0x51 37*10465441SEvalZero #define USB_CDC_PROTOCOL_Q921TM 0x52 38*10465441SEvalZero #define USB_CDC_PROTOCOL_V42BIS 0x90 39*10465441SEvalZero #define USB_CDC_PROTOCOL_Q931 0x91 40*10465441SEvalZero #define USB_CDC_PROTOCOL_V120 0x92 41*10465441SEvalZero #define USB_CDC_PROTOCOL_CAPI20 0x93 42*10465441SEvalZero #define USB_CDC_PROTOCOL_HOST 0xFD 43*10465441SEvalZero #define USB_CDC_PROTOCOL_PUFD 0xFE 44*10465441SEvalZero #define USB_CDC_PROTOCOL_VENDOR 0xFF 45*10465441SEvalZero #define USB_CDC_PROTOCOL_EEM 0x07 46*10465441SEvalZero 47*10465441SEvalZero #define USB_CDC_CS_INTERFACE 0x24 48*10465441SEvalZero #define USB_CDC_CS_ENDPOINT 0x25 49*10465441SEvalZero 50*10465441SEvalZero #define USB_CDC_SCS_HEADER 0x00 51*10465441SEvalZero #define USB_CDC_SCS_CALL_MGMT 0x01 52*10465441SEvalZero #define USB_CDC_SCS_ACM 0x02 53*10465441SEvalZero #define USB_CDC_SCS_UNION 0x06 54*10465441SEvalZero #define USB_CDC_SCS_ETH 0x0F 55*10465441SEvalZero 56*10465441SEvalZero #define CDC_SEND_ENCAPSULATED_COMMAND 0x00 57*10465441SEvalZero #define CDC_GET_ENCAPSULATED_RESPONSE 0x01 58*10465441SEvalZero #define CDC_SET_COMM_FEATURE 0x02 59*10465441SEvalZero #define CDC_GET_COMM_FEATURE 0x03 60*10465441SEvalZero #define CDC_CLEAR_COMM_FEATURE 0x04 61*10465441SEvalZero #define CDC_SET_AUX_LINE_STATE 0x10 62*10465441SEvalZero #define CDC_SET_HOOK_STATE 0x11 63*10465441SEvalZero #define CDC_PULSE_SETUP 0x12 64*10465441SEvalZero #define CDC_SEND_PULSE 0x13 65*10465441SEvalZero #define CDC_SET_PULSE_TIME 0x14 66*10465441SEvalZero #define CDC_RING_AUX_JACK 0x15 67*10465441SEvalZero #define CDC_SET_LINE_CODING 0x20 68*10465441SEvalZero #define CDC_GET_LINE_CODING 0x21 69*10465441SEvalZero #define CDC_SET_CONTROL_LINE_STATE 0x22 70*10465441SEvalZero #define CDC_SEND_BREAK 0x23 71*10465441SEvalZero #define CDC_SET_RINGER_PARMS 0x30 72*10465441SEvalZero #define CDC_GET_RINGER_PARMS 0x31 73*10465441SEvalZero #define CDC_SET_OPERATION_PARMS 0x32 74*10465441SEvalZero #define CDC_GET_OPERATION_PARMS 0x33 75*10465441SEvalZero #define CDC_SET_LINE_PARMS 0x34 76*10465441SEvalZero #define CDC_GET_LINE_PARMS 0x35 77*10465441SEvalZero #define CDC_DIAL_DIGITS 0x36 78*10465441SEvalZero #define CDC_SET_UNIT_PARAMETER 0x37 79*10465441SEvalZero #define CDC_GET_UNIT_PARAMETER 0x38 80*10465441SEvalZero #define CDC_CLEAR_UNIT_PARAMETER 0x39 81*10465441SEvalZero #define CDC_GET_PROFILE 0x3A 82*10465441SEvalZero #define CDC_SET_ETH_MULTICAST_FILTERS 0x40 83*10465441SEvalZero #define CDC_SET_ETH_POWER_MGMT_FILT 0x41 84*10465441SEvalZero #define CDC_GET_ETH_POWER_MGMT_FILT 0x42 85*10465441SEvalZero #define CDC_SET_ETH_PACKET_FILTER 0x43 86*10465441SEvalZero #define CDC_GET_ETH_STATISTIC 0x44 87*10465441SEvalZero #define CDC_SET_ATM_DATA_FORMAT 0x50 88*10465441SEvalZero #define CDC_GET_ATM_DEVICE_STATISTICS 0x51 89*10465441SEvalZero #define CDC_SET_ATM_DEFAULT_VC 0x52 90*10465441SEvalZero #define CDC_GET_ATM_VC_STATISTICS 0x53 91*10465441SEvalZero 92*10465441SEvalZero #pragma pack(1) 93*10465441SEvalZero 94*10465441SEvalZero struct ucdc_header_descriptor 95*10465441SEvalZero { 96*10465441SEvalZero rt_uint8_t length; 97*10465441SEvalZero rt_uint8_t type; 98*10465441SEvalZero rt_uint8_t subtype; 99*10465441SEvalZero rt_uint16_t bcd; 100*10465441SEvalZero }; 101*10465441SEvalZero typedef struct ucdc_header_descriptor* ucdc_hdr_desc_t; 102*10465441SEvalZero 103*10465441SEvalZero struct ucdc_acm_descriptor 104*10465441SEvalZero { 105*10465441SEvalZero rt_uint8_t length; 106*10465441SEvalZero rt_uint8_t type; 107*10465441SEvalZero rt_uint8_t subtype; 108*10465441SEvalZero rt_uint8_t capabilties; 109*10465441SEvalZero }; 110*10465441SEvalZero typedef struct ucdc_acm_descriptor* ucdc_acm_desc_t; 111*10465441SEvalZero 112*10465441SEvalZero struct ucdc_call_mgmt_descriptor 113*10465441SEvalZero { 114*10465441SEvalZero rt_uint8_t length; 115*10465441SEvalZero rt_uint8_t type; 116*10465441SEvalZero rt_uint8_t subtype; 117*10465441SEvalZero rt_uint8_t capabilties; 118*10465441SEvalZero rt_uint8_t data_interface; 119*10465441SEvalZero }; 120*10465441SEvalZero typedef struct ucdc_call_mgmt_descriptor* ucdc_call_mgmt_desc_t; 121*10465441SEvalZero 122*10465441SEvalZero struct ucdc_union_descriptor 123*10465441SEvalZero { 124*10465441SEvalZero rt_uint8_t length; 125*10465441SEvalZero rt_uint8_t type; 126*10465441SEvalZero rt_uint8_t subtype; 127*10465441SEvalZero rt_uint8_t master_interface; 128*10465441SEvalZero rt_uint8_t slave_interface0; 129*10465441SEvalZero }; 130*10465441SEvalZero typedef struct ucdc_union_descriptor* ucdc_union_desc_t; 131*10465441SEvalZero 132*10465441SEvalZero struct ucdc_comm_descriptor 133*10465441SEvalZero { 134*10465441SEvalZero #ifdef RT_USB_DEVICE_COMPOSITE 135*10465441SEvalZero struct uiad_descriptor iad_desc; 136*10465441SEvalZero #endif 137*10465441SEvalZero struct uinterface_descriptor intf_desc; 138*10465441SEvalZero struct ucdc_header_descriptor hdr_desc; 139*10465441SEvalZero struct ucdc_call_mgmt_descriptor call_mgmt_desc; 140*10465441SEvalZero struct ucdc_acm_descriptor acm_desc; 141*10465441SEvalZero struct ucdc_union_descriptor union_desc; 142*10465441SEvalZero struct uendpoint_descriptor ep_desc; 143*10465441SEvalZero }; 144*10465441SEvalZero typedef struct ucdc_comm_descriptor* ucdc_comm_desc_t; 145*10465441SEvalZero 146*10465441SEvalZero struct ucdc_enet_descriptor 147*10465441SEvalZero { 148*10465441SEvalZero rt_uint8_t bFunctionLength; 149*10465441SEvalZero rt_uint8_t bDescriptorType; 150*10465441SEvalZero rt_uint8_t bDescriptorSubtype; 151*10465441SEvalZero rt_uint8_t iMACAddress; 152*10465441SEvalZero rt_uint8_t bmEthernetStatistics[4]; 153*10465441SEvalZero rt_uint16_t wMaxSegmentSize; 154*10465441SEvalZero rt_uint16_t wMCFilters; 155*10465441SEvalZero rt_uint8_t bNumberPowerFilters; 156*10465441SEvalZero }; 157*10465441SEvalZero struct ucdc_eth_descriptor 158*10465441SEvalZero { 159*10465441SEvalZero #ifdef RT_USB_DEVICE_COMPOSITE 160*10465441SEvalZero struct uiad_descriptor iad_desc; 161*10465441SEvalZero #endif 162*10465441SEvalZero struct uinterface_descriptor intf_desc; 163*10465441SEvalZero struct ucdc_header_descriptor hdr_desc; 164*10465441SEvalZero struct ucdc_union_descriptor union_desc; 165*10465441SEvalZero struct ucdc_enet_descriptor enet_desc; 166*10465441SEvalZero struct uendpoint_descriptor ep_desc; 167*10465441SEvalZero }; 168*10465441SEvalZero typedef struct ucdc_eth_descriptor* ucdc_eth_desc_t; 169*10465441SEvalZero 170*10465441SEvalZero struct ucdc_data_descriptor 171*10465441SEvalZero { 172*10465441SEvalZero struct uinterface_descriptor intf_desc; 173*10465441SEvalZero struct uendpoint_descriptor ep_out_desc; 174*10465441SEvalZero struct uendpoint_descriptor ep_in_desc; 175*10465441SEvalZero }; 176*10465441SEvalZero typedef struct ucdc_data_descriptor* ucdc_data_desc_t; 177*10465441SEvalZero 178*10465441SEvalZero struct ucdc_line_coding 179*10465441SEvalZero { 180*10465441SEvalZero rt_uint32_t dwDTERate; 181*10465441SEvalZero rt_uint8_t bCharFormat; 182*10465441SEvalZero rt_uint8_t bParityType; 183*10465441SEvalZero rt_uint8_t bDataBits; 184*10465441SEvalZero }; 185*10465441SEvalZero typedef struct ucdc_line_coding* ucdc_line_coding_t; 186*10465441SEvalZero 187*10465441SEvalZero struct cdc_eps 188*10465441SEvalZero { 189*10465441SEvalZero uep_t ep_out; 190*10465441SEvalZero uep_t ep_in; 191*10465441SEvalZero uep_t ep_cmd; 192*10465441SEvalZero }; 193*10465441SEvalZero typedef struct cdc_eps* cdc_eps_t; 194*10465441SEvalZero 195*10465441SEvalZero 196*10465441SEvalZero 197*10465441SEvalZero struct ucdc_management_element_notifications 198*10465441SEvalZero { 199*10465441SEvalZero rt_uint8_t bmRequestType; 200*10465441SEvalZero rt_uint8_t bNotificatinCode; 201*10465441SEvalZero rt_uint16_t wValue; 202*10465441SEvalZero rt_uint16_t wIndex; 203*10465441SEvalZero rt_uint16_t wLength; 204*10465441SEvalZero }; 205*10465441SEvalZero typedef struct ucdc_management_element_notifications * ucdc_mg_notifications_t; 206*10465441SEvalZero 207*10465441SEvalZero struct ucdc_connection_speed_change_data 208*10465441SEvalZero { 209*10465441SEvalZero rt_uint32_t down_bit_rate; 210*10465441SEvalZero rt_uint32_t up_bit_rate; 211*10465441SEvalZero }; 212*10465441SEvalZero typedef struct connection_speed_change_data * connect_speed_data_t; 213*10465441SEvalZero 214*10465441SEvalZero enum ucdc_notification_code 215*10465441SEvalZero { 216*10465441SEvalZero UCDC_NOTIFI_NETWORK_CONNECTION = 0x00, 217*10465441SEvalZero UCDC_NOTIFI_RESPONSE_AVAILABLE = 0x01, 218*10465441SEvalZero UCDC_NOTIFI_AUX_JACK_HOOK_STATE = 0x08, 219*10465441SEvalZero UCDC_NOTIFI_RING_DETECT = 0x09, 220*10465441SEvalZero UCDC_NOTIFI_SERIAL_STATE = 0x20, 221*10465441SEvalZero UCDC_NOTIFI_CALL_STATE_CHANGE = 0x28, 222*10465441SEvalZero UCDC_NOTIFI_LINE_STATE_CHANGE = 0x29, 223*10465441SEvalZero UCDC_NOTIFI_CONNECTION_SPEED_CHANGE = 0x2A, 224*10465441SEvalZero }; 225*10465441SEvalZero typedef enum ucdc_notification_code ucdc_notification_code_t; 226*10465441SEvalZero 227*10465441SEvalZero #pragma pack() 228*10465441SEvalZero 229*10465441SEvalZero #endif 230