# WM_Initialize

## Syntax

      #include <nitro/wm.h>

      WMErrCode WM_Initialize(
              void*           wmSysBuf ,
              WMCallbackFunc  callback ,
              u16             dmaNo
      );

## Arguments

wmSysBuf | Pointer to the buffer allocated by the calling source. The buffer must have a size of only `WM_SYSTEM_BUF_SIZE` and be 32-byte aligned. A buffer allocated in VRAM or extended main memory (for TWL mode only) cannot be used. Always allocate it from some other region.
callback | Callback function to call when the asynchronous process completes. This callback is called from inside the interrupt handler.
dmaNo | The DMA number that the WM uses. Use a valid DMA number (0-3).

## Return Values

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

## Description

Initializes the WM library and starts the wireless hardware. If the return value is `WM_ERRCODE_OPERATING`, a callback is generated after the initialization process is complete. This function changes the WM from the READY state to the IDLE state. Do not free wmSysBuf until `WM_Finish` or `WM_End` ends successfully. Note that this function consolidates the functionalities of `WM_Init`, `WM_Enable`, and `WM_PowerOn`. Use these functions separately for low-level control of the initialization process.

## See Also

`WM_SetIndCallback`
`WM_Reset`
`WM_End`
`WM_Init`
`WM_Enable`
`WM_PowerOn`

## Revision History

2009/04/13 Noted that buffers allocated from particular regions cannot be specified.
2005/06/08 Added supplementary information about the callback being invoked from the interrupt handler.
2005/03/02 Added the specifiable range for the dmaNo argument.
2004/10/22 Changed the type of the return value.
2004/09/11 Added an explanation for a group of functions divided by feature.
2004/07/29 Added Description and made other changes.
2004/07/23 Initial version.

CONFIDENTIAL