Home | History | Annotate | Line # | Download | only in usb
usbcdc.h revision 1.4
      1 /*	$NetBSD: usbcdc.h,v 1.4 1999/08/16 20:20:19 augustss Exp $	*/
      2 
      3 /*
      4  * Copyright (c) 1998 The NetBSD Foundation, Inc.
      5  * All rights reserved.
      6  *
      7  * This code is derived from software contributed to The NetBSD Foundation
      8  * by Lennart Augustsson (augustss (at) carlstedt.se) at
      9  * Carlstedt Research & Technology.
     10  *
     11  * Redistribution and use in source and binary forms, with or without
     12  * modification, are permitted provided that the following conditions
     13  * are met:
     14  * 1. Redistributions of source code must retain the above copyright
     15  *    notice, this list of conditions and the following disclaimer.
     16  * 2. Redistributions in binary form must reproduce the above copyright
     17  *    notice, this list of conditions and the following disclaimer in the
     18  *    documentation and/or other materials provided with the distribution.
     19  * 3. All advertising materials mentioning features or use of this software
     20  *    must display the following acknowledgement:
     21  *        This product includes software developed by the NetBSD
     22  *        Foundation, Inc. and its contributors.
     23  * 4. Neither the name of The NetBSD Foundation nor the names of its
     24  *    contributors may be used to endorse or promote products derived
     25  *    from this software without specific prior written permission.
     26  *
     27  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     28  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     29  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     30  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     31  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     32  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     33  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     34  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     35  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     36  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     37  * POSSIBILITY OF SUCH DAMAGE.
     38  */
     39 
     40 #ifndef _USBCDC_H_
     41 #define _USBCDC_H_
     42 
     43 #define UDESCSUB_CDC_HEADER	0
     44 #define UDESCSUB_CDC_CM		1 /* Call Management */
     45 #define UDESCSUB_CDC_ACM	2 /* Abstract Control Model */
     46 #define UDESCSUB_CDC_DLM	3 /* Direct Line Management */
     47 #define UDESCSUB_CDC_TRF	4 /* Telephone Ringer */
     48 #define UDESCSUB_CDC_TCLSR	5 /* Telephone Call ... */
     49 #define UDESCSUB_CDC_UNION	6
     50 #define UDESCSUB_CDC_CS		7 /* Country Selection */
     51 #define UDESCSUB_CDC_TOM	8 /* Telephone Operational Modes */
     52 #define UDESCSUB_CDC_USBT	9 /* USB Terminal */
     53 
     54 typedef struct {
     55 	uByte		bLength;
     56 	uByte		bDescriptorType;
     57 	uByte		bDescriptorSubtype;
     58 	uWord		bcdCDC;
     59 } usb_cdc_header_descriptor_t;
     60 
     61 typedef struct {
     62 	uByte		bLength;
     63 	uByte		bDescriptorType;
     64 	uByte		bDescriptorSubtype;
     65 	uByte		bmCapabilities;
     66 #define USB_CDC_CM_DOES_CM		0x01
     67 #define USB_CDC_CM_OVER_DATA		0x02
     68 	uByte		bDataInterface;
     69 } usb_cdc_cm_descriptor_t;
     70 
     71 typedef struct {
     72 	uByte		bLength;
     73 	uByte		bDescriptorType;
     74 	uByte		bDescriptorSubtype;
     75 	uByte		bmCapabilities;
     76 #define USB_CDC_ACM_HAS_FEATURE		0x01
     77 #define USB_CDC_ACM_HAS_LINE		0x02
     78 #define USB_CDC_ACM_HAS_BREAK		0x04
     79 #define USB_CDC_ACM_HAS_NETWORK_CONN	0x08
     80 } usb_cdc_acm_descriptor_t;
     81 
     82 typedef struct {
     83 	uByte		bLength;
     84 	uByte		bDescriptorType;
     85 	uByte		bDescriptorSubtype;
     86 	uByte		bMasterInterface;
     87 	uByte		bSlaveInterface[1];
     88 } usb_cdc_union_descriptor_t;
     89 
     90 #define UCDC_SEND_ENCAPSULATED_COMMAND	0x00
     91 #define UCDC_GET_ENCAPSULATED_RESPONSE	0x01
     92 #define UCDC_SET_COMM_FEATURE		0x02
     93 #define UCDC_GET_COMM_FEATURE		0x03
     94 #define  UCDC_ABSTRACT_STATE		0x01
     95 #define  UCDC_COUNTRY_SETTING		0x02
     96 #define UCDC_CLEAR_COMM_FEATURE		0x04
     97 #define UCDC_SET_LINE_CODING		0x20
     98 #define UCDC_GET_LINE_CODING		0x21
     99 #define UCDC_SET_CONTROL_LINE_STATE	0x22
    100 #define  UCDC_LINE_DTR			0x0001
    101 #define  UCDC_LINE_RTS			0x0002
    102 #define UCDC_SEND_BREAK			0x23
    103 #define  UCDC_BREAK_ON			0xffff
    104 #define  UCDC_BREAK_OFF			0x0000
    105 
    106 typedef struct {
    107 	uWord	wState;
    108 #define UCDC_IDLE_SETTING		0x0001
    109 #define UCDC_DATA_MULTIPLEXED		0x0002
    110 } usb_cdc_abstract_state_t;
    111 #define UCDC_ABSTRACT_STATE_LENGTH 2
    112 
    113 typedef struct {
    114 	uDWord	dwDTERate;
    115 	uByte	bCharFormat;
    116 #define UCDC_STOP_BIT_1			0
    117 #define UCDC_STOP_BIT_1_5		1
    118 #define UCDC_STOP_BIT_2			2
    119 	uByte	bParityType;
    120 #define UCDC_PARITY_NONE		0
    121 #define UCDC_PARITY_ODD			1
    122 #define UCDC_PARITY_EVEN		2
    123 #define UCDC_PARITY_MARK		3
    124 #define UCDC_PARITY_SPACE		4
    125 	uByte	bDataBits;
    126 } usb_cdc_line_state_t;
    127 #define UCDC_LINE_STATE_LENGTH 7
    128 
    129 typedef struct {
    130 	uByte	bmRequestType;
    131 #define UCDC_NOTIFICATION		0xa1
    132 	uByte	bNotification;
    133 #define UCDC_N_NETWORK_CONNECTION	0x00
    134 #define UCDC_N_RESPONSE_AVAILABLE	0x01
    135 #define UCDC_N_AUX_JACK_HOOK_STATE	0x08
    136 #define UCDC_N_RING_DETECT		0x09
    137 #define UCDC_N_SERIAL_STATE		0x20
    138 #define UCDC_N_CALL_STATE_CHANGED	0x28
    139 #define UCDC_N_LINE_STATE_CHANGED	0x29
    140 #define UCDC_N_CONNECTION_SPEED_CHANGE	0x2a
    141 	uWord	wValue;
    142 	uWord	wIndex;
    143 	uWord	wLength;
    144 	uByte	data[16];
    145 } usb_cdc_notification_t;
    146 #define UCDC_NOTIFICATION_LENGTH 8
    147 
    148 #endif /* _USBCDC_H_ */
    149