/*---------------------------------------------------------------------------*
  Project:  TwlSDK - OS - include
  File:     application_jump.h

  Copyright 2007-2008 Nintendo. All rights reserved.

  These coded instructions, statements, and computer programs contain
  proprietary information of Nintendo of America Inc. and/or Nintendo
  Company Ltd., and are protected by Federal copyright law. They may
  not be disclosed to third parties or copied or duplicated in any form,
  in whole or in part, without the prior written consent of Nintendo.

  $Date:: 2008-12-08#$
  $Rev: 9571 $
  $Author: okajima_manabu $
 *---------------------------------------------------------------------------*/

#ifndef _APPLICATION_JUMP_H_
#define _APPLICATION_JUMP_H_

#include <twl.h>

#ifdef __cplusplus
extern "C" {
#endif


// Define data-------------------------------------------

#define OS_MCU_RESET_VALUE_BUF_HOTBT_MASK		0x00000001
#define OS_MCU_RESET_VALUE_OFS					0

typedef enum OSAppJumpType{
    OS_APP_JUMP_NORMAL = 0,
    OS_APP_JUMP_TMP = 1
}OSAppJumpType;

// TMP application path
#define OS_TMP_APP_PATH			"nand:/<tmpjump>"


// Function's prototype------------------------------------
#ifdef SDK_ARM9
/*---------------------------------------------------------------------------*
  Name:         OS_JumpToSystemMenu

  Description:  Resets the hardware and jumps to the System Menu.
  
  Arguments:    None.
 
  Returns:      FALSE: The application jump failed for some reason
                NOTE: TRUE will not be returned when processing is successful because a reset will occur within this function.
                   
 *---------------------------------------------------------------------------*/
BOOL OS_JumpToSystemMenu( void );

/*---------------------------------------------------------------------------*
  Name:         OS_JumpToInternetSetting

  Description:  Resets the hardware and jumps to the Connection Settings screen (under Internet) in the TWL System Settings.
                
  
  Arguments:    None.
 
  Returns:      FALSE: The application jump failed for some reason
                NOTE: TRUE will not be returned when processing is successful because a reset will occur within this function.
                   
 *---------------------------------------------------------------------------*/
BOOL OS_JumpToInternetSetting(void);

/*---------------------------------------------------------------------------*
  Name:         OS_JumpToEULAViewer

  Description:  Resets the hardware and jumps to the User Agreement screen (under Internet) in the TWL System Settings.
                
  
  Arguments:    None.
 
  Returns:      FALSE: The application jump failed for some reason
                NOTE: TRUE will not be returned when processing is successful because a reset will occur within this function.
                   
 *---------------------------------------------------------------------------*/
BOOL OS_JumpToEULAViewer(void);

/*---------------------------------------------------------------------------*
  Name:         OS_JumpToWirelessSetting

  Description:  Resets the hardware and jumps to the Wireless Communications screen in the TWL System Settings.
  
  Arguments:    None.
 
  Returns:      FALSE: The application jump failed for some reason
                NOTE: TRUE will not be returned when processing is successful because a reset will occur within this function.
                   
 *---------------------------------------------------------------------------*/
BOOL OS_JumpToWirelessSetting(void);

/*---------------------------------------------------------------------------*
  Name:         OS_RebootSystem

  Description:  Resets the hardware and starts this program.
  
  Arguments:    None.
 
  Returns:      FALSE: This was run on a NITRO system or the reboot failed
                NOTE: TRUE will not be returned when processing is successful because a reset will occur within this function.
                   
 *---------------------------------------------------------------------------*/
BOOL OS_RebootSystem( void );

/*---------------------------------------------------------------------------*
  Name:         OS_IsTemporaryApplication

  Description:  Checks whether this program is a TMP application.
  
  Arguments:    None.
 
  Returns:      TRUE: TMP application
                FALSE: Non-TMP application
 *---------------------------------------------------------------------------*/
BOOL OS_IsTemporaryApplication(void);

/*---------------------------------------------------------------------------*
  Name:         OS_IsRebooted

  Description:  Checks whether OS_RebootSystem performed a reboot.
  
  Arguments:    None.
 
  Returns:      TRUE: Rebooted at least once
                FALSE: Initial boot
 *---------------------------------------------------------------------------*/
BOOL OS_IsRebooted( void );

// ---- These are internal functions, so don't use for applications
BOOL OS_ReturnToPrevApplication( void );
BOOL OSi_CanApplicationJumpTo( OSTitleId titleID );
BOOL OS_DoApplicationJump( OSTitleId id, OSAppJumpType jumpType );
#endif

#ifdef __cplusplus
}       // extern "C"
#endif

#endif  // _APPLICATION_JUMP_H_
