//********************************************************************** // // @file WDS.h // @brief 店頭親機がMP送信する接続先AP情報を受信 // // @author M.Okuno // @date 2008/02/05 // @version 01.00 // //*********************************************************************/ #ifndef __WDS_H__ #define __WDS_H__ #ifdef __cplusplus extern "C" { #endif //----------------------------------------------------- // Include //----------------------------------------------------- #ifdef SDK_TWL #include #else #include #endif //----------------------------------------------------- // Macros //----------------------------------------------------- /** @brief デバッグ表示指定 */ //#define WDS_DEBUGPRINT /** @brief ホットスポット名エンコード情報 */ #define WDS_HOTSPOT_ENCODE_UTF8 0x0000 ///< UTF-8 #define WDS_HOTSPOT_ENCODE_UTF16 0x1000 ///< UTF-16 #define WDS_HOTSPOT_ENCODE_MASK 0xF000 ///< マスク /** @brief ホットスポット業者識別 */ #define WDS_HOTSPOT_TYPE_MASK 0x0FFF ///< マスク /** @brief ビーコン内容バッファサイズ */ #define WDS_SSID_BUF_SIZE 32 ///< SSID #define WDS_APNUM_BUF_SIZE 10 ///< AP番号 #define WDS_HOTSPOTNAME_BUF_SIZE 24 ///< ホットスポット名 #define WDS_HOTSPOTNAME_UTF16_BUF_SIZE WDS_HOTSPOTNAME_BUF_SIZE + 2 ///< 変換後のホットスポット名 #define WDS_MACADDR_BUF_SIZE 6 ///< MACアドレス #define WDS_WEPKEY_BUF_SIZE 32 ///< WEPキー(あるいはWPA Preshared Key) /** @brief 親機AP情報保持最大数 */ #define WDS_APINFO_MAX 4 /** @brief 親機情報フラグ定義 */ #define WDS_INFOFLAG_NOTIFY (0x01) ///< 通知フラグ #define WDS_INFOFLAG_ALLOWAUTOCONNECT (0x01 << 1) ///< インターネットフルアクセス可能フラグ //----------------------------------------------------- // Types //----------------------------------------------------- /** @brief WDSライブラリが使用するコールバック関数型 */ typedef void (*WDSCallbackFunc)(void *arg); //----------------------------------------------------- // Structs //----------------------------------------------------- /** @brief 親機から送られてくるAPビーコン */ typedef struct WDSApInfo { u8 ssid[ WDS_SSID_BUF_SIZE ]; ///< 親機が接続するAPのSSID u8 apnum[ WDS_APNUM_BUF_SIZE ]; ///< Wi-FiステーションのAPのSSIDに埋め込まれているAP識別番号と同等の文字列 u16 hotspotid; ///< ホットスポットの認証方式を示すフラグ+hotspotnameのエンコード情報 u8 hotspotname[ WDS_HOTSPOTNAME_BUF_SIZE ]; ///< UTF-8あるいはUTF-16で記述されたホットスポットの名前 u8 wepkey[ WDS_WEPKEY_BUF_SIZE ]; ///< 親機が接続するAPのWEP キー u8 channel; ///< 親機が接続したAPが使っているチャンネル u8 encryptflag; ///< AP接続時にNitroWiFiが使う暗号化方式 u8 infoflag; ///< 親機の接続するネットの特性を記録するフラグ領域 u8 reserve[ 5 ]; ///< 予約領域 u16 mtu; ///< 使用可能なMTU u16 crc; ///< CRC } WDSApInfo; /** @brief アプリケーションが参照するAPビーコン構造体 */ typedef struct WDSBriefApInfo { // WDSライブラリによって生成される値 BOOL isvalid; ///< apinfoに有効な値が代入されていればTRUE u16 rssi; ///< 電波強度 WDSApInfo apinfo; ///< 親機から送られてくるAPビーコン } WDSBriefApInfo; //----------------------------------------------------- // Prototypes //----------------------------------------------------- //-------------------------------------------------------------------------------- /** WDSライブラリが使用するワークエリアのサイズを得ます @return 0 以外 : ワークエリアのサイズ @note ライブラリ初期化時に使用します *///------------------------------------------------------------------------------ size_t WDS_GetWorkAreaSize( void ); //-------------------------------------------------------------------------------- /** WDSを初期化します @param <1> 呼び出し元によって確保されたバッファへのポインタを指定します @param <2> 処理が完了した際に呼び出されるコールバック関数へのポインタ @param <3> WM_InitializeのdmaNoに準ずる引数 @return 0 : 成功 ( コールバックを待つこと ) 0 以外 : 失敗 @note <1> のサイズはWDS_SYSTEM_BUF_SIZEだけ必要であり、 かつ 32バイトアラインされている必要があります。 <2> のコールバックは割り込みハンドラ内から呼び出されます。 WDS 関連のコールバック関数内では呼び出せません。 関数内部でWM_Initialize()を実行する為、WMはREADYステートからIDLEステートに移行します。 *///------------------------------------------------------------------------------ int WDS_Initialize( void *wdsWork, WDSCallbackFunc callback, u16 dmaNo ); //-------------------------------------------------------------------------------- /** WDSを初期化します(指定したスキャン結果を内部的に保持した状態での初期化) @param <1> 呼び出し元によって確保されたバッファへのポインタを指定します @param <2> 処理が完了した際に呼び出されるコールバック関数へのポインタ @param <3> WM_InitializeのdmaNoに準ずる引数 @param <4> 事前にWDSを使用して取得したWDSBriefInfoの配列 @return 0 : 成功 ( コールバックを待つこと ) 0 以外 : 失敗 @note <1> のサイズはWDS_SYSTEM_BUF_SIZEだけ必要であり、 かつ 32バイトアラインされている必要があります。 <2> のコールバックは割り込みハンドラ内から呼び出されます。 WDS 関連のコールバック関数内では呼び出せません。 関数内部でWM_Initialize()を実行する為、WMはREADYステートからIDLEステートに移行します。 *///------------------------------------------------------------------------------ int WDS_InitializeEx( void *wdsWork, WDSCallbackFunc callback, u16 dmaNo, WDSBriefApInfo *apinfo ); //-------------------------------------------------------------------------------- /** WDSを終了します @param <1> 処理が完了した際に呼び出されるコールバック関数へのポインタ @return 0 : 成功 ( コールバックを待つこと ) 0 以外 : 失敗 @note <1> のコールバックは割り込みハンドラ内から呼び出されます。 WDS 関連のコールバック関数内では呼び出せません。 *///------------------------------------------------------------------------------ int WDS_End( WDSCallbackFunc callback ); //-------------------------------------------------------------------------------- /** DS配信システム親機ビーコンのスキャンを開始します @param <1> 処理が完了した際に呼び出されるコールバック関数へのポインタ @return 0 : 成功 ( コールバックを待つこと ) 0 以外 : 失敗 @note <1> のコールバックは割り込みハンドラ内から呼び出されます。 WDS 関連のコールバック関数内では呼び出せません。 関数内部でWM_StartScane()を実行する為、WMはIDLEステートの場合はSCANステートに移行します。 *///------------------------------------------------------------------------------ int WDS_StartScan( WDSCallbackFunc callback ); //-------------------------------------------------------------------------------- /** DS配信システム親機ビーコンのスキャンを終了します @param <1> 処理が完了した際に呼び出されるコールバック関数へのポインタ @return 0 : 成功 ( コールバックを待つこと ) 0 以外 : 失敗 @note <1> のコールバックは割り込みハンドラ内から呼び出されます。 WDS 関連のコールバック関数内では呼び出せません。 関数内部でWM_EndScan()を実行する為、WMはIDLEステートに移行します。 *///------------------------------------------------------------------------------ int WDS_EndScan( WDSCallbackFunc callback ); //-------------------------------------------------------------------------------- /** APビーコン情報の数を取得します @return 0 以上 : 成功 0 未満 : 失敗 ( スキャン中 ) @note スキャン中に実行した場合はエラー値を返します。 *///------------------------------------------------------------------------------ int WDS_GetApInfoNum( void ); //-------------------------------------------------------------------------------- /** APビーコン情報をインデックスを指定して取得します @param <1> 取得するAPビーコン情報のインデックス値(0〜15) @param <2> 取得するAPビーコン情報を書き込む領域へのポインタ @return 0 : 成功 0 以外 : 失敗 ( スキャン中、又はインデックスの示す位置にデータがない ) @note スキャン中に実行した場合はエラー値を返します。 *///------------------------------------------------------------------------------ int WDS_GetApInfoByIndex( int index, WDSBriefApInfo *briefapinfo ); //-------------------------------------------------------------------------------- /** APビーコン情報を全て取得します @param <1> 取得するAPビーコン情報を書き込む配列の先頭へのポインタ(WDS_APINFO_MAX個の要素が必要) @return 0 : 成功 0 以外 : 失敗 ( スキャン中、又はインデックスの示す位置にデータがない ) @note スキャン中に実行した場合はエラー値を返します。 *///------------------------------------------------------------------------------ int WDS_GetApInfoAll( WDSBriefApInfo *briefapinfo ); #ifdef WDS_WITHDWC //-------------------------------------------------------------------------------- /** APビーコン情報をDWCの自動接続先として設定します @param <1> 自動接続先として設定するAPビーコン情報のインデックス値(0〜15) @return 0 : 成功 0 以外 : 失敗 ( スキャン中、又はインデックスの示す位置にデータがない ) @note スキャン中に実行した場合はエラー値を返します。 *///------------------------------------------------------------------------------ int WDS_SetConnectTargetByIndex( int index ); //-------------------------------------------------------------------------------- /** APビーコン情報をDWCの自動接続先として設定します @param <1> 自動接続先として設定するAPビーコン情報 @return 0 : 成功 0 以外 : 失敗 ( スキャン中、又はインデックスの示す位置にデータがない ) @note スキャン中に実行した場合はエラー値を返します。 *///------------------------------------------------------------------------------ int WDS_SetConnectTargetByBriefApInfo( WDSBriefApInfo *briefapinfo ); #endif //-------------------------------------------------------------------------------- /** APビーコン情報のAP説明文をUTF-16で得ます @param <1> AP説明文を取得する対象のAPビーコン情報 <2> AP説明文を書き込むバッファへのポインタ(WDS_HOTSPOTNAME_UTF16_BUF_SIZEバイト) @return 0 : 成功 0 以外 : 失敗 ( スキャン中、又はインデックスの示す位置にデータがない ) @note スキャン中に実行した場合はエラー値を返します。 *///------------------------------------------------------------------------------ int WDS_GetApDescriptionUTF16( WDSBriefApInfo *briefapinfo, void *outbuf ); #ifdef __cplusplus } #endif #endif //EOF __WDS_H__