# WM_StepDataSharing

## 構文

      #include <nitro/wm.h>

      WMErrCode WM_StepDataSharing(
              WMDataSharingInfo*  dsInfo ,
              const u16*          sendData ,
              WMDataSet*          receiveData
      );

## 引数

dsInfo | データシェアリング情報構造体へのポインタを指定します。 WM_StartDataSharing( )にて指定した構造体を指定して下さい。
sendData | 送信するデータへのポインタを指定します。 データ長はWM_StartDataSharing( )にて指定したシェアデータ長固定となります。
receiveData | シェアされたデータを受け取るバッファへのポインタを指定します。

## 返り値

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

## 説明

データシェアリングの同期をひとつ進めます。WM_StartDataSharing( )にてデータシェアリングを開始している場合に実行可能です。 この関数は同期関数ですので、処理に成功した場合即座にWM_ERRCODE_SUCCESSを返します。
データシェアグループ内の他の端末がこの関数を呼んでいないなどの理由で同期が遅延した場合にはWM_ERRCODE_NO_DATASETを返します。
また、送受信中に回復不能なエラーが発生した場合、WM_ERRCODE_FAILEDを返しつづけるようになります。
受信したデータ構造体から各端末ごとのデータを調べる際はWM_GetSharedDataAddress( )を使用して下さい。
異なるdsInfoを用いることで複数のグループに対して平行してデータシェアリングを行うことが可能ですが、 その場合はグループごとに複数回この関数を呼び出して別々に同期をステップさせる必要があります。

安定したデータシェアリングを行うためには、Vブランクが来てからできるだけ早いタイミングでこのAPIを呼び出す必要があります。

なお、現在の実装では毎フレーム及び2フレーム間隔でデータシェアリングを行った場合にのみ、フレームずれの自動修正が行われます。このAPIの呼び出しが3フレーム間隔以上の場合、データ共有は正常に行えますが、いくつかの子機がシェア間隔以内のフレームずれを起こしていても検出することはできません。

## 参照

`WM_StartDataSharing, WM_EndDataSharing, WM_GetSharedDataAddress`

## 履歴

2004/10/22 返り値の型を変更
2004/09/25 説明を加筆
2004/09/21 制限解消に伴い、注意書きを削除
2004/08/11 初版