mirror of
https://github.com/Dev-KATECH/ADM.git
synced 2026-05-17 01:43:59 +09:00
176 lines
8.3 KiB
C
176 lines
8.3 KiB
C
/*==================================================================================================
|
|
* Project : RTD AUTOSAR 4.4
|
|
* Platform : CORTEXM
|
|
* Peripheral : LPUART
|
|
* Dependencies : none
|
|
*
|
|
* Autosar Version : 4.4.0
|
|
* Autosar Revision : ASR_REL_4_4_REV_0000
|
|
* Autosar Conf.Variant :
|
|
* SW Version : 0.9.0
|
|
* Build Version : S32K3_RTD_0_9_0__ASR_REL_4_4_REV_0000_20210326
|
|
*
|
|
* (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 LIN_IP_COMMON_H
|
|
#define LIN_IP_COMMON_H
|
|
|
|
/**
|
|
* @file
|
|
*
|
|
* @internal
|
|
* @addtogroup LIN_IPW
|
|
* @{
|
|
*/
|
|
|
|
#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 "Mcal.h"
|
|
|
|
/*==================================================================================================
|
|
* SOURCE FILE VERSION INFORMATION
|
|
==================================================================================================*/
|
|
|
|
#define LIN_IP_COMMON_VENDOR_ID 43
|
|
#define LIN_IP_COMMON_AR_RELEASE_MAJOR_VERSION 4
|
|
#define LIN_IP_COMMON_AR_RELEASE_MINOR_VERSION 4
|
|
#define LIN_IP_COMMON_AR_RELEASE_REVISION_VERSION 0
|
|
#define LIN_IP_COMMON_SW_MAJOR_VERSION 0
|
|
#define LIN_IP_COMMON_SW_MINOR_VERSION 9
|
|
#define LIN_IP_COMMON_SW_PATCH_VERSION 0
|
|
|
|
/*==================================================================================================
|
|
* FILE VERSION CHECKS
|
|
==================================================================================================*/
|
|
#ifndef DISABLE_MCAL_INTERMODULE_ASR_CHECK
|
|
/* Check if current file and Mcal.h header file are of the same Autosar version */
|
|
#if ((LIN_IP_COMMON_AR_RELEASE_MAJOR_VERSION != MCAL_AR_RELEASE_MAJOR_VERSION) || \
|
|
(LIN_IP_COMMON_AR_RELEASE_MINOR_VERSION != MCAL_AR_RELEASE_MINOR_VERSION))
|
|
#error "AutoSar Version Numbers of Lin_Ip_Common.h and Mcal.h are different"
|
|
#endif
|
|
#endif
|
|
|
|
/*==================================================================================================
|
|
* CONSTANTS
|
|
==================================================================================================*/
|
|
|
|
/*==================================================================================================
|
|
* DEFINES AND MACROS
|
|
==================================================================================================*/
|
|
/**
|
|
* @brief Mask of Id field
|
|
*/
|
|
#define LIN_ID_MASK_U8 ((uint8)(0x3FU))
|
|
|
|
/* Accept Master baudrate deviation from the slave baudrate to be 2% */
|
|
#define AUTOBAUD_BAUDRATE_TOLERANCE (uint32_t)2U
|
|
/* calculate range of one bit time with baudrate 19200 by formula {1000000/19200*(100 + AUTOBAUD_BAUDRATE_TOLERANCE))/100} */
|
|
#define BIT_DURATION_MAX_19200 (uint32_t)(100000U * (100U + AUTOBAUD_BAUDRATE_TOLERANCE) / 192U)
|
|
#define BIT_DURATION_MIN_19200 (uint32_t)(100000U * (100U - AUTOBAUD_BAUDRATE_TOLERANCE) / 192U)
|
|
/* calculate range of one bit time with baudrate 14400 by formula {1000000/14400*(100 + AUTOBAUD_BAUDRATE_TOLERANCE))/100} */
|
|
#define BIT_DURATION_MAX_14400 (uint32_t)(100000U * (100U + AUTOBAUD_BAUDRATE_TOLERANCE) / 144U)
|
|
#define BIT_DURATION_MIN_14400 (uint32_t)(100000U * (100U - AUTOBAUD_BAUDRATE_TOLERANCE) / 144U)
|
|
/* calculate range of one bit time with baudrate 9600 by formula {1000000/9600*(100 + AUTOBAUD_BAUDRATE_TOLERANCE))/100} */
|
|
#define BIT_DURATION_MAX_9600 (uint32_t)(100000U * (100U + AUTOBAUD_BAUDRATE_TOLERANCE) / 96U)
|
|
#define BIT_DURATION_MIN_9600 (uint32_t)(100000U * (100U - AUTOBAUD_BAUDRATE_TOLERANCE) / 96U)
|
|
/* calculate range of one bit time with baudrate 4800 by formula {1000000/4800*(100 + AUTOBAUD_BAUDRATE_TOLERANCE))/100} */
|
|
#define BIT_DURATION_MAX_4800 (uint32_t)(100000U * (100U + AUTOBAUD_BAUDRATE_TOLERANCE) / 48U)
|
|
#define BIT_DURATION_MIN_4800 (uint32_t)(100000U * (100U - AUTOBAUD_BAUDRATE_TOLERANCE) / 48U)
|
|
/* calculate range of one bit time with baudrate 2400 by formula {1000000/2400*(100 + AUTOBAUD_BAUDRATE_TOLERANCE))/100} */
|
|
#define BIT_DURATION_MAX_2400 (uint32_t)(100000U * (100U + AUTOBAUD_BAUDRATE_TOLERANCE) / 24U)
|
|
#define BIT_DURATION_MIN_2400 (uint32_t)(100000U * (100U - AUTOBAUD_BAUDRATE_TOLERANCE) / 24U)
|
|
/*==================================================================================================
|
|
* ENUMS
|
|
==================================================================================================*/
|
|
/**
|
|
* @brief Enum containing parity type actions
|
|
*
|
|
* @details This enum defines types for an enumerating parity type actions.
|
|
*
|
|
* @implements Lin_Ip_ParityActionType_enumeration
|
|
*
|
|
*
|
|
*/
|
|
typedef enum {
|
|
LIN_CHECK_PARITY = 0x00U, /*!< Checking parity action */
|
|
LIN_MAKE_PARITY = 0x01U, /*!< Computing parity action */
|
|
} Lin_Ip_ParityActionType;
|
|
|
|
/*==================================================================================================
|
|
* STRUCTURES AND OTHER TYPEDEFS
|
|
==================================================================================================*/
|
|
|
|
/*==================================================================================================
|
|
* GLOBAL VARIABLE DECLARATIONS
|
|
==================================================================================================*/
|
|
|
|
/*==================================================================================================
|
|
* FUNCTION PROTOTYPES
|
|
==================================================================================================*/
|
|
|
|
/**
|
|
* @brief Makes or checks parity bits.
|
|
*
|
|
* @details This function shall compute or check the parity bits. If action is checking parity, the function
|
|
* returns ID value if parity bits are correct or 0xFF if parity bits are incorrect. If action
|
|
* is making parity bits, then from input value of ID, the function returns PID.
|
|
* This is not a public API as it is called by other API functions.
|
|
*
|
|
* @param[in] PID PID byte in case of checking parity bits or ID byte in case of making parity bits.
|
|
* @param[in] typeAction: 1 for Checking parity bits, 0 for making parity bits
|
|
*
|
|
* @return uint8 - Value has 8 bit:
|
|
* @retval 0xFF : Parity bits are incorrect,
|
|
* @retval ID : Checking parity bits are correct.
|
|
* @retval PID : typeAction is making parity bits.
|
|
*
|
|
*
|
|
*/
|
|
uint8 Lin_Ip_ProcessParity(const uint8 u8Pid, const Lin_Ip_ParityActionType eTypeAction);
|
|
|
|
/**
|
|
* @brief Makes the checksum byte for a frame.
|
|
*
|
|
* @details This function shall compute the checksum byte for a frame. For PID of identifiers,
|
|
* if PID is 0x3C (ID 0x3C) or 0x7D (ID 0x3D) or 0xFE (ID 0x3E) or 0xBF (ID 0x3F)
|
|
* apply classic checksum and apply enhanced checksum for other PID.
|
|
* In case user want to calculate classic checksum please set PID to zero.
|
|
*
|
|
* @param[in] buffer Pointer to Tx buffer
|
|
* @param[in] sizeBuffer Number of bytes that are contained in the buffer.
|
|
* @param[in] PID Protected Identifier byte.
|
|
*
|
|
* @return uint8 - The checksum byte.
|
|
*
|
|
*
|
|
*/
|
|
uint8 Lin_Ip_MakeChecksumByte(const uint8 *pBuffer, const uint8 u8SizeBuffer, const uint8 u8Pid);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
/** @} */
|
|
|
|
#endif /* LIN_IP_COMMON_H */
|