Commit 194cb60d authored by hu's avatar hu

按键移植完成,好使。

parent 367b6d72
...@@ -98,8 +98,9 @@ ...@@ -98,8 +98,9 @@
.\APP\GaugesMode\GaugesInterface.c .\APP\GaugesMode\GaugesInterface.c
.\APP\GaugesMode\GaugesInterface.h .\APP\GaugesMode\GaugesInterface.h
.\APP\Key\Key.h .\APP\Key\Key.h
.\APP\Key\Key.c
.\APP\Key\Key_user.c .\APP\Key\Key_user.c
.\APP\Key\Key_user.h
.\APP\Key\Key_V1.3_1441.a
.\APP\LINE_IN\Line_In.c .\APP\LINE_IN\Line_In.c
.\APP\LINE_IN\Line_In.h .\APP\LINE_IN\Line_In.h
.\APP\LINE_IN\Line_In_user.h .\APP\LINE_IN\Line_In_user.h
......
#include "Key.h"
/*------------------------------------------------------------------------------------------*/
/*---------------------------------------------------------------------*/
/*-----按键服务函数调用周期。单位ms--------*/
#define KEY_CALL_CYCLE 10U
/*-----------------------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------------------*/
typedef struct
{
uint16_t u16KeyShortPressTime; /*¶Ì°´¼ì²âʱ¼ä*/
uint16_t u16KeyLongPressTime; /*³¤°´¼ì²âʱ¼ä*/
uint16_t u16KeySuperLongPressTime; /*³¬³¤°´¼ì²âʱ¼ä*/
uint16_t u16KeyLoosenTime; /*ËÉ¿ª¼ì²âʱ¼ä*/
uint16_t u16KeyValidOFFTime; /*ÓÐЧOFF¼ì²âʱ¼ä*/
uint16_t u16KeyValidONTime; /*ÓÐЧON¼ì²âʱ¼ä*/
} Key_Parameter_st_t;
typedef struct
{
Key_Real_Status_en_t enKeyTypeLast;
uint16_t u16KeyInvalidTimeCount;
uint16_t u16KeyValidTimeCount;
uint16_t u16KeyFirstIGNTimeRecord;
Key_IGN_en_t enKeyIGNFirstStatus;
Key_IGN_en_t enKeyIGNStatusLast;
uint8_t u8KeyIGNChangeFlag;
uint16_t u16KeyIGNTimeCount;
} Key_Ctr_st_t;
/*------------------------------------------------------------------------------------------*/
#pragma ghs section bss = ".myNonInitArea"
static Key_Parameter_st_t stKeyParameter;
#pragma ghs section bss = default
static Key_Ctr_st_t stKeyCtrVariate[KEY_NUM_MAX];
// static Key_IGN_en_t enKeyIGNFirstStatus = KEY_IG_INVALID;
// static Key_IGN_en_t enKeyIGNStatusLast = KEY_IG_INVALID;
// static uint8_t u8KeyIGNChangeFlag = 0U;
// static uint16_t u16KeyIGNTimeCount;
/*-----------------------------------------------------------------------------------------*/
static void Key_Process(Key_Num_en_t enKeyIndex);
void Key_Service(void);
void Key_Init(void);
Key_Set_en_t Key_Parameter_Set_Short_Press_Time(uint16_t u16Time);
Key_Set_en_t Key_Parameter_Set_Long_Press_Time(uint16_t u16Time);
Key_Set_en_t Key_Parameter_Set_Super_Long_Press_Time(uint16_t u16Time);
Key_Set_en_t Key_Parameter_Set_OFF_Press_Time(uint16_t u16Time);
Key_Set_en_t Key_Parameter_Set_ON_Press_Time(uint16_t u16Time);
/*-----------------------------------------------------*/
static void Key_Process(Key_Num_en_t enKeyIndex)
{
if (enKeyIndex < KEY_NUM_MAX)
{
/*Key_Real_Status_en_t enKeyRealType = (*stKeyAttribute[enKeyIndex].penKeyRealStatus);*/
Key_Real_Status_en_t enKeyRealType = KEY_CAN_NONE;
Key_IGN_en_t enKeyIGNRealStatus = Key_Get_IGN_Status();
if (stKeyAttribute[enKeyIndex].pfnKeyReadStatusCallBack != 0U)
{
enKeyRealType = stKeyAttribute[enKeyIndex].pfnKeyReadStatusCallBack();
}
/*CAN°´¼ü*/
if (stKeyAttribute[enKeyIndex].enKeyType == KEY_NO_DEBOUNCE_RISE)
{
if (enKeyRealType <= KEY_CAN_LONG_PRESS_NOT_RELEASE)
{
if (stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack != 0U)
{
if ((stKeyCtrVariate[enKeyIndex].enKeyTypeLast == KEY_CAN_NONE) &&
(enKeyRealType == KEY_CAN_SHORT_PRESS))
{
stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack(KEY_EVENT_SHORT_PRESS);
}
else if ((stKeyCtrVariate[enKeyIndex].enKeyTypeLast == KEY_CAN_NONE) &&
(enKeyRealType == KEY_CAN_LONG_PRESS))
{
stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack(KEY_EVENT_LONG_PRESS);
}
else if ((stKeyCtrVariate[enKeyIndex].enKeyTypeLast == KEY_CAN_NONE) &&
(enKeyRealType == KEY_CAN_LONG_PRESS_NOT_RELEASE))
{
stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack(KEY_EVENT_SUPER_LONG_PRESS);
}
else
{
stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack(KEY_EVENT_NONE);
}
}
stKeyCtrVariate[enKeyIndex].enKeyTypeLast = enKeyRealType;
}
else
{
stKeyCtrVariate[enKeyIndex].enKeyTypeLast = KEY_CAN_NONE;
}
}
else if (stKeyAttribute[enKeyIndex].enKeyType == KEY_NO_DEBOUNCE_FALL)
{
if (enKeyRealType <= KEY_CAN_LONG_PRESS_NOT_RELEASE)
{
if (stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack != 0U)
{
if ((stKeyCtrVariate[enKeyIndex].enKeyTypeLast == KEY_CAN_SHORT_PRESS) &&
(enKeyRealType == KEY_CAN_NONE))
{
stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack(KEY_EVENT_SHORT_PRESS);
}
else if ((stKeyCtrVariate[enKeyIndex].enKeyTypeLast == KEY_CAN_LONG_PRESS) &&
(enKeyRealType == KEY_CAN_NONE))
{
stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack(KEY_EVENT_LONG_PRESS);
}
else if ((stKeyCtrVariate[enKeyIndex].enKeyTypeLast == KEY_CAN_LONG_PRESS_NOT_RELEASE) &&
(enKeyRealType == KEY_CAN_NONE))
{
stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack(KEY_EVENT_SUPER_LONG_PRESS);
}
else
{
stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack(KEY_EVENT_NONE);
}
}
stKeyCtrVariate[enKeyIndex].enKeyTypeLast = enKeyRealType;
}
else
{
stKeyCtrVariate[enKeyIndex].enKeyTypeLast = KEY_CAN_NONE;
}
}
/*Ó²Ïß°´¼ü*/
else if (stKeyAttribute[enKeyIndex].enKeyType == KEY_NEED_DEBOUNCE_NORMAL)
{
if (enKeyRealType == KEY_LINE_LOOSEN) /*空闲*/
{
if (stKeyCtrVariate[enKeyIndex].u16KeyInvalidTimeCount <= stKeyParameter.u16KeyLoosenTime)
{
stKeyCtrVariate[enKeyIndex].u16KeyInvalidTimeCount += KEY_CALL_CYCLE;
}
else
{
stKeyCtrVariate[enKeyIndex].u16KeyValidTimeCount = 0U;
stKeyCtrVariate[enKeyIndex].enKeyTypeLast = KEY_LINE_LOOSEN;
stKeyCtrVariate[enKeyIndex].u16KeyFirstIGNTimeRecord = 0U;
stKeyCtrVariate[enKeyIndex].enKeyIGNFirstStatus = KEY_IG_INVALID;
stKeyCtrVariate[enKeyIndex].enKeyIGNStatusLast = KEY_IG_INVALID;
stKeyCtrVariate[enKeyIndex].u8KeyIGNChangeFlag = 0U;
stKeyCtrVariate[enKeyIndex].u16KeyIGNTimeCount = 0U;
}
if ((stKeyCtrVariate[enKeyIndex].u16KeyInvalidTimeCount >= stKeyParameter.u16KeyLoosenTime) &&
(stKeyCtrVariate[enKeyIndex].u16KeyValidTimeCount >= stKeyParameter.u16KeyShortPressTime) &&
(stKeyCtrVariate[enKeyIndex].u16KeyValidTimeCount < stKeyParameter.u16KeyLongPressTime))
{
stKeyCtrVariate[enKeyIndex].u16KeyValidTimeCount = 0U;
/* call back */
if (stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack != 0U)
{
stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack(KEY_EVENT_SHORT_PRESS);
}
}
}
else if (enKeyRealType == KEY_LINE_PRESS) /*按键按下*/
{
if (stKeyCtrVariate[enKeyIndex].enKeyTypeLast != enKeyRealType)
{
stKeyCtrVariate[enKeyIndex].u16KeyValidTimeCount = 0U;
stKeyCtrVariate[enKeyIndex].u16KeyFirstIGNTimeRecord = 0U;
stKeyCtrVariate[enKeyIndex].enKeyTypeLast = enKeyRealType;
stKeyCtrVariate[enKeyIndex].u16KeyIGNTimeCount = 0U;
stKeyCtrVariate[enKeyIndex].enKeyIGNFirstStatus = enKeyIGNRealStatus;
stKeyCtrVariate[enKeyIndex].enKeyIGNStatusLast = enKeyIGNRealStatus;
}
else
{
if (stKeyCtrVariate[enKeyIndex].enKeyIGNStatusLast != enKeyIGNRealStatus)
{
stKeyCtrVariate[enKeyIndex].enKeyIGNStatusLast = enKeyIGNRealStatus;
if (stKeyCtrVariate[enKeyIndex].enKeyIGNFirstStatus != enKeyIGNRealStatus)
{
stKeyCtrVariate[enKeyIndex].u16KeyFirstIGNTimeRecord = stKeyCtrVariate[enKeyIndex].u16KeyIGNTimeCount;
}
stKeyCtrVariate[enKeyIndex].u16KeyIGNTimeCount = 0U;
}
else
{
if (stKeyCtrVariate[enKeyIndex].u16KeyIGNTimeCount < 0xFFF0U)
{
stKeyCtrVariate[enKeyIndex].u16KeyIGNTimeCount += KEY_CALL_CYCLE;
}
}
if (stKeyCtrVariate[enKeyIndex].u16KeyValidTimeCount < 0xFFF0U)
{
stKeyCtrVariate[enKeyIndex].u16KeyValidTimeCount += KEY_CALL_CYCLE;
}
if (stKeyCtrVariate[enKeyIndex].enKeyIGNFirstStatus != enKeyIGNRealStatus)
{
stKeyCtrVariate[enKeyIndex].u8KeyIGNChangeFlag = 1U;
}
if (stKeyCtrVariate[enKeyIndex].u16KeyValidTimeCount >= stKeyParameter.u16KeyShortPressTime)
{
// stKeyCtrVariate[enKeyIndex].u16KeyInvalidTimeCount = 0U;
}
stKeyCtrVariate[enKeyIndex].u16KeyInvalidTimeCount = 0U;
if (stKeyCtrVariate[enKeyIndex].u8KeyIGNChangeFlag == 0U)
{
if (stKeyCtrVariate[enKeyIndex].u16KeyValidTimeCount >= stKeyParameter.u16KeySuperLongPressTime)
{
if (stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack != 0U)
{
stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack(KEY_EVENT_SUPER_LONG_PRESS);
}
}
else if (stKeyCtrVariate[enKeyIndex].u16KeyValidTimeCount >= stKeyParameter.u16KeyLongPressTime)
{
if (stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack != 0U)
{
stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack(KEY_EVENT_LONG_PRESS);
}
}
}
else
{
if (stKeyCtrVariate[enKeyIndex].enKeyIGNFirstStatus == KEY_IG_OFF)
{
if (enKeyIGNRealStatus == KEY_IG_ON)
{
if ((stKeyCtrVariate[enKeyIndex].u16KeyFirstIGNTimeRecord >= stKeyParameter.u16KeyValidOFFTime) &&
(stKeyCtrVariate[enKeyIndex].u16KeyIGNTimeCount >= stKeyParameter.u16KeyValidONTime))
{
if (stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack != 0U)
{
stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack(KEY_EVENT_OFF_TO_ON);
}
stKeyCtrVariate[enKeyIndex].u16KeyFirstIGNTimeRecord = 0U;
}
}
}
else if (stKeyCtrVariate[enKeyIndex].enKeyIGNFirstStatus == KEY_IG_ON)
{
if (enKeyIGNRealStatus == KEY_IG_OFF)
{
if ((stKeyCtrVariate[enKeyIndex].u16KeyFirstIGNTimeRecord >= stKeyParameter.u16KeyValidONTime) &&
(stKeyCtrVariate[enKeyIndex].u16KeyIGNTimeCount >= stKeyParameter.u16KeyValidOFFTime))
{
if (stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack != 0U)
{
stKeyAttribute[enKeyIndex].pfnKeyOperationCallBack(KEY_EVENT_ON_TO_OFF);
}
stKeyCtrVariate[enKeyIndex].u16KeyFirstIGNTimeRecord = 0U;
}
}
}
}
}
}
else
{
/*ERROR*/
stKeyCtrVariate[enKeyIndex].u16KeyInvalidTimeCount = 0U;
stKeyCtrVariate[enKeyIndex].u16KeyValidTimeCount = 0U;
stKeyCtrVariate[enKeyIndex].enKeyTypeLast = (Key_Real_Status_en_t)0U;
}
}
else
{
}
}
}
/*10ms调用一次*/
void Key_Service(void)
{
uint8_t i = 0U;
for (i = 0U; i < KEY_NUM_MAX; i++)
{
Key_Process((Key_Num_en_t)i); /*Key_Num_en_t*/
}
}
/*首次上电时调用一次即可*/
void Key_Init(void)
{
uint8_t i = 0U;
for (i = 0U; i < KEY_NUM_MAX; i++)
{
stKeyCtrVariate[i].enKeyTypeLast = KEY_CAN_NONE;
stKeyCtrVariate[i].u16KeyInvalidTimeCount = 0U;
stKeyCtrVariate[i].u16KeyValidTimeCount = 0U;
stKeyCtrVariate[i].u16KeyFirstIGNTimeRecord = 0U;
stKeyCtrVariate[i].enKeyIGNFirstStatus = KEY_IG_INVALID;
stKeyCtrVariate[i].enKeyIGNStatusLast = KEY_IG_INVALID;
stKeyCtrVariate[i].u8KeyIGNChangeFlag = 0U;
stKeyCtrVariate[i].u16KeyIGNTimeCount = 0U;
}
/*按键动作时间*/
/*342 4.1 短按/长按操作的判断标准(判定时间):短按;40ms以上,未到800ms,长按;800ms以上*/
stKeyParameter.u16KeyLoosenTime = 100U;
stKeyParameter.u16KeyShortPressTime = 80U;
stKeyParameter.u16KeyLongPressTime = 1000U;
stKeyParameter.u16KeySuperLongPressTime = 3000U;
stKeyParameter.u16KeyValidOFFTime = 200U; /*按键动作时间*/
stKeyParameter.u16KeyValidONTime = 1000U;
}
/*对于硬线按键而言,判断短按的时间参数*/
Key_Set_en_t Key_Parameter_Set_Short_Press_Time(uint16_t u16Time)
{
Key_Set_en_t enKeySetResult = KEY_SET_OK;
if (u16Time < stKeyParameter.u16KeyLoosenTime)
{
enKeySetResult = KEY_SET_ERROR;
}
else if (u16Time > stKeyParameter.u16KeyLongPressTime)
{
enKeySetResult = KEY_SET_ERROR;
}
else
{
stKeyParameter.u16KeyShortPressTime = u16Time;
}
return enKeySetResult;
}
/*对于硬线按键而言,判断长按的时间参数*/
Key_Set_en_t Key_Parameter_Set_Long_Press_Time(uint16_t u16Time)
{
Key_Set_en_t enKeySetResult = KEY_SET_OK;
if (u16Time < stKeyParameter.u16KeyShortPressTime)
{
enKeySetResult = KEY_SET_ERROR;
}
else if (u16Time > stKeyParameter.u16KeySuperLongPressTime)
{
enKeySetResult = KEY_SET_ERROR;
}
else
{
stKeyParameter.u16KeyLongPressTime = u16Time;
}
return enKeySetResult;
}
/*对于硬线按键而言,判断超长按的时间参数*/
Key_Set_en_t Key_Parameter_Set_Super_Long_Press_Time(uint16_t u16Time)
{
Key_Set_en_t enKeySetResult = KEY_SET_OK;
if (u16Time < stKeyParameter.u16KeyLongPressTime)
{
enKeySetResult = KEY_SET_ERROR;
}
else
{
stKeyParameter.u16KeySuperLongPressTime = u16Time;
}
return enKeySetResult;
}
#ifndef KEY_H__ #ifndef KEY_H__
#define KEY_H__ #define KEY_H__
//#define KEY_PLATFORM_16BIT
#include "TYW_stdint.h" #ifdef KEY_PLATFORM_16BIT
typedef unsigned char Key_uint8_t;
/* typedef unsigned int Key_uint16_t;
说明: typedef unsigned long Key_uint32_t;
1、按键类型分为两类: #else
1)CAN按键。 typedef unsigned char Key_uint8_t;
2)单纯硬线按键,AD按键。 typedef unsigned short Key_uint16_t;
2、按键触发时间: typedef unsigned int Key_uint32_t;
1)短按动作在抬手时触发、 typedef unsigned long long Key_uint64_t;
2)长按动作(或超长按)在时间达到,按住时就可触发。 #endif
3)OFF到ON(或ON到OFF)在各个电源状态时按键按下时间满足后即可触发,不必抬手。 /*所有按键枚举*/
/*默认所有按键在任意电源状态下均可被触发*/
*/ typedef enum
/*所有按键枚举,目前最多支持8个按键*/ {
typedef enum KEY_UP = 0U,
{ KEY_DOWN,
KEY_UP = 0U, KEY_ENTER,
KEY_DOWN, KEY_RETURN,
KEY_ENTER, KEY_MENU,
KEY_RETURN, KEY_ODOTRIP,
KEY_MENU, KEY_NUM_MAX,
KEY_ODOTRIP, } Key_Num_en_t;
KEY_NUM_MAX, /*--------------------------Do not modify the following--------------------------------*/
/*--------------------------Do not modify the following--------------------------------*/
} Key_Num_en_t; /*--------------------------Do not modify the following--------------------------------*/
#define KEY_RAM_DATA_LEN (KEY_NUM_MAX * 16U + 24U)
/*--------------------------Do not modify the following--------------------------------*/ typedef enum
/*--------------------------Do not modify the following--------------------------------*/ {
/*--------------------------Do not modify the following--------------------------------*/ /*按键检测方式选择*/
typedef enum /*按键不需要消抖,并且在无效状态切换到有效状态的上升沿触发按键动作。
{ 一般用于CAN发送按键处理后状态时*/
// KEY_TYPE_CAN = 0U, /*CAN按键。按键不需要消抖*/ KEY_NO_DEBOUNCE_RISE = 0U,
// KEY_TYPE_LINE, /*硬线按键,包含AD按键。按键需要消抖*/ /*按键不需要消抖,并且在有效状态切换到无效状态的下降沿触发按键动作。
一般用于CAN发送按键处理后状态时*/
/*按键检测方式选择*/ KEY_NO_DEBOUNCE_FALL,
KEY_NO_DEBOUNCE_RISE = 0U, /*按键不需要消抖,并且在无效状态切换到有效状态的上升沿触发按键动作*/ /*按键需要消抖,短按松手触发,长按按住即可触发。
KEY_NO_DEBOUNCE_FALL, /*按键不需要消抖,并且在有效状态切换到无效状态的下降沿触发按键动作*/ 一般用于硬线按键,AD按键,CAN发送按键实时状态时*/
KEY_NEED_DEBOUNCE_NORMAL,
KEY_NEED_DEBOUNCE_NORMAL, /*按键需要消抖,短按松手触发,长按,超超按,按住即可触发*/ KEY_TYPE_MAX,
} Key_Type_en_t;
KEY_TYPE_MAX, /*按键相关设置返回状态*/
} Key_Type_en_t; typedef enum
{
/*按键相关设置返回状态*/ KEY_SET_OK = 0U,
typedef enum KEY_SET_ERROR,
{ KEY_SET_MAX,
KEY_SET_OK = 0U, } Key_Set_en_t;
KEY_SET_ERROR, /*-----传入的按键状态--------*/
typedef enum
KEY_SET_MAX, {
} Key_Set_en_t; /*当按键检测方式选择需要消抖时使用*/
/*按键IG状态*/ KEY_REALTIME_LOOSEN = 0U, /*按键松开*/
typedef enum KEY_REALTIME_PRESS, /*按键按下*/
{ /*当按键检测方式选择不需要消抖时使用*/
KEY_IG_INVALID = 0U, KEY_STATUS_IDLE,
KEY_IG_OFF, KEY_STATUS_SHORT_PRESS_1,
KEY_IG_ON, KEY_STATUS_SHORT_PRESS_2,
KEY_STATUS_LONG_PRESS_1,
} Key_IGN_en_t; KEY_STATUS_LONG_PRESS_2,
/*-----实时传入的键值--------*/ KEY_STATUS_LONG_PRESS_3,
typedef enum KEY_STATUS_LONG_PRESS_4,
{ KEY_STATUS_MAX,
} Key_Status_en_t;
KEY_CAN_NONE = 0U, /*CAN按键时,按键无动作*/ /*按键支持的具体动作*/
KEY_CAN_SHORT_PRESS, /*CAN按键时,按键短按动作*/ typedef enum
KEY_CAN_LONG_PRESS, /*CAN按键时,按键长按动作*/ {
KEY_CAN_LONG_PRESS_NOT_RELEASE, /*CAN按键时,按键长按不松手动作,触发动作超长按*/ KEY_EVENT_NONE = 0U, /***超时动作可在这个按键动作下自行计时触发**/
/*以下按键动作都是单次触发,只有松手后才能再次触发*/
KEY_LINE_PRESS, /*硬线按键时,按键按下*/ KEY_EVENT_SHORT_PRESS_1,
KEY_LINE_LOOSEN, /*硬线按键时,按键松开*/ KEY_EVENT_SHORT_PRESS_2,
KEY_EVENT_LONG_PRESS_1,
KEY_REAL_STATUS_MAX, KEY_EVENT_LONG_PRESS_2,
KEY_EVENT_LONG_PRESS_3,
} Key_Real_Status_en_t; KEY_EVENT_LONG_PRESS_4,
/*按键支持的具体动作*/ /*OFF时才首先按下按键,然后不松手,之后切换到ON并持续一定时间后触发动作。*/
typedef enum KEY_EVENT_OFF_TO_ON,
{ KEY_EVENT_ON_TO_OFF,
KEY_EVENT_NONE = 0U, KEY_EVENT_MAX,
KEY_EVENT_SHORT_PRESS, } Key_Event_en_t;
KEY_EVENT_LONG_PRESS, /*按键IG状态*/
KEY_EVENT_SUPER_LONG_PRESS, typedef enum
KEY_EVENT_OFF_TO_ON, {
KEY_EVENT_ON_TO_OFF, KEY_IG_INVALID = 0U,/***无效的电源状态**/
KEY_IG_OFF,
KEY_EVENT_MAX, KEY_IG_ON,
} Key_IGN_en_t;
} Key_Event_en_t; typedef Key_Status_en_t (*Key_Status_Read)(void);
typedef void (*Key_Operation)(Key_Event_en_t enKeyEvent);
typedef struct /*每个按键的属性*/
{ typedef struct
uint32_t u32KeyRAMAddr; /* 数据缓冲地址 */ {
uint16_t u16KeyRAMLen; /* 数据缓冲大小:以uint32_t为单位*/ /*按键检测方式选择*/
} Key_RAM_Attribute_st_t; Key_Type_en_t enKeyType;
/*获取按键传入状态的回调函数*/
typedef Key_Real_Status_en_t (*Key_Real_Status_Read)(void); Key_Status_Read pfnKeyReadStatusCallBack;
typedef void (*Key_Operation)(Key_Event_en_t enKeyEvent); /*按键触发动作的回调函数*/
Key_Operation pfnKeyOperationCallBack;
/*每个按键的属性*/ } Key_Attribute_st_t;
typedef struct typedef struct
{ {
/*按键类型,是CAN的还是硬线的*/ /*当前IG状态*/
Key_Type_en_t enKeyType; Key_IGN_en_t enKeyIGNRealStatus;
/*获取按键实时状态的回调函数*/ /*按键数量,也就是KEY_NUM_MAX*/
Key_Real_Status_Read pfnKeyReadStatusCallBack; Key_uint8_t u8KeyNum;
/*按键触发动作的回调函数*/ } Key_Init_st_t;
Key_Operation pfnKeyOperationCallBack; /*--------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------*/
} Key_Attribute_st_t; /*10ms调用一次*/
extern void Key_Service(void);
/*--------------------------------------------------------------------------------------------*/ /*首次上电时调用.
extern const Key_Attribute_st_t stKeyAttribute[KEY_NUM_MAX]; 默认短按1时间100ms~~1000ms,
默认短按2时间1100ms~~2000ms,
/*------------------------------------------------------------------------------------*/ 长按1时间2000ms,
长按2时间10000ms,
/*10ms调用一次*/ 长按3时间30000ms,
extern void Key_Service(void); 长按4时间60000ms,
/*首次上电时调用一次即可*/ OFF下时间500ms,ON下时间500ms*/
extern void Key_Init(void); extern void Key_KL30_Init(Key_uint8_t *pu8KyeRamData, const Key_Attribute_st_t *pstKeyAttribute, Key_Init_st_t *pstKeyInit);
/*对于硬线按键而言,判断短按的时间参数*/ /***确保传入的内存指针在休眠唤醒后不会丢失,那么可正常使用唤醒初始化函数。否是使用上述KL30初始化**/
extern Key_Set_en_t Key_Parameter_Set_Short_Press_Time(uint16_t u16Time); extern void Key_Wakeup_Init(Key_uint8_t *pu8KyeRamData, const Key_Attribute_st_t *pstKeyAttribute, Key_Init_st_t *pstKeyInit);
/*对于硬线按键而言,判断长按的时间参数*/ /*对于消抖按键而言,判断短按的时间参数。
extern Key_Set_en_t Key_Parameter_Set_Long_Press_Time(uint16_t u16Time); u16TimeMin :最小识别的时间 u16TimeMax:最大识别的时间 (不可大于短按2的最小识别时间)*/
/*对于硬线按键而言,判断超长按的时间参数*/ extern Key_Set_en_t Key_Parameter_Set_Short_Press_1_Time(Key_uint16_t u16TimeMin, Key_uint16_t u16TimeMax);
extern Key_Set_en_t Key_Parameter_Set_Super_Long_Press_Time(uint16_t u16Time); /*对于消抖按键而言,判断短按2的时间参数。
/*获取IG状态*/ u16TimeMin :最小识别的时间(不可小于短按1的最大识别时间) u16TimeMax:最大识别的时间*/
extern Key_IGN_en_t Key_Get_IGN_Status(void); extern Key_Set_en_t Key_Parameter_Set_Short_Press_2_Time(Key_uint16_t u16TimeMin, Key_uint16_t u16TimeMax);
/*对于消抖按键而言,判断长按1的时间参数。不可大于长按2的时间*/
extern uint8_t Common_Get_RetMenu_Flag(void); extern Key_Set_en_t Key_Parameter_Set_Long_Press_1_Time(Key_uint16_t u16Time);
/*对于消抖按键而言,判断长按2的时间参数。不可小于长按1的时间,不可大于长按3的时间*/
extern Key_Set_en_t Key_Parameter_Set_Long_Press_2_Time(Key_uint16_t u16Time);
/*对于消抖按键而言,判断长按3的时间参数。不可小于长按2的时间,不可大于长按4的时间*/
extern Key_Set_en_t Key_Parameter_Set_Long_Press_3_Time(Key_uint16_t u16Time);
/*对于消抖按键而言,判断长按4的时间参数。不可小于长按3的时间*/
extern Key_Set_en_t Key_Parameter_Set_Long_Press_4_Time(Key_uint16_t u16Time);
/*设置电源状态给按键,单次调用或者多次调用均可*/
extern void Key_Set_IG_Status(Key_IGN_en_t enIGStatus);
#endif #endif
\ No newline at end of file
...@@ -14,7 +14,12 @@ ...@@ -14,7 +14,12 @@
#include "kwp2000_service.h" #include "kwp2000_service.h"
#include "CAN_Communication_Matrix.h" #include "CAN_Communication_Matrix.h"
#include "SEG_DISPLAY.h"
/*----------按键具体功能执行的回调函数-----------------------*/ /*----------按键具体功能执行的回调函数-----------------------*/
#pragma ghs section bss=".myNonInitArea"
Key_uint8_t u8KeyRamData[KEY_RAM_DATA_LEN];
#pragma ghs section bss=default
void Key_Operation_Enter(Key_Event_en_t enKeyEvent); void Key_Operation_Enter(Key_Event_en_t enKeyEvent);
void Key_Operation_Return(Key_Event_en_t enKeyEvent); void Key_Operation_Return(Key_Event_en_t enKeyEvent);
...@@ -23,8 +28,6 @@ void Key_Operation_Down(Key_Event_en_t enKeyEvent); ...@@ -23,8 +28,6 @@ void Key_Operation_Down(Key_Event_en_t enKeyEvent);
void Key_Operation_Menu(Key_Event_en_t enKeyEvent); void Key_Operation_Menu(Key_Event_en_t enKeyEvent);
void Key_Operation_ODOTrip(Key_Event_en_t enKeyEvent); void Key_Operation_ODOTrip(Key_Event_en_t enKeyEvent);
Key_IGN_en_t Key_Get_IGN_Status(void);
/*******************************UP*********************************************** /*******************************UP***********************************************
Function: Key_Operation_Up Function: Key_Operation_Up
Description: Description:
...@@ -49,7 +52,7 @@ void Key_Operation_Up(Key_Event_en_t enKeyEvent) ...@@ -49,7 +52,7 @@ void Key_Operation_Up(Key_Event_en_t enKeyEvent)
/*----无车速,无报警----*/ /*----无车速,无报警----*/
if (HMI_MENU_Sta != Display_Alarm) if (HMI_MENU_Sta != Display_Alarm)
{ {
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
/*主界面 一级菜单 二级菜单*/ /*主界面 一级菜单 二级菜单*/
if (((bCurMenuIDX >= _MN_DSP_LEVEL1MENU_1) && (bCurMenuIDX <= _MN_DSP_LEVEL2_6_MENU_2)) || if (((bCurMenuIDX >= _MN_DSP_LEVEL1MENU_1) && (bCurMenuIDX <= _MN_DSP_LEVEL2_6_MENU_2)) ||
...@@ -349,7 +352,7 @@ void Key_Operation_Up(Key_Event_en_t enKeyEvent) ...@@ -349,7 +352,7 @@ void Key_Operation_Up(Key_Event_en_t enKeyEvent)
;/*Do Nothing!*/ ;/*Do Nothing!*/
} }
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
MenuFlag.Menu_Key_Time++; MenuFlag.Menu_Key_Time++;
if (MenuFlag.Menu_Key_Time > 10) if (MenuFlag.Menu_Key_Time > 10)
...@@ -458,11 +461,11 @@ void Key_Operation_Up(Key_Event_en_t enKeyEvent) ...@@ -458,11 +461,11 @@ void Key_Operation_Up(Key_Event_en_t enKeyEvent)
/*----无车速,有报警----*/ /*----无车速,有报警----*/
else else
{ {
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
; /*D0 Nothing!*/ ; /*D0 Nothing!*/
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
; /*D0 Nothing!*/ ; /*D0 Nothing!*/
} }
...@@ -473,7 +476,7 @@ void Key_Operation_Up(Key_Event_en_t enKeyEvent) ...@@ -473,7 +476,7 @@ void Key_Operation_Up(Key_Event_en_t enKeyEvent)
/*----有车速,无报警----*/ /*----有车速,无报警----*/
if (HMI_MENU_Sta != Display_Alarm) if (HMI_MENU_Sta != Display_Alarm)
{ {
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
/*工厂模式*/ /*经销商模式*/ /*工厂模式*/ /*经销商模式*/
if (((bCurMenuIDX >= _FAC_DSP_LEVEL1MENU_1) && (bCurMenuIDX <= _FAC_DSP_LEVEL1_3MENU_2)) || if (((bCurMenuIDX >= _FAC_DSP_LEVEL1MENU_1) && (bCurMenuIDX <= _FAC_DSP_LEVEL1_3MENU_2)) ||
...@@ -500,7 +503,7 @@ void Key_Operation_Up(Key_Event_en_t enKeyEvent) ...@@ -500,7 +503,7 @@ void Key_Operation_Up(Key_Event_en_t enKeyEvent)
;/*Do Nothing!*/ ;/*Do Nothing!*/
} }
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
; /*D0 Nothing!*/ ; /*D0 Nothing!*/
} }
...@@ -508,11 +511,11 @@ void Key_Operation_Up(Key_Event_en_t enKeyEvent) ...@@ -508,11 +511,11 @@ void Key_Operation_Up(Key_Event_en_t enKeyEvent)
/*----有车速,有报警----*/ /*----有车速,有报警----*/
else else
{ {
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
; /*D0 Nothing!*/ ; /*D0 Nothing!*/
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
; /*D0 Nothing!*/ ; /*D0 Nothing!*/
} }
...@@ -541,7 +544,7 @@ void Key_Operation_Down(Key_Event_en_t enKeyEvent) ...@@ -541,7 +544,7 @@ void Key_Operation_Down(Key_Event_en_t enKeyEvent)
/*----无车速,无报警----*/ /*----无车速,无报警----*/
if (HMI_MENU_Sta != Display_Alarm) if (HMI_MENU_Sta != Display_Alarm)
{ {
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
/*主界面 一级菜单 二级菜单*/ /*主界面 一级菜单 二级菜单*/
if (((bCurMenuIDX >= _MN_DSP_LEVEL1MENU_1) && (bCurMenuIDX <= _MN_DSP_LEVEL2_6_MENU_2)) || if (((bCurMenuIDX >= _MN_DSP_LEVEL1MENU_1) && (bCurMenuIDX <= _MN_DSP_LEVEL2_6_MENU_2)) ||
...@@ -856,7 +859,7 @@ void Key_Operation_Down(Key_Event_en_t enKeyEvent) ...@@ -856,7 +859,7 @@ void Key_Operation_Down(Key_Event_en_t enKeyEvent)
;/*Do Nothing!*/ ;/*Do Nothing!*/
} }
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
MenuFlag.Menu_Key_Time++; MenuFlag.Menu_Key_Time++;
if (MenuFlag.Menu_Key_Time > 10) if (MenuFlag.Menu_Key_Time > 10)
...@@ -972,11 +975,11 @@ void Key_Operation_Down(Key_Event_en_t enKeyEvent) ...@@ -972,11 +975,11 @@ void Key_Operation_Down(Key_Event_en_t enKeyEvent)
else else
{ {
/*----无车速,有报警----*/ /*----无车速,有报警----*/
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
; /*D0 Nothing!*/ ; /*D0 Nothing!*/
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
; /*D0 Nothing!*/ ; /*D0 Nothing!*/
} }
...@@ -987,7 +990,7 @@ void Key_Operation_Down(Key_Event_en_t enKeyEvent) ...@@ -987,7 +990,7 @@ void Key_Operation_Down(Key_Event_en_t enKeyEvent)
/*----有车速,无报警----*/ /*----有车速,无报警----*/
if (HMI_MENU_Sta != Display_Alarm) if (HMI_MENU_Sta != Display_Alarm)
{ {
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
/*工厂模式*/ /*经销商模式*/ /*工厂模式*/ /*经销商模式*/
if (((bCurMenuIDX >= _FAC_DSP_LEVEL1MENU_1) && (bCurMenuIDX <= _FAC_DSP_LEVEL1_3MENU_2)) || if (((bCurMenuIDX >= _FAC_DSP_LEVEL1MENU_1) && (bCurMenuIDX <= _FAC_DSP_LEVEL1_3MENU_2)) ||
...@@ -1014,7 +1017,7 @@ void Key_Operation_Down(Key_Event_en_t enKeyEvent) ...@@ -1014,7 +1017,7 @@ void Key_Operation_Down(Key_Event_en_t enKeyEvent)
;/*Do Nothing!*/ ;/*Do Nothing!*/
} }
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
; /*D0 Nothing!*/ ; /*D0 Nothing!*/
} }
...@@ -1022,11 +1025,11 @@ void Key_Operation_Down(Key_Event_en_t enKeyEvent) ...@@ -1022,11 +1025,11 @@ void Key_Operation_Down(Key_Event_en_t enKeyEvent)
/*----有车速,有报警----*/ /*----有车速,有报警----*/
else else
{ {
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
; /*D0 Nothing!*/ ; /*D0 Nothing!*/
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
; /*D0 Nothing!*/ ; /*D0 Nothing!*/
} }
...@@ -1054,7 +1057,7 @@ void Key_Operation_Enter(Key_Event_en_t enKeyEvent) ...@@ -1054,7 +1057,7 @@ void Key_Operation_Enter(Key_Event_en_t enKeyEvent)
/*----无车速,无报警----*/ /*----无车速,无报警----*/
if (HMI_MENU_Sta != Display_Alarm) if (HMI_MENU_Sta != Display_Alarm)
{ {
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
if (((bCurMenuIDX >= _MN_DSP_LEVEL2MENU_1) && (bCurMenuIDX <= _MN_DSP_LEVEL2_5_MENU_4)) || if (((bCurMenuIDX >= _MN_DSP_LEVEL2MENU_1) && (bCurMenuIDX <= _MN_DSP_LEVEL2_5_MENU_4)) ||
((bCurMenuIDX >= _MN_DSP_LEVEL3_4_MENU_41) && (bCurMenuIDX <= _MN_DSP_LEVEL3_4_MENU_47))) ((bCurMenuIDX >= _MN_DSP_LEVEL3_4_MENU_41) && (bCurMenuIDX <= _MN_DSP_LEVEL3_4_MENU_47)))
...@@ -1133,7 +1136,7 @@ void Key_Operation_Enter(Key_Event_en_t enKeyEvent) ...@@ -1133,7 +1136,7 @@ void Key_Operation_Enter(Key_Event_en_t enKeyEvent)
;/*Do Nothing!*/ ;/*Do Nothing!*/
} }
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
/*Go Enter*/ /*Go Enter*/
if ((bCurMenuIDX >= _MN_DSP_LEVEL3_2_MENU_1) && (bCurMenuIDX <= _MN_DSP_LEVEL3_2_MENU_8)) if ((bCurMenuIDX >= _MN_DSP_LEVEL3_2_MENU_1) && (bCurMenuIDX <= _MN_DSP_LEVEL3_2_MENU_8))
...@@ -1146,11 +1149,11 @@ void Key_Operation_Enter(Key_Event_en_t enKeyEvent) ...@@ -1146,11 +1149,11 @@ void Key_Operation_Enter(Key_Event_en_t enKeyEvent)
else else
{ {
/*----无车速,有报警----*/ /*----无车速,有报警----*/
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
; /*D0 Nothing!*/ ; /*D0 Nothing!*/
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
; /*D0 Nothing!*/ ; /*D0 Nothing!*/
} }
...@@ -1161,7 +1164,7 @@ void Key_Operation_Enter(Key_Event_en_t enKeyEvent) ...@@ -1161,7 +1164,7 @@ void Key_Operation_Enter(Key_Event_en_t enKeyEvent)
/*----有车速,无报警----*/ /*----有车速,无报警----*/
if (HMI_MENU_Sta != Display_Alarm) if (HMI_MENU_Sta != Display_Alarm)
{ {
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
/*工厂模式 经销商模式*/ /*工厂模式 经销商模式*/
if ((bCurMenuIDX >= _FAC_DSP_LEVEL0MENU_1) && (bCurMenuIDX <= _MN_DSP_MENU_MAX)) if ((bCurMenuIDX >= _FAC_DSP_LEVEL0MENU_1) && (bCurMenuIDX <= _MN_DSP_MENU_MAX))
...@@ -1192,7 +1195,7 @@ void Key_Operation_Enter(Key_Event_en_t enKeyEvent) ...@@ -1192,7 +1195,7 @@ void Key_Operation_Enter(Key_Event_en_t enKeyEvent)
;/*Do Nothing!*/ ;/*Do Nothing!*/
} }
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
; /*D0 Nothing!*/ ; /*D0 Nothing!*/
} }
...@@ -1200,11 +1203,11 @@ void Key_Operation_Enter(Key_Event_en_t enKeyEvent) ...@@ -1200,11 +1203,11 @@ void Key_Operation_Enter(Key_Event_en_t enKeyEvent)
/*----有车速,有报警----*/ /*----有车速,有报警----*/
else else
{ {
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
; /*D0 Nothing!*/ ; /*D0 Nothing!*/
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
; /*D0 Nothing!*/ ; /*D0 Nothing!*/
} }
...@@ -1233,7 +1236,7 @@ void Key_Operation_Return(Key_Event_en_t enKeyEvent) ...@@ -1233,7 +1236,7 @@ void Key_Operation_Return(Key_Event_en_t enKeyEvent)
/*----无车速,无报警----*/ /*----无车速,无报警----*/
if (HMI_MENU_Sta != Display_Alarm) if (HMI_MENU_Sta != Display_Alarm)
{ {
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
if ((bCurMenuIDX >= _MN_DSP_LEVEL2_1_MENU_1) && (bCurMenuIDX < _MN_DSP_ENTER_MENU)) if ((bCurMenuIDX >= _MN_DSP_LEVEL2_1_MENU_1) && (bCurMenuIDX < _MN_DSP_ENTER_MENU))
{ {
...@@ -1293,7 +1296,7 @@ void Key_Operation_Return(Key_Event_en_t enKeyEvent) ...@@ -1293,7 +1296,7 @@ void Key_Operation_Return(Key_Event_en_t enKeyEvent)
; /*do nothing*/ ; /*do nothing*/
} }
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
; /*D0 Nothing!*/ ; /*D0 Nothing!*/
} }
...@@ -1301,11 +1304,11 @@ void Key_Operation_Return(Key_Event_en_t enKeyEvent) ...@@ -1301,11 +1304,11 @@ void Key_Operation_Return(Key_Event_en_t enKeyEvent)
else else
{ {
/*----无车速,有报警----*/ /*----无车速,有报警----*/
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
; /*Do Nothing!*/ ; /*Do Nothing!*/
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
MenuFlag.Key_Menu_Popup_time = 6000u; MenuFlag.Key_Menu_Popup_time = 6000u;
} }
...@@ -1316,7 +1319,7 @@ void Key_Operation_Return(Key_Event_en_t enKeyEvent) ...@@ -1316,7 +1319,7 @@ void Key_Operation_Return(Key_Event_en_t enKeyEvent)
if (HMI_MENU_Sta != Display_Alarm) if (HMI_MENU_Sta != Display_Alarm)
{ {
/*----有车速,无报警----*/ /*----有车速,无报警----*/
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
/*工厂模式 经销商模式*/ /*工厂模式 经销商模式*/
if ((bCurMenuIDX >= _FAC_DSP_LEVEL0MENU_1) && (bCurMenuIDX <= _MN_DSP_MENU_MAX)) if ((bCurMenuIDX >= _FAC_DSP_LEVEL0MENU_1) && (bCurMenuIDX <= _MN_DSP_MENU_MAX))
...@@ -1328,7 +1331,7 @@ void Key_Operation_Return(Key_Event_en_t enKeyEvent) ...@@ -1328,7 +1331,7 @@ void Key_Operation_Return(Key_Event_en_t enKeyEvent)
; /*do nothing*/ ; /*do nothing*/
} }
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
; /*Do Nothing!*/ ; /*Do Nothing!*/
} }
...@@ -1336,11 +1339,11 @@ void Key_Operation_Return(Key_Event_en_t enKeyEvent) ...@@ -1336,11 +1339,11 @@ void Key_Operation_Return(Key_Event_en_t enKeyEvent)
else else
{ {
/*----有车速,无报警----*/ /*----有车速,无报警----*/
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
; /*Do Nothing!*/ ; /*Do Nothing!*/
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
MenuFlag.Key_Menu_Popup_time = 6000u; MenuFlag.Key_Menu_Popup_time = 6000u;
} }
...@@ -1372,7 +1375,7 @@ void Key_Operation_Menu(Key_Event_en_t enKeyEvent) ...@@ -1372,7 +1375,7 @@ void Key_Operation_Menu(Key_Event_en_t enKeyEvent)
/*----无车速,无报警----*/ /*----无车速,无报警----*/
if (HMI_MENU_Sta != Display_Alarm) if (HMI_MENU_Sta != Display_Alarm)
{ {
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
/*自检模式进入经销商模式*/ /*自检模式进入经销商模式*/
if (bCurMenuIDX == _MN_DSP_Menu_Test) if (bCurMenuIDX == _MN_DSP_Menu_Test)
...@@ -1408,7 +1411,11 @@ void Key_Operation_Menu(Key_Event_en_t enKeyEvent) ...@@ -1408,7 +1411,11 @@ void Key_Operation_Menu(Key_Event_en_t enKeyEvent)
NextMenu(MenuFlag.Menu_Flag); NextMenu(MenuFlag.Menu_Flag);
} }
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{
; /*Do Nothing!*/
}
else if (enKeyEvent == KEY_EVENT_LONG_PRESS_2)
{ {
; /*Do Nothing!*/ ; /*Do Nothing!*/
} }
...@@ -1416,7 +1423,7 @@ void Key_Operation_Menu(Key_Event_en_t enKeyEvent) ...@@ -1416,7 +1423,7 @@ void Key_Operation_Menu(Key_Event_en_t enKeyEvent)
else else
{ {
/*----无车速,有报警----*/ /*----无车速,有报警----*/
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
/*自检模式进入经销商模式*/ /*自检模式进入经销商模式*/
if (bCurMenuIDX == _MN_DSP_Menu_Test) if (bCurMenuIDX == _MN_DSP_Menu_Test)
...@@ -1440,7 +1447,11 @@ void Key_Operation_Menu(Key_Event_en_t enKeyEvent) ...@@ -1440,7 +1447,11 @@ void Key_Operation_Menu(Key_Event_en_t enKeyEvent)
MenuFlag.Menu_StaFlag = 0x01u; MenuFlag.Menu_StaFlag = 0x01u;
} }
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{
; /*Do Nothing!*/
}
else if (enKeyEvent == KEY_EVENT_LONG_PRESS_2)
{ {
; /*Do Nothing!*/ ; /*Do Nothing!*/
} }
...@@ -1451,7 +1462,7 @@ void Key_Operation_Menu(Key_Event_en_t enKeyEvent) ...@@ -1451,7 +1462,7 @@ void Key_Operation_Menu(Key_Event_en_t enKeyEvent)
if (HMI_MENU_Sta != Display_Alarm) if (HMI_MENU_Sta != Display_Alarm)
{ {
/*----有车速,无报警----*/ /*----有车速,无报警----*/
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
/*工厂模式*/ /*工厂模式*/
if (MenuFlag.Menu_StaFlag == 0x00u) if (MenuFlag.Menu_StaFlag == 0x00u)
...@@ -1470,15 +1481,21 @@ void Key_Operation_Menu(Key_Event_en_t enKeyEvent) ...@@ -1470,15 +1481,21 @@ void Key_Operation_Menu(Key_Event_en_t enKeyEvent)
MenuFlag.Menu_StaFlag = 0x01u; MenuFlag.Menu_StaFlag = 0x01u;
} }
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
; /*Do Nothing!*/ ; /*Do Nothing!*/
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS_2)
{
Gui_Display_Test();
/*TYW总计清零*/
TYW_Data_ODO_Clear();
}
} }
else else
{ {
/*----有车速,无报警----*/ /*----有车速,无报警----*/
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
/*工厂模式*/ /*工厂模式*/
if (MenuFlag.Menu_StaFlag == 0x00u) if (MenuFlag.Menu_StaFlag == 0x00u)
...@@ -1497,10 +1514,16 @@ void Key_Operation_Menu(Key_Event_en_t enKeyEvent) ...@@ -1497,10 +1514,16 @@ void Key_Operation_Menu(Key_Event_en_t enKeyEvent)
MenuFlag.Menu_StaFlag = 0x01u; MenuFlag.Menu_StaFlag = 0x01u;
} }
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
; /*Do Nothing!*/ ; /*Do Nothing!*/
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS_2)
{
Gui_Display_Test();
/*TYW总计清零*/
TYW_Data_ODO_Clear();
}
} }
} }
} }
...@@ -1527,7 +1550,7 @@ void Key_Operation_ODOTrip(Key_Event_en_t enKeyEvent) ...@@ -1527,7 +1550,7 @@ void Key_Operation_ODOTrip(Key_Event_en_t enKeyEvent)
{ {
MenuFlag.Key_MenuTest_Long = 1u; MenuFlag.Key_MenuTest_Long = 1u;
} }
else if (enKeyEvent == KEY_EVENT_SHORT_PRESS) else if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
if (PowerStatus == COMMON_POWER_ON) if (PowerStatus == COMMON_POWER_ON)
{ {
...@@ -1560,7 +1583,7 @@ void Key_Operation_ODOTrip(Key_Event_en_t enKeyEvent) ...@@ -1560,7 +1583,7 @@ void Key_Operation_ODOTrip(Key_Event_en_t enKeyEvent)
State_Flag.Menu_Key_Static = 1u; State_Flag.Menu_Key_Static = 1u;
} }
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
if (PowerStatus == COMMON_POWER_ON) if (PowerStatus == COMMON_POWER_ON)
{ {
...@@ -1585,11 +1608,11 @@ void Key_Operation_ODOTrip(Key_Event_en_t enKeyEvent) ...@@ -1585,11 +1608,11 @@ void Key_Operation_ODOTrip(Key_Event_en_t enKeyEvent)
if (HMI_MENU_Sta != Display_Alarm) if (HMI_MENU_Sta != Display_Alarm)
{ {
/*----无车速,无报警----*/ /*----无车速,无报警----*/
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
; ;
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
; /*Do Nothing!*/ ; /*Do Nothing!*/
} }
...@@ -1597,11 +1620,11 @@ void Key_Operation_ODOTrip(Key_Event_en_t enKeyEvent) ...@@ -1597,11 +1620,11 @@ void Key_Operation_ODOTrip(Key_Event_en_t enKeyEvent)
else else
{ {
/*----无车速,有报警----*/ /*----无车速,有报警----*/
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
; /*Do Nothing!*/ ; /*Do Nothing!*/
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
; /*Do Nothing!*/ ; /*Do Nothing!*/
} }
...@@ -1612,11 +1635,11 @@ void Key_Operation_ODOTrip(Key_Event_en_t enKeyEvent) ...@@ -1612,11 +1635,11 @@ void Key_Operation_ODOTrip(Key_Event_en_t enKeyEvent)
if (HMI_MENU_Sta != Display_Alarm) if (HMI_MENU_Sta != Display_Alarm)
{ {
/*----有车速,无报警----*/ /*----有车速,无报警----*/
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
; /*Do Nothing!*/ ; /*Do Nothing!*/
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
; /*Do Nothing!*/ ; /*Do Nothing!*/
} }
...@@ -1624,11 +1647,11 @@ void Key_Operation_ODOTrip(Key_Event_en_t enKeyEvent) ...@@ -1624,11 +1647,11 @@ void Key_Operation_ODOTrip(Key_Event_en_t enKeyEvent)
else else
{ {
/*----有车速,无报警----*/ /*----有车速,无报警----*/
if (enKeyEvent == KEY_EVENT_SHORT_PRESS) if (enKeyEvent == KEY_EVENT_SHORT_PRESS_1)
{ {
; /*Do Nothing!*/ ; /*Do Nothing!*/
} }
else if (enKeyEvent == KEY_EVENT_LONG_PRESS) else if (enKeyEvent == KEY_EVENT_LONG_PRESS_1)
{ {
; /*Do Nothing!*/ ; /*Do Nothing!*/
} }
...@@ -1642,11 +1665,11 @@ uint8_t Common_Get_RetMenu_Flag(void) ...@@ -1642,11 +1665,11 @@ uint8_t Common_Get_RetMenu_Flag(void)
return MenuFlag.Menu_Flag; return MenuFlag.Menu_Flag;
} }
/*------------读按键实时状态的回调函数-------------------------------------------*/ /*------------读按键实时状态的回调函数-------------------------------------------*/
Key_Real_Status_en_t Key_Real_Status_Read_Enter(void); Key_Status_en_t Key_Real_Status_Read_Enter(void);
Key_Real_Status_en_t Key_Real_Status_Read_Return(void); Key_Status_en_t Key_Real_Status_Read_Return(void);
Key_Real_Status_en_t Key_Real_Status_Read_Up(void); Key_Status_en_t Key_Real_Status_Read_Up(void);
Key_Real_Status_en_t Key_Real_Status_Read_Down(void); Key_Status_en_t Key_Real_Status_Read_Down(void);
Key_Real_Status_en_t Key_Real_Status_Read_Menu(void); Key_Status_en_t Key_Real_Status_Read_Menu(void);
/*-------------------------------------------------*/ /*-------------------------------------------------*/
// Menu_R = 24000*470 / (24000 + 470) = 460.97Ω // Menu_R = 24000*470 / (24000 + 470) = 460.97Ω
...@@ -1670,26 +1693,26 @@ Key_Real_Status_en_t Key_Real_Status_Read_Menu(void); ...@@ -1670,26 +1693,26 @@ Key_Real_Status_en_t Key_Real_Status_Read_Menu(void);
// Down_R 3000~3200Ω // Down_R 3000~3200Ω
/*上*/ /*上*/
Key_Real_Status_en_t Key_Real_Status_Read_Up(void) Key_Status_en_t Key_Real_Status_Read_Up(void)
{ {
Key_Real_Status_en_t enKeyRealStatus = KEY_LINE_LOOSEN; Key_Status_en_t enKeyRealStatus = KEY_REALTIME_LOOSEN;
uint16_t Key_R = 0; uint16_t Key_R = 0;
Key_R = (uint16_t)RTE_Read_KEY_R(); Key_R = (uint16_t)RTE_Read_KEY_R();
if (RTE_Read_KEY_R_Valid() == 0) if (RTE_Read_KEY_R_Valid() == 0)
{ {
enKeyRealStatus = KEY_LINE_LOOSEN; enKeyRealStatus = KEY_REALTIME_LOOSEN;
} }
else else
{ {
if ((Key_R >= (1250 - 400)) && (Key_R <= (1250 + 400))) if ((Key_R >= (1250 - 400)) && (Key_R <= (1250 + 400)))
{ {
enKeyRealStatus = KEY_LINE_PRESS; enKeyRealStatus = KEY_REALTIME_PRESS;
} }
else else
{ {
enKeyRealStatus = KEY_LINE_LOOSEN; enKeyRealStatus = KEY_REALTIME_LOOSEN;
} }
} }
...@@ -1697,26 +1720,26 @@ Key_Real_Status_en_t Key_Real_Status_Read_Up(void) ...@@ -1697,26 +1720,26 @@ Key_Real_Status_en_t Key_Real_Status_Read_Up(void)
} }
/*下*/ /*下*/
Key_Real_Status_en_t Key_Real_Status_Read_Down(void) Key_Status_en_t Key_Real_Status_Read_Down(void)
{ {
Key_Real_Status_en_t enKeyRealStatus = KEY_LINE_LOOSEN; Key_Status_en_t enKeyRealStatus = KEY_REALTIME_LOOSEN;
uint16_t Key_R = 0; uint16_t Key_R = 0;
Key_R = (uint16_t)RTE_Read_KEY_R(); Key_R = (uint16_t)RTE_Read_KEY_R();
if (RTE_Read_KEY_R_Valid() == 0) if (RTE_Read_KEY_R_Valid() == 0)
{ {
enKeyRealStatus = KEY_LINE_LOOSEN; enKeyRealStatus = KEY_REALTIME_LOOSEN;
} }
else else
{ {
if ((Key_R >= (2900 - 400)) && (Key_R <= (2900 + 400))) if ((Key_R >= (2900 - 400)) && (Key_R <= (2900 + 400)))
{ {
enKeyRealStatus = KEY_LINE_PRESS; enKeyRealStatus = KEY_REALTIME_PRESS;
} }
else else
{ {
enKeyRealStatus = KEY_LINE_LOOSEN; enKeyRealStatus = KEY_REALTIME_LOOSEN;
} }
} }
...@@ -1724,52 +1747,52 @@ Key_Real_Status_en_t Key_Real_Status_Read_Down(void) ...@@ -1724,52 +1747,52 @@ Key_Real_Status_en_t Key_Real_Status_Read_Down(void)
} }
/*Enter*/ /*Enter*/
Key_Real_Status_en_t Key_Real_Status_Read_Enter(void) Key_Status_en_t Key_Real_Status_Read_Enter(void)
{ {
Key_Real_Status_en_t enKeyRealStatus = KEY_LINE_LOOSEN; Key_Status_en_t enKeyRealStatus = KEY_REALTIME_LOOSEN;
uint16_t Key_R = 0; uint16_t Key_R = 0;
Key_R = (uint16_t)RTE_Read_KEY_R(); Key_R = (uint16_t)RTE_Read_KEY_R();
if (RTE_Read_KEY_R_Valid() == 0) if (RTE_Read_KEY_R_Valid() == 0)
{ {
enKeyRealStatus = KEY_LINE_LOOSEN; enKeyRealStatus = KEY_REALTIME_LOOSEN;
} }
else else
{ {
if ((Key_R >= (4800 - 400)) && (Key_R <= (5300 + 400))) if ((Key_R >= (4800 - 400)) && (Key_R <= (5300 + 400)))
{ {
enKeyRealStatus = KEY_LINE_PRESS; enKeyRealStatus = KEY_REALTIME_PRESS;
} }
else else
{ {
enKeyRealStatus = KEY_LINE_LOOSEN; enKeyRealStatus = KEY_REALTIME_LOOSEN;
} }
} }
return enKeyRealStatus; return enKeyRealStatus;
} }
/*Return*/ /*Return*/
Key_Real_Status_en_t Key_Real_Status_Read_Return(void) Key_Status_en_t Key_Real_Status_Read_Return(void)
{ {
Key_Real_Status_en_t enKeyRealStatus = KEY_LINE_LOOSEN; Key_Status_en_t enKeyRealStatus = KEY_REALTIME_LOOSEN;
uint16_t Key_R = 0; uint16_t Key_R = 0;
Key_R = (uint16_t)RTE_Read_KEY_R(); Key_R = (uint16_t)RTE_Read_KEY_R();
if (RTE_Read_KEY_R_Valid() == 0) if (RTE_Read_KEY_R_Valid() == 0)
{ {
enKeyRealStatus = KEY_LINE_LOOSEN; enKeyRealStatus = KEY_REALTIME_LOOSEN;
} }
else else
{ {
if ((Key_R >= (7800 - 400)) && (Key_R <= (8900 + 400))) if ((Key_R >= (7800 - 400)) && (Key_R <= (8900 + 400)))
{ {
enKeyRealStatus = KEY_LINE_PRESS; enKeyRealStatus = KEY_REALTIME_PRESS;
} }
else else
{ {
enKeyRealStatus = KEY_LINE_LOOSEN; enKeyRealStatus = KEY_REALTIME_LOOSEN;
} }
} }
...@@ -1777,26 +1800,26 @@ Key_Real_Status_en_t Key_Real_Status_Read_Return(void) ...@@ -1777,26 +1800,26 @@ Key_Real_Status_en_t Key_Real_Status_Read_Return(void)
} }
/*Menu*/ /*Menu*/
Key_Real_Status_en_t Key_Real_Status_Read_Menu(void) Key_Status_en_t Key_Real_Status_Read_Menu(void)
{ {
Key_Real_Status_en_t enKeyRealStatus = KEY_LINE_LOOSEN; Key_Status_en_t enKeyRealStatus = KEY_REALTIME_LOOSEN;
uint16_t Key_R = 0; uint16_t Key_R = 0;
Key_R = (uint16_t)RTE_Read_KEY_R(); Key_R = (uint16_t)RTE_Read_KEY_R();
if (RTE_Read_KEY_R_Valid() == 0) if (RTE_Read_KEY_R_Valid() == 0)
{ {
enKeyRealStatus = KEY_LINE_LOOSEN; enKeyRealStatus = KEY_REALTIME_LOOSEN;
} }
else else
{ {
if ((Key_R >= (500 - 300)) && (Key_R <= (500 + 300))) if ((Key_R >= (500 - 300)) && (Key_R <= (500 + 300)))
{ {
enKeyRealStatus = KEY_LINE_PRESS; enKeyRealStatus = KEY_REALTIME_PRESS;
} }
else else
{ {
enKeyRealStatus = KEY_LINE_LOOSEN; enKeyRealStatus = KEY_REALTIME_LOOSEN;
} }
} }
...@@ -1804,20 +1827,20 @@ Key_Real_Status_en_t Key_Real_Status_Read_Menu(void) ...@@ -1804,20 +1827,20 @@ Key_Real_Status_en_t Key_Real_Status_Read_Menu(void)
} }
/*TRIO-ODO*/ /*TRIO-ODO*/
Key_Real_Status_en_t Key_Real_Status_Read_ODOTrip(void) Key_Status_en_t Key_Real_Status_Read_ODOTrip(void)
{ {
Key_Real_Status_en_t enKeyRealStatus = KEY_LINE_LOOSEN; Key_Status_en_t enKeyRealStatus = KEY_REALTIME_LOOSEN;
uint16_t Key_R = 0; uint16_t Key_R = 0;
Key_R = (uint16_t)CD4051_COM3_X5_IN; Key_R = (uint16_t)CD4051_COM3_X5_IN;
if (Key_R == 0u) if (Key_R == 0u)
{ {
enKeyRealStatus = KEY_LINE_PRESS; enKeyRealStatus = KEY_REALTIME_PRESS;
} }
else else
{ {
enKeyRealStatus = KEY_LINE_LOOSEN; enKeyRealStatus = KEY_REALTIME_LOOSEN;
} }
return enKeyRealStatus; return enKeyRealStatus;
...@@ -1833,16 +1856,25 @@ const Key_Attribute_st_t stKeyAttribute[KEY_NUM_MAX] = ...@@ -1833,16 +1856,25 @@ const Key_Attribute_st_t stKeyAttribute[KEY_NUM_MAX] =
{KEY_NEED_DEBOUNCE_NORMAL, Key_Real_Status_Read_ODOTrip, Key_Operation_ODOTrip}, {KEY_NEED_DEBOUNCE_NORMAL, Key_Real_Status_Read_ODOTrip, Key_Operation_ODOTrip},
}; };
Key_IGN_en_t Key_Get_IGN_Status(void) void Key_KL30_Init_EXample(void)
{ {
Key_IGN_en_t ret = KEY_IG_INVALID; Key_Init_st_t stKeyInitTem;
if (SYS_OPR_STAT_IGN_ON) Key_uint16_t i;
{ for (i = 0; i < KEY_RAM_DATA_LEN; i++)
ret = KEY_IG_ON;
}
else
{ {
ret = KEY_IG_OFF; u8KeyRamData[i] = 0;
} }
return ret;
stKeyInitTem.u8KeyNum = KEY_NUM_MAX;
stKeyInitTem.enKeyIGNRealStatus = KEY_IG_OFF;
Key_KL30_Init(&u8KeyRamData[0], stKeyAttribute, &stKeyInitTem);
}
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);
} }
\ No newline at end of file
#ifndef KEY_USER_H__
#define KEY_USER_H__
extern void Key_KL30_Init_EXample(void);
extern void Key_Wakeup_Init_EXample(void);
#endif
\ No newline at end of file
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "Door.h" #include "Door.h"
#include "Data_AirPressure.h" #include "Data_AirPressure.h"
#include "Key.h" #include "Key.h"
#include "Key_user.h"
#include "Menu.h" #include "Menu.h"
#include "Services_ODO_User.h" #include "Services_ODO_User.h"
#include "AvgSpeed.h" #include "AvgSpeed.h"
...@@ -96,7 +97,9 @@ Power_Status_t Power_KL30_Init ( void ) ...@@ -96,7 +97,9 @@ Power_Status_t Power_KL30_Init ( void )
SeatbeltInit(); SeatbeltInit();
Door_WakeUpInit(); Door_WakeUpInit();
Key_Init(); Key_KL30_Init_EXample();
Key_Parameter_Set_Short_Press_1_Time(40, 800);
Key_Parameter_Set_Long_Press_2_Time(4000);
LED_Driver_Init(); LED_Driver_Init();
Sound_Scheduler_Init(); Sound_Scheduler_Init();
...@@ -209,6 +212,7 @@ Power_Status_t Power_Wakeup_Init ( void ) ...@@ -209,6 +212,7 @@ Power_Status_t Power_Wakeup_Init ( void )
Door_WakeUpInit(); Door_WakeUpInit();
RTE_PWM_Init(); RTE_PWM_Init();
Key_Wakeup_Init_EXample();
/*燃油新增 ----20220503----*/ /*燃油新增 ----20220503----*/
Fuel_User_Wakeup_Init(); Fuel_User_Wakeup_Init();
...@@ -243,6 +247,7 @@ void Power_IG_OFF_Init(void) ...@@ -243,6 +247,7 @@ void Power_IG_OFF_Init(void)
/*关闭所有断码*/ /*关闭所有断码*/
Seg_Display_OFF(); Seg_Display_OFF();
Key_Set_IG_Status(KEY_IG_OFF);
} }
void Power_IG_ON_Init(void) void Power_IG_ON_Init(void)
{ {
...@@ -263,6 +268,7 @@ void Power_IG_ON_Init(void) ...@@ -263,6 +268,7 @@ void Power_IG_ON_Init(void)
UserGaugeK15Init() ;/*仪表IGON调用*/ UserGaugeK15Init() ;/*仪表IGON调用*/
/*end*/ /*end*/
CD4051B_KL15Init(); CD4051B_KL15Init();
Key_Set_IG_Status(KEY_IG_ON);
/*5s不按按键计时清零*/ /*5s不按按键计时清零*/
//LongTimeNoKey_Operation_TimeRest(); //LongTimeNoKey_Operation_TimeRest();
......
...@@ -1207,7 +1207,7 @@ void Seg_Display_OFF(void) ...@@ -1207,7 +1207,7 @@ void Seg_Display_OFF(void)
uint8_t Flash_time = 0; uint8_t Flash_time = 0;
uint16_t Color_Time = 0;// 20 更换一次颜色 uint16_t Color_Time = 0;// 20 更换一次颜色
extern uint8_t BackOdoFlagSta ; uint8_t BackOdoFlagSta ;
void Gui_Display_Test(void) void Gui_Display_Test(void)
{ {
uint16_t Get_Data_Veh_value = 0u ; uint16_t Get_Data_Veh_value = 0u ;
...@@ -1283,6 +1283,7 @@ void Gui_Display_Test(void) ...@@ -1283,6 +1283,7 @@ void Gui_Display_Test(void)
Loc_Display_Red(1, 1, 1); Loc_Display_Red(1, 1, 1);
Flash_time = 0; Flash_time = 0;
Color_Time = 0; Color_Time = 0;
BackOdoFlagSta = 1 ;
break; break;
} }
} }
......
...@@ -1756,6 +1756,7 @@ void Level3_4Menu_7Enter_1(void) ...@@ -1756,6 +1756,7 @@ void Level3_4Menu_7Enter_1(void)
void Level3_4Menu_7Do_1(void) void Level3_4Menu_7Do_1(void)
{ {
GUI_OftenShow_Display(); GUI_OftenShow_Display();
GUI_BG_UserSet_Display(GUI_DISP_MODE_NORMAL);
GUI_BG_User_Light1_Display(GUI_DISP_MODE_NORMAL); GUI_BG_User_Light1_Display(GUI_DISP_MODE_NORMAL);
} }
void Level3_4Menu_7Exit_1(void) void Level3_4Menu_7Exit_1(void)
...@@ -1779,6 +1780,7 @@ void Level3_4Menu_7Enter_2(void) ...@@ -1779,6 +1780,7 @@ void Level3_4Menu_7Enter_2(void)
void Level3_4Menu_7Do_2(void) void Level3_4Menu_7Do_2(void)
{ {
GUI_OftenShow_Display(); GUI_OftenShow_Display();
GUI_BG_UserSet_Display(GUI_DISP_MODE_NORMAL);
GUI_BG_User_Light2_Display(GUI_DISP_MODE_NORMAL); GUI_BG_User_Light2_Display(GUI_DISP_MODE_NORMAL);
} }
void Level3_4Menu_7Exit_2(void) void Level3_4Menu_7Exit_2(void)
......
...@@ -6,11 +6,9 @@ ...@@ -6,11 +6,9 @@
#include "Key.h" #include "Key.h"
#include "CAN_Lib.h" #include "CAN_Lib.h"
#include "GUI.h" #include "GUI.h"
#include "Services_ODO_User.h" /*清空总计里程函数*/
#include "Menu.h" #include "Menu.h"
#include "jcua.h" #include "jcua.h"
#include "kwp2000_service.h" #include "kwp2000_service.h"
#include "SEG_DISPLAY.h"
uint32_t EnterTimer[10]; uint32_t EnterTimer[10];
uint8_t UE_EN[Display_MAX]; uint8_t UE_EN[Display_MAX];
...@@ -26,8 +24,6 @@ uint8_t BG_display_flag; ...@@ -26,8 +24,6 @@ uint8_t BG_display_flag;
uint16_t HMI_StartAnimationFrameCnt; uint16_t HMI_StartAnimationFrameCnt;
uint8_t backgroundOFFFlag; uint8_t backgroundOFFFlag;
uint8_t BackOdoFlagSta;
uint8_t BackOdoFlag;
static void switch_branch(void); static void switch_branch(void);
...@@ -154,68 +150,59 @@ void DisplayServices(void) ...@@ -154,68 +150,59 @@ void DisplayServices(void)
} }
DispSch_xxxMs_Logic(10u); DispSch_xxxMs_Logic(10u);
#if 0
/*上短*/ /*上短*/
if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_UP == KEY_EVENT_SHORT_PRESS) if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_UP == KEY_EVENT_SHORT_PRESS_1)
{ {
HMI_Clear_KEY_UP(); HMI_Clear_KEY_UP();
} }
/*上长*/ /*上长*/
else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_UP == KEY_EVENT_LONG_PRESS) else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_UP == KEY_EVENT_LONG_PRESS_1)
{ {
HMI_Clear_KEY_UP(); HMI_Clear_KEY_UP();
} }
/*下短*/ /*下短*/
else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_DOWN == KEY_EVENT_SHORT_PRESS) else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_DOWN == KEY_EVENT_SHORT_PRESS_1)
{ {
HMI_Clear_KEY_DOWN(); HMI_Clear_KEY_DOWN();
} }
/*下长*/ /*下长*/
else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_DOWN == KEY_EVENT_LONG_PRESS) else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_DOWN == KEY_EVENT_LONG_PRESS_1)
{ {
HMI_Clear_KEY_DOWN(); HMI_Clear_KEY_DOWN();
} }
/*确认短*/ /*确认短*/
else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_CONFIRM == KEY_EVENT_SHORT_PRESS) else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_CONFIRM == KEY_EVENT_SHORT_PRESS_1)
{ {
HMI_Clear_KEY_CONFIRM(); HMI_Clear_KEY_CONFIRM();
} }
/*确认长*/ /*确认长*/
else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_CONFIRM == KEY_EVENT_LONG_PRESS) else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_CONFIRM == KEY_EVENT_LONG_PRESS_1)
{ {
HMI_Clear_KEY_CONFIRM(); HMI_Clear_KEY_CONFIRM();
} }
/*确认超长 3S*/ /*确认超长 3S*/
else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_CONFIRM == KEY_EVENT_SUPER_LONG_PRESS) else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_CONFIRM == KEY_EVENT_LONG_PRESS_2)
{ {
HMI_Clear_KEY_CONFIRM(); HMI_Clear_KEY_CONFIRM();
if (BackOdoFlag == 0)
{
BackOdoFlag = 1;
HMI_Clear_KEY_CONFIRM();
BackOdoFlagSta = 1 ;
Gui_Display_Test();
/*TYW总计清零*/
TYW_Data_ODO_Clear();
}
} }
/*返回短*/ /*返回短*/
else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_CANCEL == KEY_EVENT_SHORT_PRESS) else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_CANCEL == KEY_EVENT_SHORT_PRESS_1)
{ {
HMI_Clear_KEY_CANCEL(); HMI_Clear_KEY_CANCEL();
} }
/*返回长*/ /*返回长*/
else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_CANCEL == KEY_EVENT_LONG_PRESS) else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_CANCEL == KEY_EVENT_LONG_PRESS_1)
{ {
HMI_Clear_KEY_CANCEL(); HMI_Clear_KEY_CANCEL();
} }
/*MENU短*/ /*MENU短*/
else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_MENU == KEY_EVENT_SHORT_PRESS) else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_MENU == KEY_EVENT_SHORT_PRESS_1)
{ {
HMI_Clear_KEY_MENU(); HMI_Clear_KEY_MENU();
} }
/*MENU长*/ /*MENU长*/
else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_MENU == KEY_EVENT_LONG_PRESS) else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_MENU == KEY_EVENT_LONG_PRESS_1)
{ {
HMI_Clear_KEY_MENU(); HMI_Clear_KEY_MENU();
} }
...@@ -225,12 +212,12 @@ void DisplayServices(void) ...@@ -225,12 +212,12 @@ void DisplayServices(void)
} }
/*ODOTrip短*/ /*ODOTrip短*/
if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_ODOTRIP == KEY_EVENT_SHORT_PRESS) if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_ODOTRIP == KEY_EVENT_SHORT_PRESS_1)
{ {
HMI_Clear_KEY_ODOTRIP(); HMI_Clear_KEY_ODOTRIP();
} }
/*ODOTrip长*/ /*ODOTrip长*/
else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_ODOTRIP == KEY_EVENT_LONG_PRESS) else if (UE_CtrlInfo.HMI_KEYInfo.u8KEY_ODOTRIP == KEY_EVENT_LONG_PRESS_1)
{ {
HMI_Clear_KEY_ODOTRIP(); HMI_Clear_KEY_ODOTRIP();
} }
...@@ -243,6 +230,7 @@ void DisplayServices(void) ...@@ -243,6 +230,7 @@ void DisplayServices(void)
{ {
; /*do nothing*/ ; /*do nothing*/
} }
#endif
} }
/*----开机动画----*/ /*----开机动画----*/
...@@ -250,9 +238,7 @@ void Display_StartAnimationEnter(void) ...@@ -250,9 +238,7 @@ void Display_StartAnimationEnter(void)
{ {
HMI_StartAnimationFrameCnt = 0u; HMI_StartAnimationFrameCnt = 0u;
backgroundOFFFlag = 0; backgroundOFFFlag = 0;
MenuFlag.Menu_Popup_Flag= 0u ; MenuFlag.Menu_Popup_Flag = 0u ;
BackOdoFlagSta = 0;
BackOdoFlag = 0;
/*硬清空所有缓存数据*/ /*硬清空所有缓存数据*/
loc_free_mem(MENU_Sprite, MENU_Sprite); loc_free_mem(MENU_Sprite, MENU_Sprite);
......
...@@ -265,35 +265,7 @@ static void Common_Set_Act_E_Speed(uint16_t Val) ...@@ -265,35 +265,7 @@ 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_V_Speed(uint16_t Val)
{ {
static uint16_t Vspeed_ReflashTime = 0; Disp_V_Speed = Val;
static uint16_t Vspeed_Val = 0;
if ((Vspeed_ReflashTime > 0) && (Vspeed_Val != Val))
{
Vspeed_ReflashTime--;
}
if (Vspeed_ReflashTime == 0)
{
if (Vspeed_Val < Val)
{
Vspeed_ReflashTime = 50 / (Val - Vspeed_Val);
Vspeed_Val++;
}
else if (Vspeed_Val > Val)
{
Vspeed_ReflashTime = 50 / (Vspeed_Val - Val);
Vspeed_Val--;
}
else
{
Vspeed_ReflashTime = 500;
}
}
Disp_V_Speed = Vspeed_Val;
} }
static void Common_Set_Disp_E_Speed(uint16_t Val) static void Common_Set_Disp_E_Speed(uint16_t Val)
{ {
......
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