nt9856x/rtos/code/application/source/cardv/SrcCode/System/SysMain_cmd.c
2024-01-03 14:38:10 +08:00

272 lines
6.9 KiB
C

#include <kwrap/stdio.h>
#include <string.h>
#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 <kflow_common/nvtmpp.h>
#endif
#include <gsensor.h>
#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 <kwrap/debug.h>
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// 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;
}