/*================================================================================================== * Project : RTD AUTOSAR 4.4 * Platform : CORTEXM * Peripheral : FLEXIO * Dependencies : * * Autosar Version : 4.4.0 * Autosar Revision : ASR_REL_4_4_REV_0000 * Autosar Conf.Variant : * SW Version : 1.0.0 * Build Version : S32K1_RTD_1_0_0_HF01_D2109_ASR_REL_4_4_REV_0000_20210907 * * (c) Copyright 2020-2021 NXP Semiconductors * All Rights Reserved. * * NXP Confidential. This software is owned or controlled by NXP and may only be * used strictly in accordance with the applicable license terms. By expressly * accepting such terms or by downloading, installing, activating and/or otherwise * using the software, you are agreeing that you have read, and that you agree to * comply with and are bound by, such license terms. If you do not agree to be * bound by the applicable license terms, then you may not retain, install, * activate or otherwise use the software. ==================================================================================================*/ #ifndef UART_TYPES_H #define UART_TYPES_H /** * @file * @defgroup uart_driver UART Driver * @addtogroup uart_driver UART Driver * @{ */ #ifdef __cplusplus extern "C" { #endif /*================================================================================================== * INCLUDE FILES * 1) system and project includes * 2) needed interfaces from external units * 3) internal and external interfaces from this unit ==================================================================================================*/ #include "Uart_Defines.h" #include "Uart_Ipw_Types.h" /*================================================================================================== * SOURCE FILE VERSION INFORMATION ==================================================================================================*/ #define UART_TYPES_VENDOR_ID 43 #define UART_TYPES_AR_RELEASE_MAJOR_VERSION 4 #define UART_TYPES_AR_RELEASE_MINOR_VERSION 4 #define UART_TYPES_AR_RELEASE_REVISION_VERSION 0 #define UART_TYPES_SW_MAJOR_VERSION 1 #define UART_TYPES_SW_MINOR_VERSION 0 #define UART_TYPES_SW_PATCH_VERSION 0 /*================================================================================================== * FILE VERSION CHECKS ==================================================================================================*/ /*Checks against Uart_Defines.h */ #if (UART_TYPES_VENDOR_ID != UART_DEFINES_VENDOR_ID_CFG) #error "Uart_Types.h and Uart_Defines.h have different vendor ids" #endif #if ((UART_TYPES_AR_RELEASE_MAJOR_VERSION != UART_DEFINES_AR_RELEASE_MAJOR_VERSION_CFG) || \ (UART_TYPES_AR_RELEASE_MINOR_VERSION != UART_DEFINES_AR_RELEASE_MINOR_VERSION_CFG) || \ (UART_TYPES_AR_RELEASE_REVISION_VERSION!= UART_DEFINES_AR_RELEASE_REVISION_VERSION_CFG)) #error "AUTOSAR Version Numbers of Uart_Types.h and Uart_Defines.h are different" #endif #if ((UART_TYPES_SW_MAJOR_VERSION!= UART_DEFINES_SW_MAJOR_VERSION_CFG) || \ (UART_TYPES_SW_MINOR_VERSION!= UART_DEFINES_SW_MINOR_VERSION_CFG) || \ (UART_TYPES_SW_PATCH_VERSION!= UART_DEFINES_SW_PATCH_VERSION_CFG) \ ) #error "Software Version Numbers of Uart_Types.h and Uart_Defines.h are different" #endif /*Checks against Uart_Ipw_Types.h */ #if (UART_TYPES_VENDOR_ID != UART_IPW_TYPES_VENDOR_ID) #error "Uart_Types.h and Uart_Ipw_Types.h have different vendor ids" #endif #if ((UART_TYPES_AR_RELEASE_MAJOR_VERSION != UART_IPW_TYPES_AR_RELEASE_MAJOR_VERSION) || \ (UART_TYPES_AR_RELEASE_MINOR_VERSION != UART_IPW_TYPES_AR_RELEASE_MINOR_VERSION) || \ (UART_TYPES_AR_RELEASE_REVISION_VERSION!= UART_IPW_TYPES_AR_RELEASE_REVISION_VERSION)) #error "AUTOSAR Version Numbers of Uart_Types.h and Uart_Ipw_Types.h are different" #endif #if ((UART_TYPES_SW_MAJOR_VERSION!= UART_IPW_TYPES_SW_MAJOR_VERSION) || \ (UART_TYPES_SW_MINOR_VERSION!= UART_IPW_TYPES_SW_MINOR_VERSION) || \ (UART_TYPES_SW_PATCH_VERSION!= UART_IPW_TYPES_SW_PATCH_VERSION) \ ) #error "Software Version Numbers of Uart_Types.h and Uart_Ipw_Types.h are different" #endif /*================================================================================================== * CONSTANTS ==================================================================================================*/ /*================================================================================================== * DEFINES AND MACROS ==================================================================================================*/ /*================================================================================================== * ENUMS ==================================================================================================*/ #if ((UART_DEV_ERROR_DETECT == STD_ON) || (UART_RUNTIME_ERROR_DETECT == STD_ON)) /** * @brief Driver not initialized * @details Errors reported by Det_ReportError() and Det_ReportRuntimeError(). * */ #define UART_E_UNINIT ((uint8)0x01U) /** * @brief Invalid channel given as parameter * @details Errors reported by Det_ReportError() and Det_ReportRuntimeError(). * */ #define UART_E_INVALID_CHANNEL ((uint8)0x02U) /** * @brief Invalid channel given as parameter * @details Errors reported by Det_ReportError() and Det_ReportRuntimeError(). * */ #define UART_E_INVALID_POINTER ((uint8)0x03U) /** * @brief Driver already initialized * @details Errors reported by Det_ReportError() and Det_ReportRuntimeError(). * */ #define UART_E_ALREADY_INITIALIZED ((uint8)0x04U) /** * @brief Invalid coreid * */ #define UART_E_PARAM_CONFIG ((uint8)0x05U) /** * @brief Channel is busy, therefore the service can not be executed * @details Errors reported by Det_ReportError() and Det_ReportRuntimeError(). * */ #define UART_E_CHANNEL_BUSY ((uint8)0x06U) /** * @brief Parameter has a wrong value * @details Errors reported by Det_ReportError() and Det_ReportRuntimeError(). * */ #define UART_E_INVALID_PARAMETER ((uint8)0x07U) /** * @brief Timeout occured * @details Errors reported by Det_ReportError() and Det_ReportRuntimeError(). * */ #define UART_E_TIMEOUT ((uint8)0x08U) /** * @brief Invalid pointer for init function parameter * @details Errors reported by Det_ReportError() and Det_ReportRuntimeError(). * */ #define UART_E_INIT_FAILED ((uint8)0x09U) /**< @brief API service ID for UART_Init() function * @details Parameters used when raising an error or exception. * */ #define UART_INIT_ID ((uint8)0x00U) /** * @brief API service ID for UART_DeInit() function * @details Parameters used when raising an error or exception. * */ #define UART_DEINIT_ID ((uint8)0x01U) /** * @brief API service ID for UART_SetBaudrate() function * @details Parameters used when raising an error or exception. * */ #define UART_SETBAUDRATE_ID ((uint8)0x02U) /** * @brief API service ID for UART_GetBaudrate() function * @details Parameters used when raising an error or exception. * */ #define UART_GETBAUDRATE_ID ((uint8)0x03U) /** * @brief API service ID for UART_SyncSend() function * @details Parameters used when raising an error or exception. * */ #define UART_SYNCSEND_ID ((uint8)0x04U) /** * @brief API service ID for UART_AsyncReceive() function * @details Parameters used when raising an error or exception. * */ #define UART_ASYNCSEND_ID ((uint8)0x05U) /** * @brief API service ID for UART_SyncReceive() function * @details Parameters used when raising an error or exception. * */ #define UART_SYNCRECEIVE_ID ((uint8)0x06U) /** * @brief API service ID for UART_AsyncSend() function * @details Parameters used when raising an error or exception. * */ #define UART_ASYNCRECEIVE_ID ((uint8)0x07U) /** * @brief API service ID for UART_Abort() function * @details Parameters used when raising an error or exception. * */ #define UART_ABORT_ID ((uint8)0x08U) /** * @brief API service ID for UART_GetStatus() function * @details Parameters used when raising an error or exception. * */ #define UART_GETSTATUS_ID ((uint8)0x09U) /** * @brief API service ID for Uart_GetVersionInfo() function * @details Parameters used when raising an error or exception. * */ #define UART_VERSIONINFO_ID ((uint8)0x0AU) /** * @brief API service ID for UART_SetBuffer() function * @details Parameters used when raising an error or exception. * */ #define UART_SETBUFFER_ID ((uint8)0x0BU) #endif /*EV_ERROR_DETECT == STD_ON) || (UART_RUNTIME_ERROR_DETECT == STD_ON)) */ /** * @brief Driver initialization status. * @details This enum contains the values for the driver initialization status. */ typedef enum { UART_DRV_UNINIT = 0U, /**< @brief Driver not initialized */ UART_DRV_INIT , /**< @brief Driver ready */ } Uart_DrvStatusType; /** * @brief The type operation of an Uart channel. */ /* implements Uart_DataDirectionType_enum */ typedef enum { UART_SEND = (uint8)0x00U, /**< @brief The sending operation */ UART_RECEIVE = (uint8)0x01U /**< @brief The receiving operation */ } Uart_DataDirectionType; /** * @brief Uart operation status type */ typedef enum { UART_STATUS_NO_ERROR = 0x00, /**< @brief Uart operation is successfull */ UART_STATUS_OPERATION_ONGOING = 0x01, /**< @brief Uart operation on going */ UART_STATUS_ABORTED = 0x02, /**< @brief Uart operation aborted */ UART_STATUS_FRAMING_ERROR = 0x03, /**< @brief Uart framing error */ UART_STATUS_RX_OVERRUN_ERROR = 0x04, /**< @brief Uart overrun error */ UART_STATUS_PARITY_ERROR = 0x05, /**< @brief Uart parity error */ UART_STATUS_TIMEOUT = 0x06, /**< @brief Uart operation has timeout */ UART_STATUS_NOISE_ERROR = 0x07, /**< @brief Uart noise error */ UART_STATUS_DMA_ERROR = 0x08, /**< @brief Uart Dma Error error */ } Uart_StatusType; /*================================================================================================== * STRUCTURES AND OTHER TYPEDEFS ==================================================================================================*/ /** * @brief Uart channel configuration type structure. * @details This is the type of the external data structure containing * the overall initialization data for one Uart Channel. * A pointer to such a structure is provided to the Uart channel * initialization routine for configuration of the Uart hardware * channel. * * */ /* implements Uart_ChannelConfigType_structure */ typedef struct { uint8 UartChannelId; /**< @brief Uart channel configured */ #if (UART_MULTICORE_SUPPORT == STD_ON) uint32 ChannelCoreId; /**< @brief Core id on which the Uart channel has been assigned */ #endif uint32 ChannelClockFrequency; /**< @brief The clock frequency configured on the given channel */ const Uart_Ipw_HwConfigType* UartChannelConfig; /**< @brief Pointer to a lower level channel configuration */ } Uart_ChannelConfigType; /** * @brief Uart driver configuration type structure. * @details This is the type of the pointer to the external data * Uart Channels. * A pointer of such a structure is provided to the Uart driver * initialization routine for configuration of the Uart hardware * channel. * * * */ /* implements Uart_ConfigType_structure */ typedef struct { #if (UART_MULTICORE_SUPPORT == STD_ON) uint32 PartitionCoreId; /**< @brief Partition configured of the core */ #endif /** * @brief Hardware channel. * @details Constant pointer of the constant external data * structure containing the overall initialization data * for all the configured Uart Channels. */ const Uart_ChannelConfigType *Configs[UART_CH_MAX_CONFIG]; } Uart_ConfigType; /*================================================================================================== * GLOBAL VARIABLE DECLARATIONS ==================================================================================================*/ /*================================================================================================== * FUNCTION PROTOTYPES ==================================================================================================*/ #ifdef __cplusplus } #endif /** @} */ #endif /* UART_Types_H */