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 初版