mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
(更新: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:
parent
137a49eba9
commit
dcb0aa51d0
@ -1644,9 +1644,14 @@ static void HotSwThread(void *arg)
|
|||||||
OS_MESSAGE_NOBLOCK);
|
OS_MESSAGE_NOBLOCK);
|
||||||
HotSwThreadData.idx_polling = (HotSwThreadData.idx_polling+1) % HOTSW_POLLING_CTRL_BUFFER_NUM;
|
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 );
|
FinalizeHotSw( msg->apli );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -86,7 +86,9 @@ void HOTSW_Init()
|
|||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: HOTSW_EnableHotSWAsync
|
Name: HOTSW_EnableHotSWAsync
|
||||||
|
|
||||||
Description: PXI通信でARM7に活線挿抜有効/無効を通知
|
Description: PXI通信でARM7に活線挿抜有効/無効を通知(非同期版)
|
||||||
|
|
||||||
|
※ 活線挿抜を一時的に抑制する場合はこちらの関数を使ってください。
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
void HOTSW_EnableHotSWAsync( BOOL enable )
|
void HOTSW_EnableHotSWAsync( BOOL enable )
|
||||||
{
|
{
|
||||||
@ -99,11 +101,10 @@ void HOTSW_EnableHotSWAsync( BOOL enable )
|
|||||||
if( SYSMi_GetWork()->flags.hotsw.isEnableHotSW == enable ) {
|
if( SYSMi_GetWork()->flags.hotsw.isEnableHotSW == enable ) {
|
||||||
return;
|
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)
|
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
|
Name: HOTSW_FinalizeHotSW
|
||||||
|
|
||||||
@ -124,9 +188,8 @@ void HOTSW_FinalizeHotSWAsync( HotSwApliType apliType )
|
|||||||
MI_CpuClear8( &msg, sizeof(HotSwPxiMessageForArm7));
|
MI_CpuClear8( &msg, sizeof(HotSwPxiMessageForArm7));
|
||||||
|
|
||||||
msg.msg.finalize = TRUE;
|
msg.msg.finalize = TRUE;
|
||||||
|
msg.msg.ctrl = FALSE;
|
||||||
msg.msg.bootType = (u8)apliType;
|
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)
|
while (PXI_SendWordByFifo(PXI_FIFO_TAG_HOTSW, msg.data, FALSE) != PXI_FIFO_SUCCESS)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -832,7 +832,7 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle )
|
|||||||
#define STACK_SIZE 0xc00
|
#define STACK_SIZE 0xc00
|
||||||
static u64 stack[ STACK_SIZE / sizeof(u64) ];
|
static u64 stack[ STACK_SIZE / sizeof(u64) ];
|
||||||
|
|
||||||
HOTSW_EnableHotSWAsync( FALSE );
|
HOTSW_InvalidHotSWAsync();
|
||||||
// 値が変化するまでスリープして待つ。
|
// 値が変化するまでスリープして待つ。
|
||||||
while( HOTSW_isEnableHotSW() != FALSE ) {
|
while( HOTSW_isEnableHotSW() != FALSE ) {
|
||||||
OS_Sleep( 2 );
|
OS_Sleep( 2 );
|
||||||
|
|||||||
@ -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;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -95,9 +95,18 @@ typedef struct HotSwMessageForArm9{
|
|||||||
// Function prototype -------------------------------------------------------
|
// Function prototype -------------------------------------------------------
|
||||||
// --- ARM9
|
// --- ARM9
|
||||||
#ifdef SDK_ARM9
|
#ifdef SDK_ARM9
|
||||||
// PXI通信でARM7に活線挿抜有効/無効を通知
|
// PXI通信でARM7に活線挿抜有効/無効を通知。カード関連のフラグ処理も行う(非同期版)
|
||||||
void HOTSW_EnableHotSWAsync( BOOL enable );
|
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処理を通知
|
// PXI通信でARM7に活線挿抜Finalize処理を通知
|
||||||
void HOTSW_FinalizeHotSWAsync( HotSwApliType apliType );
|
void HOTSW_FinalizeHotSWAsync( HotSwApliType apliType );
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user