TwlIPL/include/sysmenu/WDSWrapper.h
yosiokat d7e3961a3a WDSライブラリを20080806受領版に更新。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2119 b08762b0-b915-fc4b-9d8c-17b2551a87ff
2008-08-06 12:12:47 +00:00

140 lines
4.7 KiB
C

//**********************************************************************
//
// @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 <sysmenu/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 );
#ifdef SDK_TWL
WDSWrapperErrCode WDS_WrapperSetArgumentParam( void );
#endif
WDSWrapperErrCode WDS_WrapperCheckThreadRunning( void );
OSThread *WDS_WrapperGetOSThread( void );
#ifdef __cplusplus
}
#endif
#endif //EOF __WDSWRAPPER_H__