Commit 34fb5f55 authored by hu's avatar hu

调整报警调度,增加两个组别,为相同类型,不同优先级首次不弹出做调整

parent 5803ca45
......@@ -75,17 +75,17 @@ const Popup_Attribute_t PopupAttributeTable[POPUP_MAX] =
{/*54 POPUP8_DPD_AUTO */ POPUP_TYPE_WARNING , 3u, 0u, POPUP_IGN_ON, POPUP8_DPD_AUTO , NULL, 1u, POPUP8_MSG_DPD_AUTO , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*55 POPUP9_AIR_PRESSURE */ POPUP_TYPE_WARNING , 3u, 0u, POPUP_IGN_ON, POPUP9_AIR_PRESSURE , NULL, 1u, POPUP9_MSG_AIR_PRESSURE , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*56 POPUP9_EBS_ERROR */ POPUP_TYPE_WARNING , 3u, 0u, POPUP_IGN_ON, POPUP9_EBS_ERROR , NULL, 1u, POPUP9_MSG_EBS_ERROR , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*57 POPUP10_RAPID_ACC */ POPUP_TYPE_WARNING , 4u, 0u, POPUP_IGN_ON, POPUP10_RAPID_ACC , NULL, 1u, POPUP10_MSG_RAPID_ACC , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*58 POPUP10_RAPID_SUB */ POPUP_TYPE_WARNING , 4u, 0u, POPUP_IGN_ON, POPUP10_RAPID_SUB , NULL, 1u, POPUP10_MSG_RAPID_SUB , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*59 POPUP10_REVAL_ENGINE */ POPUP_TYPE_WARNING , 4u, 0u, POPUP_IGN_ON, POPUP10_REVAL_ENGINE , NULL, 1u, POPUP10_MSG_REVAL_ENGINE , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*60 POPUP10_REVAL_SPEED */ POPUP_TYPE_WARNING , 4u, 0u, POPUP_IGN_ON, POPUP10_REVAL_SPEED , NULL, 1u, POPUP10_MSG_REVAL_SPEED , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*61 POPUP11_ENGINE_OIL_FILTER */ POPUP_TYPE_WARNING , 5u, 0u, POPUP_IGN_ON, POPUP11_ENGINE_OIL_FILTER , NULL, 1u, POPUP11_MSG_ENGINE_OIL_FILTER , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*62 POPUP11_FUEL_FILTER */ POPUP_TYPE_WARNING , 5u, 0u, POPUP_IGN_ON, POPUP11_FUEL_FILTER , NULL, 1u, POPUP11_MSG_FUEL_FILTER , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*63 POPUP11_T_MISSION_OIL */ POPUP_TYPE_WARNING , 5u, 0u, POPUP_IGN_ON, POPUP11_T_MISSION_OIL , NULL, 1u, POPUP11_MSG_T_MISSION_OIL , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*64 POPUP11_DIFF_OIL */ POPUP_TYPE_WARNING , 5u, 0u, POPUP_IGN_ON, POPUP11_DIFF_OIL , NULL, 1u, POPUP11_MSG_DIFF_OIL , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*65 POPUP11_CLUTCH_OIL */ POPUP_TYPE_WARNING , 5u, 0u, POPUP_IGN_ON, POPUP11_CLUTCH_OIL , NULL, 1u, POPUP11_MSG_CLUTCH_OIL , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*66 POPUP11_P_STEERING_FRUID */ POPUP_TYPE_WARNING , 5u, 0u, POPUP_IGN_ON, POPUP11_P_STEERING_FRUID , NULL, 1u, POPUP11_MSG_P_STEERING_FRUID , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*67 POPUP11_TIRE_ROTATION */ POPUP_TYPE_WARNING , 5u, 0u, POPUP_IGN_ON, POPUP11_TIRE_ROTATION , NULL, 1u, POPUP11_MSG_TIRE_ROTATION , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*57 POPUP10_RAPID_ACC */ POPUP_TYPE_WARNING1, 4u, 0u, POPUP_IGN_ON, POPUP10_RAPID_ACC , NULL, 1u, POPUP10_MSG_RAPID_ACC , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*58 POPUP10_RAPID_SUB */ POPUP_TYPE_WARNING1, 4u, 0u, POPUP_IGN_ON, POPUP10_RAPID_SUB , NULL, 1u, POPUP10_MSG_RAPID_SUB , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*59 POPUP10_REVAL_ENGINE */ POPUP_TYPE_WARNING1, 4u, 0u, POPUP_IGN_ON, POPUP10_REVAL_ENGINE , NULL, 1u, POPUP10_MSG_REVAL_ENGINE , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*60 POPUP10_REVAL_SPEED */ POPUP_TYPE_WARNING1, 4u, 0u, POPUP_IGN_ON, POPUP10_REVAL_SPEED , NULL, 1u, POPUP10_MSG_REVAL_SPEED , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*61 POPUP11_ENGINE_OIL_FILTER */ POPUP_TYPE_WARNING2, 5u, 0u, POPUP_IGN_ON, POPUP11_ENGINE_OIL_FILTER , NULL, 1u, POPUP11_MSG_ENGINE_OIL_FILTER , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*62 POPUP11_FUEL_FILTER */ POPUP_TYPE_WARNING2, 5u, 0u, POPUP_IGN_ON, POPUP11_FUEL_FILTER , NULL, 1u, POPUP11_MSG_FUEL_FILTER , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*63 POPUP11_T_MISSION_OIL */ POPUP_TYPE_WARNING2, 5u, 0u, POPUP_IGN_ON, POPUP11_T_MISSION_OIL , NULL, 1u, POPUP11_MSG_T_MISSION_OIL , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*64 POPUP11_DIFF_OIL */ POPUP_TYPE_WARNING2, 5u, 0u, POPUP_IGN_ON, POPUP11_DIFF_OIL , NULL, 1u, POPUP11_MSG_DIFF_OIL , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*65 POPUP11_CLUTCH_OIL */ POPUP_TYPE_WARNING2, 5u, 0u, POPUP_IGN_ON, POPUP11_CLUTCH_OIL , NULL, 1u, POPUP11_MSG_CLUTCH_OIL , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*66 POPUP11_P_STEERING_FRUID */ POPUP_TYPE_WARNING2, 5u, 0u, POPUP_IGN_ON, POPUP11_P_STEERING_FRUID , NULL, 1u, POPUP11_MSG_P_STEERING_FRUID , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
{/*67 POPUP11_TIRE_ROTATION */ POPUP_TYPE_WARNING2, 5u, 0u, POPUP_IGN_ON, POPUP11_TIRE_ROTATION , NULL, 1u, POPUP11_MSG_TIRE_ROTATION , POPUP_MODE_MULTI, SND_NONE , SND_TYPE_MULTI,},
/*=============================================================================================================================================================================================================================================================================*/
};
\ No newline at end of file
......@@ -102,6 +102,8 @@ enum PopupName
#define POPUP_TYPE_HINT 0x01 /*提示信息*/
#define POPUP_TYPE_WARNING 0x02 /*报警信息*/
#define POPUP_TYPE_EXCEPTION 0x04 /*特殊信息 */
#define POPUP_TYPE_WARNING1 0x08
#define POPUP_TYPE_WARNING2 0x10
/******************************************************************************
显示/声音模式
......
......@@ -38,6 +38,8 @@ static CommMemBuf_t CommBuf[MAX_MEM_NUM];
static struct PopupList *FatalListHead = POPUPLIB_NULL;
static struct PopupList *HintListHead = POPUPLIB_NULL;
static struct PopupList *WarningListHead = POPUPLIB_NULL;
static struct PopupList *WarningListHead1 = POPUPLIB_NULL;
static struct PopupList *WarningListHead2 = POPUPLIB_NULL;
static struct PopupList *ExceptionListHead = POPUPLIB_NULL;
static PopupSchedulingStruct s_PopupScheduling;
......@@ -49,6 +51,8 @@ static void Popup_Update_Status ( uint16_t PopupID );
static void Popup_Fatal_Request ( uint16_t PopupID );
static void Popup_Hint_Request ( uint16_t PopupID );
static void Popup_Warning_Request ( uint16_t PopupID );
static void Popup_Warning_Request1 ( uint16_t PopupID );
static void Popup_Warning_Request2 ( uint16_t PopupID );
static void Popup_Exception_Request ( uint16_t PopupID );
static struct PopupList *Popup_Select ( uint16_t PopupID );
static void Popup_Delete_Request ( uint16_t PopupID );
......@@ -116,6 +120,8 @@ void Popup_Scheduler_OFF ( void )
HintListHead = PopupList_Destroy ( HintListHead );
/*3、删除全部报警类信息*/
WarningListHead = PopupList_Destroy ( WarningListHead );
WarningListHead1 = PopupList_Destroy ( WarningListHead1 );
WarningListHead2 = PopupList_Destroy ( WarningListHead2 );
/*4、删除全部特殊类信息*/
ExceptionListHead = PopupList_Destroy ( ExceptionListHead );
......@@ -309,6 +315,13 @@ void Popup_Request ( uint16_t PopupID )
Popup_Exception_Request ( PopupID );
break;
case POPUP_TYPE_WARNING1:
Popup_Warning_Request1 ( PopupID );
break;
case POPUP_TYPE_WARNING2:
Popup_Warning_Request2 ( PopupID );
break;
default:
break;
}
......@@ -828,11 +841,21 @@ static struct PopupList *Popup_Polling_Next ( struct PopupList *CurPopup )
{
if (PopupAttributeTable[NextPopup->PopupID].Priority == PopupAttributeTable[CurPopup->PopupID].Priority)
break;
else
else if (PopupAttributeTable[NextPopup->PopupID].Type == POPUP_TYPE_WARNING)
{
NextPopup = WarningListHead;
return NextPopup;
}
else if (PopupAttributeTable[NextPopup->PopupID].Type == POPUP_TYPE_WARNING1)
{
NextPopup = WarningListHead1;
return NextPopup;
}
else if (PopupAttributeTable[NextPopup->PopupID].Type == POPUP_TYPE_WARNING2)
{
NextPopup = WarningListHead2;
return NextPopup;
}
}
}
NextPopup = NextPopup->next;
......@@ -890,6 +913,50 @@ static struct PopupList *Popup_Polling_Next ( struct PopupList *CurPopup )
}
}
if ( ( WarningListHead1 != POPUPLIB_NULL ) && ( NextPopup == POPUPLIB_NULL ) )
{
#if POPUP_CUT_RECOVER
if ( s_PopupScheduling.PollPopupID < POPUP_MAX )
{
NextPopup = PopupList_Select ( WarningListHead1, &s_PopupScheduling.PollPopupID );
s_PopupScheduling.PollPopupID = POPUP_NONE;
}
#endif
if ( NextPopup == POPUPLIB_NULL )
{
NextPopup = WarningListHead1;
while ( NextPopup != POPUPLIB_NULL )
{
if ( ( NextPopup->Status == POPUP_STATUS_FIRST ) || ( NextPopup->Status == POPUP_STATUS_LOOP ) )
{
break;
}
NextPopup = NextPopup->next;
}
}
}
if ( ( WarningListHead2 != POPUPLIB_NULL ) && ( NextPopup == POPUPLIB_NULL ) )
{
#if POPUP_CUT_RECOVER
if ( s_PopupScheduling.PollPopupID < POPUP_MAX )
{
NextPopup = PopupList_Select ( WarningListHead2, &s_PopupScheduling.PollPopupID );
s_PopupScheduling.PollPopupID = POPUP_NONE;
}
#endif
if ( NextPopup == POPUPLIB_NULL )
{
NextPopup = WarningListHead2;
while ( NextPopup != POPUPLIB_NULL )
{
if ( ( NextPopup->Status == POPUP_STATUS_FIRST ) || ( NextPopup->Status == POPUP_STATUS_LOOP ) )
{
break;
}
NextPopup = NextPopup->next;
}
}
}
if ( ( ExceptionListHead != POPUPLIB_NULL ) && ( NextPopup == POPUPLIB_NULL ) )
{
NextPopup = HintListHead;
......@@ -1059,6 +1126,112 @@ static void Popup_Warning_Request ( uint16_t PopupID )
return;
}
static void Popup_Warning_Request1 ( uint16_t PopupID )
{
struct PopupList *p1 = POPUPLIB_NULL;
p1 = PopupList_Select ( WarningListHead1, &PopupID );
if ( p1 == POPUPLIB_NULL )
{
/*普通报警可以打断提示类信息,且未显示的提示类信息,不再进行显示,等同于特殊报警*/
#if POPUP_WARNING_CUT_HINT_MIN
p1 = HintListHead;
while ( p1 != POPUPLIB_NULL )
{
if ( p1->Status != POPUP_STATUS_OFF )
{
p1->Status = POPUP_STATUS_OFF;
}
p1 = p1->next;
}
#endif
p1 = PopupList_Malloc();
if ( p1 != POPUPLIB_NULL )
{
p1->PopupID = PopupID;
p1->Status = POPUP_STATUS_FIRST;
p1->next = POPUPLIB_NULL;
WarningListHead1 = PopupList_Insert ( WarningListHead1, p1 );
/*如果存在特殊报警,不更新新信息*/
if (( FatalListHead == POPUPLIB_NULL ) && (WarningListHead == POPUPLIB_NULL))
{
#if POPUP_WARNING_CUT_HINT_MIN
/*如果存在提示类信息,等待最小时间后,打断*/
if ( PopupAttributeTable[s_PopupScheduling.CurPopupID].Type == POPUP_TYPE_HINT )
{
s_PopupScheduling.NewPopupID = PopupID;
s_PopupScheduling.CutGrade = POPUP_CUT_WAIT_TIME_MIN;
}
else
{
Popup_Cal_CutGrade ( PopupID );
}
#else
Popup_Cal_CutGrade ( PopupID );
#endif
}
}
}
return;
}
static void Popup_Warning_Request2 ( uint16_t PopupID )
{
struct PopupList *p1 = POPUPLIB_NULL;
p1 = PopupList_Select ( WarningListHead2, &PopupID );
if ( p1 == POPUPLIB_NULL )
{
/*普通报警可以打断提示类信息,且未显示的提示类信息,不再进行显示,等同于特殊报警*/
#if POPUP_WARNING_CUT_HINT_MIN
p1 = HintListHead;
while ( p1 != POPUPLIB_NULL )
{
if ( p1->Status != POPUP_STATUS_OFF )
{
p1->Status = POPUP_STATUS_OFF;
}
p1 = p1->next;
}
#endif
p1 = PopupList_Malloc();
if ( p1 != POPUPLIB_NULL )
{
p1->PopupID = PopupID;
p1->Status = POPUP_STATUS_FIRST;
p1->next = POPUPLIB_NULL;
WarningListHead2 = PopupList_Insert ( WarningListHead2, p1 );
/*如果存在特殊报警,不更新新信息*/
if (( FatalListHead == POPUPLIB_NULL ) && (WarningListHead == POPUPLIB_NULL) && (WarningListHead1 == POPUPLIB_NULL))
{
#if POPUP_WARNING_CUT_HINT_MIN
/*如果存在提示类信息,等待最小时间后,打断*/
if ( PopupAttributeTable[s_PopupScheduling.CurPopupID].Type == POPUP_TYPE_HINT )
{
s_PopupScheduling.NewPopupID = PopupID;
s_PopupScheduling.CutGrade = POPUP_CUT_WAIT_TIME_MIN;
}
else
{
Popup_Cal_CutGrade ( PopupID );
}
#else
Popup_Cal_CutGrade ( PopupID );
#endif
}
}
}
return;
}
/**********************************************************************************************************
*@Function: Popup_Exception_Request
*@Description: 插入第四类信息,并确定其切换等级
......@@ -1126,6 +1299,14 @@ static struct PopupList *Popup_Select ( uint16_t PopupID )
{
head = ExceptionListHead;
}
else if ( PopupAttributeTable[PopupID].Type == POPUP_TYPE_WARNING1 )
{
head = WarningListHead1;
}
else if ( PopupAttributeTable[PopupID].Type == POPUP_TYPE_WARNING2 )
{
head = WarningListHead2;
}
else
{
......@@ -1169,6 +1350,14 @@ static void Popup_Delete_Request ( uint16_t PopupID )
{
ExceptionListHead = PopupList_Delete ( ExceptionListHead, PopupID );
}
else if ( PopupAttributeTable[PopupID].Type == POPUP_TYPE_WARNING1 )
{
WarningListHead1 = PopupList_Delete ( WarningListHead1, PopupID );
}
else if ( PopupAttributeTable[PopupID].Type == POPUP_TYPE_WARNING2 )
{
WarningListHead2 = PopupList_Delete ( WarningListHead2, PopupID );
}
else
{
......
......@@ -1505,31 +1505,6 @@ void Popup_Alone_Sound_Server(void)
{
Sound_Delete(SND_Fuel_Saving);
}
/*音源测试程序*/
//if (Sound_test & 0x001) Sound_Request ( SND_Key_Notremoved, 1 ); else Sound_Delete( SND_Key_Notremoved );
//if (Sound_test & 0x002) Sound_Request ( SND_Braking, 1 ); else Sound_Delete( SND_Braking );
//if (Sound_test & 0x004) Sound_Request ( SND_Air_Brake, 1 ); else Sound_Delete( SND_Air_Brake );
//if (Sound_test & 0x008) Sound_Request ( SND_BRAKE_LOCK, 1 ); else Sound_Delete( SND_BRAKE_LOCK );
//if (Sound_test & 0x010) Sound_Request ( SND_Parking_Brake, 1 ); else Sound_Delete( SND_Parking_Brake );
//if (Sound_test & 0x020) Sound_Request ( SND_Car_Dump_SPEED, 1 ); else Sound_Delete( SND_Car_Dump_SPEED );
//if (Sound_test & 0x040) Sound_Request ( SND_Temp_High, 1 ); else Sound_Delete( SND_Temp_High );
//if (Sound_test & 0x080) Sound_Request ( SND_Coolant_Low, 1 ); else Sound_Delete( SND_Coolant_Low );
//if (Sound_test & 0x100) Sound_Request ( SND_Oil_pressure_Low, 1 ); else Sound_Delete( SND_Oil_pressure_Low );
//if (Sound_test & 0x200) Sound_Request ( SND_ACC_AIR, 1 ); else Sound_Delete( SND_ACC_AIR );
//if (Sound_test & 0x400) Sound_Request ( SND_BackUP_SPEED, 1 ); else Sound_Delete( SND_BackUP_SPEED );
//if (Sound_test & 0x800) Sound_Request ( SND_DS_SPEED, 1 ); else Sound_Delete( SND_DS_SPEED );
//if (CD4051_COM7_X0_IN == 0u) Sound_Request ( SND_Key_Notremoved, 1 ); else Sound_Delete( SND_Key_Notremoved );/*B15 = 0*/
//if (CD4051_COM7_X1_IN == 1u) Sound_Request ( SND_Braking, 1 ); else Sound_Delete( SND_Braking );/*B16 = 1*/
//if (CD4051_COM7_X2_IN == 1u) Sound_Request ( SND_Air_Brake, 1 ); else Sound_Delete( SND_Air_Brake );/*B17 = 1*/
//if (CD4051_COM7_X3_IN == 1u) Sound_Request ( SND_BRAKE_LOCK, 1 ); else Sound_Delete( SND_BRAKE_LOCK );/*B14 = 1*/
//if (CD4051_COM7_X4_IN == 1u) Sound_Request ( SND_Parking_Brake, 1 ); else Sound_Delete( SND_Parking_Brake );/*B10 = 1*/
//if (CD4051_COM7_X5_IN == 1u) Sound_Request ( SND_Car_Dump_SPEED, 1 ); else Sound_Delete( SND_Car_Dump_SPEED );/*B13 = 1*/
//if (CD4051_COM7_X6_IN == 1u) Sound_Request ( SND_Temp_High, 1 ); else Sound_Delete( SND_Temp_High );/*B11 = 1*/
//if (CD4051_COM7_X7_IN == 1u) Sound_Request ( SND_Coolant_Low, 1 ); else Sound_Delete( SND_Coolant_Low );/*B12 = 1*/
//if (CD4051_COM6_X5_IN == 1u) Sound_Request ( SND_Oil_pressure_Low, 1 ); else Sound_Delete( SND_Oil_pressure_Low );/*B04 = 1*/
//if (CD4051_COM6_X6_IN == 1u) Sound_Request ( SND_ACC_AIR, 1 ); else Sound_Delete( SND_ACC_AIR );/*B02 = 1*/
//if (CD4051_COM6_X7_IN == 0u) Sound_Request ( SND_BackUP_SPEED, 1 ); else Sound_Delete( SND_BackUP_SPEED );/*B03 = 0*/
}
else /*IG-OFF*/
{
......
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