Fixed long press key event bug.
This commit is contained in:
parent
2ea7b78010
commit
0dbe58adbd
|
@ -151,11 +151,11 @@ void DrvKey_Init(void)
|
|||
static UINT32 KeyTestPressCnt = 0;
|
||||
static UINT32 SendKeyCnt = 0;
|
||||
|
||||
static UINT32 LeftKeyPressCnt = 0;
|
||||
static UINT32 LeftSendKeyCnt = 0;
|
||||
// static UINT32 LeftKeyPressCnt = 0;
|
||||
// static UINT32 LeftSendKeyCnt = 0;
|
||||
|
||||
static UINT32 RightKeyPressCnt = 0;
|
||||
static UINT32 RightSendKeyCnt = 0;
|
||||
// static UINT32 RightKeyPressCnt = 0;
|
||||
// static UINT32 RightSendKeyCnt = 0;
|
||||
|
||||
//static BOOL KeyPress_Long = FALSE;
|
||||
|
||||
|
@ -179,17 +179,17 @@ UINT32 DrvKey_DetNormalKey(void)
|
|||
static UINT32 cmdflag = 0;
|
||||
static UINT32 time = 0;
|
||||
|
||||
static UINT32 LeftCmdflag = 0;
|
||||
static VOS_TICK LeftTtick=0;
|
||||
static UINT32 LeftFlag = 0;
|
||||
// static UINT32 LeftCmdflag = 0;
|
||||
// static VOS_TICK LeftTtick=0;
|
||||
// static UINT32 LeftFlag = 0;
|
||||
static UINT32 LeftPressFlag = 0;
|
||||
static UINT32 LeftTime = 0;
|
||||
// static UINT32 LeftTime = 0;
|
||||
|
||||
static UINT32 RightCmdflag = 0;
|
||||
static VOS_TICK RightTtick=0;
|
||||
static UINT32 RightFlag = 0;
|
||||
//static UINT32 RightPressFlag = 0;
|
||||
static UINT32 RightTime = 0;
|
||||
// static UINT32 RightCmdflag = 0;
|
||||
// static VOS_TICK RightTtick=0;
|
||||
// static UINT32 RightFlag = 0;
|
||||
// static UINT32 RightPressFlag = 0;
|
||||
// static UINT32 RightTime = 0;
|
||||
//static UINT32 retset_cmdflag = 0;
|
||||
#if (ADC_KEY == ENABLE)
|
||||
UINT32 uiKey1Lvl = VolDet_GetKey1Level();
|
||||
|
@ -282,93 +282,99 @@ UINT32 DrvKey_DetNormalKey(void)
|
|||
if (gpio_getPin(GPIO_KEY_DOWN)) {
|
||||
uiKeyCode |= FLGKEY_DOWN;
|
||||
}
|
||||
|
||||
if(gpio_getPin(GPIO_KEY_RIGHT))
|
||||
{
|
||||
if(0 == RightFlag){
|
||||
vos_perf_mark(&RightTtick);
|
||||
RightFlag = 1;
|
||||
}
|
||||
RightKeyPressCnt++;
|
||||
vos_perf_mark(&tticktmp);
|
||||
RightTime = ((tticktmp/1000) - (RightTtick/1000));
|
||||
if((!RightCmdflag) && (RightTime >= 5000))
|
||||
{
|
||||
RightCmdflag = 1;
|
||||
sf_save_camera_info();
|
||||
vos_perf_mark(&ttick);
|
||||
}
|
||||
|
||||
}else {
|
||||
|
||||
if(RightKeyPressCnt && (0 == sf_get_fw_update())){
|
||||
|
||||
if((++RightSendKeyCnt < SendKey_LessCnt) && (!RightCmdflag)){//shot key
|
||||
printf("[%s:%d] RightSendKeyCnt:%d RightKeyPressCnt:%d RightTime: %dms\n", __FUNCTION__, __LINE__, RightSendKeyCnt, RightKeyPressCnt, RightTime);
|
||||
uiKeyCode |= FLGKEY_RIGHT;
|
||||
}else {
|
||||
printf("[%s:%d] RightSendKeyCnt:%d RightKeyPressCnt:%d RightTime: %dms\n", __FUNCTION__, __LINE__, RightSendKeyCnt, RightKeyPressCnt, RightTime);
|
||||
|
||||
RightSendKeyCnt = 0;
|
||||
RightKeyPressCnt = 0;
|
||||
RightFlag = 0;
|
||||
RightTtick = 0;
|
||||
RightCmdflag = 0;
|
||||
}
|
||||
|
||||
}else{
|
||||
RightSendKeyCnt = 0;
|
||||
RightKeyPressCnt = 0;
|
||||
RightFlag = 0;
|
||||
RightTtick = 0;
|
||||
RightCmdflag = 0;
|
||||
}
|
||||
|
||||
|
||||
if (gpio_getPin(GPIO_KEY_RIGHT)) {
|
||||
uiKeyCode |= FLGKEY_RIGHT;
|
||||
}
|
||||
if (!gpio_getPin(GPIO_KEY_LEFT)) {
|
||||
uiKeyCode |= FLGKEY_LEFT;
|
||||
}
|
||||
|
||||
if(!(gpio_getPin(GPIO_KEY_LEFT)))
|
||||
{
|
||||
if(0 == LeftFlag){
|
||||
vos_perf_mark(&LeftTtick);
|
||||
LeftFlag = 1;
|
||||
}
|
||||
LeftKeyPressCnt++;
|
||||
vos_perf_mark(&tticktmp);
|
||||
LeftTime = ((tticktmp/1000) - (LeftTtick/1000));
|
||||
if((!LeftCmdflag) && (LeftTime >= 3000))
|
||||
{
|
||||
LeftCmdflag = 1;
|
||||
printf("[%s:%d] LeftSendKeyCnt:%d LeftKeyPressCnt:%d LeftTime: %dms\n", __FUNCTION__, __LINE__, LeftSendKeyCnt, LeftKeyPressCnt, LeftTime);
|
||||
Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, APP_POWER_OFF_APO);
|
||||
}
|
||||
}else {
|
||||
// if(gpio_getPin(GPIO_KEY_RIGHT))
|
||||
// {
|
||||
// if(0 == RightFlag){
|
||||
// vos_perf_mark(&RightTtick);
|
||||
// RightFlag = 1;
|
||||
// }
|
||||
// RightKeyPressCnt++;
|
||||
// vos_perf_mark(&tticktmp);
|
||||
// RightTime = ((tticktmp/1000) - (RightTtick/1000));
|
||||
// if((!RightCmdflag) && (RightTime >= 5000))
|
||||
// {
|
||||
// RightCmdflag = 1;
|
||||
// sf_save_camera_info();
|
||||
// vos_perf_mark(&ttick);
|
||||
// }
|
||||
|
||||
if(LeftKeyPressCnt && (0 == sf_get_fw_update())){
|
||||
// }else {
|
||||
|
||||
// if(RightKeyPressCnt && (0 == sf_get_fw_update())){
|
||||
|
||||
if((++LeftSendKeyCnt < SendKey_LessCnt) && (!LeftCmdflag)){//shot key
|
||||
printf("[%s:%d] LeftSendKeyCnt:%d LeftKeyPressCnt:%d LeftTime: %dms\n", __FUNCTION__, __LINE__, LeftSendKeyCnt, LeftKeyPressCnt, LeftTime);
|
||||
uiKeyCode |= FLGKEY_LEFT;
|
||||
}else {
|
||||
printf("[%s:%d] LeftSendKeyCnt:%d LeftKeyPressCnt:%d LeftTime: %dms\n", __FUNCTION__, __LINE__, LeftSendKeyCnt, LeftKeyPressCnt, LeftTime);
|
||||
// if((++RightSendKeyCnt < SendKey_LessCnt) && (!RightCmdflag)){//shot key
|
||||
// printf("[%s:%d] RightSendKeyCnt:%d RightKeyPressCnt:%d RightTime: %dms\n", __FUNCTION__, __LINE__, RightSendKeyCnt, RightKeyPressCnt, RightTime);
|
||||
// uiKeyCode |= FLGKEY_RIGHT;
|
||||
// }else {
|
||||
// printf("[%s:%d] RightSendKeyCnt:%d RightKeyPressCnt:%d RightTime: %dms\n", __FUNCTION__, __LINE__, RightSendKeyCnt, RightKeyPressCnt, RightTime);
|
||||
|
||||
LeftSendKeyCnt = 0;
|
||||
LeftKeyPressCnt = 0;
|
||||
LeftFlag = 0;
|
||||
LeftTtick = 0;
|
||||
LeftCmdflag = 0;
|
||||
}
|
||||
// RightSendKeyCnt = 0;
|
||||
// RightKeyPressCnt = 0;
|
||||
// RightFlag = 0;
|
||||
// RightTtick = 0;
|
||||
// RightCmdflag = 0;
|
||||
// }
|
||||
|
||||
}else{
|
||||
LeftSendKeyCnt = 0;
|
||||
LeftKeyPressCnt = 0;
|
||||
LeftFlag = 0;
|
||||
LeftTtick = 0;
|
||||
LeftCmdflag = 0;
|
||||
}
|
||||
// }else{
|
||||
// RightSendKeyCnt = 0;
|
||||
// RightKeyPressCnt = 0;
|
||||
// RightFlag = 0;
|
||||
// RightTtick = 0;
|
||||
// RightCmdflag = 0;
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
// if(!(gpio_getPin(GPIO_KEY_LEFT)))
|
||||
// {
|
||||
// if(0 == LeftFlag){
|
||||
// vos_perf_mark(&LeftTtick);
|
||||
// LeftFlag = 1;
|
||||
// }
|
||||
// LeftKeyPressCnt++;
|
||||
// vos_perf_mark(&tticktmp);
|
||||
// LeftTime = ((tticktmp/1000) - (LeftTtick/1000));
|
||||
// if((!LeftCmdflag) && (LeftTime >= 3000))
|
||||
// {
|
||||
// LeftCmdflag = 1;
|
||||
// printf("[%s:%d] LeftSendKeyCnt:%d LeftKeyPressCnt:%d LeftTime: %dms\n", __FUNCTION__, __LINE__, LeftSendKeyCnt, LeftKeyPressCnt, LeftTime);
|
||||
// Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, APP_POWER_OFF_APO);
|
||||
// }
|
||||
// }else {
|
||||
|
||||
// if(LeftKeyPressCnt && (0 == sf_get_fw_update())){
|
||||
|
||||
// if((++LeftSendKeyCnt < SendKey_LessCnt) && (!LeftCmdflag)){//shot key
|
||||
// printf("[%s:%d] LeftSendKeyCnt:%d LeftKeyPressCnt:%d LeftTime: %dms\n", __FUNCTION__, __LINE__, LeftSendKeyCnt, LeftKeyPressCnt, LeftTime);
|
||||
// uiKeyCode |= FLGKEY_LEFT;
|
||||
// }else {
|
||||
// printf("[%s:%d] LeftSendKeyCnt:%d LeftKeyPressCnt:%d LeftTime: %dms\n", __FUNCTION__, __LINE__, LeftSendKeyCnt, LeftKeyPressCnt, LeftTime);
|
||||
|
||||
// LeftSendKeyCnt = 0;
|
||||
// LeftKeyPressCnt = 0;
|
||||
// LeftFlag = 0;
|
||||
// LeftTtick = 0;
|
||||
// LeftCmdflag = 0;
|
||||
// }
|
||||
|
||||
// }else{
|
||||
// LeftSendKeyCnt = 0;
|
||||
// LeftKeyPressCnt = 0;
|
||||
// LeftFlag = 0;
|
||||
// LeftTtick = 0;
|
||||
// LeftCmdflag = 0;
|
||||
// }
|
||||
|
||||
|
||||
// }
|
||||
if (gpio_getPin(GPIO_KEY_DATAREADY)) {
|
||||
uiKeyCode |= FLGKEY_DATAREADY;
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "UIFlowLVGL/UIFlowWrnMsg/UIFlowWrnMsgAPI.h"
|
||||
#include "UIFlowLVGL/UIFlowMenuCommonConfirm/UIFlowMenuCommonConfirmAPI.h"
|
||||
#include "UIFlowLVGL/UIFlowPassword/UIFlowPasswordEventCallback.h"
|
||||
#include "UIFlowLVGL_SPORTCAM.h"
|
||||
#include "UIFlowPhotoParams.h"
|
||||
#include "UIFlowPhotoFuncs.h"
|
||||
#include "ImageApp/ImageApp_Photo.h"
|
||||
|
@ -49,6 +50,8 @@ static lv_task_t* task_qview = NULL;
|
|||
static void task_selftimer_cb(lv_task_t* task);
|
||||
static void task_qview_cb(lv_task_t* task);
|
||||
static void task_update_icons_timer_cb(lv_task_t* task);
|
||||
#define LONG_PRESS_INTERVAL 500
|
||||
static unsigned long KeyLeftPressingTimeMs = 0;
|
||||
|
||||
static BOOL g_PhotoBgInitFileSys = FALSE;
|
||||
|
||||
|
@ -1437,6 +1440,11 @@ static void UIFlowPhoto_Key(lv_obj_t* obj, uint32_t key)
|
|||
#endif
|
||||
switch(key)
|
||||
{
|
||||
case LV_USER_KEY_LEFT:
|
||||
{
|
||||
KeyLeftPressingTimeMs = 0;
|
||||
break;
|
||||
}
|
||||
case LV_KEY_ENTER:
|
||||
{
|
||||
#if HUNTING_CAMERA_MCU == ENABLE
|
||||
|
@ -1525,6 +1533,24 @@ void UIFlowPhoto_KeyRelease(lv_obj_t* obj, uint32_t key)
|
|||
break;
|
||||
}
|
||||
}
|
||||
void UIFlowPhtot_KeyLongPress(lv_obj_t* obj, uint32_t key)
|
||||
{
|
||||
switch(key)
|
||||
{
|
||||
case LV_USER_KEY_LEFT:
|
||||
{
|
||||
KeyLeftPressingTimeMs += LONG_PRESS_INTERVAL;
|
||||
if (3 * 1000 <= KeyLeftPressingTimeMs)
|
||||
{
|
||||
Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, APP_POWER_OFF_APO);
|
||||
KeyLeftPressingTimeMs = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UIFlowPhotoEventCallback(lv_obj_t* obj, lv_event_t event)
|
||||
{
|
||||
|
@ -1564,8 +1590,6 @@ void UIFlowPhotoEventCallback(lv_obj_t* obj, lv_event_t event)
|
|||
case LV_USER_EVENT_KEY_RELEASE:
|
||||
{
|
||||
uint32_t* key = (uint32_t*)lv_event_get_data();
|
||||
printf(" ===================================== 2222 release key = %d\n", *key);
|
||||
|
||||
/* handle key event */
|
||||
UIFlowPhoto_Key(obj, *key);
|
||||
|
||||
|
@ -1590,13 +1614,15 @@ void UIFlowPhotoEventCallback(lv_obj_t* obj, lv_event_t event)
|
|||
|
||||
// break;
|
||||
// }
|
||||
// case LV_USER_EVENT_KEY_LONG_PRESS:
|
||||
// {
|
||||
// uint32_t* key = (uint32_t*)lv_event_get_data();
|
||||
// UIFlowPhoto_KeyRelease(obj, *key);
|
||||
case LV_USER_EVENT_KEY_LONG_PRESS:
|
||||
{
|
||||
uint32_t* key = (uint32_t*)lv_event_get_data();
|
||||
UIFlowPhtot_KeyLongPress(obj, *key);
|
||||
break;
|
||||
UIFlowPhoto_KeyRelease(obj, *key);
|
||||
|
||||
// break;
|
||||
// }
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
/* handle nvt event except key event */
|
||||
|
|
Loading…
Reference in New Issue
Block a user