208 lines
7.4 KiB
C
208 lines
7.4 KiB
C
/**
|
||
******************************************************************************
|
||
* @file
|
||
* @author
|
||
* @version
|
||
* @date
|
||
* @brief
|
||
* @function List:
|
||
******************************************************************************
|
||
* @attention
|
||
*
|
||
*
|
||
* <h2><center>© COPYRIGHT 2021 </center></h2>
|
||
******************************************************************************
|
||
* @History:
|
||
* @Author:
|
||
* @Data:
|
||
* @Version:
|
||
*/
|
||
#ifndef _DEM_CFG_H_
|
||
#define _DEM_CFG_H_
|
||
|
||
#include "Dcm_Cfg.h"
|
||
#include "Dem_Types.h"
|
||
#include "PduR_Dcm.h"
|
||
#include "calibration.h"
|
||
#include "nvm.h"
|
||
typedef u16 dem_addr_t; //TEMP_MODIFY
|
||
|
||
#define TOTAL_DTC_NUM (NUM_OF_DTC) /*配置 NUM_OF_DTC */
|
||
#define DTC_STATUS_USED_MASK (0x49U) /*配置 DTC MASK */
|
||
#define DTC_SNAP_SHOT_DATA_ENABLE (STD_OFF) /*配置是否支持快照 0: 不使用snap shot data */
|
||
#define DTC_EXTENDED_DATA_ENABLE (STD_OFF) /*配置是否支持擴展數據:0: 不使用EXTENDEDt data */
|
||
|
||
#define DEM_DTC_STORAGE_TO_EEPROM_EN (STD_ON)
|
||
#define TOTAL_MAX_STORED_DTC_NUM (NUM_OF_DTC) /*配置最大的 存儲 DTC 的個數 */
|
||
|
||
//#define DTC_TASK_TICK_PER_SEC (TASK_TICKS_PER_SEC*0.5) /*配置 CAN TASK PERIOD:100/s CAN 任務 每秒100次 */
|
||
//#define DTC_TIME_s(x) ((u16)((x)*DTC_TASK_TICK_PER_SEC))
|
||
|
||
#define EEPROM_INTIED_FLAG_ADDR (EEPROM_LOGIC_BASE_ADDR_FOR_DTC) //NVM_START_ADDR_DTC -- 注意
|
||
#define DEM_DTC_STORAGE_EEPROM_START_ADDR (dem_addr_t)(EEPROM_INTIED_FLAG_ADDR+2u) /*配置 DTC 存儲首地址 */
|
||
|
||
#if (TOTAL_DTC_NUM <253)
|
||
typedef uint8_t dtc_handle_t;
|
||
#else
|
||
typedef uint16_t dtc_handle_t;
|
||
#endif
|
||
|
||
#define DTC_NO_EXIST ((dtc_handle_t)(-1)) //其實就是 ff表示 不存在
|
||
#define DTC_IS_IN_GROUP ((dtc_handle_t)(-2)) //其實就是 fe表示在組內
|
||
|
||
#define DTC_INIT_FLAG_STORY_TO_EXT_EEPROM
|
||
#define DTC_RECORD_STORY_TO_EXT_EEPROM
|
||
|
||
#define DTC_ALL_GROUPS 0xFFFFFFu
|
||
#define DTC_NETWORK_COMM_GROUPS 0xC00000u
|
||
#define DTC_BODY_GROUPS 0x800000u
|
||
#define DTC_CHASSIS_GROUPS 0x400000u
|
||
#define DTC_POWERTRAIN_GROUPS 0X100000u
|
||
#define DTC_EMISSION_GROUPS 0x000000u
|
||
|
||
|
||
|
||
typedef uint16 IntEEPROM1_TAddress; /* Type of address to the EEPROM */
|
||
|
||
|
||
#define EEPROM_UNINITED 0u
|
||
#define EEPROM_INITED 1u
|
||
#define EEPROM_DTC_CLEAR 2u
|
||
|
||
#define DTC_SET_TIME_FOR_OUTPUT (80u) /* 80*10MS = 800mS */
|
||
#define DTC_TEST_FAILED (0u)
|
||
#define DTC_TEST_PASSED (1u)
|
||
|
||
#define TEST_RESULT_STATE_BIT_LENGTH (2U)
|
||
#define TOTAL_TEST_RESULT_NUM ((TOTAL_DTC_NUM)/(8/(TEST_RESULT_STATE_BIT_LENGTH)) + 1)
|
||
|
||
#define TOTAL_DTC_FLAG_NUM (TOTAL_DTC_NUM / 8 + 1)
|
||
//#define DTC_MONITORING_CYCLE_NUM (TOTAL_STORED_DTC_NUM / 8 + 1)
|
||
#define LAST_DTC_INDEX (TOTAL_DTC_NUM-1)
|
||
#define NO_DTC_STORED_INDEX (0xffu)
|
||
|
||
|
||
|
||
#define TOTAL_DTC_MONITORING_CYCLE 2u
|
||
#define DTC_MONITORING_CYCLE2 0u
|
||
#define DTC_MONITORING_CYCLE4 1u
|
||
|
||
#define TOTAL_DTC_SNAP_SHOT_ID_NUM 4u /* FE-5 4 did */
|
||
#define TOTAL_DTC_EXTENDED_DATA_NUM 1u
|
||
#define MAX_DTC_AGING_COUNTER_VALUE 40u
|
||
|
||
#define MIN_DTC_FAULT_DT_CNT_VALUE 16u /* -128 + 16 */
|
||
#define MAX_DTC_FAULT_DT_CNT_VALUE 223u /* 127 - 32 */
|
||
#define DTC_FAULT_DT_CNT_UP_STEP 32u
|
||
#define DTC_FAULT_DT_CNT_DOWN_STEP 16u
|
||
|
||
#define DTC_MONITORING_CYCLE0_MASK 0x01u
|
||
#define DTC_MONITORING_CYCLE1_MASK 0x02u
|
||
#define DTC_MONITORING_CYCLE2_MASK 0x04u
|
||
#define DTC_MONITORING_CYCLE3_MASK 0x08u
|
||
#define DTC_MONITORING_CYCLE4_MASK 0x10u
|
||
|
||
/* Define DTC index */
|
||
|
||
|
||
#define DTC_POWER_LOW_ID 0u /*0*/ /*低於9v 500ms*/
|
||
#define DTC_POWER_HIGH_ID 1u /*1*/ /*超過16v 500ms*/
|
||
|
||
#define DTC_PREV_BUTTON_STUCK_ID 2u //向上搜台
|
||
#define DTC_PHONE_BUTTON_STUCK_ID 3u //电话
|
||
#define DTC_VOICE_BUTTON_STUCK_ID 4u
|
||
#define DTC_VEDIO_BUTTON_STUCK_ID 5u
|
||
#define DTC_NEXT_BUTTON_STUCK_ID 6u
|
||
#define DTC_MUTE_BUTTON_STUCK_ID 7u
|
||
#define DTC_CUSTOM_BUTTON_STUCK_ID 8u
|
||
#define DTC_MENU2_CTRL_BUTTON_STUCK_ID 9u
|
||
#define DTC_LOST_COM_WITH_GW_ID 10u
|
||
#define DTC_SPDP_BUTTON_STUCK_ID 11u
|
||
#define DTC_SPDD_BUTTON_STUCK_ID 12u
|
||
#define DTC_DSPD_BUTTON_STUCK_ID 13u
|
||
#define DTC_DSPP_BUTTON_STUCK_ID 14u
|
||
#define DTC_LEFT_MENU_STUCK_ID 15u
|
||
#define DTC_LEFT_PICK_STUCK_ID 16u
|
||
#define DTC_RIGHT_PICK_STUCK_ID 17u
|
||
#define DTC_HEAT_OVERCURRENT_INDEX 18u
|
||
#define DTC_SWH_STRIP_SHORT_INDEX 19u
|
||
#define DTC_SWH_STRIP_OPEN_INDEX 20u
|
||
#define DTC_SWH_NTC_SHORT_INDEX 21u
|
||
#define DTC_SWH_NTC_OPEN_INDEX 22u
|
||
|
||
#define DTC_GROUP_BODY_INDEX_MIN (0U)
|
||
#define DTC_GROUP_BODY_INDEX_MAX (DTC_TAILGATE_PE_SW_STUCK_ID)
|
||
|
||
#define DTC_GROUP_NETWORK_INDEX_MIN (DTC_GROUP_BODY_INDEX_MAX+1)
|
||
#define DTC_GROUP_NETWORK_INDEX_MAX (DTC_LOST_COMMUNICATION_IMMO_ID)
|
||
|
||
#define DTC_VOLTAGE_IS_TOO_LOW (DTC_POWER_LOW_ID)
|
||
#define DTC_VOLTAGE_IS_TOO_HIGH (DTC_POWER_HIGH_ID)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
typedef struct{
|
||
dtc_status_t dtc_status;
|
||
#if (DTC_SNAP_SHOT_DATA_ENABLE) /* not used for brilliance-auto */
|
||
dtc_snap_shot_data_t DTCSnapShotData;
|
||
#endif
|
||
#if (DTC_EXTENDED_DATA_ENABLE)
|
||
dtc_extended_data_t DTCextended_data;
|
||
#endif
|
||
} dtc_stored_data_t;
|
||
|
||
typedef struct{
|
||
u8 write_pointer; /* DTC_INDEX Stored to RAM */
|
||
u8 stored_dtc_index[TOTAL_MAX_STORED_DTC_NUM]; /* DTC_INDEX Stored to RAM ----是把SupportedDTC中的需要儲存到eeprom的buf id 轉到該數組中 所以<=11*/
|
||
/* Don't save cMonitoringCycle in EEPROM, it just used for the increasing of monitory cycle counter . */
|
||
dtc_stored_data_t dtc_stored_dt[TOTAL_MAX_STORED_DTC_NUM];
|
||
} dtc_info_struct_t;
|
||
|
||
#define SYS_PARM_STRGE_START_ADDR (0)
|
||
|
||
//#define DTC_SNAPSHOT_RECORD_LENGTH (sizeof(dtc_snap_shot_data_t) + 8) /* snap_shot_data LENGTH + DID 4*2 BYTE LENGTH) */
|
||
#define DTC_SNAPSHOT_RECORD_LENGTH (sizeof(dtc_snap_shot_data_t) + 2 * TOTAL_DTC_SNAP_SHOT_ID_NUM) /* snap_shot_data LENGTH + DID 4*2 BYTE LENGTH) */
|
||
#define DTC_EXTDATA_RECORD_LENGTH (sizeof(dtc_extended_data_t) + 1 * TOTAL_DTC_EXTENDED_DATA_NUM) /* snap_shot_data LENGTH + DID 4*2 BYTE LENGTH) */
|
||
|
||
|
||
#define _SnapShort_size_0 (fld_sizeof(dtc_snap_shot_data_t, main_ecu_supply_voltage))
|
||
#define _SnapShort_size_1 (fld_sizeof(dtc_snap_shot_data_t, vehicle_speed))
|
||
#define _SnapShort_size_2 (fld_sizeof(dtc_snap_shot_data_t, odometer))
|
||
#define _SnapShort_size_3 (fld_sizeof(dtc_snap_shot_data_t, tbox_datatime))
|
||
|
||
|
||
#define _SnapShort_ADDR_0 (offsetof1(dtc_snap_shot_data_t, main_ecu_supply_voltage) + SYS_PARM_STRGE_START_ADDR)
|
||
#define _SnapShort_ADDR_1 (offsetof1(dtc_snap_shot_data_t, vehicle_speed) + SYS_PARM_STRGE_START_ADDR)
|
||
#define _SnapShort_ADDR_2 (offsetof1(dtc_snap_shot_data_t, odometer) + SYS_PARM_STRGE_START_ADDR)
|
||
#define _SnapShort_ADDR_3 (offsetof1(dtc_snap_shot_data_t, tbox_datatime) + SYS_PARM_STRGE_START_ADDR)
|
||
|
||
#define _ExtData_ADDR_1 (sizeof(dtc_status_t) +sizeof(dtc_snap_shot_data_t) + SYS_PARM_STRGE_START_ADDR)
|
||
#define _ExtData_ADDR_2 (_ExtData_ADDR_1 + 1)
|
||
|
||
|
||
//extern const uint32 SupportedDTC[NUM_OF_DTC];
|
||
|
||
#if (DTC_SNAP_SHOT_DATA_ENABLE)
|
||
extern const u8 c_dtc_snap_shot_data_id[TOTAL_DTC_SNAP_SHOT_ID_NUM][2];
|
||
extern const u8 c_dtc_snap_shot_data_size[TOTAL_DTC_SNAP_SHOT_ID_NUM];
|
||
#endif
|
||
|
||
#if (DTC_EXTENDED_DATA_ENABLE)
|
||
extern const u8 c_dtc_extended_data_id[TOTAL_DTC_EXTENDED_DATA_NUM];
|
||
#endif
|
||
|
||
|
||
extern const u32 SupportedDTC[TOTAL_DTC_NUM] ;
|
||
|
||
|
||
#define DEM_TASK_TIME_UNIT 5 //10Ms跑一次任务
|
||
#define DEM_TASK_WAIT_EEPROM_INIT (3000/DEM_TASK_TIME_UNIT) //等待eeprom初始化的超时
|
||
#define DEM_CFG_ENABLE_MACHINE_STATE_FOR_INIT //使能--初始化,要等到eeprom成功讀取之後
|
||
|
||
|
||
#endif
|