280 lines
6.8 KiB
C
Executable File
280 lines
6.8 KiB
C
Executable File
/**
|
|
Copyright Novatek Microelectronics Corp. 2012. All rights reserved.
|
|
|
|
@file SysMain_Flow_Exit.c
|
|
@ingroup mSystemFlow
|
|
|
|
@brief PowerOff Flow
|
|
|
|
@note
|
|
1.提供power off的介面
|
|
System_PowerOff()
|
|
(a)System_PowerOff()執行
|
|
各mode不同的control condition
|
|
包含通知不同device exit
|
|
(b)System_PowerOff()執行
|
|
各mode不同的control condition
|
|
包含控制不同device之間相互dependent的order
|
|
|
|
@date 2012/1/1
|
|
*/
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
#include "PrjInc.h"
|
|
//local debug level: THIS_DBGLVL
|
|
#define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
#define __MODULE__ SysExit
|
|
#define __DBGLVL__ ((THIS_DBGLVL>=PRJ_DBG_LVL)?THIS_DBGLVL:PRJ_DBG_LVL)
|
|
#define __DBGFLT__ "*" //*=All, [mark]=CustomClass
|
|
#include <kwrap/debug.h>
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
//#include "DevMan.h"
|
|
//#include "NvtSystem.h"
|
|
#if(WIFI_FUNC==ENABLE)
|
|
#include "UIApp/Network/WifiAppCmd.h"
|
|
#include "Mode/UIModeWifi.h"
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
//INT32 g_iSysPowerOffMode = SYS_POWEROFF_NORMAL;
|
|
INT32 g_iSysPowerOffMode = SYS_POWEROFF_SAFE;
|
|
|
|
void System_PowerOff(UINT32 pwrOffType)
|
|
{
|
|
//g_iSysPowerOffMode = pwrOffType;
|
|
Ux_SendEvent(0, NVTEVT_SYSTEM_SHUTDOWN, 1, 0); //shutdown start
|
|
}
|
|
|
|
void _System_PowerOff(void)
|
|
{
|
|
DBG_FUNC_BEGIN("\r\n");
|
|
|
|
DBG_FUNC_END("\r\n");
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// ShutDown Start
|
|
void System_ShutDownStart(void)
|
|
{
|
|
DBG_DUMP("^MSystem Shutdown begin\r\n");
|
|
#if(WIFI_FUNC==ENABLE)
|
|
#if(WIFI_AP_FUNC==ENABLE && defined(_CPU2_ECOS_) && defined(_NETWORK_ON_CPU2_))
|
|
if (System_GetState(SYS_STATE_CURRSUBMODE) == SYS_SUBMODE_WIFI) {
|
|
WifiApp_SendCmd(WIFIAPP_CMD_NOTIFY_STATUS, WIFIAPP_RET_POWER_OFF);
|
|
}
|
|
#endif
|
|
#endif
|
|
}
|
|
|
|
// ShutDown End
|
|
void System_ShutDownEnd(void)
|
|
{
|
|
DBG_DUMP("^MSystem Shutdown end\r\n");
|
|
DBG_DUMP("\r\n");
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
#if 0
|
|
void SystemExit(void)
|
|
{
|
|
DBG_MSG("^GExit Start\r\n");
|
|
|
|
///////////////////////////////////////////
|
|
#if (POWERON_FAST_BOOT == ENABLE)
|
|
if (System_GetState(SYS_STATE_POWEROFF) == SYSTEM_POWEROFF_NORMAL) {
|
|
//"normal power-off sequence"
|
|
DBG_DUMP("Power Off Sequence = Normal\r\n");
|
|
|
|
///////////////////////////////////////////
|
|
//Start Multi-Task
|
|
EXIT_SETFLAG(FLGEXIT_BEGIN2);
|
|
EXIT_SETFLAG(FLGEXIT_BEGIN3);
|
|
EXIT_SETFLAG(FLGEXIT_BEGIN4);
|
|
EXIT_SETFLAG(FLGEXIT_BEGIN5);
|
|
EXIT_SETFLAG(FLGEXIT_BEGIN6);
|
|
EXIT_SETFLAG(FLGEXIT_BEGIN7);
|
|
EXIT_SETFLAG(FLGEXIT_BEGIN8);
|
|
|
|
#if (INPUT_FUNC == ENABLE)
|
|
System_OnInputExit();
|
|
#endif
|
|
|
|
EXIT_WAITFLAG(FLGEXIT_BEGIN2);
|
|
EXIT_WAITFLAG(FLGEXIT_BEGIN3);
|
|
EXIT_WAITFLAG(FLGEXIT_BEGIN4);
|
|
EXIT_WAITFLAG(FLGEXIT_BEGIN5);
|
|
EXIT_WAITFLAG(FLGEXIT_BEGIN6);
|
|
EXIT_WAITFLAG(FLGEXIT_BEGIN7);
|
|
EXIT_WAITFLAG(FLGEXIT_BEGIN8);
|
|
} else
|
|
#endif
|
|
if (System_GetState(SYS_STATE_POWEROFF) == SYSTEM_POWEROFF_SAFE) {
|
|
//"safe power-off sequence"
|
|
DBG_DUMP("Power Off Sequence = Safe\r\n");
|
|
|
|
//#NT#2016/03/08#Niven Cho -begin
|
|
//#NT#because it is long time closing the linux, we don't close video ahead.
|
|
#if defined(_CPU2_LINUX_)
|
|
|
|
#if (FS_FUNC == ENABLE)
|
|
System_OnStrgExit_FS();
|
|
System_OnStrgExit_EXMEM();
|
|
#endif
|
|
#if (PST_FUNC == ENABLE)
|
|
System_OnStrgExit_PS();
|
|
#endif
|
|
#if defined(_CPU2_LINUX_)
|
|
cpu2util_terminate();//here must be wait until FS, PST finish, then triggers linux close.
|
|
#endif
|
|
#if (FWS_FUNC == ENABLE)
|
|
System_OnStrgExit_FWS();
|
|
System_OnStrgExit_EMBMEM();
|
|
#endif
|
|
#if (DISPLAY_FUNC == ENABLE)
|
|
System_OnVideoExit();
|
|
#endif
|
|
#if (AUDIO_FUNC == ENABLE)
|
|
System_OnAudioExit();
|
|
#endif
|
|
|
|
#else //NOT LINUX
|
|
|
|
//Exit Lib & Device
|
|
#if (DISPLAY_FUNC == ENABLE)
|
|
System_OnVideoExit();
|
|
#endif
|
|
#if (AUDIO_FUNC == ENABLE)
|
|
System_OnAudioExit();
|
|
#endif
|
|
#if (FS_FUNC == ENABLE)
|
|
System_OnStrgExit_FS();
|
|
System_OnStrgExit_EXMEM();
|
|
#endif
|
|
#if (PST_FUNC == ENABLE)
|
|
System_OnStrgExit_PS();
|
|
#endif
|
|
#if (FWS_FUNC == ENABLE)
|
|
System_OnStrgExit_FWS();
|
|
System_OnStrgExit_EMBMEM();
|
|
#endif
|
|
|
|
#endif
|
|
//#NT#2016/03/08#Niven Cho -end
|
|
#if(USB_MODE==ENABLE)
|
|
System_OnUsbExit();
|
|
#endif
|
|
#if (LENS_FUNCTION == ENABLE)
|
|
System_OnLensExit();
|
|
#endif
|
|
#if (UI_SENSOR==ENABLE)
|
|
System_OnSensorExit();
|
|
#endif
|
|
#if (INPUT_FUNC == ENABLE)
|
|
System_OnInputExit();
|
|
#endif
|
|
} else if (System_GetState(SYS_STATE_POWEROFF) == SYSTEM_POWEROFF_LOWPOWER) {
|
|
//"lowpower power-off sequence"
|
|
DBG_DUMP("Power Off Sequence = LowPower\r\n");
|
|
} else if (System_GetState(SYS_STATE_POWEROFF) == SYSTEM_POWEROFF_CHARGE) {
|
|
//"charge power-off sequence"
|
|
DBG_DUMP("Power Off Sequence = Charge\r\n");
|
|
}
|
|
|
|
#if (PWR_FUNC == ENABLE)
|
|
System_OnPowerExit();
|
|
#endif
|
|
#if (OUTPUT_FUNC == ENABLE)
|
|
System_OnOutputExit();
|
|
#endif
|
|
System_OnTimerExit();
|
|
|
|
DBG_MSG("^GExit End\r\n");
|
|
}
|
|
|
|
#if (POWERON_FAST_BOOT == ENABLE)
|
|
|
|
void SystemExit2(void)
|
|
{
|
|
if (System_GetState(SYS_STATE_POWEROFF) == SYSTEM_POWEROFF_NORMAL) {
|
|
DBG_MSG("^GExit 2 Start\r\n");
|
|
#if (PST_FUNC == ENABLE)
|
|
System_OnStrgExit_PS();
|
|
#endif
|
|
#if (FWS_FUNC == ENABLE)
|
|
System_OnStrgExit_FWS();
|
|
System_OnStrgExit_EMBMEM();
|
|
#endif
|
|
#if (FS_FUNC == ENABLE)
|
|
System_OnStrgExit_EXMEM();
|
|
#endif
|
|
DBG_MSG("^GExit 2 End\r\n");
|
|
}
|
|
}
|
|
void SystemExit3(void)
|
|
{
|
|
if (System_GetState(SYS_STATE_POWEROFF) == SYSTEM_POWEROFF_NORMAL) {
|
|
DBG_MSG("^GExit 3 Start\r\n");
|
|
#if (DISPLAY_FUNC == ENABLE)
|
|
System_OnVideoExit();
|
|
#endif
|
|
DBG_MSG("^GExit 3 End\r\n");
|
|
}
|
|
}
|
|
void SystemExit4(void)
|
|
{
|
|
if (System_GetState(SYS_STATE_POWEROFF) == SYSTEM_POWEROFF_NORMAL) {
|
|
DBG_MSG("^GExit 4 Start\r\n");
|
|
System_OnAudioExit();
|
|
DBG_MSG("^GExit 4 End\r\n");
|
|
}
|
|
}
|
|
void SystemExit5(void)
|
|
{
|
|
if (System_GetState(SYS_STATE_POWEROFF) == SYSTEM_POWEROFF_NORMAL) {
|
|
DBG_MSG("^GExit 5 Start\r\n");
|
|
#if (FS_FUNC == ENABLE)
|
|
System_OnStrgExit_FS();
|
|
#endif
|
|
#if defined(_CPU2_LINUX_)
|
|
cpu2util_terminate();//here must be wait FS finish, then triggers linux close.
|
|
#endif
|
|
DBG_MSG("^GExit 5 End\r\n");
|
|
}
|
|
}
|
|
void SystemExit6(void)
|
|
{
|
|
if (System_GetState(SYS_STATE_POWEROFF) == SYSTEM_POWEROFF_NORMAL) {
|
|
DBG_MSG("^GExit 6 Start\r\n");
|
|
#if(USB_MODE==ENABLE)
|
|
System_OnUsbExit();
|
|
#endif
|
|
DBG_MSG("^GExit 6 End\r\n");
|
|
}
|
|
}
|
|
void SystemExit7(void)
|
|
{
|
|
if (System_GetState(SYS_STATE_POWEROFF) == SYSTEM_POWEROFF_NORMAL) {
|
|
DBG_MSG("^GExit 7 Start\r\n");
|
|
System_OnSensorExit();
|
|
DBG_MSG("^GExit 7 End\r\n");
|
|
}
|
|
}
|
|
void SystemExit8(void)
|
|
{
|
|
if (System_GetState(SYS_STATE_POWEROFF) == SYSTEM_POWEROFF_NORMAL) {
|
|
DBG_MSG("^GExit 8 Start\r\n");
|
|
DBG_MSG("^GExit 8 End\r\n");
|
|
}
|
|
}
|
|
#endif
|
|
#else
|
|
void SystemExit(void)
|
|
{
|
|
}
|
|
|
|
#endif
|