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