diff --git a/code/application/source/cardv/SrcCode/Mode/UIModePhoto.c b/code/application/source/cardv/SrcCode/Mode/UIModePhoto.c index 33fad98f9..a1809ba38 100755 --- a/code/application/source/cardv/SrcCode/Mode/UIModePhoto.c +++ b/code/application/source/cardv/SrcCode/Mode/UIModePhoto.c @@ -2,7 +2,9 @@ #include "PrjInc.h" #include "Mode/UIModePhoto.h" - +#if HUNTING_CAMERA_MCU == ENABLE +#include "sf_common.h" +#endif #if(WIFI_FUNC==ENABLE) #include "UIModeWifi.h" #endif @@ -58,6 +60,10 @@ void ModePhoto_Open(void) } } #endif + + #if HUNTING_CAMERA_MCU == ENABLE + sf_mem_free(); + #endif #endif } void ModePhoto_Close(void) diff --git a/code/application/source/cardv/SrcCode/NVTUserCommand.h b/code/application/source/cardv/SrcCode/NVTUserCommand.h index 0dc590cf6..71201744a 100755 --- a/code/application/source/cardv/SrcCode/NVTUserCommand.h +++ b/code/application/source/cardv/SrcCode/NVTUserCommand.h @@ -103,6 +103,7 @@ typedef enum { #if defined(_UI_STYLE_LVGL_) NVTEVT_UPDATE_LVGL = 0x80000001, ///< Update lvgl task handel #endif + NVTEVT_MSG_SCREEN_KEY = 0x80000002, /* INSERT NEW EVENT HRER */ diff --git a/code/application/source/cardv/SrcCode/System/SysMain.c b/code/application/source/cardv/SrcCode/System/SysMain.c index 505827410..7441a328a 100644 --- a/code/application/source/cardv/SrcCode/System/SysMain.c +++ b/code/application/source/cardv/SrcCode/System/SysMain.c @@ -696,12 +696,6 @@ void UserMainProc(void) g_keyboard_pressed = false; leftKeyPressingTime_ms = 0; } - //call input task immediately for read key state - if(indev_keypad){ - _lv_user_task_handler_lock(); - indev_keypad->driver.read_task->task_cb(indev_keypad->driver.read_task); - _lv_user_task_handler_unlock(); - } /* workaround to extend key release event for lvgl */ if((paramArray[0] > NVTEVT_KEY_RELEASE_START) && (paramArray[0] < NVTEVT_KEY_RELEASE_END)){ @@ -723,6 +717,12 @@ void UserMainProc(void) DBG_WRN("evt = %lx\r\n", evt); } } + //call input task immediately for read key state + if(indev_keypad){ + _lv_user_task_handler_lock(); + indev_keypad->driver.read_task->task_cb(indev_keypad->driver.read_task); + _lv_user_task_handler_unlock(); + } if(paramArray[0] == NVTEVT_KEY_CONTINUE){ uint32_t nvt_user_key = lv_user_keymap_find(evt); #define MENU_UNLUCK 0 diff --git a/code/application/source/cardv/SrcCode/System/SysMain_Exe.c b/code/application/source/cardv/SrcCode/System/SysMain_Exe.c index 604baf7fa..15cdfc886 100755 --- a/code/application/source/cardv/SrcCode/System/SysMain_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysMain_Exe.c @@ -409,10 +409,7 @@ INT32 System_OnBoot(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) } #endif #if HUNTING_CAMERA_MCU == ENABLE - printf("[%s]:%d sf s\n", __FUNCTION__, __LINE__); - system("sync"); - system("echo 3 >/proc/sys/vm/drop_caches"); - printf("[%s]:%d sf e\n", __FUNCTION__, __LINE__); + sf_mem_free(); #endif return NVTEVT_CONSUME; } diff --git a/code/application/source/cardv/SrcCode/System/main.c b/code/application/source/cardv/SrcCode/System/main.c index 8d94cf74d..0c7c274ce 100755 --- a/code/application/source/cardv/SrcCode/System/main.c +++ b/code/application/source/cardv/SrcCode/System/main.c @@ -332,11 +332,13 @@ UINT8 sf_cardv_check_power_on_mode(void) char *pStrOtsOk = "Mode="; char *pStrUpFw = "UpFw="; char *pStrUpMcu = "mcu="; + char *pStrSF = "sf="; char *temp = NULL; UINT8 startup = 0; UINT8 UpFw = 0; UINT8 Upmcu = 0; + UINT8 sftmp = 0; system("cat /proc/cmdline > /tmp/Mode.txt"); fp = fopen("/tmp/Mode.txt","r"); @@ -371,7 +373,13 @@ UINT8 sf_cardv_check_power_on_mode(void) sscanf(temp, "%hhd", &Upmcu); sf_set_mcu_update_flag(Upmcu); } - SLOGI("StartMode=%d,UpFw=%d Upmcu=%d\r\n", startup, UpFw, Upmcu); + temp = strstr(pStrSrc, pStrSF); + if ( temp != NULL) { + temp += strlen("sf="); + sscanf(temp, "%hhd", &sftmp); + sf_cardv_battery_level_set(sftmp); + } + SLOGI("StartMode=%d,UpFw=%d Upmcu=%d sftmp=%d\r\n", startup, UpFw, Upmcu, sftmp); free(pStrSrc); } diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c index a0aef5332..5bc06161c 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c @@ -949,12 +949,7 @@ static void UIFlowMenuCommonItem_ScrOpen(lv_obj_t* obj) gMenuLuck = MENU_UNLUCK; #if HUNTING_CAMERA_MCU == ENABLE sf_set_menu_open(TRUE); - - printf("[%s]:%d sf s\n", __FUNCTION__, __LINE__); - system("sync"); - system("echo 3 >/proc/sys/vm/drop_caches"); - printf("[%s]:%d sf e\n", __FUNCTION__, __LINE__); - + sf_mem_free(); #endif } diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c index b56488920..325c11d43 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c @@ -73,6 +73,7 @@ static BOOL g_PhotoBgInitFileSys = FALSE; static BOOL g_SysStrg_Chg = FALSE; //#NT#2023/11/21#Eric - end +static void UIFlowPhoto_Key(lv_obj_t* obj, uint32_t key); static void sf_show_send_text(lv_obj_t* obj, const unsigned short status); static lv_obj_t *g_preview_info_msgbox = NULL; static lv_obj_t *g_preview_info_label = NULL; @@ -1797,6 +1798,7 @@ void UIFlowPhoto_UpdateInfo(lv_obj_t* obj, const LV_USER_EVENT_NVTMSG_DATA* msg) { sf_wifi_server_stop_shoot_respond(0); } + sf_mem_free(); } #if HUNTING_CAMERA_MCU == ENABLE sf_set_cap_statu(FALSE); diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPlay/UIFlowPlayEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPlay/UIFlowPlayEventCallback.c index 98d1e6f62..f9182af37 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPlay/UIFlowPlayEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPlay/UIFlowPlayEventCallback.c @@ -2434,7 +2434,6 @@ static void UIFlowPlay_Key(lv_obj_t* obj, uint32_t key) static void UIFlowPlay_NVTMSG(lv_obj_t* obj, const LV_USER_EVENT_NVTMSG_DATA* msg) { - switch(msg->event) { case NVTEVT_CB_MOVIE_FINISH: @@ -2506,6 +2505,18 @@ static void UIFlowPlay_NVTMSG(lv_obj_t* obj, const LV_USER_EVENT_NVTMSG_DATA* ms break; } + case NVTEVT_MSG_SCREEN_KEY: + if (1 == msg->paramNum) + { + uint32_t key = msg->paramArray[0]; + if (SELECTION_SHOW_TURE == gSeletionShow) { + Option_play_Selection_Key(obj, key); + } else { + /* handle key event */ + UIFlowPlay_Key(obj, key); + } + } + break; default: break; diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowWrnMsg/UIFlowWrnMsgEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowWrnMsg/UIFlowWrnMsgEventCallback.c index 40d64b6b4..49c671a2d 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowWrnMsg/UIFlowWrnMsgEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowWrnMsg/UIFlowWrnMsgEventCallback.c @@ -326,7 +326,11 @@ void message_box_wrnmsg_OnKey(lv_obj_t* msgbox, uint32_t key) { // static uint32_t key22 = LV_KEY_END; // key22 = key; - // lv_event_send(lv_obj_get_parent(UIFlowWrnMsg), LV_USER_EVENT_KEY_RELEASE, &key22); + if(lv_plugin_scr_count() >= 2){ + lv_event_send(lv_plugin_scr_by_index(lv_plugin_scr_count() - 2), LV_USER_EVENT_NVTMSG, gen_nvtmsg_data(NVTEVT_MSG_SCREEN_KEY, 1, key)); + }else{ + lv_event_send(lv_plugin_scr_act(), LV_USER_EVENT_NVTMSG, gen_nvtmsg_data(NVTEVT_MSG_SCREEN_KEY, 1, key)); + } return; switch(key) { diff --git a/code/lib/source/sifar/code/include/sf_common.h b/code/lib/source/sifar/code/include/sf_common.h index 45c796223..4e5a64c44 100755 --- a/code/lib/source/sifar/code/include/sf_common.h +++ b/code/lib/source/sifar/code/include/sf_common.h @@ -204,4 +204,6 @@ UINT8 sf_get_net_generation(void); void sf_set_net_generation(UINT8 value); UINT32 sf_cardv_load_menu_info_start(void); BOOL sf_vos_perf_list_dump(unsigned char argc, char **argv); +void sf_mem_free(void); +void sf_cardv_battery_level_set(UINT32 val); #endif diff --git a/code/lib/source/sifar/code/source/common/sf_common.c b/code/lib/source/sifar/code/source/common/sf_common.c index 9933b4dce..3661bee63 100755 --- a/code/lib/source/sifar/code/source/common/sf_common.c +++ b/code/lib/source/sifar/code/source/common/sf_common.c @@ -2521,7 +2521,18 @@ UINT32 sf_cardv_battery_level_get(void) return (UINT32)sf_LatestBattLevel; } - +/************************************************* + Function: sf_battery_level_set + Description: set battery level + Input: N/A + Output: N/A + Return: N/A + Others: N/A +*************************************************/ +void sf_cardv_battery_level_set(UINT32 val) +{ + sf_LatestBattLevel = val; +} /************************************************* Function: sf_battery_value_get Description: get battery value x% @@ -3498,4 +3509,12 @@ BOOL sf_vos_perf_list_dump(unsigned char argc, char **argv) sleep(1); system("dmesg"); return TRUE; -} \ No newline at end of file +} + +void sf_mem_free(void) +{ + printf("[%s]:%d sf s\n", __FUNCTION__, __LINE__); + system("sync"); + system("echo 3 >/proc/sys/vm/drop_caches"); + printf("[%s]:%d sf e\n", __FUNCTION__, __LINE__); +} diff --git a/rtos/code/application/source/cardv/SrcCode/System/sys_linuxboot.c b/rtos/code/application/source/cardv/SrcCode/System/sys_linuxboot.c index aa75b4ee1..1615806e6 100644 --- a/rtos/code/application/source/cardv/SrcCode/System/sys_linuxboot.c +++ b/rtos/code/application/source/cardv/SrcCode/System/sys_linuxboot.c @@ -25,6 +25,7 @@ #include "sys_fastboot.h" #if HUNTING_CAMERA_MCU == ENABLE #include "sf_mcu.h" +#include "sf_battery.h" #endif #define CFG_BOOTARG_EXTRA_MAX_LEN 0x100 /* for init.d script parsing by (dmesg | grep xxx) */ @@ -854,7 +855,7 @@ static int make_bootargs(LINUXTMP_PARTITION *p_linuxtmp, unsigned int bootts_beg // } // } - snprintf(PowerOnModeStr, sizeof(PowerOnModeStr), "Mode=%d UpFw=%d mcu=%d",sf_get_power_on_mode(), sf_in_update() , sf_in_mcu_update()); + snprintf(PowerOnModeStr, sizeof(PowerOnModeStr), "Mode=%d UpFw=%d mcu=%d sf=%d",sf_get_power_on_mode(), sf_in_update() , sf_in_mcu_update(), sf_battery_level_get()); linuxboot_set_extra_bootarg(PowerOnModeStr); #endif p_linuxtmp->bootargs_addr = p_linuxtmp->tmp_curr;