/***************************************************************************//**
* \file CDC_cdc.h
* \version 3.20
*
* \brief
*  This file provides function prototypes and constants for the USBFS component 
*  CDC class.
*
* Related Document:
*  Universal Serial Bus Class Definitions for Communication Devices Version 1.1
*
********************************************************************************
* \copyright
* Copyright 2012-2016, Cypress Semiconductor Corporation.  All rights reserved.
* You may use this file only in accordance with the license, terms, conditions,
* disclaimers, and limitations in the end user license agreement accompanying
* the software package with which this file was provided.
*******************************************************************************/

#if !defined(CY_USBFS_CDC_cdc_H)
#define CY_USBFS_CDC_cdc_H

#include "CDC.h"


/*******************************************************************************
* Prototypes of the CDC_cdc API.
*******************************************************************************/
/**
* \addtogroup group_cdc
* @{
*/
#if (CDC_ENABLE_CDC_CLASS_API != 0u)
    uint8 CDC_CDC_Init(void)            ;
    void CDC_PutData(const uint8* pData, uint16 length) ;
    void CDC_PutString(const char8 string[])            ;
    void CDC_PutChar(char8 txDataByte) ;
    void CDC_PutCRLF(void)             ;
    uint16 CDC_GetCount(void)          ;
    uint8  CDC_CDCIsReady(void)        ;
    uint8  CDC_DataIsReady(void)       ;
    uint16 CDC_GetData(uint8* pData, uint16 length)     ;
    uint16 CDC_GetAll(uint8* pData)    ;
    uint8  CDC_GetChar(void)           ;
    uint8  CDC_IsLineChanged(void)     ;
    uint32 CDC_GetDTERate(void)        ;
    uint8  CDC_GetCharFormat(void)     ;
    uint8  CDC_GetParityType(void)     ;
    uint8  CDC_GetDataBits(void)       ;
    uint16 CDC_GetLineControl(void)    ;
    void CDC_SendSerialState (uint16 serialState) ;
    uint16 CDC_GetSerialState (void)   ;
    void CDC_SetComPort (uint8 comNumber) ;
    uint8 CDC_GetComPort (void)        ;
    uint8 CDC_NotificationIsReady(void) ;

#endif  /* (CDC_ENABLE_CDC_CLASS_API) */
/** @} cdc */

/*******************************************************************************
*  Constants for CDC_cdc API.
*******************************************************************************/

/* CDC Class-Specific Request Codes (CDC ver 1.2 Table 19) */
#define CDC_CDC_SET_LINE_CODING        (0x20u)
#define CDC_CDC_GET_LINE_CODING        (0x21u)
#define CDC_CDC_SET_CONTROL_LINE_STATE (0x22u)

/*PSTN Subclass Specific Notifications (CDC ver 1.2 Table 30)*/
#define CDC_SERIAL_STATE               (0x20u)

#define CDC_LINE_CODING_CHANGED        (0x01u)
#define CDC_LINE_CONTROL_CHANGED       (0x02u)

#define CDC_1_STOPBIT                  (0x00u)
#define CDC_1_5_STOPBITS               (0x01u)
#define CDC_2_STOPBITS                 (0x02u)

#define CDC_PARITY_NONE                (0x00u)
#define CDC_PARITY_ODD                 (0x01u)
#define CDC_PARITY_EVEN                (0x02u)
#define CDC_PARITY_MARK                (0x03u)
#define CDC_PARITY_SPACE               (0x04u)

#define CDC_LINE_CODING_SIZE           (0x07u)
#define CDC_LINE_CODING_RATE           (0x00u)
#define CDC_LINE_CODING_STOP_BITS      (0x04u)
#define CDC_LINE_CODING_PARITY         (0x05u)
#define CDC_LINE_CODING_DATA_BITS      (0x06u)

#define CDC_LINE_CONTROL_DTR           (0x01u)
#define CDC_LINE_CONTROL_RTS           (0x02u)

#define CDC_MAX_MULTI_COM_NUM          (2u) 

#define CDC_COM_PORT1                  (0u) 
#define CDC_COM_PORT2                  (1u) 

#define CDC_SUCCESS                    (0u)
#define CDC_FAILURE                    (1u)

#define CDC_SERIAL_STATE_SIZE          (10u)

/* SerialState constants*/
#define CDC_SERIAL_STATE_REQUEST_TYPE  (0xA1u)
#define CDC_SERIAL_STATE_LENGTH        (0x2u)

/*******************************************************************************
* External data references
*******************************************************************************/
/**
* \addtogroup group_cdc
* @{
*/
extern volatile uint8  CDC_linesCoding[CDC_MAX_MULTI_COM_NUM][CDC_LINE_CODING_SIZE];
extern volatile uint8  CDC_linesChanged[CDC_MAX_MULTI_COM_NUM];
extern volatile uint16 CDC_linesControlBitmap[CDC_MAX_MULTI_COM_NUM];
extern volatile uint16 CDC_serialStateBitmap[CDC_MAX_MULTI_COM_NUM];
extern volatile uint8  CDC_cdcDataInEp[CDC_MAX_MULTI_COM_NUM];
extern volatile uint8  CDC_cdcDataOutEp[CDC_MAX_MULTI_COM_NUM];
extern volatile uint8  CDC_cdcCommInInterruptEp[CDC_MAX_MULTI_COM_NUM];
/** @} cdc */

/*******************************************************************************
* The following code is DEPRECATED and
* must not be used.
*******************************************************************************/


#define CDC_lineCoding             CDC_linesCoding[0]
#define CDC_lineChanged            CDC_linesChanged[0]
#define CDC_lineControlBitmap      CDC_linesControlBitmap[0]
#define CDC_cdc_data_in_ep         CDC_cdcDataInEp[0]
#define CDC_cdc_data_out_ep        CDC_cdcDataOutEp[0]

#endif /* (CY_USBFS_CDC_cdc_H) */


/* [] END OF FILE */
