# WM_StartScanEx

## C Specification

      #include <nitro/wm.h>

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

## Arguments

`callback` | This function designates the callback function to call when the asynchronous process completes. This callback is called from within the interrupt handler.
param | Designates a pointer to the structure that shows detailed scan control information. The ARM7 processor writes the scan result information directly to `param->scanBuf`.

## Return Values

Returns the results of the `WMErrCode` enumerated type process.

## Description

Starts searching for a parent device. This function allows for finer control over the scan operations than `WM_StartScan`. This function is only executable when the WM is in either the `IDLE` or `SCAN` state. If the WM is in the `IDLE` state, this function changes the state to `SCAN`. If the return value is `WM_ERRCODE_OPERATING`, a callback is generated after the scanning process has started properly. The callback is also generated when the scan process has completed. Though information about multiple parent devices can be obtained with one call, it is not the case that information about all parent devices can be obtained. This function must be called several times in order to obtain the information about all parent devices, and sometimes identical parent device information will be obtained. However, by doing so, there may be a possibility of getting the information from the same parent machine. If a parent could not be found after completing the scan, a callback is generated to indicate that no parent was found. You may continuously call `WM_StartScan` without calling `WM_EndScan`. Basically, this function searches only the wireless channel specified by `param`. However, there is a possibility of picking up the parent information on neighboring channels. When searching for parent devices on all channels, scan on the application side with `WM_GetAllowedChannel` once the channels with parent devices have been marked. Also, when multiple channels have been designated, the scans will each be performed in order from the lower-numbered channels for a fixed amount of time. However, at the point where no more empty space can be allocated in the buffer to store the next scan results, the continuous scan process will be terminated. Be aware that because of this termination, even if multiple channels have been assigned, there may be times that the larger-numbered channels are not scanned.

## See Also

`WM_StartScan, WM_EndScan, WM_StartConnect, WM_Disconnect, WM_GetAllowedChannel`

## Revision History

06/08/2005 Added text indicating that the callback is called from the interrupt handler.
02/21/2005 Initial version.