Commit 7c8fb4d6 authored by 高士达's avatar 高士达

Merge branch 'lgh_from_dev' into 'dev'

Lgh from dev

See merge request !24
parents 2d108d58 0c128970
......@@ -556,7 +556,7 @@ const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX] =
20000ul,
0x339ul,
(( void * )0),
(( void * )0),
(CAN_0x339_Receive),
(( void * )0),
},
{
......
......@@ -215,6 +215,7 @@ uint8_t Get_CAN_Num_SMCU_ErrorGrage(void)
}
uint8_t g_powerState = 0U;
uint8_t Get_CAN_Power_State(void)
{
......@@ -257,20 +258,20 @@ uint8_t Get_CAN_Power_State(void)
state = POWER_CHECK_NULL;
}
#else
if ((Common_Get_IG_Sts() == COMMON_POWER_ON))
{
if ((CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x220_Msg)) == CAN_SIG_NORMAL) && (Get_CAN_CH0_ID_220_Sig_VCU_KeySts() == 1U))
{
state = KEY_ACC;
}
else
{
state = PKEY_ON;
}
}
else
switch(g_powerState)
{
case 0:
state = KEY_OFF;
break;
case 1:
state = PKEY_ON;
break;
case 2:
state = KEY_ACC;
break;
default:
state = KEY_OFF;
break;
}
#endif
return state;
......@@ -541,6 +542,11 @@ void CAN_0x16B_Receive(uint8_t CopyData [])
{
g_ChgModeCount++;
}
else
{
g_ChgModeStatus = 1U;
g_ChgModeCount = 0U;
}
}
else if ((u8Signal == 3U) && (g_ChgModeStatus != 2U))
{
......@@ -548,6 +554,11 @@ void CAN_0x16B_Receive(uint8_t CopyData [])
{
g_ChgModeCount++;
}
else
{
g_ChgModeStatus = 2U;
g_ChgModeCount = 0U;
}
}
else if ((u8Signal != 1U) && (u8Signal != 3U) && (g_ChgModeStatus != 0U))
{
......@@ -555,6 +566,11 @@ void CAN_0x16B_Receive(uint8_t CopyData [])
{
g_ChgModeCount++;
}
else
{
g_ChgModeStatus = 0U;
g_ChgModeCount = 0U;
}
}
else
{
......@@ -576,6 +592,11 @@ void CAN_0x22F_Receive(uint8_t CopyData [])
{
g_WorkCount++;
}
else
{
g_WorkStatus = 2U;
g_WorkCount = 0U;
}
}
else if ((u8Signal == 3U) && (g_WorkStatus != 3U))
{
......@@ -583,6 +604,11 @@ void CAN_0x22F_Receive(uint8_t CopyData [])
{
g_WorkCount++;
}
else
{
g_WorkStatus = 3U;
g_WorkCount = 0U;
}
}
else if ((u8Signal == 4U) && (g_WorkStatus != 4U))
{
......@@ -590,6 +616,11 @@ void CAN_0x22F_Receive(uint8_t CopyData [])
{
g_WorkCount++;
}
else
{
g_WorkStatus = 4U;
g_WorkCount = 0U;
}
}
else if ((u8Signal != 2U) && (u8Signal != 3U) && (u8Signal != 4U) && (g_WorkStatus != 0U))
{
......@@ -597,6 +628,11 @@ void CAN_0x22F_Receive(uint8_t CopyData [])
{
g_WorkCount++;
}
else
{
g_WorkStatus = 0U;
g_WorkCount = 0U;
}
}
else
{
......@@ -627,3 +663,7 @@ void CAN_0x170_Receive(uint8_t CopyData [])
#endif
}
void CAN_0x339_Receive(uint8_t CopyData [])
{
g_u8ID339flag = 1U;
}
......@@ -5,7 +5,7 @@
#include "Components.h"
extern uint8_t g_powerState;
extern uint8_t Get_CAN_Num_BMCU_ErrorGrage(void);
......@@ -45,5 +45,6 @@ extern void CAN_0x220_Receive(uint8_t CopyData []);
extern void CAN_0x16B_Receive(uint8_t CopyData []);
extern void CAN_0x22F_Receive(uint8_t CopyData []);
extern void CAN_0x170_Receive(uint8_t CopyData []);
extern void CAN_0x339_Receive(uint8_t CopyData []);
#endif
......@@ -4,6 +4,7 @@
DataTimeStruct_st_t Time;
uint16_t u16EngineTimeCount;
uint8_t g_u8ID339flag = 0U;
void Data_Time_KL30_Init(void)
{
......@@ -13,12 +14,39 @@ void Data_Time_KL30_Init(void)
Time.SingleValid = 0U;
Time.KeepTimeCount = 0U;
u16EngineTimeCount = 0U;
g_u8ID339flag = 0U;
}
void Data_Time_KL15_Init(void)
{
uint16_t u16Result = 0U;
uint32_t u32Data_read[1] = {0};
Time.KeepTimeCount = 0U;
u16EngineTimeCount = 0U;
g_u8ID339flag = 0U;
#if (PART_NUMBER == G54_A01)
for(uint8_t i = 0U; i < 3U; i++ )
{
u16Result = eeprom_ReadRecord(EEPROM_BLOCK_00, (uint8_t *)u32Data_read, 4);
if(u16Result == 0x2U)
{
break;
}
}
if (u32Data_read[0] == 0xFFFFFFFFU)
{
Time.TotalHour = 0U;
}
else if (u32Data_read[0] > 65535U)
{
u32Data_read[0] = 65535U;
Time.TotalHour = u32Data_read[0];
}
else
{
Time.TotalHour = u32Data_read[0];
}
#endif
}
void Data_Time_Single_Working_Hours(void)
......@@ -63,6 +91,7 @@ uint32_t CumulativeWorkHours_readDiffer = 0;
uint8_t CumulativeWorkHours_MAX_flag = 0;
void Data_Time_Total_Working_Hours(void)
{
#if (PART_NUMBER == RMR42E_60)
uint32_t u32Data[1] = {0};
eeprom_ReadRecord(EEPROM_BLOCK_00, (uint8_t *)u32Data_read, 4);
if (u32Data_read[0] > 99999)
......@@ -75,12 +104,34 @@ void Data_Time_Total_Working_Hours(void)
{
CumulativeWorkHours_MAX_flag = 0;
}
Time.TotalHour = u32Data_read[0];
#else
uint16_t u16Result = 0U;
uint32_t AccumulatedWorkHours = 0U;
if ((CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x339_Msg)) == CAN_SIG_NORMAL) && (g_u8ID339flag == 1U))
{
AccumulatedWorkHours = (uint32_t) Get_CAN_CH0_ID_339_Sig_MMCU_AccumulatedWorkHours();
if(AccumulatedWorkHours != Time.TotalHour)
{
Time.TotalHour = AccumulatedWorkHours;
u32Data_read[0] = AccumulatedWorkHours;
for(uint8_t i = 0U; i < 3U; i++ )
{
u16Result = eeprom_WriteRecord(EEPROM_BLOCK_00, (uint8_t *)u32Data_read, 4);
if(u16Result == 0x2U)
{
break;
}
}
}
}
#endif
}
void Data_CumulativeWorkHours_EEPROM_Write(void)
{
#if (PART_NUMBER == RMR42E_60)
uint32_t CurrentData = 0;
uint32_t u32Data[1] = {0};
if ((Common_Get_IG_Sts() == COMMON_POWER_ON) && (Charge_OFF_Flag == 0) && (Get_CAN_Power_State() != KEY_OFF) && (Get_CAN_Power_State() != PKEY_ON) && (System_Indicator_CANFlag != 1))
......@@ -120,6 +171,7 @@ void Data_CumulativeWorkHours_EEPROM_Write(void)
}
}
}
#endif
}
/*发动机运行时间计时函数,为防止计时误差大,放在50μs中断中运行*/
......
......@@ -16,6 +16,7 @@ typedef struct //__attribute__((aligned(4)))
}DataTimeStruct_st_t;
extern uint8_t g_u8ID339flag;
extern void Data_Time_KL30_Init(void);
extern void Data_Time_KL15_Init(void);
......
......@@ -585,8 +585,11 @@ _Fun_Res SEG_SET_EleDial_1SOC(uint8_t m_Flag, uint8_t m_SEG)
// 小电池
IC1_SEG121 = IC_SEG_ON;
IC1_SEG122 = IC_SEG_ON;
#if (PART_NUMBER == RMR42E_60)
if ((m_SEG == 1) && (Common_GetIgnOnTime() >= 1500) && (SOC_charge_seg_Flag != 1))
#else
if ((m_SEG == 1) && (Common_GetIgnOnTime() >= 1500) && (SOC_charge_seg_Flag != 1) && (Get_CAN_CH0_ID_220_Sig_VCU_ChgMode() != 1U))
#endif
{
if (FLASH_SYNC_1Hz)
{
......
......@@ -124,6 +124,7 @@ static void Power_IG_ON_Init(void)
Line_In_KL15_ON_Init();
LED_Driver_Service_Immediate();
Fault_Code_KL15_Init();
Data_Time_KL15_Init();
}
static void Power_Sleep_Init(void)
......
......@@ -115,21 +115,23 @@ monitorlib_uint8_t System_LINE_KL15(void)
u8KL15 = 0u;
}
#else
if ((Sys_Read_KL15_Voltage() >= 5500u ) && (Sys_Read_KL30_Voltage() >= 5500u))
{
if ((CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x220_Msg)) == CAN_SIG_NORMAL) && (Get_CAN_CH0_ID_220_Sig_VCU_KeySts() == 1U))
{
u8KL15 = 1U;
g_powerState = 2U;
}
else
{
u8KL15 = 0U;
g_powerState = 1U;
}
}
else
{
u8KL15 = 0U;
g_powerState = 0U;
}
#endif
......
......@@ -223,19 +223,21 @@ static void LED_Fuel_Alarm_Execution(Tellib_uint16_t led_status)
if (led_status == 1u)
{
/*点亮白灯*/
LED_Driver_Channel_Set(LampChannel_0, LampCh0_23_Fuel_Alarm_Y, LED_OFF);
LED_Driver_Channel_Set(LampChannel_0, LampCh0_24_Fuel_Alarm_W, LED_ON);
SEG_SET_LED_STS(SEG_LED_Fuel_Oil, 1U);
}
else if (led_status == 2u)
{
/*点亮黄灯*/
LED_Driver_Channel_Set(LampChannel_0, LampCh0_24_Fuel_Alarm_W, LED_OFF);
LED_Driver_Channel_Set(LampChannel_0, LampCh0_23_Fuel_Alarm_Y, LED_ON);
SEG_SET_LED_STS(SEG_LED_Fuel_Oil, 1U);
}
else
{
/*熄灭指示灯*/
LED_Driver_Channel_Set(LampChannel_0, LampCh0_09_EFI_failure_Y, LED_OFF);
LED_Driver_Channel_Set(LampChannel_0, LampCh0_23_Fuel_Alarm_Y, LED_OFF);
LED_Driver_Channel_Set(LampChannel_0, LampCh0_24_Fuel_Alarm_W, LED_OFF);
SEG_SET_LED_STS(SEG_LED_Fuel_Oil, 0U);
}
......@@ -580,22 +582,6 @@ static Tellib_uint16_t LED_Battery_Charging_Judgement(void)
if (Signal1 == 1U)
{
if ((g_ChgModeStatus != 1U) && (g_ChgModeCount >= 3U))
{
g_ChgModeStatus = 1U;
g_ChgModeCount = 0U;
}
else if ((g_ChgModeStatus != 2U) && (g_ChgModeCount >= 3U))
{
g_ChgModeStatus = 2U;
g_ChgModeCount = 0U;
}
else if ((g_ChgModeStatus != 0U) && (g_ChgModeCount >= 3U))
{
g_ChgModeStatus = 0U;
g_ChgModeCount = 0U;
}
LED_STATE = (Tellib_uint16_t) g_ChgModeStatus;
}
else
......@@ -762,27 +748,7 @@ static Tellib_uint16_t LED_Engine_Works_Judgement(void)
Tellib_uint16_t LED_STATE = 0u;
#if (PART_NUMBER == G54_A01)
if ((g_WorkStatus != 2U) && (g_WorkCount >= 3U))
{
g_WorkStatus = 2U;
g_WorkCount = 0U;
}
else if ((g_WorkStatus != 3U) && (g_WorkCount >= 3U))
{
g_WorkStatus = 3U;
g_WorkCount = 0U;
}
else if ((g_WorkStatus != 4U) && (g_WorkCount >= 3U))
{
g_WorkStatus = 4U;
g_WorkCount = 0U;
}
else if ((g_WorkStatus != 0U) && (g_WorkCount >= 3U))
{
g_WorkStatus = 0U;
g_WorkCount = 0U;
}
if ((g_WorkStatus == 2U) || (g_WorkStatus == 3U) || (g_WorkStatus == 4U))
{
LED_STATE = 1U;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment