/* * Copyright (c) 2015 - 2016, Freescale Semiconductor, Inc. * Copyright 2016 NXP * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #ifndef __USB_HOST_CDC_H__ #define __USB_HOST_CDC_H__ /*! * @addtogroup usb_host_cdc_drv * @{ */ /******************************************************************************* * Definitions ******************************************************************************/ /* Class-specific request */ /* CDC 1.2 */ /*! @brief CDC class-specific request (SEND_ENCAPSULATED_COMMAND) */ #define USB_HOST_CDC_SEND_ENCAPSULATED_COMMAND 0x00U /*! @brief CDC class-specific request (GET_ENCAPSULATED_RESPONSE) */ #define USB_HOST_CDC_GET_ENCAPSULATED_RESPONSE 0x01U /* PSTN */ /*! @brief CDC class-specific request (SET_LINE_CODING) */ #define USB_HOST_CDC_SET_LINE_CODING 0x20U /*! @brief CDC class-specific request (GET_LINE_CODING) */ #define USB_HOST_CDC_GET_LINE_CODING 0x21U /*! @brief CDC class-specific request (SET_CONTROL_LINE_STATE) */ #define USB_HOST_CDC_SET_CONTROL_LINE_STATE 0x22U /*! @brief CDC class-specific notifications(SerialState) bitmap*/ #define USB_HOST_ACM_UART_STATE_BITMAP_BTXCARRITER 0x01U /*! @brief CDC class-specific notifications(SerialState) bitmap*/ #define USB_HOST_ACM_UART_STATE_BITMAP_BRXCARRITER 0x02U /*! @brief CDC class-specific notifications(SerialState) bitmap*/ #define USB_HOST_ACM_UART_STATE_BITMAP_BBREAK 0x04U /*! @brief CDC class-specific notifications(SerialState) bitmap*/ #define USB_HOST_ACM_UART_STATE_BITMAP_BBRINGSIGNAL 0x10U /*! @brief CDC class-specific request (SET_CONTROL_LINE_STATE) bitmap*/ #define USB_HOST_CDC_CONTROL_LINE_STATE_DTR 0x01U /*! @brief CDC class-specific request (SET_CONTROL_LINE_STATE) bitmap*/ #define USB_HOST_CDC_CONTROL_LINE_STATE_RTS 0x02U /*CDC SPEC*/ /*! @brief CDC class-specific bDescriptor SubType in functional descriptors*/ #define USB_HOST_DESC_SUBTYPE_HEADER 0x00U /*! @brief CDC class-specific bDescriptor SubType in functional descriptors*/ #define USB_HOST_DESC_SUBTYPE_CM 0x01U /*! @brief CDC class-specific bDescriptor SubType in functional descriptors*/ #define USB_HOST_DESC_SUBTYPE_ACM 0x02U /*! @brief CDC class-specific bDescriptor SubType in functional descriptors*/ #define USB_HOST_DESC_SUBTYPE_DLM 0x03U /*! @brief CDC class-specific bDescriptor SubType in functional descriptors*/ #define USB_HOST_DESC_SUBTYPE_TR 0x04U /*! @brief CDC class-specific bDescriptor SubType in functional descriptors*/ #define USB_HOST_DESC_SUBTYPE_TC_LSR 0x05U /*! @brief CDC class-specific bDescriptor SubType in functional descriptors*/ #define USB_HOST_DESC_SUBTYPE_UNION 0x06U /*! @brief CDC class-specific bDescriptor SubType in functional descriptors*/ #define USB_HOST_DESC_SUBTYPE_CS 0x07U /*! @brief CDC class-specific bDescriptor SubType in functional descriptors*/ #define USB_HOST_DESC_SUBTYPE_TOM 0x08U /*See the CDC specification page20*/ /*! @brief CDC class-specific code, Communications Interface Class Code*/ #define USB_HOST_CDC_COMMUNICATIONS_CLASS_CODE 0x02U /*! @brief CDC class-specific code,Communications Class Subclass Codes*/ #define USB_HOST_CDC_SUBCLASS_ACM_CODE 0x02U /*No class specific protocol required. See the CDC specification page22*/ #define USB_HOST_CDC_PROTOCOL_CODE 0x00U /*! @brief CDC class-specific code,Data Class Interface Codes*/ #define USB_HOST_CDC_DATA_CLASS_CODE 0x0AU /* This field is unused for Data Class interfaces and should have a value of 00h.*/ #define USB_HOST_CDC_DATA_SUBCLASS_CODE 0x00U /*No class-specific protocol required. See the CDC specification page22*/ #define USB_HOST_CDC_DATA_PROTOCOL_CODE 0x00U /*! @brief CDC GetLineCoding structure according to the 6.3 in PSTN specification */ typedef struct _usb_host_cdc_line_coding_struct { uint32_t dwDTERate; /*!< Data terminal rate, in bits per second*/ uint8_t bCharFormat; /*!< Stop bits*/ uint8_t bParityType; /*!< Parity*/ uint8_t bDataBits; /*!< Data bits (5, 6, 7, 8 or 16).*/ } usb_host_cdc_line_coding_struct_t; /*! @brief CDC GetLineCoding structure according to the 6.3 in PSTN specification */ typedef struct _usb_host_cdc_control_line_state_struct { uint16_t line_state; /*!< D1, This signal corresponds to V.24 signal 105 and RS-232 signal RTS*/ /*!< D0, This signal corresponds to V.24 signal 108/2 and RS-232 signal DTR*/ } usb_host_cdc_control_line_state_struct_t; /*! @brief CDC SerialState structure according to the 6.5.4 in PSTN specification */ typedef struct _usb_host_cdc_acm_state_struct { uint8_t reserved[8]; /*!< Notify response by the device, this is used as notification header which is return by the device */ uint8_t bmstate; /*!< UART State Bitmap Values*/ uint8_t reserved1[1]; /*!< Fix 4B align issue*/ uint8_t reserved2[2]; /*!< Fix 4B align issue*/ } usb_host_cdc_acm_state_struct_t; /*! @brief CDC Header Functional Descriptor structure according to the 5.2.3 in CDC specification */ typedef struct _usb_host_cdc_head_function_desc_struct { uint8_t bFunctionLength; /*!