From 6216ec1787ca0a1959299edb8964657cca6c35a6 Mon Sep 17 00:00:00 2001 From: yosiokat Date: Mon, 18 Aug 2008 00:27:57 +0000 Subject: [PATCH] =?UTF-8?q?WDS=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9?= =?UTF-8?q?=E3=83=AA=E3=82=9220080816=E5=8F=97=E9=A0=98=E7=89=88=E3=81=AB?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2169 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../wds/ARM9/src/WDSWrapper.c | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/build/libraries_sysmenu/wds/ARM9/src/WDSWrapper.c b/build/libraries_sysmenu/wds/ARM9/src/WDSWrapper.c index f4059ed2..45941b71 100644 --- a/build/libraries_sysmenu/wds/ARM9/src/WDSWrapper.c +++ b/build/libraries_sysmenu/wds/ARM9/src/WDSWrapper.c @@ -184,8 +184,19 @@ static void WDS_WrapperBeforeInitState( void ) return; } else if( g_wdswrapperwork->idle == TRUE ) { - // すでにWDSが解放されているので直接ステートを変化させる + WDSWrapperCallbackParam param; + + // すでにWDSが解放されているのでコールバックを呼び出し、直接ステートを変化させる + g_wdswrapperwork->idle = FALSE; g_wdswrapperwork->state = WDSWRAPPER_STATE_IDLE; + + // コールバックパラメータの設定 + param.callback = WDSWRAPPER_CALLBACK_STOPSCAN; + param.errcode = WDSWRAPPER_ERRCODE_SUCCESS; + + // コールバック関数の呼び出し(このコールバックのスレッド優先度はWMスレッドの優先度ではない) + WDS_WrapperCallUserCallback( ¶m ); + return; } @@ -556,9 +567,11 @@ static void WDS_WrapperEnd_CB( void *arg ) // WDS_End後のステートを各種フラグに基づいて変更 if( g_wdswrapperwork->terminate == TRUE ) { + g_wdswrapperwork->terminate = FALSE; g_wdswrapperwork->state = WDSWRAPPER_STATE_TERMINATE; } else if( g_wdswrapperwork->idle == TRUE ) { + g_wdswrapperwork->idle = FALSE; g_wdswrapperwork->state = WDSWRAPPER_STATE_IDLE; // コールバックパラメータの設定 @@ -582,9 +595,23 @@ static void WDS_WrapperEnd_CB( void *arg ) *///------------------------------------------------------------------------------ static void WDS_WrapperIdleState( void ) { + WDSWrapperCallbackParam param; + if( g_wdswrapperwork->terminate == TRUE ) { g_wdswrapperwork->state = WDSWRAPPER_STATE_TERMINATE; } + else if( g_wdswrapperwork->idle == TRUE ) { + // すでにIDLE状態のため、成功コールバックを返す + g_wdswrapperwork->idle = FALSE; + g_wdswrapperwork->state = WDSWRAPPER_STATE_IDLE; + + // コールバックパラメータの設定 + param.callback = WDSWRAPPER_CALLBACK_STOPSCAN; + param.errcode = WDSWRAPPER_ERRCODE_SUCCESS; + + // コールバック関数の呼び出し + WDS_WrapperCallUserCallback( ¶m ); + } else if( g_wdswrapperwork->restart == TRUE ) { g_wdswrapperwork->idle = FALSE;