# WM_StartScanEx

## 構文

      #include <nitro/wm.h>

      WMErrCode WM_StartScanEx( WMCallbackFunc callback , const WMScanExParam* param );

## 引数

callback | 非同期処理が完了した時に呼び出されるコールバック関数を指定します。 このコールバックは割り込みハンドラ内から呼び出されます。
param | 詳細スキャンの制御情報を示す構造体へのポインタを指定します。 スキャン結果の情報はparam->scanBufにARM7が直接書き出しますので、キャッシュに注意して下さい。 コールバック呼び出し時に invalidate されるため、32バイト境界に沿ったメモリ領域を指定する必要があります。

## 返り値

WMErrCode列挙型の処理結果を返します。

## 説明

親機の探索を開始します。WM_StartScanより詳細にスキャン動作を制御可能です。 WMがIDLEステート、もしくはSCANステートの時にのみ実行可能であり、IDLEステートの場合はSCANステートに移行します。 APIの戻り値がWM_ERRCODE_OPERATINGであった場合、探索が完了した時にコールバックが発生します。
１回の呼び出しで複数台の親機情報を取得することが可能ですが、全ての親機情報を取得できるとは限りません。 全ての親機情報を取得する為には何度もこの関数を呼び出す必要があり、かつ同じ親機情報を取得する場合があります。 探索が完了した時点で親機が見つからなかった場合には、親機未発見を示すコールバックが発生します。 WM_EndScanを呼び出さずに連続して呼び出しても構いません。
基本的にはparamで指定した無線チャンネルのみ探索しますが、隣接するチャンネルの親機情報を拾う場合があります。 全てのチャンネルの親機を探索する場合はWM_GetAllowedChannelで親機がいるチャンネルの目星をつけた上で、アプリケーション側で巡回してください。
また、複数チャンネルを指定した場合は番号の小さいチャンネルから順番に指定時間ずつスキャンが行われますが、 スキャン結果を格納するバッファに次のスキャン結果を格納する十分な空き領域が確保できなくなった時点で連続したスキャン処理は打ち切られます。 この事により、複数チャンネルを指定しても番号の大きいチャンネルはスキャンされない場合がある点にご注意下さい。

## 注意

引数に渡したデータのキャッシュに関する注意点などの詳細は「ワイヤレス通信ライブラリ解説 (AboutWirelessManager.pdf)」を参照してください。

## 参照

`WM_StartScan, WM_EndScan, WM_StartConnect, WM_Disconnect, WM_GetAllowedChannel`

## 履歴

2008/12/17 引数に渡したデータのキャッシュに関する注意、引数の制約条件を追記
2005/06/08 コールバックが割り込みハンドラから呼び出される旨を補足
2005/02/21 初版