176 lines
5.7 KiB
C
176 lines
5.7 KiB
C
|
/*
|
||
|
* Copyright (c) 2022, Shenzhen CVA Innovation CO.,LTD
|
||
|
* All rights reserved.
|
||
|
*
|
||
|
* Shenzhen CVA Innovation CO.,LTD (CVA chip) is supplying this file for use
|
||
|
* exclusively with CVA's microcontroller products. This file can be freely
|
||
|
* distributed within development tools that are supporting such microcontroller
|
||
|
* products.
|
||
|
*
|
||
|
* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||
|
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||
|
* CVA SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL,
|
||
|
* OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||
|
*/
|
||
|
|
||
|
#ifndef _UDS_DTC_H_
|
||
|
#define _UDS_DTC_H_
|
||
|
|
||
|
/*! \brief Contains public interface to various functions related
|
||
|
* to the user-defined UDS application
|
||
|
*/
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* the includes
|
||
|
******************************************************************************/
|
||
|
|
||
|
#include <stdbool.h>
|
||
|
#include <stdint.h>
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* the defines
|
||
|
******************************************************************************/
|
||
|
|
||
|
#define EMISSION_SYSTEM_GROUP (0x00FFFF33)
|
||
|
#define SAFETY_SYSTEM_GROUP (0x00FFFFD0)
|
||
|
#define ALL_FUNC_SYSTEM_GROUP (0x00FFFFFF)
|
||
|
|
||
|
#define REPORT_DTC_NUMBER_BY_STATUS_MASK (0x01)
|
||
|
#define REPORT_DTC_BY_STATUS_MASK (0x02)
|
||
|
#define REPORT_DTC_SNOPSHOT_IDENTIFICATION (0x03)
|
||
|
#define REPORT_DTC_SNOPSHOT_RECORD_BY_DTC_NUMBER (0x04)
|
||
|
#define REPORT_DTC_STORE_DATA_BY_RECORD_NUMBER (0x05)
|
||
|
#define REPORT_DTC_EXT_DATA_RECORD_BY_DTC_NUMBER (0x06)
|
||
|
#define REPORT_DTC_NUMBER_BY_SEVERITY_MASK_RECORD (0x07)
|
||
|
#define REPORT_DTC_BY_SEVERITY_MASK_RECORD (0x08)
|
||
|
#define REPORT_SUPPORTED_DTC (0x0a)
|
||
|
|
||
|
#define DTC_FORMAT_15031 (0x00)
|
||
|
#define DTC_FORMAT_14229 (0x01)
|
||
|
#define DTC_FORMAT_J1939 (0x02)
|
||
|
#define DTC_FORMAT_11992 (0x03)
|
||
|
|
||
|
#define DTC_AVAILABILITY_STATUS_MASK (0x7F)
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* the typedefs
|
||
|
******************************************************************************/
|
||
|
|
||
|
/*! \brief The DTC Index name of UDS supported
|
||
|
*/
|
||
|
typedef enum _Uds_DtcIndexNameType_
|
||
|
{
|
||
|
DTC_FUEL_SENSOR_BELOW = 0,
|
||
|
DTC_FUEL_SENSOR_ABOVE,
|
||
|
DTC_BATT_VOLTAG_BELOW,
|
||
|
DTC_BATT_VOLTAG_ABOVE,
|
||
|
DTC_CAN_BUS_OFF,
|
||
|
DTC_COM_LOST_EMS,
|
||
|
DTC_COM_LOST_TCU,
|
||
|
DTC_COM_LOST_ABS,
|
||
|
DTC_COM_LOST_TPMS,
|
||
|
DTC_COM_LOST_EPB,
|
||
|
DTC_COM_LOST_ESP,
|
||
|
DTC_COM_LOST_EPS,
|
||
|
DTC_COM_LOST_BCM,
|
||
|
DTC_COM_LOST_SRS,
|
||
|
DTC_COM_LOST_DVD,
|
||
|
DTC_COM_LOST_PDC,
|
||
|
DTC_COM_LOST_ALS,
|
||
|
DTC_COM_LOST_PEPS,
|
||
|
DTC_COM_LOST_AC,
|
||
|
DTC_COM_LOST_AVM,
|
||
|
DTC_MAX_COUNT
|
||
|
} Uds_DtcIndexNameType;
|
||
|
|
||
|
/*! \brief The DTC status definition refers to ISO14229-1 D.2.4
|
||
|
* \note Bit 0, testFailed, clear by test pass or ClearDiagnosticInformation
|
||
|
* Bit 1, testFailedThisOperationCycle, clear by new OC or ClearDiagnosticInformation
|
||
|
* Bit 2, latch, pendingDTC, clear by fault never happened in cur OC or ClearDiagnosticInformation, if test not completed, must hold.
|
||
|
* Bit 3, latch, confirmedDTC, clear by ClearDiagnosticInformation, one(only by normal fault) or 40 OC not detect any fault.
|
||
|
* Bit 4, latch, testNotCompletedSinceLastClear, set by a new OC start or ClearDiagnosticInformation
|
||
|
* Bit 5, latch, testFailedSinceLastClear, clear by ClearDiagnosticInformation
|
||
|
* Bit 6, testNotCompletedThisOperationCycle
|
||
|
* Bit 7, warningIndicatorRequested(unsupported)
|
||
|
*/
|
||
|
typedef union _Uds_DtcStatusType_
|
||
|
{
|
||
|
uint8_t all;
|
||
|
struct
|
||
|
{
|
||
|
uint8_t testFailed : 1;
|
||
|
uint8_t testFailToc : 1;
|
||
|
uint8_t pending : 1;
|
||
|
uint8_t confirmed : 1;
|
||
|
uint8_t testNcmpSlc : 1;
|
||
|
uint8_t testFailSlc : 1;
|
||
|
uint8_t testNcmpToc : 1;
|
||
|
uint8_t wnIndreq : 1;
|
||
|
} bit;
|
||
|
} Uds_DtcStatusType;
|
||
|
|
||
|
/*! \brief The DTC definition of UDS
|
||
|
*/
|
||
|
typedef struct _Uds_DtcType_
|
||
|
{
|
||
|
uint32_t dtcCode;
|
||
|
Uds_DtcStatusType dtcStatus;
|
||
|
int16_t faultDtCnt; /* refers to ISO14229-1 D.6 */
|
||
|
uint8_t AgingCnt; /* refers to ISO14229-1 D.7 */
|
||
|
} Uds_DtcType;
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* the globals
|
||
|
******************************************************************************/
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* the function prototypes
|
||
|
******************************************************************************/
|
||
|
|
||
|
/*! \brief control DTC status updata stop and start
|
||
|
*/
|
||
|
extern void Uds_SetDtcOffCtrl(bool val);
|
||
|
|
||
|
/*! \brief get control DTC status
|
||
|
*/
|
||
|
extern bool Uds_GetDtcOffCtrlState(void);
|
||
|
|
||
|
/*! \brief clear DTC by dtc index
|
||
|
*/
|
||
|
extern void Uds_ClearDtcByDtcIndex(uint16_t dtcIndex);
|
||
|
|
||
|
/*! \brief load dtc data from EEPROM
|
||
|
*/
|
||
|
extern void Uds_LoadDtc(void);
|
||
|
|
||
|
/*! \brief save dtc data to EEPROM
|
||
|
*/
|
||
|
extern void Uds_SaveDtc(void);
|
||
|
|
||
|
/*! \brief get DTC counter by dtc status mask
|
||
|
*/
|
||
|
extern uint16_t Uds_GetDtcNumberByStatusMask(uint8_t mask);
|
||
|
|
||
|
/*! \brief get DTC data by dtc status mask
|
||
|
*/
|
||
|
extern uint16_t Uds_GetDtcByStatusMask(uint8_t *pDtcBuf, uint16_t bufLen, uint8_t mask);
|
||
|
|
||
|
/*! \brief get all supported DTC data
|
||
|
*/
|
||
|
extern uint16_t Uds_GetSupportedDtc(uint8_t *pDtcBuf, uint16_t bufLen);
|
||
|
|
||
|
/*! \brief clear DTC by dtc group
|
||
|
*/
|
||
|
extern void Uds_ClearDtcByGroup(uint32_t group);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif /* extern "C" */
|
||
|
|
||
|
#endif /* _UDS_DTC_H_ */
|