#include "Common_Interface.h" #include "CAN_Communication_Matrix.h" #include "CAN_Lib.h" #include "Data_VehicleSpeed.h" #include "Data_EngineSpeed.h" #include "System_Monitor.h" #include "GaugesInterface.h" #include "Gauges.h" #include "dr7f701441.dvf.h" #include "GPIO.h" #include "Line_in.h" #include "Maintenance.h" #include "Menu.h" #include "GUI.h" #include "Emulated_EEPROM.h" #include "Watchdog.h" #include "UDS_Common.h" /*修饰变量static*/ /*ig on off时间线*/ static uint32_t PowerIgnOnTimeLine; static uint32_t PowerIgnOffTimeLine; static COMMON_PowerStatus_t PowerSts; /*1 ON ; 0 OFF*/ static uint16_t Act_V_Speed; /*实际值,十倍的*/ static uint16_t Act_E_Speed; /*实际值*/ static uint16_t Disp_V_Speed; /*显示值,十倍的*/ static uint16_t Disp_E_Speed; /*显示值*/ /*数据有效 1 ;数据无效 0 /0xff */ static DataValid_t PowerSts_Valid; static DataValid_t Act_V_Speed_Valid; static DataValid_t Act_E_Speed_Valid; static DataValid_t Disp_V_Speed_Valid; static DataValid_t Disp_E_Speed_Valid; static void Common_Set_Act_V_Speed(uint16_t Val); static void Common_Set_Act_E_Speed(uint16_t Val); static void Common_Set_Disp_V_Speed(uint16_t Val); static void Common_Set_Disp_E_Speed(uint16_t Val); static void Common_Set_Act_V_Speed_Valid(DataValid_t Val); static void Common_Set_Act_E_Speed_Valid(DataValid_t Val); static void Common_Set_Disp_V_Speed_Valid(DataValid_t Val); static void Common_Set_Disp_E_Speed_Valid(DataValid_t Val); static uint16_t SysRollingCounter; // wangboyu - begin static uint8_t CanFirstEvent[ID_TOTAL_MAX]; static void Individual_ECU_Communication(void); // wangboyu - end _EOL_K_LINE_SET K_Line_Set; /**/ static uint16_t User_FDJYLQQ_Time; static uint16_t User_RYLQQ_Time; static uint16_t User_BSXY_Time; static uint16_t User_CSQY_Time; static uint16_t User_LHQY_Time; static uint16_t User_KQGZJ_Time; static uint16_t User_DLZXY_Time; static uint16_t User_LT_Time; /*每次唤醒调用*/ void Common_DataInit(void) { PowerSts = COMMON_POWER_UNKNOW; Act_V_Speed = 0xffffu; Act_E_Speed = 0xffffu; Disp_V_Speed = 0xffffu; Disp_E_Speed = 0xffffu; PowerSts_Valid = COMMON_Valid_UNKNOW; Act_V_Speed_Valid = COMMON_Valid_UNKNOW; Act_E_Speed_Valid = COMMON_Valid_UNKNOW; Disp_V_Speed_Valid = COMMON_Valid_UNKNOW; Disp_E_Speed_Valid = COMMON_Valid_UNKNOW; PowerIgnOnTimeLine = 0x0ul; PowerIgnOffTimeLine = 0x0ul; /**/ User_FDJYLQQ_Time = 0x00u; User_RYLQQ_Time = 0x00u; User_BSXY_Time = 0x00u; User_CSQY_Time = 0x00u; User_LHQY_Time = 0x00u; User_KQGZJ_Time = 0x00u; User_DLZXY_Time = 0x00u; User_LT_Time = 0x00u; } /*以下由各个处理模块按需调用*/ /*使用数据之前,需要先判断数据是否有效,如果无效,则不可以使用*/ COMMON_PowerStatus_t Common_Get_IG_Sts(void) { return PowerSts; } uint16_t Common_Get_Act_V_Speed(void) { return Act_V_Speed; } uint16_t Common_Get_Act_E_Speed(void) { return Act_E_Speed; } uint16_t Common_Get_Disp_V_Speed(void) { return Disp_V_Speed; } uint16_t Common_Get_Disp_E_Speed(void) { return Disp_E_Speed; } /*获取超速报警状态*/ uint8_t Common_Get_OverSpeed_Status(void) { uint8_t OverSpeedStatus = 0u; uint16_t DispVSpeed = 0u; DispVSpeed = Common_Get_Disp_V_Speed(); if (DispVSpeed >= 1000u) { OverSpeedStatus = 1u; } else if (DispVSpeed <= 960u) { OverSpeedStatus = 0u; } return OverSpeedStatus; } static void Common_Set_IG_Sts(COMMON_PowerStatus_t Val) { PowerSts = Val; } static void Common_Set_Act_V_Speed(uint16_t Val) { Act_V_Speed = Val; } static void Common_Set_Act_E_Speed(uint16_t Val) { Act_E_Speed = Val; } static void Common_Set_Disp_V_Speed(uint16_t Val) { Disp_V_Speed = Val; } static void Common_Set_Disp_E_Speed(uint16_t Val) { Disp_E_Speed = Val; } DataValid_t Common_Get_IG_Sts_Valid(void) { return PowerSts_Valid; } DataValid_t Common_Get_Act_V_Speed_Valid(void) { return Act_V_Speed_Valid; } DataValid_t Common_Get_Act_E_Speed_Valid(void) { return Act_E_Speed_Valid; } DataValid_t Common_Get_Disp_V_Speed_Valid(void) { return Disp_V_Speed_Valid; } DataValid_t Common_Get_Disp_E_Speed_Valid(void) { return Disp_E_Speed_Valid; } static void Common_Set_IG_Sts_Valid(DataValid_t Val) { PowerSts_Valid = Val; } static void Common_Set_Act_V_Speed_Valid(DataValid_t Val) { Act_V_Speed_Valid = Val; } static void Common_Set_Act_E_Speed_Valid(DataValid_t Val) { Act_E_Speed_Valid = Val; } static void Common_Set_Disp_V_Speed_Valid(DataValid_t Val) { Disp_V_Speed_Valid = Val; } static void Common_Set_Disp_E_Speed_Valid(DataValid_t Val) { Disp_E_Speed_Valid = Val; } /*2MS任务*/ static uint16_t wbyTest = 0; void Common_Input_Para(void) { /* if (SYS_OPR_STAT_IGN_ON) {*/ uint32_t V_Speed_Convert = 0ul; uint32_t u32IG_ON_Timer = 0u; uint16_t OilValue = 0u; /*机油压力数值*/ uint32_t EBC2_Speed_Value = 0u; uint8_t LineStatus1 = 0u; uint8_t LineStatus2 = 0u; u32IG_ON_Timer = Common_GetIgnOnTime(); if (SYS_OPR_STAT_IGN_ON) { Common_Set_IG_Sts(COMMON_POWER_ON); Common_Set_IG_Sts_Valid(COMMON_Valid); OilValue = Common_Get_Disp_E_Speed(); //车速 wbyTest = Speed_Get_Display_Value(); Common_Set_Disp_V_Speed(wbyTest); Common_Set_Act_V_Speed(Speed_Get_ActualValue()); if (Speed_Get_Valid()) { Common_Set_Act_V_Speed_Valid(COMMON_Valid); Common_Set_Disp_V_Speed_Valid(COMMON_Valid); } else { Common_Set_Act_V_Speed_Valid(COMMON_InValid); Common_Set_Disp_V_Speed_Valid(COMMON_InValid); } Common_Set_Act_E_Speed(RevSpeedManage(Tacho_Get_ActualValue())); PowerIgnOffTimeLine = 0ul; if (PowerIgnOnTimeLine < 0x7ffffffful) { PowerIgnOnTimeLine += 2u; } /**/ if ((State_Flag.User_FDJYLQQ_FLAG == 1) || (State_Flag.User_FDJYLQQ_FLAG == 2)) { if (User_FDJYLQQ_Time < 601) User_FDJYLQQ_Time++; } else { User_FDJYLQQ_Time = 0 ; } if ((State_Flag.User_RYLQQ_FLAG == 1) || (State_Flag.User_RYLQQ_FLAG == 2)) { if (User_RYLQQ_Time < 601) User_RYLQQ_Time ++; } else { User_RYLQQ_Time = 0; } if ((State_Flag.User_BSXY_FLAG == 1) || (State_Flag.User_BSXY_FLAG == 2)) { if (User_BSXY_Time < 601) User_BSXY_Time ++; } else { User_BSXY_Time = 0; } if ((State_Flag.User_CSQY_FLAG == 1) || (State_Flag.User_CSQY_FLAG == 2)) { if (User_CSQY_Time < 601) User_CSQY_Time++; } else { User_CSQY_Time = 0; } if ((State_Flag.User_LHQY_FLAG == 1) || (State_Flag.User_LHQY_FLAG == 2)) { if (User_LHQY_Time < 601) User_LHQY_Time++; } else { User_LHQY_Time = 0; } if ((State_Flag.User_KQGZJ_FLAG == 1) || (State_Flag.User_KQGZJ_FLAG == 2)) { if (User_KQGZJ_Time < 601) User_KQGZJ_Time++; } else { User_KQGZJ_Time = 0; } if ((State_Flag.User_DLZXY_FLAG == 1) || (State_Flag.User_DLZXY_FLAG == 2)) { if (User_DLZXY_Time < 601) User_DLZXY_Time ++; } else { User_DLZXY_Time = 0; } if ((State_Flag.User_LT_FLAG == 1) || (State_Flag.User_LT_FLAG == 2)) { if (User_LT_Time < 601) User_LT_Time ++ ; } else { User_LT_Time = 0; } /**/ } else { PowerIgnOnTimeLine = 0ul; if (PowerIgnOffTimeLine < 0x7ffffffful) { PowerIgnOffTimeLine += 2u; } Common_Set_IG_Sts(COMMON_POWER_OFF); Common_Set_IG_Sts_Valid(COMMON_Valid); /*车转真实值OFF为0*/ Common_Set_Act_V_Speed(0u); Common_Set_Act_E_Speed(0u); Common_Set_Disp_V_Speed(0u); Common_Set_Disp_E_Speed(0u); /*----*/ User_FDJYLQQ_Time = 0u ; User_RYLQQ_Time = 0u ; User_BSXY_Time = 0u ; User_CSQY_Time = 0u ; User_LHQY_Time = 0u ; User_KQGZJ_Time = 0u ; User_DLZXY_Time = 0u ; User_LT_Time = 0u ; /*----*/ } } void Set_Can18FF5510_FirstRecv_Event(void) { CanFirstEvent[ID_CanMsg18FF5510_Msg_Count] = 1; } void Set_Can18FF2300_FirstRecv_Event(void) { CanFirstEvent[ID_CanMsg18FF2300_Msg_Count] = 1; } uint8_t Get_CanFirstRecv_Event(uint8_t ID) { return CanFirstEvent[ID]; } void Common_RollingCounterAdd(void) { SysRollingCounter++; } void Common_RollingCounterClear(void) { SysRollingCounter = 0u; } uint16_t Common_ReadRollingCounter(void) { return SysRollingCounter; } void Common_BlockDelay(uint16_t m_MS) { uint16_t RocBackup; uint16_t Counter; uint16_t DIMCounter; DIMCounter = m_MS * 20u; Common_RollingCounterClear(); RocBackup = Common_ReadRollingCounter(); do { Counter = Common_ReadRollingCounter(); if (Counter >= RocBackup) { Counter -= RocBackup; } else { Counter = 65535u - RocBackup + Counter + 1u; } } while (Counter < DIMCounter); } uint32_t Common_GetIgnOnTime(void) { return PowerIgnOnTimeLine; } uint32_t Common_GetIgnOffTime(void) { return PowerIgnOffTimeLine; } #pragma diag_suppress = Pm064 int32_t SEGGER_RTT_printf(uint16_t BufferIndex, const char *sFormat, ...); int32_t SEGGER_RTT_printf(uint16_t BufferIndex, const char *sFormat, ...) { return 0; } /*EOL诊断配置数据转换为仪表配置数据*/ void ReadDTCEOLValue_Meter_K_LINE(void) { /*获取所有存储数据*/ ReadDFlashData(EEPROM_BLOCK_EOL_K_LINE, (uint32_t *)&K_Line_Set.Flag, (sizeof(K_Line_Set) / 4u), K_LINE_EOL_InitVal); } void K_LINE_EOL_InitVal(void) { K_Line_Set.Flag = 0x7AA7A55Au; K_Line_Set.K_Line_LID20 = 0x00u; /* 00 应对ECE R13 //0:非应对、1:应对 */ K_Line_Set.K_Line_LID21 = 0x00u; /* 00 EBS/ABS //0:无、1:EBS、2:ABS(CAN应对) 3:ABS (CAN非应对) */ K_Line_Set.K_Line_LID22 = 0x00u; /* 00 EVSC //0:无、1:有 */ K_Line_Set.K_Line_LID23 = 0x00u; /* 00 驻车锁定 //0:无、1:有 */ K_Line_Set.K_Line_LID24 = 0x00u; /* 00 HSA //0:无、1:有 */ K_Line_Set.K_Line_LID25 = 0x00u; /* 00 AEBS //0:无、1:有 */ K_Line_Set.K_Line_LID26 = 0x00u; /* 00 ACC //0:无、1:有 */ K_Line_Set.K_Line_LID27 = 0x01u; /* 00 LDWS //0:无、1:有 */ K_Line_Set.K_Line_LID28 = 0x01u; /* 01 车辆间报警 //0:无、1:有 */ K_Line_Set.K_Line_LID29 = 0x01u; /* 01 有无巡航 //0:无、1:有 /*初值1*/ K_Line_Set.K_Line_LID2A = 0x00u; /* 00 气悬 //0:Reef、1:Rear air、2:Full air */ K_Line_Set.K_Line_LID2B = 0x00u; /* 00 ISS //0:无、1: eco stop、 2:Idle Stop */ K_Line_Set.K_Line_LID2C = 0x00u; /* 00 装货台工作警报蜂鸣 //0:无、1:有 */ K_Line_Set.K_Line_LID2D = 0x00u; /* 00 ROWS //0:无、1:ROWS有、2LOCAL警报有 */ K_Line_Set.K_Line_LID2E = 0x00u; /* 00 行车记录仪 //0:模拟记录仪、1:数字记录仪或行车记录仪 */ K_Line_Set.K_Line_LID2F = 0x00u; /* 00 车型 //0:单车、1:拖车、2:全拖车 */ K_Line_Set.K_Line_LID30 = 0x00u; /* 00 缓速器 //0:无、1:有(C&E)、2:有(F) */ K_Line_Set.K_Line_LID31 = 0x01u; /* -- 定速巡航 //0:无、1:有 */ K_Line_Set.K_Line_LID32 = 0x00u; /* 00 装货台种类 //0:一般、1:侧翼、2:倾倒 */ K_Line_Set.K_Line_LID33 = 0x01u; /* 01 SCR?DPD //0:SCR无/DPD有、1:SCR有/DPD有、2:SCR无/DPD无、3:SCR有/DPD无 /*初值1*/ K_Line_Set.K_Line_LID34 = 0x00u; /* 00 驻车种类 //0:FULL AIR、1:AOH /*初值1*/ K_Line_Set.K_Line_LID35 = 0x00u; /* -- 气压计 //0:2针式、1:1针式 */ K_Line_Set.K_Line_LID36 = 0x00u; /* -- 低压警报压 //0:一般输出(539kPa)、1:ADR(588kPa) */ K_Line_Set.K_Line_LID37 = 0x01u; /* -- 超限警报 //0:无、1:有 */ K_Line_Set.K_Line_LID38 = 0x01u; /* -- 速度警报 //0:无、1:有 */ K_Line_Set.K_Line_LID39 = 0x00u; /* 00 可变SLD //0:无、1:1车速、2:2车速 /*初值1*/ K_Line_Set.K_Line_LID3A = 0x00u; /* -- OEM //0:ISZ、1:UDT */ K_Line_Set.K_Line_LID3B = 0x00u; /* -- 预留 */ K_Line_Set.K_Line_LID3C = 0x00u; /* -- 预留 */ K_Line_Set.K_Line_LID3D = 0x00u; /* -- 预留 */ K_Line_Set.K_Line_LID3E = 0x01u; /* 01 预留 //0:胎压功能未匹配 1:匹配 */ K_Line_Set.K_Line_LID3F = 0x00u; /* -- 预留 */ K_Line_Set.K_Line_LID40 = 0x00u; /* 00 发动机种类 */ K_Line_Set.K_Line_LID41 = 0x13u; /* 50 变速器种类&控制 /*初值50*/ K_Line_Set.K_Line_LID42 = 0x00u; /* 00 驻车管道 /*初值 0*/ K_Line_Set.K_Line_LID43 = 0x82u; /* 82 车型 /*初值44*/ K_Line_Set.K_Line_LID44 = 0xFFu; /* FF 速度警报 /*初值FF*/ K_Line_Set.K_Line_LID45 = 0xFFu; /* FF 发动机转速 /*初值FF*/ K_Line_Set.K_Line_LID46 = 0xFFu; /* FF 急加速 /*初值FF*/ K_Line_Set.K_Line_LID47 = 0xFFu; /* FF 急减速 /*初值FF*/ K_Line_Set.K_Line_LID48 = 0xFFu; /* FF 长时间怠速 /*初值FF*/ K_Line_Set.K_Line_LID49 = 0xFFu; /* FF 辅助驻车 /*初值FF*/ K_Line_Set.K_Line_LID4A = 0x32u; /* 32 变速箱油 5000 */ K_Line_Set.K_Line_LID4B = 0x32u; /* 32 差速器油 5000 */ K_Line_Set.K_Line_LID4C = 0x32u; /* 32 离合器油 */ K_Line_Set.K_Line_LID4D = 0x64u; /* 64 动力转向油 10000 */ K_Line_Set.K_Line_LID4E = 0x78u; /* 78 轮胎 12000 */ K_Line_Set.K_Line_LID4F = 0x32u; /* 32 机油&滤清器 5000 */ K_Line_Set.K_Line_LID50 = 0x00u; /* -- 预留 */ K_Line_Set.K_Line_LID51 = 0x01u; /* 01 工作模式 */ K_Line_Set.K_Line_LID52 = 0x00u; /* 00 电子部件设定 */ }