From fb932ac22239dee657a8f82524130112d181b8a6 Mon Sep 17 00:00:00 2001 From: yosiokat Date: Tue, 24 Jun 2008 13:13:16 +0000 Subject: [PATCH] =?UTF-8?q?FATAL=E3=82=A8=E3=83=A9=E3=83=BC=E5=87=A6?= =?UTF-8?q?=E7=90=86=E3=82=92UTL=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9?= =?UTF-8?q?=E3=83=AA=E3=81=AB=E3=81=BE=E3=81=A8=E3=82=81=E3=82=8B=E3=80=82?= =?UTF-8?q?=20=E5=88=9D=E5=9B=9E=E8=B5=B7=E5=8B=95=E3=82=B7=E3=83=BC?= =?UTF-8?q?=E3=82=B1=E3=83=B3=E3=82=B9=E5=87=A6=E7=90=86=E3=81=AE=E5=AE=9F?= =?UTF-8?q?=E8=A3=85=E3=80=82=EF=BC=88=E3=83=87=E3=83=95=E3=82=A9=E3=83=AB?= =?UTF-8?q?=E3=83=88OFF)=20=E3=83=95=E3=83=A9=E3=83=83=E3=82=B7=E3=83=A5?= =?UTF-8?q?=E5=A3=8A=E3=82=8C=E3=82=B7=E3=83=BC=E3=82=B1=E3=83=B3=E3=82=B9?= =?UTF-8?q?=E5=87=A6=E7=90=86=E3=81=AE=E5=AE=9F=E8=A3=85=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1682 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM9/src/device.c | 5 +- .../sysmenu/ARM9/src/sysmenu_lib.c | 127 +++++++++++------- .../sysmenu/common/src/status.c | 18 +-- build/libraries_sysmenu/util/ARM9/src/util.c | 26 ++++ .../Launcher/ARM9/src/loadSharedFont.c | 6 +- .../Launcher/ARM9/src/loadWlanFirm.c | 4 +- build/systemMenu_RED/Launcher/ARM9/src/main.c | 23 ++-- build/systemMenu_tools/SystemUpdater/Makefile | 1 + .../sysmenu/sysmenu_lib/common/sysmenu_api.h | 5 +- .../sysmenu/sysmenu_lib/common/sysmenu_work.h | 6 +- include/sysmenu/util.h | 20 ++- 11 files changed, 148 insertions(+), 93 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/device.c b/build/libraries_sysmenu/sysmenu/ARM9/src/device.c index a773d445..5b7c6a79 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/device.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/device.c @@ -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 ); diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index 80f64c7c..d80b0a25 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -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; // 「ブート内容未定」でリターン } diff --git a/build/libraries_sysmenu/sysmenu/common/src/status.c b/build/libraries_sysmenu/sysmenu/common/src/status.c index bda15e2e..f2f3f1f9 100644 --- a/build/libraries_sysmenu/sysmenu/common/src/status.c +++ b/build/libraries_sysmenu/sysmenu/common/src/status.c @@ -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 } diff --git a/build/libraries_sysmenu/util/ARM9/src/util.c b/build/libraries_sysmenu/util/ARM9/src/util.c index 624b9947..d71ed721 100644 --- a/build/libraries_sysmenu/util/ARM9/src/util.c +++ b/build/libraries_sysmenu/util/ARM9/src/util.c @@ -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; +} + diff --git a/build/systemMenu_RED/Launcher/ARM9/src/loadSharedFont.c b/build/systemMenu_RED/Launcher/ARM9/src/loadSharedFont.c index 5f5f59a2..7f55637f 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/loadSharedFont.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/loadSharedFont.c @@ -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 ); } } diff --git a/build/systemMenu_RED/Launcher/ARM9/src/loadWlanFirm.c b/build/systemMenu_RED/Launcher/ARM9/src/loadWlanFirm.c index cc8cf9a1..9267cf19 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/loadWlanFirm.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/loadWlanFirm.c @@ -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 diff --git a/build/systemMenu_RED/Launcher/ARM9/src/main.c b/build/systemMenu_RED/Launcher/ARM9/src/main.c index cc48d4fc..2543ebfc 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/main.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/main.c @@ -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エラー処理 } diff --git a/build/systemMenu_tools/SystemUpdater/Makefile b/build/systemMenu_tools/SystemUpdater/Makefile index 0fcd1ee9..8bff5c94 100644 --- a/build/systemMenu_tools/SystemUpdater/Makefile +++ b/build/systemMenu_tools/SystemUpdater/Makefile @@ -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 diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h index d4110111..54e4d7e7 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -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設定データは有効か? diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h index 1e9989f4..5a270e84 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h @@ -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 { diff --git a/include/sysmenu/util.h b/include/sysmenu/util.h index 7533ef7a..3fd13003 100644 --- a/include/sysmenu/util.h +++ b/include/sysmenu/util.h @@ -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