mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
FATALエラー処理をUTLライブラリにまとめる。
初回起動シーケンス処理の実装。(デフォルトOFF) フラッシュ壊れシーケンス処理の実装。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1682 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
135e621bea
commit
fb932ac222
@ -52,11 +52,8 @@ void SYSMi_CheckRTC( void )
|
||||
// RTCのリセット or おかしい値を検出した場合は初回起動シーケンスへ。
|
||||
( void )RTC_GetDateTime( &date, &time );
|
||||
if( !UTL_CheckRTCDate( &date ) ||
|
||||
!UTL_CheckRTCTime( &time )
|
||||
#ifndef __IS_DEBUGGER_BUILD // 青デバッガではRTCの電池がないので、毎回ここにひっかかって設定データが片方クリアされてしまう。これを防ぐスイッチ。
|
||||
||
|
||||
!UTL_CheckRTCTime( &time ) ||
|
||||
SYSMi_GetWork()->flags.common.isResetRTC
|
||||
#endif
|
||||
) { // RTCの異常を検出したら、rtc入力フラグ&rtcOffsetを0にしてNVRAMに書き込み。
|
||||
OS_TPrintf("\"RTC reset\" or \"Illegal RTC data\" detect!\n");
|
||||
LCFG_TSD_SetRTCOffset( 0 );
|
||||
|
||||
@ -152,6 +152,13 @@ void SYSM_DeleteTmpDirectory( TitleProperty *pBootTitle )
|
||||
TitleProperty *SYSM_ReadParameters( void )
|
||||
{
|
||||
TitleProperty *pBootTitle = NULL;
|
||||
|
||||
//-----------------------------------------------------
|
||||
// FATALエラーチェック
|
||||
//-----------------------------------------------------
|
||||
if( SYSMi_GetWork()->flags.common.isNANDFatalError ) {
|
||||
UTL_SetFatalError( FATAL_ERROR_NAND );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------
|
||||
// HW情報のリード
|
||||
@ -159,14 +166,12 @@ TitleProperty *SYSM_ReadParameters( void )
|
||||
// ノーマル情報リード
|
||||
if( !LCFG_ReadHWNormalInfo() ) {
|
||||
OS_TPrintf( "HW Normal Info Broken!\n" );
|
||||
SYSMi_GetWork()->flags.common.isBrokenHWNormalInfo = TRUE;
|
||||
SYSM_SetFatalError( TRUE );
|
||||
UTL_SetFatalError( FATAL_ERROR_HWINFO_NORMAL );
|
||||
}
|
||||
// セキュア情報リード
|
||||
if( !LCFG_ReadHWSecureInfo() ) {
|
||||
OS_TPrintf( "HW Secure Info Broken!\n" );
|
||||
SYSMi_GetWork()->flags.common.isBrokenHWSecureInfo = TRUE;
|
||||
SYSM_SetFatalError( TRUE );
|
||||
UTL_SetFatalError( FATAL_ERROR_HWINFO_SECURE );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------
|
||||
@ -175,10 +180,20 @@ TitleProperty *SYSM_ReadParameters( void )
|
||||
{
|
||||
u8 *pBuffer = SYSM_Alloc( LCFG_READ_TEMP );
|
||||
if( pBuffer ) {
|
||||
LCFG_ReadTWLSettings( (u8 (*)[LCFG_READ_TEMP])pBuffer ); // NANDからTWL本体設定データをリード
|
||||
if( !LCFG_ReadTWLSettings( (u8 (*)[LCFG_READ_TEMP])pBuffer ) ) { // NANDからTWL本体設定データをリード
|
||||
// リード失敗時は、ファイルをリカバリ
|
||||
if( LCFG_RecoveryTWLSettings() ) {
|
||||
// リカバリ成功時は、フラッシュ壊れシーケンスへ
|
||||
SYSMi_GetWork()->flags.common.isBrokenTWLSettings = TRUE;
|
||||
}else {
|
||||
// リカバリ失敗時は、FALTALエラー
|
||||
UTL_SetFatalError( FATAL_ERROR_TWLSETTINGS );
|
||||
}
|
||||
}
|
||||
SYSM_Free( pBuffer );
|
||||
}else {
|
||||
SYSM_SetFatalError( TRUE );
|
||||
// メモリ確保ができなかった時は、FATALエラー
|
||||
UTL_SetFatalError( FATAL_ERROR_TWLSETTINGS );
|
||||
}
|
||||
LCFG_VerifyAndRecoveryNTRSettings(); // NTR設定データを読み出して、TWL設定データとベリファイし、必要ならリカバリ
|
||||
}
|
||||
@ -266,7 +281,7 @@ TitleProperty *SYSM_ReadParameters( void )
|
||||
}
|
||||
|
||||
// アプリジャンプでないときには、アプリ間パラメタをクリア
|
||||
// [TODO:]あらかじめNTRカードのセキュア領域を退避せずに直接0x2000000からロードしている場合も容赦なく消すので注意
|
||||
// ※あらかじめNTRカードのセキュア領域を退避せずに直接0x2000000からロードしている場合も容赦なく消すので注意
|
||||
if( !pBootTitle )
|
||||
{
|
||||
MI_CpuClearFast((void *)HW_PARAM_DELIVER_ARG, HW_PARAM_DELIVER_ARG_SIZE);
|
||||
@ -284,10 +299,8 @@ TitleProperty *SYSM_ReadParameters( void )
|
||||
// 量産工程用ショートカットキー or
|
||||
// 検査カード起動
|
||||
//-----------------------------------------------------
|
||||
if( pBootTitle == NULL && // ココまでダイレクトブートが設定されていない場合のみ判定
|
||||
!( SYSMi_GetWork()->flags.common.isValidLauncherParam && SYSM_GetLauncherParamBody()->v1.flags.isLogoSkip ) )
|
||||
// 「ランチャー再起動指定(直接起動指定無し 且つ ランチャパラメタ有効 且つ ロゴスキップ指定)でない」
|
||||
{
|
||||
if( pBootTitle == NULL ) {
|
||||
// ココまでダイレクトブートが設定されていない場合のみ判定
|
||||
pBootTitle = SYSMi_CheckShortcutBoot1();
|
||||
}
|
||||
|
||||
@ -403,54 +416,47 @@ static TitleProperty *SYSMi_CheckShortcutBoot1( void )
|
||||
// ショートカット起動のチェックその2
|
||||
static TitleProperty *SYSMi_CheckShortcutBoot2( void )
|
||||
{
|
||||
BOOL isSetArgument = FALSE;
|
||||
BOOL isBootMSET = FALSE;
|
||||
u16 argument = 0;
|
||||
|
||||
MI_CpuClear8( &s_bootTitleBuf, sizeof(TitleProperty) );
|
||||
|
||||
//-----------------------------------------------------
|
||||
// TWL設定データ破損時のフラッシュ壊れシーケンス起動
|
||||
//-----------------------------------------------------
|
||||
if( SYSMi_GetWork()->flags.common.isBrokenTWLSettings ) {
|
||||
argument = 100; // フラッシュ壊れシーケンス起動
|
||||
isSetArgument = TRUE;
|
||||
isBootMSET = TRUE;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------
|
||||
// TWL設定データ未入力時の初回起動シーケンス起動
|
||||
// TWL設定データ未設定時の初回起動シーケンス起動
|
||||
//-----------------------------------------------------
|
||||
#if 0
|
||||
#ifdef ENABLE_INITIAL_SETTINGS_
|
||||
#ifndef DISABLE_INITIAL_SETTINGS
|
||||
if( !LCFG_TSD_IsFinishedInitialSetting() ) {
|
||||
s_bootTitleBuf.titleID = SYSMi_getTitleIdOfMachineSettings();
|
||||
if(s_bootTitleBuf.titleID != 0)
|
||||
{
|
||||
s_bootTitleBuf.flags.isLogoSkip = TRUE; // 本体設定を起動できる時だけロゴデモを飛ばす
|
||||
}
|
||||
s_bootTitleBuf.flags.bootType = LAUNCHER_BOOTTYPE_NAND;
|
||||
s_bootTitleBuf.flags.isValid = TRUE;
|
||||
s_bootTitleBuf.flags.isAppRelocate = FALSE;
|
||||
s_bootTitleBuf.flags.isAppLoadCompleted = FALSE;
|
||||
return &s_bootTitleBuf;
|
||||
argument = 0;
|
||||
isSetArgument = FALSE;
|
||||
isBootMSET = TRUE;
|
||||
}
|
||||
#endif // ENABLE_INITIAL_SETTINGS_
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------
|
||||
// スタンドアロン起動時、ショートカットキー(select)
|
||||
// を押しながらの起動で本体設定の直接起動
|
||||
// [TODO:]最終的にはL+R+Start起動でタッチパネル設定のショートカット起動になる予定
|
||||
// L+R+Startボタン押下起動で、本体設定のタッチパネル設定を起動
|
||||
//-----------------------------------------------------
|
||||
if( ( PAD_Read() & SYSM_PAD_SHORTCUT_MACHINE_SETTINGS ) ==
|
||||
SYSM_PAD_SHORTCUT_MACHINE_SETTINGS )
|
||||
{
|
||||
s_bootTitleBuf.titleID = SYSMi_getTitleIdOfMachineSettings();
|
||||
if(s_bootTitleBuf.titleID != 0)
|
||||
{
|
||||
s_bootTitleBuf.flags.isLogoSkip = TRUE; // 本体設定を起動できる時だけロゴデモを飛ばす
|
||||
}
|
||||
s_bootTitleBuf.flags.bootType = LAUNCHER_BOOTTYPE_NAND;
|
||||
s_bootTitleBuf.flags.isValid = TRUE;
|
||||
s_bootTitleBuf.flags.isAppRelocate = FALSE;
|
||||
s_bootTitleBuf.flags.isAppLoadCompleted = FALSE;
|
||||
return &s_bootTitleBuf;
|
||||
SYSM_PAD_SHORTCUT_TP_CALIBRATION ) {
|
||||
argument = OS_TWL_MACHINE_SETTING_TP_CALIBRATION;
|
||||
isSetArgument = TRUE;
|
||||
isBootMSET = TRUE;
|
||||
}
|
||||
|
||||
// スタンドアロン起動時
|
||||
//-----------------------------------------------------
|
||||
// ランチャー画面を表示しないバージョンの場合
|
||||
// カードがささっていたらカードを起動する
|
||||
// ささっていない場合は本体設定を起動
|
||||
//-----------------------------------------------------
|
||||
#ifdef DO_NOT_SHOW_LAUNCHER
|
||||
if( SYSM_IsExistCard() )
|
||||
{
|
||||
@ -473,17 +479,44 @@ static TitleProperty *SYSMi_CheckShortcutBoot2( void )
|
||||
return &s_bootTitleBuf;
|
||||
}else
|
||||
{
|
||||
s_bootTitleBuf.flags.isLogoSkip = TRUE; // ロゴデモを飛ばす
|
||||
argument = 0;
|
||||
isSetArgument = FALSE;
|
||||
isBootMSET = TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
// 「アプリ間パラメータセット」有効時は、パラメータをセット
|
||||
if( isSetArgument ) {
|
||||
OSDeliverArgInfo argInfo;
|
||||
int result;
|
||||
|
||||
OS_InitDeliverArgInfo(&argInfo, 0);
|
||||
OS_DecodeDeliverArg();
|
||||
OSi_SetDeliverArgState( OS_DELIVER_ARG_BUF_ACCESSIBLE | OS_DELIVER_ARG_BUF_WRITABLE );
|
||||
result = OS_SetSysParamToDeliverArg( (u16)argument );
|
||||
|
||||
if(result != OS_DELIVER_ARG_SUCCESS )
|
||||
{
|
||||
OS_Warning("Failed to Set DeliverArgument.");
|
||||
return FALSE;
|
||||
}
|
||||
OS_EncodeDeliverArg();
|
||||
}
|
||||
|
||||
// 「本体設定ブート」有効時は、本体設定プート決定
|
||||
if( isBootMSET ) {
|
||||
s_bootTitleBuf.titleID = SYSMi_getTitleIdOfMachineSettings();
|
||||
if(s_bootTitleBuf.titleID != 0)
|
||||
{
|
||||
s_bootTitleBuf.flags.isLogoSkip = TRUE; // 本体設定を起動できる時だけロゴデモを飛ばす
|
||||
}
|
||||
s_bootTitleBuf.flags.bootType = LAUNCHER_BOOTTYPE_NAND;
|
||||
s_bootTitleBuf.flags.isValid = TRUE;
|
||||
s_bootTitleBuf.flags.isAppRelocate = FALSE;
|
||||
s_bootTitleBuf.flags.isAppLoadCompleted = FALSE;
|
||||
return &s_bootTitleBuf;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
return NULL; // 「ブート内容未定」でリターン
|
||||
}
|
||||
|
||||
|
||||
@ -42,20 +42,6 @@ BOOL SYSM_IsHotStart( void )
|
||||
}
|
||||
|
||||
|
||||
// FATALエラーかどうかをセット
|
||||
void SYSM_SetFatalError( BOOL isFatalError )
|
||||
{
|
||||
SYSMi_GetWork()->flags.common.isFatalError = isFatalError;
|
||||
}
|
||||
|
||||
|
||||
// FATALエラーか?
|
||||
BOOL SYSM_IsFatalError( void )
|
||||
{
|
||||
return (BOOL)SYSMi_GetWork()->flags.common.isFatalError;
|
||||
}
|
||||
|
||||
|
||||
// ロゴデモスキップかどうかをセット
|
||||
void SYSM_SetLogoDemoSkip( BOOL skip )
|
||||
{
|
||||
@ -80,13 +66,13 @@ BOOL SYSM_IsRunOnDebugger( void )
|
||||
// ISデバッガのバナービューモード起動かどうか?
|
||||
BOOL SYSMi_IsDebuggerBannerViewMode( void )
|
||||
{
|
||||
#ifdef __IS_DEBUGGER_BUILD
|
||||
#if 0
|
||||
return ( SYSM_IsRunOnDebugger() &&
|
||||
SYSMi_IsValidCard() &&
|
||||
SYSM_GetCardRomHeader()->dbgRomSize == 0 ) ? TRUE : FALSE;
|
||||
#else
|
||||
return FALSE;
|
||||
#endif // __IS_DEBUGGER_BUILD
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -25,6 +25,7 @@
|
||||
// extern data------------------------------------------
|
||||
// function's prototype declaration---------------------
|
||||
static s64 UTLi_CalcRTCSecOffset( RTCDate *datep, RTCTime *timep );
|
||||
static u32 s_fatalError = 0;
|
||||
|
||||
// global variable -------------------------------------
|
||||
// static variable -------------------------------------
|
||||
@ -259,3 +260,28 @@ BOOL UTL_CheckRTCTime( RTCTime *timep )
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
//======================================================================
|
||||
// FATALエラー処理
|
||||
//======================================================================
|
||||
|
||||
// FATALエラーをセット
|
||||
void UTL_SetFatalError( FatalErrorCode error )
|
||||
{
|
||||
s_fatalError |= 1 << error;
|
||||
}
|
||||
|
||||
|
||||
// FATALエラーか?
|
||||
BOOL UTL_IsFatalError( void )
|
||||
{
|
||||
return s_fatalError ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
|
||||
// FATALエラーコード取得
|
||||
u32 UTL_GetFatalError( void )
|
||||
{
|
||||
return s_fatalError ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
|
||||
@ -68,7 +68,7 @@ BOOL LoadSharedFontInit( void )
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
pBuffer = Alloc( (u32)size );
|
||||
pBuffer = SYSM_Alloc( (u32)size );
|
||||
if( pBuffer == NULL ) {
|
||||
OS_TPrintf( "malloc failed.\n" );
|
||||
return FALSE;
|
||||
@ -106,7 +106,7 @@ void LoadSharedFontThread( void *arg )
|
||||
// FSのキャッシュが怪しそうなので、とりあえずアラインメントをとっておく。
|
||||
size = MATH_ROUNDUP( size, SYSM_ALIGNMENT_LOAD_MODULE );
|
||||
|
||||
s_pFontBuffer[ i ] = Alloc( (u32)size );
|
||||
s_pFontBuffer[ i ] = SYSM_Alloc( (u32)size );
|
||||
if( s_pFontBuffer[ i ] == NULL ) {
|
||||
OS_TPrintf( "malloc failed.\n" );
|
||||
retval = FALSE;
|
||||
@ -125,7 +125,7 @@ void LoadSharedFontThread( void *arg )
|
||||
OS_TPrintf( "Shared Font load succeeded.\n" );
|
||||
}else {
|
||||
OS_TPrintf( "Shared Font load failed.\n" );
|
||||
SYSM_SetFatalError( TRUE );
|
||||
UTL_SetFatalError( FATAL_ERROR_SHARED_FONT );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -628,7 +628,7 @@ instfirm_error:
|
||||
PMi_SetWirelessLED( PM_WIRELESS_LED_OFF );
|
||||
#endif
|
||||
s_isFinished = TRUE;
|
||||
SYSM_SetFatalError( TRUE );
|
||||
UTL_SetFatalError( FATAL_ERROR_WLANFIRM_AUTH );
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@ -669,7 +669,7 @@ BOOL PollingInstallWlanFirmware( BOOL isStartScanWDS )
|
||||
// ロード失敗
|
||||
if( !s_isHotStartWLFirm ) {
|
||||
// ColdStartの無線ファームロードなら、FATALエラー
|
||||
SYSM_SetFatalError( TRUE );
|
||||
UTL_SetFatalError( FATAL_ERROR_WLANFIRM_LOAD );
|
||||
#ifdef SDK_RELEASE
|
||||
PMi_SetWirelessLED( PM_WIRELESS_LED_OFF );
|
||||
#endif
|
||||
|
||||
@ -25,7 +25,6 @@
|
||||
#include "sound.h"
|
||||
#include "loadWlanFirm.h"
|
||||
#include "loadSharedFont.h"
|
||||
#include "loadSysmVersion.h"
|
||||
|
||||
// extern data-----------------------------------------------------------------
|
||||
|
||||
@ -245,7 +244,8 @@ void TwlMain( void )
|
||||
#endif
|
||||
|
||||
// 各種パラメータの取得------------
|
||||
pBootTitle = SYSM_ReadParameters(); // 本体設定データ、リセットパラメータのリード、検査用オート起動カード判定、量産ライン用キーショートカット起動判定等のリード
|
||||
pBootTitle = SYSM_ReadParameters(); // 本体設定データ、HW情報リード
|
||||
// アプリジャンプ、検査用カード起動、生産工程用ショートカット、デバッガ起動、初回起動シーケンス、TP設定ショートカットの判定
|
||||
|
||||
// end時間計測1-c
|
||||
#if (MEASURE_TIME == 1)
|
||||
@ -260,11 +260,12 @@ void TwlMain( void )
|
||||
// TPキャリブレーション
|
||||
UTL_CaribrateTP( LCFG_TSD_GetTPCalibrationPtr() );
|
||||
|
||||
if( SYSM_IsFatalError() ) {
|
||||
if( UTL_IsFatalError() ) {
|
||||
// FATALエラー処理
|
||||
}
|
||||
if( !LCFG_TSD_IsFinishedInitialSetting() ) {
|
||||
// 初回起動シーケンス判定
|
||||
if( !LCFG_TSD_IsFinishedInitialSetting_Launcher() ) {
|
||||
// ランチャー内での初回起動シーケンス中なら、写真撮影を実行するようにする。
|
||||
// ※本体設定内での初会起動シーケンス中の場合は、SYSM_ReadParameters 内のチェックで検出されて、本体設定が起動されるようになっています。
|
||||
}
|
||||
|
||||
(void)SYSM_GetCardTitleList( s_titleList ); // カードアプリリストの取得(カードアプリはs_titleList[0]に格納される)
|
||||
@ -322,7 +323,7 @@ void TwlMain( void )
|
||||
( pBootTitle && !SYSM_IsLogoDemoSkip() ) ) {
|
||||
u32 timestamp;
|
||||
if( !LoadSharedFontInit() ) { // 共有フォントのロード
|
||||
SYSM_SetFatalError( TRUE );
|
||||
UTL_SetFatalError( FATAL_ERROR_SHARED_FONT );
|
||||
}
|
||||
timestamp = OS_GetSharedFontTimestamp();
|
||||
if( timestamp > 0 ) OS_TPrintf( "SharedFont timestamp : %08x\n", timestamp );
|
||||
@ -332,10 +333,6 @@ void TwlMain( void )
|
||||
OS_TPrintf( "GetSharedFont : %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
||||
#endif
|
||||
|
||||
// バージョン情報のロード
|
||||
LoadSysmVersion();
|
||||
OS_TPrintf( "Launcher Version = %d", GetSysmVersion() );
|
||||
|
||||
// 開始ステートの判定--------------
|
||||
|
||||
// start時間計測7
|
||||
@ -401,7 +398,7 @@ void TwlMain( void )
|
||||
OS_TPrintf( "Load WlanFirm Time : %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
||||
#endif
|
||||
|
||||
if( SYSM_IsFatalError() ) {
|
||||
if( UTL_IsFatalError() ) {
|
||||
// FATALエラー処理
|
||||
}
|
||||
|
||||
@ -436,7 +433,7 @@ void TwlMain( void )
|
||||
if( LogoMain() &&
|
||||
IsFinishedLoadSharedFont() ) { // フォントロード終了をここでチェック
|
||||
#if 0
|
||||
if( SYSM_IsFatalError() ) {
|
||||
if( UTL_IsFatalError() ) {
|
||||
state = STOP;
|
||||
}else
|
||||
#endif
|
||||
@ -502,7 +499,7 @@ void TwlMain( void )
|
||||
SYSM_IsAuthenticateTitleFinished() )
|
||||
{
|
||||
AuthResult res;
|
||||
if( SYSM_IsFatalError() ) {
|
||||
if( UTL_IsFatalError() ) {
|
||||
// FATALエラー処理
|
||||
}
|
||||
|
||||
|
||||
@ -48,6 +48,7 @@ export DO_NOT_SHOW_LAUNCHER = TRUE
|
||||
export DISABLE_WDS_SCAN = TRUE
|
||||
export IGNORE_WLFIRM_SIGNCHECK = FALSE
|
||||
export DISABLE_WLFIRM_LOAD = FALSE
|
||||
export DISABLE_INITIAL_SETTINGS = TRUE
|
||||
export SYSM_OUTSIDE_UI = TRUE
|
||||
|
||||
# MAKEROM SWITCH for build SystemMenu
|
||||
|
||||
@ -22,6 +22,7 @@
|
||||
#include <twl/nam.h>
|
||||
#include <twl/os/common/format_rom.h>
|
||||
#include <twl/os/common/banner.h>
|
||||
#include <twl/os/common/msJump.h>
|
||||
#include <sysmenu/reloc_info/common/reloc_info.h>
|
||||
#include <application_jump_private.h>
|
||||
|
||||
@ -39,7 +40,7 @@ extern "C" {
|
||||
#define CARD_SLOT_NUM 1 // カードスロット数
|
||||
#define LAUNCHER_TITLE_LIST_NUM ( LCFG_TWL_FREE_SOFT_BOX_COUNT_MAX + 1 ) // ランチャーのタイトルリスト数
|
||||
|
||||
#define SYSM_PAD_SHORTCUT_TP ( PAD_BUTTON_X )
|
||||
#define SYSM_PAD_SHORTCUT_TP_CALIBRATION ( PAD_BUTTON_L | PAD_BUTTON_R | PAD_BUTTON_START )
|
||||
#define SYSM_PAD_SHORTCUT_MACHINE_SETTINGS ( PAD_BUTTON_SELECT )
|
||||
#define SYSM_PAD_PRODUCTION_SHORTCUT_CARD_BOOT ( PAD_BUTTON_A | PAD_BUTTON_B \
|
||||
| PAD_BUTTON_X | PAD_BUTTON_Y | PAD_BUTTON_R )
|
||||
@ -160,8 +161,6 @@ extern BOOL SYSM_MakeTitleListMakerInfoFromHeader( TitleListMakerInfo *info, ROM
|
||||
extern BOOL SYSM_IsExistCard( void ); // TWL/NTRカードが差さっているか?(アプリは未認証状態)
|
||||
extern BOOL SYSM_IsInspectCard( void ); // 検査カードが差さっているか?
|
||||
extern BOOL SYSM_IsHotStart( void ); // ホットスタートか?
|
||||
extern BOOL SYSM_IsFatalError( void ); // FATALエラーか?
|
||||
extern void SYSM_SetFatalError( BOOL isFatalError ); // FATALエラーのセット
|
||||
extern BOOL SYSM_IsLogoDemoSkip( void ); // ロゴデモ飛ばし状態か?
|
||||
extern void SYSM_SetLogoDemoSkip( BOOL skip ); // ロゴデモ飛ばし状態フラグを設定する。
|
||||
extern BOOL SYSM_IsValidTSD( void ); // TWL設定データは有効か?
|
||||
|
||||
@ -98,7 +98,6 @@ typedef struct SYSM_work {
|
||||
Relocate_Info romRelocateInfo[RELOCATE_INFO_NUM]; // ROM再配置情報(arm9,arm7それぞれltdとflxで最大4つ)
|
||||
struct {
|
||||
struct {
|
||||
vu32 isFatalError :1; // FATALエラー
|
||||
vu32 isARM9Start :1; // ARM9スタートフラグ
|
||||
vu32 isHotStart :1; // Hot/Coldスタート判定
|
||||
vu32 isValidLauncherParam :1; // ランチャーパラメータ有効
|
||||
@ -108,10 +107,9 @@ typedef struct SYSM_work {
|
||||
vu32 isLoadFinished :1; // アプリロード完了?
|
||||
vu32 isLoadSucceeded :1; // アプリロード成功?
|
||||
vu32 isCardBoot :1; // カードブートか?
|
||||
vu32 isInitialSettings :1; // 初回起動シーケンスか?
|
||||
vu32 isBrokenHWNormalInfo :1; // HWノーマル情報が破損している。
|
||||
vu32 isBrokenHWSecureInfo :1; // HWセキュア情報が破損している。
|
||||
vu32 isBrokenTWLSettings :1; // TWL本体設定データが破損している。
|
||||
vu32 isResetRTC :1; // RTCリセット発生
|
||||
vu32 isNANDFatalError :1; // NANDFATALエラー発生
|
||||
vu32 :0;
|
||||
}common;
|
||||
struct {
|
||||
|
||||
@ -28,6 +28,19 @@ extern "C" {
|
||||
// define data----------------------------------------------------------
|
||||
#define BACKLIGHT_BRIGHTNESS_MAX 4
|
||||
|
||||
typedef enum FatalErrorCode {
|
||||
FATAL_ERROR_UNDEFINED = 0,
|
||||
FATAL_ERROR_NAND = 1,
|
||||
FATAL_ERROR_HWINFO_NORMAL = 2,
|
||||
FATAL_ERROR_HWINFO_SECURE = 3,
|
||||
FATAL_ERROR_TWLSETTINGS = 4,
|
||||
FATAL_ERROR_SHARED_FONT = 5,
|
||||
FATAL_ERROR_WLANFIRM_AUTH = 6,
|
||||
FATAL_ERROR_WLANFIRM_LOAD = 7,
|
||||
FATAL_ERROR_MAX = 8
|
||||
}FatalErrorCode;
|
||||
|
||||
|
||||
// global variable------------------------------------------------------
|
||||
// function-------------------------------------------------------------
|
||||
|
||||
@ -61,9 +74,14 @@ static inline BOOL UTL_IsROMHeaderEULARequired( void )
|
||||
return (BOOL)SYSM_GetAppRomHeader()->agree_EULA;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
// FATALエラー
|
||||
extern BOOL UTL_IsFatalError( void ); // FATALエラーか?
|
||||
extern void UTL_SetFatalError( FatalErrorCode error ); // FATALエラーのセット
|
||||
extern u32 UTL_GetFatalError( void ); // FATALエラー状態の取得(FatalErrorCodeをビットに割り当てて格納しています。)
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
Loading…
Reference in New Issue
Block a user