tinySA/os/hal/include/usb_cdc.h

137 lines
4.6 KiB
C

/*
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/**
* @file usb_cdc.h
* @brief USB CDC macros and structures.
*
* @addtogroup USB_CDC
* @{
*/
#ifndef USB_CDC_H
#define USB_CDC_H
/*===========================================================================*/
/* Driver constants. */
/*===========================================================================*/
/**
* @name CDC specific messages.
* @{
*/
#define CDC_SEND_ENCAPSULATED_COMMAND 0x00U
#define CDC_GET_ENCAPSULATED_RESPONSE 0x01U
#define CDC_SET_COMM_FEATURE 0x02U
#define CDC_GET_COMM_FEATURE 0x03U
#define CDC_CLEAR_COMM_FEATURE 0x04U
#define CDC_SET_AUX_LINE_STATE 0x10U
#define CDC_SET_HOOK_STATE 0x11U
#define CDC_PULSE_SETUP 0x12U
#define CDC_SEND_PULSE 0x13U
#define CDC_SET_PULSE_TIME 0x14U
#define CDC_RING_AUX_JACK 0x15U
#define CDC_SET_LINE_CODING 0x20U
#define CDC_GET_LINE_CODING 0x21U
#define CDC_SET_CONTROL_LINE_STATE 0x22U
#define CDC_SEND_BREAK 0x23U
#define CDC_SET_RINGER_PARMS 0x30U
#define CDC_GET_RINGER_PARMS 0x31U
#define CDC_SET_OPERATION_PARMS 0x32U
#define CDC_GET_OPERATION_PARMS 0x33U
/** @} */
/**
* @name CDC classes
* @{
*/
#define CDC_COMMUNICATION_INTERFACE_CLASS 0x02U
#define CDC_DATA_INTERFACE_CLASS 0x0AU
/** @} */
/**
* @name CDC subclasses
* @{
*/
#define CDC_ABSTRACT_CONTROL_MODEL 0x02U
/** @} */
/**
* @name CDC descriptors
* @{
*/
#define CDC_CS_INTERFACE 0x24U
/** @} */
/**
* @name CDC subdescriptors
* @{
*/
#define CDC_HEADER 0x00U
#define CDC_CALL_MANAGEMENT 0x01U
#define CDC_ABSTRACT_CONTROL_MANAGEMENT 0x02U
#define CDC_UNION 0x06U
/** @} */
/**
* @name Line Control bit definitions.
* @{
*/
#define LC_STOP_1 0U
#define LC_STOP_1P5 1U
#define LC_STOP_2 2U
#define LC_PARITY_NONE 0U
#define LC_PARITY_ODD 1U
#define LC_PARITY_EVEN 2U
#define LC_PARITY_MARK 3U
#define LC_PARITY_SPACE 4U
/** @} */
/*===========================================================================*/
/* Driver pre-compile time settings. */
/*===========================================================================*/
/*===========================================================================*/
/* Derived constants and error checks. */
/*===========================================================================*/
/*===========================================================================*/
/* Driver data structures and types. */
/*===========================================================================*/
/**
* @brief Type of Line Coding structure.
*/
typedef struct {
uint8_t dwDTERate[4];
uint8_t bCharFormat;
uint8_t bParityType;
uint8_t bDataBits;
} cdc_linecoding_t;
/*===========================================================================*/
/* Driver macros. */
/*===========================================================================*/
/*===========================================================================*/
/* External declarations. */
/*===========================================================================*/
#endif /* USB_CDC_H */
/** @} */