mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
初回のWDS停止は成功。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1864 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
6189679100
commit
8e905728d3
@ -95,12 +95,6 @@ BOOL UTL_IsValidCalibration( u16 x, u16 y, u16 correct_x, u16 correct_y )
|
||||
//======================================================================
|
||||
// スリープ
|
||||
//======================================================================
|
||||
static volatile BOOL isWmEnd = FALSE;
|
||||
|
||||
static void UTLi_WmCallback( void* )
|
||||
{
|
||||
isWmEnd = TRUE;
|
||||
}
|
||||
|
||||
// スリープモードへの遷移
|
||||
void UTL_GoSleepMode( void )
|
||||
@ -114,37 +108,21 @@ void UTL_GoSleepMode( void )
|
||||
// デバッガ接続中だけはスリープに入らない(蓋閉じでもデバッガが起動するように)
|
||||
if ( !SYSM_IsRunOnDebugger() || (OSi_DetectDebugger() & OS_CONSOLE_TWLDEBUGGER) )
|
||||
{
|
||||
// –³<E28093>ü’âŽ~
|
||||
isWmEnd = FALSE;
|
||||
WM_Reset( UTLi_WmCallback );
|
||||
while (isWmEnd == FALSE)
|
||||
{
|
||||
OS_Sleep(1);
|
||||
}
|
||||
isWmEnd = FALSE;
|
||||
WM_End( UTLi_WmCallback );
|
||||
while (isWmEnd == FALSE)
|
||||
{
|
||||
OS_Sleep(1);
|
||||
}
|
||||
|
||||
// カード抜け無検出設定
|
||||
// TWLではゲームカードの再ロードが可能なため
|
||||
// スリープ時のカード抜け検出を無効化
|
||||
// (DS-IPLではゲームカードが起動できなくなるので
|
||||
// レジューム時のROM-IDチェックでエラーになると
|
||||
// シャットダウンしていた)
|
||||
{
|
||||
OSIntrMode enable = OS_DisableInterrupts();
|
||||
reg_MI_MCCNT0 &= ~REG_MI_MCCNT0_I_MASK;
|
||||
OS_ResetRequestIrqMask( OS_IE_CARD_IREQ );
|
||||
OS_RestoreInterrupts( enable );
|
||||
OSIntrMode enable = OS_DisableInterrupts();
|
||||
reg_MI_MCCNT0 &= ~REG_MI_MCCNT0_I_MASK;
|
||||
OS_ResetRequestIrqMask( OS_IE_CARD_IREQ );
|
||||
OS_RestoreInterrupts( enable );
|
||||
|
||||
// ƒXƒŠ<C692>[ƒv‘JˆÚ
|
||||
PM_GoSleepMode( PM_TRIGGER_COVER_OPEN,
|
||||
0,
|
||||
0 );
|
||||
}
|
||||
// スリープ遷移
|
||||
PM_GoSleepMode( PM_TRIGGER_COVER_OPEN,
|
||||
0,
|
||||
0 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -32,9 +32,6 @@
|
||||
// extern data-----------------------------------------------------------------
|
||||
|
||||
// define data-----------------------------------------------------------------
|
||||
#define WDS_THREAD_PRIO 15
|
||||
#define WDS_DMA_NO 3
|
||||
|
||||
#define INIT_DEVICES_LIKE_UIG_LAUNCHER
|
||||
|
||||
#define MEASURE_TIME 1
|
||||
@ -608,13 +605,7 @@ MAIN_LOOP_START:
|
||||
!LCFG_THW_IsForceDisableWireless() && // 無線強制OFFでない
|
||||
LCFG_TSD_IsAvailableWireless() // 無線ON
|
||||
) {
|
||||
WDSWrapperInitializeParam param;
|
||||
param.threadprio = WDS_THREAD_PRIO;
|
||||
param.dmano = WDS_DMA_NO;
|
||||
param.callback = Callback_WDSWrapper;
|
||||
param.alloc = SYSM_Alloc;
|
||||
param.free = SYSM_Free;
|
||||
(void)WDS_WrapperInitialize( param ); // 初期化と動作開始を兼ねている。(失敗しても止まりはしないので、気にしない)
|
||||
InitializeWDS(); // 初期化と動作開始を兼ねている。(失敗しても止まりはしないので、気にしない)
|
||||
isStartScanWDS = TRUE;
|
||||
}
|
||||
#endif // DISABLE_WDS_SCAN
|
||||
|
||||
@ -17,6 +17,9 @@
|
||||
|
||||
#include "scanWDS.h"
|
||||
|
||||
#define WDS_THREAD_PRIO 15
|
||||
#define WDS_DMA_NO 3
|
||||
|
||||
char *callbackstring[] = {
|
||||
"WDSWRAPPER_CALLBACK_INITIALIZE",
|
||||
"WDSWRAPPER_CALLBACK_CLEANUP",
|
||||
@ -72,3 +75,47 @@ void Callback_WDSWrapper( void *ptr )
|
||||
OS_TPrintf( "\n" );
|
||||
}
|
||||
|
||||
// Sleepコールバック関数
|
||||
void Callback_WDSPreSleep( void *ptr )
|
||||
{
|
||||
#pragma unused( ptr )
|
||||
WDS_WrapperCleanup();
|
||||
while ( ! IsClearnupWDSWrapper() )
|
||||
{
|
||||
OS_Sleep(1);
|
||||
}
|
||||
}
|
||||
|
||||
void Callback_WDSPostSleep( void *ptr )
|
||||
{
|
||||
#pragma unused( ptr )
|
||||
InitializeWDS();
|
||||
}
|
||||
|
||||
// 初期化関数
|
||||
void InitializeWDS( void )
|
||||
{
|
||||
static BOOL isInitialized = FALSE;
|
||||
|
||||
{
|
||||
WDSWrapperInitializeParam param;
|
||||
param.threadprio = WDS_THREAD_PRIO;
|
||||
param.dmano = WDS_DMA_NO;
|
||||
param.callback = Callback_WDSWrapper;
|
||||
param.alloc = SYSM_Alloc;
|
||||
param.free = SYSM_Free;
|
||||
(void)WDS_WrapperInitialize( param ); // 初期化と動作開始を兼ねている。(失敗しても止まりはしないので、気にしない)
|
||||
}
|
||||
|
||||
if ( ! isInitialized )
|
||||
{
|
||||
static PMSleepCallbackInfo preCbInfo;
|
||||
static PMSleepCallbackInfo postCbInfo;
|
||||
PM_SetSleepCallbackInfo( &preCbInfo, Callback_WDSPreSleep, NULL );
|
||||
PM_PrependPreSleepCallback( &preCbInfo );
|
||||
PM_SetSleepCallbackInfo( &postCbInfo, Callback_WDSPostSleep, NULL );
|
||||
PM_AppendPostSleepCallback( &postCbInfo );
|
||||
}
|
||||
isInitialized = TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -30,8 +30,11 @@ extern "C" {
|
||||
// global variables--------------------------------------------------
|
||||
|
||||
// function----------------------------------------------------------
|
||||
extern BOOL IsClearnupWDSWrapper( void );
|
||||
extern void Callback_WDSWrapper( void *ptr );
|
||||
void InitializeWDS( void );
|
||||
BOOL IsClearnupWDSWrapper( void );
|
||||
void Callback_WDSWrapper( void *ptr );
|
||||
void Callback_WDSPreSleep( void *ptr );
|
||||
void Callback_WDSPostSleep( void *ptr );
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user