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 <sysmenu/namut.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設定データをクリアします
NAMUTi_ClearWiFiSettings();
// SoftBoxCountの更新を行います
NAMUT_UpdateSoftBoxCount();
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;
NAMTitleInfo namTitleInfo;
u32 count = 0;
u8 count = 0;
BOOL result = TRUE;
s32 i;
// タイトルリスト取得
if (NAM_GetTitleList(sTitleIdArray, TITLE_LIST_MAX) != NAM_OK)
{
OS_TWarning("Fail! NAM_GetTitleList() in %s\n", __func__);
return 0;
return FALSE;
}
// タイトル数取得
@ -584,9 +592,57 @@ u32 NAMUT_SearchInstalledSoftBoxCount( void )
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
MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/armadillo/$(TWL_BUILDTYPE_ARM7)/armadillo
MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).TWL.FLX.sbin
MISC_DIR = ../../../systemMenu_RED/misc
SRCS = main.c HWInfoWriter.c hwi.c \
@ -51,7 +54,13 @@ SYSMENU_LIBS = \
SDK_APPEND_LIBS = \
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]
# don't have to edit
#
WramMapping $(MAKEROM_WRAM_MAPPING)
WramMapping MAP_TS_SCR
#
# CardRegion: card region [Japan/America/Europe/Australia/China/Korea]

View File

@ -18,6 +18,7 @@
#include <twl.h>
#include <sysmenu.h>
#include <sysmenu/acsign.h>
#include <sysmenu/namut.h>
#include "TWLHWInfo_api.h"
#include "TWLSettings_api.h"
#include "hwi.h"
@ -262,6 +263,8 @@ BOOL HWI_ModifyLanguage( u8 region )
#pragma unused( region )
u32 langBitmap = LCFG_THW_GetValidLanguageBitmap();
u8 nowLanguage = LCFG_TSD_GetLanguage();
u8 installedSoftBoxCount;
u8 freeSoftBoxCount;
BOOL result = TRUE;
if (!ReadTWLSettings())
@ -290,6 +293,16 @@ BOOL HWI_ModifyLanguage( u8 region )
// ペアレンタルコントロール情報もクリアしておく
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設定データの書き込みも行う。
{
u8 *pBuffer = spAlloc( LCFG_WRITE_TEMP );

View File

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

View File

@ -54,7 +54,6 @@ static ImportJump sImportJumpSetting;
static void ProgressThread(void* arg);
static void Destructor(void* arg);
void ProgressDraw(f32 ratio);
static void UpdateNandBoxCount( void );
/*---------------------------------------------------------------------------*
@ -115,12 +114,19 @@ BOOL kamiImportTad(NAMTitleId* pTitleID)
return FALSE;
}
// NOT_LAUNCH_FLAG または DATA_ONLY_FLAG が立っていないタイトルの場合
// freeSoftBoxCountに空きがなければインポートしない
if (NAMUT_SearchInstalledSoftBoxCount() == LCFG_TWL_FREE_SOFT_BOX_COUNT_MAX)
{
OS_Warning(" Fail! : NAND FreeSoftBoxCount == 0\n");
return FALSE;
u8 installed, free;
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ファイルが更新されている場合に限りインポート処理を行う
@ -147,7 +153,10 @@ BOOL kamiImportTad(NAMTitleId* pTitleID)
if ( nam_result == NAM_OK )
{
// InstalledSoftBoxCount, FreeSoftBoxCount の値を現在のNANDの状態に合わせて更新します。
UpdateNandBoxCount();
if (!NAMUT_UpdateSoftBoxCount())
{
OS_Warning(" Fail! : Update Soft Box Count\n");
}
}
else
{
@ -287,40 +296,6 @@ void ProgressDraw(f32 ratio)
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

View File

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

View File

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

View File

@ -328,9 +328,6 @@ BOOL WriteHWInfoFile( u8 region, BOOL wirelessForceOff )
kamiFontPrintfConsoleEx(CONSOLE_RED, "Fail! Write TWLSettings\n" );
result = FALSE;
}
// InstalledSoftBoxCount, FreeSoftBoxCount の値を現在のNANDの状態に合わせて更新します。
UpdateNandBoxCount();
return result;
}
@ -378,43 +375,6 @@ static BOOL DeleteHWInfoFile( void )
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

View File

@ -685,7 +685,13 @@ static BOOL ImportTad(char* file_name, TadWriteOption option)
// freeSoftBoxCountに空きがなければインポートしない
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");
return FALSE;
@ -733,7 +739,7 @@ static BOOL ImportTad(char* file_name, TadWriteOption option)
}
// InstalledSoftBoxCount, FreeSoftBoxCount の値を現在のNANDの状態に合わせて更新します。
UpdateNandBoxCount();
NAMUT_UpdateSoftBoxCount();
return ret;
}

View File

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

View File

@ -99,9 +99,6 @@ BOOL WriteHWInfoFile( u8 region, BOOL wirelessForceOff )
kamiFontPrintfConsoleEx(CONSOLE_RED, "Fail! Write TWLSettings\n" );
result = FALSE;
}
// InstalledSoftBoxCount, FreeSoftBoxCount の値を現在のNANDの状態に合わせて更新します。
UpdateNandBoxCount();
return result;
}
@ -148,41 +145,3 @@ BOOL DeleteHWInfoFile( void )
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){};
// InstalledSoftBoxCount, FreeSoftBoxCount の値を現在のNANDの状態に合わせて更新します。
UpdateNandBoxCount();
(void)NAMUT_UpdateSoftBoxCount();
return nam_result;
}

View File

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

View File

@ -52,15 +52,29 @@ void NAMUT_Init(NAMUTAlloc allocFunc, NAMUTFree freeFunc);
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