usb_cdc.h revision 7492:2387323b838f
1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21/* 22 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26#ifndef _SYS_USB_USB_CDC_H 27#define _SYS_USB_USB_CDC_H 28 29 30#include <sys/types.h> 31#include <sys/dditypes.h> 32#include <sys/usb/clients/usbser/usbser_dsdi.h> 33 34#ifdef __cplusplus 35extern "C" { 36#endif 37 38/* 39 * USB Communications Device Class 40 */ 41 42/* 43 * Class-specific descriptors 44 */ 45#define USB_CDC_CS_INTERFACE 0x24 46#define USB_CDC_CS_ENDPOINT 0x25 47 48#define USB_CDC_DESCR_TYPE_HEADER 0x00 49#define USB_CDC_DESCR_TYPE_CALL_MANAGEMENT 0x01 50#define USB_CDC_DESCR_TYPE_ACM 0x02 51#define USB_CDC_DESCR_TYPE_UNION 0x06 52#define USB_CDC_DESCR_TYPE_COUNTRY 0x07 53#define USB_CDC_DESCR_TYPE_NETWORK_TERMINAL 0x0a 54#define USB_CDC_DESCR_TYPE_ETHERNET 0x0f 55 56/* Header Functional Descriptor */ 57typedef struct usb_cdc_header_descr { 58 uint8_t bFunctionalLength; 59 uint8_t bDescriptorType; 60 uint8_t bDescriptorSubtype; 61 uint16_t bcdCDC; 62} usb_cdc_header_descr_t; 63 64/* Call Management Descriptor */ 65typedef struct usb_cdc_call_mgmt_descr { 66 uint8_t bFunctionalLength; 67 uint8_t bDescriptorType; 68 uint8_t bDescriptorSubtype; 69 uint8_t bmCapabilities; 70 uint8_t bDataInterface; 71} usb_cdc_call_mgmt_descr_t; 72 73#define USB_CDC_CALL_MGMT_CAP_CALL_MGMT 0x01 74#define USB_CDC_CALL_MGMT_CAP_DATA_INTERFACE 0x02 75 76/* Abstract Control Management Descriptor */ 77typedef struct usb_cdc_acm_descr { 78 uint8_t bFunctionalLength; 79 uint8_t bDescriptorType; 80 uint8_t bDescriptorSubtype; 81 uint8_t bmCapabilities; 82} usb_cdc_acm_descr_t; 83 84#define USB_CDC_ACM_CAP_COMM_FEATURE 0x01 85#define USB_CDC_ACM_CAP_SERIAL_LINE 0x02 86#define USB_CDC_ACM_CAP_SEND_BREAK 0x04 87#define USB_CDC_ACM_CAP_NETWORK_CONNECTION 0x08 88 89/* Union Functional Descriptor */ 90typedef struct usb_cdc_union_descr { 91 uint8_t bFunctionalLength; 92 uint8_t bDescriptorType; 93 uint8_t bDescriptorSubtype; 94 uint8_t bMasterInterface0; 95 uint8_t bSlaveInterface0; 96 /* more slave interafce may follow */ 97} usb_cdc_union_descr_t; 98 99/* 100 * Class-specific requests 101 */ 102#define USB_CDC_REQ_SEND_ENCAPSULATED_COMMAND 0x00 103#define USB_CDC_REQ_GET_ENCAPSULATED_RESPONSE 0x01 104#define USB_CDC_REQ_SET_LINE_CODING 0x20 105#define USB_CDC_REQ_GET_LINE_CODING 0x21 106#define USB_CDC_REQ_SET_CONTROL_LINE_STATE 0x22 107#define USB_CDC_REQ_SEND_BREAK 0x23 108 109/* Line Coding */ 110typedef struct usb_cdc_line_coding { 111 uint32_t dwDTERate; 112 uint8_t bCharFormat; 113 uint8_t bParityType; 114 uint8_t bDataBits; 115} usb_cdc_line_coding_t; 116 117#define USB_CDC_LINE_CODING_LEN 7 118 119#define USB_CDC_STOP_BITS_1 0 120#define USB_CDC_STOP_BITS_1_5 1 121#define USB_CDC_STOP_BITS_2 2 122 123#define USB_CDC_PARITY_NO 0 124#define USB_CDC_PARITY_ODD 1 125#define USB_CDC_PARITY_EVEN 2 126#define USB_CDC_PARITY_MARK 3 127#define USB_CDC_PARITY_SPACE 4 128 129#define USB_CDC_ACM_CONTROL_DTR 0x01 130#define USB_CDC_ACM_CONTROL_RTS 0x02 131 132#define USB_CDC_NOTIFICATION_REQUEST_TYPE 0xa1 133/* 134 * Class-specific notifications 135 */ 136#define USB_CDC_NOTIFICATION_NETWORK_CONNECTION 0x00 137#define USB_CDC_NOTIFICATION_RESPONSE_AVAILABLE 0x01 138#define USB_CDC_NOTIFICATION_SERIAL_STATE 0x20 139#define USB_CDC_NOTIFICATION_SPEED_CHANGE 0x2a 140 141typedef struct usb_cdc_notification { 142 uint8_t bmRequestType; 143 uint8_t bNotificationType; 144 uint16_t wValue; 145 uint16_t wIndex; 146 uint16_t wLength; 147} usb_cdc_notification_t; 148 149/* Serial State */ 150#define USB_CDC_ACM_CONTROL_DCD 0x01 151#define USB_CDC_ACM_CONTROL_DSR 0x02 152#define USB_CDC_ACM_CONTROL_BREAK 0x04 153#define USB_CDC_ACM_CONTROL_RNG 0x08 154#define USB_CDC_ACM_CONTROL_FRAMING 0x10 155#define USB_CDC_ACM_CONTROL_PARITY 0x20 156#define USB_CDC_ACM_CONTROL_OVERRUN 0x40 157 158 159#ifdef __cplusplus 160} 161#endif 162 163#endif /* _SYS_USB_USB_CDC_H */ 164