blob: c29e8610ce9186ecaa6e8b1686cba8d8599691d6 [file]
/******************************************************************************
* @file CDCClassCommon.h
*
* @brief for TLSR chips
*
* @author public@telink-semi.com;
* @date Sep. 30, 2010
*
* @attention
*
* Copyright (C) 2019-2020 Telink Semiconductor (Shanghai) Co., Ltd.
*
* 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.
*
*****************************************************************************/
#pragma once
/* Includes: */
#include <application/usbstd/stdDescriptors.h>
#include "tl_common.h"
/* Enable C linkage for C++ Compilers: */
#if defined(__cplusplus)
extern "C" {
#endif
#define CDC_CONTROL_LINE_OUT_DTR BIT(0)
#define CDC_CONTROL_LINE_OUT_RTS BIT(1)
#define CDC_CONTROL_LINE_IN_DCD BIT(0)
#define CDC_CONTROL_LINE_IN_DSR BIT(1)
#define CDC_CONTROL_LINE_IN_BREAK BIT(2)
#define CDC_CONTROL_LINE_IN_RING BIT(3)
#define CDC_CONTROL_LINE_IN_FRAMEERROR BIT(4)
#define CDC_CONTROL_LINE_IN_PARITYERROR BIT(5)
#define CDC_CONTROL_LINE_IN_OVERRUNERROR BIT(6)
#define CDC_FUNCTIONAL_DESCRIPTOR(DataSize) \
struct \
{ \
USB_Descriptor_Hdr_t Header; \
u8 SubType; \
u8 Data[DataSize]; \
}
enum CDC_Descriptor_ClassSubclass_Protocol_t
{
CDC_CSCP_NoSpecific_Subclass = 0x00,
CDC_CSCP_NoSpecific_Protocol = 0x00,
CDC_CSCP_NoData_Subclass = 0x00,
CDC_CSCP_NoData_Protocol = 0x00,
CDC_CSCP_ATCmd_Protocol = 0x01,
CDC_CSCP_CDC_Class = 0x02,
CDC_CSCP_ACM_Subclass = 0x02,
CDC_CSCP_CDCData_Class = 0x0A,
CDC_CSCP_VendorSpecific_Protocol = 0xFF,
};
enum CDC_Class_Requestions_t
{
CDC_REQ_SendEncapsulated_Cmd,
CDC_REQ_GetEncapsulated_Rsp,
CDC_REQ_SetLine_Encoding = 0x20,
CDC_REQ_GetLine_Encoding,
CDC_REQ_SetControlLine_State,
CDC_REQ_SendBreak,
};
enum CDC_Class_Notifications_t
{
CDC_NOTIF_Serial_State = 0x20,
};
enum CDC_Descriptor_Subtypes_t
{
CDC_DSUBTYPE_CSInterface_Header,
CDC_DSUBTYPE_CSInterface_CallManagement,
CDC_DSUBTYPE_CSInterface_ACM,
CDC_DSUBTYPE_CSInterface_DirectLine,
CDC_DSUBTYPE_CSInterface_TelephoneRinger,
CDC_DSUBTYPE_CSInterface_TelephoneCall,
CDC_DSUBTYPE_CSInterface_Union,
CDC_DSUBTYPE_CSInterface_CountrySelection,
CDC_DSUBTYPE_CSInterface_TelephoneOpModes,
CDC_DSUBTYPE_CSInterface_USBTerminal,
CDC_DSUBTYPE_CSInterface_NetworkChannel,
CDC_DSUBTYPE_CSInterface_ProtocolUnit,
CDC_DSUBTYPE_CSInterface_ExtensionUnit,
CDC_DSUBTYPE_CSInterface_MultiChannel,
CDC_DSUBTYPE_CSInterface_CAPI,
CDC_DSUBTYPE_CSInterface_Ethernet,
CDC_DSUBTYPE_CSInterface_ATM,
};
enum CDC_LineEncoding_Formats_t
{
CDC_LINEENCODING_OneStopBit,
CDC_LINEENCODING_OneAndAHalfStopBits,
CDC_LINEENCODING_TwoStopBits,
};
enum CDC_LineEncoding_Parity_t
{
CDC_PARITY_None,
CDC_PARITY_Odd,
CDC_PARITY_Even,
CDC_PARITY_Mark,
CDC_PARITY_Space,
};
typedef struct
{
USB_Descriptor_Hdr_t Header;
u8 Subtype;
u16 CDCSpecification;
} USB_CDC_Descriptor_FunctionalHeader_t;
typedef struct
{
u8 bFunctionLength;
u8 bDescriptorType;
u8 bDescriptorSubType;
u16 bcdCDC;
} USB_CDC_StdDescriptor_FunctionalHeader_t;
typedef struct
{
USB_Descriptor_Hdr_t Header;
u8 Subtype;
u8 Capabilities;
} USB_CDC_Descriptor_FunctionalACM_t;
typedef struct
{
u8 bFunctionLength;
u8 bDescriptorType;
u8 bDescriptorSubType;
u8 bmCapabilities;
} USB_CDC_StdDescriptor_FunctionalACM_t;
typedef struct
{
USB_Descriptor_Hdr_t Header;
u8 Subtype;
u8 MasterInterfaceNumber;
u8 SlaveInterfaceNumber;
} USB_CDC_Descriptor_FunctionalUnion_t;
typedef struct
{
u8 bFunctionLength;
u8 bDescriptorType;
u8 bDescriptorSubType;
u8 bMasterInterface;
u8 bSlaveInterface0;
} USB_CDC_StdDescriptor_FunctionalUnion_t;
typedef struct
{
u32 BaudRateBPS;
u8 CharFormat;
u8 ParityType;
u8 DataBits;
} CDC_LineEncoding_t;
/* Disable C linkage for C++ Compilers: */
#if defined(__cplusplus)
}
#endif