增加所有文件
This commit is contained in:
1234
middleware/usb/uC-USBH/Class/CDC/ACM/usbh_acm.c
Normal file
1234
middleware/usb/uC-USBH/Class/CDC/ACM/usbh_acm.c
Normal file
File diff suppressed because it is too large
Load Diff
265
middleware/usb/uC-USBH/Class/CDC/ACM/usbh_acm.h
Normal file
265
middleware/usb/uC-USBH/Class/CDC/ACM/usbh_acm.h
Normal file
@@ -0,0 +1,265 @@
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* uC/USB-Host
|
||||
* The Embedded USB Host Stack
|
||||
*
|
||||
* Copyright 2004-2021 Silicon Laboratories Inc. www.silabs.com
|
||||
*
|
||||
* SPDX-License-Identifier: APACHE-2.0
|
||||
*
|
||||
* This software is subject to an open source license and is distributed by
|
||||
* Silicon Laboratories Inc. pursuant to the terms of the Apache License,
|
||||
* Version 2.0 available at www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
*
|
||||
* COMMUNICATIONS DEVICE CLASS (CDC)
|
||||
* ABSTRACT CONTROL MODEL (ACM)
|
||||
*
|
||||
* Filename : usbh_acm.h
|
||||
* Version : V3.42.01
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* MODULE
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef USBH_CDC_ACM_MODULE_PRESENT
|
||||
#define USBH_CDC_ACM_MODULE_PRESENT
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* INCLUDE FILES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#include "../usbh_cdc.h"
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* EXTERNS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#ifdef USBH_CDC_ACM_MODULE
|
||||
#define USBH_CDC_ACM_EXT
|
||||
#else
|
||||
#define USBH_CDC_ACM_EXT extern
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* DEFINES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_CDC_ACM_DTR_SET 0x01u /* RS-232 signal Data Terminal Ready */
|
||||
#define USBH_CDC_ACM_RTS_SET 0x01u /* RS-232 signal Request To Send */
|
||||
#define USBH_CDC_ACM_DTR_CLR 0x00u /* RS-232 signal Data Terminal Ready */
|
||||
#define USBH_CDC_ACM_RTS_CLR 0x00u /* RS-232 signal Request To Send */
|
||||
|
||||
#define USBH_CDC_ACM_SER_DCD 0x01u /* RS-232 signal Data Carrier Detection */
|
||||
#define USBH_CDC_ACM_SER_DSR 0x02u /* RS-232 signal Data Set Ready */
|
||||
#define USBH_CDC_ACM_SER_BRK 0x04u /* RS-232 signal Break */
|
||||
#define USBH_CDC_ACM_SER_RING_INDC 0x08u /* RS-232 signal Ring Indicator */
|
||||
#define USBH_CDC_ACM_SER_FRAME_ERR 0x10u /* RS-232 signal Frame Error */
|
||||
#define USBH_CDC_ACM_SER_PARITY_ERR 0x20u /* RS-232 signal Parity Error */
|
||||
#define USBH_CDC_ACM_SER_OVER_RUN 0x40u /* RS-232 signal Buffer Over Run Error */
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* SET/GET LINE CODING VALUES
|
||||
*
|
||||
* Note(s) : (1) See "Universal Serial Bus Communications Class Subclass Specification for PSTN Devices",
|
||||
* version 1.2, February 9, 2007. Section 6.3.11 Table 17
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_CDC_ACM_LINE_CODING_BAUDRATE_110 110u
|
||||
#define USBH_CDC_ACM_LINE_CODING_BAUDRATE_300 300u
|
||||
#define USBH_CDC_ACM_LINE_CODING_BAUDRATE_1200 1200u
|
||||
#define USBH_CDC_ACM_LINE_CODING_BAUDRATE_2400 2400u
|
||||
#define USBH_CDC_ACM_LINE_CODING_BAUDRATE_4800 4800u
|
||||
#define USBH_CDC_ACM_LINE_CODING_BAUDRATE_9600 9600u
|
||||
#define USBH_CDC_ACM_LINE_CODING_BAUDRATE_19200 19200u
|
||||
#define USBH_CDC_ACM_LINE_CODING_BAUDRATE_38400 38400u
|
||||
#define USBH_CDC_ACM_LINE_CODING_BAUDRATE_56700 56700u
|
||||
#define USBH_CDC_ACM_LINE_CODING_BAUDRATE_115200 115200u
|
||||
#define USBH_CDC_ACM_LINE_CODING_BAUDRATE_230400 230400u
|
||||
#define USBH_CDC_ACM_LINE_CODING_BAUDRATE_460800 460800u
|
||||
#define USBH_CDC_ACM_LINE_CODING_BAUDRATE_921600 921600u
|
||||
|
||||
#define USBH_CDC_ACM_LINE_CODING_STOP_BIT_1 0u
|
||||
#define USBH_CDC_ACM_LINE_CODING_STOP_BIT_1_5 1u
|
||||
#define USBH_CDC_ACM_LINE_CODING_STOP_BIT_2 2u
|
||||
|
||||
#define USBH_CDC_ACM_LINE_CODING_PARITY_NONE 0u
|
||||
#define USBH_CDC_ACM_LINE_CODING_PARITY_ODD 1u
|
||||
#define USBH_CDC_ACM_LINE_CODING_PARITY_EVEN 2u
|
||||
#define USBH_CDC_ACM_LINE_CODING_PARITY_MARK 3u
|
||||
#define USBH_CDC_ACM_LINE_CODING_PARITY_SPACE 4u
|
||||
|
||||
#define USBH_CDC_ACM_LINE_CODING_DATA_BITS_5 5u
|
||||
#define USBH_CDC_ACM_LINE_CODING_DATA_BITS_6 6u
|
||||
#define USBH_CDC_ACM_LINE_CODING_DATA_BITS_7 7u
|
||||
#define USBH_CDC_ACM_LINE_CODING_DATA_BITS_8 8u
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* DATA TYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
typedef struct usbh_cdc_serial_state {
|
||||
CPU_BOOLEAN RxCarrier;
|
||||
CPU_BOOLEAN TxCarrier;
|
||||
CPU_BOOLEAN Break;
|
||||
CPU_BOOLEAN RingSignal;
|
||||
CPU_BOOLEAN Framing;
|
||||
CPU_BOOLEAN Parity;
|
||||
CPU_BOOLEAN OverRun;
|
||||
} USBH_CDC_SERIAL_STATE;
|
||||
|
||||
typedef struct usbh_cdc_acm_notifications {
|
||||
CPU_BOOLEAN NetworkConnection;
|
||||
CPU_BOOLEAN SerialState;
|
||||
} USBH_CDC_ACM_NOTIFICATIONS;
|
||||
|
||||
typedef struct usbh_cdc_acm_requests {
|
||||
CPU_BOOLEAN SetCommFeature;
|
||||
CPU_BOOLEAN GetCommFeature;
|
||||
CPU_BOOLEAN ClrCommFeature;
|
||||
CPU_BOOLEAN SetLineCoding;
|
||||
CPU_BOOLEAN GetLineCoding;
|
||||
CPU_BOOLEAN SetControlLineState;
|
||||
CPU_BOOLEAN SendBreak;
|
||||
} USBH_CDC_ACM_REQUESTS;
|
||||
|
||||
typedef void (*USBH_CDC_SERIAL_STATE_NOTIFY) (USBH_CDC_SERIAL_STATE serial_sate);
|
||||
|
||||
typedef void (*USBH_CDC_DATA_NOTIFY) (void *p_data,
|
||||
CPU_INT08U *p_buf,
|
||||
CPU_INT32U xfer_len,
|
||||
USBH_ERR err);
|
||||
|
||||
typedef struct usbh_cdc_acm_dev {
|
||||
USBH_CDC_DEV *CDC_DevPtr;
|
||||
USBH_CDC_ACM_NOTIFICATIONS SupportedEvents;
|
||||
USBH_CDC_ACM_REQUESTS SupportedRequests;
|
||||
CPU_INT08U LineCodingBuf[10];
|
||||
USBH_CDC_SERIAL_STATE_NOTIFY EvtSerialStateNotifyPtr;
|
||||
USBH_CDC_DATA_NOTIFY DataTxNotifyPtr;
|
||||
void *DataTxArgPtr;
|
||||
USBH_CDC_DATA_NOTIFY DataRxNotifyPtr;
|
||||
void *DataRxArgPtr;
|
||||
} USBH_CDC_ACM_DEV;
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* GLOBAL VARIABLES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
USBH_CDC_ACM_EXT USBH_CLASS_DRV USBH_CDC_ACM_ClassDrv;
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* MACRO'S
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* FUNCTION PROTOTYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
USBH_ERR USBH_CDC_ACM_GlobalInit (void);
|
||||
|
||||
void USBH_CDC_ACM_EventRxNotifyReg(USBH_CDC_ACM_DEV *p_cdc_acm_dev,
|
||||
USBH_CDC_SERIAL_STATE_NOTIFY p_serial_state_notify);
|
||||
|
||||
|
||||
USBH_CDC_ACM_DEV *USBH_CDC_ACM_Add (USBH_CDC_DEV *p_cdc_dev,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
USBH_ERR USBH_CDC_ACM_Remove (USBH_CDC_ACM_DEV *p_cdc_acm_dev);
|
||||
|
||||
USBH_ERR USBH_CDC_ACM_LineCodingSet (USBH_CDC_ACM_DEV *p_cdc_acm_dev,
|
||||
CPU_INT32U baud_rate,
|
||||
CPU_INT08U stop_bits,
|
||||
CPU_INT08U parity_val,
|
||||
CPU_INT08U data_bits);
|
||||
|
||||
USBH_ERR USBH_CDC_ACM_LineCodingGet (USBH_CDC_ACM_DEV *p_cdc_acm_dev,
|
||||
CPU_INT32U *p_baud_rate,
|
||||
CPU_INT08U *p_stop_bits,
|
||||
CPU_INT08U *p_parity_val,
|
||||
CPU_INT08U *p_data_bits);
|
||||
|
||||
USBH_ERR USBH_CDC_ACM_LineStateSet (USBH_CDC_ACM_DEV *p_cdc_acm_dev,
|
||||
CPU_INT08U dtr_bit,
|
||||
CPU_INT08U rts_bit);
|
||||
|
||||
USBH_ERR USBH_CDC_ACM_BreakSend (USBH_CDC_ACM_DEV *p_cdc_acm_dev,
|
||||
CPU_INT16U break_time);
|
||||
|
||||
USBH_ERR USBH_CDC_ACM_CmdSend (USBH_CDC_ACM_DEV *p_cdc_acm_dev,
|
||||
CPU_INT08U *p_buf,
|
||||
CPU_INT32U buf_len);
|
||||
|
||||
USBH_ERR USBH_CDC_ACM_RespRx (USBH_CDC_ACM_DEV *p_cdc_acm_dev,
|
||||
CPU_INT08U *p_buf,
|
||||
CPU_INT32U buf_len);
|
||||
|
||||
CPU_INT32U USBH_CDC_ACM_DataTx (USBH_CDC_ACM_DEV *p_cdc_acm_dev,
|
||||
void *p_buf,
|
||||
CPU_INT32U buf_len,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
CPU_INT32U USBH_CDC_ACM_DataRx (USBH_CDC_ACM_DEV *p_cdc_acm_dev,
|
||||
void *p_buf,
|
||||
CPU_INT32U buf_len,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
USBH_ERR USBH_CDC_ACM_DataTxAsync (USBH_CDC_ACM_DEV *p_cdc_acm_dev,
|
||||
void *p_buf,
|
||||
CPU_INT32U buf_len,
|
||||
USBH_CDC_DATA_NOTIFY tx_cmpl_notify,
|
||||
void *p_tx_cmpl_arg);
|
||||
|
||||
USBH_ERR USBH_CDC_ACM_DataRxAsync (USBH_CDC_ACM_DEV *p_cdc_acm_dev,
|
||||
void *p_buf,
|
||||
CPU_INT32U buf_len,
|
||||
USBH_CDC_DATA_NOTIFY rx_cmpl_notify,
|
||||
void *p_rx_cmpl_arg);
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* CONFIGURATION ERRORS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* END
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#endif
|
||||
1425
middleware/usb/uC-USBH/Class/CDC/usbh_cdc.c
Normal file
1425
middleware/usb/uC-USBH/Class/CDC/usbh_cdc.c
Normal file
File diff suppressed because it is too large
Load Diff
418
middleware/usb/uC-USBH/Class/CDC/usbh_cdc.h
Normal file
418
middleware/usb/uC-USBH/Class/CDC/usbh_cdc.h
Normal file
@@ -0,0 +1,418 @@
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* uC/USB-Host
|
||||
* The Embedded USB Host Stack
|
||||
*
|
||||
* Copyright 2004-2021 Silicon Laboratories Inc. www.silabs.com
|
||||
*
|
||||
* SPDX-License-Identifier: APACHE-2.0
|
||||
*
|
||||
* This software is subject to an open source license and is distributed by
|
||||
* Silicon Laboratories Inc. pursuant to the terms of the Apache License,
|
||||
* Version 2.0 available at www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
*
|
||||
* COMMUNICATIONS DEVICE CLASS (CDC)
|
||||
*
|
||||
* Filename : usbh_cdc.h
|
||||
* Version : V3.42.01
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* MODULE
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef USBH_CDC_MODULE_PRESENT
|
||||
#define USBH_CDC_MODULE_PRESENT
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* INCLUDE FILES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#include "../../Source/usbh_os.h"
|
||||
#include "../../Source/usbh_class.h"
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* EXTERNS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#ifdef USBH_CDC_MODULE
|
||||
#define USBH_CDC_EXT
|
||||
#else
|
||||
#define USBH_CDC_EXT extern
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* DEFINES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_CDC_LEN_EVENT_BUF 10u
|
||||
|
||||
#define USBH_CDC_NOTIFICATION_NET_CONN 0x00u
|
||||
#define USBH_CDC_NOTIFICATION_RESP_AVAIL 0x01u
|
||||
#define USBH_CDC_NOTIFICATION_AUX_JACK_HOOK_STATE 0x08u
|
||||
#define USBH_CDC_NOTIFICATION_RING_DETECT 0x09u
|
||||
#define USBH_CDC_NOTIFICATION_SERIAL_STATE 0x20u
|
||||
#define USBH_CDC_NOTIFICATION_CALL_STATE_CHNG 0x28u
|
||||
#define USBH_CDC_NOTIFICATION_LINE_STATE_CHNG 0x23u
|
||||
|
||||
#define USBH_CDC_LEN_FNCTLHEADER_DESC 0x05u /* Len of functional hdr desc. */
|
||||
#define USBH_CDC_LEN_CALL_MANAGEMENT_FNCTL_DESC 0x05u /* Len of call mgmt functional desc. */
|
||||
#define USBH_CDC_LEN_ACM_FNCTL_DESC 0x04u /* Len of ACM functional desc. */
|
||||
#define USBH_CDC_LEN_UNION_FNCTL_DESC 0x05u /* Len of union functional desc. */
|
||||
#define USBH_CDC_LEN_LINECODING 0x07u /* Len of line coding params. */
|
||||
#define USBH_CDC_LEN_SERSTATE 0x0Au /* Len of dev ser state. */
|
||||
#define USBH_CDC_LEN_RESPONSE_AVAIL 0x08u /* Len of dev response avail. */
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* SUBCLASS CODES FOR COMMUNICATION INTERFACE CLASS
|
||||
*
|
||||
* Note(s) : (1) See "USB Class Definitiopns for Communication Devices Specification", version 1.1,
|
||||
* Section 4.3, Table 16.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_CDC_CONTROL_SUBCLASS_CODE_DLCM 0x01u
|
||||
#define USBH_CDC_CONTROL_SUBCLASS_CODE_ACM 0x02u
|
||||
#define USBH_CDC_CONTROL_SUBCLASS_CODE_TCM 0x03u
|
||||
#define USBH_CDC_CONTROL_SUBCLASS_CODE_MCCM 0x04u
|
||||
#define USBH_CDC_CONTROL_SUBCLASS_CODE_CAPICM 0x05u
|
||||
#define USBH_CDC_CONTROL_SUBCLASS_CODE_ENCM 0x06u
|
||||
#define USBH_CDC_CONTROL_SUBCLASS_CODE_ATMNCM 0x07u
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* PROTOCOL CODES FOR COMMUNICATION INTERFACE CLASS
|
||||
*
|
||||
* Note(s) : (1) See "USB Class Definitiopns for Communication Devices Specification", version 1.1,
|
||||
* Section 4.4, Table 17.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_CDC_CONTROL_PROTOCOL_CODE_USB 0x00u
|
||||
#define USBH_CDC_CONTROL_PROTOCOL_CODE_V_25_AT 0x01u
|
||||
#define USBH_CDC_CONTROL_PROTOCOL_CODE_VENDOR 0xFFu
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* SUBCLASS CODES FOR DATA INTERFACE CLASS
|
||||
*
|
||||
* Note(s) : (1) See "USB Class Definitiopns for Communication Devices Specification", version 1.1,
|
||||
* Section 4.6.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_CDC_DATA_SUBCLASS_CODE_NONE 0x00u
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* PROTOCOL CODES FOR DATA INTERFACE CLASS
|
||||
*
|
||||
* Note(s) : (1) See "USB Class Definitiopns for Communication Devices Specification", version 1.1,
|
||||
* Section 4.7, Table 19.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_CDC_DATA_PROTOCOL_CODE_USB 0x00u
|
||||
#define USBH_CDC_DATA_PROTOCOL_CODE_ISDN_BRI 0x30u
|
||||
#define USBH_CDC_DATA_PROTOCOL_CODE_ISO_IEC 0x31u
|
||||
#define USBH_CDC_DATA_PROTOCOL_CODE_Q_921M 0x50u
|
||||
#define USBH_CDC_DATA_PROTOCOL_CODE_Q_921_NUM 0x51u
|
||||
#define USBH_CDC_DATA_PROTOCOL_CODE_Q921TM 0x52u
|
||||
#define USBH_CDC_DATA_PROTOCOL_CODE_V_42bits 0x90u
|
||||
#define USBH_CDC_DATA_PROTOCOL_CODE_E_ISDN 0x91u
|
||||
#define USBH_CDC_DATA_PROTOCOL_CODE_V_24_ISDN 0x92u
|
||||
#define USBH_CDC_DATA_PROTOCOL_CODE_CAPI 0x93u
|
||||
#define USBH_CDC_DATA_PROTOCOL_CODE_CDC 0xFEu
|
||||
#define USBH_CDC_DATA_PROTOCOL_CODE_TM_USB 0xFFu
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* FUNCTIONAL DESCRIPTORS
|
||||
*
|
||||
* Note(s) : (1) See "USB Class Definitiopns for Communication Devices Specification", version 1.1,
|
||||
* Section 5.2.3.
|
||||
* (2) The functinal descriptors descriptor type is given in "Table 24".
|
||||
* (3) The functinal descriptors descriptor subtype is given in "Table 25".
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_CDC_FNCTL_DESC_INTERFACE 0x24u
|
||||
#define USBH_CDC_FNCTL_DESC_ENDPOINT 0x25u
|
||||
|
||||
#define USBH_CDC_FNCTL_DESC_SUB_HFD 0x00u
|
||||
#define USBH_CDC_FNCTL_DESC_SUB_CMFD 0x01u
|
||||
#define USBH_CDC_FNCTL_DESC_SUB_ACMFD 0x02u
|
||||
#define USBH_CDC_FNCTL_DESC_SUB_DLMFD 0x03u
|
||||
#define USBH_CDC_FNCTL_DESC_SUB_TRFD 0x04u
|
||||
#define USBH_CDC_FNCTL_DESC_SUB_TC_LSRCFD 0x05u
|
||||
#define USBH_CDC_FNCTL_DESC_SUB_UFD 0x06u
|
||||
#define USBH_CDC_FNCTL_DESC_SUB_CSFD 0x07u
|
||||
#define USBH_CDC_FNCTL_DESC_SUB_TOMFD 0x08u
|
||||
#define USBH_CDC_FNCTL_DESC_SUB_USB_TFD 0x09u
|
||||
#define USBH_CDC_FNCTL_DESC_SUB_NCTD 0x0Au
|
||||
#define USBH_CDC_FNCTL_DESC_SUB_PUFD 0x0Bu
|
||||
#define USBH_CDC_FNCTL_DESC_SUB_EUFD 0x0Cu
|
||||
#define USBH_CDC_FNCTL_DESC_SUB_MCMFD 0x0Du
|
||||
#define USBH_CDC_FNCTL_DESC_SUB_CAPI_CMFD 0x0Eu
|
||||
#define USBH_CDC_FNCTL_DESC_SUB_ENFD 0x0Fu
|
||||
#define USBH_CDC_FNCTL_DESC_SUB_ATM_NFD 0x10u
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* CLASS-SPECIFIC REQUESTS
|
||||
*
|
||||
* Note(s) : (1) See "USB Class Definitiopns for Communication Devices Specification", version 1.1 Section 6.2,
|
||||
* Table 46.
|
||||
*
|
||||
* (2) The 'bRequest' field of a class-specific setup request may contain one of these values.
|
||||
*
|
||||
* (3) The set line coding request is "used to configure the serial driver with new line coding
|
||||
* values". The setup request packet will consist of :
|
||||
*
|
||||
* (a) bmRequestType = 00100001b (class, interface, host-to-device)
|
||||
* (b) bRequest = 0x20
|
||||
* (c) wValue = 0x0000
|
||||
* (d) wIndex = Interface number
|
||||
* (e) wLength = 0x07
|
||||
*
|
||||
* (4) The get line coding request is "used to know the serial driver line coding values".
|
||||
* The setup request packet will consist of :
|
||||
*
|
||||
* (a) bmRequestType = 10100001b (class, interface, device-to-host)
|
||||
* (b) bRequest = 0x21
|
||||
* (c) wValue = 0x0000
|
||||
* (d) wIndex = Interface number
|
||||
* (e) wLength = 0x07
|
||||
*
|
||||
* (5) The set control line state request is "used to know the presence of RTS and DTR".
|
||||
* The setup request packet will consist of :
|
||||
*
|
||||
* (a) bmRequestType = 00100001b (class, interface, host-to-device)
|
||||
* (b) bRequest = 0x23
|
||||
* (c) wValue = 0x0000
|
||||
* (d) wIndex = Interface number
|
||||
* (e) wLength = 0x00
|
||||
*
|
||||
* (f) The 'wValue' field is a bit mapped datum with three sub fields:
|
||||
* (1) Bit 15-2: Reserved. Should be set to zero.
|
||||
* (2) Bit 1 : Carrier control and corresponds to RS-232 signal RTS.
|
||||
* (a) 0 = Deactivate carrier.
|
||||
* (b) 1 = Activate carrier.
|
||||
*
|
||||
* (3) Bit 0 : Indicates to DCE if DTE is present or not and corresponds to RS-232
|
||||
* signal DTR.
|
||||
* (a) 0 = Not present.
|
||||
* (b) 1 = Present.
|
||||
*
|
||||
* (6) The send break request is "used to generate the break".
|
||||
* The setup request packet will consist of :
|
||||
*
|
||||
* (a) bmRequestType = 00100001b (class, interface, host-to-device)
|
||||
* (b) bRequest = 0x24
|
||||
* (c) wValue = 0x0000
|
||||
* (d) wIndex = Interface number
|
||||
* (e) wLength = 0x00
|
||||
*
|
||||
* (f) The 'wValue' field indicates the duration of break in milli seconds.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_CDC_SEND_ENCAPSULATED_COMMAND 0x00u /* Std brequest val for SEND_ENCAPSULATED_COMMAND. */
|
||||
#define USBH_CDC_GET_ENCAPSULATED_RESPONSE 0x01u /* Std brequest val for GET_ENCAPSULATED_RESPONSE. */
|
||||
#define USBH_CDC_SET_LINECODING 0x20u /* Std brequest val for SET_LINE_CODING. */
|
||||
#define USBH_CDC_GET_LINECODING 0x21u /* Std brequest val for GET_LINE_CODING. */
|
||||
#define USBH_CDC_SET_CONTROL_LINESTATE 0x22u /* Std brequest val for SET_CONTROL_LINE_STATE. */
|
||||
#define USBH_CDC_SEND_BREAK 0x23u /* Std brequest val for SEND_BREAK. */
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* NOTIFICATION EVENT
|
||||
*
|
||||
* Note(s) : (1) See "USB Class Definitions for Communication Devices Specification", version 1.1 Section 6.3.
|
||||
*
|
||||
* (2) The 'bRequest' field of a notification event setup request may contain this value.
|
||||
*
|
||||
* (3) The serial state notification is "used to send the current device state to host".
|
||||
* The notification has header structure of setup request packet format and serial state :
|
||||
*
|
||||
* (a) bmRequestType = 10100001b (class, interface, device-to-host)
|
||||
* (b) bRequest = 0x20
|
||||
* (c) wValue = 0x0000
|
||||
* (d) wIndex = Interface number
|
||||
* (e) wLength = 0x0a
|
||||
*
|
||||
* (4) The 'serialstate0' field is a bit mapped datum with eight subfields:
|
||||
* (a) Bit 15-7: Reserved. Should be set to zero.
|
||||
* (b) Bit 6 : bOverRun. Received data has been discarded due to overrun in the device.
|
||||
* (c) Bit 5 : bParity. A parity error has occurred.
|
||||
* (d) Bit 4 : bFraming. A framing error has occurred.
|
||||
* (e) Bit 3 : bRingSignal. State of ring signal detection of the device.
|
||||
* (f) Bit 2 : bBreak. State of break detection mechanism of the device.
|
||||
* (g) Bit 1 : bTxCarrier. State of transmission carrier and corresponds to RS-232
|
||||
* signal DSR.
|
||||
* (h) Bit 0 : bRxCarrier. State of transmission carrier and corresponds to RS-232
|
||||
* signal DCD.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_CDC_SER_STATE 0x20u /* Std brequest val for SERIAL_STATE. */
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* DATA TYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
typedef void (*SUBCLASS_NOTIFY) (void *p_data,
|
||||
CPU_INT08U *p_buf,
|
||||
CPU_INT32U xfer_len,
|
||||
USBH_ERR err);
|
||||
|
||||
typedef struct usbh_cdc_dev {
|
||||
USBH_DEV *DevPtr;
|
||||
CPU_INT08U State;
|
||||
CPU_INT08U RefCnt;
|
||||
USBH_HMUTEX HMutex;
|
||||
CPU_INT08U EventNotifyBuf[USBH_CDC_LEN_EVENT_BUF]; /* Buf used to recv ser state of dev. */
|
||||
|
||||
USBH_EP CIC_IntrIn;
|
||||
USBH_EP DIC_BulkIn;
|
||||
USBH_EP DIC_BulkOut;
|
||||
|
||||
USBH_IF *CIC_IF_Ptr;
|
||||
CPU_INT08U CIC_IF_Nbr;
|
||||
USBH_IF *DIC_IF_Ptr;
|
||||
CPU_INT08U DIC_IF_Nbr;
|
||||
|
||||
SUBCLASS_NOTIFY EvtNotifyPtr;
|
||||
void *EvtNotifyArgPtr;
|
||||
SUBCLASS_NOTIFY DataTxNotifyPtr;
|
||||
void *DataTxNotifyArgPtr;
|
||||
SUBCLASS_NOTIFY DataRxNotifyPtr;
|
||||
void *DataRxNotifyArgPtr;
|
||||
} USBH_CDC_DEV;
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* GLOBAL VARIABLES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
USBH_CDC_EXT USBH_CLASS_DRV USBH_CDC_ClassDrv;
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* MACROS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* FUNCTION PROTOTYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
USBH_ERR USBH_CDC_RefAdd (USBH_CDC_DEV *p_cdc_dev);
|
||||
|
||||
USBH_ERR USBH_CDC_RefRel (USBH_CDC_DEV *p_cdc_dev);
|
||||
|
||||
USBH_ERR USBH_CDC_EvtNotifyReg (USBH_CDC_DEV *p_cdc_dev,
|
||||
SUBCLASS_NOTIFY p_evt_notify,
|
||||
void *p_data);
|
||||
|
||||
USBH_ERR USBH_CDC_DevReg (USBH_CDC_DEV *p_cdc_dev,
|
||||
void *p_data);
|
||||
|
||||
USBH_ERR USBH_CDC_EventNotifyReg(USBH_CDC_DEV *p_cdc_dev,
|
||||
SUBCLASS_NOTIFY p_evt_notify,
|
||||
void *p_arg);
|
||||
|
||||
USBH_ERR USBH_CDC_SubclassGet (USBH_CDC_DEV *p_cdc_dev,
|
||||
CPU_INT08U *p_subclass);
|
||||
|
||||
USBH_ERR USBH_CDC_ProtocolGet (USBH_CDC_DEV *p_cdc_dev,
|
||||
CPU_INT08U *p_protocol);
|
||||
|
||||
USBH_ERR USBH_CDC_CmdTx (USBH_CDC_DEV *p_cdc_dev,
|
||||
CPU_INT08U b_req,
|
||||
CPU_INT08U bm_req_type,
|
||||
CPU_INT16U w_val,
|
||||
void *p_buf,
|
||||
CPU_INT32U buf_len);
|
||||
|
||||
USBH_ERR USBH_CDC_RespRx (USBH_CDC_DEV *p_cdc_dev,
|
||||
CPU_INT08U b_req,
|
||||
CPU_INT08U bm_req_type,
|
||||
CPU_INT16U w_val,
|
||||
void *p_buf,
|
||||
CPU_INT32U buf_len);
|
||||
|
||||
CPU_INT32U USBH_CDC_DataTx (USBH_CDC_DEV *p_cdc_dev,
|
||||
CPU_INT08U *p_buf,
|
||||
CPU_INT32U buf_len,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
USBH_ERR USBH_CDC_DataTxAsync (USBH_CDC_DEV *p_cdc_dev,
|
||||
CPU_INT08U *p_buf,
|
||||
CPU_INT32U buf_len,
|
||||
SUBCLASS_NOTIFY tx_cmpl_notify,
|
||||
void *p_arg);
|
||||
|
||||
CPU_INT32U USBH_CDC_DataRx (USBH_CDC_DEV *p_cdc_dev,
|
||||
CPU_INT08U *p_buf,
|
||||
CPU_INT32U buf_len,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
USBH_ERR USBH_CDC_DataRxAsync (USBH_CDC_DEV *p_cdc_dev,
|
||||
CPU_INT08U *p_buf,
|
||||
CPU_INT32U buf_len,
|
||||
SUBCLASS_NOTIFY rx_cmpl_notify,
|
||||
void *p_arg);
|
||||
|
||||
USBH_IF *USBH_CDC_CommIF_Get (USBH_CDC_DEV *p_cdc_dev);
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* CONFIGURATION ERRORS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* MODULE END
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#endif
|
||||
1898
middleware/usb/uC-USBH/Class/FTDI/usbh_ftdi.c
Normal file
1898
middleware/usb/uC-USBH/Class/FTDI/usbh_ftdi.c
Normal file
File diff suppressed because it is too large
Load Diff
439
middleware/usb/uC-USBH/Class/FTDI/usbh_ftdi.h
Normal file
439
middleware/usb/uC-USBH/Class/FTDI/usbh_ftdi.h
Normal file
@@ -0,0 +1,439 @@
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* uC/USB-Host
|
||||
* The Embedded USB Host Stack
|
||||
*
|
||||
* Copyright 2004-2021 Silicon Laboratories Inc. www.silabs.com
|
||||
*
|
||||
* SPDX-License-Identifier: APACHE-2.0
|
||||
*
|
||||
* This software is subject to an open source license and is distributed by
|
||||
* Silicon Laboratories Inc. pursuant to the terms of the Apache License,
|
||||
* Version 2.0 available at www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
*
|
||||
* FUTURE TECHNOLOGY DEVICES INTERNATIONAL CLASS
|
||||
*
|
||||
* Filename : usbh_ftdi.h
|
||||
* Version : V3.42.01
|
||||
* Note(s) : (1) The reference document "API for FTxxxx Devices Application Note AN_115" can be
|
||||
* requested from FTDI after signing a Non-Disclosure Agreement (NDA).
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* MODULE
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef USBH_FTDI_MODULE_PRESENT
|
||||
#define USBH_FTDI_MODULE_PRESENT
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* INCLUDE FILES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#include "../../Source/usbh_class.h"
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* EXTERNS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#ifdef USBH_FTDI_MODULE
|
||||
#define USBH_FTDI_EXT
|
||||
#else
|
||||
#define USBH_FTDI_EXT extern
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* DEFINES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_FTDI_SERIAL_STATUS_LEN 2u
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* FTDI_RESET CONTROL
|
||||
*
|
||||
* Note(s) : (1) See "API for FTxxxx Devices Application Note AN_115", April 04 2011, Version 1.1,
|
||||
* section 3.1.
|
||||
*
|
||||
* (2) The control value is defined as follow:
|
||||
*
|
||||
* USBH_FTDI_RESET_CTRL_SIO Reset SIO (Resets both RX and TX buffer)
|
||||
* USBH_FTDI_RESET_CTRL_RX Purge RX buffer
|
||||
* USBH_FTDI_RESET_CTRL_TX Purge TX buffer
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_FTDI_RESET_CTRL_SIO DEF_BIT_NONE
|
||||
#define USBH_FTDI_RESET_CTRL_RX DEF_BIT_00
|
||||
#define USBH_FTDI_RESET_CTRL_TX DEF_BIT_01
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* FTDI_MODEM CONTROL
|
||||
*
|
||||
* Note(s) : (1) See "API for FTxxxx Devices Application Note AN_115", April 04 2011, Version 1.1,
|
||||
* section 3.2.
|
||||
*
|
||||
* (2) The control value is defined as follow:
|
||||
*
|
||||
* USBH_FTDI_MODEM_CTRL_DTR_SET Set DTR state
|
||||
* USBH_FTDI_MODEM_CTRL_DTR_RESET Reset DTR state
|
||||
* USBH_FTDI_MODEM_CTRL_DTR_ENABLED Use DTR state
|
||||
* USBH_FTDI_MODEM_CTRL_DTR_DISABLED Disable DTR state
|
||||
* USBH_FTDI_MODEM_CTRL_RTS_SET Set RTS state
|
||||
* USBH_FTDI_MODEM_CTRL_RTS_RESET Reset RTS state
|
||||
* USBH_FTDI_MODEM_CTRL_RTS_ENABLED Use RTS state
|
||||
* USBH_FTDI_MODEM_CTRL_RTS_DISABLED Disable RTS state
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_FTDI_MODEM_CTRL_DTR_SET DEF_BIT_00
|
||||
#define USBH_FTDI_MODEM_CTRL_DTR_RESET DEF_BIT_NONE
|
||||
#define USBH_FTDI_MODEM_CTRL_DTR_ENABLED DEF_BIT_08
|
||||
#define USBH_FTDI_MODEM_CTRL_DTR_DISABLED DEF_BIT_NONE
|
||||
#define USBH_FTDI_MODEM_CTRL_RTS_SET DEF_BIT_01
|
||||
#define USBH_FTDI_MODEM_CTRL_RTS_RESET DEF_BIT_NONE
|
||||
#define USBH_FTDI_MODEM_CTRL_RTS_ENABLED DEF_BIT_09
|
||||
#define USBH_FTDI_MODEM_CTRL_RTS_DISABLED DEF_BIT_NONE
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* FTDI_SET_FLOW PROTOCOL
|
||||
*
|
||||
* Note(s) : (1) See "API for FTxxxx Devices Application Note AN_115", April 04 2011, Version 1.1,
|
||||
* section 3.3.
|
||||
*
|
||||
* (2) The control value is defined as follow:
|
||||
*
|
||||
* USBH_FTDI_PROTOCOL_RTS_CTS Enable output handshaking using RTS/CTS
|
||||
* USBH_FTDI_PROTOCOL_DTR_DSR Enable output handshaking using DTR/DSR
|
||||
* USBH_FTDI_PROTOCOL_XON_XOFF Enable Xon/Xoff handshaking
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_FTDI_PROTOCOL_RTS_CTS DEF_BIT_00
|
||||
#define USBH_FTDI_PROTOCOL_DTR_DSR DEF_BIT_01
|
||||
#define USBH_FTDI_PROTOCOL_XON_XOFF DEF_BIT_02
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* FTDI_SET_BAUD_RATE
|
||||
*
|
||||
* Note(s) : (1) See "API for FTxxxx Devices Application Note AN_115", April 04 2011, Version 1.1,
|
||||
* section 3.4.
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_FTDI_BAUD_RATE_300 0x2710u
|
||||
#define USBH_FTDI_BAUD_RATE_600 0x1388u
|
||||
#define USBH_FTDI_BAUD_RATE_1200 0x09C4u
|
||||
#define USBH_FTDI_BAUD_RATE_2400 0x04E2u
|
||||
#define USBH_FTDI_BAUD_RATE_4800 0x0271u
|
||||
#define USBH_FTDI_BAUD_RATE_9600 0x4138u
|
||||
#define USBH_FTDI_BAUD_RATE_19200 0x809Cu
|
||||
#define USBH_FTDI_BAUD_RATE_38400 0xC04Eu
|
||||
#define USBH_FTDI_BAUD_RATE_57600 0x0034u
|
||||
#define USBH_FTDI_BAUD_RATE_115200 0x001Au
|
||||
#define USBH_FTDI_BAUD_RATE_230400 0x000Du
|
||||
#define USBH_FTDI_BAUD_RATE_460800 0x4006u
|
||||
#define USBH_FTDI_BAUD_RATE_921600 0x8003u
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* FTDI_SET_DATA CHARACTERISTICS
|
||||
*
|
||||
* Note(s) : (1) See "API for FTxxxx Devices Application Note AN_115", April 04 2011, Version 1.1,
|
||||
* section 3.5.
|
||||
*
|
||||
* (2) The control value is defined as follow:
|
||||
*
|
||||
* USBH_FTDI_DATA_PARITY_NONE Do not use the parity bit
|
||||
* USBH_FTDI_DATA_PARITY_ODD Use odd parity bit
|
||||
* USBH_FTDI_DATA_PARITY_EVEN Use even parity bit
|
||||
* USBH_FTDI_DATA_PARITY_MARK Use mark parity bit
|
||||
* USBH_FTDI_DATA_PARITY_SPACE Use space parity bit
|
||||
*
|
||||
* USBH_FTDI_DATA_STOP_BITS_1 Use 1 stop bit
|
||||
* USBH_FTDI_DATA_STOP_BITS_2 Use 2 stop bit
|
||||
*
|
||||
* USBH_FTDI_DATA_BREAK_ENABLED Send break
|
||||
* USBH_FTDI_DATA_BREAK_DISABLED Stop break
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_FTDI_DATA_PARITY_NONE 0x00u
|
||||
#define USBH_FTDI_DATA_PARITY_ODD 0x01u
|
||||
#define USBH_FTDI_DATA_PARITY_EVEN 0x02u
|
||||
#define USBH_FTDI_DATA_PARITY_MARK 0x03u
|
||||
#define USBH_FTDI_DATA_PARITY_SPACE 0x04u
|
||||
|
||||
#define USBH_FTDI_DATA_STOP_BITS_1 0x00u
|
||||
#define USBH_FTDI_DATA_STOP_BITS_2 0x08u
|
||||
|
||||
#define USBH_FTDI_DATA_BREAK_ENABLED 0x40u
|
||||
#define USBH_FTDI_DATA_BREAK_DISABLED 0x00u
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* FTDI SERIAL STATUS
|
||||
*
|
||||
* Note(s) : (1) See "API for FTxxxx Devices Application Note AN_115", April 04 2011, Version 1.1,
|
||||
* section 4.
|
||||
*
|
||||
* (2) These defines may be used as a mask to determine whether a field of the modem status or
|
||||
* the line status is enabled or not.
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_FTDI_MODEM_STATUS_FS DEF_BIT_00
|
||||
#define USBH_FTDI_MODEM_STATUS_HS DEF_BIT_01
|
||||
#define USBH_FTDI_MODEM_STATUS_CLEAR_TO_SEND DEF_BIT_04
|
||||
#define USBH_FTDI_MODEM_STATUS_DATA_SET_READY DEF_BIT_05
|
||||
#define USBH_FTDI_MODEM_STATUS_RING_INDICATOR DEF_BIT_06
|
||||
#define USBH_FTDI_MODEM_STATUS_DATA_CARRIER_DETECT DEF_BIT_07
|
||||
|
||||
#define USBH_FTDI_LINE_STATUS_RX_OVERFLOW_ERROR DEF_BIT_01
|
||||
#define USBH_FTDI_LINE_STATUS_PARITY_ERROR DEF_BIT_02
|
||||
#define USBH_FTDI_LINE_STATUS_FRAMING_ERROR DEF_BIT_03
|
||||
#define USBH_FTDI_LINE_STATUS_BREAK_INTERRUPT DEF_BIT_04
|
||||
#define USBH_FTDI_LINE_STATUS_TX_REGISTER_EMPTY DEF_BIT_05
|
||||
#define USBH_FTDI_LINE_STATUS_TX_EMPTY DEF_BIT_06
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* DATA TYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
typedef CPU_INT08U USBH_FTDI_HANDLE;
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* USBH_FTDI_SERIAL_STATUS
|
||||
*
|
||||
* Note(s) : (1) The serial status is defined as follow:
|
||||
*
|
||||
* OFFSET MODEM STATUS MASK
|
||||
* --------------------------------------------------------------------------------------------------
|
||||
* Bit 0 Full-speed 64 bytes max packet USBH_FTDI_MODEM_STATUS_FS
|
||||
* Bit 1 High-speed 512 bytes max packet USBH_FTDI_MODEM_STATUS_HS
|
||||
* Bit 4 Clear to Send (CTS) USBH_FTDI_MODEM_STATUS_CLEAR_TO_SEND
|
||||
* Bit 5 Data Set Ready (DSR) USBH_FTDI_MODEM_STATUS_DATA_SET_READY
|
||||
* Bit 6 Ring Indicator (RI) USBH_FTDI_MODEM_STATUS_RING_INDICATOR
|
||||
* Bit 7 Receive Line Signal Detect (RLSD) USBH_FTDI_MODEM_STATUS_DATA_CARRIER_DETECT
|
||||
* --------------------------------------------------------------------------------------------------
|
||||
*
|
||||
* OFFSET LINE STATUS MASK
|
||||
* --------------------------------------------------------------------------------------------------
|
||||
* Bit 1 Overrun Error (OE) USBH_FTDI_LINE_STATUS_RX_OVERFLOW_ERROR
|
||||
* Bit 2 Parity Error (PE) USBH_FTDI_LINE_STATUS_PARITY_ERROR
|
||||
* Bit 3 Framing Error (FE) USBH_FTDI_LINE_STATUS_FRAMING_ERROR
|
||||
* Bit 4 Break Interrupt (BI) USBH_FTDI_LINE_STATUS_BREAK_INTERRUPT
|
||||
* Bit 5 Transmitter Holding Register (THRE) USBH_FTDI_LINE_STATUS_TX_REGISTER_EMPTY
|
||||
* Bit 6 Transmitter Empty (TEMT) USBH_FTDI_LINE_STATUS_TX_EMPTY
|
||||
* --------------------------------------------------------------------------------------------------
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
typedef struct usbh_ftdi_serial_status {
|
||||
CPU_INT08U ModemStatus;
|
||||
CPU_INT08U LineStatus;
|
||||
} USBH_FTDI_SERIAL_STATUS;
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* USBH_FTDI_RXCB_FNCT
|
||||
*
|
||||
* Note(s) : (1) Application RX function callback.
|
||||
*
|
||||
* (2) The arguments are defined as follow:
|
||||
*
|
||||
* ftdi_handle Handle on FTDI device.
|
||||
* p_arg Pointer to argument.
|
||||
* p_buf Pointer to received data buffer.
|
||||
* xfer_len Number of octets received.
|
||||
* p_serial_status Pointer to USBH_FTDI_SERIAL_STATUS structure that will be filled.
|
||||
* err Variable that will receive the return error code.
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
typedef void (*USBH_FTDI_ASYNC_RX_FNCT) (USBH_FTDI_HANDLE ftdi_handle,
|
||||
void *p_arg,
|
||||
void *p_buf,
|
||||
CPU_INT32U xfer_len,
|
||||
USBH_FTDI_SERIAL_STATUS *p_serial_status,
|
||||
USBH_ERR err);
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* USBH_FTDI_TXCB_FNCT
|
||||
*
|
||||
* Note(s) : (1) Application TX function callback.
|
||||
*
|
||||
* (2) The arguments are defined as follow:
|
||||
*
|
||||
* ftdi_handle Handle on FTDI device.
|
||||
* p_arg Pointer to argument.
|
||||
* p_buf Pointer to transmitted data buffer.
|
||||
* xfer_len Number of octets transmitted.
|
||||
* err Variable that will receive the return error code.
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
typedef void (*USBH_FTDI_ASYNC_TX_FNCT) (USBH_FTDI_HANDLE ftdi_handle,
|
||||
void *p_arg,
|
||||
void *p_buf,
|
||||
CPU_INT32U xfer_len,
|
||||
USBH_ERR err);
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* USBH_FTDI_CALLBACKS
|
||||
*
|
||||
* Note(s) : (1) Callback function pointers structure.
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
typedef const struct usbh_ftdi_callbacks {
|
||||
void (*ConnNotifyPtr) (USBH_FTDI_HANDLE ftdi_handle); /* Ptr to conn fnct callback. */
|
||||
void (*DisconnNotifyPtr) (USBH_FTDI_HANDLE ftdi_handle); /* Ptr to disconn fnct callback. */
|
||||
} USBH_FTDI_CALLBACKS;
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* GLOBAL VARIABLES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* MACROS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* FUNCTION PROTOTYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
void USBH_FTDI_Init (USBH_FTDI_CALLBACKS *p_ftdi_fnct,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
void USBH_FTDI_Reset (USBH_FTDI_HANDLE ftdi_handle,
|
||||
CPU_INT16U reset_ctrl,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
void USBH_FTDI_ModemCtrlSet (USBH_FTDI_HANDLE ftdi_handle,
|
||||
CPU_INT16U modem_ctrl,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
void USBH_FTDI_FlowCtrlSet (USBH_FTDI_HANDLE ftdi_handle,
|
||||
CPU_INT08U protocol,
|
||||
CPU_INT08U xon_char,
|
||||
CPU_INT08U xoff_char,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
void USBH_FTDI_BaudRateSet (USBH_FTDI_HANDLE ftdi_handle,
|
||||
CPU_INT16U baud_rate,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
void USBH_FTDI_DataSet (USBH_FTDI_HANDLE ftdi_handle,
|
||||
CPU_INT08U data_size,
|
||||
CPU_INT08U parity,
|
||||
CPU_INT08U stop_bits,
|
||||
CPU_INT08U break_bit,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
void USBH_FTDI_ModemStatusGet(USBH_FTDI_HANDLE ftdi_handle,
|
||||
USBH_FTDI_SERIAL_STATUS *p_serial_status,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
CPU_INT32U USBH_FTDI_Tx (USBH_FTDI_HANDLE ftdi_handle,
|
||||
void *p_buf,
|
||||
CPU_INT32U buf_len,
|
||||
CPU_INT16U timeout,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
void USBH_FTDI_TxAsync (USBH_FTDI_HANDLE ftdi_handle,
|
||||
void *p_buf,
|
||||
CPU_INT32U buf_len,
|
||||
USBH_FTDI_ASYNC_TX_FNCT tx_cmpl_notify,
|
||||
void *p_arg,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
CPU_INT32U USBH_FTDI_Rx (USBH_FTDI_HANDLE ftdi_handle,
|
||||
void *p_buf,
|
||||
CPU_INT32U buf_len,
|
||||
CPU_INT16U timeout,
|
||||
USBH_FTDI_SERIAL_STATUS *p_serial_status,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
void USBH_FTDI_RxAsync (USBH_FTDI_HANDLE ftdi_handle,
|
||||
void *p_buf,
|
||||
CPU_INT32U buf_len,
|
||||
USBH_FTDI_SERIAL_STATUS *p_serial_status,
|
||||
USBH_FTDI_ASYNC_RX_FNCT rx_cmpl_notify,
|
||||
void *p_arg,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
USBH_DEV *USBH_FTDI_DevGet (USBH_FTDI_HANDLE ftdi_handle,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* CONFIGURATION ERRORS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* MODULE END
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#endif
|
||||
2197
middleware/usb/uC-USBH/Class/HID/usbh_hid.c
Normal file
2197
middleware/usb/uC-USBH/Class/HID/usbh_hid.c
Normal file
File diff suppressed because it is too large
Load Diff
650
middleware/usb/uC-USBH/Class/HID/usbh_hid.h
Normal file
650
middleware/usb/uC-USBH/Class/HID/usbh_hid.h
Normal file
@@ -0,0 +1,650 @@
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* uC/USB-Host
|
||||
* The Embedded USB Host Stack
|
||||
*
|
||||
* Copyright 2004-2021 Silicon Laboratories Inc. www.silabs.com
|
||||
*
|
||||
* SPDX-License-Identifier: APACHE-2.0
|
||||
*
|
||||
* This software is subject to an open source license and is distributed by
|
||||
* Silicon Laboratories Inc. pursuant to the terms of the Apache License,
|
||||
* Version 2.0 available at www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* NOTICE
|
||||
*
|
||||
* Semidrive modified this file to adapt it for ssdk platform.
|
||||
* The modifications are only intended for use with Semidrive chips.
|
||||
* Copyright of all the modifications belongs to Semidrive Semiconductor.
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
*
|
||||
* HUMAN INTERFACE DEVICE CLASS
|
||||
*
|
||||
* Filename : usbh_hid.h
|
||||
* Version : V3.42.01
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* MODULE
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef USBH_HID_MODULE_PRESENT
|
||||
#define USBH_HID_MODULE_PRESENT
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* INCLUDE FILES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#include "../../Source/usbh_class.h"
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* EXTERNS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#ifdef USBH_HID_MODULE
|
||||
#define USBH_HID_EXT
|
||||
#else
|
||||
#define USBH_HID_EXT extern
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* DEFINES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* HID PROTOCOL CODES
|
||||
*
|
||||
* Note(s) : (1) See 'Device Class Definition for Human Interface Devices (HID), 6/27/01, Version 1.11',
|
||||
* section 4.3 for more details about HID protocol codes.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_HID_PROTOCOL_CODE_NONE 0x00u
|
||||
#define USBH_HID_PROTOCOL_CODE_KBD 0x01u
|
||||
#define USBH_HID_PROTOCOL_CODE_MOUSE 0x02u
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* HID PROTOCOLS
|
||||
*
|
||||
* Note(s) : (1) See 'Device Class Definition for Human Interface Devices (HID), 6/27/01, Version 1.11',
|
||||
* section 7.2 for more details about HID protocols.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_HID_REQ_PROTOCOL_BOOT 0x0000u
|
||||
#define USBH_HID_REQ_PROTOCOL_REPORT 0x0001u
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* HID DESCRIPTOR COUNTRY CODES
|
||||
*
|
||||
* Note(s) : (1) See 'Device Class Definition for Human Interface Devices (HID), 6/27/01, Version 6.2.1',
|
||||
* section 7.2 for more details about HID country codes.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_HID_COUNTRY_CODE_NOT_SUPPORTED 0u
|
||||
#define USBH_HID_COUNTRY_CODE_ARABIC 1u
|
||||
#define USBH_HID_COUNTRY_CODE_BELGIAN 2u
|
||||
#define USBH_HID_COUNTRY_CODE_CANADIAN_BILINGUAL 3u
|
||||
#define USBH_HID_COUNTRY_CODE_CANADIAN_FRENCH 4u
|
||||
#define USBH_HID_COUNTRY_CODE_CZECH_REPUBLIC 5u
|
||||
#define USBH_HID_COUNTRY_CODE_DANISH 6u
|
||||
#define USBH_HID_COUNTRY_CODE_FINNISH 7u
|
||||
#define USBH_HID_COUNTRY_CODE_FRENCH 8u
|
||||
#define USBH_HID_COUNTRY_CODE_GERMAN 9u
|
||||
#define USBH_HID_COUNTRY_CODE_GREEK 10u
|
||||
#define USBH_HID_COUNTRY_CODE_HEBREW 11u
|
||||
#define USBH_HID_COUNTRY_CODE_HUNGARY 12u
|
||||
#define USBH_HID_COUNTRY_CODE_INTERNATIONAL 13u
|
||||
#define USBH_HID_COUNTRY_CODE_ITALIAN 14u
|
||||
#define USBH_HID_COUNTRY_CODE_JAPAN_KATAKANA 15u
|
||||
#define USBH_HID_COUNTRY_CODE_KOREAN 16u
|
||||
#define USBH_HID_COUNTRY_CODE_LATIN_AMERICAN 17u
|
||||
#define USBH_HID_COUNTRY_CODE_NETHERLANDS_DUTCH 18u
|
||||
#define USBH_HID_COUNTRY_CODE_NORWEGIAN 19u
|
||||
#define USBH_HID_COUNTRY_CODE_PERSIAN_FARSI 20u
|
||||
#define USBH_HID_COUNTRY_CODE_POLAND 21u
|
||||
#define USBH_HID_COUNTRY_CODE_PORTUGUESE 22u
|
||||
#define USBH_HID_COUNTRY_CODE_RUSSIA 23u
|
||||
#define USBH_HID_COUNTRY_CODE_SLOVAKIA 24u
|
||||
#define USBH_HID_COUNTRY_CODE_SPANISH 25u
|
||||
#define USBH_HID_COUNTRY_CODE_SWEDISH 26u
|
||||
#define USBH_HID_COUNTRY_CODE_SWISS_FRENCH 27u
|
||||
#define USBH_HID_COUNTRY_CODE_SWISS_GERMAN 28u
|
||||
#define USBH_HID_COUNTRY_CODE_SWITZERLAND 29u
|
||||
#define USBH_HID_COUNTRY_CODE_TAIWAN 30u
|
||||
#define USBH_HID_COUNTRY_CODE_TURKISH_Q 31u
|
||||
#define USBH_HID_COUNTRY_CODE_UK 32u
|
||||
#define USBH_HID_COUNTRY_CODE_US 33u
|
||||
#define USBH_HID_COUNTRY_CODE_YUGOSLAVIA 34u
|
||||
#define USBH_HID_COUNTRY_CODE_TURKISH_F 35u
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* HID REPORT ITEM
|
||||
*
|
||||
* Note(s) : (1) See 'Device Class Definition for Human Interface Devices (HID), 6/27/01, Version 1.11',
|
||||
* section 6.2.2 for more details about HID report items.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_HID_ITEM_LONG 0xFEu
|
||||
|
||||
/* ----------------- SHORT ITEM TYPES ----------------- */
|
||||
#define USBH_HID_ITEM_TYPE_MAIN 0x00u
|
||||
#define USBH_HID_ITEM_TYPE_GLOBAL 0x01u
|
||||
#define USBH_HID_ITEM_TYPE_LOCAL 0x02u
|
||||
#define USBH_HID_ITEM_TYPE_RESERVED 0x03u
|
||||
|
||||
/* ------------------ MAIN ITEM TAGS ------------------ */
|
||||
#define USBH_HID_MAIN_ITEM_TAG_IN 0x08u
|
||||
#define USBH_HID_MAIN_ITEM_TAG_OUT 0x09u
|
||||
#define USBH_HID_MAIN_ITEM_TAG_COLL 0x0Au
|
||||
#define USBH_HID_MAIN_ITEM_TAG_FEATURE 0x0Bu
|
||||
#define USBH_HID_MAIN_ITEM_TAG_ENDCOLL 0x0Cu
|
||||
|
||||
/* ----------------- GLOBAL ITEM TAGS ----------------- */
|
||||
#define USBH_HID_GLOBAL_ITEM_TAG_USAGE_PAGE 0x00u
|
||||
#define USBH_HID_GLOBAL_ITEM_TAG_LOG_MIN 0x01u
|
||||
#define USBH_HID_GLOBAL_ITEM_TAG_LOG_MAX 0x02u
|
||||
#define USBH_HID_GLOBAL_ITEM_TAG_PHY_MIN 0x03u
|
||||
#define USBH_HID_GLOBAL_ITEM_TAG_PHY_MAX 0x04u
|
||||
#define USBH_HID_GLOBAL_ITEM_TAG_UNIT_EXPONENT 0x05u
|
||||
#define USBH_HID_GLOBAL_ITEM_TAG_UNIT 0x06u
|
||||
#define USBH_HID_GLOBAL_ITEM_TAG_REPORT_SIZE 0x07u
|
||||
#define USBH_HID_GLOBAL_ITEM_TAG_REPORT_ID 0x08u
|
||||
#define USBH_HID_GLOBAL_ITEM_TAG_REPORT_COUNT 0x09u
|
||||
#define USBH_HID_GLOBAL_ITEM_TAG_PUSH 0x0Au
|
||||
#define USBH_HID_GLOBAL_ITEM_TAG_POP 0x0Bu
|
||||
|
||||
/* ----------------- LOCAL ITEM TAGS ------------------ */
|
||||
#define USBH_HID_LOCAL_ITEM_TAG_USAGE 0x00u
|
||||
#define USBH_HID_LOCAL_ITEM_TAG_USAGE_MIN 0x01u
|
||||
#define USBH_HID_LOCAL_ITEM_TAG_USAGE_MAX 0x02u
|
||||
#define USBH_HID_LOCAL_ITEM_TAG_DESIGNATOR_INDEX 0x03u
|
||||
#define USBH_HID_LOCAL_ITEM_TAG_DESIGNATOR_MIN 0x04u
|
||||
#define USBH_HID_LOCAL_ITEM_TAG_DESIGNATOR_MAX 0x05u
|
||||
#define USBH_HID_LOCAL_ITEM_TAG_STR_IX 0x07u
|
||||
#define USBH_HID_LOCAL_ITEM_TAG_STR_MIN 0x08u
|
||||
#define USBH_HID_LOCAL_ITEM_TAG_STR_MAX 0x09u
|
||||
#define USBH_HID_LOCAL_ITEM_TAG_DELIMITER 0x0Au
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* HID REPORT
|
||||
*
|
||||
* Note(s) : (1) See 'Device Class Definition for Human Interface Devices (HID), 6/27/01, Version 1.11',
|
||||
* section 6.2.2 for more details about HID reports.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/* -------------------- MAIN ITEMS -------------------- */
|
||||
#define USBH_HID_MAIN_IN 0x80u
|
||||
#define USBH_HID_MAIN_OUT 0x90u
|
||||
#define USBH_HID_MAIN_COLL 0xA0u
|
||||
#define USBH_HID_MAIN_FEATURE 0xB0u
|
||||
#define USBH_HID_MAIN_ENDCOLL 0xC0u
|
||||
|
||||
/* ---------- INPUT / OUTPUT / FEATURE ITEMS ---------- */
|
||||
#define USBH_HID_MAIN_CONST 0x01u
|
||||
#define USBH_HID_MAIN_DATA 0x00u
|
||||
#define USBH_HID_MAIN_VAR 0x02u
|
||||
#define USBH_HID_MAIN_ARRAY 0x00u
|
||||
#define USBH_HID_MAIN_REL 0x04u
|
||||
#define USBH_HID_MAIN_ABS 0x00u
|
||||
#define USBH_HID_MAIN_WRAP 0x08u
|
||||
#define USBH_HID_MAIN_NOWRAP 0x00u
|
||||
#define USBH_HID_MAIN_NONLINE 0x10u
|
||||
#define USBH_HID_MAIN_LINE 0x00u
|
||||
#define USBH_HID_MAIN_NOPREFERRED 0x20u
|
||||
#define USBH_HID_MAIN_PREFERREDSTATE 0x00u
|
||||
#define USBH_HID_MAIN_NULLSTATE 0x40u
|
||||
#define USBH_HID_MAIN_NO_NULL_POS 0x00u
|
||||
#define USBH_HID_MAIN_VOLATILE 0x80u
|
||||
#define USBH_HID_MAIN_NONVOLATILE 0x00u
|
||||
#define USBH_HID_MAIN_BUFFEREDBYTES 0x0100u
|
||||
#define USBH_HID_MAIN_BITFIELD 0x0000u
|
||||
|
||||
/* ----------------- COLLECTION ITEMS ----------------- */
|
||||
#define USBH_HID_COLL_PHYSICAL 0x00u
|
||||
#define USBH_HID_COLL_APP 0x01u
|
||||
#define USBH_HID_COLL_LOGICAL 0x02u
|
||||
#define USBH_HID_COLL_REPORT 0x03u
|
||||
#define USBH_HID_COLL_NAMED_ARRAY 0x04u
|
||||
#define USBH_HID_COLL_USAGE_SWITCH 0x05u
|
||||
#define USBH_HID_COLL_USAGE_MODIFIER 0x06u
|
||||
|
||||
/* ------------------- GLOBAL ITEMS ------------------- */
|
||||
#define USBH_HID_GLOBAL_USAGE_PAGE 0x04u
|
||||
#define USBH_HID_GLOBAL_LOG_MIN 0x14u
|
||||
#define USBH_HID_GLOBAL_LOG_MAX 0x24u
|
||||
#define USBH_HID_GLOBAL_PHY_MIN 0x34u
|
||||
#define USBH_HID_GLOBAL_PHY_MAX 0x44u
|
||||
#define USBH_HID_GLOBAL_UNIT_EXPONENT 0x54u
|
||||
#define USBH_HID_GLOBAL_UNIT 0x64u
|
||||
#define USBH_HID_GLOBAL_REPORT_SIZE 0x74u
|
||||
#define USBH_HID_GLOBAL_REPORT_ID 0x84u
|
||||
#define USBH_HID_GLOBAL_REPORT_COUNT 0x94u
|
||||
#define USBH_HID_GLOBAL_PUSH 0xA4u
|
||||
#define USBH_HID_GLOBAL_POP 0xB4u
|
||||
|
||||
/* ------------------- LOCAL ITEMS -------------------- */
|
||||
#define USBH_HID_LOCAL_USAGE 0x08u
|
||||
#define USBH_HID_LOCAL_USAGE_MIN 0x18u
|
||||
#define USBH_HID_LOCAL_USAGE_MAX 0x28u
|
||||
#define USBH_HID_LOCAL_DESIGNATOR_IX 0x38u
|
||||
#define USBH_HID_LOCAL_DESIGNATOR_MIN 0x48u
|
||||
#define USBH_HID_LOCAL_DESIGNATOR_MAX 0x58u
|
||||
#define USBH_HID_LOCAL_STR_INDEX 0x78u
|
||||
#define USBH_HID_LOCAL_STR_MIN 0x88u
|
||||
#define USBH_HID_LOCAL_STR_MAX 0x98u
|
||||
#define USBH_HID_LOCAL_DELIMITER 0xA8u
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* HID PHYSICAL DESCRIPTOR
|
||||
*
|
||||
* Note(s) : (1) See 'Device Class Definition for Human Interface Devices (HID), 6/27/01, Version 1.11',
|
||||
* section 6.2.3 for more details about HID physical descriptors.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/* -------------------- BIAS VALUES ------------------- */
|
||||
#define USBH_HID_BIAS_NOT_APPLICABLE 0u
|
||||
#define USBH_HID_BIAS_RIGHT_HAND 1u
|
||||
#define USBH_HID_BIAS_LEFT_HAND 2u
|
||||
#define USBH_HID_BIAS_BOTH_HANDS 3u
|
||||
#define USBH_HID_BIAS_EITHER_HAND 4u
|
||||
|
||||
/* ----------------- DESIGNATOR VALUES ---------------- */
|
||||
#define USBH_HID_DESIGNATOR_NONE 0x00u
|
||||
#define USBH_HID_DESIGNATOR_HAND 0x01u
|
||||
#define USBH_HID_DESIGNATOR_EYEBALL 0x02u
|
||||
#define USBH_HID_DESIGNATOR_EYEBROW 0x03u
|
||||
#define USBH_HID_DESIGNATOR_EYELID 0x04u
|
||||
#define USBH_HID_DESIGNATOR_EAR 0x05u
|
||||
#define USBH_HID_DESIGNATOR_NOSE 0x06u
|
||||
#define USBH_HID_DESIGNATOR_MOUTH 0x07u
|
||||
#define USBH_HID_DESIGNATOR_UPPER_LIP 0x08u
|
||||
#define USBH_HID_DESIGNATOR_LOWER_LIP 0x09u
|
||||
#define USBH_HID_DESIGNATOR_JAW 0x0Au
|
||||
#define USBH_HID_DESIGNATOR_NECK 0x0Bu
|
||||
#define USBH_HID_DESIGNATOR_UPPER_ARM 0x0Cu
|
||||
#define USBH_HID_DESIGNATOR_ELBOW 0x0Du
|
||||
#define USBH_HID_DESIGNATOR_FOREARM 0x0Eu
|
||||
#define USBH_HID_DESIGNATOR_WRIST 0x0Fu
|
||||
#define USBH_HID_DESIGNATOR_PALM 0x10u
|
||||
#define USBH_HID_DESIGNATOR_THUMB 0x11u
|
||||
#define USBH_HID_DESIGNATOR_INDEX_FINGER 0x12u
|
||||
#define USBH_HID_DESIGNATOR_MIDDLE_FINGER 0x13u
|
||||
#define USBH_HID_DESIGNATOR_RING_FINGER 0x14u
|
||||
#define USBH_HID_DESIGNATOR_LITTLE_FINGER 0x15u
|
||||
#define USBH_HID_DESIGNATOR_HEAD 0x16u
|
||||
#define USBH_HID_DESIGNATOR_SHOULDER 0x17u
|
||||
#define USBH_HID_DESIGNATOR_HIP 0x18u
|
||||
#define USBH_HID_DESIGNATOR_WAIST 0x19u
|
||||
#define USBH_HID_DESIGNATOR_THIGH 0x1Au
|
||||
#define USBH_HID_DESIGNATOR_KNEE 0x1Bu
|
||||
#define USBH_HID_DESIGNATOR_CALF 0x1Cu
|
||||
#define USBH_HID_DESIGNATOR_ANKLE 0x1Du
|
||||
#define USBH_HID_DESIGNATOR_FOOT 0x1Eu
|
||||
#define USBH_HID_DESIGNATOR_HEEL 0x1Fu
|
||||
#define USBH_HID_DESIGNATOR_BALL_OF_FOOT 0x20u
|
||||
#define USBH_HID_DESIGNATOR_BIG_TOE 0x21u
|
||||
#define USBH_HID_DESIGNATOR_SECOND_TOE 0x22u
|
||||
#define USBH_HID_DESIGNATOR_THIRD_TOE 0x23u
|
||||
#define USBH_HID_DESIGNATOR_FOURTH_TOE 0x24u
|
||||
#define USBH_HID_DESIGNATOR_LITTLE_TOE 0x25u
|
||||
#define USBH_HID_DESIGNATOR_BROW 0x26u
|
||||
#define USBH_HID_DESIGNATOR_CHEEK 0x27u
|
||||
|
||||
/* ----------------- QUALIFIER VALUES ----------------- */
|
||||
#define USBH_HID_QUALIFIER_NOT_APPLICABLE 0u
|
||||
#define USBH_HID_QUALIFIER_RIGHT 1u
|
||||
#define USBH_HID_QUALIFIER_LEFT 2u
|
||||
#define USBH_HID_QUALIFIER_BOTH 3u
|
||||
#define USBH_HID_QUALIFIER_EITHER 4u
|
||||
#define USBH_HID_QUALIFIER_CENTER 5u
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* HID USAGE PAGES
|
||||
*
|
||||
* Note(s) : (1) See 'Universal Serial Bus HID Usage Tables, 10/28/04, Version 1.12',
|
||||
* section 3 for more details about usage pages.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_HID_USAGE_PAGE_UNDEFINED 0x00u
|
||||
#define USBH_HID_USAGE_PAGE_GENERIC_DESKTOP_CTRLS 0x01u
|
||||
#define USBH_HID_USAGE_PAGE_SIMULATION_CTRLS 0x02u
|
||||
#define USBH_HID_USAGE_PAGE_VR_CTRLS 0x03u
|
||||
#define USBH_HID_USAGE_PAGE_SPORT_CTRLS 0x04u
|
||||
#define USBH_HID_USAGE_PAGE_GAME_CTRLS 0x05u
|
||||
#define USBH_HID_USAGE_PAGE_GENERIC_DEV_CTRLS 0x06u
|
||||
#define USBH_HID_USAGE_PAGE_KBD 0x07u
|
||||
#define USBH_HID_USAGE_PAGE_LEDS 0x08u
|
||||
#define USBH_HID_USAGE_PAGE_BUTTON 0x09u
|
||||
#define USBH_HID_USAGE_PAGE_ORDINAL 0x0Au
|
||||
#define USBH_HID_USAGE_PAGE_TELEPHONY 0x0Bu
|
||||
#define USBH_HID_USAGE_PAGE_CONSUMER 0x0Cu
|
||||
#define USBH_HID_USAGE_PAGE_DIGITIZER 0x0Du
|
||||
#define USBH_HID_USAGE_PAGE_PID_PAGE 0x0Fu
|
||||
#define USBH_HID_USAGE_PAGE_UNICODE 0x10u
|
||||
#define USBH_HID_USAGE_PAGE_ALPHANUMERIC_DISP 0x14u
|
||||
#define USBH_HID_USAGE_PAGE_MEDICAL_INSTRUMENTS 0x40u
|
||||
#define USBH_HID_USAGE_PAGE_MON_0 0x80u
|
||||
#define USBH_HID_USAGE_PAGE_MON_1 0x81u
|
||||
#define USBH_HID_USAGE_PAGE_MON_2 0x82u
|
||||
#define USBH_HID_USAGE_PAGE_MON_3 0x83u
|
||||
#define USBH_HID_USAGE_PAGE_PWR_0 0x84u
|
||||
#define USBH_HID_USAGE_PAGE_PWR_1 0x85u
|
||||
#define USBH_HID_USAGE_PAGE_PWR_2 0x86u
|
||||
#define USBH_HID_USAGE_PAGE_PWR_3 0x87u
|
||||
#define USBH_HID_USAGE_PAGE_BAR_CODE_SCANNER_PAGE 0x8Cu
|
||||
#define USBH_HID_USAGE_PAGE_SCALE_PAGE 0x8Du
|
||||
#define USBH_HID_USAGE_PAGE_MSR_DEVS 0x8Eu
|
||||
#define USBH_HID_USAGE_PAGE_POINT_OF_SALE_PAGES 0x8Fu
|
||||
#define USBH_HID_USAGE_PAGE_CAMERA_CTRL_PAGE 0x90u
|
||||
#define USBH_HID_USAGE_PAGE_ARCADE_PAGE 0x91u
|
||||
|
||||
/* ---------- GENERIC DESKTOP PAGE APP USAGES --------- */
|
||||
#define USBH_HID_CA_MOUSE 0x00010002u
|
||||
#define USBH_HID_CA_JOYSTICK 0x00010004u
|
||||
#define USBH_HID_CA_GAME_PAD 0x00010005u
|
||||
#define USBH_HID_CA_KBD 0x00010006u
|
||||
#define USBH_HID_CA_KEYPAD 0x00010007u
|
||||
#define USBH_HID_CA_MULTI_AXIS_CTRLR 0x00010008u
|
||||
#define USBH_HID_CA_SYSTEM_CTRL 0x00010080u
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* DATA TYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* FORWARD DECLARATION
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
typedef struct usbh_hid_coll USBH_HID_COLL;
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* HID DESCRIPTOR
|
||||
*
|
||||
* Note(s) : (1) See 'Device Class Definition for Human Interface Devices (HID), 6/27/01, Version 1.11',
|
||||
* section 6.2.1 for more details about HID descriptor.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
typedef struct usbh_hid_desc {
|
||||
CPU_INT08U bLength;
|
||||
CPU_INT08U bDescriptorType;
|
||||
CPU_INT16U bcdHID;
|
||||
CPU_INT08U bCountryCode;
|
||||
CPU_INT08U bNbrDescriptors;
|
||||
CPU_INT08U bClassDescriptorType;
|
||||
CPU_INT16U wClassDescriptorLength;
|
||||
} USBH_HID_DESC;
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* REPORT FORMAT
|
||||
*
|
||||
* Note(s) : (1) See 'Device Class Definition for Human Interface Devices (HID), 6/27/01, Version 1.11',
|
||||
* section 6.2.2 for more details about HID reports.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
typedef struct usbh_hid_report_fmt {
|
||||
CPU_INT08U ReportID;
|
||||
CPU_INT08U ReportType; /* Report type (INPUT / OUTPUT / FEATURE). */
|
||||
CPU_INT16U UsagePage;
|
||||
CPU_INT32U Usage[USBH_HID_CFG_MAX_NBR_USAGE];
|
||||
CPU_INT32U NbrUsage;
|
||||
CPU_INT32U UsageMin;
|
||||
CPU_INT32U UsageMax;
|
||||
CPU_INT32S LogMin;
|
||||
CPU_INT32S LogMax;
|
||||
CPU_INT32S PhyMin;
|
||||
CPU_INT32S PhyMax;
|
||||
CPU_INT32S UnitExp;
|
||||
CPU_INT32U Unit;
|
||||
CPU_INT32U ReportSize; /* Report size (bits). */
|
||||
CPU_INT32U ReportCnt;
|
||||
CPU_INT32U Flag; /* Flag (Data/constant, var/array ..). */
|
||||
CPU_INT32U PhyUsage; /* Physical usage of this report. */
|
||||
CPU_INT32U AppUsage; /* Application usage of this report. */
|
||||
CPU_INT32U LogUsage; /* Logical usage of this report. */
|
||||
} USBH_HID_REPORT_FMT;
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* HID REPORT ID
|
||||
*
|
||||
* Note(s) : (1) See 'Device Class Definition for Human Interface Devices (HID), 6/27/01, Version 1.11',
|
||||
* section 5.6 for more details about HID report ID.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
typedef struct usbh_hid_report_id {
|
||||
CPU_INT32U Size; /* Report size in bits. */
|
||||
CPU_INT08U ReportID;
|
||||
CPU_INT08U Type; /* Report type (INPUT / OUTPUT / FEATURE). */
|
||||
} USBH_HID_REPORT_ID;
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* HID COLLECTION
|
||||
*
|
||||
* Note(s) : (1) See 'Device Class Definition for Human Interface Devices (HID), 6/27/01, Version 1.11',
|
||||
* section 6.2.2.6 for more details about HID collection.
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
struct usbh_hid_coll {
|
||||
CPU_INT32U Usage; /* Coll usage. */
|
||||
CPU_INT08U Type; /* Coll type (App / Physical / Logical). */
|
||||
USBH_HID_COLL *NextPtr;
|
||||
};
|
||||
|
||||
typedef struct usbh_hid_app_coll {
|
||||
CPU_INT32U Usage; /* Coll usage. */
|
||||
CPU_INT08U Type; /* Coll type (App / Physical / Logical). */
|
||||
CPU_INT08U NbrReportFmt; /* Nbr of report fmts. */
|
||||
|
||||
/* Array of report fmts. */
|
||||
USBH_HID_REPORT_FMT ReportFmt[USBH_HID_CFG_MAX_NBR_REPORT_FMT];
|
||||
} USBH_HID_APP_COLL;
|
||||
|
||||
|
||||
/* --- APPLICATION REPORT RECEIVE CALLBACK FUNCTION --- */
|
||||
typedef void (*USBH_HID_RXCB_FNCT)(void *p_arg,
|
||||
void *p_buf,
|
||||
CPU_INT08U buf_len,
|
||||
USBH_ERR err);
|
||||
|
||||
|
||||
/* ----------- HID REPORT RECEIVE CALLBACK ------------ */
|
||||
typedef struct usbh_hid_rxcb {
|
||||
CPU_BOOLEAN InUse;
|
||||
CPU_INT08U ReportID;
|
||||
void *AsyncArgPtr;
|
||||
USBH_HID_RXCB_FNCT AsyncFnct;
|
||||
} USBH_HID_RXCB;
|
||||
|
||||
|
||||
/* -------------------- HID DEVICE -------------------- */
|
||||
typedef struct usbh_hid_dev {
|
||||
USBH_DEV *DevPtr; /* Ptr to dev struct. */
|
||||
USBH_IF *IfPtr; /* Ptr to IF struct. */
|
||||
CPU_INT08U IfNbr; /* HID IF nbr of dev. */
|
||||
USBH_EP IntrInEP; /* Intr IN EP. */
|
||||
USBH_EP IntrOutEP; /* Intr OUT EP. */
|
||||
CPU_BOOLEAN IsOutEP_Present; /* Indicate if intr OUT EP is present on dev. */
|
||||
|
||||
CPU_INT08U State;
|
||||
CPU_INT08U AppRefCnt; /* Cnt of app ref on this dev. */
|
||||
USBH_HMUTEX HMutex;
|
||||
|
||||
CPU_INT08U SubClass; /* HID dev IF subclass code. */
|
||||
CPU_INT08U Protocol; /* HID dev IF protocol code. */
|
||||
USBH_HID_DESC Desc; /* HID desc content. */
|
||||
|
||||
CPU_INT08U NbrAppColl; /* Nbr of app coll in main item. */
|
||||
USBH_HID_APP_COLL AppColl[USBH_HID_CFG_MAX_NBR_APP_COLL];/* App coll in main item. */
|
||||
CPU_INT08U NbrReportID; /* Tot nbr of report ID. */
|
||||
CPU_BOOLEAN IsReportID_Present; /* Indicate if report ID tag is present. */
|
||||
|
||||
/* Report ID of all colls. */
|
||||
USBH_HID_REPORT_ID ReportID[USBH_HID_CFG_MAX_NBR_REPORT_ID];
|
||||
|
||||
USBH_HID_RXCB RxCB[USBH_HID_CFG_MAX_NBR_RXCB];
|
||||
|
||||
CPU_INT08U ErrCnt; /* Rx error cnt. */
|
||||
CPU_INT08U Boot; /* Is it a boot HID dev? */
|
||||
CPU_BOOLEAN IsInit; /* Indicate if HID class instance is correctly init. */
|
||||
CPU_BOOLEAN RxInProg; /* Async rx is in progress. */
|
||||
|
||||
/* Rx/Tx buf, +1 for report id. */
|
||||
CPU_INT08U RxBuf[LEN_CACHE_ALIGN(USBH_HID_CFG_MAX_RX_BUF_SIZE + 1u)] __CACHE_ALIGN;
|
||||
CPU_INT08U TxBuf[LEN_CACHE_ALIGN(USBH_HID_CFG_MAX_TX_BUF_SIZE + 1u)] __CACHE_ALIGN;
|
||||
/* HID report desc content. */
|
||||
CPU_INT08U ReportDesc[LEN_CACHE_ALIGN(USBH_HID_CFG_MAX_REPORT_DESC_LEN)] __CACHE_ALIGN;
|
||||
USBH_HID_REPORT_ID *MaxReportPtr; /* Ptr to largest report. */
|
||||
|
||||
CPU_INT32U Usage; /* HID device usage. */
|
||||
} USBH_HID_DEV;
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* GLOBAL VARIABLES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
USBH_HID_EXT USBH_CLASS_DRV USBH_HID_ClassDrv; /* HID Class drv API. */
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* MACROS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* FUNCTION PROTOTYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
USBH_ERR USBH_HID_Init (USBH_HID_DEV *p_hid_dev);
|
||||
|
||||
USBH_ERR USBH_HID_RefAdd (USBH_HID_DEV *p_hid_dev);
|
||||
|
||||
USBH_ERR USBH_HID_RefRel (USBH_HID_DEV *p_hid_dev);
|
||||
|
||||
USBH_ERR USBH_HID_GetReportIDArray(USBH_HID_DEV *p_hid_dev,
|
||||
USBH_HID_REPORT_ID **p_report_id,
|
||||
CPU_INT08U *p_nbr_report_id);
|
||||
|
||||
USBH_ERR USBH_HID_GetAppCollArray (USBH_HID_DEV *p_hid_dev,
|
||||
USBH_HID_APP_COLL **p_app_coll,
|
||||
CPU_INT08U *p_nbr_app_coll);
|
||||
|
||||
CPU_BOOLEAN USBH_HID_IsBootDev (USBH_HID_DEV *p_hid_dev,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
CPU_INT08U USBH_HID_RxReport (USBH_HID_DEV *p_hid_dev,
|
||||
CPU_INT08U report_id,
|
||||
void *p_buf,
|
||||
CPU_INT08U buf_len,
|
||||
CPU_INT16U timeout_ms,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
CPU_INT08U USBH_HID_TxReport (USBH_HID_DEV *p_hid_dev,
|
||||
CPU_INT08U report_id,
|
||||
void *p_buf,
|
||||
CPU_INT08U buf_len,
|
||||
CPU_INT16U timeout_ms,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
USBH_ERR USBH_HID_RegRxCB (USBH_HID_DEV *p_hid_dev,
|
||||
CPU_INT08U report_id,
|
||||
USBH_HID_RXCB_FNCT async_fnct,
|
||||
void *p_async_arg);
|
||||
|
||||
USBH_ERR USBH_HID_UnregRxCB (USBH_HID_DEV *p_hid_dev,
|
||||
CPU_INT08U report_id);
|
||||
|
||||
USBH_ERR USBH_HID_ProtocolSet (USBH_HID_DEV *p_hid_dev,
|
||||
CPU_INT16U protocol);
|
||||
|
||||
USBH_ERR USBH_HID_ProtocolGet (USBH_HID_DEV *p_hid_dev,
|
||||
CPU_INT16U *p_protocol);
|
||||
|
||||
USBH_ERR USBH_HID_IdleSet (USBH_HID_DEV *p_hid_dev,
|
||||
CPU_INT08U report_id,
|
||||
CPU_INT32U dur);
|
||||
|
||||
CPU_INT32U USBH_HID_IdleGet (USBH_HID_DEV *p_hid_dev,
|
||||
CPU_INT08U report_id,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* CONFIGURATION ERRORS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* MODULE END
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#endif
|
||||
1231
middleware/usb/uC-USBH/Class/HID/usbh_hidparser.c
Normal file
1231
middleware/usb/uC-USBH/Class/HID/usbh_hidparser.c
Normal file
File diff suppressed because it is too large
Load Diff
116
middleware/usb/uC-USBH/Class/HID/usbh_hidparser.h
Normal file
116
middleware/usb/uC-USBH/Class/HID/usbh_hidparser.h
Normal file
@@ -0,0 +1,116 @@
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* uC/USB-Host
|
||||
* The Embedded USB Host Stack
|
||||
*
|
||||
* Copyright 2004-2021 Silicon Laboratories Inc. www.silabs.com
|
||||
*
|
||||
* SPDX-License-Identifier: APACHE-2.0
|
||||
*
|
||||
* This software is subject to an open source license and is distributed by
|
||||
* Silicon Laboratories Inc. pursuant to the terms of the Apache License,
|
||||
* Version 2.0 available at www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
*
|
||||
* HUMAN INTERFACE DEVICE CLASS PARSER
|
||||
*
|
||||
* Filename : usbh_hidparser.h
|
||||
* Version : V3.42.01
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* MODULE
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef USBH_HIDPARSER_MODULE_PRESENT
|
||||
#define USBH_HIDPARSER_MODULE_PRESENT
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* INCLUDE FILES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* EXTERNS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#ifdef USBH_HIDPARSER_MODULE
|
||||
#define USBH_HIDPARSER_EXT
|
||||
#else
|
||||
#define USBH_HIDPARSER_EXT extern
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* DEFINES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* DATA TYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* GLOBAL VARIABLES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* MACROS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* FUNCTION PROTOTYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
USBH_ERR USBH_HID_ParserGlobalInit(void);
|
||||
|
||||
USBH_ERR USBH_HID_ItemParser (USBH_HID_DEV *p_hid_dev,
|
||||
CPU_INT08U *p_report_desc,
|
||||
CPU_INT32U desc_len);
|
||||
|
||||
USBH_ERR USBH_HID_CreateReportID (USBH_HID_DEV *p_hid_dev);
|
||||
|
||||
USBH_HID_REPORT_ID *USBH_HID_MaxReport (USBH_HID_DEV *p_hid_dev,
|
||||
CPU_INT08U type);
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* CONFIGURATION ERRORS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* MODULE END
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#endif
|
||||
2906
middleware/usb/uC-USBH/Class/MSC/usbh_msc.c
Normal file
2906
middleware/usb/uC-USBH/Class/MSC/usbh_msc.c
Normal file
File diff suppressed because it is too large
Load Diff
179
middleware/usb/uC-USBH/Class/MSC/usbh_msc.h
Normal file
179
middleware/usb/uC-USBH/Class/MSC/usbh_msc.h
Normal file
@@ -0,0 +1,179 @@
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* uC/USB-Host
|
||||
* The Embedded USB Host Stack
|
||||
*
|
||||
* Copyright 2004-2021 Silicon Laboratories Inc. www.silabs.com
|
||||
*
|
||||
* SPDX-License-Identifier: APACHE-2.0
|
||||
*
|
||||
* This software is subject to an open source license and is distributed by
|
||||
* Silicon Laboratories Inc. pursuant to the terms of the Apache License,
|
||||
* Version 2.0 available at www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
*
|
||||
* MASS STORAGE CLASS (MSC)
|
||||
*
|
||||
* Filename : usbh_msc.h
|
||||
* Version : V3.42.01
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* MODULE
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef USBH_MSC_MODULE_PRESENT
|
||||
#define USBH_MSC_MODULE_PRESENT
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* INCLUDE FILES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#include "../../Source/usbh_os.h"
|
||||
#include "../../Source/usbh_class.h"
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* EXTERNS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#ifdef USBH_MSC_MODULE
|
||||
#define USBH_MSC_EXT
|
||||
#else
|
||||
#define USBH_MSC_EXT extern
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* DEFINES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#define USBH_MSC_TIMEOUT 10000u
|
||||
|
||||
#define USBH_MSC_DEV_NOT_IN_USE 0u
|
||||
#define USBH_MSC_DEV_IN_USE 1u
|
||||
|
||||
#define USBH_MSC_DATA_DIR_IN 0x80u
|
||||
#define USBH_MSC_DATA_DIR_OUT 0x00u
|
||||
#define USBH_MSC_DATA_DIR_NONE 0x01u
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* DATA TYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
typedef CPU_INT08U USBH_MSC_DATA_DIR;
|
||||
|
||||
/* -------------------- MSC DEVICE -------------------- */
|
||||
typedef struct usbh_msc_dev {
|
||||
USBH_EP BulkInEP; /* Bulk IN endpoint. */
|
||||
USBH_EP BulkOutEP; /* Bulk OUT endpoint. */
|
||||
USBH_DEV *DevPtr; /* Pointer to USB device. */
|
||||
USBH_IF *IF_Ptr; /* Pointer to interface. */
|
||||
CPU_INT08U State; /* State of MSC device. */
|
||||
CPU_INT08U RefCnt; /* Cnt of app ref on this dev. */
|
||||
USBH_HMUTEX HMutex;
|
||||
} USBH_MSC_DEV;
|
||||
|
||||
typedef struct msc_inquiry_info {
|
||||
CPU_INT08U DevType;
|
||||
CPU_INT08U IsRemovable;
|
||||
CPU_INT08U Vendor_ID[8];
|
||||
CPU_INT08U Product_ID[16];
|
||||
CPU_INT32U ProductRevisionLevel;
|
||||
} USBH_MSC_INQUIRY_INFO;
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* GLOBAL VARIABLES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
USBH_MSC_EXT USBH_CLASS_DRV USBH_MSC_ClassDrv;
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* MACROS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* FUNCTION PROTOTYPES
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
USBH_ERR USBH_MSC_Init (USBH_MSC_DEV *p_msc_dev,
|
||||
CPU_INT08U lun);
|
||||
|
||||
CPU_INT08U USBH_MSC_MaxLUN_Get (USBH_MSC_DEV *p_msc_dev,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
CPU_BOOLEAN USBH_MSC_UnitRdyTest(USBH_MSC_DEV *p_msc_dev,
|
||||
CPU_INT08U lun,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
USBH_ERR USBH_MSC_CapacityRd (USBH_MSC_DEV *p_msc_dev,
|
||||
CPU_INT08U lun,
|
||||
CPU_INT32U *p_nbr_blks,
|
||||
CPU_INT32U *p_blk_size);
|
||||
|
||||
USBH_ERR USBH_MSC_StdInquiry (USBH_MSC_DEV *p_msc_dev,
|
||||
USBH_MSC_INQUIRY_INFO *p_msc_inquiry_info,
|
||||
CPU_INT08U lun);
|
||||
|
||||
USBH_ERR USBH_MSC_RefAdd (USBH_MSC_DEV *p_msc_dev);
|
||||
|
||||
USBH_ERR USBH_MSC_RefRel (USBH_MSC_DEV *p_msc_dev);
|
||||
|
||||
CPU_INT32U USBH_MSC_Rd (USBH_MSC_DEV *p_msc_dev,
|
||||
CPU_INT08U lun,
|
||||
CPU_INT32U blk_addr,
|
||||
CPU_INT16U nbr_blks,
|
||||
CPU_INT32U blk_size,
|
||||
void *p_arg,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
CPU_INT32U USBH_MSC_Wr (USBH_MSC_DEV *p_msc_dev,
|
||||
CPU_INT08U lun,
|
||||
CPU_INT32U blk_addr,
|
||||
CPU_INT16U nbr_blks,
|
||||
CPU_INT32U blk_size,
|
||||
const void *p_arg,
|
||||
USBH_ERR *p_err);
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* CONFIGURATION ERRORS
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* MODULE END
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user