# WMPortSendCallback

## 定義

  `#include <nitro/wm.h>`

      typedef struct WMPortSendCallback
      {
          u16             apiid;
          u16             errcode;
          u16             wlCmdID;
          u16             wlResult;
          u16             state;
          u16             port;
          u16             destBitmap;
          u16             restBitmap;
          u16             sentBitmap;
          u16             rsv;
          const u16       *data;
          u16             length;
          u16             seqNo;
          WMCallbackFunc  callback;
          void            *arg;

      } WMPortSendCallback;

## 要素

apiid | コールバック発生の元となったAPIのIDです。WMApiid列挙型と同義です。 ここではWM_APIID_SET_MP_DATAに固定となります。
errcode | 非同期処理の結果です。WMErrCode列挙型と同義です。
wlCmdID | errcodeがWM_ERRCODE_FAILEDの場合、無線ファームウェアでエラーとなったコマンドのIDが格納されます。
wlResult | errcodeがWM_ERRCODE_FAILEDの場合、無線ファームウェアでエラーとなった要因コードが格納されます。
state | errcodeがWM_ERRCODE_SUCCESSの場合、コールバックの発生した要因種別が格納されます。現在は WM_STATECODE_PORT_SEND しか発生しません。
port | データを送信したポートが格納されます。
destBitmap | 送信先に指定した AID のビットマップが格納されます。
restBitmap | リトライを行わなくてはならない送信先の AID のビットマップが格納されます。 未接続や切断されたなどの理由で、送信が成功しないことが明らかな AID はこのビットマップには含まれません。
sentBitmap | destBitmap で指定した送信先のうち、実際に送信できた相手の AID のビットマップです。 sentBitmap に含まれている相手にデータが届いていることは保証されますが、 sentBitmap に含まれていない相手にはデータが届いていないということは保証されません。
rsv | 予約されたメンバです。
data | データを送信したバッファのアドレスが格納されます。
length | 送信したデータの長さが格納されます。
seqNo | シーケンス番号が格納されます。
callback | ライブラリが内部で使用するためのフィールドです。呼び出されたコールバック関数のアドレスが格納されています。
arg | WM_SetMPDataToPortEx( )で指定した引数が格納されます。

## 説明

WM_SetMPDataToPort( ), WM_SetMPDataToPortEx( ), WM_SetMPData( )の各関数に対するコールバック関数に渡される構造体です。

errcodeフィールドには、送信に成功するとWM_ERRCODE_SUCCESS、送信に失敗するとWM_ERRCODE_SEND_FAILED、送信キューが一杯であるとWM_ERRCODE_SEND_QUEUE_FULL、 の各値が入ります。 destBitmapで指定された送信先に、未接続や送信中に切断されたなどの理由で送信不可能な AID が含まれていても、残りの送信可能な相手に全て送りきった場合は WM_ERRCODE_SUCCESSが返されることに注意してください。指定した送信先の全てに本当に送信されたかを確認したい場合はdestBitmapとsentBitmapとを比較をしてください。

## 履歴

2009/09/29 apiidの説明に関する誤記を訂正。
2005/03/04 初版