diff options
author | Daniel Friesel <daniel.friesel@uos.de> | 2022-07-18 11:25:27 +0200 |
---|---|---|
committer | Daniel Friesel <daniel.friesel@uos.de> | 2022-07-18 11:25:27 +0200 |
commit | e6cef3c547e8f73cbf2d3c7ba639cb7d9934c475 (patch) | |
tree | b38bf797c9cd5c226de250e8f569031ebc6131d0 /include/arch/rm46l8lp/halcogen/usbdcdc.h | |
parent | 4da20a683273f252940ff2752d2f497040800b3d (diff) |
Add Hercules RM46L8 Launchpad support (Cortex R4F)
Diffstat (limited to 'include/arch/rm46l8lp/halcogen/usbdcdc.h')
-rw-r--r-- | include/arch/rm46l8lp/halcogen/usbdcdc.h | 383 |
1 files changed, 383 insertions, 0 deletions
diff --git a/include/arch/rm46l8lp/halcogen/usbdcdc.h b/include/arch/rm46l8lp/halcogen/usbdcdc.h new file mode 100644 index 0000000..0fd7494 --- /dev/null +++ b/include/arch/rm46l8lp/halcogen/usbdcdc.h @@ -0,0 +1,383 @@ +/* +* Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com +* +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* +* Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* +* Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the +* distribution. +* +* Neither the name of Texas Instruments Incorporated nor the names of +* its contributors may be used to endorse or promote products derived +* from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +*/ + + +/** + * @file usbdcdc.h + * + * @brief USBLib support for generic CDC ACM (serial) device. + * + */ + +#ifndef __USBDCDC_H__ +#define __USBDCDC_H__ + +/****************************************************************************** + * + * If building with a C++ compiler, make all of the definitions in this header + * have a C binding. + * + *****************************************************************************/ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** *************************************************************************** + * + * \ingroup cdc_device_class_api + * @{ + * + *****************************************************************************/ + +/****************************************************************************** + * + * PRIVATE + * + * The first few sections of this header are private defines that are used by + * the USB CDC Serial code and are here only to help with the application + * allocating the correct amount of memory for the CDC Serial device code. + * + *****************************************************************************/ + +/****************************************************************************** + * + * PRIVATE + * + * This enumeration holds the various states that the device can be in during + * normal operation. + * + *****************************************************************************/ +typedef enum +{ + /** + * @brief Unconfigured. + */ + CDC_STATE_UNCONFIGURED, + + /** + * @brief No outstanding transaction remains to be completed. + */ + CDC_STATE_IDLE, + + /** + * @brief Waiting on completion of a send or receive transaction. + */ + CDC_STATE_WAIT_DATA, + + /** + * @brief Waiting for client to process data. + */ + CDC_STATE_WAIT_CLIENT +} +tCDCState; + +/****************************************************************************** + * + * PRIVATE + * + * This structure defines the private instance data and state variables for the + * CDC Serial device. The memory for this structure is pointed to by the + * psPrivateCDCSerData field in the tUSBDCDCDevice structure passed on + * USBDCDCInit(). + * + *****************************************************************************/ +typedef struct +{ + uint32 ulUSBBase; + tDeviceInfo *psDevInfo; + tConfigDescriptor *psConfDescriptor; + volatile tCDCState eCDCRxState; + volatile tCDCState eCDCTxState; + volatile tCDCState eCDCRequestState; + volatile tCDCState eCDCInterruptState; + volatile uint8 ucPendingRequest; + uint16 usBreakDuration; + uint16 usControlLineState; + uint16 usSerialState; + volatile uint32 usDeferredOpFlags; + uint16 usLastTxSize; + tLineCoding sLineCoding; + volatile tBoolean bRxBlocked; + volatile tBoolean bControlBlocked; + volatile tBoolean bConnected; + uint8 ucControlEndpoint; + uint8 ucBulkINEndpoint; + uint8 ucBulkOUTEndpoint; + uint8 ucInterfaceControl; + uint8 ucInterfaceData; +} +tCDCSerInstance; + + +#ifndef DEPRECATED +/** *************************************************************************** + * + * @brief The number of bytes of workspace required by the CDC device class + * driver. The client must provide a block of RAM of at least this + * size in the psPrivateCDCSerData field of the tUSBCDCDevice + * structure passed on USBDCDCInit(). + * + * This value is deprecated and should not be used, any new code + * should just pass in a tUSBCDCDevice structure in the + * psPrivateCDCSerData field. + * + *****************************************************************************/ +#define USB_CDCSER_WORKSPACE_SIZE (sizeof(tCDCSerInstance)) +#endif + +/** *************************************************************************** + * + * The following defines are used when working with composite devices. + * + *****************************************************************************/ + +/** *************************************************************************** + * + * @brief The size of the memory that should be allocated to create a + * configuration descriptor for a single instance of the USB Serial + * CDC Device. This does not include the configuration descriptor + * which is automatically ignored by the composite device class. + * + * For reference this is sizeof(g_pIADSerDescriptor) + + * sizeof(g_pCDCSerCommInterface) + sizeof(g_pCDCSerDataInterface) + * + *****************************************************************************/ +#define COMPOSITE_DCDC_SIZE (8u + 35u + 23u) + +/** *************************************************************************** + * + * CDC-specific events These events are provided to the application in the + * \e ulMsg parameter of the tUSBCallback function. + * + *****************************************************************************/ + +/** *************************************************************************** + * + * @brief The host requests that the device send a BREAK condition on its + * serial communication channel. The BREAK should remain active until + * a USBD_CDC_EVENT_CLEAR_BREAK event is received. + */ +#define USBD_CDC_EVENT_SEND_BREAK (USBD_CDC_EVENT_BASE + 0u) + +/** *************************************************************************** + * + * @brief The host requests that the device stop sending a BREAK condition on + * its serial communication channel. + */ +#define USBD_CDC_EVENT_CLEAR_BREAK (USBD_CDC_EVENT_BASE + 1u) + +/** *************************************************************************** + * + * @brief The host requests that the device set the RS232 signaling lines to + * a particular state. The ulMsgValue parameter contains the RTS and + * DTR control line states as defined in table 51 of the USB CDC class + * definition and is a combination of the following values: + * + * (RTS) USB_CDC_DEACTIVATE_CARRIER or USB_CDC_ACTIVATE_CARRIER + * (DTR) USB_CDC_DTE_NOT_PRESENT or USB_CDC_DTE_PRESENT + */ +#define USBD_CDC_EVENT_SET_CONTROL_LINE_STATE (USBD_CDC_EVENT_BASE + 2u) + +/** *************************************************************************** + * + * @brief The host requests that the device set the RS232 communication + * parameters. The pvMsgData parameter points to a tLineCoding + * structure defining the required number of bits per character, + * parity mode, number of stop bits and the baud rate. + */ +#define USBD_CDC_EVENT_SET_LINE_CODING (USBD_CDC_EVENT_BASE + 3u) + +/** *************************************************************************** + * + * @brief The host is querying the current RS232 communication parameters. + * The pvMsgData parameter points to a tLineCoding structure that the + * application must fill with the current settings prior to returning + * from the callback. + */ +#define USBD_CDC_EVENT_GET_LINE_CODING (USBD_CDC_EVENT_BASE + 4u) + +/** *************************************************************************** + * + * @brief The structure used by the application to define operating + * parameters for the CDC device. + * + *****************************************************************************/ +typedef struct +{ + /** + * @brief The vendor ID that this device is to present in the device + * descriptor. + */ + uint16 usVID; + + /** + * @brief The product ID that this device is to present in the device + * descriptor. + */ + uint16 usPID; + + /** + * @brief The maximum power consumption of the device, expressed in + * milliamps. + */ + uint16 usMaxPowermA; + + /** + * @brief Indicates whether the device is self- or bus-powered and + * whether or not it supports remote wakeup. Valid values are + * USB_CONF_ATTR_SELF_PWR or USB_CONF_ATTR_BUS_PWR, optionally + * ORed with USB_CONF_ATTR_RWAKE. + */ + uint8 ucPwrAttributes; + + /** + * @brief A pointer to the callback function which will be called to + * notify the application of all asynchronous control events + * related to the operation of the device. + */ + tUSBCallback pfnControlCallback; + + /** + * @brief A client-supplied pointer which will be sent as the first + * parameter in all calls made to the control channel callback, + * pfnControlCallback. + */ + void *pvControlCBData; + + /** + * @brief A pointer to the callback function which will be called to + * notify the application of events related to the device's data + * receive channel. + */ + tUSBCallback pfnRxCallback; + + /** + * @brief A client-supplied pointer which will be sent as the first + * parameter in all calls made to the receive channel callback, + * pfnRxCallback. + */ + void *pvRxCBData; + + /** + * @brief A pointer to the callback function which will be called to + * notify the application of events related to the device's data + * transmit channel. + */ + tUSBCallback pfnTxCallback; + + /** + * @brief A client-supplied pointer which will be sent as the first + * parameter in all calls made to the transmit channel callback, + * pfnTxCallback. + */ + void *pvTxCBData; + + /** + * @brief A pointer to the string descriptor array for this device. This + * array must contain the following string descriptor pointers in + * this order. Language descriptor, Manufacturer name string + * (language 1), Product name string (language 1), Serial number + * Control interface description string (language 1), + * Configuration description string (language 1). + * + * If supporting more than 1 language, the strings for indices + * 1 through 5 must be repeated for each of the other languages + * defined in the language descriptor. + */ + const uint8 * const *ppStringDescriptors; + + /** + * @brief The number of descriptors provided in the ppStringDescriptors + * array. This must be 1 + (5 * number of supported languages). + */ + uint32 ulNumStringDescriptors; + + /** + * @brief A pointer to the private instance data for this device. This + * memory must remain accessible for as long as the CDC device is + * in use and must not be modified by any code outside the CDC + * class driver. + */ + tCDCSerInstance *psPrivateCDCSerData; +} +tUSBDCDCDevice; + +extern tDeviceInfo g_sCDCSerDeviceInfo; + +/** *************************************************************************** + * + * API Function Prototypes + * + *****************************************************************************/ +extern void * USBDCDCCompositeInit(uint32 ulIndex, + const tUSBDCDCDevice *psCDCDevice); +extern void *USBDCDCInit(uint32 ulIndex, + const tUSBDCDCDevice *psCDCDevice); +extern void USBDCDCTerm(void *pvInstance); +extern void *USBDCDCSetControlCBData(tUSBDCDCDevice *pvInstance, void *pvCBData); +extern void *USBDCDCSetRxCBData(void *pvInstance, void *pvCBData); +extern void *USBDCDCSetTxCBData(void *pvInstance, void *pvCBData); +extern uint32 USBDCDCPacketWrite(void *pvInstance, + uint8 *pcData, + uint32 ulLength, + tBoolean bLast); +extern uint32 USBDCDCPacketRead(void *pvInstance, + uint8 *pcData, + uint32 ulLength, + tBoolean bLast); +extern uint32 USBDCDCTxPacketAvailable(void *pvInstance); +extern uint32 USBDCDCRxPacketAvailable(void *pvInstance); +extern void USBDCDCSerialStateChange(void *pvInstance, + uint16 usState); +extern void USBDCDCPowerStatusSet(void *pvInstance, uint8 ucPower); +extern tBoolean USBDCDCRemoteWakeupRequest(void *pvInstance); + +/** *************************************************************************** + * + * Close the Doxygen group. + * @} + * + *****************************************************************************/ + +/****************************************************************************** + * + * Mark the end of the C bindings section for C++ compilers. + * + *****************************************************************************/ +#ifdef __cplusplus +} +#endif + +#endif /* __USBDCDC_H__ */ |