(更新:Akabane Jumpei)

・一時的に活線挿抜を抑制する関数(HOTSW_EnableHotSW)と
 アプリブート時に活線挿抜を抑制する関数(HOTSW_InvalidHotSW)で分けた
・ランチャーに活線挿抜抑制機能を追加。Xボタンで抑制/許可のトグル動作をする。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1474 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
(no author) 2008-05-22 13:42:08 +00:00
parent 137a49eba9
commit dcb0aa51d0
5 changed files with 108 additions and 11 deletions

View File

@ -1644,9 +1644,14 @@ static void HotSwThread(void *arg)
OS_MESSAGE_NOBLOCK);
HotSwThreadData.idx_polling = (HotSwThreadData.idx_polling+1) % HOTSW_POLLING_CTRL_BUFFER_NUM;
}
else{
if(msg->finalize == FALSE){
ClearCardFlgs();
}
}
}
if( msg->finalize == TRUE ) {
if( msg->finalize == TRUE && msg->ctrl == FALSE) {
FinalizeHotSw( msg->apli );
}

View File

@ -86,7 +86,9 @@ void HOTSW_Init()
/*---------------------------------------------------------------------------*
Name: HOTSW_EnableHotSWAsync
Description: PXI通信でARM7に活線挿抜有効
Description: PXI通信でARM7に活線挿抜有効()
使
*---------------------------------------------------------------------------*/
void HOTSW_EnableHotSWAsync( BOOL enable )
{
@ -99,11 +101,10 @@ void HOTSW_EnableHotSWAsync( BOOL enable )
if( SYSMi_GetWork()->flags.hotsw.isEnableHotSW == enable ) {
return;
}
msg.msg.value = enable;
msg.msg.ctrl = TRUE;
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
msg.msg.finalize = FALSE;
msg.msg.ctrl = TRUE;
msg.msg.value = enable;
while (PXI_SendWordByFifo(PXI_FIFO_TAG_HOTSW, msg.data, FALSE) != PXI_FIFO_SUCCESS)
{
@ -112,6 +113,69 @@ void HOTSW_EnableHotSWAsync( BOOL enable )
}
/*---------------------------------------------------------------------------*
Name: HOTSW_EnableHotSWAsync
Description: PXI通信でARM7に活線挿抜有効()
使
*---------------------------------------------------------------------------*/
void HOTSW_EnableHotSW( BOOL enable )
{
HOTSW_EnableHotSWAsync( enable );
while(HOTSW_isEnableHotSW() != enable){
// do nothing
}
}
/*---------------------------------------------------------------------------*
Name: HOTSW_InvalidHotSWAsync
Description: PXI通信でARM7に活線挿抜無効を通知()
使
*---------------------------------------------------------------------------*/
void HOTSW_InvalidHotSWAsync( void )
{
HotSwPxiMessageForArm7 msg;
MI_CpuClear8( &msg, sizeof(HotSwPxiMessageForArm7));
// 現在の値と同じなら何もせずリターン
if( SYSMi_GetWork()->flags.hotsw.isEnableHotSW == FALSE ) {
return;
}
msg.msg.finalize = TRUE;
msg.msg.ctrl = TRUE;
msg.msg.value = FALSE;
while (PXI_SendWordByFifo(PXI_FIFO_TAG_HOTSW, msg.data, FALSE) != PXI_FIFO_SUCCESS)
{
// do nothing
}
}
/*---------------------------------------------------------------------------*
Name: HOTSW_InvalidHotSW
Description: PXI通信でARM7に活線挿抜無効を通知()
使
*---------------------------------------------------------------------------*/
void HOTSW_InvalidHotSW( void )
{
HOTSW_InvalidHotSWAsync();
while(HOTSW_isEnableHotSW() != FALSE){
// do nothing
}
}
/*---------------------------------------------------------------------------*
Name: HOTSW_FinalizeHotSW
@ -124,9 +188,8 @@ void HOTSW_FinalizeHotSWAsync( HotSwApliType apliType )
MI_CpuClear8( &msg, sizeof(HotSwPxiMessageForArm7));
msg.msg.finalize = TRUE;
msg.msg.ctrl = FALSE;
msg.msg.bootType = (u8)apliType;
OS_TPrintf("%s %d\n", __FUNCTION__, __LINE__);
while (PXI_SendWordByFifo(PXI_FIFO_TAG_HOTSW, msg.data, FALSE) != PXI_FIFO_SUCCESS)
{

View File

@ -832,7 +832,7 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle )
#define STACK_SIZE 0xc00
static u64 stack[ STACK_SIZE / sizeof(u64) ];
HOTSW_EnableHotSWAsync( FALSE );
HOTSW_InvalidHotSWAsync();
// 値が変化するまでスリープして待つ。
while( HOTSW_isEnableHotSW() != FALSE ) {
OS_Sleep( 2 );

View File

@ -607,7 +607,27 @@ static TitleProperty *ProcessPads( TitleProperty *pTitleList )
}
}
}
// HOTSW許可・抑制テスト
{
static BOOL hotswEnable = TRUE;
if( pad.trg & PAD_BUTTON_X ){
hotswEnable ^= TRUE;
// 活線挿抜許可・抑制
HOTSW_EnableHotSW(hotswEnable);
NNS_G2dCharCanvasClearArea( &gCanvas, TXT_COLOR_NULL, 0, 175, 100, 13 );
}
if(hotswEnable){
PutStringUTF16( 0, 175, TXT_COLOR_BLUE, L"HotSw Enable" );
}
else{
PutStringUTF16( 0, 175, TXT_COLOR_RED, L"HotSw Disable" );
}
}
return ret;
}

View File

@ -95,9 +95,18 @@ typedef struct HotSwMessageForArm9{
// Function prototype -------------------------------------------------------
// --- ARM9
#ifdef SDK_ARM9
// PXI通信でARM7に活線挿抜有効無効を通知
// PXI通信でARM7に活線挿抜有効無効を通知。カード関連のフラグ処理も行う(非同期版)
void HOTSW_EnableHotSWAsync( BOOL enable );
// PXI通信でARM7に活線挿抜有効無効を通知。カード関連のフラグ処理も行う(同期版)
void HOTSW_EnableHotSW( BOOL enable );
// PXI通信でARM7に活線挿抜無効を通知。(非同期版)
void HOTSW_InvalidHotSWAsync( void );
// PXI通信でARM7に活線挿抜無効を通知。(同期版)
void HOTSW_InvalidHotSW( void );
// PXI通信でARM7に活線挿抜Finalize処理を通知
void HOTSW_FinalizeHotSWAsync( HotSwApliType apliType );