#include "g_includes.h" #include "Key.h" #include "Key_user.h" #include "Menu.h" #define Back_Menu_Time 1000 _Page_Infor PageInfor; void Menu_Service(Menu_Key_en_t enMenuKey); void Key_Operation_Left(Key_Event_en_t enKeyEvent) { switch (enKeyEvent) { case KEY_EVENT_SHORT_PRESS_1: if(Pop_Alarm_Get_Current() < POP_ALARM_MAX)//有报警时 { ;//不传按键动作 } else { Menu_Service(MENU_KEY_LEFT_SHORT);//无报警时,传按键动作 } Pop_Alarm_Hide_Current(); break; case KEY_EVENT_SHORT_PRESS_2: break; case KEY_EVENT_LONG_PRESS_1: //2 break; case KEY_EVENT_LONG_PRESS_2: //3 break; case KEY_EVENT_LONG_PRESS_3: //4s break; case KEY_EVENT_LONG_PRESS_4: //10s if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_ECU_RANGE) { if(Get_CAN_CH0_ID_10FF1021_Sig_HighBeamSts() == 1) { if(Get_CAN_CH0_ID_10FF1021_Sig_RearFogLightSts() == 1) { if(Get_CAN_CH0_ID_10FF1021_Sig_FrontFogLightSts() == 1) { Data_Clear_TYW(); } } } } break; case KEY_EVENT_OFF_TO_ON: break; case KEY_EVENT_ON_TO_OFF: break; case KEY_EVENT_NONE: KEY_LEFT_EVENT_NONE_Service(); break; default: break; } } void Key_Operation_Right(Key_Event_en_t enKeyEvent) { switch (enKeyEvent) { case KEY_EVENT_SHORT_PRESS_1: if(Pop_Alarm_Get_Current() < POP_ALARM_MAX) { ; } else { Menu_Service(MENU_KEY_RIGHT_SHORT); } Pop_Alarm_Hide_Current(); break; case KEY_EVENT_SHORT_PRESS_2: break; case KEY_EVENT_LONG_PRESS_1: //2s if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_ECU_TRIP) { Data_Clear_Trip(); Data_Clear_Ins_fuel(); Data_Clear_Avg_fuel(); Data_Avg_Speed_Reset(); //Data_Clear_Range(); } break; case KEY_EVENT_LONG_PRESS_2: //3s if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_ECU_MAINTAIN) { Maint_Reset(1); } break; case KEY_EVENT_LONG_PRESS_3: //4s if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_ECU_TRIP) { Data_Clear_Odo(); } break; case KEY_EVENT_LONG_PRESS_4: //10s Data_Clear_TYW(); break; case KEY_EVENT_OFF_TO_ON: break; case KEY_EVENT_ON_TO_OFF: break; case KEY_EVENT_NONE: KEY_RIGHT_EVENT_NONE_Service(); break; default: break; } } //void Key_Operation_FLIP(Key_Event_en_t enKeyEvent) //{ //} //void Key_Operation_ADJUST(Key_Event_en_t enKeyEvent) //{ //} /*---------------------------------------------------------------------------------------*/ Key_Status_en_t Key_Status_Read_Left(void) { Key_Status_en_t enKeyReal = KEY_REALTIME_LOOSEN; if (KEY0_MCU_IN) { enKeyReal = KEY_REALTIME_LOOSEN; } else { enKeyReal = KEY_REALTIME_PRESS; } return enKeyReal; } Key_Status_en_t Key_Status_Read_Right(void) { Key_Status_en_t enKeyReal = KEY_REALTIME_LOOSEN; if (KEY1_MCU_IN) { enKeyReal = KEY_REALTIME_LOOSEN; } else { enKeyReal = KEY_REALTIME_PRESS; } return enKeyReal; } /*Key_Status_en_t Key_Status_Read_FLIP(void) { Key_Status_en_t enKeyReal = KEY_REALTIME_LOOSEN; //if (0) //{ // enKeyReal = KEY_REALTIME_LOOSEN; //} //else //{ // enKeyReal = KEY_REALTIME_PRESS; //} return enKeyReal; } Key_Status_en_t Key_Status_Read_ADJUST(void) { Key_Status_en_t enKeyReal = KEY_REALTIME_LOOSEN; //if (0) //{ // enKeyReal = KEY_REALTIME_LOOSEN; //} //else //{ // enKeyReal = KEY_REALTIME_PRESS; //} return enKeyReal; }*/ /*---------------------------------------------------------------------------------------*/ const Key_Attribute_st_t stKeyAttribute[KEY_NUM_MAX] = { {KEY_NEED_DEBOUNCE_NORMAL, Key_Status_Read_Left, Key_Operation_Left}, {KEY_NEED_DEBOUNCE_NORMAL, Key_Status_Read_Right, Key_Operation_Right}, //{KEY_NEED_DEBOUNCE_NORMAL, Key_Status_Read_FLIP, Key_Operation_FLIP}, //{KEY_NEED_DEBOUNCE_NORMAL, Key_Status_Read_ADJUST, Key_Operation_ADJUST}, }; /*---------------------------------------------------------------------------------------*/ //#pragma ghs section bss = ".myNonInitArea" Key_uint8_t u8KeyRamData[KEY_RAM_DATA_LEN]; //#pragma ghs section bss = default void Key_KL30_Init_EXample(void) { Key_Init_st_t stKeyInitTem; Key_uint16_t i; for (i = 0; i < KEY_RAM_DATA_LEN; i++) { u8KeyRamData[i] = 0; } stKeyInitTem.u8KeyNum = KEY_NUM_MAX; stKeyInitTem.enKeyIGNRealStatus = KEY_IG_OFF; Key_KL30_Init(&u8KeyRamData[0], stKeyAttribute, &stKeyInitTem); Key_Parameter_Set_Short_Press_1_Time(50U,500U); Key_Parameter_Set_Short_Press_2_Time(1000U,2000U); Key_Parameter_Set_Long_Press_1_Time(2000U); Key_Parameter_Set_Long_Press_2_Time(3000U); Key_Parameter_Set_Long_Press_3_Time(4000U); Key_Parameter_Set_Long_Press_4_Time(10000U); } void Key_Wakeup_Init_EXample(void) { Key_Init_st_t stKeyInitTem; stKeyInitTem.u8KeyNum = KEY_NUM_MAX; stKeyInitTem.enKeyIGNRealStatus = KEY_IG_OFF; // Key_Wakeup_Init(&u8KeyRamData[0], stKeyAttribute, &stKeyInitTem); Key_Parameter_Set_Short_Press_1_Time(50U,500U); Key_Parameter_Set_Short_Press_2_Time(1000U,2000U); Key_Parameter_Set_Long_Press_1_Time(2000U); Key_Parameter_Set_Long_Press_2_Time(3000U); Key_Parameter_Set_Long_Press_3_Time(4000U); Key_Parameter_Set_Long_Press_4_Time(10000U); } void KEY_LEFT_EVENT_NONE_Service(void) { PageInfor.Back_Time_Left++; if(PageInfor.Back_Time_Left > Back_Menu_Time) { PageInfor.Back_Time_Left = 0; PageInfor.Back_Time_Left_Flag = 1; } if((PageInfor.Back_Time_Left_Flag == 1)&&(PageInfor.Back_Time_Right_Flag == 1)) { Menu_Service(MENU_KEY_TIMEOUT); PageInfor.Back_Time_Left_Flag = 0; PageInfor.Back_Time_Right_Flag = 0; } } void KEY_RIGHT_EVENT_NONE_Service(void) { PageInfor.Back_Time_Right++; if(PageInfor.Back_Time_Right > Back_Menu_Time) { PageInfor.Back_Time_Right = 0; PageInfor.Back_Time_Right_Flag = 1; } if((PageInfor.Back_Time_Left_Flag == 1)&&(PageInfor.Back_Time_Right_Flag == 1)) { Menu_Service(MENU_KEY_TIMEOUT); PageInfor.Back_Time_Left_Flag = 0; PageInfor.Back_Time_Right_Flag = 0; } } void Key_Clear_Time(void) { if(Key_Status_Read_Left() == KEY_REALTIME_PRESS) { PageInfor.Back_Time_Left = 0; PageInfor.Back_Time_Left_Flag = 0; PageInfor.Back_Time_Right_Flag = 0; } if(Key_Status_Read_Right() == KEY_REALTIME_PRESS) { PageInfor.Back_Time_Right = 0; PageInfor.Back_Time_Left_Flag = 0; PageInfor.Back_Time_Right_Flag = 0; } }