From f0bf98836104e2599198ddec360033da5bcb7c01 Mon Sep 17 00:00:00 2001 From: yosiokat Date: Thu, 26 Jun 2008 14:13:09 +0000 Subject: [PATCH] =?UTF-8?q?WDS=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9?= =?UTF-8?q?=E3=83=AA080626=E7=89=88=E3=81=AB=E6=9B=B4=E6=96=B0=E3=80=82=20?= =?UTF-8?q?WDS=5FWrapper=E8=BF=BD=E5=8A=A0=E3=80=82=20WDS=E3=83=9E?= =?UTF-8?q?=E3=83=8B=E3=83=A5=E3=82=A2=E3=83=AB=5F=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=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@1730 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/libraries_sysmenu/wds/ARM9/src/WDS.c | 60 +- .../wds/ARM9/src/WDSWrapper.c | 892 ++++++++++++++++++ build/libraries_sysmenu/wds/readme.txt | 8 +- build/tests/WDSTest/src/main.c | 34 +- build/tests/WDSWrapperTest/Makefile | 37 + build/tests/WDSWrapperTest/src/main.c | 130 +++ include/sysmenu/WDSWrapper.h | 137 +++ man/WDS_Wrapper/html/_w_d_s_wrapper_8c.html | 281 ++++++ man/WDS_Wrapper/html/_w_d_s_wrapper_8h.html | 562 +++++++++++ man/WDS_Wrapper/html/annotated.html | 35 + man/WDS_Wrapper/html/classes.html | 34 + man/WDS_Wrapper/html/doxygen.css | 473 ++++++++++ man/WDS_Wrapper/html/doxygen.png | Bin 0 -> 1281 bytes man/WDS_Wrapper/html/files.html | 33 + man/WDS_Wrapper/html/functions.html | 79 ++ man/WDS_Wrapper/html/functions_vars.html | 79 ++ man/WDS_Wrapper/html/globals.html | 132 +++ man/WDS_Wrapper/html/globals_defs.html | 49 + man/WDS_Wrapper/html/globals_enum.html | 49 + man/WDS_Wrapper/html/globals_eval.html | 85 ++ man/WDS_Wrapper/html/globals_func.html | 67 ++ man/WDS_Wrapper/html/globals_type.html | 49 + man/WDS_Wrapper/html/index.html | 25 + .../struct_w_d_s_wrapper_callback_param.html | 83 ++ ...struct_w_d_s_wrapper_initialize_param.html | 143 +++ .../html/struct_w_d_s_wrapper_work.html | 301 ++++++ man/WDS_Wrapper/html/tab_b.gif | Bin 0 -> 35 bytes man/WDS_Wrapper/html/tab_l.gif | Bin 0 -> 706 bytes man/WDS_Wrapper/html/tab_r.gif | Bin 0 -> 2585 bytes man/WDS_Wrapper/html/tabs.css | 102 ++ 30 files changed, 3902 insertions(+), 57 deletions(-) create mode 100644 build/libraries_sysmenu/wds/ARM9/src/WDSWrapper.c create mode 100644 build/tests/WDSWrapperTest/Makefile create mode 100644 build/tests/WDSWrapperTest/src/main.c create mode 100644 include/sysmenu/WDSWrapper.h create mode 100644 man/WDS_Wrapper/html/_w_d_s_wrapper_8c.html create mode 100644 man/WDS_Wrapper/html/_w_d_s_wrapper_8h.html create mode 100644 man/WDS_Wrapper/html/annotated.html create mode 100644 man/WDS_Wrapper/html/classes.html create mode 100644 man/WDS_Wrapper/html/doxygen.css create mode 100644 man/WDS_Wrapper/html/doxygen.png create mode 100644 man/WDS_Wrapper/html/files.html create mode 100644 man/WDS_Wrapper/html/functions.html create mode 100644 man/WDS_Wrapper/html/functions_vars.html create mode 100644 man/WDS_Wrapper/html/globals.html create mode 100644 man/WDS_Wrapper/html/globals_defs.html create mode 100644 man/WDS_Wrapper/html/globals_enum.html create mode 100644 man/WDS_Wrapper/html/globals_eval.html create mode 100644 man/WDS_Wrapper/html/globals_func.html create mode 100644 man/WDS_Wrapper/html/globals_type.html create mode 100644 man/WDS_Wrapper/html/index.html create mode 100644 man/WDS_Wrapper/html/struct_w_d_s_wrapper_callback_param.html create mode 100644 man/WDS_Wrapper/html/struct_w_d_s_wrapper_initialize_param.html create mode 100644 man/WDS_Wrapper/html/struct_w_d_s_wrapper_work.html create mode 100644 man/WDS_Wrapper/html/tab_b.gif create mode 100644 man/WDS_Wrapper/html/tab_l.gif create mode 100644 man/WDS_Wrapper/html/tab_r.gif create mode 100644 man/WDS_Wrapper/html/tabs.css diff --git a/build/libraries_sysmenu/wds/ARM9/src/WDS.c b/build/libraries_sysmenu/wds/ARM9/src/WDS.c index 2a18c083..7ff03d1d 100644 --- a/build/libraries_sysmenu/wds/ARM9/src/WDS.c +++ b/build/libraries_sysmenu/wds/ARM9/src/WDS.c @@ -1,20 +1,3 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: WDS.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - //********************************************************************** /** // @file WDS.c @@ -25,7 +8,7 @@ // @version 01.00 // ***********************************************************************/ -#include +#include "WDS.h" #include #ifdef WDS_WITHDWC #include @@ -59,22 +42,22 @@ enum // Structs //----------------------------------------------------- /** - @brief ワーク領域 + @brief WDSライブラリのワーク領域 */ typedef struct WDSWork { - u8 wmwork[ WM_SYSTEM_BUF_SIZE ]; ///< WMライブラリ用バッファ - u8 scanbuf[ WDS_SCAN_BUF_SIZE ] ATTRIBUTE_ALIGN(32); ///< スキャンバッファ - WMScanExParam scanparam; ///< スキャンパラメータ - WDSCallbackFunc scancb; ///< スキャン用コールバック - WDSApInfo apinfo[ WDS_APINFO_MAX ]; ///< スキャン出来たAP情報 - u16 rssi[ WDS_APINFO_MAX ]; ///< 電波強度 - u16 tgid[ WDS_APINFO_MAX ]; ///< 複数のビーコンを受け取った際に識別用に使うTGID - s32 apnum; ///< スキャン出来たAP情報数 - s32 apindex; ///< スキャン出来たAPを配列内のどこに書き込むかのインデックス - u32 status; ///< ステータス - MATHCRC16Context crcContext; ///< CRC計算用コンテキスト - MATHCRC16Table crcTable; ///< CRC計算用テーブル + u8 wmwork[ WM_SYSTEM_BUF_SIZE ]; ///< WMライブラリ用バッファ + u8 scanbuf[ WDS_SCAN_BUF_SIZE ] ATTRIBUTE_ALIGN(32); ///< WMライブラリが使用するスキャンバッファ + WMScanExParam scanparam; ///< WMライブラリのスキャンパラメータ + WDSCallbackFunc scancb; ///< WMライブラリから呼び出されるコールバック + WDSApInfo apinfo[ WDS_APINFO_MAX ]; ///< スキャンしたAPビーコンを格納する配列 + u16 rssi[ WDS_APINFO_MAX ]; ///< 受信したAPビーコンの電波強度を格納する配列 + u16 tgid[ WDS_APINFO_MAX ]; ///< 複数のビーコンを識別するためのTGIDを格納する配列 + s32 apnum; ///< スキャン出来たAP情報数 + s32 apindex; ///< スキャン出来たAPを配列内のどこに書き込むかのインデックス + u32 status; ///< WDSライブラリのステータス + MATHCRC16Context crcContext; ///< CRC計算用コンテキスト + MATHCRC16Table crcTable; ///< CRC計算用テーブル } WDSWork; //----------------------------------------------------- @@ -181,7 +164,9 @@ static void WDSScanCallback( void *arg ) continue; // デバッグ表示 +#ifdef WDS_DEBUGPRINT OS_TPrintf( "Found AP GGID : %08x TGID : %04x\n", pParam->bssDesc[i]->gameInfo.ggid, pParam->bssDesc[i]->gameInfo.tgid ); +#endif // ビーコン内容をコピーし、暗号化解除 MI_CpuCopy8( pParam->bssDesc[i]->gameInfo.userGameInfo, &gWdsWork->apinfo[gWdsWork->apindex], sizeof(WDSApInfo) ); @@ -198,7 +183,9 @@ static void WDSScanCallback( void *arg ) // 旧バージョンの親機はCRC部分に0x0000を入れているためそれだけは受け入れる if( crc != gWdsWork->apinfo[gWdsWork->apindex].crc && gWdsWork->apinfo[gWdsWork->apindex].crc != 0x0000 ) { +#ifdef WDS_DEBUGPRINT OS_TPrintf( "AP Infomation CRC Error.\n" ); +#endif MI_CpuClear8( &gWdsWork->apinfo[gWdsWork->apindex], sizeof(WDSApInfo) ); continue; } @@ -239,7 +226,7 @@ size_t WDS_GetWorkAreaSize( void ) @param <2> 処理が完了した際に呼び出されるコールバック関数へのポインタ @param <3> WM_InitializeのdmaNoに準ずる引数 @return 0 : 成功 ( コールバックを待つこと ) - 0 以外 : 失敗 + @return 0 以外 : 失敗 @note <1> のサイズはWDS_SYSTEM_BUF_SIZEだけ必要であり、 かつ 32バイトアラインされている必要があります。 @@ -346,14 +333,15 @@ int WDS_End( WDSCallbackFunc callback ) if( callback == NULL ) return -1; - // WDS 終了 - gWdsWork->status = WDS_STATUS_END; - gWdsWork = NULL; - // WM 終了 errcode = WM_End( callback ); if( errcode != WM_ERRCODE_OPERATING ) return errcode; + + // WDS 終了 + gWdsWork->status = WDS_STATUS_END; + gWdsWork = NULL; + return 0; } diff --git a/build/libraries_sysmenu/wds/ARM9/src/WDSWrapper.c b/build/libraries_sysmenu/wds/ARM9/src/WDSWrapper.c new file mode 100644 index 00000000..3ea93091 --- /dev/null +++ b/build/libraries_sysmenu/wds/ARM9/src/WDSWrapper.c @@ -0,0 +1,892 @@ +//********************************************************************** +/** +// @file WDSWrapper.c +// @brief WDSライブラリのラッパー +// +// @author S.Nakata +// @date 2008/06/24 +// @version 01.00 +// +***********************************************************************/ +#include "WDSWrapper.h" +#ifdef WDS_WITHDWC +#include +#endif + +//----------------------------------------------------- +// Structs +//----------------------------------------------------- + +/** + @brief WDSラッパーのワーク領域 +*/ +typedef struct WDSWrapperWork +{ + u8 *stack; //!< WDSラッパーが使用するスタック + OSThread thread; //!< WDSラッパーが使用するスレッド構造体 + OSMutex mutex; //!< WDSラッパーが使用するmutex + + u8 *wdswork; //!< WDSが使用するワークエリア + + WDSBriefApInfo briefapinfo[WDS_APINFO_MAX]; //!< WDSラッパーがWDSを使用した結果を格納する領域 + int briefapinfonum; //!< WDSラッパーがWDSを使用した結果を格納する領域 + + WDSWrapperInitializeParam initparam; //!< 初期化時パラメータのコピー + WDSWrapperStateThreadState state; //!< WDSラッパーのステート + OSTick tickstart; //!< 各種時間測定用 + + BOOL terminate; //!< 解放開始フラグ + BOOL idle; //!< 間欠スキャン中断フラグ + BOOL restart; //!< 間欠スキャン再開フラグ + + OSDeliverArgInfo deliverinfo; //!< TWL用アプリ間引数ワークエリア +} WDSWrapperWork; + +//----------------------------------------------------- +// Variables +//----------------------------------------------------- +static WDSWrapperWork *g_wdswrapperwork = NULL; + +//----------------------------------------------------- +// Internal Functions +//----------------------------------------------------- +static void WDS_WrapperInitialize_CB( void *arg ); +static void WDS_WrapperStartScan_CB( void *arg ); +static void WDS_WrapperEndScan_CB(void *arg); +static void WDS_WrapperEnd_CB( void *arg ); + +//-------------------------------------------------------------------------------- +/** アクセスポイント情報のデバッグ用表示関数 + @param apinfo デバッグ表示を行うWDSApInfoへのポインタ + @return なし +*///------------------------------------------------------------------------------ +static void DumpWDSApInfo( WDSApInfo *apinfo ) +{ + int i; + char buf[256]; + + // SSID + MI_CpuCopy8( apinfo->ssid, buf, WDS_SSID_BUF_SIZE) ; + buf[WDS_SSID_BUF_SIZE] = 0x00; + OS_TPrintf( "SSID: %s\n", buf ); + + // APNUM + MI_CpuCopy8( apinfo->apnum, buf, WDS_APNUM_BUF_SIZE) ; + buf[WDS_APNUM_BUF_SIZE] = 0x00; + OS_TPrintf( "APNUM: %s\n", buf ); + + // CHANNEL + OS_TPrintf( "channel: %d\n", apinfo->channel ); + + // ENCRYPTFLAG + OS_TPrintf( "encryptmethod: %d\n", apinfo->encryptflag); + + // WEPKEY + OS_TPrintf( "WEPKEY: " ); + for( i = 0 ; i < WDS_WEPKEY_BUF_SIZE ; i++ ) + { + OS_TPrintf( "%02x", apinfo->wepkey[i] ); + } + OS_TPrintf( "\n" ); +} + +//-------------------------------------------------------------------------------- +/** スキャン開始前ウェイトステート関数 + @param なし + @return なし +*///------------------------------------------------------------------------------ +static void WDS_WrapperBeforeInitState( void ) +{ + if( g_wdswrapperwork->restart == TRUE ) { + // 待っている途中だがすぐに受信を開始 + g_wdswrapperwork->restart = FALSE; + + // 連続スキャン開始時間の記録 + g_wdswrapperwork->tickstart = OS_GetTick(); + + // スキャン開始ステートへ + g_wdswrapperwork->state = WDSWRAPPER_STATE_INIT; + return; + } + else if( g_wdswrapperwork->terminate == TRUE ) { + // すでにWDSが解放されているので直接ステートを変化させる + g_wdswrapperwork->state = WDSWRAPPER_STATE_TERMINATE; + return; + } + else if( g_wdswrapperwork->idle == TRUE ) { + // すでにWDSが解放されているので直接ステートを変化させる + g_wdswrapperwork->state = WDSWRAPPER_STATE_IDLE; + return; + } + + // 十分長い時間待ったかを確認 + if( g_wdswrapperwork->tickstart + OS_MilliSecondsToTicks( WDSWRAPPER_WAITPERIOD ) < OS_GetTick() ) { + // 連続スキャン開始時間の記録 + g_wdswrapperwork->tickstart = OS_GetTick(); + + // スキャン開始ステートへ + g_wdswrapperwork->state = WDSWRAPPER_STATE_INIT; + } +} + +//-------------------------------------------------------------------------------- +/** 初期化開始ステート関数 + @param なし + @return なし +*///------------------------------------------------------------------------------ +static void WDS_WrapperInitState( void ) +{ + WMErrCode err; +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf("*** WDS_WrapperInitState\n"); +#endif + + // 初期化完了待ちステートをあらかじめ設定しておく + g_wdswrapperwork->state = WDSWRAPPER_STATE_WAITINIT; + + err = (WMErrCode)WDS_Initialize( g_wdswrapperwork->wdswork, WDS_WrapperInitialize_CB, 0 ); + if( err == WM_ERRCODE_SUCCESS || err == WM_ERRCODE_OPERATING ) { +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf("WDS_Initialize successed\n"); +#endif + } + else { +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf("WDS_Initialize failed\n"); +#endif + // 初期化開始に失敗したのでWDSラッパー解放ステートへ + g_wdswrapperwork->state = WDSWRAPPER_STATE_TERMINATE; + } +} + +//-------------------------------------------------------------------------------- +/** 初期化コールバック関数 + @param arg 非同期処理の結果を格納するWMCallback型変数へのポインタ + @return なし + @note + @LI 処理成功時は自動的にスキャン開始ステートへ + @LI 処理失敗時は自動的にWDSラッパー解放ステートへ +*///------------------------------------------------------------------------------ +static void WDS_WrapperInitialize_CB( void *arg ) +{ + WMCallback *callback = (WMCallback *)arg; + WDSWrapperCallbackParam param; + + // ステート処理と重複処理しないため + OS_LockMutex( &g_wdswrapperwork->mutex ); + +#ifdef WDSWRAPPER_DEBUGPRINT + OS_TPrintf("WDS_Initialize_CB\n"); +#endif + + // 返り値に基づいてコールバックパラメータを設定 + param.callback = WDSWRAPPER_CALLBACK_INITIALIZE; + if( callback->errcode != WM_ERRCODE_SUCCESS ) + param.errcode = WDSWRAPPER_ERRCODE_FAILURE; + else + param.errcode = WDSWRAPPER_ERRCODE_SUCCESS; + + // コールバック関数の呼び出し + g_wdswrapperwork->initparam.callback( ¶m ); + + // 返り値に基づいてステートを変更 + if( callback->errcode != WM_ERRCODE_SUCCESS ) + g_wdswrapperwork->state = WDSWRAPPER_STATE_TERMINATE; + else { + // スキャン開始ステートへ + g_wdswrapperwork->state = WDSWRAPPER_STATE_SCAN; + + // 連続スキャン開始時間の記録 + g_wdswrapperwork->tickstart = OS_GetTick(); + } + + // ステート処理と重複処理しないため + OS_UnlockMutex( &g_wdswrapperwork->mutex ); +} + +//-------------------------------------------------------------------------------- +/** スキャン開始ステート関数 + @param なし + @return なし +*///------------------------------------------------------------------------------ +static void WDS_WrapperScanState( void ) +{ + WMErrCode err; +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf( "*** WDS_WrapperScanState\n" ); +#endif + + // スキャン完了待ちステートへあらかじめ移行しておく + g_wdswrapperwork->state = WDSWRAPPER_STATE_WAITSCAN; + + err = (WMErrCode)WDS_StartScan( WDS_WrapperStartScan_CB ); + if( err == WM_ERRCODE_SUCCESS ) { +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf("WDS_StartScan successed\n"); +#endif + g_wdswrapperwork->briefapinfonum = 0; + } + else { + // スキャン開始に失敗したのでWDS解放開始ステートへ +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf( "WDS_StartScan failed\n" ); +#endif + g_wdswrapperwork->state = WDSWRAPPER_STATE_END; + } +} + +//-------------------------------------------------------------------------------- +/** スキャン完了待ちステート関数 + @param なし + @return なし +*///------------------------------------------------------------------------------ +static void WDS_WrapperWaitScanState( void ) +{ + if( g_wdswrapperwork->terminate == TRUE ) { + g_wdswrapperwork->state = WDSWRAPPER_STATE_ENDSCAN; + } + else if( g_wdswrapperwork->idle == TRUE ) { + g_wdswrapperwork->state = WDSWRAPPER_STATE_ENDSCAN; + } +} + +//-------------------------------------------------------------------------------- +/** スキャン開始コールバック関数 + @param arg 非同期処理の結果を格納するWMCallback型変数へのポインタ + @return なし + @note + @LI 処理成功時はスキャン時間に基づいてIDLEかスキャン前ウェイトステートへ + @LI 処理失敗時はスキャン停止後WDSラッパー解放ステートへ +*///------------------------------------------------------------------------------ +static void WDS_WrapperStartScan_CB( void *arg ) +{ +#pragma unused( arg ) +#ifdef WDSWRAPPER_DEBUGPRINT + int i; +#endif + WDSWrapperCallbackParam param; + + // ステート処理と重複処理しないため + OS_LockMutex( &g_wdswrapperwork->mutex ); + +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf("*** WDS_WrapperStartScan_CB\n"); +#endif + + // 外部からの停止等の理由でコールバック待ちステートでない場合には何もしない + if( g_wdswrapperwork->state != WDSWRAPPER_STATE_WAITSCAN ) { +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf("state != WDSWRAPPER_STATE_WAITSCAN\n"); +#endif + OS_UnlockMutex( &g_wdswrapperwork->mutex ); + return; + } + + // スキャン結果を取得する + if( WDS_GetApInfoAll( g_wdswrapperwork->briefapinfo ) != 0 ) { +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf( "WDS_GetApInfoAll failed\n" ); +#endif + // コールバックパラメータの設定 + param.callback = WDSWRAPPER_CALLBACK_STARTSCAN; + param.errcode = WDSWRAPPER_ERRCODE_FAILURE; + + // コールバック関数の呼び出し + g_wdswrapperwork->initparam.callback( ¶m ); + + // ただちにスキャン停止ステートへ + g_wdswrapperwork->state = WDSWRAPPER_STATE_ENDSCAN; + + // 最終的にTERMINATEステートに入るよう設定 + g_wdswrapperwork->terminate = TRUE; + + // ステート処理と重複処理しないため + OS_UnlockMutex( &g_wdswrapperwork->mutex ); + + return; + } + else { + // ビーコン数を格納 + g_wdswrapperwork->briefapinfonum = WDS_GetApInfoNum(); + } + + + if( g_wdswrapperwork->tickstart + OS_MilliSecondsToTicks( WDSWRAPPER_SCANPERIOD ) < OS_GetTick() ) { +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf("*** WDS_WrapperCompleteScanState: Scanned more than %u [ms]\n", WDSWRAPPER_SCANPERIOD ); +#endif + +#ifdef WDSWRAPPER_DEBUGPRINT + // スキャン結果を取得したのでデバッグ表示 + for( i = 0 ; i < WDS_APINFO_MAX ; i++ ) { + if( g_wdswrapperwork->briefapinfo[i].isvalid == TRUE ) { + OS_TPrintf( "================================\n" ); + OS_TPrintf( "rssi: %d\n", g_wdswrapperwork->briefapinfo[i].rssi ); + DumpWDSApInfo( &( g_wdswrapperwork->briefapinfo[i].apinfo ) ); + OS_TPrintf( "================================\n" ); + } + } +#endif + // コールバックパラメータの設定 + param.callback = WDSWRAPPER_CALLBACK_STARTSCAN2; + param.errcode = WDSWRAPPER_ERRCODE_SUCCESS; + + // コールバック関数の呼び出し + g_wdswrapperwork->initparam.callback( ¶m ); + + // 十分長い時間スキャンしたのでスキャン中断ステートへ + g_wdswrapperwork->state = WDSWRAPPER_STATE_ENDSCAN; + } + else { + // コールバックパラメータの設定 + param.callback = WDSWRAPPER_CALLBACK_STARTSCAN; + param.errcode = WDSWRAPPER_ERRCODE_SUCCESS; + + // コールバック関数の呼び出し + g_wdswrapperwork->initparam.callback( ¶m ); + + // ただちにスキャン開始ステートへ + g_wdswrapperwork->state = WDSWRAPPER_STATE_SCAN; + } + + // ステート処理と重複処理しないため + OS_UnlockMutex( &g_wdswrapperwork->mutex ); +} + +//-------------------------------------------------------------------------------- +/** スキャン停止開始ステート関数 + @param なし + @return なし +*///------------------------------------------------------------------------------ +static void WDS_WrapperEndScanState( void ) +{ + WMErrCode err; +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf( "*** WDS_WrapperEndScanState\n" ); +#endif + + // スキャン停止待ちステートへあらかじめ移行しておく + g_wdswrapperwork->state = WDSWRAPPER_STATE_WAITENDSCAN; + + err = (WMErrCode)WDS_EndScan( WDS_WrapperEndScan_CB ); + if( err == WM_ERRCODE_SUCCESS || err == WM_ERRCODE_ILLEGAL_STATE ) { +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf("WDS_EndScan successed\n"); +#endif + // WDS解放ステートへ + g_wdswrapperwork->state = WDSWRAPPER_STATE_END; + } + else if( err == WM_ERRCODE_OPERATING ) { +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf("WDS_EndScan asynchronously successed\n"); +#endif + } + else + { +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf("WDS_EndScan failed\n"); +#endif + // 再度スキャン停止を試みる + // (これは処理的に無限ループに入る可能性があるのでまずいが、そもそもスキャンが止まっていないとWM_Endもできないので不可避) + g_wdswrapperwork->state = WDSWRAPPER_STATE_ENDSCAN; + } +} + +//-------------------------------------------------------------------------------- +/** スキャン停止コールバック関数 + @param arg 非同期処理の結果を格納するWMCallback型変数へのポインタ + @return なし + @note + @LI 処理成功時は自動的にWDS解放ステートへ + @LI 処理失敗時は自動的に再度スキャン停止ステートへ +*///------------------------------------------------------------------------------ +static void WDS_WrapperEndScan_CB(void *arg) +{ + WMCallback *callback = (WMCallback *)arg; + + // ステート処理と重複処理しないため + OS_LockMutex( &g_wdswrapperwork->mutex ); + +#ifdef WDSWRAPPER_DEBUGPRINT + OS_TPrintf("WDS_WrapperEndScan_CB\n"); +#endif + + if( callback->errcode != WM_ERRCODE_SUCCESS ) { +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf("WDS_EndScan success\n"); +#endif + // 再度スキャン停止を試みる + // (これは処理的に無限ループに入る可能性があるのでまずいが、そもそもスキャンが止まっていないとWM_Endもできないので不可避) + g_wdswrapperwork->state = WDSWRAPPER_STATE_ENDSCAN; + } + else { +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf("WDS_EndScan success\n"); +#endif + // スキャン停止完了したら自動的にWDS解放ステートへ + g_wdswrapperwork->state = WDSWRAPPER_STATE_END; + } + + // ステート処理と重複処理しないため + OS_UnlockMutex( &g_wdswrapperwork->mutex ); +} + +//-------------------------------------------------------------------------------- +/** 解放開始ステート関数 + @param なし + @return なし +*///------------------------------------------------------------------------------ +static void WDS_WrapperEndState( void ) +{ + WMErrCode err; + +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf("*** WDS_WrapperEndState\n"); +#endif + + + // 解放待ちステートへあらかじめ移行しておく + g_wdswrapperwork->state = WDSWRAPPER_STATE_WAITEND; + err = (WMErrCode)WDS_End( WDS_WrapperEnd_CB ); + + if( err == WM_ERRCODE_SUCCESS ) { +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf("WDS_End successed\n"); +#endif + } + else if( err == WM_ERRCODE_OPERATING ) { +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf("WDS_End asynchronously successed\n"); +#endif + } + else { +#ifdef WDSWRAPPER_DEBUGPRINT + OS_Printf("WDS_End failed\n"); +#endif + // 引き続き解放を試みる + g_wdswrapperwork->state = WDSWRAPPER_STATE_END; + } +} + +//-------------------------------------------------------------------------------- +/** 解放開始コールバック関数 + @param arg 非同期処理の結果を格納するWMCallback型変数へのポインタ + @return なし + @note + @LI WDS_Endは常に成功するため、フラグに基づいてIDLEまたは初期化前ウェイトまたはライブラリ解放ステートへ +*///------------------------------------------------------------------------------ +static void WDS_WrapperEnd_CB( void *arg ) +{ +#pragma unused(arg) + WDSWrapperCallbackParam param; + + // ステート処理と重複処理しないため + OS_LockMutex( &g_wdswrapperwork->mutex ); + +#ifdef WDSWRAPPER_DEBUGPRINT + OS_TPrintf("WDS_WrapperEnd_CB\n"); +#endif + + // WDSを終了したタイミングを記録しておく + g_wdswrapperwork->tickstart = OS_GetTick(); + + // WDS_End後のステートを各種フラグに基づいて変更 + if( g_wdswrapperwork->terminate == TRUE ) { + g_wdswrapperwork->state = WDSWRAPPER_STATE_TERMINATE; + } + else if( g_wdswrapperwork->idle == TRUE ) { + g_wdswrapperwork->state = WDSWRAPPER_STATE_IDLE; + + // コールバックパラメータの設定 + param.callback = WDSWRAPPER_CALLBACK_STOPSCAN; + param.errcode = WDSWRAPPER_ERRCODE_SUCCESS; + + // コールバック関数の呼び出し + g_wdswrapperwork->initparam.callback( ¶m ); + } + else { + g_wdswrapperwork->state = WDSWRAPPER_STATE_BEFOREINIT; + } + + + // ステート処理と重複処理しないため + OS_UnlockMutex( &g_wdswrapperwork->mutex ); +} + +//-------------------------------------------------------------------------------- +/** アイドルステート関数 + @param なし + @return なし +*///------------------------------------------------------------------------------ +static void WDS_WrapperIdleState( void ) +{ + if( g_wdswrapperwork->terminate == TRUE ) { + g_wdswrapperwork->state = WDSWRAPPER_STATE_TERMINATE; + } + else if( g_wdswrapperwork->restart == TRUE ) + { + g_wdswrapperwork->idle = FALSE; + g_wdswrapperwork->restart = FALSE; + g_wdswrapperwork->state = WDSWRAPPER_STATE_INIT; + } +} + +//-------------------------------------------------------------------------------- +/** WDSラッパーライブラリが内部で実行するスレッド関数 + @param arg 常にNULL + @return なし +*///------------------------------------------------------------------------------ +static void WDS_WrapperThreadFunc( void *arg ) +{ +#pragma unused( arg ) + WDSWrapperCallbackParam param; + + // ステートの初期化 + g_wdswrapperwork->state = WDSWRAPPER_STATE_INIT; + + while( 1 ) { + OS_WaitVBlankIntr(); + + // ステートにより処理を分岐(ステート処理中はmutexによりlockが行われる) + OS_LockMutex( &g_wdswrapperwork->mutex ); + if( g_wdswrapperwork->state == WDSWRAPPER_STATE_TERMINATE ) + break; + + switch( g_wdswrapperwork->state ) { + case WDSWRAPPER_STATE_BEFOREINIT: WDS_WrapperBeforeInitState(); break; + case WDSWRAPPER_STATE_INIT: WDS_WrapperInitState(); break; + case WDSWRAPPER_STATE_WAITINIT: break; + case WDSWRAPPER_STATE_SCAN: WDS_WrapperScanState(); break; + case WDSWRAPPER_STATE_WAITSCAN: WDS_WrapperWaitScanState(); break; + case WDSWRAPPER_STATE_ENDSCAN: WDS_WrapperEndScanState(); break; + case WDSWRAPPER_STATE_WAITENDSCAN: break; + case WDSWRAPPER_STATE_END: WDS_WrapperEndState(); break; + case WDSWRAPPER_STATE_WAITEND: break; + case WDSWRAPPER_STATE_IDLE: WDS_WrapperIdleState(); break; + case WDSWRAPPER_STATE_TERMINATE: break; + } + OS_UnlockMutex( &g_wdswrapperwork->mutex ); + } + + // コールバックパラメータの設定 + param.callback = WDSWRAPPER_CALLBACK_CLEANUP; + param.errcode = WDSWRAPPER_ERRCODE_SUCCESS; + + // コールバック関数の呼び出し + g_wdswrapperwork->initparam.callback( ¶m ); +} + +//-------------------------------------------------------------------------------- +/** WDSコントロールスレッドデストラクタ + @param arg 常にNULL + @return なし +*///------------------------------------------------------------------------------ +static void WDS_WrapperThreadDestructor( void *arg ) +{ +#pragma unused( arg ) + if( g_wdswrapperwork != NULL ) { + if( g_wdswrapperwork->stack != NULL ) { + g_wdswrapperwork->initparam.free( g_wdswrapperwork->stack ); + g_wdswrapperwork->stack = NULL; + } + if( g_wdswrapperwork->wdswork != NULL ) { + g_wdswrapperwork->initparam.free( g_wdswrapperwork->wdswork ); + g_wdswrapperwork->wdswork = NULL; + } + g_wdswrapperwork->initparam.free( g_wdswrapperwork ); + g_wdswrapperwork = NULL; + } +} + +//----------------------------------------------------- +// External Functions +//----------------------------------------------------- + +//-------------------------------------------------------------------------------- +/** + WDSラッパーライブラリ初期化の非同期処理を開始します。
+ 初期化処理完了時にコールバックが発生します。
+ コールバック関数でエラー通知を受け取った場合は、ライブラリが自動的に解放されるのを待ってください。 + @param param WDSラッパー初期化パラメータ + @return WDSWRAPPER_ERRCODE_SUCCESS: 初期化処理を開始 + @return WDSWRAPPER_ERRCODE_INITIALIZED: WDSラッパーライブラリは初期化済み + @return WDSWRAPPER_ERRCODE_FAILURE: 初期化に失敗 + @note + ・WDSコントロールスレッドは生成直後から間欠スキャンを実行しています +*///------------------------------------------------------------------------------ +WDSWrapperErrCode WDS_WrapperInitialize( WDSWrapperInitializeParam param ) +{ + // 初期化済みをチェック + if( g_wdswrapperwork != NULL ) + return WDSWRAPPER_ERRCODE_INITIALIZED; + + // パラメータのサニティチェック + if( param.callback == NULL || param.alloc == NULL || param.free == NULL ) + return WDSWRAPPER_ERRCODE_FAILURE; + + // ワークエリアを初期化 + g_wdswrapperwork = param.alloc( sizeof( WDSWrapperWork ) ); + if( g_wdswrapperwork == NULL ) + goto FAILURE; + MI_CpuClear8( g_wdswrapperwork, sizeof( WDSWrapperWork ) ); + + // スタック領域・WDSワークエリアの初期化 + g_wdswrapperwork->stack = param.alloc( WDSWRAPPER_STACKSIZE ); + if( g_wdswrapperwork->stack == NULL ) + goto FAILURE; + g_wdswrapperwork->wdswork = param.alloc( WDS_GetWorkAreaSize() ); + if( g_wdswrapperwork->wdswork == NULL ) + goto FAILURE; + + // パラメータのコピー + g_wdswrapperwork->initparam = param; + + // mutexの初期化 + OS_InitMutex( &g_wdswrapperwork->mutex ); + + // スレッドの生成 + OS_CreateThread( &g_wdswrapperwork->thread, + WDS_WrapperThreadFunc, + NULL, + g_wdswrapperwork->stack + WDSWRAPPER_STACKSIZE, + WDSWRAPPER_STACKSIZE, + g_wdswrapperwork->initparam.threadprio + ); + + // ワークエリア解放用のスレッドデストラクタを設定 + OS_SetThreadDestructor( &g_wdswrapperwork->thread, WDS_WrapperThreadDestructor ); + + // スレッドの実行 + OS_WakeupThreadDirect( &g_wdswrapperwork->thread ); + + // 初期化成功 + return WDSWRAPPER_ERRCODE_SUCCESS; + +FAILURE: + if( g_wdswrapperwork != NULL ) { + if( g_wdswrapperwork->stack != NULL ) { + param.free( g_wdswrapperwork->stack ); + g_wdswrapperwork->stack = NULL; + } + if( g_wdswrapperwork->wdswork != NULL ) { + param.free( g_wdswrapperwork->wdswork ); + g_wdswrapperwork->wdswork = NULL; + } + param.free( g_wdswrapperwork ); + g_wdswrapperwork = NULL; + } + return WDSWRAPPER_ERRCODE_FAILURE; +} + +//-------------------------------------------------------------------------------- +/** + WDSコントロールスレッドを停止し、WDSラッパーライブラリを解放します。
+ 解放処理完了の直前にコールバックが発生します。
+ コールバック関数にエラーが通知されることはありません。 + @param なし + @return WDSWRAPPER_ERRCODE_SUCCESS WDSラッパー解放を開始 + @return WDSWRAPPER_ERRCODE_OPERATING WDSラッパー解放を実行中 + @return WDSWRAPPER_ERRCODE_UNINITIALIZED WDSラッパーライブラリが初期化されていない +*///------------------------------------------------------------------------------ +WDSWrapperErrCode WDS_WrapperCleanup( void ) +{ + // 初期化済みをチェック + if( g_wdswrapperwork == NULL ) + return WDSWRAPPER_ERRCODE_UNINITIALIZED; + + OS_LockMutex( &g_wdswrapperwork->mutex ); + + // 解放処理実行中をチェック + if( g_wdswrapperwork->terminate == TRUE ) { + OS_UnlockMutex( &g_wdswrapperwork->mutex ); + return WDSWRAPPER_ERRCODE_OPERATING; + } + + g_wdswrapperwork->terminate = TRUE; + + OS_UnlockMutex( &g_wdswrapperwork->mutex ); + + return WDSWRAPPER_ERRCODE_SUCCESS; +} + +//-------------------------------------------------------------------------------- +/** + WDSコントロールスレッドのステートを間欠受信状態に変更します。
+ ステートの変更に成功すると、以後一回の間欠受信が完了するたびにコールバックが呼び出されます。
+ コールバック関数でエラー通知を受け取った場合は、ライブラリが自動的に解放されるのを待ってください。 + @return WDSWRAPPER_ERRCODE_SUCCESS: ステート変更に成功(コールバック発生を待ってください) + @return WDSWRAPPER_ERRCODE_FAILURE: 間欠受信に移行できるステートでない(現在のステートが維持されます) + @return WDSWRAPPER_ERRCIDE_OPERATING: すでにステートが間欠受信状態 + @return WDSWRAPPER_ERRCODE_UNINITIALIZED: WDSラッパーライブラリが初期化されていない +*///------------------------------------------------------------------------------ +WDSWrapperErrCode WDS_WrapperStartScan( void ) +{ + // 初期化済みをチェック + if( g_wdswrapperwork == NULL ) + return WDSWRAPPER_ERRCODE_UNINITIALIZED; + + OS_LockMutex( &g_wdswrapperwork->mutex ); + + // ステートがIDLEかBEFOREINITであることを確認 + if( g_wdswrapperwork->state != WDSWRAPPER_STATE_IDLE && g_wdswrapperwork->state != WDSWRAPPER_STATE_BEFOREINIT ) { + OS_UnlockMutex( &g_wdswrapperwork->mutex ); + return WDSWRAPPER_ERRCODE_FAILURE; + } + + // 再スタート処理実行中をチェック + if( g_wdswrapperwork->restart == TRUE ) { + OS_UnlockMutex( &g_wdswrapperwork->mutex ); + return WDSWRAPPER_ERRCODE_OPERATING; + } + + g_wdswrapperwork->restart = TRUE; + + OS_UnlockMutex( &g_wdswrapperwork->mutex ); + + return WDSWRAPPER_ERRCODE_SUCCESS; +} + +//-------------------------------------------------------------------------------- +/** + WDSコントロールスレッドのステートを間欠受信停止状態に設定します。
+ 間欠受信が実際に停止した際にコールバックが呼び出されます。
+ コールバックでエラーが通知されることはありません。 + @return WDSWRAPPER_ERRCODE_SUCCESS: ステート変更に成功 + @return WDSWRAPPER_ERRCIDE_OPERATING: すでにステートが間欠受信停止状態 + @return WDSWRAPPER_ERRCODE_UNINITIALIZED: WDSラッパーライブラリが初期化されていない + @note + ステート変更が行われてから間欠受信が停止するまでには20ms程度の時間がかかります +*///------------------------------------------------------------------------------ +WDSWrapperErrCode WDS_WrapperStopScan( void ) +{ + // 初期化済みをチェック + if( g_wdswrapperwork == NULL ) + return WDSWRAPPER_ERRCODE_UNINITIALIZED; + + OS_LockMutex( &g_wdswrapperwork->mutex ); + + // 間欠受信停止処理実行中をチェック + if( g_wdswrapperwork->idle == TRUE ) { + OS_UnlockMutex( &g_wdswrapperwork->mutex ); + return WDSWRAPPER_ERRCODE_OPERATING; + } + + g_wdswrapperwork->idle = TRUE; + + OS_UnlockMutex( &g_wdswrapperwork->mutex ); + + return WDSWRAPPER_ERRCODE_SUCCESS; +} + +//-------------------------------------------------------------------------------- +/** + 直前に完了した間欠受信で有効な親機ビーコンを受け取ったか確認します + @param なし + @return WDSWRAPPER_ERRCODE_SUCCESS: 直前に完了した間欠受信で有効な親機ビーコンを受け取った + @return WDSWRAPPER_ERRCODE_FAILURE: 直前に完了した間欠受信で有効な親機ビーコンを受け取っていない + @return WDSWRAPPER_ERRCODE_UNINITIALIZED: WDSラッパーライブラリが初期化されていない +*///------------------------------------------------------------------------------ +WDSWrapperErrCode WDS_WrapperCheckValidBeacon( void ) +{ + int i; + WDSWrapperErrCode ret = WDSWRAPPER_ERRCODE_FAILURE; + + // 初期化済みをチェック + if( g_wdswrapperwork == NULL ) + return WDSWRAPPER_ERRCODE_UNINITIALIZED; + + OS_LockMutex( &g_wdswrapperwork->mutex ); + + if( g_wdswrapperwork->briefapinfonum > 0 ) { + for( i = 0; i < g_wdswrapperwork->briefapinfonum; i++ ) { + if( g_wdswrapperwork->briefapinfo[i].isvalid == TRUE ) { + if( g_wdswrapperwork->briefapinfo[i].apinfo.infoflag & WDS_INFOFLAG_NOTIFY ) { + ret = WDSWRAPPER_ERRCODE_SUCCESS; + break; + } + } + } + } + OS_UnlockMutex( &g_wdswrapperwork->mutex ); + + return ret; +} + +//-------------------------------------------------------------------------------- +/** + 直前に完了した間欠受信で受け取ったビーコン情報をArgument領域にセットします + @param なし + @return WDSWRAPPER_ERRCODE_SUCCESS: 親機ビーコン情報がArgument領域にセットされた + @return WDSWRAPPER_ERRCODE_FAILURE: 親機ビーコン情報をArgument領域にセットできなかった + @return WDSWRAPPER_ERRCODE_UNINITIALIZED: WDSラッパーライブラリが初期化されていない +*///------------------------------------------------------------------------------ +WDSWrapperErrCode WDS_WrapperSetArgumentParam( void ) +{ + int err; + + // 初期化済みをチェック + if( g_wdswrapperwork == NULL ) + return WDSWRAPPER_ERRCODE_UNINITIALIZED; + + // TWL用のArgumentシステムを初期化 + OS_InitDeliverArgInfo( &g_wdswrapperwork->deliverinfo, sizeof( g_wdswrapperwork->briefapinfo ) ); + + // Argument領域に書き込み + err = OS_SetBinaryToDeliverArg( g_wdswrapperwork->briefapinfo, sizeof( g_wdswrapperwork->briefapinfo ) ); + if( err != OS_DELIVER_ARG_SUCCESS ) { +#ifdef WDSWRAPPER_DEBUGPRINT + OS_TPrintf( "WDS_WrapperSetArgumentParam: failed %d\n", err ); +#endif + return WDSWRAPPER_ERRCODE_FAILURE; + } + + err = OS_EncodeDeliverArg(); + if( err != OS_DELIVER_ARG_SUCCESS ) { +#ifdef WDSWRAPPER_DEBUGPRINT + OS_TPrintf( "OS_EncodeDeliverArg: failed %d\n", err ); +#endif + return WDSWRAPPER_ERRCODE_FAILURE; + } + + +#ifdef WDSWRAPPER_DEBUGPRINT + OS_TPrintf( "WDS_WrapperSetArgumentParam: success\n" ); +#endif + + return WDSWRAPPER_ERRCODE_SUCCESS; +} + +//-------------------------------------------------------------------------------- +/** + WDSコントロールスレッドが実行中か確認します + @param なし + @return WDSWRAPPER_ERRCODE_SUCCESS: WDSコントロールスレッドが実行中 + @return WDSWRAPPER_ERRCODE_FAILURE: WDSコントロールスレッドは停止している + @return WDSWRAPPER_ERRCODE_UNINITIALIZED: WDSラッパーライブラリが初期化されていない +*///------------------------------------------------------------------------------ +WDSWrapperErrCode WDS_WrapperCheckThreadRunning( void ) +{ + // 初期化済みをチェック + if( g_wdswrapperwork == NULL ) + return WDSWRAPPER_ERRCODE_UNINITIALIZED; + + if( OS_IsThreadTerminated( &g_wdswrapperwork->thread ) == TRUE ) + return WDSWRAPPER_ERRCODE_FAILURE; + return WDSWRAPPER_ERRCODE_SUCCESS; +} + +//-------------------------------------------------------------------------------- +/** + WDSコントロールスレッドが使用しているOSThreadへのポインタを得ます + @param なし + @return NULL: WDSラッパーライブラリが初期化されていない + @return NULL以外: 実行中・あるいは停止中のOSThreadへのポインタ +*///------------------------------------------------------------------------------ +OSThread *WDS_WrapperGetOSThread( void ) +{ + // 初期化済みをチェック + if( g_wdswrapperwork == NULL ) + return NULL; + + return &g_wdswrapperwork->thread; +} diff --git a/build/libraries_sysmenu/wds/readme.txt b/build/libraries_sysmenu/wds/readme.txt index 375045ae..46466ad2 100644 --- a/build/libraries_sysmenu/wds/readme.txt +++ b/build/libraries_sysmenu/wds/readme.txt @@ -1,6 +1,6 @@ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ■ ■ -■ TWLWDSライブラリ 2008/6/11版 ■ +■ TWLWDSライブラリ 2008/6/26版 ■ ■ ■ ■ ネットワーク開発部からのお知らせ ■ ■ ■ @@ -22,9 +22,14 @@ %make TWLSDK_PLATFORM=TWL ・受信サンプルのビルドはWDSTestディレクトリ下で %make TWLSDK_PLATFORM=TWL +・WDSラッパーを使用した受信サンプルのビルドはWDSWrapperTestディレクトリ下で + %make TWLSDK_PLATFORM=TWL ●変更履歴 +2008/06/26 20080626版 +・WDSライブラリを簡易に使用するためのWDSWrapperが追加されました。 + 2008/06/11 初版 ・動作確認用バージョンから、ビーコンに以下の情報が追加されました infoflag - 付加情報フラグが格納される領域です @@ -40,3 +45,4 @@ infoflag ・ランチャーメニューでのニンテンドースポットビューアの強調表示は、 infoflagのWDS_INFOFLAG_NOTIFYビットが1にセットされたビーコンを 受信した場合のみ行ってください。 +・なお、WDSWrapperはWDS_INFOFLAG_NOTIFYに関連した処理を内部で自動的に行います。 diff --git a/build/tests/WDSTest/src/main.c b/build/tests/WDSTest/src/main.c index add12c99..37840164 100644 --- a/build/tests/WDSTest/src/main.c +++ b/build/tests/WDSTest/src/main.c @@ -1,22 +1,5 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: WDS.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include +#include +#include "WDS.h" // ヒープ初期化関数 static void InitializeAllocateSystem(void); @@ -54,6 +37,9 @@ static AppState g_appstate = APP_STATE_WDSINIT; // 受け取ったビーコン情報を格納する変数(この配列をランチャー経由でホットスポットチャンネルに渡す) static WDSBriefApInfo briefapinfo[WDS_APINFO_MAX]; +// 時間計測用 +static OSTick wdsBegin; + /*---------------------------------------------------------------------------* Name: NitroMain @@ -102,6 +88,7 @@ void NitroMain(void) // WDSライブラリの初期化関数を呼び出し、その非同期処理の完了を待つ OS_Printf("*** WDS_Initialize\n"); g_appstate = APP_STATE_WDSWAITINIT; + wdsBegin = OS_GetTick(); if( WDS_Initialize( wdsSysBuf, WDS_Initialize_CB, 0 ) == 0 ) { OS_Printf("WDS_Initialize successed\n"); @@ -126,6 +113,7 @@ void NitroMain(void) //OS_Printf("*** WDS_StartScan\n"); // ビーコンスキャン非同期処理を開始する g_appstate = APP_STATE_WDSWAITSCAN; + wdsBegin = OS_GetTick(); if( WDS_StartScan( WDS_StartScan_CB ) == 0 ) { if( wdsScanBeginTick == 0 ) @@ -156,6 +144,7 @@ void NitroMain(void) OS_Printf("*** WDS_EndScan\n"); // スキャンを終了させる非同期処理を開始する + wdsBegin = OS_GetTick(); g_appstate = APP_STATE_WDSWAITENDSCAN; if( WDS_EndScan( WDS_EndScan_CB ) == 0 ) { @@ -187,6 +176,7 @@ void NitroMain(void) // WDSライブラリを終了し、無線ハードの電源を落とす非同期処理を開始する OS_Printf("*** WDS_End\n"); g_appstate = APP_STATE_WDSWAITEND; + wdsBegin = OS_GetTick(); if( WDS_End( WDS_End_CB ) == 0 ) { OS_Printf("WDS_End successed\n"); @@ -263,13 +253,15 @@ static void WDS_Initialize_CB(void *arg) #pragma unused(arg) OS_TPrintf("WDS_Initialize_CB\n"); g_appstate = APP_STATE_WDSSCAN; + OS_TPrintf("Elapsed time = %llu\n", OS_TicksToMicroSeconds( OS_GetTick() - wdsBegin ) ); } static void WDS_StartScan_CB(void *arg) { #pragma unused(arg) -// OS_TPrintf("WDS_StartScan_CB\n"); + OS_TPrintf("WDS_StartScan_CB\n"); g_appstate = APP_STATE_WDSCOMPLETESCAN; + OS_TPrintf("Elapsed time = %llu\n", OS_TicksToMicroSeconds( OS_GetTick() - wdsBegin ) ); } static void WDS_EndScan_CB(void *arg) @@ -277,6 +269,7 @@ static void WDS_EndScan_CB(void *arg) #pragma unused(arg) OS_TPrintf("WDS_EndScan_CB\n"); g_appstate = APP_STATE_WDSCOMPLETEENDSCAN; + OS_TPrintf("Elapsed time = %llu\n", OS_TicksToMicroSeconds( OS_GetTick() - wdsBegin ) ); } static void WDS_End_CB(void *arg) @@ -284,4 +277,5 @@ static void WDS_End_CB(void *arg) #pragma unused(arg) OS_TPrintf("WDS_End_CB\n"); g_appstate = APP_STATE_WDSCOMPLETEEND; + OS_TPrintf("Elapsed time = %llu\n", OS_TicksToMicroSeconds( OS_GetTick() - wdsBegin ) ); } diff --git a/build/tests/WDSWrapperTest/Makefile b/build/tests/WDSWrapperTest/Makefile new file mode 100644 index 00000000..efc21709 --- /dev/null +++ b/build/tests/WDSWrapperTest/Makefile @@ -0,0 +1,37 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: WDSWrapperTest +# File: Makefile +# +# Copyright 2008 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +#---------------------------------------------------------------------------- + +TARGET_FIRM = SYSTEMMENU +TARGET_PLATFORM = TWL +TWL_ARCHGEN = LIMITED +TWL_PROC = ARM9 + +SRCS = main.c +TARGET_BIN = main.srl + +include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs + +#---------------------------------------------------------------------------- + +LLIBRARIES += WDS$(TWL_LIBSUFFIX).a + +#---------------------------------------------------------------------------- + +do-build: $(TARGETS) + +#---------------------------------------------------------------------------- +include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules + +#===== End of Makefile ===== diff --git a/build/tests/WDSWrapperTest/src/main.c b/build/tests/WDSWrapperTest/src/main.c new file mode 100644 index 00000000..cda0d08c --- /dev/null +++ b/build/tests/WDSWrapperTest/src/main.c @@ -0,0 +1,130 @@ +#include "WDSWrapper.h" + +// Vブランク関数 +static void VBlankIntr(void) +{ + OS_SetIrqCheckFlag(OS_IE_V_BLANK); +} + +// ヒープ初期化関数 +static void InitializeAllocateSystem(void) +{ + void *tempLo; + OSHeapHandle hh; + + tempLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); + OS_SetArenaLo(OS_ARENA_MAIN, tempLo); + hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); + if (hh < 0) + { + OS_Panic("ARM9: Fail to create heap...\n"); + } + hh = OS_SetCurrentHeap(OS_ARENA_MAIN, hh); +} + +// WDSWrapper用アロケータ +static void *Alloc_WDSWrapper( u32 size ) +{ + return OS_Alloc( size ); +} + +static void Free_WDSWrapper( void *ptr ) +{ + OS_Free( ptr ); +} + +char *callbackstring[] = { + "WDSWRAPPER_CALLBACK_INITIALIZE", + "WDSWRAPPER_CALLBACK_CLEANUP", + "WDSWRAPPER_CALLBACK_STARTSCAN", + "WDSWRAPPER_CALLBACK_STARTSCAN2", + "WDSWRAPPER_CALLBACK_STOPSCAN", +}; + +// WDSWrapper用コールバック関数 +static void Callback_WDSWrapper( void *ptr ) +{ + WDSWrapperCallbackParam *callback = (WDSWrapperCallbackParam *)ptr; + OS_TPrintf("Callback_WDSWrapper: %s %d ", callbackstring[callback->callback], callback->errcode ); + + if( callback->callback == WDSWRAPPER_CALLBACK_STARTSCAN2 ) { + // n秒間隔のビーコン間欠スキャン一回分が完了 + // ビーコンを受け取っていないという結果が出た場合、強調表示を消します + if( WDS_WrapperCheckValidBeacon() == WDSWRAPPER_ERRCODE_FAILURE ) + OS_TPrintf( "強調表示を消します" ); + else { + OS_TPrintf( "強調表示をつけます" ); + if( WDS_WrapperSetArgumentParam() == WDSWRAPPER_ERRCODE_SUCCESS ) + OS_TPrintf( "\nArgument領域にパラメータを代入\n" ); + else + OS_TPrintf( "\nArgument領域にパラメータを代入失敗\n" ); + } + } + else if( callback->callback == WDSWRAPPER_CALLBACK_STARTSCAN ) { + // n秒間隔のビーコン間欠スキャン一回分が完了 + // ビーコンを受け取っている場合のみ強調表示を付けます + if( WDS_WrapperCheckValidBeacon() == WDSWRAPPER_ERRCODE_SUCCESS ) + OS_TPrintf( "強調表示をつけます" ); + } + + OS_TPrintf( "\n" ); +} + +void NitroMain(void) +{ + WDSWrapperInitializeParam param; + u16 lastpad = 0x0000; + u16 nowpad = 0x0000; + + // 各種初期化処理 + OS_Init(); + OS_InitTick(); + OS_InitAlarm(); + + //---- interrupt setting + OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); + OS_EnableIrqMask(OS_IE_V_BLANK); + OS_EnableIrq(); + GX_VBlankIntr(TRUE); + + InitializeAllocateSystem(); + + OS_TPrintf( "WDSWrapper Sample\n\n" ); + OS_TPrintf( "Xボタン: WDSラッパーとWDSを初期化し、間欠スキャンを開始\n" ); + OS_TPrintf( "Bボタン: スキャンを中断\n" ); + OS_TPrintf( "Aボタン: スキャンを再開\n" ); + OS_TPrintf( "Yボタン: スキャンを中断し、WDSラッパーとWDSを解放\n" ); + OS_TPrintf( "スタートボタン: ヒープをダンプ表示\n" ); + + // キー入力で中断・再開・解放をやる + while( 1 ) { + lastpad = nowpad; + nowpad = PAD_Read(); + + // Aボタン: スキャンを再開 + // Bボタン: スキャンを中断 + // Xボタン: ラッパーを初期化 + // Yボタン: ラッパーを解放 + // スタートボタン: ヒープをダンプ表示 + if( ( lastpad ^ nowpad ) & PAD_BUTTON_A && !( nowpad & PAD_BUTTON_A ) ) + WDS_WrapperStartScan(); + if( ( lastpad ^ nowpad ) & PAD_BUTTON_B && !( nowpad & PAD_BUTTON_B ) ) + WDS_WrapperStopScan(); + if( ( lastpad ^ nowpad ) & PAD_BUTTON_X && !( nowpad & PAD_BUTTON_X ) ) { + // WDSWrapper初期化と動作開始 + param.threadprio = 10; + param.dmano = 1; + + param.callback = Callback_WDSWrapper; + param.alloc = Alloc_WDSWrapper; + param.free = Free_WDSWrapper; + WDS_WrapperInitialize( param ); + } + if( ( lastpad ^ nowpad ) & PAD_BUTTON_Y && !( nowpad & PAD_BUTTON_Y ) ) + WDS_WrapperCleanup(); + if( ( lastpad ^ nowpad ) & PAD_BUTTON_START && !( nowpad & PAD_BUTTON_START ) ) + OS_DumpHeap( OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE ); + + OS_Sleep( 100 ); + } +} diff --git a/include/sysmenu/WDSWrapper.h b/include/sysmenu/WDSWrapper.h new file mode 100644 index 00000000..8d08ffa4 --- /dev/null +++ b/include/sysmenu/WDSWrapper.h @@ -0,0 +1,137 @@ +//********************************************************************** +// +// @file WDSWrapper.h +// @brief WDSライブラリのラッパー +// +// @author S.Nakata +// @date 2008/06/21 +// @version 0.0 +// +//*********************************************************************/ +#ifndef __WDSWRAPPER_H__ +#define __WDSWRAPPER_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +//----------------------------------------------------- +// Include +//----------------------------------------------------- +#include "WDS.h" + +//----------------------------------------------------- +// Macros +//----------------------------------------------------- +#define WDSWRAPPER_STACKSIZE 4096 ///< WDSラッパーが使用するスレッドスタックの推奨サイズ +#define WDSWRAPPER_SCANPERIOD 3000 ///< WDSラッパーがスキャンを継続する時間[msec] +#define WDSWRAPPER_WAITPERIOD 3000 ///< WDSラッパーがスキャンを中断する時間[msec] + +//#define WDSWRAPPER_DEBUGPRINT ///< デバッグ表示フラグ + +//----------------------------------------------------- +// Types of WDS Wrapper Library +//----------------------------------------------------- + +/** + @brief 処理結果をあらわす列挙型 +*/ +typedef enum WDSWrapperErrCode +{ + WDSWRAPPER_ERRCODE_SUCCESS = 0, ///< 処理成功 + WDSWRAPPER_ERRCODE_FAILURE = 1, ///< 処理失敗 + WDSWRAPPER_ERRCODE_OPERATING = 2, ///< 処理実行中 + WDSWRAPPER_ERRCODE_INITIALIZED = 3, ///< WDSラッパーライブラリ初期化済み + WDSWRAPPER_ERRCODE_UNINITIALIZED= 4 ///< WDSラッパーライブラリ未初期化 +} WDSWrapperErrCode; + +/** + @brief コールバック発生要因をあらわす列挙型 +*/ +typedef enum WDSWrapperCallback +{ + WDSWRAPPER_CALLBACK_INITIALIZE = 0, //!< WDS_WrapperInitialize関数によるコールバック + WDSWRAPPER_CALLBACK_CLEANUP = 1, //!< WDS_WrapperCleanup関数によるコールバック + WDSWRAPPER_CALLBACK_STARTSCAN = 2, //!< WDS_WrapperStartScan関数によるコールバック + WDSWRAPPER_CALLBACK_STARTSCAN2 = 3, //!< WDS_WrapperStartScan関数によるコールバック(間欠スキャン1回終了) + WDSWRAPPER_CALLBACK_STOPSCAN = 4 //!< WDS_WrapperStopScan関数によるコールバック +} WDSWrapperCallback; + +/** + @brief WDSラッパーののステートをあらわす列挙型 +*/ +typedef enum WDSWrapperStateThreadState { + WDSWRAPPER_STATE_BEFOREINIT, //!< 初期化開始待ちステート + WDSWRAPPER_STATE_INIT, //!< 初期化開始ステート + WDSWRAPPER_STATE_WAITINIT, //!< 初期化完了待ちステート + WDSWRAPPER_STATE_SCAN, //!< スキャン開始ステート + WDSWRAPPER_STATE_WAITSCAN, //!< スキャン完了待ちステート + WDSWRAPPER_STATE_ENDSCAN, //!< スキャン中断ステート + WDSWRAPPER_STATE_WAITENDSCAN, //!< スキャン中断完了待ちステート + WDSWRAPPER_STATE_END, //!< WDS解放開始ステート + WDSWRAPPER_STATE_WAITEND, //!< WDS解放完了待ちステート + WDSWRAPPER_STATE_IDLE, //!< アイドルステート + WDSWRAPPER_STATE_TERMINATE //!< WDSラッパー解放ステート +} WDSWrapperStateThreadState; + +/** + @brief WDSWrapperライブラリが使用するコールバック関数型 + @note + ・引数argは必ずWDSWrapperCallback型変数へのポインタ +*/ +typedef void ( *WDSWrapperCallbackFunc )( void *arg ); + +/** + @brief WDSラッパー内部で使用するアロケーター型 +*/ +typedef void *( *WDSWrapperAlloc )( u32 size ); + +/** + @brief WDSラッパー内部で使用するアロケーター型 +*/ +typedef void ( *WDSWrapperFree )( void *ptr ); + +//----------------------------------------------------- +// Structs of WDS Wrapper Library +//----------------------------------------------------- + +/** + @brief WDS_WrapperInitialize関数に与える初期化パラメータ +*/ +typedef struct WDSWrapperInitializeParam +{ + u32 threadprio; ///< WDSコントロールスレッドの優先度 + u16 dmano; ///< WMライブラリが使用するDMA番号 + + WDSWrapperCallbackFunc callback; ///< WDSコントロールスレッドから呼び出されるコールバック関数へのポインタ + WDSWrapperAlloc alloc; ///< WDSラッパーが使用するアロケータ + WDSWrapperFree free; ///< WDSラッパーが使用するアロケータ +} WDSWrapperInitializeParam; + +/** + @brief WDSラッパーが呼び出すコールバック関数に与えられる引数用の構造体 +*/ +typedef struct WDSWrapperCallbackParam +{ + WDSWrapperCallback callback; ///< コールバック発生要因 + WDSWrapperErrCode errcode; ///< エラーコード +} WDSWrapperCallbackParam; + +//----------------------------------------------------- +// Prototypes of WDS Wrapper Library +//----------------------------------------------------- + +WDSWrapperErrCode WDS_WrapperInitialize( WDSWrapperInitializeParam param ); +WDSWrapperErrCode WDS_WrapperCleanup( void ); +WDSWrapperErrCode WDS_WrapperStartScan( void ); +WDSWrapperErrCode WDS_WrapperStopScan( void ); +WDSWrapperErrCode WDS_WrapperCheckValidBeacon( void ); +WDSWrapperErrCode WDS_WrapperSetArgumentParam( void ); +WDSWrapperErrCode WDS_WrapperCheckThreadRunning( void ); +OSThread *WDS_WrapperGetOSThread( void ); + +#ifdef __cplusplus +} +#endif + +#endif //EOF __WDSWRAPPER_H__ diff --git a/man/WDS_Wrapper/html/_w_d_s_wrapper_8c.html b/man/WDS_Wrapper/html/_w_d_s_wrapper_8c.html new file mode 100644 index 00000000..19a07e02 --- /dev/null +++ b/man/WDS_Wrapper/html/_w_d_s_wrapper_8c.html @@ -0,0 +1,281 @@ + + +WDSWrapper: src/WDSWrapper.c + + + + + +
+

src/WDSWrapper.c

WDS繝ゥ繧、繝悶Λ繝ェ縺ョ繝ゥ繝繝代シ [隧ウ邏ー] +

+#include "WDSWrapper.h"
+ + + + + + + + + + + + + + + + + + + + + + + +

繝繝シ繧ソ讒矩

struct  WDSWrapperWork
 WDS繝ゥ繝繝代シ縺ョ繝ッ繝シ繧ッ鬆伜沺 [隧ウ邏ー]

髢「謨ー

WDSWrapperErrCode WDS_WrapperInitialize (WDSWrapperInitializeParam param)
WDSWrapperErrCode WDS_WrapperCleanup (void)
WDSWrapperErrCode WDS_WrapperStartScan (void)
WDSWrapperErrCode WDS_WrapperStopScan (void)
WDSWrapperErrCode WDS_WrapperCheckValidBeacon (void)
WDSWrapperErrCode WDS_WrapperSetArgumentParam (void)
WDSWrapperErrCode WDS_WrapperCheckThreadRunning (void)
OSThread * WDS_WrapperGetOSThread (void)
+


隱ャ譏

+WDS繝ゥ繧、繝悶Λ繝ェ縺ョ繝ゥ繝繝代シ +

+

菴懆:
S.Nakata
+
譌・莉:
2008/06/24
+
繝舌シ繧ク繝ァ繝ウ:
01.00
+

髢「謨ー

+ +
+
+ + + + + + + + + +
WDSWrapperErrCode WDS_WrapperCheckThreadRunning (void   ) 
+
+
+ +

+WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨′螳溯。御クュ縺狗「コ隱阪@縺セ縺

蠑墓焚:
+ + +
縺ェ縺 
+
+
謌サ繧雁、:
WDSWRAPPER_ERRCODE_SUCCESS: WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨′螳溯。御クュ

+WDSWRAPPER_ERRCODE_FAILURE: WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨ッ蛛懈ュ「縺励※縺繧

+WDSWRAPPER_ERRCODE_UNINITIALIZED: WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ縺悟晄悄蛹悶&繧後※縺縺ェ縺

+ +
+

+ +

+
+ + + + + + + + + +
WDSWrapperErrCode WDS_WrapperCheckValidBeacon (void   ) 
+
+
+ +

+逶エ蜑阪↓螳御コ縺励◆髢捺ャ蜿嶺ソ。縺ァ譛牙柑縺ェ隕ェ讖溘ン繝シ繧ウ繝ウ繧貞女縺大叙縺」縺溘°遒コ隱阪@縺セ縺

蠑墓焚:
+ + +
縺ェ縺 
+
+
謌サ繧雁、:
WDSWRAPPER_ERRCODE_SUCCESS: 逶エ蜑阪↓螳御コ縺励◆髢捺ャ蜿嶺ソ。縺ァ譛牙柑縺ェ隕ェ讖溘ン繝シ繧ウ繝ウ繧貞女縺大叙縺」縺

+WDSWRAPPER_ERRCODE_FAILURE: 逶エ蜑阪↓螳御コ縺励◆髢捺ャ蜿嶺ソ。縺ァ譛牙柑縺ェ隕ェ讖溘ン繝シ繧ウ繝ウ繧貞女縺大叙縺」縺ヲ縺縺ェ縺

+WDSWRAPPER_ERRCODE_UNINITIALIZED: WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ縺悟晄悄蛹悶&繧後※縺縺ェ縺

+ +
+

+ +

+
+ + + + + + + + + +
WDSWrapperErrCode WDS_WrapperCleanup (void   ) 
+
+
+ +

+WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨r蛛懈ュ「縺励仝DS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ繧定ァ」謾セ縺励∪縺吶
+ 隗」謾セ蜃ヲ逅螳御コ縺ョ逶エ蜑阪↓繧ウ繝シ繝ォ繝舌ャ繧ッ縺檎匱逕溘@縺セ縺吶
+ 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ォ繧ィ繝ゥ繝シ縺碁夂衍縺輔l繧九%縺ィ縺ッ縺ゅj縺セ縺帙s縲

蠑墓焚:
+ + +
縺ェ縺 
+
+
謌サ繧雁、:
WDSWRAPPER_ERRCODE_SUCCESS WDS繝ゥ繝繝代シ隗」謾セ繧帝幕蟋

+WDSWRAPPER_ERRCODE_OPERATING WDS繝ゥ繝繝代シ隗」謾セ繧貞ョ溯。御クュ

+WDSWRAPPER_ERRCODE_UNINITIALIZED WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ縺悟晄悄蛹悶&繧後※縺縺ェ縺

+ +
+

+ +

+
+ + + + + + + + + +
OSThread* WDS_WrapperGetOSThread (void   ) 
+
+
+ +

+WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨′菴ソ逕ィ縺励※縺繧軌SThread縺ク縺ョ繝昴う繝ウ繧ソ繧貞セ励∪縺

蠑墓焚:
+ + +
縺ェ縺 
+
+
謌サ繧雁、:
NULL: WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ縺悟晄悄蛹悶&繧後※縺縺ェ縺

+NULL莉・螟: 螳溯。御クュ繝サ縺ゅk縺縺ッ蛛懈ュ「荳ュ縺ョOSThread縺ク縺ョ繝昴う繝ウ繧ソ

+ +
+

+ +

+
+ + + + + + + + + +
WDSWrapperErrCode WDS_WrapperInitialize (WDSWrapperInitializeParam  param  ) 
+
+
+ +

+WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ蛻晄悄蛹悶ョ髱槫酔譛溷ヲ逅繧帝幕蟋九@縺セ縺吶
+ 蛻晄悄蛹門ヲ逅螳御コ譎ゅ↓繧ウ繝シ繝ォ繝舌ャ繧ッ縺檎匱逕溘@縺セ縺吶
+ 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ァ繧ィ繝ゥ繝シ騾夂衍繧貞女縺大叙縺」縺溷エ蜷医ッ縲√Λ繧、繝悶Λ繝ェ縺瑚ェ蜍慕噪縺ォ隗」謾セ縺輔l繧九ョ繧貞セ縺」縺ヲ縺上□縺輔>縲

蠑墓焚:
+ + +
param WDS繝ゥ繝繝代シ蛻晄悄蛹悶ヱ繝ゥ繝。繝シ繧ソ
+
+
謌サ繧雁、:
WDSWRAPPER_ERRCODE_SUCCESS: 蛻晄悄蛹門ヲ逅繧帝幕蟋

+WDSWRAPPER_ERRCODE_INITIALIZED: WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ縺ッ蛻晄悄蛹匁ク医∩

+WDSWRAPPER_ERRCODE_FAILURE: 蛻晄悄蛹悶↓螟ア謨

+
隕壹∴譖ク縺:
繝サWDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨ッ逕滓千峩蠕後°繧蛾俣谺繧ケ繧ュ繝」繝ウ繧貞ョ溯。後@縺ヲ縺縺セ縺
+ +
+

+ +

+
+ + + + + + + + + +
WDSWrapperErrCode WDS_WrapperSetArgumentParam (void   ) 
+
+
+ +

+逶エ蜑阪↓螳御コ縺励◆髢捺ャ蜿嶺ソ。縺ァ蜿励¢蜿悶▲縺溘ン繝シ繧ウ繝ウ諠蝣ア繧但rgument鬆伜沺縺ォ繧サ繝繝医@縺セ縺

蠑墓焚:
+ + +
縺ェ縺 
+
+
謌サ繧雁、:
WDSWRAPPER_ERRCODE_SUCCESS: 隕ェ讖溘ン繝シ繧ウ繝ウ諠蝣ア縺窟rgument鬆伜沺縺ォ繧サ繝繝医&繧後◆

+WDSWRAPPER_ERRCODE_FAILURE: 隕ェ讖溘ン繝シ繧ウ繝ウ諠蝣ア繧但rgument鬆伜沺縺ォ繧サ繝繝医〒縺阪↑縺九▲縺

+WDSWRAPPER_ERRCODE_UNINITIALIZED: WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ縺悟晄悄蛹悶&繧後※縺縺ェ縺

+ +
+

+ +

+
+ + + + + + + + + +
WDSWrapperErrCode WDS_WrapperStartScan (void   ) 
+
+
+ +

+WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨ョ繧ケ繝繝シ繝医r髢捺ャ蜿嶺ソ。迥カ諷九↓螟画峩縺励∪縺吶
+ 繧ケ繝繝シ繝医ョ螟画峩縺ォ謌仙粥縺吶k縺ィ縲∽サ・蠕御ク蝗槭ョ髢捺ャ蜿嶺ソ。縺悟ョ御コ縺吶k縺溘ウ縺ォ繧ウ繝シ繝ォ繝舌ャ繧ッ縺悟他縺ウ蜃コ縺輔l縺セ縺吶
+ 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ァ繧ィ繝ゥ繝シ騾夂衍繧貞女縺大叙縺」縺溷エ蜷医ッ縲√Λ繧、繝悶Λ繝ェ縺瑚ェ蜍慕噪縺ォ隗」謾セ縺輔l繧九ョ繧貞セ縺」縺ヲ縺上□縺輔>縲

謌サ繧雁、:
WDSWRAPPER_ERRCODE_SUCCESS: 繧ケ繝繝シ繝亥、画峩縺ォ謌仙粥(繧ウ繝シ繝ォ繝舌ャ繧ッ逋コ逕溘r蠕縺」縺ヲ縺上□縺輔>)

+WDSWRAPPER_ERRCODE_FAILURE: 髢捺ャ蜿嶺ソ。縺ォ遘サ陦後〒縺阪k繧ケ繝繝シ繝医〒縺ェ縺(迴セ蝨ィ縺ョ繧ケ繝繝シ繝医′邯ュ謖√&繧後∪縺)

+WDSWRAPPER_ERRCIDE_OPERATING: 縺吶〒縺ォ繧ケ繝繝シ繝医′髢捺ャ蜿嶺ソ。迥カ諷

+WDSWRAPPER_ERRCODE_UNINITIALIZED: WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ縺悟晄悄蛹悶&繧後※縺縺ェ縺

+ +
+

+ +

+
+ + + + + + + + + +
WDSWrapperErrCode WDS_WrapperStopScan (void   ) 
+
+
+ +

+WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨ョ繧ケ繝繝シ繝医r髢捺ャ蜿嶺ソ。蛛懈ュ「迥カ諷九↓險ュ螳壹@縺セ縺吶
+ 髢捺ャ蜿嶺ソ。縺悟ョ滄圀縺ォ蛛懈ュ「縺励◆髫帙↓繧ウ繝シ繝ォ繝舌ャ繧ッ縺悟他縺ウ蜃コ縺輔l縺セ縺吶
+ 繧ウ繝シ繝ォ繝舌ャ繧ッ縺ァ繧ィ繝ゥ繝シ縺碁夂衍縺輔l繧九%縺ィ縺ッ縺ゅj縺セ縺帙s縲

謌サ繧雁、:
WDSWRAPPER_ERRCODE_SUCCESS: 繧ケ繝繝シ繝亥、画峩縺ォ謌仙粥

+WDSWRAPPER_ERRCIDE_OPERATING: 縺吶〒縺ォ繧ケ繝繝シ繝医′髢捺ャ蜿嶺ソ。蛛懈ュ「迥カ諷

+WDSWRAPPER_ERRCODE_UNINITIALIZED: WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ縺悟晄悄蛹悶&繧後※縺縺ェ縺

+
隕壹∴譖ク縺:
繧ケ繝繝シ繝亥、画峩縺瑚。後o繧後※縺九i髢捺ャ蜿嶺ソ。縺悟●豁「縺吶k縺セ縺ァ縺ォ縺ッ20ms遞句コヲ縺ョ譎る俣縺後°縺九j縺セ縺
+ +
+

+

+
WDSWrapper縺ォ蟇セ縺励※Thu Jun 26 22:00:52 2008縺ォ逕滓舌&繧後∪縺励◆縲  + +doxygen 1.5.6
+ + diff --git a/man/WDS_Wrapper/html/_w_d_s_wrapper_8h.html b/man/WDS_Wrapper/html/_w_d_s_wrapper_8h.html new file mode 100644 index 00000000..2903fc0b --- /dev/null +++ b/man/WDS_Wrapper/html/_w_d_s_wrapper_8h.html @@ -0,0 +1,562 @@ + + +WDSWrapper: include/WDSWrapper.h + + + + + +
+

include/WDSWrapper.h

#include "WDS.h"
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

繝繝シ繧ソ讒矩

struct  WDSWrapperInitializeParam
 WDS_WrapperInitialize髢「謨ー縺ォ荳弱∴繧句晄悄蛹悶ヱ繝ゥ繝。繝シ繧ソ [隧ウ邏ー]
struct  WDSWrapperCallbackParam
 WDS繝ゥ繝繝代シ縺悟他縺ウ蜃コ縺吶さ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ォ荳弱∴繧峨l繧句シ墓焚逕ィ縺ョ讒矩菴 [隧ウ邏ー]

繝槭け繝ュ螳夂セゥ

#define WDSWRAPPER_STACKSIZE   4096
 WDS繝ゥ繝繝代シ縺御スソ逕ィ縺吶k繧ケ繝ャ繝繝峨せ繧ソ繝繧ッ縺ョ謗ィ螂ィ繧オ繧、繧コ
#define WDSWRAPPER_SCANPERIOD   3000
 WDS繝ゥ繝繝代シ縺後せ繧ュ繝」繝ウ繧堤カ咏カ壹☆繧区凾髢甜msec]
#define WDSWRAPPER_WAITPERIOD   3000
 WDS繝ゥ繝繝代シ縺後せ繧ュ繝」繝ウ繧剃クュ譁ュ縺吶k譎る俣[msec]

蝙句ョ夂セゥ

typedef void(* WDSWrapperCallbackFunc )(void *arg)
 WDSWrapper繝ゥ繧、繝悶Λ繝ェ縺御スソ逕ィ縺吶k繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー蝙
typedef void *(* WDSWrapperAlloc )(u32 size)
 WDS繝ゥ繝繝代シ蜀驛ィ縺ァ菴ソ逕ィ縺吶k繧「繝ュ繧ア繝シ繧ソ繝シ蝙
typedef void(* WDSWrapperFree )(void *ptr)
 WDS繝ゥ繝繝代シ蜀驛ィ縺ァ菴ソ逕ィ縺吶k繧「繝ュ繧ア繝シ繧ソ繝シ蝙

蛻玲嫌蝙

enum  WDSWrapperErrCode {
+  WDSWRAPPER_ERRCODE_SUCCESS = 0, +
+  WDSWRAPPER_ERRCODE_FAILURE = 1, +
+  WDSWRAPPER_ERRCODE_OPERATING = 2, +
+  WDSWRAPPER_ERRCODE_INITIALIZED = 3, +
+  WDSWRAPPER_ERRCODE_UNINITIALIZED = 4 +
+ }
 蜃ヲ逅邨先棡繧偵≠繧峨o縺吝玲嫌蝙 [隧ウ邏ー]
enum  WDSWrapperCallback {
+  WDSWRAPPER_CALLBACK_INITIALIZE = 0, +
+  WDSWRAPPER_CALLBACK_CLEANUP = 1, +
+  WDSWRAPPER_CALLBACK_STARTSCAN = 2, +
+  WDSWRAPPER_CALLBACK_STARTSCAN2 = 3, +
+  WDSWRAPPER_CALLBACK_STOPSCAN = 4 +
+ }
 繧ウ繝シ繝ォ繝舌ャ繧ッ逋コ逕溯ヲ∝屏繧偵≠繧峨o縺吝玲嫌蝙 [隧ウ邏ー]
enum  WDSWrapperStateThreadState {
+  WDSWRAPPER_STATE_BEFOREINIT, +
+  WDSWRAPPER_STATE_INIT, +
+  WDSWRAPPER_STATE_WAITINIT, +
+  WDSWRAPPER_STATE_SCAN, +
+  WDSWRAPPER_STATE_WAITSCAN, +
+  WDSWRAPPER_STATE_ENDSCAN, +
+  WDSWRAPPER_STATE_WAITENDSCAN, +
+  WDSWRAPPER_STATE_END, +
+  WDSWRAPPER_STATE_WAITEND, +
+  WDSWRAPPER_STATE_IDLE, +
+  WDSWRAPPER_STATE_TERMINATE +
+ }
 WDS繝ゥ繝繝代シ縺ョ縺ョ繧ケ繝繝シ繝医r縺ゅi繧上☆蛻玲嫌蝙 [隧ウ邏ー]

髢「謨ー

WDSWrapperErrCode WDS_WrapperInitialize (WDSWrapperInitializeParam param)
WDSWrapperErrCode WDS_WrapperCleanup (void)
WDSWrapperErrCode WDS_WrapperStartScan (void)
WDSWrapperErrCode WDS_WrapperStopScan (void)
WDSWrapperErrCode WDS_WrapperCheckValidBeacon (void)
WDSWrapperErrCode WDS_WrapperSetArgumentParam (void)
WDSWrapperErrCode WDS_WrapperCheckThreadRunning (void)
OSThread * WDS_WrapperGetOSThread (void)
+

繝槭け繝ュ螳夂セゥ

+ +
+
+ + + + +
#define WDSWRAPPER_SCANPERIOD   3000
+
+
+ +

+WDS繝ゥ繝繝代シ縺後せ繧ュ繝」繝ウ繧堤カ咏カ壹☆繧区凾髢甜msec] +

+ +

+

+ +

+
+ + + + +
#define WDSWRAPPER_STACKSIZE   4096
+
+
+ +

+WDS繝ゥ繝繝代シ縺御スソ逕ィ縺吶k繧ケ繝ャ繝繝峨せ繧ソ繝繧ッ縺ョ謗ィ螂ィ繧オ繧、繧コ +

+ +

+

+ +

+
+ + + + +
#define WDSWRAPPER_WAITPERIOD   3000
+
+
+ +

+WDS繝ゥ繝繝代シ縺後せ繧ュ繝」繝ウ繧剃クュ譁ュ縺吶k譎る俣[msec] +

+ +

+

+


蝙句ョ夂セゥ

+ +
+
+ + + + +
typedef void*( * WDSWrapperAlloc)(u32 size)
+
+
+ +

+WDS繝ゥ繝繝代シ蜀驛ィ縺ァ菴ソ逕ィ縺吶k繧「繝ュ繧ア繝シ繧ソ繝シ蝙 +

+ +

+

+ +

+
+ + + + +
typedef void( * WDSWrapperCallbackFunc)(void *arg)
+
+
+ +

+WDSWrapper繝ゥ繧、繝悶Λ繝ェ縺御スソ逕ィ縺吶k繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー蝙 +

+

隕壹∴譖ク縺:
繝サ蠑墓焚arg縺ッ蠢縺啗DSWrapperCallback蝙句、画焚縺ク縺ョ繝昴う繝ウ繧ソ
+ +
+

+ +

+
+ + + + +
typedef void( * WDSWrapperFree)(void *ptr)
+
+
+ +

+WDS繝ゥ繝繝代シ蜀驛ィ縺ァ菴ソ逕ィ縺吶k繧「繝ュ繧ア繝シ繧ソ繝シ蝙 +

+ +

+

+


蛻玲嫌蝙

+ +
+
+ + + + +
enum WDSWrapperCallback
+
+
+ +

+繧ウ繝シ繝ォ繝舌ャ繧ッ逋コ逕溯ヲ∝屏繧偵≠繧峨o縺吝玲嫌蝙 +

+

蛻玲嫌蝙九ョ蛟、:
+ + + + + + +
WDSWRAPPER_CALLBACK_INITIALIZE  +WDS_WrapperInitialize髢「謨ー縺ォ繧医k繧ウ繝シ繝ォ繝舌ャ繧ッ
WDSWRAPPER_CALLBACK_CLEANUP  +WDS_WrapperCleanup髢「謨ー縺ォ繧医k繧ウ繝シ繝ォ繝舌ャ繧ッ
WDSWRAPPER_CALLBACK_STARTSCAN  +WDS_WrapperStartScan髢「謨ー縺ォ繧医k繧ウ繝シ繝ォ繝舌ャ繧ッ
WDSWRAPPER_CALLBACK_STARTSCAN2  +WDS_WrapperStartScan髢「謨ー縺ォ繧医k繧ウ繝シ繝ォ繝舌ャ繧ッ(髢捺ャ繧ケ繧ュ繝」繝ウ1蝗樒オゆコ)
WDSWRAPPER_CALLBACK_STOPSCAN  +WDS_WrapperStopScan髢「謨ー縺ォ繧医k繧ウ繝シ繝ォ繝舌ャ繧ッ
+
+ +
+

+ +

+
+ + + + +
enum WDSWrapperErrCode
+
+
+ +

+蜃ヲ逅邨先棡繧偵≠繧峨o縺吝玲嫌蝙 +

+

蛻玲嫌蝙九ョ蛟、:
+ + + + + + +
WDSWRAPPER_ERRCODE_SUCCESS  +蜃ヲ逅謌仙粥
WDSWRAPPER_ERRCODE_FAILURE  +蜃ヲ逅螟ア謨
WDSWRAPPER_ERRCODE_OPERATING  +蜃ヲ逅螳溯。御クュ
WDSWRAPPER_ERRCODE_INITIALIZED  +WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ蛻晄悄蛹匁ク医∩
WDSWRAPPER_ERRCODE_UNINITIALIZED  +WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ譛ェ蛻晄悄蛹
+
+ +
+

+ +

+
+ + + + +
enum WDSWrapperStateThreadState
+
+
+ +

+WDS繝ゥ繝繝代シ縺ョ縺ョ繧ケ繝繝シ繝医r縺ゅi繧上☆蛻玲嫌蝙 +

+

蛻玲嫌蝙九ョ蛟、:
+ + + + + + + + + + + + +
WDSWRAPPER_STATE_BEFOREINIT  +蛻晄悄蛹夜幕蟋句セ縺。繧ケ繝繝シ繝
WDSWRAPPER_STATE_INIT  +蛻晄悄蛹夜幕蟋九せ繝繝シ繝
WDSWRAPPER_STATE_WAITINIT  +蛻晄悄蛹門ョ御コ蠕縺。繧ケ繝繝シ繝
WDSWRAPPER_STATE_SCAN  +繧ケ繧ュ繝」繝ウ髢句ァ九せ繝繝シ繝
WDSWRAPPER_STATE_WAITSCAN  +繧ケ繧ュ繝」繝ウ螳御コ蠕縺。繧ケ繝繝シ繝
WDSWRAPPER_STATE_ENDSCAN  +繧ケ繧ュ繝」繝ウ荳ュ譁ュ繧ケ繝繝シ繝
WDSWRAPPER_STATE_WAITENDSCAN  +繧ケ繧ュ繝」繝ウ荳ュ譁ュ螳御コ蠕縺。繧ケ繝繝シ繝
WDSWRAPPER_STATE_END  +WDS隗」謾セ髢句ァ九せ繝繝シ繝
WDSWRAPPER_STATE_WAITEND  +WDS隗」謾セ螳御コ蠕縺。繧ケ繝繝シ繝
WDSWRAPPER_STATE_IDLE  +繧「繧、繝峨Ν繧ケ繝繝シ繝
WDSWRAPPER_STATE_TERMINATE  +WDS繝ゥ繝繝代シ隗」謾セ繧ケ繝繝シ繝
+
+ +
+

+


髢「謨ー

+ +
+
+ + + + + + + + + +
WDSWrapperErrCode WDS_WrapperCheckThreadRunning (void   ) 
+
+
+ +

+WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨′螳溯。御クュ縺狗「コ隱阪@縺セ縺

蠑墓焚:
+ + +
縺ェ縺 
+
+
謌サ繧雁、:
WDSWRAPPER_ERRCODE_SUCCESS: WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨′螳溯。御クュ

+WDSWRAPPER_ERRCODE_FAILURE: WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨ッ蛛懈ュ「縺励※縺繧

+WDSWRAPPER_ERRCODE_UNINITIALIZED: WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ縺悟晄悄蛹悶&繧後※縺縺ェ縺

+ +
+

+ +

+
+ + + + + + + + + +
WDSWrapperErrCode WDS_WrapperCheckValidBeacon (void   ) 
+
+
+ +

+逶エ蜑阪↓螳御コ縺励◆髢捺ャ蜿嶺ソ。縺ァ譛牙柑縺ェ隕ェ讖溘ン繝シ繧ウ繝ウ繧貞女縺大叙縺」縺溘°遒コ隱阪@縺セ縺

蠑墓焚:
+ + +
縺ェ縺 
+
+
謌サ繧雁、:
WDSWRAPPER_ERRCODE_SUCCESS: 逶エ蜑阪↓螳御コ縺励◆髢捺ャ蜿嶺ソ。縺ァ譛牙柑縺ェ隕ェ讖溘ン繝シ繧ウ繝ウ繧貞女縺大叙縺」縺

+WDSWRAPPER_ERRCODE_FAILURE: 逶エ蜑阪↓螳御コ縺励◆髢捺ャ蜿嶺ソ。縺ァ譛牙柑縺ェ隕ェ讖溘ン繝シ繧ウ繝ウ繧貞女縺大叙縺」縺ヲ縺縺ェ縺

+WDSWRAPPER_ERRCODE_UNINITIALIZED: WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ縺悟晄悄蛹悶&繧後※縺縺ェ縺

+ +
+

+ +

+
+ + + + + + + + + +
WDSWrapperErrCode WDS_WrapperCleanup (void   ) 
+
+
+ +

+WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨r蛛懈ュ「縺励仝DS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ繧定ァ」謾セ縺励∪縺吶
+ 隗」謾セ蜃ヲ逅螳御コ縺ョ逶エ蜑阪↓繧ウ繝シ繝ォ繝舌ャ繧ッ縺檎匱逕溘@縺セ縺吶
+ 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ォ繧ィ繝ゥ繝シ縺碁夂衍縺輔l繧九%縺ィ縺ッ縺ゅj縺セ縺帙s縲

蠑墓焚:
+ + +
縺ェ縺 
+
+
謌サ繧雁、:
WDSWRAPPER_ERRCODE_SUCCESS WDS繝ゥ繝繝代シ隗」謾セ繧帝幕蟋

+WDSWRAPPER_ERRCODE_OPERATING WDS繝ゥ繝繝代シ隗」謾セ繧貞ョ溯。御クュ

+WDSWRAPPER_ERRCODE_UNINITIALIZED WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ縺悟晄悄蛹悶&繧後※縺縺ェ縺

+ +
+

+ +

+
+ + + + + + + + + +
OSThread* WDS_WrapperGetOSThread (void   ) 
+
+
+ +

+WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨′菴ソ逕ィ縺励※縺繧軌SThread縺ク縺ョ繝昴う繝ウ繧ソ繧貞セ励∪縺

蠑墓焚:
+ + +
縺ェ縺 
+
+
謌サ繧雁、:
NULL: WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ縺悟晄悄蛹悶&繧後※縺縺ェ縺

+NULL莉・螟: 螳溯。御クュ繝サ縺ゅk縺縺ッ蛛懈ュ「荳ュ縺ョOSThread縺ク縺ョ繝昴う繝ウ繧ソ

+ +
+

+ +

+
+ + + + + + + + + +
WDSWrapperErrCode WDS_WrapperInitialize (WDSWrapperInitializeParam  param  ) 
+
+
+ +

+WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ蛻晄悄蛹悶ョ髱槫酔譛溷ヲ逅繧帝幕蟋九@縺セ縺吶
+ 蛻晄悄蛹門ヲ逅螳御コ譎ゅ↓繧ウ繝シ繝ォ繝舌ャ繧ッ縺檎匱逕溘@縺セ縺吶
+ 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ァ繧ィ繝ゥ繝シ騾夂衍繧貞女縺大叙縺」縺溷エ蜷医ッ縲√Λ繧、繝悶Λ繝ェ縺瑚ェ蜍慕噪縺ォ隗」謾セ縺輔l繧九ョ繧貞セ縺」縺ヲ縺上□縺輔>縲

蠑墓焚:
+ + +
param WDS繝ゥ繝繝代シ蛻晄悄蛹悶ヱ繝ゥ繝。繝シ繧ソ
+
+
謌サ繧雁、:
WDSWRAPPER_ERRCODE_SUCCESS: 蛻晄悄蛹門ヲ逅繧帝幕蟋

+WDSWRAPPER_ERRCODE_INITIALIZED: WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ縺ッ蛻晄悄蛹匁ク医∩

+WDSWRAPPER_ERRCODE_FAILURE: 蛻晄悄蛹悶↓螟ア謨

+
隕壹∴譖ク縺:
繝サWDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨ッ逕滓千峩蠕後°繧蛾俣谺繧ケ繧ュ繝」繝ウ繧貞ョ溯。後@縺ヲ縺縺セ縺
+ +
+

+ +

+
+ + + + + + + + + +
WDSWrapperErrCode WDS_WrapperSetArgumentParam (void   ) 
+
+
+ +

+逶エ蜑阪↓螳御コ縺励◆髢捺ャ蜿嶺ソ。縺ァ蜿励¢蜿悶▲縺溘ン繝シ繧ウ繝ウ諠蝣ア繧但rgument鬆伜沺縺ォ繧サ繝繝医@縺セ縺

蠑墓焚:
+ + +
縺ェ縺 
+
+
謌サ繧雁、:
WDSWRAPPER_ERRCODE_SUCCESS: 隕ェ讖溘ン繝シ繧ウ繝ウ諠蝣ア縺窟rgument鬆伜沺縺ォ繧サ繝繝医&繧後◆

+WDSWRAPPER_ERRCODE_FAILURE: 隕ェ讖溘ン繝シ繧ウ繝ウ諠蝣ア繧但rgument鬆伜沺縺ォ繧サ繝繝医〒縺阪↑縺九▲縺

+WDSWRAPPER_ERRCODE_UNINITIALIZED: WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ縺悟晄悄蛹悶&繧後※縺縺ェ縺

+ +
+

+ +

+
+ + + + + + + + + +
WDSWrapperErrCode WDS_WrapperStartScan (void   ) 
+
+
+ +

+WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨ョ繧ケ繝繝シ繝医r髢捺ャ蜿嶺ソ。迥カ諷九↓螟画峩縺励∪縺吶
+ 繧ケ繝繝シ繝医ョ螟画峩縺ォ謌仙粥縺吶k縺ィ縲∽サ・蠕御ク蝗槭ョ髢捺ャ蜿嶺ソ。縺悟ョ御コ縺吶k縺溘ウ縺ォ繧ウ繝シ繝ォ繝舌ャ繧ッ縺悟他縺ウ蜃コ縺輔l縺セ縺吶
+ 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ァ繧ィ繝ゥ繝シ騾夂衍繧貞女縺大叙縺」縺溷エ蜷医ッ縲√Λ繧、繝悶Λ繝ェ縺瑚ェ蜍慕噪縺ォ隗」謾セ縺輔l繧九ョ繧貞セ縺」縺ヲ縺上□縺輔>縲

謌サ繧雁、:
WDSWRAPPER_ERRCODE_SUCCESS: 繧ケ繝繝シ繝亥、画峩縺ォ謌仙粥(繧ウ繝シ繝ォ繝舌ャ繧ッ逋コ逕溘r蠕縺」縺ヲ縺上□縺輔>)

+WDSWRAPPER_ERRCODE_FAILURE: 髢捺ャ蜿嶺ソ。縺ォ遘サ陦後〒縺阪k繧ケ繝繝シ繝医〒縺ェ縺(迴セ蝨ィ縺ョ繧ケ繝繝シ繝医′邯ュ謖√&繧後∪縺)

+WDSWRAPPER_ERRCIDE_OPERATING: 縺吶〒縺ォ繧ケ繝繝シ繝医′髢捺ャ蜿嶺ソ。迥カ諷

+WDSWRAPPER_ERRCODE_UNINITIALIZED: WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ縺悟晄悄蛹悶&繧後※縺縺ェ縺

+ +
+

+ +

+
+ + + + + + + + + +
WDSWrapperErrCode WDS_WrapperStopScan (void   ) 
+
+
+ +

+WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨ョ繧ケ繝繝シ繝医r髢捺ャ蜿嶺ソ。蛛懈ュ「迥カ諷九↓險ュ螳壹@縺セ縺吶
+ 髢捺ャ蜿嶺ソ。縺悟ョ滄圀縺ォ蛛懈ュ「縺励◆髫帙↓繧ウ繝シ繝ォ繝舌ャ繧ッ縺悟他縺ウ蜃コ縺輔l縺セ縺吶
+ 繧ウ繝シ繝ォ繝舌ャ繧ッ縺ァ繧ィ繝ゥ繝シ縺碁夂衍縺輔l繧九%縺ィ縺ッ縺ゅj縺セ縺帙s縲

謌サ繧雁、:
WDSWRAPPER_ERRCODE_SUCCESS: 繧ケ繝繝シ繝亥、画峩縺ォ謌仙粥

+WDSWRAPPER_ERRCIDE_OPERATING: 縺吶〒縺ォ繧ケ繝繝シ繝医′髢捺ャ蜿嶺ソ。蛛懈ュ「迥カ諷

+WDSWRAPPER_ERRCODE_UNINITIALIZED: WDS繝ゥ繝繝代シ繝ゥ繧、繝悶Λ繝ェ縺悟晄悄蛹悶&繧後※縺縺ェ縺

+
隕壹∴譖ク縺:
繧ケ繝繝シ繝亥、画峩縺瑚。後o繧後※縺九i髢捺ャ蜿嶺ソ。縺悟●豁「縺吶k縺セ縺ァ縺ォ縺ッ20ms遞句コヲ縺ョ譎る俣縺後°縺九j縺セ縺
+ +
+

+

+
WDSWrapper縺ォ蟇セ縺励※Thu Jun 26 22:00:52 2008縺ォ逕滓舌&繧後∪縺励◆縲  + +doxygen 1.5.6
+ + diff --git a/man/WDS_Wrapper/html/annotated.html b/man/WDS_Wrapper/html/annotated.html new file mode 100644 index 00000000..d0bf4d82 --- /dev/null +++ b/man/WDS_Wrapper/html/annotated.html @@ -0,0 +1,35 @@ + + +WDSWrapper: 繝繝シ繧ソ讒矩 + + + + + +
+

繝繝シ繧ソ讒矩

繝繝シ繧ソ讒矩縺ョ隱ャ譏弱〒縺吶 + + + +
WDSWrapperCallbackParamWDS繝ゥ繝繝代シ縺悟他縺ウ蜃コ縺吶さ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ォ荳弱∴繧峨l繧句シ墓焚逕ィ縺ョ讒矩菴
WDSWrapperInitializeParamWDS_WrapperInitialize髢「謨ー縺ォ荳弱∴繧句晄悄蛹悶ヱ繝ゥ繝。繝シ繧ソ
WDSWrapperWorkWDS繝ゥ繝繝代シ縺ョ繝ッ繝シ繧ッ鬆伜沺
+
+
WDSWrapper縺ォ蟇セ縺励※Thu Jun 26 22:00:52 2008縺ォ逕滓舌&繧後∪縺励◆縲  + +doxygen 1.5.6
+ + diff --git a/man/WDS_Wrapper/html/classes.html b/man/WDS_Wrapper/html/classes.html new file mode 100644 index 00000000..e36c75a8 --- /dev/null +++ b/man/WDS_Wrapper/html/classes.html @@ -0,0 +1,34 @@ + + +WDSWrapper: 繧「繝ォ繝輔ぃ繝吶ャ繝磯荳隕ァ + + + + + +
+

繝繝シ繧ソ讒矩邏「蠑

+ +
  W  
+
WDSWrapperCallbackParam   WDSWrapperInitializeParam   WDSWrapperWork   

+

+
WDSWrapper縺ォ蟇セ縺励※Thu Jun 26 22:00:52 2008縺ォ逕滓舌&繧後∪縺励◆縲  + +doxygen 1.5.6
+ + diff --git a/man/WDS_Wrapper/html/doxygen.css b/man/WDS_Wrapper/html/doxygen.css new file mode 100644 index 00000000..22c48430 --- /dev/null +++ b/man/WDS_Wrapper/html/doxygen.css @@ -0,0 +1,473 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { + font-weight: bold +} +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navpath { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { + text-decoration: none; + background-color: #6666cc; + color: #ffffff +} +A.el { + text-decoration: none; + font-weight: bold +} +A.elRef { + font-weight: bold +} +A.code:link { + text-decoration: none; + font-weight: normal; + color: #0000FF +} +A.code:visited { + text-decoration: none; + font-weight: normal; + color: #0000FF +} +A.codeRef:link { + font-weight: normal; + color: #0000FF +} +A.codeRef:visited { + font-weight: normal; + color: #0000FF +} +A:hover { + text-decoration: none; + background-color: #f2f2ff +} +DL.el { + margin-left: -1cm +} +.fragment { + font-family: monospace, fixed; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px +} + +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { + margin-left: 16px; + font-style: italic; + font-size: 90% +} +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { + text-align: center; +} +IMG.formulaDsp { +} +IMG.formulaInl { + vertical-align: middle; +} +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +SPAN.vhdldigit { color: #ff00ff } +SPAN.vhdlchar { color: #000000 } +SPAN.vhdlkeyword { color: #700070 } +SPAN.vhdllogic { color: #ff0000 } + +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { + color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { + font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { + background: #e8eef2; + font-weight: bold; +} +HR { + height: 1px; + border: none; + border-top: 1px solid black; +} + +/* Style for detailed member documentation */ +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; + margin-left: 3px; +} +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +.memitem { + padding: 4px; + background-color: #eef3f5; + border-width: 1px; + border-style: solid; + border-color: #dedeee; + -moz-border-radius: 8px 8px 8px 8px; +} +.memname { + white-space: nowrap; + font-weight: bold; +} +.memdoc{ + padding-left: 10px; +} +.memproto { + background-color: #d5e1e8; + width: 100%; + border-width: 1px; + border-style: solid; + border-color: #84b0c7; + font-weight: bold; + -moz-border-radius: 8px 8px 8px 8px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { + color: #602020; + font-style: italic; + white-space: nowrap; +} +/* End Styling for detailed member documentation */ + +/* for the tree view */ +.ftvtree { + font-family: sans-serif; + margin:0.5em; +} +/* these are for tree view when used as main index */ +.directory { + font-size: 9pt; + font-weight: bold; +} +.directory h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +/* The following two styles can be used to replace the root node title */ +/* with an image of your choice. Simply uncomment the next two styles, */ +/* specify the name of your image and be sure to set 'height' to the */ +/* proper pixel height of your image. */ + +/* .directory h3.swap { */ +/* height: 61px; */ +/* background-repeat: no-repeat; */ +/* background-image: url("yourimage.gif"); */ +/* } */ +/* .directory h3.swap span { */ +/* display: none; */ +/* } */ + +.directory > h3 { + margin-top: 0; +} +.directory p { + margin: 0px; + white-space: nowrap; +} +.directory div { + display: none; + margin: 0px; +} +.directory img { + vertical-align: -30%; +} +/* these are for tree view when not used as main index */ +.directory-alt { + font-size: 100%; + font-weight: bold; +} +.directory-alt h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} +.directory-alt > h3 { + margin-top: 0; +} +.directory-alt p { + margin: 0px; + white-space: nowrap; +} +.directory-alt div { + display: none; + margin: 0px; +} +.directory-alt img { + vertical-align: -30%; +} + diff --git a/man/WDS_Wrapper/html/doxygen.png b/man/WDS_Wrapper/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..f0a274bbaffdd67f6d784c894d9cf28729db0e14 GIT binary patch literal 1281 zcmaJ>ZA?>F7(Vx-ms?uoS`b@hdRtpo6o^%HU>M$hfGrBvQnk$LE?p^P!kn&ikhyq! zX~V@&tPF5Qt@V?oTL96Bi%aRiwbe1)9DWQI#?)=HxS7QSw`J`5fAJ*eJbB;uNuKA& zdERDo*{Y<(If(#(B$Lr#;nB(8Y#ia=ZCeW?JfPLuQY`=@cW$k}Rivq|vbxGrRq1Tl9;+(gNt?}UtVKM2`T5t1jLzuL@0UIs`S#vlhl4)^ zLgSYrPj@$+`|j?eSbXTmiHGkWxV8V}BzNR?pl9k_s4pDu9vd5a_UzZEPk)}Ad{AV_ zzddrjrh4=Imr`E06;LY{)YYt?o}L~H@7C}F^WB!Ra=v`Q0bj{>5&$66CWF>mf6vjP z2N>RRY6ZYa=K`76>+|_)Xdwko+7wv}7cN|btOhWb(*{sta~6b?S8Omrxw}!4`NhGr zZVpNqpu1@BE`QGWNTpEpcJVW5izu~2B^GlM?1(OPg)zwW;QcP@Ltcclm>XbJL9C|j z=9!2?ua=uIlf0%AndzHsRC}IyTL$EhAee(fdKB`?27KeS^2M8M_7b~PiCFO&r5LC7 z7gl1*a<8;SjNaw#h=843_AV9iZbWQOAp5YOC^&_F*9K0> zB|6%IDb?aM#3viTxkLU4aXg&@+CkNTOnQ1iMP*^?b|^lJy$4C)Zk4isV!|RZ*XhXh zw8q3$=*0LeGC!XI_Wc?dkT~3+*Gu%%yIqP+Wr3H$=&ROMQU6q}Ag^P~>c5vAEO;a- z_dK-3PPeKar%)6$j~vI2#*-YH!1h6HYVtwCX5_wM`iF#UKz&&@9Oo5w3%XGYrX zW>dY~)SG-((Yim%`InwgTvyRC?e=Wh^8KCao!R6Eg&TpVWUY1sN~4G}V?nFnEGo-; zHZ_$eW9-GnC%^WS9b z@p;-$oH#MtC0v>Q$HX%4^JdFdO$0cbv-W)Q TtK}Eh@>>I#ipmV1>S*>q-hkC} literal 0 HcmV?d00001 diff --git a/man/WDS_Wrapper/html/files.html b/man/WDS_Wrapper/html/files.html new file mode 100644 index 00000000..ece15a67 --- /dev/null +++ b/man/WDS_Wrapper/html/files.html @@ -0,0 +1,33 @@ + + +WDSWrapper: 繝輔ぃ繧、繝ォ邏「蠑 + + + + + +
+

繝輔ぃ繧、繝ォ荳隕ァ

縺薙l縺ッ繝輔ぃ繧、繝ォ荳隕ァ縺ァ縺吶 + + +
include/WDSWrapper.h
src/WDSWrapper.cWDS繝ゥ繧、繝悶Λ繝ェ縺ョ繝ゥ繝繝代シ
+
+
WDSWrapper縺ォ蟇セ縺励※Thu Jun 26 22:00:52 2008縺ォ逕滓舌&繧後∪縺励◆縲  + +doxygen 1.5.6
+ + diff --git a/man/WDS_Wrapper/html/functions.html b/man/WDS_Wrapper/html/functions.html new file mode 100644 index 00000000..b38249c8 --- /dev/null +++ b/man/WDS_Wrapper/html/functions.html @@ -0,0 +1,79 @@ + + +WDSWrapper: 繝繝シ繧ソ繝輔ぅ繝シ繝ォ繝 + + + + + +
+縺薙l縺ッ繝輔ぅ繝シ繝ォ繝峨ョ荳隕ァ縺ァ縺昴l縺槭l縺悟ア槭@縺ヲ縺繧区ァ矩菴/蜈ア逕ィ菴薙ョ隱ャ譏弱∈繝ェ繝ウ繧ッ縺励※縺縺セ縺吶 +

+

+
+
WDSWrapper縺ォ蟇セ縺励※Thu Jun 26 22:00:52 2008縺ォ逕滓舌&繧後∪縺励◆縲  + +doxygen 1.5.6
+ + diff --git a/man/WDS_Wrapper/html/functions_vars.html b/man/WDS_Wrapper/html/functions_vars.html new file mode 100644 index 00000000..180a2643 --- /dev/null +++ b/man/WDS_Wrapper/html/functions_vars.html @@ -0,0 +1,79 @@ + + +WDSWrapper: 繝繝シ繧ソ繝輔ぅ繝シ繝ォ繝 - 螟画焚 + + + + + +
+  +

+

+
+
WDSWrapper縺ォ蟇セ縺励※Thu Jun 26 22:00:52 2008縺ォ逕滓舌&繧後∪縺励◆縲  + +doxygen 1.5.6
+ + diff --git a/man/WDS_Wrapper/html/globals.html b/man/WDS_Wrapper/html/globals.html new file mode 100644 index 00000000..6fd7686f --- /dev/null +++ b/man/WDS_Wrapper/html/globals.html @@ -0,0 +1,132 @@ + + +WDSWrapper: 繝繝シ繧ソ繝輔ぅ繝シ繝ォ繝 + + + + + +
+縺薙l縺ッ髢「謨ー縲∝、画焚縲√槭け繝ュ縲・num縲ゝypedef 縺ョ荳隕ァ縺ァ縺吶ゅ◎繧後◇繧後′螻槭@縺ヲ縺繧九ヵ繧。繧、繝ォ縺ョ隱ャ譏弱∈繝ェ繝ウ繧ッ縺励※縺縺セ縺吶 +

+

- w -

+
+
WDSWrapper縺ォ蟇セ縺励※Thu Jun 26 22:00:52 2008縺ォ逕滓舌&繧後∪縺励◆縲  + +doxygen 1.5.6
+ + diff --git a/man/WDS_Wrapper/html/globals_defs.html b/man/WDS_Wrapper/html/globals_defs.html new file mode 100644 index 00000000..76b3697d --- /dev/null +++ b/man/WDS_Wrapper/html/globals_defs.html @@ -0,0 +1,49 @@ + + +WDSWrapper: 繝繝シ繧ソ繝輔ぅ繝シ繝ォ繝 + + + + + +
+  +

+

+
+
WDSWrapper縺ォ蟇セ縺励※Thu Jun 26 22:00:52 2008縺ォ逕滓舌&繧後∪縺励◆縲  + +doxygen 1.5.6
+ + diff --git a/man/WDS_Wrapper/html/globals_enum.html b/man/WDS_Wrapper/html/globals_enum.html new file mode 100644 index 00000000..74f036b9 --- /dev/null +++ b/man/WDS_Wrapper/html/globals_enum.html @@ -0,0 +1,49 @@ + + +WDSWrapper: 繝繝シ繧ソ繝輔ぅ繝シ繝ォ繝 + + + + + +
+  +

+

+
+
WDSWrapper縺ォ蟇セ縺励※Thu Jun 26 22:00:52 2008縺ォ逕滓舌&繧後∪縺励◆縲  + +doxygen 1.5.6
+ + diff --git a/man/WDS_Wrapper/html/globals_eval.html b/man/WDS_Wrapper/html/globals_eval.html new file mode 100644 index 00000000..1a189e5d --- /dev/null +++ b/man/WDS_Wrapper/html/globals_eval.html @@ -0,0 +1,85 @@ + + +WDSWrapper: 繝繝シ繧ソ繝輔ぅ繝シ繝ォ繝 + + + + + +
+  +

+

+
+
WDSWrapper縺ォ蟇セ縺励※Thu Jun 26 22:00:52 2008縺ォ逕滓舌&繧後∪縺励◆縲  + +doxygen 1.5.6
+ + diff --git a/man/WDS_Wrapper/html/globals_func.html b/man/WDS_Wrapper/html/globals_func.html new file mode 100644 index 00000000..c6c11670 --- /dev/null +++ b/man/WDS_Wrapper/html/globals_func.html @@ -0,0 +1,67 @@ + + +WDSWrapper: 繝繝シ繧ソ繝輔ぅ繝シ繝ォ繝 + + + + + +
+  +

+

+
+
WDSWrapper縺ォ蟇セ縺励※Thu Jun 26 22:00:52 2008縺ォ逕滓舌&繧後∪縺励◆縲  + +doxygen 1.5.6
+ + diff --git a/man/WDS_Wrapper/html/globals_type.html b/man/WDS_Wrapper/html/globals_type.html new file mode 100644 index 00000000..0041fdf2 --- /dev/null +++ b/man/WDS_Wrapper/html/globals_type.html @@ -0,0 +1,49 @@ + + +WDSWrapper: 繝繝シ繧ソ繝輔ぅ繝シ繝ォ繝 + + + + + +
+  +

+

+
+
WDSWrapper縺ォ蟇セ縺励※Thu Jun 26 22:00:52 2008縺ォ逕滓舌&繧後∪縺励◆縲  + +doxygen 1.5.6
+ + diff --git a/man/WDS_Wrapper/html/index.html b/man/WDS_Wrapper/html/index.html new file mode 100644 index 00000000..f53075a3 --- /dev/null +++ b/man/WDS_Wrapper/html/index.html @@ -0,0 +1,25 @@ + + +WDSWrapper: 繝。繧、繝ウ繝壹シ繧ク + + + + + +
+

WDSWrapper 繝峨く繝・繝。繝ウ繝

+

+

+
WDSWrapper縺ォ蟇セ縺励※Thu Jun 26 22:00:52 2008縺ォ逕滓舌&繧後∪縺励◆縲  + +doxygen 1.5.6
+ + diff --git a/man/WDS_Wrapper/html/struct_w_d_s_wrapper_callback_param.html b/man/WDS_Wrapper/html/struct_w_d_s_wrapper_callback_param.html new file mode 100644 index 00000000..4898beef --- /dev/null +++ b/man/WDS_Wrapper/html/struct_w_d_s_wrapper_callback_param.html @@ -0,0 +1,83 @@ + + +WDSWrapper: 讒矩菴 WDSWrapperCallbackParam + + + + + +
+

讒矩菴 WDSWrapperCallbackParam

WDS繝ゥ繝繝代シ縺悟他縺ウ蜃コ縺吶さ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ォ荳弱∴繧峨l繧句シ墓焚逕ィ縺ョ讒矩菴 +[隧ウ邏ー] +

+#include <WDSWrapper.h> +

+ + + + + + + + + +

螟画焚

WDSWrapperCallback callback
 繧ウ繝シ繝ォ繝舌ャ繧ッ逋コ逕溯ヲ∝屏
WDSWrapperErrCode errcode
 繧ィ繝ゥ繝シ繧ウ繝シ繝
+


隱ャ譏

+WDS繝ゥ繝繝代シ縺悟他縺ウ蜃コ縺吶さ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ォ荳弱∴繧峨l繧句シ墓焚逕ィ縺ョ讒矩菴

讒矩菴

+ +
+ +
+ +

+繧ウ繝シ繝ォ繝舌ャ繧ッ逋コ逕溯ヲ∝屏 +

+ +

+

+ +

+ +
+ +

+繧ィ繝ゥ繝シ繧ウ繝シ繝 +

+ +

+

+


縺薙ョ讒矩菴薙ョ隱ャ譏弱ッ谺。縺ョ繝輔ぃ繧、繝ォ縺九i逕滓舌&繧後∪縺励◆: +
+
WDSWrapper縺ォ蟇セ縺励※Thu Jun 26 22:00:52 2008縺ォ逕滓舌&繧後∪縺励◆縲  + +doxygen 1.5.6
+ + diff --git a/man/WDS_Wrapper/html/struct_w_d_s_wrapper_initialize_param.html b/man/WDS_Wrapper/html/struct_w_d_s_wrapper_initialize_param.html new file mode 100644 index 00000000..e998a8d8 --- /dev/null +++ b/man/WDS_Wrapper/html/struct_w_d_s_wrapper_initialize_param.html @@ -0,0 +1,143 @@ + + +WDSWrapper: 讒矩菴 WDSWrapperInitializeParam + + + + + +
+

讒矩菴 WDSWrapperInitializeParam

WDS_WrapperInitialize髢「謨ー縺ォ荳弱∴繧句晄悄蛹悶ヱ繝ゥ繝。繝シ繧ソ +[隧ウ邏ー] +

+#include <WDSWrapper.h> +

+ + + + + + + + + + + + + + + + + + +

螟画焚

u32 threadprio
 WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨ョ蜆ェ蜈亥コヲ
u16 dmano
 WM繝ゥ繧、繝悶Λ繝ェ縺御スソ逕ィ縺吶kDMA逡ェ蜿キ
WDSWrapperCallbackFunc callback
 WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨°繧牙他縺ウ蜃コ縺輔l繧九さ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ク縺ョ繝昴う繝ウ繧ソ
WDSWrapperAlloc alloc
 WDS繝ゥ繝繝代シ縺御スソ逕ィ縺吶k繧「繝ュ繧ア繝シ繧ソ
WDSWrapperFree free
 WDS繝ゥ繝繝代シ縺御スソ逕ィ縺吶k繧「繝ュ繧ア繝シ繧ソ
+


隱ャ譏

+WDS_WrapperInitialize髢「謨ー縺ォ荳弱∴繧句晄悄蛹悶ヱ繝ゥ繝。繝シ繧ソ

讒矩菴

+ +
+ +
+ +

+WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨ョ蜆ェ蜈亥コヲ +

+ +

+

+ +

+ +
+ +

+WM繝ゥ繧、繝悶Λ繝ェ縺御スソ逕ィ縺吶kDMA逡ェ蜿キ +

+ +

+

+ +

+ +
+ +

+WDS繧ウ繝ウ繝医Ο繝シ繝ォ繧ケ繝ャ繝繝峨°繧牙他縺ウ蜃コ縺輔l繧九さ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ク縺ョ繝昴う繝ウ繧ソ +

+ +

+

+ +

+ +
+ +

+WDS繝ゥ繝繝代シ縺御スソ逕ィ縺吶k繧「繝ュ繧ア繝シ繧ソ +

+ +

+

+ +

+ +
+ +

+WDS繝ゥ繝繝代シ縺御スソ逕ィ縺吶k繧「繝ュ繧ア繝シ繧ソ +

+ +

+

+


縺薙ョ讒矩菴薙ョ隱ャ譏弱ッ谺。縺ョ繝輔ぃ繧、繝ォ縺九i逕滓舌&繧後∪縺励◆: +
+
WDSWrapper縺ォ蟇セ縺励※Thu Jun 26 22:00:52 2008縺ォ逕滓舌&繧後∪縺励◆縲  + +doxygen 1.5.6
+ + diff --git a/man/WDS_Wrapper/html/struct_w_d_s_wrapper_work.html b/man/WDS_Wrapper/html/struct_w_d_s_wrapper_work.html new file mode 100644 index 00000000..bd765b73 --- /dev/null +++ b/man/WDS_Wrapper/html/struct_w_d_s_wrapper_work.html @@ -0,0 +1,301 @@ + + +WDSWrapper: 讒矩菴 WDSWrapperWork + + + + + +
+

讒矩菴 WDSWrapperWork

WDS繝ゥ繝繝代シ縺ョ繝ッ繝シ繧ッ鬆伜沺 +[隧ウ邏ー] +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

螟画焚

u8 * stack
 WDS繝ゥ繝繝代シ縺御スソ逕ィ縺吶k繧ケ繧ソ繝繧ッ
OSThread thread
 WDS繝ゥ繝繝代シ縺御スソ逕ィ縺吶k繧ケ繝ャ繝繝画ァ矩菴
OSMutex mutex
 WDS繝ゥ繝繝代シ縺御スソ逕ィ縺吶kmutex
u8 * wdswork
 WDS縺御スソ逕ィ縺吶k繝ッ繝シ繧ッ繧ィ繝ェ繧「
WDSBriefApInfo briefapinfo [WDS_APINFO_MAX]
 WDS繝ゥ繝繝代シ縺係DS繧剃スソ逕ィ縺励◆邨先棡繧呈シ邏阪☆繧矩伜沺
int briefapinfonum
 WDS繝ゥ繝繝代シ縺係DS繧剃スソ逕ィ縺励◆邨先棡繧呈シ邏阪☆繧矩伜沺
WDSWrapperInitializeParam initparam
 蛻晄悄蛹匁凾繝代Λ繝。繝シ繧ソ縺ョ繧ウ繝斐シ
WDSWrapperStateThreadState state
 WDS繝ゥ繝繝代シ縺ョ繧ケ繝繝シ繝
OSTick tickstart
 蜷遞ョ譎る俣貂ャ螳夂畑
BOOL terminate
 隗」謾セ髢句ァ九ヵ繝ゥ繧ー
BOOL idle
 髢捺ャ繧ケ繧ュ繝」繝ウ荳ュ譁ュ繝輔Λ繧ー
BOOL restart
 髢捺ャ繧ケ繧ュ繝」繝ウ蜀埼幕繝輔Λ繧ー
OSDeliverArgInfo deliverinfo
 TWL逕ィ繧「繝励Μ髢灘シ墓焚繝ッ繝シ繧ッ繧ィ繝ェ繧「
+


隱ャ譏

+WDS繝ゥ繝繝代シ縺ョ繝ッ繝シ繧ッ鬆伜沺

讒矩菴

+ +
+
+ + + + +
u8* WDSWrapperWork::stack
+
+
+ +

+WDS繝ゥ繝繝代シ縺御スソ逕ィ縺吶k繧ケ繧ソ繝繧ッ +

+ +

+

+ +

+
+ + + + +
OSThread WDSWrapperWork::thread
+
+
+ +

+WDS繝ゥ繝繝代シ縺御スソ逕ィ縺吶k繧ケ繝ャ繝繝画ァ矩菴 +

+ +

+

+ +

+
+ + + + +
OSMutex WDSWrapperWork::mutex
+
+
+ +

+WDS繝ゥ繝繝代シ縺御スソ逕ィ縺吶kmutex +

+ +

+

+ +

+
+ + + + +
u8* WDSWrapperWork::wdswork
+
+
+ +

+WDS縺御スソ逕ィ縺吶k繝ッ繝シ繧ッ繧ィ繝ェ繧「 +

+ +

+

+ +

+
+ + + + +
WDSBriefApInfo WDSWrapperWork::briefapinfo[WDS_APINFO_MAX]
+
+
+ +

+WDS繝ゥ繝繝代シ縺係DS繧剃スソ逕ィ縺励◆邨先棡繧呈シ邏阪☆繧矩伜沺 +

+ +

+

+ +

+ +
+ +

+WDS繝ゥ繝繝代シ縺係DS繧剃スソ逕ィ縺励◆邨先棡繧呈シ邏阪☆繧矩伜沺 +

+ +

+

+ +

+ +
+ +

+蛻晄悄蛹匁凾繝代Λ繝。繝シ繧ソ縺ョ繧ウ繝斐シ +

+ +

+

+ +

+ +
+ +

+WDS繝ゥ繝繝代シ縺ョ繧ケ繝繝シ繝 +

+ +

+

+ +

+
+ + + + +
OSTick WDSWrapperWork::tickstart
+
+
+ +

+蜷遞ョ譎る俣貂ャ螳夂畑 +

+ +

+

+ +

+
+ + + + +
BOOL WDSWrapperWork::terminate
+
+
+ +

+隗」謾セ髢句ァ九ヵ繝ゥ繧ー +

+ +

+

+ +

+
+ + + + +
BOOL WDSWrapperWork::idle
+
+
+ +

+髢捺ャ繧ケ繧ュ繝」繝ウ荳ュ譁ュ繝輔Λ繧ー +

+ +

+

+ +

+
+ + + + +
BOOL WDSWrapperWork::restart
+
+
+ +

+髢捺ャ繧ケ繧ュ繝」繝ウ蜀埼幕繝輔Λ繧ー +

+ +

+

+ +

+
+ + + + +
OSDeliverArgInfo WDSWrapperWork::deliverinfo
+
+
+ +

+TWL逕ィ繧「繝励Μ髢灘シ墓焚繝ッ繝シ繧ッ繧ィ繝ェ繧「 +

+ +

+

+


縺薙ョ讒矩菴薙ョ隱ャ譏弱ッ谺。縺ョ繝輔ぃ繧、繝ォ縺九i逕滓舌&繧後∪縺励◆: +
+
WDSWrapper縺ォ蟇セ縺励※Thu Jun 26 22:00:52 2008縺ォ逕滓舌&繧後∪縺励◆縲  + +doxygen 1.5.6
+ + diff --git a/man/WDS_Wrapper/html/tab_b.gif b/man/WDS_Wrapper/html/tab_b.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d623483ffdf5f9f96900108042a7ab0643fe2a3 GIT binary patch literal 35 ncmZ?wbhEHbWMp7uXkcJy*>IeJfk6j|fqX^=1|}vKMh0sDa2W*H literal 0 HcmV?d00001 diff --git a/man/WDS_Wrapper/html/tab_l.gif b/man/WDS_Wrapper/html/tab_l.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b1e6337c9299a700401a2a78a2c6ffced475216 GIT binary patch literal 706 zcmZ?wbhEHbZT`}F1e&(Gg}Y(8=I;HA5#Z$3JI=gGB)FQ#odI(O&E^@q;x zK6mr*m3xOS-#u~t!I@i+u0DKm^U160k6t`|^WpV}&n+8{U%dD9&a>B#U%!9-@yol< zU%&tQ{rk_K|NsC0`}dE5ET99@1@a36+kb~?0UJ*yc&I3X_m z!ND^5$O7$#8OFRuDhG}!?8z?cdZK&!`PWjdR;Aj^wZ` zeK{IEYHBJ)6K8VIp1`BVt++swf6j+=L{p1*nO(VhE`pFexG@5$|>uaCcd z`0m=9m+yak{QmXN#Sc$^{$X9h9&q2jiKAI|&T)a;PPx2K9p`YIdw8HtR5k2Q$2-O2 z*;3y{MQ-RnJTgJfI&R5|O)AHxDf_00XbPvDZPy4t=hHd)nfLPvms&O`Ok(sD()5v$ z5U@&h;a=#xbxVbo2~X&Xj0Ie(f{v>vERH+qC+nTG=B8Nca=wU-O$?1&vUgV~9=!H; zx>3p9Yn%*<>t~sk+&0xfyS8RsPfYBd<~wWK%j-LmpU>O7yX^h#UCp1x-p#i7@bE;py8XI6 zmY<)m>~)W~yIWcMVoiPg{duuf<*)9qZ9l$m*Ph&W&$jlv*Vpa+{pH@n=IQ$L?0$ax ec60Ul|8o2P|NVbd{6P)#weSbE3}s?04AuZvx_~SI literal 0 HcmV?d00001 diff --git a/man/WDS_Wrapper/html/tab_r.gif b/man/WDS_Wrapper/html/tab_r.gif new file mode 100644 index 0000000000000000000000000000000000000000..ce9dd9f533cb5486d6941844f442b59d4a9e9175 GIT binary patch literal 2585 zcmbV}`9Bkk1ILFF--w5zJc=ZZT(zjE=;2|_S)Qm~rCWz1Pc)KPl;jv%A#&v2*x}yc zmf2~Jm~&=xjJY?PqwIN}f8qQ2{r$uH{c*nJbmr{cR5??*egHrs-B=MzCF`3%e{FAW z{oL5xTHn~5TM{jaB;@|_Ue5F&Zb@p(kMyG{*;gWDg zyeL|eZf7Qd8=#bXzSiR{yzRgLSj-fJS8>lBjVHN z^o-0eS=nE6a`W;LChBs=`+QAJP~{b93>H^eRb5kCSC1zUNezun%`L5M?RDzv#%jk7 zYVRX=vATPD`+oEfum^{RM@GjuP?-r=yh0!p;Vx^T9G7~`7%5ydH%70=jyJ;;`d;hv92x3R=z{xp+Lg2!*@OK*K15-t&okoPtSED)h&$RLxdbA zseWm^C3d%-yRNi-ryk^!ek+C`n&~cd$#ZWct_cUL{l~i+Nzx^5d!n94(>bW-iL~Rl z&8r)?q|1DIo=0=judQ{FaGcfLERz8gfn3-Qt<2lksh{mzpT}DXxUuR^z=^key&q4! z+wWI45vL0k$R^(F#{qfqhUsN@WA+w-V?LPH33!Q?WFSB3)WBojE@hK41Nb?KfS+Qo zXgrzfsP$wr4Qzy*{OD>uJBjdgGM@VMml5)2f~_}lD*YyOb}Hjeobhz#4c`w(l^>KK zr?Ud;W~Z}*w;%hZ|2^p^+f06gJDJQD zeIhGADbDmm&6arh(q>EZ<7mjzg7l|z$hRL8=1>)Nv=S7CY$B}iYJ&*T_-T_OG*L1q ztZ3Lana33?y3AKnyq^YCF|4x%Rb5WU&2qcl{TFKey%QJeMxn^SdT!hZ5+0i1zeusiYVp-phBl7b5+Px-X&LhByq z0F&<;K0l2+v>qiHlXb#$jXMv$uK-dEGE9L~qtdU(XeRXmvu*K2Q&6!fD**JxYP4b4BR7FdJ$Qx9G9`J%-_X!a#LGpp3g9)VWytGCa;7`S1_e8F~!R+aSJ zOF17p2`H?2kPs8Q`_;U}+D%3p zs2-0BTqFwpUoBk`?P;iPQ(IbEA|JmMx!P&YYG|R@S=5Mnw;-?A6rEEVyV%d7{iU4a zNk`i!%F(Ykpm`}#oH;BjY->@b8vQedv;pza2FL&*6ufjd+*3Ute&>kes~TU?^KkojsTh(o~(3tk1Y6>4(yn( z#U*ID9@eg-beKo1B;HXe+}{Z%n@7m0+yxivuqk9~;!1LGQlah)xYK4>wgL}l6dsaN zIxlRlq`*`j9PG4*0hD6YV_b_2w5b#)o7J?`q#{GjvvKlD`T*dWcZx<-s(ZvLB44E# z=!|sw!?)@%y$oRNL#25WS3lzdii}TuQ3?CLnvQ1_n};2sT_;Y;#d3=+-(O% zMN$>O!3;ke(UuLR%h_&)N zs^!-@A>QR}4yB1bPp`9S19ikTbZ~O{&FF-yHK{En;mmShDUIEw03`j(DBIsM}Rjki2J#SQa3gFZTKBPDeIiLt9Z z%bL3(B@Qw%(B`wSMS~dPh$=R`(}lBoFXKy(s|*{#ru$wjsBc_O#zxNk9w+UUHmx(U zmJ8+M+ndtnZ<7|VU9Mbt61zpo9T&3%Wx&XII=#QJxjR`CZf22ac3d51Z?GD%LEe_&*t46Qf;4`bZ7p2K(Ab5>GfT^}4! zBT&HZD`^PEgWoI&{~o-ID0F?O`75sm(87x%A{(}Ch1)QlzdJ)1B-eqe5a(weg0`4lQIf1evjvbBY50DVbzO7CLf|vP z2#0(U-|jZ`H{y5N^o7%iK6H>_HEGN->U6^!)1{XpJV!!4(Ig7wzZQ*9WYF4X1rG0x z=1uA@i`rIAciubDC{;~b(|&|A@xkjRP5aRcvRU9tvIm}jDB6J eQ0-6-y)mpwdT=ayS0tBxKDA*~;EWmo literal 0 HcmV?d00001 diff --git a/man/WDS_Wrapper/html/tabs.css b/man/WDS_Wrapper/html/tabs.css new file mode 100644 index 00000000..95f00a91 --- /dev/null +++ b/man/WDS_Wrapper/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI.current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI.current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.navpath +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +}