#include "Popup_Alarm.h"
#include "Popup_Alarm_user.h"
#include "Sound_Alarm_User.h"
#include "Sound_Alarm_handle.h"

#pragma alignvar(8)
const Popup_Alarm_Group_Attribute_st_t stPopAlarmGroupAttribute [ POP_GROUP_MAX ] = {
    {POPUP_DISPLAY_CYCLY, POP_DELAY_MIN, POP_RECOVER_CYCLE},
};
#pragma alignvar(8)
const Popup_Alarm_Type_Attribute_st_t stPopAlarmTypeAttribute [ POP_TYPE_MAX ] = {
    {POPUP_DISPLAY_CYCLY, POPUP_DISPLAY_FIX, POP_DELAY_MIN, POP_RECOVER_CYCLE, POP_SORTORD_FIRST, 10, 30, 30, 0, POP_ALLOW_HIDE_FIRST_CYCLE},
    {POPUP_DISPLAY_CYCLY, POPUP_DISPLAY_FIX, POP_DELAY_MIN, POP_RECOVER_CYCLE, POP_SORTORD_FIRST, 10, 30, 0, 0, POP_ALLOW_HIDE_FIRST_CYCLE},
};

#pragma alignvar(8)
const Popup_Alarm_Attribute_st_t stPopAlarmAttribute [ POP_ALARM_MAX ] = {
    /*POP_ALARM_DPF = 0U,				  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_DPF, POP_ALARM_DPF + POP_ALARM_MAX, SOUND_ALARM_DPF},
    /*POP_ALARM_DOOR,					  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_DOOR, POP_ALARM_DOOR + POP_ALARM_MAX, 0xFFU},
    /*POP_ALARM_TEMP,					  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_TEMP, POP_ALARM_TEMP + POP_ALARM_MAX, 0xFFU},
    /*POP_ALARM_ENGINE_LUBRICATE,		  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_ENGINE_LUBRICATE, POP_ALARM_ENGINE_LUBRICATE + POP_ALARM_MAX, 0xFFU},
    /*POP_ALARM_FUEL_SEN_FAIL,		      */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_FUEL_SEN_FAIL, POP_ALARM_FUEL_SEN_FAIL + POP_ALARM_MAX, SOUND_ALARM_FUEL_SEN_FAIL},
    /* POP_ALARM_TBOX_DISMANTLE 		  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_TBOX_DISMANTLE, POP_ALARM_TBOX_DISMANTLE + POP_ALARM_MAX, SOUND_ALARM_TBOX},
    /*POP_ALARM_PAR_FULL_MANUAL_RESET,    */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_PAR_FULL_MANUAL_RESET, POP_ALARM_PAR_FULL_MANUAL_RESET + POP_ALARM_MAX, SOUND_ALARM_PAR_FULL_MANUAL_RESET},
    /*POP_ALARM_PAR_FULL_SERVICE_RESET,   */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_PAR_FULL_SERVICE_RESET, POP_ALARM_PAR_FULL_SERVICE_RESET + POP_ALARM_MAX, SOUND_ALARM_PAR_FULL_MANUAL_RESET},
    /*POP_ALARM_UREA_LOW_20,			  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_UREA_LOW_20, POP_ALARM_UREA_LOW_20 + POP_ALARM_MAX, SOUND_ALARM_UREA},
    /*POP_ALARM_UREA_FAIL_20,			  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_UREA_FAIL_20, POP_ALARM_UREA_FAIL_20 + POP_ALARM_MAX, SOUND_ALARM_UREA},
    /*POP_ALARM_EMISSION_FAIL_20,		  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_EMISSION_FAIL_20, POP_ALARM_EMISSION_FAIL_20 + POP_ALARM_MAX, SOUND_ALARM_UREA},
    /*POP_ALARM_UREA_LOW_RESET_20,	      */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_UREA_LOW_RESET_20, POP_ALARM_UREA_LOW_RESET_20 + POP_ALARM_MAX, SOUND_ALARM_UREA},
    /*POP_ALARM_UREA_FAIL_RESET_20,	      */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_UREA_FAIL_RESET_20, POP_ALARM_UREA_FAIL_RESET_20 + POP_ALARM_MAX, SOUND_ALARM_UREA},
    /*POP_ALARM_EMISSION_FAIL_RESET_20,   */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_EMISSION_FAIL_RESET_20, POP_ALARM_EMISSION_FAIL_RESET_20 + POP_ALARM_MAX, SOUND_ALARM_UREA},
    /*POP_ALARM_UREA_LOW_TORQUE_LIMIT_75, */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_UREA_LOW_TORQUE_LIMIT_75, POP_ALARM_UREA_LOW_TORQUE_LIMIT_75 + POP_ALARM_MAX, SOUND_ALARM_UREA},
    /*POP_ALARM_UREA_LOW_TORQUE_LIMIT_50, */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_UREA_LOW_TORQUE_LIMIT_50, POP_ALARM_UREA_LOW_TORQUE_LIMIT_50 + POP_ALARM_MAX, 0xFFU},
    /*POP_ALARM_LIMIT_75_CHANGE,		  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_LIMIT_75_CHANGE, POP_ALARM_LIMIT_75_CHANGE + POP_ALARM_MAX, SOUND_ALARM_UREA},
    /*POP_ALARM_LIMIT_75_SERVICE,		  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_LIMIT_75_SERVICE, POP_ALARM_LIMIT_75_SERVICE + POP_ALARM_MAX, SOUND_ALARM_UREA},
    /*POP_ALARM_UREA_LOW_LIMIT_75,	  	  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_UREA_LOW_LIMIT_75, POP_ALARM_UREA_LOW_LIMIT_75 + POP_ALARM_MAX, SOUND_ALARM_UREA},
    /*POP_ALARM_UREA_FAIL_LIMIT_75,	  	  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_UREA_FAIL_LIMIT_75, POP_ALARM_UREA_FAIL_LIMIT_75 + POP_ALARM_MAX, SOUND_ALARM_UREA},
    /*POP_ALARM_EMISSION_FAIL_LIMIT_75,   */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_EMISSION_FAIL_LIMIT_75, POP_ALARM_EMISSION_FAIL_LIMIT_75 + POP_ALARM_MAX, SOUND_ALARM_UREA},
    /*POP_ALARM_UREA_LOW_ADD,			  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_UREA_LOW_ADD, POP_ALARM_UREA_LOW_ADD + POP_ALARM_MAX, SOUND_ALARM_UREA},
    /*POP_ALARM_UREA_FAIL_CHANGE,		  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_UREA_FAIL_CHANGE, POP_ALARM_UREA_FAIL_CHANGE + POP_ALARM_MAX, SOUND_ALARM_UREA},
    /*POP_ALARM_EMISSION_FAIL_SERVICE,    */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_EMISSION_FAIL_SERVICE, POP_ALARM_EMISSION_FAIL_SERVICE + POP_ALARM_MAX, SOUND_ALARM_UREA},
    /* POP_ALARM_ESC_FAILURE 			  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_ESC_FAILURE, POP_ALARM_ESC_FAILURE + POP_ALARM_MAX, SOUND_ALARM_ESC_FAILURE},
    /* POP_ALARM_ESC_ATCIVE 			  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_ESC_ATCIVE, POP_ALARM_ESC_ATCIVE + POP_ALARM_MAX, SOUND_ALARM_ESC_ATCIVE},
    /* POP_ALARM_ESC_CLOSE 				  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_ESC_CLOSE, POP_ALARM_ESC_CLOSE + POP_ALARM_MAX, SOUND_ALARM_ESC_CLOSE},
    /*POP_ALARM_TPMS_CONFIG_ERROR,	      */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_TPMS_CONFIG_ERROR, POP_ALARM_TPMS_CONFIG_ERROR + POP_ALARM_MAX, SOUND_ALARM_TPMS_CONFIG_ERROR},
    /*POP_ALARM_TPMS,					  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_TPMS, POP_ALARM_TPMS + POP_ALARM_MAX, SOUND_ALARM_TPMS},
    /*POP_ALARM_TSAFE_BELT,				  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_TSAFE_BELT, POP_ALARM_TSAFE_BELT + POP_ALARM_MAX, 0xFFU},
    /* POP_ALARM_START_IN_P 			  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_START_IN_P, POP_ALARM_START_IN_P + POP_ALARM_MAX, SOUND_ALARM_START_IN_P_ONCE},
    /* POP_ALARM_BRAKE_TO_SHIFT		      */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_BRAKE_TO_SHIFT, POP_ALARM_BRAKE_TO_SHIFT + POP_ALARM_MAX, SOUND_ALARM_BRAKE_TO_SHIFT},
    /* POP_ALARM_P_INVALID 				  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_P_INVALID, POP_ALARM_P_INVALID + POP_ALARM_MAX, 0xFFU},
    /* POP_ALARM_PARK_IN_P 				  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_PARK_IN_P, POP_ALARM_PARK_IN_P + POP_ALARM_MAX, 0xFFU},
    /* POP_ALARM_GEARBOX_FAILURE 		  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_GEARBOX_FAILURE, POP_ALARM_GEARBOX_FAILURE + POP_ALARM_MAX, 0xFFU},
    /* POP_ALARM_RADAR_FAILURE 			  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_RADAR_FAILURE, POP_ALARM_RADAR_FAILURE + POP_ALARM_MAX, 0xFFU},
    /* POP_ALARM_GEARBOX_CAUTION 		  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_GEARBOX_CAUTION, POP_ALARM_GEARBOX_CAUTION + POP_ALARM_MAX, SOUND_ALARM_GEARBOX_CAUTION},
    /* POP_ALARM_GEARBOX_HIGH_TEMP 		  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_GEARBOX_HIGH_TEMP, POP_ALARM_GEARBOX_HIGH_TEMP + POP_ALARM_MAX, 0xFFU},
    /* POP_ALARM_LDWS_CLOSE 	 		  */ {POP_GROUP_0, POP_TYPE_1, POP_ALARM_LDWS_CLOSE,   POP_ALARM_LDWS_CLOSE + POP_ALARM_MAX, 0xFFU},
    /* POP_ALARM_LDWS_FAILURE	 		  */ {POP_GROUP_0, POP_TYPE_1, POP_ALARM_LDWS_FAILURE, POP_ALARM_LDWS_FAILURE + POP_ALARM_MAX, 0xFFU},
    /* POP_ALARM_LDWS_ATCIVE	 		  */ {POP_GROUP_0, POP_TYPE_1, POP_ALARM_LDWS_ATCIVE,  POP_ALARM_LDWS_ATCIVE + POP_ALARM_MAX, 0xFFU},
    /* POP_ALARM_LDWS_L		 		      */ {POP_GROUP_0, POP_TYPE_1, POP_ALARM_LDWS_L,     POP_ALARM_LDWS_L + POP_ALARM_MAX, SOUND_ALARM_LDWS},
    /* POP_ALARM_LDWS_R		 		      */ {POP_GROUP_0, POP_TYPE_1, POP_ALARM_LDWS_R,     POP_ALARM_LDWS_R + POP_ALARM_MAX, SOUND_ALARM_LDWS},
    /* POP_ALARM_HILL_HOLD_MALF 	      */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_HILL_HOLD_MALF, POP_ALARM_HILL_HOLD_MALF + POP_ALARM_MAX, SOUND_ALARM_HILL_HOLD_MALF},
    /* POP_ALARM_POSITION_LIGHT 		  */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_POSITION_LIGHT, POP_ALARM_POSITION_LIGHT + POP_ALARM_MAX, 0xFFU},
    /* POP_ALARM_KEY 				      */ {POP_GROUP_0, POP_TYPE_0, POP_ALARM_KEY, POP_ALARM_KEY + POP_ALARM_MAX, 0xFFU},
};
void Pop_Sound_Alarm_Request(Pop_Alarm_en_t enPopAlarm, Pop_Alarm_Trigger_Condition_en_t enAlarmTrigger)
{
    if ( Sound_Get_Diag_Ctrl( ) > 0x0B )
    {
        Sound_Alarm_Request_Mul(enPopAlarm, enAlarmTrigger);
    }
}
void Pop_Sound_Alarm_Delete(Pop_Alarm_en_t enPopAlarm, Pop_Alarm_Trigger_Condition_en_t enAlarmTrigger)
{
    /*删除由声音触发部分执行*/
    // Sound_Alarm_Delete_Mul(enPopAlarm, enAlarmTrigger);
}
void Pop_Sound_Alarm_Enable(Pop_Alarm_en_t enPopAlarm)
{
}
void Pop_Sound_Alarm_Suspend(Pop_Alarm_en_t enPopAlarm)
{
}
const Pop_Init_st_t stPopInit = {
    stPopAlarmAttribute,
    stPopAlarmTypeAttribute,
    stPopAlarmGroupAttribute,
    POP_GROUP_MAX,
    POP_TYPE_MAX,
    POP_ALARM_MAX,
    POP_HIDE_QUEUE_MAX,
    Pop_Sound_Alarm_Request,
    0U,    // Pop_Sound_Alarm_Delete,
    0U,    // Pop_Sound_Alarm_Enable,
    0U,    // Pop_Sound_Alarm_Suspend,
};
#pragma alignvar(8)
Pop_uint8_t u8PopRAM [ POP_RAM_DATA_LEN ];
void        Pop_Alarm_Init_Example(void)
{
    Pop_Alarm_Init(u8PopRAM, &stPopInit);
}