123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- /*
- * The Clear BSD License
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * Copyright 2016-2017 NXP
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted (subject to the limitations in the disclaimer below) provided
- * that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- * of conditions and the following disclaimer.
- *
- * o 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.
- *
- * o Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
- * 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 HOLDER 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.
- */
- #ifndef _USB_CDC_VCOM_H_
- #define _USB_CDC_VCOM_H_ 1
- #include "usb_device_descriptor.h"
- #include "fsl_common.h"
- /*******************************************************************************
- * Definitions
- ******************************************************************************/
- #if defined(USB_DEVICE_CONFIG_EHCI) && (USB_DEVICE_CONFIG_EHCI > 0)
- #define CONTROLLER_ID kUSB_ControllerEhci0
- #define DATA_BUFF_SIZE HS_CDC_VCOM_BULK_OUT_PACKET_SIZE
- #endif /* USB_DEVICE_CONFIG_EHCI */
- #if defined(USB_DEVICE_CONFIG_KHCI) && (USB_DEVICE_CONFIG_KHCI > 0)
- #define CONTROLLER_ID kUSB_ControllerKhci0
- #define DATA_BUFF_SIZE FS_CDC_VCOM_BULK_OUT_PACKET_SIZE
- #endif /* USB_DEVICE_CONFIG_KHCI */
- #if defined(USB_DEVICE_CONFIG_LPCIP3511FS) && (USB_DEVICE_CONFIG_LPCIP3511FS > 0U)
- #define CONTROLLER_ID kUSB_ControllerLpcIp3511Fs0
- #define DATA_BUFF_SIZE FS_CDC_VCOM_BULK_OUT_PACKET_SIZE
- #endif /* USB_DEVICE_CONFIG_LPCIP3511FS */
- #if defined(USB_DEVICE_CONFIG_LPCIP3511HS) && (USB_DEVICE_CONFIG_LPCIP3511HS > 0U)
- #define CONTROLLER_ID kUSB_ControllerLpcIp3511Hs0
- #define DATA_BUFF_SIZE HS_CDC_VCOM_BULK_OUT_PACKET_SIZE
- #endif /* USB_DEVICE_CONFIG_LPCIP3511HS */
- #if defined(USB_DEVICE_CONFIG_LPCIP3511FS) && (USB_DEVICE_CONFIG_LPCIP3511FS > 0U)
- #define CONTROLLER_ID kUSB_ControllerLpcIp3511Fs0
- #define DATA_BUFF_SIZE FS_CDC_VCOM_BULK_OUT_PACKET_SIZE
- #endif
- #if defined(USB_DEVICE_CONFIG_LPCIP3511HS) && (USB_DEVICE_CONFIG_LPCIP3511HS > 0U)
- #define CONTROLLER_ID kUSB_ControllerLpcIp3511Hs0
- #define DATA_BUFF_SIZE HS_CDC_VCOM_BULK_OUT_PACKET_SIZE
- #endif
- #define USB_DEVICE_INTERRUPT_PRIORITY (3U)
- /* Currently configured line coding */
- #define LINE_CODING_SIZE (0x07)
- #define LINE_CODING_DTERATE (115200)
- #define LINE_CODING_CHARFORMAT (0x00)
- #define LINE_CODING_PARITYTYPE (0x00)
- #define LINE_CODING_DATABITS (0x08)
- /* Communications feature */
- #define COMM_FEATURE_DATA_SIZE (0x02)
- #define STATUS_ABSTRACT_STATE (0x0000)
- #define COUNTRY_SETTING (0x0000)
- /* Notification of serial state */
- #define NOTIF_PACKET_SIZE (0x08)
- #define UART_BITMAP_SIZE (0x02)
- #define NOTIF_REQUEST_TYPE (0xA1)
- /* Define the types for application */
- typedef struct _usb_cdc_vcom_struct
- {
- usb_device_handle deviceHandle; /* USB device handle. */
- volatile uint8_t attach; /* A flag to indicate whether a usb device is attached. 1: attached, 0: not attached */
- uint8_t speed; /* Speed of USB device. USB_SPEED_FULL/USB_SPEED_LOW/USB_SPEED_HIGH. */
- volatile uint8_t
- startTransactions; /* A flag to indicate whether a CDC device is ready to transmit and receive data. */
- uint8_t currentConfiguration; /* Current configuration value. */
- uint8_t currentInterfaceAlternateSetting
- [USB_CDC_VCOM_INTERFACE_COUNT]; /* Current alternate setting value for each interface. */
- } usb_cdc_vcom_struct_t;
- /* Define the infomation relates to abstract control model */
- typedef struct _usb_cdc_acm_info
- {
- uint8_t serialStateBuf[NOTIF_PACKET_SIZE + UART_BITMAP_SIZE]; /* Serial state buffer of the CDC device to notify the
- serial state to host. */
- bool dtePresent; /* A flag to indicate whether DTE is present. */
- uint16_t breakDuration; /* Length of time in milliseconds of the break signal */
- uint8_t dteStatus; /* Status of data terminal equipment */
- uint8_t currentInterface; /* Current interface index. */
- uint16_t uartState; /* UART state of the CDC device. */
- } usb_cdc_acm_info_t;
- /*******************************************************************************
- * Prototypes
- ******************************************************************************/
- /*!
- * @brief Application initialization function.
- *
- * This function initializes the application.
- *
- * @return pointer to USB device handle.
- */
- usb_device_handle USB_VcomInit(void);
- /*!
- * @brief Application initialization function.
- *
- * This function initializes the application.
- *
- * @return pointer to USB device handle.
- */
- void USB_VcomDeinit(usb_device_handle deviceHandle);
- /*!
- * @brief USB recive data from host using a blocking method.
- *
- * This function recives data from host by usb cdc protocol
- * @param baseAddr pointer to USB device handle.
- * @param buf pointer to the data.
- * @param count size of the transfer.
- *
- * @return A USB error code or kStatus_USB_Success.
- */
- status_t USB_VcomReadBlocking(usb_device_handle baseAddr, uint8_t *buf, size_t count);
- /*!
- * @brief USB recive 'count' number of data from host using a blocking method.
- *
- * This function recives data from host by usb cdc protocol
- * @param baseAddr pointer to USB device handle.
- * @param buf pointer to the data.
- * @param count size of the transfer.
- *
- * @return A USB error code or kStatus_USB_Success.
- */
- status_t USB_VcomReadPolling(usb_device_handle baseAddr, uint8_t *buf, size_t count);
- /*!
- * @brief USB send data to host using a blocking method.
- *
- * This function sends data to host by usb cdc protocol
- * @param baseAddr pointer to USB device handle.
- * @param buf pointer to the data.
- * @param count size of the transfer.
- *
- * @return None.
- */
- void USB_VcomWriteBlocking(usb_device_handle baseAddr, const uint8_t *buf, size_t count);
- #endif /* _USB_CDC_VCOM_H_ */
|