# WVR_StartUpAsync

## 構文

      #include <nitro/wvr.h>

      WVRResult WVR_StartUpAsync(
          GXVRamARM7      vram ,
          WVRCallbackFunc callback ,
          void*           arg
      );

## 引数

vram

ARM7に割り当てるVRAMバンクを指定します。ARM7側の無線ドライバはこのVRAM上で動作するようになります。
以下の設定値を指定可能です。

- `GX_VRAM_ARM7_128_C`
- `GX_VRAM_ARM7_128_D`
- `GX_VRAM_ARM7_256_CD`

callback | 非同期処理が完了した時に呼び出されるコールバック関数を指定します。 このコールバックは割り込みハンドラ内から呼び出されます。
arg | 非同期処理が完了した時に呼び出されるコールバック関数に渡される任意の引数を指定します。

## 返り値

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

## 説明

ARM7側の無線ドライバにVRAMバンクを割り当て、その上でドライバの動作を開始します。 返り値がWVR_RESULT_OPERATINGであった場合、非同期処理完了時にPXI受信割り込みハンドラ内からコールバック関数が呼び出されます。
VRAM上で無線ドライバを動作させる機能を持つ ichneumon / ichneumon.TWL コンポーネントを使用している場合にのみ意味を持ち、 その他のコンポーネントの場合はWVR_RESULT_DISABLEを返してこの関数は失敗します。 ichneumon / ichneumon.TWL コンポーネントを使用している場合は、この関数によって無線ドライバを起動させない限り無線通信機能を使用できません。 無線ドライバ起動前にはWM_Init( )がWM_ERRCODE_DISABLEを返して失敗します。
無線ドライバに割り当て可能なVRAMバンクは VRAM-C 及び VRAM-D に限られますが、このVRAMバンクがすでにGXライブラリによって 別の用途に割り当てられている場合には、この関数は失敗します。 この場合は、GX_DisableBankFor*( )などによって使用するVRAMバンクを"何の用途にも割り当てられていない"状態にしてから 当関数を呼び出すようにして下さい。逆に、当関数によってVRAMバンクを無線ドライバに割り当てると、 WVR_TerminateAsync( )によって無線ドライバを停止させるまで指定したVRAMバンクは別の用途に割り当てることができなくなります。
なお、割り当てるVRAMによる無線ドライバの動作の違いはありません。VRAM-C と VRAM-D の両方を割り当てた場合も無線ドライバの動作は同じです。 VRAM-C 及び VRAM-D の使用用途に合わせて割り当てるVRAMを選択して下さい。
この関数を呼び出す前に、OS_InitLock( )またはOS_Init( )が呼び出されている必要があります。

## 参照

`WVR_TerminateAsync, WM_Init`

## 履歴

2009/06/15 ichneumon.TWL コンポーネントに関する記述を追加 2005/06/27 コールバックが割り込みハンドラから呼び出される旨を補足
2005/03/14 リンク先のミスを訂正
2005/03/08 用語統一 [割込み] → [割り込み]
2005/02/16 初版
2005/03/01 説明追記