eacb4f0e84
commit69fcf3e849
Author: Alan Carvalho de Assis <acassis@gmail.com> Date: Sun Jul 16 08:39:33 2017 -0600 Fix spark/stm32_composite.c: board_composite_connect cannot be static commit28eb253401
Author: Gregory Nutt <gnutt@nuttx.org> Date: Sun Jul 16 08:36:01 2017 -0600 Composite: Final review for coding style before merge commite6af1b9994
Author: Gregory Nutt <gnutt@nuttx.org> Date: Sun Jul 16 07:41:38 2017 -0600 Composite: Simplify some intiialization of data structures. commit771c367411
Author: Gregory Nutt <gnutt@nuttx.org> Date: Sun Jul 16 07:15:08 2017 -0600 Cosmetic changes to alignment. commit5d67ddda4e
Author: Gregory Nutt <gnutt@nuttx.org> Date: Sun Jul 16 07:00:48 2017 -0600 USBMSC: Add missing logic to saved device description. commit0729151d29
Author: Gregory Nutt <gnutt@nuttx.org> Date: Sat Jul 15 17:11:41 2017 -0600 Trivial, costmetic commit74b916ff84
Author: Gregory Nutt <gnutt@nuttx.org> Date: Sat Jul 15 14:50:29 2017 -0600 Composite: Private functions need to be marked static. Move static functions out of 'Public Functions' to 'Private Functions' where they belong. Disable composite configuration 1 in all STM32 F1 configurations. commitcfaa4ece13
Author: Gregory Nutt <gnutt@nuttx.org> Date: Sat Jul 15 13:20:34 2017 -0600 Add some comments. commit8143563be6
Author: Gregory Nutt <gnutt@nuttx.org> Date: Sat Jul 15 12:33:10 2017 -0600 Spark: Need to condition out MSC logic in composite setup if there is no MSC in the composite. commit69d3a91ef1
Author: Gregory Nutt <gnutt@nuttx.org> Date: Sat Jul 15 11:03:33 2017 -0600 Composite: Remove all dependencies on CONFIG_SYSTEM_COMPOSITE_* configuration settings. Nothing in the OS can depend on external application settings. commit55a4388bbd
Author: Gregory Nutt <gnutt@nuttx.org> Date: Sat Jul 15 09:59:31 2017 -0600 All composite configurations now also support a dual CDC/ACM configuration. commit428f2147af
Author: Gregory Nutt <gnutt@nuttx.org> Date: Sat Jul 15 09:24:32 2017 -0600 Composite: Move board_msc* interfaces from apps/system/composite to the board specific OS logic where they belong. commitf1cc168a5c
Author: Gregory Nutt <gnutt@nuttx.org> Date: Sat Jul 15 08:56:33 2017 -0600 Refresh all composite configurations. commit246afcaa10
Merge:919877191d
02c6672868
Author: Gregory Nutt <gnutt@nuttx.org> Date: Sat Jul 15 08:22:26 2017 -0600 Merge remote-tracking branch 'origin/master' into composite commit919877191d
Author: Gregory Nutt <gnutt@nuttx.org> Date: Sat Jul 15 08:20:02 2017 -0600 Composite setup: Remove useless board_cdc* wrapper. commit82129cf8c6
Merge:f2cb8b252a
6537e4ea20
Author: Gregory Nutt <gnutt@nuttx.org> Date: Fri Jul 14 16:23:57 2017 -0600 Merge remote-tracking branch 'origin/master' into composite commitf2cb8b252a
Author: Alan Carvalho de Assis <acassis@gmail.com> Date: Fri Jul 14 10:19:35 2017 -0600 Composite: Fix for another cloned typo. commit676cfd526a
Author: Alan Carvalho de Assis <acassis@gmail.com> Date: Fri Jul 14 09:11:37 2017 -0600 Composite: Fix some typos commit1ea0368c18
Author: Alan Carvalho de Assis <acassis@gmail.com> Date: Fri Jul 14 09:10:18 2017 -0600 Composite: ./stm3210e-eval/src/stm32_composite.c commite485caced9
Author: Gregory Nutt <gnutt@nuttx.org> Date: Fri Jul 14 09:08:17 2017 -0600 Composite: I don't think the original code should have forced minor=0. commit6443c29621
Author: Gregory Nutt <gnutt@nuttx.org> Date: Fri Jul 14 07:15:38 2017 -0600 Composite: Flesh out support for all of other configurations that support composite. commit23cbc28b05
Author: Gregory Nutt <gnutt@nuttx.org> Date: Fri Jul 14 06:59:45 2017 -0600 Detangle use of board_xyzclassobject() and board_xyzuninitialize() commit1674cb8c8e
Merge:6bc881a192
5033a6def7
Author: Gregory Nutt <gnutt@nuttx.org> Date: Thu Jul 13 13:57:40 2017 -0600 Merge remote-tracking branch 'origin/master' into composite commit6bc881a192
Merge:fe3af4941d
85b8d16d8c
Author: Gregory Nutt <gnutt@nuttx.org> Date: Tue Jul 11 12:24:07 2017 -0600 Merge remote-tracking branch 'origin/master' into composite commitfe3af4941d
Merge:0f9ad16e18
1bc0eea143
Author: Gregory Nutt <gnutt@nuttx.org> Date: Mon Jul 10 11:07:36 2017 -0600 Merge remote-tracking branch 'origin/master' into composite commit0f9ad16e18
Merge:a4cd90d4ef
aa2e9c15a5
Author: Gregory Nutt <gnutt@nuttx.org> Date: Fri Jul 7 20:26:53 2017 -0600 Merge remote-tracking branch 'origin/master' into composite commita4cd90d4ef
Merge:8a4be7175e
31f832d8c5
Author: Gregory Nutt <gnutt@nuttx.org> Date: Wed Jul 5 11:12:52 2017 -0600 Merge remote-tracking branch 'origin/master' into composite commit8a4be7175e
Merge:18a32ed2ca
ae1771454a
Author: Gregory Nutt <gnutt@nuttx.org> Date: Fri Jun 30 16:14:04 2017 -0600 Merge remote-tracking branch 'origin/master' into composite commit18a32ed2ca
Merge:aaa81ce497
6d8df90b79
Author: Gregory Nutt <gnutt@nuttx.org> Date: Thu Jun 29 10:18:16 2017 -0600 Merge remote-tracking branch 'origin/master' into composite commitaaa81ce497
Merge:4eb548226b
8cb4636bb1
Author: Gregory Nutt <gnutt@nuttx.org> Date: Mon Jun 26 11:56:11 2017 -0600 Merge remote-tracking branch 'origin/master' into composite commit4eb548226b
Merge:2327f5a1b4
dc8eec0b61
Author: Gregory Nutt <gnutt@nuttx.org> Date: Mon Jun 19 17:27:00 2017 -0600 Merge remote-tracking branch 'origin/master' into composite commit2327f5a1b4
Merge:49cd279fc6
99bf0b522b
Author: Gregory Nutt <gnutt@nuttx.org> Date: Fri Jun 16 17:30:03 2017 -0600 Merge remote-tracking branch 'origin/master' into composite commit49cd279fc6
Merge:bb6a13f30a
46f86982ee
Author: Gregory Nutt <gnutt@nuttx.org> Date: Wed Jun 14 09:17:49 2017 -0600 Merge remote-tracking branch 'origin/master' into composite commitbb6a13f30a
Merge:918480047a
ac93d4bda9
Author: Gregory Nutt <gnutt@nuttx.org> Date: Mon Jun 5 17:40:06 2017 -0600 Merge remote-tracking branch 'origin/master' into composite commit918480047a
Merge:e4d262436c
4526cd665e
Author: Gregory Nutt <gnutt@nuttx.org> Date: Sat Jun 3 08:52:31 2017 -0600 Merge remote-tracking branch 'origin/master' into composite commite4d262436c
Author: Gregory Nutt <gnutt@nuttx.org> Date: Fri Jun 2 07:19:27 2017 -0600 SAMV71-Xult Composite: Now can switch between two different composite configurations dynamically. commit815257743d
Author: Gregory Nutt <gnutt@nuttx.org> Date: Fri Jun 2 07:11:57 2017 -0600 usbdev composite and SAMV7-Xult: Move board-specific USB composite configuration out of boardctl.c and into board-specific logic where it belongs. Add a configuration option to the boardctl() calls to support multiple composite device configurations dynamically. commitac13619dc5
Author: Gregory Nutt <gnutt@nuttx.org> Date: Thu Jun 1 17:03:58 2017 -0600 Cosmetic commit9dd41bdd2f
Author: Gregory Nutt <gnutt@nuttx.org> Date: Thu Jun 1 17:02:43 2017 -0600 Composite: More compile-related fixes commitfc1438c95d
Merge:049ccbfcbe
ff2b54a5e0
Author: Gregory Nutt <gnutt@nuttx.org> Date: Thu Jun 1 16:35:41 2017 -0600 Merge remote-tracking branch 'origin/master' into composite commit049ccbfcbe
Author: Gregory Nutt <gnutt@nuttx.org> Date: Thu Jun 1 16:35:16 2017 -0600 Composite: Add some structure definitions missed in first application of the patch. commitef33329e3a
Author: Gregory Nutt <gnutt@nuttx.org> Date: Thu Jun 1 16:14:46 2017 -0600 Add a warning commit89f77cd91a
Author: Gregory Nutt <gnutt@nuttx.org> Date: Thu Jun 1 16:11:27 2017 -0600 Fix some incomplete name changes commit0bb7af549a
Author: Gregory Nutt <gnutt@nuttx.org> Date: Thu Jun 1 15:09:50 2017 -0600 It is unnecessary to pack a structure that consists only of uint8_t data fields. commitbd9b548914
Author: Gregory Nutt <gnutt@nuttx.org> Date: Thu Jun 1 15:05:41 2017 -0600 Remove COMPILE_TIME_ASSERTION commit7e6f481581
Author: Frank Benkert <Frank.Benkert@avat.de> Date: Thu Jun 1 14:58:04 2017 -0600 Part II of the same big commit commitdcc9b07715
Author: Frank Benkert <Frank.Benkert@avat.de> Date: Thu Jun 1 14:08:22 2017 -0600 [[This is part 1 or several commits]] We developed a huge Changeset over a year ago to make USB Composite configuration dynamical and be able to instanciate the CDCACM multiple times inside this device. We use this feature to switch between one in normal and up to three CDCACMs in maintenance boot. The control path starts in “boardctl.c” where the configuration for the device is constructed. There are still a few issues which I’ll ask you to have a look at before this beast can be merged. 1. To be able to construct the data dynamically I have changed some USB-Structs to be packed. Maybe there are additional structs to change (just for completeness – not for current functionality). 2. I’ve added the Macro “COMPILE_TIME_ASSERTION” two times (in usbmsc_desc.c and in cdcacm_desc.c) to stay private. Maybe you’ll find a better place. It’s used to check the size of the structs against the assumptions. 3. I’ve changed the interface for some USB-Functions to receive also the dynamic configuration. Maybe this can be done more elegant. 4. The original NuttX (without the patch) seems to have problems with a Composite device holding a CDCACM and an MSC. The “USB SET CONFIGURATION” request does not to work at all. This makes the test fail under Windows and under Linux. Applying this patch doesn’t change anything – because it only changes the configuration – not the behavior. Maybe you’ll have a look at this problem before applying the patch.
895 lines
48 KiB
C
895 lines
48 KiB
C
/********************************************************************************************
|
|
* include/nuttx/usb/cdc.h
|
|
*
|
|
* Copyright (C) 2011, 2017 Gregory Nutt. All rights reserved.
|
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
|
*
|
|
* References: "Universal Serial Bus Class Definitions for Communication
|
|
* Devices," Version 1.1, January 19, 1999
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in
|
|
* the documentation and/or other materials provided with the
|
|
* distribution.
|
|
* 3. Neither the name NuttX nor the names of its contributors may be
|
|
* used to endorse or promote products derived from this software
|
|
* without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
|
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
********************************************************************************************/
|
|
|
|
#ifndef __INCLUDE_NUTTX_USB_CDC_H
|
|
#define __INCLUDE_NUTTX_USB_CDC_H
|
|
|
|
/********************************************************************************************
|
|
* Included Files
|
|
********************************************************************************************/
|
|
|
|
#include <nuttx/config.h>
|
|
|
|
/********************************************************************************************
|
|
* Pre-processor Definitions
|
|
********************************************************************************************/
|
|
/* Device Class Codes ***********************************************************************/
|
|
/* Table 14: Communication Device Class Code (see definition USB_CLASS_CDC in usb.h) */
|
|
/* Table 18: Data Interface Class Code (see definition USB_CLASS_CDC_DATA in usb.h) */
|
|
|
|
/* Communication Inteface Class Codes *******************************************************/
|
|
/* Table 15: Communication Interface Class Code */
|
|
|
|
#define CDC_CLASS_COMM 0x02 /* Communication Interface Class */
|
|
|
|
/* Communication Interface Sub-Class Codes **************************************************/
|
|
|
|
#define CDC_SUBCLASS_NONE 0x00 /* Reserved */
|
|
#define CDC_SUBCLASS_DLC 0x01 /* Direct Line Control Model */
|
|
#define CDC_SUBCLASS_ACM 0x02 /* Abstract Control Model */
|
|
#define CDC_SUBCLASS_TCM 0x03 /* Telephone Control Model */
|
|
#define CDC_SUBCLASS_MCM 0x04 /* Multi-Channel Control Model */
|
|
#define CDC_SUBCLASS_CAPI 0x05 /* CAPI Control Model */
|
|
#define CDC_SUBCLASS_ECM 0x06 /* Ethernet Networking Control Model */
|
|
#define CDC_SUBCLASS_ATM 0x07 /* ATM Networking Control Model */
|
|
/* 0x08-0x7f Reserved (future use) */
|
|
/* 0x80-0xfe Reserved (vendor specific) */
|
|
/* Communication Interface Class Protocol Codes ********************************************/
|
|
/* Table 17: Communication Interface Class Control Protocol Codes */
|
|
|
|
#define CDC_PROTO_NONE 0x00 /* No class specific protocol required */
|
|
#define CDC_PROTO_ATM 0x01 /* Common AT commands (also known as Hayes compatible) */
|
|
/* 0x02-0xfe Reserved (future use) */
|
|
#define CDC_PROTO_VENDOR 0xff /* Vendor-specific */
|
|
|
|
/* Data Interface Sub-Class Codes ***********************************************************/
|
|
/* None defined, should be zero */
|
|
|
|
#define CDC_DATA_SUBCLASS_NONE 0x00
|
|
|
|
/* Date Interface Class Protocol Codes ******************************************************/
|
|
/* Table 19: Data Interface Class Protocol Codes */
|
|
|
|
#define CDC_DATA_PROTO_NONE 0x00 /* No class specific protocol required */
|
|
/* 0x01-0x2f Reserved (future use) */
|
|
#define CDC_DATA_PROTO_ISDN 0x30 /* Physical interface protocol for ISDN BRI */
|
|
#define CDC_DATA_PROTO_HDLC 0x31 /* HDLC */
|
|
#define CDC_DATA_PROTO_TRANSP 0x32 /* Transparent */
|
|
/* 0x33-0x4f Reserved (future use) */
|
|
#define CDC_DATA_PROTO_Q921M 0x50 /* Management protocol for Q.921 data link protocol */
|
|
#define CDC_DATA_PROTO_Q921 0x51 /* Data link protocol for Q.931 */
|
|
#define CDC_DATA_PROTO_Q921TM 0x52 /* TEI-multiplexor for Q.921 data link protocol */
|
|
/* 0x53-0x8f Reserved (future use) */
|
|
#define CDC_DATA_PROTO_V42BIS 0x90 /* Data compression procedures */
|
|
#define CDC_DATA_PROTO_EUROISDN 0x91 /* Euro-ISDN protocol control */
|
|
#define CDC_DATA_PROTO_V120 0x92 /* V.24 rate adaptation to ISDN */
|
|
#define CDC_DATA_PROTO_CAPI 0x93 /* CAPI Commands */
|
|
/* 0x94-0xfc Reserved (future use) */
|
|
#define CDC_DATA_PROTO_HBD 0xfd /* Host based driver. */
|
|
#define CDC_DATA_PROTO_PUFD 0xfe /* The protocol(s) are described using a Protocol Unit
|
|
* Functional Descriptors on Communication Class
|
|
* Interface.
|
|
*/
|
|
#define CDC_DATA_PROTO_VENDOR 0xff /* Vendor-specific */
|
|
|
|
/* Requests and Notifications ***************************************************************/
|
|
/* Table 2: Requests, Direct Line Control Model */
|
|
|
|
#define DLC_SET_AUX_LINE_STATE 0x10 /* Request to connect or disconnect secondary jack from
|
|
* POTS circuit or CODEC, depending on hook state.
|
|
* (Optional).
|
|
*/
|
|
#define DLC_SET_HOOK_STATE 0x11 /* Select relay setting for on-hook, off-hook, and caller
|
|
* ID. (Required)
|
|
*/
|
|
#define DLC_PULSE_SETUP 0x12 /* Initiate pulse dialing preparation. (Optional).
|
|
*/
|
|
#define DLC_SEND_PULSE 0x13 /* Request number of make/break cycles to generate.
|
|
* (Optional)
|
|
*/
|
|
#define DLC_SET_PULSE_TIME 0x14 /* Setup value for time of make and break periods when
|
|
* pulse dialing. (Optional)
|
|
*/
|
|
#define DLC_RING_AUX_JACK 0x15 /* Request for a ring signal to be generated on secondary
|
|
* phone jack. (Optional)
|
|
*/
|
|
/* Table 3: Notifications, Direct Line Control Model */
|
|
|
|
#define DLC_AUX_JACK_HOOK_STATE 0x08 /* Indicates hook state of secondary device plugged
|
|
* into the auxiliary phone jack. (Optional)
|
|
*/
|
|
#define DLC_RING_DETECT 0x09 /* Message to notify host that ring voltage was
|
|
* detected on POTS interface. (Required)
|
|
*/
|
|
/* Table 4: Requests, Abstract Control Model */
|
|
|
|
#define ACM_SEND_COMMAND 0x00 /* Issues a command in the format of the supported
|
|
* control protocol. (Required)
|
|
*/
|
|
#define ACM_GET_RESPONSE 0x01 /* Requests a response in the format of the
|
|
* supported control protocol. (Required)
|
|
*/
|
|
#define ACM_SET_COMM_FEATURE 0x02 /* Controls the settings for a particular
|
|
* communication feature. (Optional)
|
|
*/
|
|
#define ACM_GET_COMM_FEATURE 0x03 /* Returns the current settings for the
|
|
* communication feature. (Optional)
|
|
*/
|
|
#define ACM_CLEAR_COMM_FEATURE 0x04 /* Clears the settings for a particular
|
|
* communication feature. (Optional)
|
|
*/
|
|
#define ACM_SET_LINE_CODING 0x20 /* Configures DTE rate, stop-bits, parity, and
|
|
* number-of-character bits. (Optional)
|
|
*/
|
|
#define ACM_GET_LINE_CODING 0x21 /* Requests current DTE rate, stop-bits, parity, and
|
|
* number-of-character bits. (Optional)
|
|
*/
|
|
#define ACM_SET_CTRL_LINE_STATE 0x22 /* RS-232 signal used to tell the DCE device the
|
|
* DTE device is now present. (Optional)
|
|
*/
|
|
#define ACM_SEND_BREAK 0x23 /* Sends special carrier
|
|
*/
|
|
/* Table 5: Notifications, Abstract Control Model */
|
|
|
|
#define ACM_NETWORK_CONNECTION 0x00 /* Notification to host of network connection status.
|
|
* (Optional)
|
|
*/
|
|
#define ACM_RESPONSE_AVAILABLE 0x01 /* Notification to host to issue a GET_ENCAPSULATED_RESPONSE
|
|
* request. (Required)
|
|
*/
|
|
#define ACM_SERIAL_STATE 0x20 /* Returns the current state of the carrier detect, DSR,
|
|
* break, and ring signal. (Optional)
|
|
*/
|
|
/* Table 6: Requests, Telephone Control Model */
|
|
|
|
#define TCM_SET_COMM_FEATURE 0x02 /* Used to set a unique communication feature, which is
|
|
* normally specific to a particular device.
|
|
* (Optional)
|
|
*/
|
|
#define TCM_GET_COMM_FEATURE 0x03 /* Returns the current settings for the communication
|
|
* feature. (Optional)
|
|
*/
|
|
#define TCM_CLEAR_COMM_FEATURE 0x04 /* Clears the settings for a particular communication
|
|
* feature. (Optional)
|
|
*/
|
|
#define TCM_SET_RINGER_PARMS 0x30 /* Configures the ringer for a telephone device.
|
|
* (Optional)
|
|
*/
|
|
#define TCM_GET_RINGER_PARMS 0x31 /* Gets the current ringer configuration for a telephone
|
|
* device. (Required)
|
|
*/
|
|
#define TCM_SET_OPERATION_PARMS 0x32 /* Configures the operational mode of the telephone.
|
|
* (Optional)
|
|
*/
|
|
#define TCM_GET_OPERATION_PARMS 0x33 /* Gets the current operational mode of the telephone.
|
|
* (Optional)
|
|
*/
|
|
#define TCM_SET_LINE_PARMS 0x34 /* Allows changing the current state of the line
|
|
* associated with the interface, providing basic call
|
|
* capabilities, such as dialing and answering calls.
|
|
* (Required)
|
|
*/
|
|
#define TCM_GET_LINE_PARMS 0x35 /* Gets current status of the line. (Required)
|
|
*/
|
|
#define TCM_DIAL_DIGITS 0x36 /* Dials digits on the network connection. (Required)
|
|
*/
|
|
/* Table 7: Notifications, Telephone Control Model */
|
|
|
|
#define TCM_CALL_STATE_CHANGE 0x28 /* DReports a state change on a call. (Required)
|
|
*/
|
|
#define TCM_LINE_STATE_CHANGE 0x29 /* DReports a state change on a line. (Optional)
|
|
*/
|
|
/* Table 8: Requests, Multi-Channel Model */
|
|
|
|
#define MCM_SET_UNIT_PARAM 0x37 /* Used to set a Unit specific parameter (Optional)
|
|
*/
|
|
#define MCM_GET_UNIT_PARAM 0x38 /* Used to retrieve a Unit specific parameter (Required)
|
|
*/
|
|
#define MCM_CLEAR_UNIT_PARAM 0x39 /* Used to set a Unit specific parameter to its default
|
|
* state. (Optional)
|
|
*/
|
|
/* Table 9: Request, CAPI Control Model */
|
|
|
|
#define CAPI_GET_PROFILE 0x3a /* Returns the implemented capabilities of the device
|
|
* (Required)
|
|
*/
|
|
/* Table 10: Requests, Ethernet Networking Control Model */
|
|
|
|
#define ECM_SEND_COMMAND 0x00 /* Issues a command in the format of the supported
|
|
* control protocol. The intent of this mechanism is
|
|
* to support networking devices (e.g., host-based
|
|
* cable modems) that require an additional vendor-
|
|
* defined interface for media specific hardware
|
|
* configuration and management. (Optional)
|
|
*/
|
|
#define ECM_GET_RESPONSE 0x01 /* equests a response in the format of the supported
|
|
* control protocol.
|
|
* (Optional)
|
|
*/
|
|
#define ECM_SET_MCAST_FILTERS 0x40 /* As applications are loaded and unloaded on the host,
|
|
* the networking transport will instruct the device's MAC
|
|
* driver to change settings of the Networking device's
|
|
* multicast filters. (Optional)
|
|
*/
|
|
#define ECM_SET_PM_PAT_FILTER 0x41 /* Some hosts are able to conserve energy and stay quiet
|
|
* in a "sleeping" state while not being used. USB
|
|
* Networking devices may provide special pattern filtering
|
|
* hardware that enables it to wake up the attached host
|
|
* on demand when something is attempting to contact the
|
|
* host (e.g., an incoming web browser connection).
|
|
* Primitives are needed in management plane to negotiate
|
|
* the setting of these special filters
|
|
* (Optional)
|
|
*/
|
|
#define ECM_GET_PM_PAT_FILTER 0x42 /* Retrieves the status of the above power management
|
|
* pattern filter setting
|
|
* (Optional)
|
|
*/
|
|
#define ECM_SET_PACKET_FILTER 0x43 /* Sets device filter for running a network analyzer
|
|
* application on the host machine (Required)
|
|
*/
|
|
#define ECM_GET_STATISTIC 0x44 /* Retrieves Ethernet device statistics such as frames
|
|
* transmitted, frames received, and bad frames received.
|
|
* (Optional)
|
|
*/
|
|
/* Table 11: Notifications, Ethernet Networking Control Model */
|
|
|
|
#define ECM_NETWORK_CONNECTION 0x00 /* Reports whether or not the physical layer (modem,
|
|
* Ethernet PHY, etc.) link is up. (Required)
|
|
*/
|
|
#define ECM_RESPONSE_AVAILABLE 0x01 /* Notification to host to issue a
|
|
* GET_ENCAPSULATED_RESPONSE request. (Optional)
|
|
*/
|
|
#define ECM_SPEED_CHANGE 0x2a /* Reports a change in upstream or downstream (Required)
|
|
*/
|
|
/* Table 12: Requests, ATM Networking Control Model */
|
|
|
|
#define ATM_SEND_COMMAND 0x00 /* Issues a command in the format of the supported control
|
|
* protocol. The intent of this mechanism is to support
|
|
* networking devices (e.g., host-based cable modems)
|
|
* that require an additional vendor-defined interface for
|
|
* media specific hardware configuration and
|
|
* management. (Optional)
|
|
*/
|
|
#define ATM_GET_RESPONSE 0x01 /* Requests a response in the format of the supported
|
|
* control protocol. (Optional)
|
|
*/
|
|
#define ATM_SET_DATA_FORMAT 0x50 /* Chooses which ATM data format will be exchanged
|
|
* between the host and the ATM Networking device.
|
|
* (Required)
|
|
*/
|
|
#define ATM_GET_DEV_STATISTICS 0x51 /* Retrieves global statistics from the ATM Networking
|
|
* device. (Required)
|
|
*/
|
|
#define ATM_SET_DEFAULT_VC 0x52 /* Pre-selects the VPI/VCI value for subsequent
|
|
* GetATMVCStatistics requests (Optional)
|
|
*/
|
|
#define ATM_GET_VC_STATISTICS 0x53 /* Retrieves statistics from the ATM Networking device for
|
|
* a particular VPI/VCI. (Optional)
|
|
*/
|
|
/* Table 13: Requests, Ethernet and ATM Networking Control Model */
|
|
|
|
#define ATM_NETWORK_CONNECTION 0x00 /* Reports whether or not the physical layer (modem,
|
|
* Ethernet PHY, etc.) link is up. (Required)
|
|
*/
|
|
#define ECM_NETWORK_CONNECTION ATM_NETWORK_CONNECTION
|
|
#define ATM_RESPONSE_AVAILABLE 0x01 /* Notification to host to issue a
|
|
* GET_ENCAPSULATED_RESPONSE request. (Optional)
|
|
*/
|
|
#define ECM_RESPONSE_AVAILABLE ATM_RESPONSE_AVAILABLE
|
|
#define ATM_SPEED_CHANGE 0x2a /* Reports a change in upstream or downstream speed of the
|
|
* networking device connection. (Required)
|
|
*/
|
|
#define ECM_SPEED_CHANGE ATM_SPEED_CHANGE
|
|
|
|
/* Descriptors ******************************************************************************/
|
|
/* Table 25: bDescriptor SubType in Functional Descriptors */
|
|
|
|
#define CDC_DSUBTYPE_HDR 0x00 /* Header Functional Descriptor, which marks the
|
|
* beginning of the concatenated set of functional
|
|
* descriptors for the interface. */
|
|
#define CDC_DSUBTYPE_CALLMGMT 0x01 /* Call Management Functional Descriptor */
|
|
#define CDC_DSUBTYPE_ACM 0x02 /* Abstract Control Management Functional Descriptor */
|
|
#define CDC_DSUBTYPE_DLC 0x03 /* Direct Line Management Functional Descriptor */
|
|
#define CDC_DSUBTYPE_TCMRINGER 0x04 /* Telephone Ringer Functional Descriptor */
|
|
#define CDC_DSUBTYPE_TCMCALL 0x05 /* Telephone Call and Line State Reporting Capabilities
|
|
* Functional Descriptor. */
|
|
#define CDC_DSUBTYPE_UNION 0x06 /* Union Functional descriptor */
|
|
#define CDC_DSUBTYPE_COUNTRY 0x07 /* Country Selection Functional Descriptor */
|
|
#define CDC_DSUBTYPE_TCMOPS 0x08 /* Telephone Operational Modes Functional Descriptor */
|
|
#define CDC_DSUBTYPE_USBTERM 0x09 /* USB Terminal Functional Descriptor */
|
|
#define CDC_DSUBTYPE_NETCHAN 0x0a /* Network Channel Terminal Descriptor */
|
|
#define CDC_DSUBTYPE_PROTOUNIT 0x0b /* Protocol Unit Functional Descriptor */
|
|
#define CDC_DSUBTYPE_EXTUNIT 0x0c /* Extension Unit Functional Descriptor */
|
|
#define CDC_DSUBTYPE_MCM 0x0d /* Multi-Channel Management Functional Descriptor */
|
|
#define CDC_DSUBTYPE_CAPI 0x0e /* CAPI Control Management Functional Descriptor */
|
|
#define CDC_DSUBTYPE_ECM 0x0f /* Ethernet Networking Functional Descriptor */
|
|
#define CDC_DSUBTYPE_ATM 0x10 /* ATM Networking Functional Descriptor */
|
|
/* 0x11-0xff Reserved (future use) */
|
|
|
|
/* Table 42: Ethernet Statistics Capabilities */
|
|
|
|
#define ECMCAP_XMIT_OK (1 << 0) /* Frames transmitted without errors */
|
|
#define ECMCAP_RVC_OK (1 << 1) /* Frames received without errors */
|
|
#define ECMCAP_XMIT_ERROR (1 << 2) /* Frames not transmitted, or transmitted with errors */
|
|
#define ECMCAP_RCV_ERROR (1 << 3) /* Frames received with errors that are not delivered
|
|
* to the USB host
|
|
*/
|
|
#define ECMCAP_RCV_NO_BUFFER (1 << 4) /* Frame missed, no buffers */
|
|
#define ECMCAP_DIR_BYTES_XMIT (1 << 5) /* Directed bytes transmitted without errors */
|
|
#define ECMCAP_DIR_FRAMES_XMIT (1 << 6) /* Directed frames transmitted without errors */
|
|
#define ECMCAP_MCAST_BYTES_XMIT (1 << 7) /* Multicast bytes transmitted without errors */
|
|
#define ECMCAP_MCAST_FRAMES_XMIT (1 << 8) /* Multicast frames transmitted without errors */
|
|
#define ECMCAP_BCAST_BYTES_XMIT (1 << 9) /* Broadcast bytes transmitted without errors */
|
|
#define ECMCAP_BCAST_FRAMES_XMIT (1 << 10) /* Broadcast frames transmitted without errors */
|
|
#define ECMCAP_DIR_BYTES_RCV (1 << 11) /* Directed bytes received without errors */
|
|
#define ECMCAP_DIR_FRAMES_RCV (1 << 12) /* Directed frames received without errors */
|
|
#define ECMCAP_MCAST_BYTES_RCV (1 << 13) /* Multicast bytes received without errors */
|
|
#define ECMCAP_MCAST_FRAMES_RCV (1 << 14) /* Multicast frames received without errors */
|
|
#define ECMCAP_BCAST_BYTES_RCV (1 << 15) /* Broadcast bytes received without errors */
|
|
#define ECMCAP_BCAST_FRAMES_RCV (1 << 16) /* Broadcast frames received without errors */
|
|
#define ECMCAP_RCV_CRC_ERROR (1 << 17) /* Frames received with circular redundancy check
|
|
* (CRC) or frame check sequence (FCS) error
|
|
*/
|
|
#define ECMCAP_TRANSMIT_QUEUE_LENG (1 << 18) /* Length of transmit queue */
|
|
#define ECMCAP_RCV_ERROR_ALIGNMENT (1 << 19) /* Frames received with alignment error */
|
|
#define ECMCAP_XMIT_ONE_COLL (1 << 20) /* Frames transmitted with one collision */
|
|
#define ECMCAP_XMIT_MORE_COLLS (1 << 21) /* Frames transmitted with more than one collision */
|
|
#define ECMCAP_XMIT_DEFERRED (1 << 22) /* Frames transmitted after deferral */
|
|
#define ECMCAP_XMIT_MAX_COLLS (1 << 23) /* Frames not transmitted due to collisions */
|
|
#define ECMCAP_RCV_OVERRUN (1 << 24) /* Frames not received due to overrun */
|
|
#define ECMCAP_XMIT_UNDERRUN (1 << 25) /* Frames not transmitted due to underrun */
|
|
#define ECMCAP_XMIT_HB_FAILURE (1 << 26) /* Frames transmitted with heartbeat failure */
|
|
#define ECMCAP_XMIT_TIMES_CRS_LOST (1 << 27) /* Times carrier sense signal lost during
|
|
* transmission
|
|
*/
|
|
#define ECMCAP_XMIT_LATE_COLLS (1 << 28) /* Late collisions detected */
|
|
/* Bits 29-31 Resrved, Must be set to zero */
|
|
|
|
/* Table 47: Communication Feature Selector Codes */
|
|
|
|
#define FEATURE_ABSTRACT_STATE 0x01 /* Two bytes of data describing multiplexed state
|
|
* and idle state for this Abstract Model
|
|
* communications device
|
|
*/
|
|
#define FEATURE_COUNTRY_SETTING 0x02 /* Country code in hexadecimal format as defined in
|
|
* ISO 3166
|
|
*/
|
|
/* Table 49: POTS Relay Configuration Values */
|
|
|
|
#define POTS_ON_HOOK 0x0000
|
|
#define POTS_OFF_HOOK 0x0001
|
|
#define POTS_SNOOPING 0x0002
|
|
|
|
/* Table 50: Line Coding Structure */
|
|
|
|
#define CDC_CHFMT_STOP1 0 /* One stop bit */
|
|
#define CDC_CHFMT_STOP1p5 1 /* 1.5 stop bits */
|
|
#define CDC_CHFMT_STOP2 2 /* 2 stop bits */
|
|
|
|
#define CDC_PARITY_NONE 0 /* No parity */
|
|
#define CDC_PARITY_ODD 1 /* Odd parity */
|
|
#define CDC_PARITY_EVEN 2 /* Even parity */
|
|
#define CDC_PARITY_MARK 3 /* Mark parity */
|
|
#define CDC_PARITY_SPACE 4 /* Space parity */
|
|
|
|
/* Table 51: Control Signal Bitmap Values for SetControlLineState */
|
|
|
|
#define CDC_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.
|
|
*/
|
|
#define CDC_ACTIVATE_CARRIER (1 << 1) /* Carrier control for half duplex modems.
|
|
* This signal corresponds to V.24 signal
|
|
* 105 and RS-232 signal RTS.
|
|
*/
|
|
|
|
/* Table 58: Call State Value Definitions */
|
|
|
|
#define CDC_CALLST_IDLE 0x00 /* Call is idle */
|
|
#define CDC_CALLST_DIAL 0x01 /* Typical dial tone */
|
|
#define CDC_CALLST_INTDIAL 0x02 /* Interrupted dial tone */
|
|
#define CDC_CALLST_DIALING 0x03 /* Dialing is in progress */
|
|
#define CDC_CALLST_RINGBACK 0x04 /* Ringback */
|
|
#define CDC_CALLST_CONNECTED 0x05 /* Connected */
|
|
#define CDC_CALLSTINCOMING 0x06 /* Incoming call */
|
|
|
|
/* Table 62: Ethernet Packet Filter Bitmap */
|
|
|
|
#define PACKET_TYPE_PROMISCUOUS (1 << 0)
|
|
#define PACKET_TYPE_ALL_MULTICAST (1 << 1)
|
|
#define PACKET_TYPE_DIRECTED (1 << 2)
|
|
#define PACKET_TYPE_BROADCAST (1 << 3)
|
|
#define PACKET_TYPE_MULTICAST (1 << 4)
|
|
|
|
/* Table 63: Ethernet Statistics Feature Selector Codes */
|
|
|
|
#define ECM_XMIT_OK 0x01 /* Frames transmitted without errors */
|
|
#define ECM_RVC_OK 0x02 /* Frames received without errors */
|
|
#define ECM_XMIT_ERROR 0x03 /* Frames not transmitted, or transmitted with errors */
|
|
#define ECM_RCV_ERROR 0x04 /* Frames received with errors that are not delivered
|
|
* to the USB host
|
|
*/
|
|
#define ECM_RCV_NO_BUFFER 0x05 /* Frame missed, no buffers */
|
|
#define ECM_DIR_BYTES_XMIT 0x06 /* Directed bytes transmitted without errors */
|
|
#define ECM_DIR_FRAMES_XMIT 0x07 /* Directed frames transmitted without errors */
|
|
#define ECM_MCAST_BYTES_XMIT 0x08 /* Multicast bytes transmitted without errors */
|
|
#define ECM_MCAST_FRAMES_XMIT 0x09 /* Multicast frames transmitted without errors */
|
|
#define ECM_BCAST_BYTES_XMIT 0x0a /* Broadcast bytes transmitted without errors */
|
|
#define ECM_BCAST_FRAMES_XMIT 0x0b /* Broadcast frames transmitted without errors */
|
|
#define ECM_DIR_BYTES_RCV 0x0c /* Directed bytes received without errors */
|
|
#define ECM_DIR_FRAMES_RCV 0x0d /* Directed frames received without errors */
|
|
#define ECM_MCAST_BYTES_RCV 0x0e /* Multicast bytes received without errors */
|
|
#define ECM_MCAST_FRAMES_RCV 0x0f /* Multicast frames received without errors */
|
|
#define ECM_BCAST_BYTES_RCV 0x10 /* Broadcast bytes received without errors */
|
|
#define ECM_BCAST_FRAMES_RCV 0x11 /* Broadcast frames received without errors */
|
|
#define ECM_RCV_CRC_ERROR 0x12 /* Frames received with circular redundancy check
|
|
* (CRC) or frame check sequence (FCS) error
|
|
*/
|
|
#define ECM_TRANSMIT_QUEUE_LENG 0x13 /* Length of transmit queue */
|
|
#define ECM_RCV_ERROR_ALIGNMENT 0x14 /* Frames received with alignment error */
|
|
#define ECM_XMIT_ONE_COLL 0x15 /* Frames transmitted with one collision */
|
|
#define ECM_XMIT_MORE_COLLS 0x16 /* Frames transmitted with more than one collision */
|
|
#define ECM_XMIT_DEFERRED 0x17 /* Frames transmitted after deferral */
|
|
#define ECM_XMIT_MAX_COLLS 0x18 /* Frames not transmitted due to collisions */
|
|
#define ECM_RCV_OVERRUN 0x19 /* Frames not received due to overrun */
|
|
#define ECM_XMIT_UNDERRUN 0x1a /* Frames not transmitted due to underrun */
|
|
#define ECM_XMIT_HB_FAILURE 0x1b /* Frames transmitted with heartbeat failure */
|
|
#define ECM_XMIT_TIMES_CRS_LOST 0x1c /* Times carrier sense signal lost during
|
|
* transmission
|
|
*/
|
|
#define ECM_XMIT_LATE_COLLS 0x1d /* Late collisions detected */
|
|
|
|
/* Table 64: ATM Data Format */
|
|
|
|
#define ATM_FMT_TYPE1 1 /* Type 1 format: concatenated ATM cells */
|
|
#define ATM_FMT_TYPE1 2 /* Type 2 format: ATM header template + concatenated ATM
|
|
* cell payloads
|
|
*/
|
|
#define ATM_FMT_TYPE1 3 /* Type 3 format: AAL 5 SDU */
|
|
|
|
/* Table 65: ATM Device Statistics Feature Selector Codes */
|
|
|
|
#define US_CELLS_SENT 0x01h /* The number of cells that have been sent
|
|
* upstream to the WAN link by the ATM layer.
|
|
*/
|
|
#define DS_CELLS_RECEIVED 0x02h /* The number of cells that have been received
|
|
* downstream from the WAN link by the ATM
|
|
* layer.
|
|
*/
|
|
#define DS_CELLS_USB_CONGESTION 0x03h /* The number of cells that have been received
|
|
* downstream from the WAN link by the ATM
|
|
* layer and discarded due to congestion on the
|
|
* USB link.
|
|
*/
|
|
#define DS_CELLS_AAL5_CRC_ERROR 0x04h /* The number of cells that have been received
|
|
* downstream from the WAN link by the ATM
|
|
* layer and discarded due to AAL5 CRC errors.
|
|
*/
|
|
#define DS_CELLS_HEC_ERROR 0x05h /* The number of cells that have been received
|
|
* downstream from the WAN link and discarded
|
|
* due to HEC errors in the cell header.
|
|
*/
|
|
#define DS_CELLS_HEC_ERROR_CORRECTED 0x06h /* The number of cells that have been received
|
|
* downstream from the WAN link and have
|
|
* been detected with HEC errors in the cell
|
|
* header and successfully corrected.
|
|
*/
|
|
/* Table 66: ATM VC Selector Codes */
|
|
|
|
#define VC_US_CELLS_SENT 0x01 /* The number of cells that have been sent upstream to
|
|
* the WAN link for the specified VPI/VCI since the
|
|
* device has been powered on or reset
|
|
*/
|
|
#define VC_DS_CELLS_RECEIVED 0x02 /* The number of cells that have been received
|
|
* downstream from the WAN link for the specified
|
|
* VPI/VCI since the device has been
|
|
* powered on or reset
|
|
*/
|
|
/* Notifications ****************************************************************************/
|
|
/* Table 69: UART State Bitmap Values */
|
|
|
|
#define CDC_UART_RXCARRIER (1 << 0) /* bRxCarrier State of receiver carrier detection
|
|
* mechanism of device. This signal corresponds to
|
|
* V.24 signal 109 and RS-232 signal DCD.
|
|
*/
|
|
#define CDC_UART_TXCARRIER (1 << 1) /* bTxCarrier State of transmission carrier. This
|
|
* signal corresponds to V.24 signal 106 and RS-232
|
|
* signal DSR.
|
|
*/
|
|
#define CDC_UART_BREAK (1 << 2) /* bBreak State of break detection mechanism of the
|
|
* device.
|
|
*/
|
|
#define CDC_UART_RING (1 << 3) /* bRingSignal State of ring signal detection of the
|
|
* device.
|
|
*/
|
|
#define CDC_UART_FRAMING (1 << 4) /* bFraming A framing error has occurred */
|
|
#define CDC_UART_PARITY (1 << 5) /* bParity A parity error has occurred */
|
|
#define CDC_UART_OVERRUN (1 << 6) /* bOverRun Received data has been discarded due to
|
|
* overrun in the device.
|
|
*/
|
|
/* Table 70: Call State Change Value Definitions */
|
|
|
|
#define CDC_CALLST_IDLE 0x01 /* Call has become idle */
|
|
#define CDC_CALLST_DIALING 0x02 /* Dialing */
|
|
#define CDC_CALLST_RINGBACK 0x03 /* Ringback, with an extra byte of data provided to
|
|
* describe the type of ringback signaling
|
|
*/
|
|
#define CDC_CALLST_CONNECTED 0x04 /* Connected, with an extra byte of data provided to
|
|
* describe the type of connection
|
|
*/
|
|
#define CDC_CALLST_INCOMING 0x05 /* Incoming Call, with the extra bytes of data */
|
|
|
|
/* Table 71: Line State Change Values */
|
|
|
|
#define CDC_LINEST_IDLE 0x0000 /* Line has become idle */
|
|
#define CDC_LINEST_HOLD 0x0001 /* Line connected to hold position */
|
|
#define CDC_LINEST_OFFHOOK 0x0002 /* Hook-switch has gone off hook */
|
|
#define CDC_LINEST_ONHOOK 0x0003 /* Hook-switch has gone on hook */
|
|
|
|
/********************************************************************************************
|
|
* Public Types
|
|
********************************************************************************************/
|
|
|
|
/* Table 1: Data Class Protocol Wrapper */
|
|
|
|
struct cdc_protowrapper_s
|
|
{
|
|
uint8_t size[2]; /* Size of wrapper in bytes */
|
|
uint8_t dstproto; /* bDstProtocol, Destination protocol ID */
|
|
uint8_t srcproto; /* bSrcProtocol, Source protocol ID */
|
|
uint8_t data[1]; /* Data payload, actual size depends of size of the wrapper */
|
|
};
|
|
|
|
/* Functional Descriptors *******************************************************************/
|
|
/* Table 23: Functional Descriptor General Format */
|
|
|
|
struct cdc_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t data[1]; /* Function-specific data follows */
|
|
};
|
|
|
|
/* Table 26: Class-Specific Descriptor Header Format */
|
|
|
|
struct cdc_hdr_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t subtype; /* bDescriptorSubType, CDC_DSUBTYPE_HDR as defined in Table 25 */
|
|
uint8_t cdc[2]; /* bcdCDC, USB Class Definitions for Communication Devices Specification
|
|
* release number in binary-coded decimal. */
|
|
};
|
|
#define SIZEOF_HDR_FUNCDESC 5
|
|
|
|
/* Table 27: Call Management Functional Descriptor */
|
|
|
|
struct cdc_callmgmt_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t subtype; /* bDescriptorSubType, CDC_DSUBTYPE_CALLMGMT as defined in Table 25 */
|
|
uint8_t caps; /* bmCapabilities: Bit encoded */
|
|
uint8_t ifno; /* bDataInterface, Interface number of Data Class interface
|
|
* optionally used for call management
|
|
*/
|
|
};
|
|
#define SIZEOF_CALLMGMT_FUNCDESC 5
|
|
|
|
/* Table 28: Abstract Control Management Functional Descriptor */
|
|
|
|
struct cdc_acm_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t subtype; /* bDescriptorSubType, CDC_DSUBTYPE_ACM as defined in Table 25 */
|
|
uint8_t caps; /* bmCapabilities: Bit encoded */
|
|
};
|
|
#define SIZEOF_ACM_FUNCDESC 4
|
|
|
|
/* Table 29: Direct Line Management Functional Descriptor */
|
|
|
|
struct cdc_dlc_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t subtype; /* bDescriptorSubType, CDC_DSUBTYPE_DLC as defined in Table 25 */
|
|
uint8_t caps; /* bmCapabilities: Bit encoded */
|
|
};
|
|
#define SIZEOF_DLC_FUNCDESC 4
|
|
|
|
/* Table 30: Telephone Ringer Functional Descriptor */
|
|
|
|
struct cdc_tcmr_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t subtype; /* bDescriptorSubType, CDC_DSUBTYPE_TCMRINGER as defined in Table 25 */
|
|
uint8_t volsteps; /* bRingerVolSteps, Number of discrete steps in volume supported
|
|
* by the ringer.
|
|
*/
|
|
uint8_t npats; /* bNumRingerPatterns: Number of ringer patterns supported. */
|
|
};
|
|
#define SIZEOF_TCMR_FUNCDESC 5
|
|
|
|
/* Table 31: Telephone Operational Modes Functional Descriptor */
|
|
|
|
struct cdc_tcmops_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t subtype; /* bDescriptorSubType, CDC_DSUBTYPE_TCMOPS as defined in Table 25 */
|
|
uint8_t caps; /* bmCapabilities: Bit encoded */
|
|
};
|
|
#define SIZEOF_TCMOPS_FUNCDESC 4
|
|
|
|
/* Table 32: Telephone Call State Reporting Capabilities Descriptor */
|
|
|
|
struct cdc_tcmc_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t subtype; /* bDescriptorSubType, CDC_DSUBTYPE_TCMCALL as defined in Table 25 */
|
|
uint8_t caps; /* bmCapabilities: Bit encoded */
|
|
};
|
|
#define SIZEOF_TCMC_FUNCDESC 4
|
|
|
|
/* Table 33: Union Interface Functional Descriptor */
|
|
|
|
struct cdc_union_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t subtype; /* bDescriptorSubType, CDC_DSUBTYPE_UNION as defined in Table 25 */
|
|
uint8_t master; /* bMasterInterface: The interface number of the Communication or Data
|
|
* Class interface, designated as the master or controlling interface
|
|
* for the union
|
|
*/
|
|
uint8_t slave[1]; /* bSlaveInterfaceN: Interface number of N slave or associated
|
|
* interface in the union
|
|
*/
|
|
};
|
|
#define SIZEOF_UNION_FUNCDESC(n) ((n)+4)
|
|
|
|
/* Table 34: Country Selection Functional Descriptor */
|
|
|
|
struct cdc_country_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t subtype; /* bDescriptorSubType, CDC_DSUBTYPE_COUNTRY as defined in Table 25 */
|
|
uint8_t reldate; /* iCountryCodeRelDate: Index of a string giving the release date for the
|
|
* implemented ISO 3166 Country Codes
|
|
*/
|
|
uint16_t code[1]; /* wCountryCodeN: Country code in hexadecimal format as defined in ISO 3166,
|
|
* release date as specified in offset 3 for Nth country supported
|
|
*/
|
|
};
|
|
#define SIZEOF_COUNTRY_FUNCDESC(n) (sizeof(uint16_t)*(n) + 4)
|
|
|
|
/* Table 35: USB Terminal Functional Descriptor */
|
|
|
|
struct cdc_usbterm_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t subtype; /* bDescriptorSubType, CDC_DSUBTYPE_USBTERM as defined in Table 25 */
|
|
uint8_t id; /* bEntityId, Constant uniquely identifying the Terminal */
|
|
uint8_t ifno; /* bInInterfaceNo, The input interface number of the associated
|
|
* USB interface
|
|
*/
|
|
uint8_t outif; /* bOutInterfaceNo, The output interface number of the associated
|
|
* USB interface
|
|
*/
|
|
uint8_t options; /* bmOptions, bit-encoded options */
|
|
uint8_t child[1]; /* Nth ID of lower Terminal or Unit to which this Terminal is connected. */
|
|
};
|
|
#define SIZEOF_USBTERM_FUNCDESC(n) ((n)+7)
|
|
|
|
/* Table 36: Network Channel Terminal Functional Descriptor */
|
|
|
|
struct cdc_netchan_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t subtype; /* bDescriptorSubType, CDC_DSUBTYPE_NETCHAN as defined in Table 25 */
|
|
uint8_t id; /* bEntityId, Constant uniquely identifying the Terminal */
|
|
uint8_t name; /* iName, Index of string descriptor, describing the name of the Network
|
|
* Channel Terminal
|
|
*/
|
|
uint8_t index; /* bChannelIndex, The channel index of the associated network channel */
|
|
uint8_t phyif; /* bPhysicalInterface, Type of physical interface */
|
|
};
|
|
#define SIZEOF_NETCHAN_FUNCDESC 7
|
|
|
|
/* Table 37: Protocol Unit Functional Descriptor */
|
|
|
|
struct cdc_protounit_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t subtype; /* bDescriptorSubType, CDC_DSUBTYPE_PROTOUNIT as defined in Table 25 */
|
|
uint8_t id; /* bEntityId, Constant uniquely identifying the Unit */
|
|
uint8_t proto; /* bProtocol, Protocol code as defined in Table 19 */
|
|
uint8_t child[1]; /* Nth ID of lower Terminal or Unit to which this Terminal is connected */
|
|
};
|
|
#define SIZEOF_PROTOUNIT_FUNCDESC(n) ((n)+5)
|
|
|
|
/* Table 38: Extension Unit Functional Descriptor */
|
|
|
|
struct cdc_extunit_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t subtype; /* bDescriptorSubType, CDC_DSUBTYPE_EXTUNIT as defined in Table 25 */
|
|
uint8_t id; /* bEntityId, Constant uniquely identifying the Extension Unit */
|
|
uint8_t code; /* bExtensionCode, Vendor specific code identifying the Extension Unit */
|
|
uint8_t name; /* iName, Index of string descriptor, describing the name of the Extension Unit */
|
|
uint8_t child[1]; /* Nth ID of lower Terminal or Unit to which this Terminal is connected */
|
|
};
|
|
#define SIZEOF_EXTUNIT_FUNCDESC(n) ((n)+6)
|
|
|
|
/* Table 39: Multi-Channel Management Functional Descriptor */
|
|
|
|
struct cdc_mcm_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t subtype; /* bDescriptorSubType, CDC_DSUBTYPE_MCM as defined in Table 25 */
|
|
uint8_t caps; /* bmCapabilities: Bit encoded */
|
|
};
|
|
#define SIZEOF_MCM_FUNCDESC 4
|
|
|
|
/* Table 40: CAPI Control Management Functional Descriptor */
|
|
|
|
struct cdc_capi_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t subtype; /* bDescriptorSubType, CDC_DSUBTYPE_CAPI as defined in Table 25 */
|
|
uint8_t caps; /* bmCapabilities: Bit encoded */
|
|
};
|
|
#define SIZEOF_CAPI_FUNCDESC 4
|
|
|
|
/* Table 41: Ethernet Networking Functional Descriptor */
|
|
|
|
struct cdc_ecm_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t subtype; /* bDescriptorSubType, CDC_DSUBTYPE_ECM as defined in Table 25 */
|
|
uint8_t mac; /* iMACAddress, Index of teh 48bit Ethernet MAC address string descriptor */
|
|
uint8_t stats[4]; /* bmEthernetStatistics, Indicates which Ethernet statistics functions
|
|
* the device collects. See Table 42.
|
|
*/
|
|
uint8_t maxseg[2]; /* wMaxSegmentSize, The maximum segment size that the Ethernet device is
|
|
* capable of supporting.
|
|
*/
|
|
uint8_t nmcflts[2]; /* wNumberMCFilters, Contains the number of multicast filters that can be
|
|
* configured by the host.
|
|
*/
|
|
uint8_t npwrflts; /* bNumberPowerFilters, Contains the number of pattern filters that are
|
|
* available for causing wake-up of the host.
|
|
*/
|
|
};
|
|
#define SIZEOF_ECM_FUNCDESC 13
|
|
|
|
/* Table 43: ATM Networking Functional Descriptor */
|
|
|
|
struct cdc_atm_funcdesc_s
|
|
{
|
|
uint8_t size; /* bFunctionLength, Size of this descriptor */
|
|
uint8_t type; /* bDescriptorType, USB_DESC_TYPE_CSINTERFACE */
|
|
uint8_t subtype; /* bDescriptorSubType, CDC_DSUBTYPE_ATM as defined in Table 25 */
|
|
uint8_t endid; /* iEndSystemIdentifier, Index of End System Identifier string descriptor */
|
|
uint8_t datacaps; /* bmDataCapabilities, The ATM data types the device supports */
|
|
uint8_t devstats; /* bmATMDeviceStatistics, Indicates which optional statistics functions the
|
|
* device collects.
|
|
*/
|
|
uint8_t mxseg2[2]; /* wType2MaxSegmentSize, The maximum segment size that the Type 2 device is
|
|
* capable of supporting.
|
|
*/
|
|
uint8_t mxseg3[2]; /* wType3MaxSegmentSize, The maximum segment size that the Type 3 device is
|
|
* capable of supporting
|
|
*/
|
|
uint8_t mxvc[2]; /* wMaxVC, The maximum number of simultaneous virtual circuits the device is
|
|
* capable of supporting
|
|
*/
|
|
};
|
|
#define SIZEOF_ATM_FUNCDESC 12
|
|
|
|
/* Descriptor Data Structures ***************************************************************/
|
|
/* Table 50: Line Coding Structure */
|
|
|
|
struct cdc_linecoding_s
|
|
{
|
|
uint8_t baud[4]; /* dwDTERate, Data terminal rate, in bits per second */
|
|
uint8_t stop; /* bCharFormat 0=1, 1=1.5, 2=2 stop bits */
|
|
uint8_t parity; /* bParityType, 0=None, 1=Odd, 2=Even, 3=Mark, 4=Space */
|
|
uint8_t nbits; /* bDataBits, Data bits (5,6,7,8, or 16) */
|
|
};
|
|
#define SIZEOF_CDC_LINECODING 7
|
|
|
|
/* Table 55: Line Status Information Structure */
|
|
|
|
struct cdc_linestatus_s
|
|
{
|
|
uint8_t size[2]; /* wLength, Size of this structure, in bytes */
|
|
uint8_t ringer[4]; /* dwRingerBitmap, Ringer Configuration bitmap for this line */
|
|
uint8_t line[4]; /* dwLineState, Defines current state of the line */
|
|
uint32_t call[1]; /* dwCallStateN, Defines current state of call N on the line */
|
|
};
|
|
|
|
/* Messages are formatted as a standardized 8-byte header, followed by a variable-length
|
|
* data field. The header identifies the kind of notification, and the interface associated
|
|
* with the notification; it also indicates the length of the variable length portion of
|
|
* the message
|
|
*/
|
|
|
|
struct cdc_notification_s
|
|
{
|
|
uint8_t type; /* bmRequestType */
|
|
uint8_t notification; /* bNotification */
|
|
uint8_t value[2]; /* wValue */
|
|
uint8_t index[2]; /* wIndex - interface */
|
|
uint8_t len[2]; /* wLength - length of variable data */
|
|
uint8_t data[1]; /* Variable length data begins here */
|
|
};
|
|
|
|
/* Table 60: Unit Parameter Structure */
|
|
|
|
struct cdc_unitparm_s
|
|
{
|
|
uint8_t id; /* bEntityId, Unit ID */
|
|
uint8_t index; /* bParameterIndex, A zero based value indicating Unit parameter index */
|
|
};
|
|
|
|
/* Table 61: Power Management Pattern Filter Structure */
|
|
|
|
/* Notification Data Structures *************************************************************/
|
|
/* Table 72: ConnectionSpeedChange Data Structure */
|
|
|
|
struct cdc_speedchange_s
|
|
{
|
|
uint8_t us[4]; /* Contains the upstream bit rate, in bits per second */
|
|
uint8_t ds[4]; /* Contains the downstream bit rate, in bits per second */
|
|
};
|
|
|
|
#endif /* __INCLUDE_NUTTX_USB_CDC_H */
|