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