(更新:Akabane Jumpei)

・エラー処理の修正。カード読み最中に何らかのエラーが発生した場合は、フラグ操作してバナーを消し、スロットの電源をOFFする。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1410 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
(no author) 2008-05-20 02:21:32 +00:00
parent 77d735af8c
commit c13bf5fd8b
2 changed files with 18 additions and 52 deletions

View File

@ -287,7 +287,6 @@ typedef struct CardBootData{
BOOL twlFlg;
BOOL debuggerFlg;
BOOL illegalCardFlg;
BOOL isLoadTypeTwl;
u32 romStatus;

View File

@ -636,7 +636,6 @@ static BOOL isTwlModeLoad(void)
// PlatformCodeがTwl or Hybridの場合
if(s_cbData.pBootSegBuf->rh.s.platform_code & 0x02){
OS_PutString("NTR Card : TWL Application Error Illegal Card\n");
s_cbData.illegalCardFlg = TRUE;
return FALSE;
}
else{
@ -1706,7 +1705,6 @@ static void HotSwThread(void *arg)
HotSwState retval;
HotSwMessageForArm7 *msg;
BOOL breakFlg;
while(1){
OS_ReceiveMessage(&HotSwThreadData.hotswQueue, (OSMessage *)&msg, OS_MESSAGE_BLOCK);
@ -1752,22 +1750,21 @@ static void HotSwThread(void *arg)
if(HOTSW_IsCardExist()){
if(!s_isPulledOut){
if(GetMcSlotMode() == SLOT_STATUS_MODE_10){
if(!s_cbData.illegalCardFlg){
LockHotSwRsc(&SYSMi_GetWork()->lockCardRsc);
LockHotSwRsc(&SYSMi_GetWork()->lockCardRsc);
SYSMi_GetWork()->flags.hotsw.isExistCard = TRUE;
SYSMi_GetWork()->flags.hotsw.isCardStateChanged = TRUE;
SYSMi_GetWork()->flags.hotsw.isCardLoadCompleted = TRUE;
SYSMi_GetWork()->nCardID = s_cbData.id_gam;
SYSMi_GetWork()->flags.hotsw.isExistCard = TRUE;
SYSMi_GetWork()->flags.hotsw.isCardStateChanged = TRUE;
SYSMi_GetWork()->flags.hotsw.isCardLoadCompleted = TRUE;
SYSMi_GetWork()->nCardID = s_cbData.id_gam;
#ifdef USE_WRAM_LOAD
SYSMi_GetWork()->flags.hotsw.isCardGameMode = TRUE;
SYSMi_GetWork()->flags.hotsw.isCardGameMode = TRUE;
#endif
UnlockHotSwRsc(&SYSMi_GetWork()->lockCardRsc);
UnlockHotSwRsc(&SYSMi_GetWork()->lockCardRsc);
#ifdef USE_WRAM_LOAD
SendPxiMessage(HOTSW_CHANGE_GAMEMODE);
SendPxiMessage(HOTSW_CHANGE_GAMEMODE);
#endif
OS_PutString("ok!\n");
}
OS_PutString("ok!\n");
break;
}
}
@ -1776,45 +1773,15 @@ static void HotSwThread(void *arg)
DebugPrintErrorMessage(retval);
breakFlg = FALSE;
// [TODO] エラー処理見直し
switch(retval){
// 成功してたらなにもせずにぬける
case HOTSW_SUCCESS:
break;
// カードデータリード中に抜け
case HOTSW_PULLED_OUT_ERROR:
ClearCardFlgs();
s_isPulledOut = TRUE;
breakFlg = TRUE;
break;
// どのモードでも起こるエラー
case HOTSW_ID_CHECK_ERROR:
case HOTSW_CRC_CHECK_ERROR:
McPowerOff();
ClearCardFlgs();
s_isPulledOut = TRUE;
breakFlg = TRUE;
break;
// Gameモードで起こるエラー
case HOTSW_HASH_CHECK_ERROR:
case HOTSW_BUFFER_OVERRUN_ERROR:
case HOTSW_DATA_DECRYPT_ERROR:
ClearCardFlgs();
s_cbData.illegalCardFlg = TRUE;
break;
}
if(breakFlg){
break;
}
s_isPulledOut = FALSE;
// <20>G<EFBFBD><EFBFBD><>—ť
if(retval != HOTSW_SUCCESS){
ClearCardFlgs();
McPowerOff();
break;
}
}
// カードが抜けてたら