📄 cdc.h
字号:
/*********************************************************************
* FileName: cdc.h
********************************************************************/
#include "system\typedefs.h"
#define SEND_ENCAPSULATED_COMMAND 0x00
#define GET_ENCAPSULATED_RESPONSE 0x01
#define SET_COMM_FEATURE 0x02
#define GET_COMM_FEATURE 0x03
#define CLEAR_COMM_FEATURE 0x04
#define SET_LINE_CODING 0x20
#define GET_LINE_CODING 0x21
#define SET_CONTROL_LINE_STATE 0x22
#define SEND_BREAK 0x23
#define NETWORK_CONNECTION 0x00
#define RESPONSE_AVAILABLE 0x01
#define SERIAL_STATE 0x20
#define CDC_DEVICE 0x02
#define COMM_INTF 0x02
#define ABSTRACT_CONTROL_MODEL 0x02
#define V25TER 0x01 // Common AT commands ("Hayes(TM)")
#define DATA_INTF 0x0A
#define NO_PROTOCOL 0x00 // No class specific protocol required
#define ABSTRACT_STATE 0x01
#define COUNTRY_SETTING 0x02
#define CS_INTERFACE 0x24
#define CS_ENDPOINT 0x25
#define DSC_FN_HEADER 0x00
#define DSC_FN_CALL_MGT 0x01
#define DSC_FN_ACM 0x02 // ACM - Abstract Control Management
#define DSC_FN_DLM 0x03 // DLM - Direct Line Managment
#define DSC_FN_TELEPHONE_RINGER 0x04
#define DSC_FN_RPT_CAPABILITIES 0x05
#define DSC_FN_UNION 0x06
#define DSC_FN_COUNTRY_SELECTION 0x07
#define DSC_FN_TEL_OP_MODES 0x08
#define DSC_FN_USB_TERMINAL 0x09
#define CDC_TX_READY 0
#define CDC_TX_BUSY 1
#define CDC_TX_BUSY_ZLP 2 // ZLP: Zero Length Packet
#define CDC_TX_COMPLETING 3
#define mUSBUSARTIsTxTrfReady() (cdc_trf_state == CDC_TX_READY)
#define mCDCUsartRxIsBusy() CDC_BULK_BD_OUT.Stat.UOWN
#define mCDCUsartTxIsBusy() CDC_BULK_BD_IN.Stat.UOWN
#define mCDCGetRxLength() cdc_rx_len
#define mUSBUSARTTxRam(pData,len) \
{ \
pCDCSrc.bRam = pData; \
cdc_tx_len = len; \
cdc_mem_type = _RAM; \
cdc_trf_state = CDC_TX_BUSY; \
}
#define mUSBUSARTTxRom(pData,len) \
{ \
pCDCSrc.bRom = pData; \
cdc_tx_len = len; \
cdc_mem_type = _ROM; \
cdc_trf_state = CDC_TX_BUSY; \
}
#define LINE_CODING_LENGTH 0x07
typedef union _LINE_CODING
{
struct
{
byte _byte[LINE_CODING_LENGTH];
};
struct
{
DWORD dwDTERate; // Complex data structure
byte bCharFormat;
byte bParityType;
byte bDataBits;
};
} LINE_CODING;
typedef union _CONTROL_SIGNAL_BITMAP
{
byte _byte;
struct
{
unsigned DTE_PRESENT:1; // [0] Not Present [1] Present
unsigned CARRIER_CONTROL:1; // [0] Deactivate [1] Activate
};
} CONTROL_SIGNAL_BITMAP;
typedef struct _USB_CDC_HEADER_FN_DSC
{
byte bFNLength;
byte bDscType;
byte bDscSubType;
word bcdCDC;
} USB_CDC_HEADER_FN_DSC;
/* Abstract Control Management Functional Descriptor */
typedef struct _USB_CDC_ACM_FN_DSC
{
byte bFNLength;
byte bDscType;
byte bDscSubType;
byte bmCapabilities;
} USB_CDC_ACM_FN_DSC;
/* Union Functional Descriptor */
typedef struct _USB_CDC_UNION_FN_DSC
{
byte bFNLength;
byte bDscType;
byte bDscSubType;
byte bMasterIntf;
byte bSaveIntf0;
} USB_CDC_UNION_FN_DSC;
/* Call Management Functional Descriptor */
typedef struct _USB_CDC_CALL_MGT_FN_DSC
{
byte bFNLength;
byte bDscType;
byte bDscSubType;
byte bmCapabilities;
byte bDataInterface;
} USB_CDC_CALL_MGT_FN_DSC;
/** E X T E R N S ************************************************************/
extern byte cdc_rx_len;
extern byte cdc_trf_state;
extern POINTER pCDCSrc;
extern byte cdc_tx_len;
extern byte cdc_mem_type;
/** P U B L I C P R O T O T Y P E S *****************************************/
void USBCheckCDCRequest(void);
void CDCInitEP(void);
byte getsUSBUSART(char *buffer, byte len);
void putrsUSBUSART(const rom char *data);
void putsUSBUSART(char *data);
void CDCTxService(void);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -