nt9856x/code/application/source/cardv/SrcCode/System/SysMain_Exe.c
2024-01-08 15:50:59 +08:00

797 lines
24 KiB
C
Executable File
Raw Blame History

/*
System Main Callback
System Callback for System Module.
@file SysMain_Exe.c
@ingroup mIPRJSYS
@note
Copyright Novatek Microelectronics Corp. 2010. All rights reserved.
*/
////////////////////////////////////////////////////////////////////////////////
#include "PrjInc.h"
#include "Utility/SwTimer.h"
#include "vendor_common.h"
#define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER
///////////////////////////////////////////////////////////////////////////////
#define __MODULE__ SysMainExe
#define __DBGLVL__ ((THIS_DBGLVL>=PRJ_DBG_LVL)?THIS_DBGLVL:PRJ_DBG_LVL)
#define __DBGFLT__ "*" //*=All, [mark]=CustomClass
#include <kwrap/debug.h>
///////////////////////////////////////////////////////////////////////////////
#if HUNTING_CAMERA_MCU == ENABLE
#include "sf_mcu.h"
#include "sf_common.h"
#endif
extern VControl SystemObjCtrl;
extern VControl UISetupObjCtrl;
extern VControl *gUxCtrlTypeList[];
extern VControl *gAppCtrlTypeList[];
#if (DISPLAY_FAST_SWITCH == ENABLE)
extern VControl FlowCommonCtrl;
#endif
#if(WIFI_AP_FUNC==ENABLE)
extern VControl UIWifiCmdObjCtrl;
#endif
static BOOL g_IsShutdownBegin = FALSE;
void System_InstallAppObj(void)
{
//Init object list for UIControl event process
//register UI control type (from UIControl Lib)
Ux_SetUITypeList(gUxCtrlTypeList, CTRL_EX_TYPE_MAX - CTRL_TYPE_MIN);
#if (DISPLAY_FAST_SWITCH == ENABLE)
//register FlowCommonCtrl as base ctrl of CTRL_WND
gUxCtrlTypeList[CTRL_USER - CTRL_TYPE_MIN] = &FlowCommonCtrl;
FlowCommonCtrl.wType = CTRL_BASE;
gUxCtrlTypeList[CTRL_WND - CTRL_TYPE_MIN]->wType = CTRL_USER;
#endif
#if(WIFI_AP_FUNC==ENABLE)
gAppCtrlTypeList[APP_WIFICMD - APP_TYPE_MIN] = &UIWifiCmdObjCtrl; //set APP_WIFICMD = WifiCmdObjCtrl
#endif
//register App control type (from AppControl Lib)
Ux_SetAppTypeList(gAppCtrlTypeList, APP_TYPE_MAX - APP_TYPE_MIN);
//set default active app = current system object
Ux_SetActiveApp(&UISetupObjCtrl);
}
///////////////////////////////////////////////////////////////////////
#include "GxTimer.h"
int SX_TIMER_DET_TIMER_ID = -1;
void Timer_CB(UINT32 event, UINT32 param1, UINT32 param2);
SX_TIMER_ITEM(System_CntTimer, GxTimer_CountTimer, 1, TRUE)
void System_OnTimerInit(void)
{
//PHASE-1 : Init & Open Drv or DrvExt
{
GxTimer_RegCB(Timer_CB); //Register CB function of GxTimer
SX_TIMER_DET_TIMER_ID = SxTimer_AddItem(&Timer_System_CntTimer);
//5.<2E><><EFBFBD>USxCmd<6D>A<EFBFBD><41> ---------> Cmd Function
//HwClock_InstallCmd();
}
{
//PHASE-2 : Init & Open Lib or LibExt
//test GxTimer
/*
#define TIMER_ONE_SEC 1000
static UINT32 g_uiAudioTestTimer = NULL_TIMER;
if (g_uiAudioTestTimer == NULL_TIMER)
{
g_uiAudioTestTimer = GxTimer_StartTimer(TIMER_ONE_SEC, NVTEVT_1SEC_TIMER, CONTINUE);
}
*/
}
}
void System_OnTimerExit(void)
{
//PHASE-2 : Close Lib or LibExt
{
}
//PHASE-1 : Close Drv or DrvExt
{
}
}
///////////////////////////////////////////////////////////////////////
//System flow event
#if (PWR_FUNC == ENABLE)
#include "GxPower.h"
#endif
extern UINT32 Input_GroupStatus2Event(UINT32 status);
extern BOOL g_bConsumeStatus;
extern BOOL gbIsPlayBackModePowerOn;
extern INT32 System_GetFirstSensorMode(INT32 iCurrMode);
#if 0
INT32 System_GetPoweronModeByFWInfo(void)
{
MODELEXT_HEADER *header = NULL;
BININFO *pBinInfo = (BININFO *)Dx_GetModelExtCfg(MODELEXT_TYPE_BIN_INFO, &header);
if (!pBinInfo || !header) {
DBG_ERR("bininfo is null\r\n");
return System_GetFirstSensorMode(PRIMARY_MODE_MAIN);
}
if (pBinInfo->fw.Resv[0]== 0)
return System_GetFirstSensorMode(PRIMARY_MODE_MAIN);
else
return System_GetFirstSensorMode(PRIMARY_MODE_IPCAM);
}
#endif
extern int PRIMARY_MODE_PASSWORD;
INT32 System_GetBootFirstMode(void)
{
// return PRIMARY_MODE_PASSWORD;
#if HUNTING_CAMERA_MCU == ENABLE
UIMenuStoreInfo *puiPara = sf_ui_para_get();
#endif
#if (IPCAM_MODE == ENABLE)
#if 0
return System_GetPoweronModeByFWInfo();
#else
return System_GetFirstSensorMode(PRIMARY_MODE_IPCAM);
#endif
#else
#if !UI_SENSOR
#if HUNTING_CAMERA_MCU == ENABLE
UINT8 PowerOnMode = sf_cardv_convert_power_on_mode();
printf("%s:%d CamMode :%d\n", __FUNCTION__, __LINE__,puiPara->CamMode);
if(GxUSB_GetIsUSBPlug())
{
return PRIMARY_MODE_TRANSCODE;//PRIMARY_MODE_USBMSDC;
}
else if((PWR_ON_SETUP != PowerOnMode) && (PWR_ON_MCU_UPDATA != PowerOnMode)/*|| (sf_get_fw_update())*/)
{
return PRIMARY_MODE_TRANSCODE;
}
else if(SF_CAM_MODE_PHOTO == puiPara->CamMode)
{
return PRIMARY_MODE_PHOTO;
}
else if(SF_CAM_MODE_VIDEO == puiPara->CamMode)
{
return PRIMARY_MODE_MOVIE;
}
else
{
return PRIMARY_MODE_PHOTO;//PRIMARY_MODE_MOVIE;
}
#else
printf("%s:%d CamMode :%d\n", __FUNCTION__, __LINE__,SysGetFlag(CamMode));
if(SF_CAM_MODE_PHOTO == SysGetFlag(CamMode))
{
return PRIMARY_MODE_PHOTO;
}
else if(SF_CAM_MODE_VIDEO == SysGetFlag(CamMode))
{
return PRIMARY_MODE_MOVIE;
}
else
{
return PRIMARY_MODE_PHOTO;//PRIMARY_MODE_MOVIE;
}
#endif
#else
return System_GetFirstSensorMode(PRIMARY_MODE_MOVIE);
#endif
//return System_GetFirstSensorMode(PRIMARY_MODE_PHOTO);
#endif
}
INT32 System_OnBoot(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
DBG_DUMP("^MOn Boot begin\r\n");
if (paramNum == 1 && paramArray[0] == 0) { //power-on start
//System_BootStart();
}
if (paramNum == 1 && paramArray[0] == 1) { //power-on end
//#NT#2012/10/18#Philex Lin - begin
UINT32 uiChangeTo;
#if (POWERON_WAIT_FS_READY == ENABLE)
UINT32 uiFSStatus;
#endif
//#NT#2012/10/18#Philex Lin - end
#if !defined(_IrRx_NONE_)
IRRX_DEVICE_OBJ IrRxDevice;
#endif
TM_BOOT_BEGIN("flow", "boot");
//ui init state
//#NT#2016/12/14#Niven Cho -begin
//#NT#EMMC_AS_PSTORE
#if defined(_CPU2_LINUX_) && defined(_EMBMEM_EMMC_)
System_OnStrgInit_PS(); //because ps uses filesys in this case, so ps init was moved here.
#if (BOOT_RESET_MENU_INFO == ENABLE)
Load_MenuInfo();
#endif
#else
// #if (BOOT_RESET_MENU_INFO == ENABLE)
// //EMMC_AS_PSTORE
// #if (defined(_CPU2_LINUX_) && defined(_EMBMEM_EMMC_))
// System_OnStrgInit_PS(); //because ps uses filesys in this case, so ps init was moved here.
// Load_MenuInfo();
// #else
// Load_MenuInfo(); //reset value cause the FL_FSStatus as '0', we do so before NVTEVT_STRG_ATTACH finish
// #endif
// #endif
#endif
//#NT#2016/12/14#Niven Cho -end
#if (BOOT_RESET_MENU_INFO == ENABLE)
Init_MenuInfo();
#endif
#if HUNTING_CAMERA_MCU == ENABLE
sf_cardv_para_check_start();
//sf_cardv_wifi_start();
#endif
#if (UCTRL_FUNC)
UctrlMain_Init();
#endif
//wait fs init finish
#if (POWERON_WAIT_FS_READY == ENABLE)
if (System_GetState(SYS_STATE_POWERON) == SYSTEM_POWERON_SAFE) {
#if(ONVIF_PROFILE_S!=ENABLE) //No File System
//#NT#2017/04/18#Niven Cho -begin
//#NT#FIX that B:\\ come first mounted.
//wait all storages mounted.
UINT32 i;
UINT32 paramNum;
UINT32 paramArray[MAX_MESSAGE_PARAM_NUM];
UINT32 n_storage = (FS_MULTI_STRG_FUNC) ? 2 : 1;
for (i=0; i<n_storage; i++)
{
UserWaitEvent(NVTEVT_STRG_ATTACH, &paramNum, paramArray);
}
//#NT#2017/04/18#Niven Cho -end
#endif
}
uiFSStatus = System_GetState(SYS_STATE_FS); //keep card insert status
if(uiFSStatus != FS_INIT_OK) {
DBG_WRN("FS init is not OK!\r\n");
}
if (System_GetState(SYS_STATE_POWERON) == SYSTEM_POWERON_SAFE) {
if (System_OnStrgInit_EMBMEM_GetGxStrgType() == FST_FS_TYPE_UITRON) {
#if (IPCAM_FUNC != ENABLE)
UI_SetFileDBFileID();
#endif
// update card status again
if (GxStrg_GetDeviceCtrl(0, CARD_READONLY)) {
System_SetState(SYS_STATE_CARD, CARD_LOCKED);
} else if (GxStrg_GetDeviceCtrl(0, CARD_INSERT)) {
System_SetState(SYS_STATE_CARD, CARD_INSERTED);
} else {
System_SetState(SYS_STATE_CARD, CARD_REMOVED);
}
System_SetState(SYS_STATE_FS, uiFSStatus);
}
}
#endif
//wait disp init finish
//wait audio init finish
//wait usb init finish
SxTimer_SetFuncActive(SX_TIMER_DET_TIMER_ID, TRUE);
#if(UI_FUNC)
BKG_SetExecFuncTable(gBackgroundExtFuncTable);
#endif
//get first app
#if !defined(_IrRx_NONE_)
// Open IrRx driver
irrx_open((PIRRX_DEVICE_OBJ)&IrRxDevice);
#endif
//#NT#2016/03/07#KCHong -begin
//#NT#Low power timelapse function
#if (TIMELAPSE_LPR_FUNCTION == ENABLE)
extern BOOL g_bBootFromALM;
if (g_bBootFromALM == FALSE) {
#endif
//#NT#2016/03/07#KCHong -end
#if (POWERONSOUND_FUNCTION == ENABLE)
// init Volume to max,100
#if (AUDIO_FUNC == ENABLE)
GxSound_SetVolume(100);
#endif
if (System_GetState(SYS_STATE_POWERON) == SYSTEM_POWERON_SAFE) {
// add power up sound
#if(UI_FUNC==ENABLE)
UISound_Play(DEMOSOUND_SOUND_POWERON_TONE);
#endif
}
#endif
//#NT#2016/03/07#KCHong -begin
//#NT#Low power timelapse function
#if (TIMELAPSE_LPR_FUNCTION == ENABLE)
}
#endif
//#NT#2016/03/07#KCHong -end
//#NT#2013/1/6#Philex Lin-begin
#if (GPS_FUNCTION == ENABLE)
DrvGPS_SetUartPort();
GPSRec_Open(UART_BAUDRATE_9600);
#endif
//#NT#2013/1/6#Philex Lin-end
#if (BT_FUNC == ENABLE)
System_OnBTInit();
#endif
#if (OUTPUT_FUNC == ENABLE)
// Turn on LED
GxLED_SetCtrl(KEYSCAN_LED_RED, SET_TOGGLE_LED, TRUE);
#endif
//#NT#2016/02/26#Niven Cho -begin
//#NT#Fix, with FAST_BOOT=EN, linux, no compress, no partial, failed to boot.
#if defined(_CPU2_LINUX_)
if (System_GetState(SYS_STATE_POWERON) == SYSTEM_POWERON_NORMAL) {
//not so fast, linux is not ready yet, sir....
DBG_DUMP("Wait CPU2 ready...\r\n");
System_CPU2_WaitReady();
//not so fast, fs is not mount yet, sir....
DBG_DUMP("Wait FileSys mount finish...\r\n");
//#NT#2016/03/02#Niven Cho -begin
//#NT#Fix FAST_BOOT + LINUX + without card, boot failed.
UserWaitEvent(NVTEVT_STRG_CHANGE, NULL, NULL);
//#NT#2016/03/02#Niven Cho -end
}
#endif
#if (FS_FUNC == ENABLE)
// wait fs mount ready
System_WaitFS();
#endif
//#NT#2016/02/26#Niven Cho -end
TM_BOOT_END("flow", "boot");
#if (POWERON_FAST_BOOT == ENABLE)
INIT_SETFLAG(FLGINIT_MODE);
#endif
//bind user mem to ImageStream
//ImageStream_ConfigUserDump();
//open first app mode
// if (1) // password
// {
// uiChangeTo = PRIMARY_MODE_PASSWORD;
// }
// else
{
uiChangeTo = System_GetBootFirstMode();
}
#if ((POWERON_FAST_WIFI == ENABLE) && defined(_CPU2_LINUX_) && defined(_NETWORK_NONE_))
UI_SetData(FL_WIFI_LINK, WIFI_LINK_OK);
Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 2, uiChangeTo, SYS_SUBMODE_WIFI);
#elif ((POWERON_FAST_WIFI == ENABLE) && defined(_CPU2_ECOS_) && defined(_NETWORK_NONE_))
UI_SetData(FL_WIFI_LINK, WIFI_LINK_OK);
Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 2, uiChangeTo, SYS_SUBMODE_WIFI);
#else
Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 1, uiChangeTo);
#endif
UI_SetData(FL_NextMode, uiChangeTo);
//!!!!! After boot, MUST reset power-on-state to SAFE for next time NVTEVT_SYSTEM_MODE !!!!!
System_SetState(SYS_STATE_POWERON, SYSTEM_POWERON_SAFE);
}
DBG_DUMP("^MOn Boot end\r\n");
#if 0//HUNTING_CAMERA_MCU == ENABLE
if((0 == sf_get_fw_update()) && (sf_get_mode_flag()))
{
Ux_SendEvent(0, NVTEVT_EXE_WIFI_START, 0);
//sleep(2);
//sf_apinfo_thread_init();
}
#endif
#if HUNTING_CAMERA_MCU == ENABLE
sf_mem_free();
#endif
return NVTEVT_CONSUME;
}
extern void UI_Quit(void);
extern UINT32 User_GetTempBuffer(UINT32 uiSize);
BOOL System_GetShutdownBegin(void)
{
return g_IsShutdownBegin;
}
#define DO_NOT_SHOW_POWER_OFF 0
#define SHOW_POWER_OFF 1
INT32 System_OnShutdown(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
UINT32 displayShow = SHOW_POWER_OFF;
BOOL isMenu = sf_is_menu_open();
if ( paramNum >= 2)
{
DBG_DUMP("^MOn Shutdown begin paramNum:%d paramArray[0]:%d paramArray[1]:%d\r\n",paramNum, paramArray[0], paramArray[1]);
displayShow = paramArray[1];
}
if (paramNum >= 1 /*&& paramArray[0] == 0*/)
{ //power-off begin
DBG_DUMP("^MOn Shutdown begin paramNum:%d paramArray:%d\r\n",paramNum, paramArray[0]);
g_IsShutdownBegin=TRUE;
#if (DISPLAY_FUNC == ENABLE)
#if (POWEROFFLOGO_FUNCTION != ENABLE)
if ((DX_HANDLE)GxVideo_GetDevice(DOUT1)) {
GxVideo_SetDeviceCtrl(DOUT1, DISPLAY_DEVCTRL_BACKLIGHT, FALSE);
}
#if (DISPLAY2_FUNC == ENABLE)
if ((DX_HANDLE)GxVideo_GetDevice(DOUT2)) {
GxVideo_SetDeviceCtrl(DOUT1, DISPLAY_DEVCTRL_BACKLIGHT, FALSE);
}
#endif
#endif
#if (UI_FUNC == ENABLE)
// save RTC date data and file ID
UI_SaveRTCDate();
#endif
Display_SetEnable(LAYER_VDO1, FALSE); //turn off VDO1 to avoid garbage frame.
#endif
//close last app mode
Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 1, SYS_MODE_UNKNOWN);
#if _TODO //(IPCAM_FUNC == ENABLE)
if (UI_GetData(FL_WIFI_LINK) == WIFI_LINK_OK) {
//should close network application,then stop wifi
Ux_SendEvent(&UISetupObjCtrl, NVTEVT_EXE_WIFI_STOP, 0);
}
#else
#if 0
debug_msg("_TODO -> %s:%d, task(%x,%s) caller(%pF)\r\n", __FUNCTION__, __LINE__,
OS_GetTaskID(), OS_GetTaskName(), __builtin_return_address(0));
#endif
#endif
// low battery, lens error power off tone and screen
if (System_GetState(SYS_STATE_POWEROFF) == SYS_POWEROFF_BATTEMPTY) {
DBG_ERR("low battery **********\r\n");
} else if (System_GetState(SYS_STATE_POWEROFF) == SYS_POWEROFF_LENSERROR) {
DBG_ERR("lens error **********\r\n");
} else {
#if (POWEROFFLOGO_FUNCTION == ENABLE)
#if HUNTING_CAMERA_MCU == ENABLE
if(sf_get_mode_flag() && SHOW_POWER_OFF == displayShow)
#endif
{
if (FALSE == isMenu)
{
GxDisplay_Set(LAYER_OSD1, LAYER_STATE_ENABLE, 0); //turn off OSD1
GxDisplay_Flush(LAYER_OSD1);
Display_ShowSplash(SPLASH_POWEROFF);
SwTimer_DelayMs(500);
}
else
{
Display_ShowSplash(SPLASH_POWEROFF);
SwTimer_DelayMs(500);
GxDisplay_Set(LAYER_OSD1, LAYER_STATE_ENABLE, 0); //turn off OSD1
GxDisplay_Flush(LAYER_OSD1);
}
// Display_ShowSplash(SPLASH_POWEROFF);
// SwTimer_DelayMs(500);
// GxDisplay_Set(LAYER_OSD1, LAYER_STATE_ENABLE, 0); //turn off OSD1
// GxDisplay_Flush(LAYER_OSD1);
}
#endif
}
#if HUNTING_CAMERA_MCU == ENABLE
if(sf_is_flash_voltage_abnormal() != TRUE)
Save_MenuInfo();
sf_cardv_para_check_stop();
#else
Save_MenuInfo();
#endif
#if (BT_FUNC == ENABLE)
System_OnBTExit();
#endif
//#NT#2016/03/07#KCHong -begin
//#NT#Low power timelapse function
#if (TIMELAPSE_LPR_FUNCTION == ENABLE)
// Do not enable key and play power on tone
extern BOOL g_bBootFromALM;
if (g_bBootFromALM == FALSE) {
#endif
//#NT#2016/03/07#KCHong -end
#if (POWEROFFSOUND_FUNCTION == ENABLE)
//power off sound
#if(UI_FUNC==ENABLE)
UISound_EnableKey(TRUE);
UISound_Play(DEMOSOUND_SOUND_POWERON_TONE);
#endif
#endif
//#NT#2016/03/07#KCHong -begin
//#NT#Low power timelapse function
#if (TIMELAPSE_LPR_FUNCTION == ENABLE)
}
#endif
//#NT#2016/03/07#KCHong -end
UI_LockEvent();
UI_Quit(); //quit from event loop
}
/*if (paramNum == 1 && paramArray[0] == 1) { //power-off end
//System_ShutDownEnd();
//bQuit = TRUE;
}*/
g_IsShutdownBegin=FALSE;
DBG_DUMP("^MOn Shutdown end\r\n");
return NVTEVT_CONSUME;
}
INT32 System_OnMode(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
static BOOL bFirst = TRUE;
int mode_id;
if (paramNum < 1) {
return NVTEVT_CONSUME;
}
mode_id = paramArray[0];
if (paramNum == 2) {
System_SetState(SYS_STATE_NEXTSUBMODE, paramArray[1]);
}
if (bFirst) {
TM_BOOT_BEGIN("flow", "mode");
}
System_ChangeMode(mode_id);
if (bFirst) {
TM_BOOT_END("flow", "mode");
}
bFirst = FALSE;
return NVTEVT_CONSUME;
}
INT32 System_OnSleepLevel(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
int sleep_lv;
if (paramNum < 1) {
return NVTEVT_CONSUME;
}
sleep_lv = paramArray[0];
System_ChangeSleep(sleep_lv);
return NVTEVT_CONSUME;
}
INT32 System_OnAppOpen(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
#if(SENSOR_FUNC == ENABLE)
UINT32 nSensor, uSensorMask, iSensorDisp;
#endif
DBG_IND("\r\n");
//System_ChangeMode(mode); //open phase
//
// 1. UIModeXXX.c::ModeXXX_Open()
// Ux_SetActiveApp(&AppObj);
// Ux_SendEvent(0, NVTEVT_EXE_OPEN, 0);
// 2. UIAppXXX_Exe.c::XXXExe_OnOpen()
// Ux_DefaultEvent(pCtrl,NVTEVT_EXE_OPEN,paramNum,paramArray);
// 3. SysMain_Exe.c::System_OnAppOpen()
// Ux_SendEvent(0, NVTEVT_SENSOR_ATTACH, 0);
// Ux_SendEvent(0, NVTEVT_LENS_ATTACH, 0);
// wait device control finish
// 4. UIModeXXX.c::ModeXXX_Open()
// Ux_OpenWindow();
#if (DISPLAY_FUNC == ENABLE)
DBG_IND("^M -display attach\r\n");
Ux_SendEvent(0, NVTEVT_VIDEO_ATTACH, 0);
#endif
#if (SENSOR_FUNC == ENABLE)
DBG_IND("^M -sensor attach\r\n");
Ux_SendEvent(0, NVTEVT_SENSOR_ATTACH, 0);
nSensor = ImageUnit_GetParam(ISF_VIN(0), ISF_CTRL, VDOIN_PARAM_SENSORCOUNT); //return 0/1/2/4
uSensorMask = ImageUnit_GetParam(ISF_VIN(0), ISF_CTRL, VDOIN_PARAM_SENSORMASK);
iSensorDisp = ImageUnit_GetParam(ISF_VIN(0), ISF_CTRL, VDOIN_PARAM_SENSORDISPLAY);
DBG_DUMP(" -sensor count=%d, insert_mask=%04x, attach_mask=%04x, disp_mask=%04x\r\n", nSensor, System_GetConnectSensor(), uSensorMask, iSensorDisp);
DBG_IND("^M -lens attach\r\n");
Ux_SendEvent(0, NVTEVT_LENS_ATTACH, 0);
DBG_DUMP(" -lens count=%d\r\n", 0);
#endif
return NVTEVT_CONSUME;
}
INT32 System_OnAppClose(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
DBG_IND("\r\n");
//System_ChangeMode(mode); //close phase
//
// 4. UIModeXXX.c::ModeXXX_Close()
// Ux_CloseWindow();
// 3. UIModeXXX.c::ModeXXX_Close()
// Ux_SendEvent(0, NVTEVT_EXE_CLOSE, 0);
// 2. UIAppXXX_Exe.c::XXXExe_OnClose()
// Ux_DefaultEvent(pCtrl,NVTEVT_EXE_CLOSE,paramNum,paramArray);
// 1. SysMain_Exe.c::System_OnAppClose()
// Ux_SendEvent(0, NVTEVT_SENSOR_DETACH, 0);
// Ux_SendEvent(0, NVTEVT_LENS_DETACH, 0);
Ux_SendEvent(0, NVTEVT_VIDEO_DETACH, 0);
Ux_SendEvent(0, NVTEVT_SENSOR_DETACH, 0);
Ux_SendEvent(0, NVTEVT_LENS_DETACH, 0);
return NVTEVT_CONSUME;
}
void Timer_CB(UINT32 event, UINT32 param1, UINT32 param2)
{
//DBG_DUMP("1S\r\n");
Ux_PostEvent(NVTEVT_TIMER, 1, event);
}
///////////////////////////////////////////////////////////////////////////////
//Device flow event
INT32 System_OnVideoInsert(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnVideoRemove(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnVideoAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnVideoDetach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnAudioInsert(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnAudioRemove(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnAudioAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnAudioDetach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnAudioMode(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnAudioInput(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnAudioVol(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnStrgInsert(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnStrgRemove(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnStrgAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnStrgDetach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnUsbInsert(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnUsbRemove(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnUsbChargeCurrent(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnBattEmpty(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnBattChange(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnPwrChargeOK(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnPwrChargeSuspend(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnPwrChargeResume(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnVideoDir(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnVideoMode(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnSensorInsert(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnSensorRemove(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnSensorAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnSensorDetach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnSensorDisplay(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnLensAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
INT32 System_OnLensDetach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
/*
INT32 System_OnDefAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
// PWR-KEY:
// NORMAL-KEY:
// STATUS-KEY:
// TOUCH:
// LED:
// BATTERY:
return NVTEVT_CONSUME;
}
INT32 System_OnSensorAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
// SENSOR
return NVTEVT_CONSUME;
}
INT32 System_OnLensAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
// LENS
return NVTEVT_CONSUME;
}
*/
extern INT32 System_OnStrgSetActDrive(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray);
EVENT_ENTRY SystemObjCmdMap[] = {
////////////////////////////////////////////////////////////
//System flow event
{NVTEVT_SYSTEM_BOOT, System_OnBoot },
{NVTEVT_SYSTEM_SHUTDOWN, System_OnShutdown },
{NVTEVT_SYSTEM_MODE, System_OnMode },
{NVTEVT_SYSTEM_SLEEP, System_OnSleepLevel },
//App common event
{NVTEVT_EXE_OPEN, System_OnAppOpen },
{NVTEVT_EXE_CLOSE, System_OnAppClose },
#if (DISPLAY_FUNC == ENABLE)
//Video device event
{NVTEVT_VIDEO_INSERT, System_OnVideoInsert },
{NVTEVT_VIDEO_REMOVE, System_OnVideoRemove },
{NVTEVT_VIDEO_ATTACH, System_OnVideoAttach },
{NVTEVT_VIDEO_DETACH, System_OnVideoDetach },
{NVTEVT_VIDEO_MODE, System_OnVideoMode },
{NVTEVT_VIDEO_DIR, System_OnVideoDir },
#endif
#if (AUDIO_FUNC == ENABLE)
//Audio device event
{NVTEVT_AUDIO_INSERT, System_OnAudioInsert },
{NVTEVT_AUDIO_REMOVE, System_OnAudioRemove },
{NVTEVT_AUDIO_ATTACH, System_OnAudioAttach },
{NVTEVT_AUDIO_DETACH, System_OnAudioDetach },
{NVTEVT_AUDIO_INPUT, System_OnAudioInput },
{NVTEVT_AUDIO_PLAY_VOL, System_OnAudioVol },
{NVTEVT_AUDIO_MODE, System_OnAudioMode },
#endif
#if (FS_FUNC == ENABLE)
//Storage device event
{NVTEVT_STRG_INSERT, System_OnStrgInsert },
{NVTEVT_STRG_REMOVE, System_OnStrgRemove },
{NVTEVT_STRG_ATTACH, System_OnStrgAttach },
{NVTEVT_STRG_DETACH, System_OnStrgDetach },
{NVTEVT_STRG_SET_ACT_DRIVE, System_OnStrgSetActDrive},
#endif
#if(USB_MODE==ENABLE)
//Usb device event
{NVTEVT_USB_INSERT, System_OnUsbInsert },
{NVTEVT_USB_REMOVE, System_OnUsbRemove },
{NVTEVT_USB_CHARGE_CURRENT, System_OnUsbChargeCurrent },
#endif
#if (PWR_FUNC == ENABLE)
//power device event
{NVTEVT_PWR_BATTEMPTY, System_OnBattEmpty },
{NVTEVT_PWR_BATTCHANGE, System_OnBattChange },
{NVTEVT_PWR_CHARGE_OK, System_OnPwrChargeOK },
{NVTEVT_PWR_CHARGE_SUSPEND, System_OnPwrChargeSuspend },
{NVTEVT_PWR_CHARGE_RESUME, System_OnPwrChargeResume },
#endif
#if(UI_SENSOR==ENABLE)
//sensor device event
{NVTEVT_SENSOR_INSERT, System_OnSensorInsert },
{NVTEVT_SENSOR_REMOVE, System_OnSensorRemove },
{NVTEVT_SENSOR_ATTACH, System_OnSensorAttach },
{NVTEVT_SENSOR_DETACH, System_OnSensorDetach },
{NVTEVT_SENSOR_DISPLAY, System_OnSensorDisplay },
#endif
#if (LENS_FUNCTION == ENABLE)
{NVTEVT_LENS_ATTACH, System_OnLensAttach },
{NVTEVT_LENS_DETACH, System_OnLensDetach },
#endif
//Other device event
//{NVTEVT_DEFAULT_ATTACH, System_OnDefAttach },
{NVTEVT_NULL, 0}, //End of Command Map
};
CREATE_APP(SystemObj, 0)