#include #include #include "kwrap/nvt_type.h" #include "kwrap/type.h" #include "kwrap/sxcmd.h" #include "kwrap/cmdsys.h" #include "PrjInc.h" #include "hd_common.h" #ifdef __FREERTOS #include "FreeRTOS.h" #include #endif #include #include "UIApp/AppDisp_PipView.h" #if HUNTING_CAMERA_MCU == ENABLE #include "sys_fastboot.h" #endif #define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER /////////////////////////////////////////////////////////////////////////////// #define __MODULE__ SysMainCmd #define __DBGLVL__ ((THIS_DBGLVL>=PRJ_DBG_LVL)?THIS_DBGLVL:PRJ_DBG_LVL) #define __DBGFLT__ "*" //*=All, [mark]=CustomClass #include /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // temp memory for user cmd /////////////////////////////////////////////////////////////////////////////// #define MAX_BUF_NUM 1 //#define TEMPBUF_GET_MAXSIZE 0xffffffff static UINT32 temp_pa; UINT32 SysMain_GetTempBuffer(UINT32 uiSize) { CHAR name[]= "UsrTmp"; void *va; HD_RESULT ret; HD_COMMON_MEM_DDR_ID ddr_id = DDR_ID0; if(temp_pa) { DBG_ERR("need release buf\r\n"); return 0; } ret = hd_common_mem_alloc(name, &temp_pa, (void **)&va, uiSize, ddr_id); if (ret != HD_OK) { DBG_ERR("err:alloc size 0x%x, ddr %d\r\n", (unsigned int)(uiSize), (int)(ddr_id)); return 0; } DBG_IND("temp_pa = 0x%x, va = 0x%x\r\n", (unsigned int)(temp_pa), (unsigned int)(va)); return (UINT32)va; } UINT32 SysMain_RelTempBuffer(UINT32 addr) { HD_RESULT ret; DBG_IND("temp_pa = 0x%x, va = 0x%x\r\n", (unsigned int)(temp_pa), (unsigned int)(addr)); if(!temp_pa||!addr){ DBG_ERR("not allo\r\n"); return HD_ERR_UNINIT; } ret = hd_common_mem_free(temp_pa, (void *)addr); if (ret != HD_OK) { DBG_ERR("err:free temp_pa = 0x%x, va = 0x%x\r\n", (unsigned int)(addr), (unsigned int)(addr)); return HD_ERR_NG; }else { temp_pa =0; } return HD_OK; } static BOOL cmd_sys_mem(unsigned char argc, char **argv) { nvt_cmdsys_runcmd("ker dumpmem"); #ifdef __FREERTOS vPortDumpHeap(); nvt_cmdsys_runcmd("libc heap"); nvtmpp_dump_mem_range(vk_printk); #endif return TRUE; } static BOOL Cmd_user_pip(unsigned char argc, char **argv) { UINT32 pip_style = 0; sscanf_s(argv[0], "%d", &pip_style); PipView_SetStyle(pip_style); return TRUE; } #if defined(_UI_STYLE_LVGL_) typedef struct _KeyTab { CHAR *name; NVTEVT evt; } KEYTAB; static KEYTAB keyTest[] = { {"0.LV_USER_KEY_ZOOMIN",NVTEVT_KEY_ZOOMIN}, {"1.LV_USER_KEY_ZOOMOUT",NVTEVT_KEY_ZOOMOUT}, {"2.LV_USER_KEY_MENU",NVTEVT_KEY_MENU}, {"3.LV_USER_KEY_SELECT",NVTEVT_KEY_SELECT}, {"4.LV_USER_KEY_MODE",NVTEVT_KEY_MODE}, {"5.LV_KEY_ENTER",NVTEVT_KEY_ENTER}, {"6.NVTEVT_CB_MOVIE_FULL",NVTEVT_CB_MOVIE_FULL}, {"7.NVTEVT_CB_MOVIE_REC_FINISH",NVTEVT_CB_MOVIE_REC_FINISH}, {"8.NVTEVT_CB_MOVIE_WR_ERROR",NVTEVT_CB_MOVIE_WR_ERROR}, {"9.NVTEVT_CB_MOVIE_SLOW",NVTEVT_CB_MOVIE_SLOW}, {"10.NVTEVT_CB_EMR_COMPLETED",NVTEVT_CB_EMR_COMPLETED}, {"11.NVTEVT_CB_OZOOMSTEPCHG",NVTEVT_CB_OZOOMSTEPCHG}, {"12.NVTEVT_CB_DZOOMSTEPCHG",NVTEVT_CB_DZOOMSTEPCHG}, {"13.NVTEVT_BATTERY",NVTEVT_BATTERY}, {"14.NVTEVT_STORAGE_CHANGE",NVTEVT_STORAGE_CHANGE}, {"15.NVTEVT_BACKGROUND_DONE",NVTEVT_BACKGROUND_DONE}, }; static BOOL Cmd_user_EventTest(unsigned char argc, char **argv) { UINT32 event = 0; sscanf_s(argv[0], "%d", &event); if (event>=(sizeof(keyTest)/sizeof(KEYTAB))) { DBG_ERR("event_no bigger than keyTest table size\r\n"); return FALSE; } DBG_ERR("post event %s\r\n",keyTest[event].name); Ux_PostEvent((NVTEVT)keyTest[event].evt, 1,NVTEVT_KEY_PRESS); Ux_PostEvent((NVTEVT)keyTest[event].evt, 1,NVTEVT_KEY_RELEASE); return TRUE; } #endif #if (CURL_FUNC == ENABLE) #include "CurlNvt/CurlNvtAPI.h" static BOOL Cmd_user_CurlTest(unsigned char argc, char **argv) { CURLNVT_CMD curlCmd={0}; CHAR curlStr[]="curl -q -v --insecure --output /mnt/sd/curl_dest/002.jpg --url http://192.168.1.254/image056.jpg"; curlCmd.isWaitFinish = TRUE; // download file curlCmd.strCmd = curlStr; curlCmd.cmdFinishCB = NULL; CurlNvt_Cmd(&curlCmd); return TRUE; } #endif static BOOL Cmd_user_ShowPowerStatus(unsigned char argc, char **argv) { UINT32 uiEther[6]={0}; UINT32 uiGDC=0; //GDC uiGDC =(*(UINT32 volatile *)0xF0C20004); if (uiGDC&0x20) // bit5, DC_EN { DBG_DUMP("GDC ENABLE\r\n"); } else { DBG_DUMP("GDC DISABLE\r\n"); } //ETH uiEther[0] =(*(UINT32 volatile *)0xF02B3AE8); uiEther[1] =(*(UINT32 volatile *)0xF02B389C); uiEther[2] =(*(UINT32 volatile *)0xF02B38CC); uiEther[3] =(*(UINT32 volatile *)0xF02B3888); uiEther[4] =(*(UINT32 volatile *)0xF02B38C8); uiEther[5] =(*(UINT32 volatile *)0xF02B38F8); if (uiEther[0]==0x01&&uiEther[1]==0x33&&uiEther[2]==0xA5\ &&uiEther[3]==0x08&&uiEther[4]==0x03&&uiEther[5]==0x61) { DBG_DUMP("Eth Power down\r\n"); } else { DBG_DUMP("Eth don't power down\r\n"); } return TRUE; } #include "flow_preview.h" static BOOL Cmd_PowerOff_Test(unsigned char argc, char **argv) { flow_preview_set_stop_flag(TRUE); return TRUE; } #if HUNTING_CAMERA_MCU == ENABLE static BOOL sf_log_fastboot_msg_en(unsigned char argc, char **argv) { fastboot_msg_en(ENABLE); DBG_DUMP("log ENABLE\r\n"); return TRUE; } #endif SXCMD_BEGIN(sys_cmd_tbl, "system command") SXCMD_ITEM("mem %", cmd_sys_mem, "system memory layout") SXCMD_ITEM("pip %", Cmd_user_pip, "pip view style") SXCMD_ITEM("power", Cmd_user_ShowPowerStatus, "show gdc/eth power down status") #if defined(_UI_STYLE_LVGL_) SXCMD_ITEM("event %", Cmd_user_EventTest, "lvgl user event test") #endif #if (CURL_FUNC == ENABLE) SXCMD_ITEM("curl", Cmd_user_CurlTest, "curl command test") #endif SXCMD_ITEM("power_off %", Cmd_PowerOff_Test, "flowpreview power off test") #if HUNTING_CAMERA_MCU == ENABLE SXCMD_ITEM("log %", sf_log_fastboot_msg_en, "log on") #endif SXCMD_END() static int sys_cmd_showhelp(int (*dump)(const char *fmt, ...)) { UINT32 cmd_num = SXCMD_NUM(sys_cmd_tbl); UINT32 loop = 1; dump("---------------------------------------------------------------------\r\n"); dump(" %s\n", "mem"); dump("---------------------------------------------------------------------\r\n"); for (loop = 1 ; loop <= cmd_num ; loop++) { dump("%15s : %s\r\n", sys_cmd_tbl[loop].p_name, sys_cmd_tbl[loop].p_desc); } return 0; } MAINFUNC_ENTRY(sys, argc, argv) { UINT32 cmd_num = SXCMD_NUM(sys_cmd_tbl); UINT32 loop; int ret; if (argc < 2) { return -1; } if (strncmp(argv[1], "?", 2) == 0) { sys_cmd_showhelp(vk_printk); return 0; } for (loop = 1 ; loop <= cmd_num ; loop++) { if (strncmp(argv[1], sys_cmd_tbl[loop].p_name, strlen(argv[1])) == 0) { ret = sys_cmd_tbl[loop].p_func(argc-2, &argv[2]); return ret; } } sys_cmd_showhelp(vk_printk); return 0; }