NAMUT_Format実行時にNANDのフリーソフトボックスカウントの値を更新するようにしました。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1453 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
kamikawa 2008-05-22 01:50:15 +00:00
parent b7061d3616
commit b122831485
15 changed files with 147 additions and 182 deletions

View File

@ -26,6 +26,8 @@
#include <twl/os/common/banner.h> #include <twl/os/common/banner.h>
#include <sysmenu/namut.h> #include <sysmenu/namut.h>
#include <nitro/nvram.h> #include <nitro/nvram.h>
#include <twl/lcfg/common/TWLSettings.h>
#include <twl/lcfg/common/api.h>
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
@ -160,6 +162,9 @@ BOOL NAMUT_Format(void)
// WiFi設定データをクリアします // WiFi設定データをクリアします
NAMUTi_ClearWiFiSettings(); NAMUTi_ClearWiFiSettings();
// SoftBoxCountの更新を行います
NAMUT_UpdateSoftBoxCount();
return ret; return ret;
} }
@ -548,26 +553,29 @@ static BOOL NAMUTi_RandClearFile(const char* path)
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: NAMUT_SearchInstalledSoftBoxCount Name: NAMUT_GetSoftBoxCount
Description: InstalledSoftBoxCountの数を調べて返します Description: NANDの InstalledSoftBoxCountFreeSoftBoxCountを調べて
Arguments: None Arguments: installed : installedカウント格納変数
free : freeカウント格納変数
Returns: None Returns: TRUE
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
u32 NAMUT_SearchInstalledSoftBoxCount( void ) BOOL NAMUT_GetSoftBoxCount( u8* installed, u8* free )
{ {
s32 title_num; s32 title_num;
NAMTitleInfo namTitleInfo; NAMTitleInfo namTitleInfo;
u32 count = 0; u8 count = 0;
BOOL result = TRUE;
s32 i; s32 i;
// タイトルリスト取得 // タイトルリスト取得
if (NAM_GetTitleList(sTitleIdArray, TITLE_LIST_MAX) != NAM_OK) if (NAM_GetTitleList(sTitleIdArray, TITLE_LIST_MAX) != NAM_OK)
{ {
OS_TWarning("Fail! NAM_GetTitleList() in %s\n", __func__); OS_TWarning("Fail! NAM_GetTitleList() in %s\n", __func__);
return 0; return FALSE;
} }
// タイトル数取得 // タイトル数取得
@ -584,9 +592,57 @@ u32 NAMUT_SearchInstalledSoftBoxCount( void )
count++; count++;
} }
} }
else
{
result = FALSE;
}
} }
return count; // installed count
*installed = count;
// free count
*free = (u8)(LCFG_TWL_FREE_SOFT_BOX_COUNT_MAX - count);
return result;
}
/*---------------------------------------------------------------------------*
Name: NAMUT_UpdateSoftBoxCount
Description: InstalledSoftBoxCount, FreeSoftBoxCount
NANDの状態に合わせて更新します
Arguments: None.
Returns: TRUE
*---------------------------------------------------------------------------*/
BOOL NAMUT_UpdateSoftBoxCount( void )
{
u8 installedSoftBoxCount;
u8 freeSoftBoxCount;
u8 *pBuffer;
// InstalledSoftBoxCount, FreeSoftBoxCount を数えなおす
if (!NAMUT_GetSoftBoxCount(&installedSoftBoxCount, &freeSoftBoxCount))
{
return FALSE;
}
OS_Printf("installedSoftBoxCount = %d\n", installedSoftBoxCount);
OS_Printf("freeSoftBoxCount = %d\n", freeSoftBoxCount);
// LCFGライブラリの静的変数に対する更新
LCFG_TSD_SetInstalledSoftBoxCount( installedSoftBoxCount );
LCFG_TSD_SetFreeSoftBoxCount( freeSoftBoxCount );
// LCFGライブラリの静的変数の値をNANDに反映
pBuffer = spAllocFunc( LCFG_WRITE_TEMP );
if (!pBuffer) { return FALSE; }
(void)LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer );
spFreeFunc( pBuffer );
return TRUE;
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*

View File

@ -36,6 +36,9 @@ TARGET_BIN = main.srl
ROM_SPEC = main.rsf ROM_SPEC = main.rsf
MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/armadillo/$(TWL_BUILDTYPE_ARM7)/armadillo
MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).TWL.FLX.sbin
MISC_DIR = ../../../systemMenu_RED/misc MISC_DIR = ../../../systemMenu_RED/misc
SRCS = main.c HWInfoWriter.c hwi.c \ SRCS = main.c HWInfoWriter.c hwi.c \
@ -51,7 +54,13 @@ SYSMENU_LIBS = \
SDK_APPEND_LIBS = \ SDK_APPEND_LIBS = \
liblcfg$(TWL_LIBSUFFIX).a liblcfg$(TWL_LIBSUFFIX).a
LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) \
libnamut$(TWL_LIBSUFFIX).a \
libes$(TWL_LIBSUFFIX).a \
libnam$(TWL_LIBSUFFIX).a \
libsea$(TWL_LIBSUFFIX).a \
libboc$(TWL_LIBSUFFIX).a \
libsfs$(TWL_LIBSUFFIX).a
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------

View File

@ -114,7 +114,7 @@ Property
# WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD]
# don't have to edit # don't have to edit
# #
WramMapping $(MAKEROM_WRAM_MAPPING) WramMapping MAP_TS_SCR
# #
# CardRegion: card region [Japan/America/Europe/Australia/China/Korea] # CardRegion: card region [Japan/America/Europe/Australia/China/Korea]

View File

@ -18,6 +18,7 @@
#include <twl.h> #include <twl.h>
#include <sysmenu.h> #include <sysmenu.h>
#include <sysmenu/acsign.h> #include <sysmenu/acsign.h>
#include <sysmenu/namut.h>
#include "TWLHWInfo_api.h" #include "TWLHWInfo_api.h"
#include "TWLSettings_api.h" #include "TWLSettings_api.h"
#include "hwi.h" #include "hwi.h"
@ -262,6 +263,8 @@ BOOL HWI_ModifyLanguage( u8 region )
#pragma unused( region ) #pragma unused( region )
u32 langBitmap = LCFG_THW_GetValidLanguageBitmap(); u32 langBitmap = LCFG_THW_GetValidLanguageBitmap();
u8 nowLanguage = LCFG_TSD_GetLanguage(); u8 nowLanguage = LCFG_TSD_GetLanguage();
u8 installedSoftBoxCount;
u8 freeSoftBoxCount;
BOOL result = TRUE; BOOL result = TRUE;
if (!ReadTWLSettings()) if (!ReadTWLSettings())
@ -290,6 +293,16 @@ BOOL HWI_ModifyLanguage( u8 region )
// ペアレンタルコントロール情報もクリアしておく // ペアレンタルコントロール情報もクリアしておく
MI_CpuClearFast( (void *)LCFG_TSD_GetPCTLPtr(), sizeof(LCFGTWLParentalControl) ); MI_CpuClearFast( (void *)LCFG_TSD_GetPCTLPtr(), sizeof(LCFGTWLParentalControl) );
// ソフトボックスカウントを更新
if (!NAMUT_GetSoftBoxCount(&installedSoftBoxCount, &freeSoftBoxCount))
{
return FALSE;
}
// LCFGライブラリの静的変数に対する更新
LCFG_TSD_SetInstalledSoftBoxCount( installedSoftBoxCount );
LCFG_TSD_SetFreeSoftBoxCount( freeSoftBoxCount );
// regionが変わった場合は、LANGUAGE_BITMAPも必ず変わるので、それをNTR側に反映させるために必ずTWL設定データの書き込みも行う。 // regionが変わった場合は、LANGUAGE_BITMAPも必ず変わるので、それをNTR側に反映させるために必ずTWL設定データの書き込みも行う。
{ {
u8 *pBuffer = spAlloc( LCFG_WRITE_TEMP ); u8 *pBuffer = spAlloc( LCFG_WRITE_TEMP );

View File

@ -16,6 +16,7 @@
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
#include <twl.h> #include <twl.h>
#include <sysmenu/namut.h>
#include "misc.h" #include "misc.h"
#include "HWInfoWriter.h" #include "HWInfoWriter.h"
@ -59,6 +60,10 @@ void TwlMain(void)
// システムの初期化------------------ // システムの初期化------------------
InitAllocator(); InitAllocator();
// SoftBoxCountを調べるのにNAM/NAMUTを使用する
NAM_Init( Alloc, Free );
NAMUT_Init( Alloc, Free );
// メインループ---------------------------- // メインループ----------------------------
HWInfoWriterInit(); HWInfoWriterInit();
while(1){ while(1){

View File

@ -54,7 +54,6 @@ static ImportJump sImportJumpSetting;
static void ProgressThread(void* arg); static void ProgressThread(void* arg);
static void Destructor(void* arg); static void Destructor(void* arg);
void ProgressDraw(f32 ratio); void ProgressDraw(f32 ratio);
static void UpdateNandBoxCount( void );
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
@ -115,12 +114,19 @@ BOOL kamiImportTad(NAMTitleId* pTitleID)
return FALSE; return FALSE;
} }
// NOT_LAUNCH_FLAG または DATA_ONLY_FLAG が立っていないタイトルの場合
// freeSoftBoxCountに空きがなければインポートしない // freeSoftBoxCountに空きがなければインポートしない
if (NAMUT_SearchInstalledSoftBoxCount() == LCFG_TWL_FREE_SOFT_BOX_COUNT_MAX)
{ {
OS_Warning(" Fail! : NAND FreeSoftBoxCount == 0\n"); u8 installed, free;
return FALSE; if (!NAMUT_GetSoftBoxCount(&installed, &free))
{
OS_Warning(" Fail! : Can not get soft box count\n");
return FALSE;
}
if (free == 0)
{
OS_Warning(" Fail! : NAND FreeSoftBoxCount == 0\n");
return FALSE;
}
} }
// TADファイルが更新されている場合に限りインポート処理を行う // TADファイルが更新されている場合に限りインポート処理を行う
@ -147,7 +153,10 @@ BOOL kamiImportTad(NAMTitleId* pTitleID)
if ( nam_result == NAM_OK ) if ( nam_result == NAM_OK )
{ {
// InstalledSoftBoxCount, FreeSoftBoxCount の値を現在のNANDの状態に合わせて更新します。 // InstalledSoftBoxCount, FreeSoftBoxCount の値を現在のNANDの状態に合わせて更新します。
UpdateNandBoxCount(); if (!NAMUT_UpdateSoftBoxCount())
{
OS_Warning(" Fail! : Update Soft Box Count\n");
}
} }
else else
{ {
@ -287,40 +296,6 @@ void ProgressDraw(f32 ratio)
G3_SwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_W); G3_SwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_W);
} }
/*---------------------------------------------------------------------------*
Name: UpdateNandBoxCount
Description: InstalledSoftBoxCount, FreeSoftBoxCount
NANDの状態に合わせて更新します
Arguments: None.
Returns: None.
*---------------------------------------------------------------------------*/
static void UpdateNandBoxCount( void )
{
u32 installedSoftBoxCount;
u32 freeSoftBoxCount;
// InstalledSoftBoxCount, FreeSoftBoxCount を数えなおす
installedSoftBoxCount = NAMUT_SearchInstalledSoftBoxCount();
freeSoftBoxCount = LCFG_TWL_FREE_SOFT_BOX_COUNT_MAX - installedSoftBoxCount;
// LCFGライブラリの静的変数に対する更新
LCFG_TSD_SetInstalledSoftBoxCount( (u8)installedSoftBoxCount );
LCFG_TSD_SetFreeSoftBoxCount( (u8)freeSoftBoxCount );
// LCFGライブラリの静的変数の値をNANDに反映
{
u8 *pBuffer = OS_Alloc( LCFG_WRITE_TEMP );
if( pBuffer ) {
(void)LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer );
OS_Free( pBuffer );
}
}
}
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: GetImportJumpSetting Name: GetImportJumpSetting

View File

@ -54,18 +54,6 @@ void* HWInfoProcess4(void);
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
BOOL WriteHWInfoFile( u8 region, BOOL wirelessForceOff ); BOOL WriteHWInfoFile( u8 region, BOOL wirelessForceOff );
/*---------------------------------------------------------------------------*
Name: UpdateNandBoxCount
Description: InstalledSoftBoxCount, FreeSoftBoxCount
NANDの状態に合わせて更新します
Arguments: None.
Returns: None.
*---------------------------------------------------------------------------*/
void UpdateNandBoxCount( void );
/*===========================================================================*/ /*===========================================================================*/
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -218,23 +218,17 @@ void* FormatProcess2(void)
kamiFontPrintf(24, y_pos, FONT_COLOR_BLACK, " WAIT"); kamiFontPrintf(24, y_pos, FONT_COLOR_BLACK, " WAIT");
kamiFontLoadScreenData(); kamiFontLoadScreenData();
result &= NAMUT_Format();
if (result)
{ {
// 現在の設定を保存しておきフォーマット後に保存設定で初期化する kamiFontPrintf(24, y_pos, FONT_COLOR_GREEN, " OK ");
u8 region = LCFG_THW_GetRegion();
BOOL isForceDisableWireless = LCFG_THW_IsForceDisableWireless();
result &= NAMUT_Format();
result &= WriteHWInfoFile(region, isForceDisableWireless);
if (result)
{
kamiFontPrintf(24, y_pos, FONT_COLOR_GREEN, " OK ");
}
else
{
kamiFontPrintf(24, y_pos, FONT_COLOR_RED, " NG ");
}
} }
else
{
kamiFontPrintf(24, y_pos, FONT_COLOR_RED, " NG ");
}
#ifdef DUMP_NAND_TREE #ifdef DUMP_NAND_TREE
OS_Printf("\n"); OS_Printf("\n");
OS_Printf("---------------------------------------\n"); OS_Printf("---------------------------------------\n");
@ -243,9 +237,6 @@ void* FormatProcess2(void)
NAMUT_DrawNandTree(); NAMUT_DrawNandTree();
#endif #endif
// InstalledSoftBoxCount, FreeSoftBoxCount の値を現在のNANDの状態に合わせて更新します。
UpdateNandBoxCount();
#ifdef USE_FOR_NIGHTLY_AUTO_TEST #ifdef USE_FOR_NIGHTLY_AUTO_TEST
if (result) if (result)
{ {

View File

@ -329,9 +329,6 @@ BOOL WriteHWInfoFile( u8 region, BOOL wirelessForceOff )
result = FALSE; result = FALSE;
} }
// InstalledSoftBoxCount, FreeSoftBoxCount の値を現在のNANDの状態に合わせて更新します。
UpdateNandBoxCount();
return result; return result;
} }
@ -378,43 +375,6 @@ static BOOL DeleteHWInfoFile( void )
return result; return result;
} }
/*---------------------------------------------------------------------------*
Name: UpdateNandBoxCount
Description: InstalledSoftBoxCount, FreeSoftBoxCount
NANDの状態に合わせて更新します
Arguments: None.
Returns: None.
*---------------------------------------------------------------------------*/
void UpdateNandBoxCount( void )
{
u32 installedSoftBoxCount;
u32 freeSoftBoxCount;
// InstalledSoftBoxCount, FreeSoftBoxCount を数えなおす
installedSoftBoxCount = NAMUT_SearchInstalledSoftBoxCount();
freeSoftBoxCount = LCFG_TWL_FREE_SOFT_BOX_COUNT_MAX - installedSoftBoxCount;
// OS_Printf("installedSoftBoxCount = %d\n", installedSoftBoxCount);
// OS_Printf("freeSoftBoxCount = %d\n", freeSoftBoxCount);
// LCFGライブラリの静的変数に対する更新
LCFG_TSD_SetInstalledSoftBoxCount( (u8)installedSoftBoxCount );
LCFG_TSD_SetFreeSoftBoxCount( (u8)freeSoftBoxCount );
// LCFGライブラリの静的変数の値をNANDに反映
{
u8 *pBuffer = OS_Alloc( LCFG_WRITE_TEMP );
if( pBuffer ) {
(void)LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer );
OS_Free( pBuffer );
}
}
}
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: GetNandInitializerSetting Name: GetNandInitializerSetting

View File

@ -685,7 +685,13 @@ static BOOL ImportTad(char* file_name, TadWriteOption option)
// freeSoftBoxCountに空きがなければインポートしない // freeSoftBoxCountに空きがなければインポートしない
if (!(tadInfo.titleInfo.titleId & (TITLE_ID_NOT_LAUNCH_FLAG_MASK | TITLE_ID_DATA_ONLY_FLAG_MASK))) if (!(tadInfo.titleInfo.titleId & (TITLE_ID_NOT_LAUNCH_FLAG_MASK | TITLE_ID_DATA_ONLY_FLAG_MASK)))
{ {
if (NAMUT_SearchInstalledSoftBoxCount() == LCFG_TWL_FREE_SOFT_BOX_COUNT_MAX) u8 installed, free;
if (!NAMUT_GetSoftBoxCount( &installed, &free ))
{
return FALSE;
}
if (free == 0)
{ {
kamiFontPrintfConsole(1, "NAND FreeSoftBoxCount == 0"); kamiFontPrintfConsole(1, "NAND FreeSoftBoxCount == 0");
return FALSE; return FALSE;
@ -733,7 +739,7 @@ static BOOL ImportTad(char* file_name, TadWriteOption option)
} }
// InstalledSoftBoxCount, FreeSoftBoxCount の値を現在のNANDの状態に合わせて更新します。 // InstalledSoftBoxCount, FreeSoftBoxCount の値を現在のNANDの状態に合わせて更新します。
UpdateNandBoxCount(); NAMUT_UpdateSoftBoxCount();
return ret; return ret;
} }

View File

@ -58,18 +58,6 @@ BOOL WriteHWInfoFile( u8 region, BOOL wirelessForceOff );
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
BOOL DeleteHWInfoFile( void ); BOOL DeleteHWInfoFile( void );
/*---------------------------------------------------------------------------*
Name: UpdateNandBoxCount
Description: InstalledSoftBoxCount, FreeSoftBoxCount
NANDの状態に合わせて更新します
Arguments: None.
Returns: None.
*---------------------------------------------------------------------------*/
void UpdateNandBoxCount( void );
/*===========================================================================*/ /*===========================================================================*/
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -100,9 +100,6 @@ BOOL WriteHWInfoFile( u8 region, BOOL wirelessForceOff )
result = FALSE; result = FALSE;
} }
// InstalledSoftBoxCount, FreeSoftBoxCount の値を現在のNANDの状態に合わせて更新します。
UpdateNandBoxCount();
return result; return result;
} }
@ -148,41 +145,3 @@ BOOL DeleteHWInfoFile( void )
return result; return result;
} }
/*---------------------------------------------------------------------------*
Name: UpdateNandBoxCount
Description: InstalledSoftBoxCount, FreeSoftBoxCount
NANDの状態に合わせて更新します
Arguments: None.
Returns: None.
*---------------------------------------------------------------------------*/
void UpdateNandBoxCount( void )
{
u32 installedSoftBoxCount;
u32 freeSoftBoxCount;
// InstalledSoftBoxCount, FreeSoftBoxCount を数えなおす
installedSoftBoxCount = NAMUT_SearchInstalledSoftBoxCount();
freeSoftBoxCount = LCFG_TWL_FREE_SOFT_BOX_COUNT_MAX - installedSoftBoxCount;
// OS_Printf("installedSoftBoxCount = %d\n", installedSoftBoxCount);
// OS_Printf("freeSoftBoxCount = %d\n", freeSoftBoxCount);
// LCFGライブラリの静的変数に対する更新
LCFG_TSD_SetInstalledSoftBoxCount( (u8)installedSoftBoxCount );
LCFG_TSD_SetFreeSoftBoxCount( (u8)freeSoftBoxCount );
// LCFGライブラリの静的変数の値をNANDに反映
{
u8 *pBuffer = OS_Alloc( LCFG_WRITE_TEMP );
if( pBuffer ) {
(void)LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer );
OS_Free( pBuffer );
}
}
}

View File

@ -113,7 +113,7 @@ s32 kamiImportTad(int no, int total, const char* path)
while (sProgress){}; while (sProgress){};
// InstalledSoftBoxCount, FreeSoftBoxCount の値を現在のNANDの状態に合わせて更新します。 // InstalledSoftBoxCount, FreeSoftBoxCount の値を現在のNANDの状態に合わせて更新します。
UpdateNandBoxCount(); (void)NAMUT_UpdateSoftBoxCount();
return nam_result; return nam_result;
} }

View File

@ -143,7 +143,8 @@ TwlMain()
InitAllocation(); InitAllocation();
// NAMライブラリ初期化 // NAMライブラリ初期化
NAM_Init( OS_AllocFromMain, OS_FreeToMain); NAM_Init( OS_AllocFromMain, OS_FreeToMain );
NAMUT_Init( OS_AllocFromMain, OS_FreeToMain ); // SoftBoxCountの計算に必要
// 表示関連初期化 // 表示関連初期化
InitGraphics(); InitGraphics();

View File

@ -52,15 +52,29 @@ void NAMUT_Init(NAMUTAlloc allocFunc, NAMUTFree freeFunc);
BOOL NAMUT_Format(void); BOOL NAMUT_Format(void);
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: NAMUT_SearchInstalledSoftBoxCount Name: NAMUT_GetSoftBoxCount
Description: InstalledSoftBoxCountの数を調べて返します Description: NANDの installedカウントfreeカウントを調べて
Arguments: None Arguments: installed : installedカウント格納変数
free : freeカウント格納変数
Returns: None Returns: TRUE
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
u32 NAMUT_SearchInstalledSoftBoxCount( void ); BOOL NAMUT_GetSoftBoxCount( u8* installed, u8* free );
/*---------------------------------------------------------------------------*
Name: NAMUT_UpdateSoftBoxCount
Description: InstalledSoftBoxCount, FreeSoftBoxCount
NANDの状態に合わせて更新します
Arguments: None.
Returns: TRUE
*---------------------------------------------------------------------------*/
BOOL NAMUT_UpdateSoftBoxCount( void );
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: NAMUT_DrawNandTree Name: NAMUT_DrawNandTree