cbToCoNet_vRxEvent()
解説
無線パケット受信後に呼び出されます。引数に tsRxDataApp
*psRx
が渡されます、受信データ(パケットの中身、アドレス情報など)が格納されます。構造体は本コールバック関数の呼び出しスコープ内で有効で、一旦関数を抜けると値は保証されません。
頻繁に受信される場合は、本関数を終了を遅延すべきではありません。受信キューの解放が遅れ取りこぼしが発生するかもしれません。
受信パケットは、内部のMAC層の割り込みにより、FIFO キューに蓄積されます。アプリケーションループの制御下になったとき、このキューから取り出し、コールバック関数が実行されます。
引数
型
名前
詳細
tsRxDataApp
*
psRx
受信されたデータが格納される。詳細は構造体の解説を参照。
戻り値
なし。
サンプル
// display packet content
void cbToCoNet_vRxEvent(tsRxDataApp *pRx) {
int i;
static uint16 u16seqPrev = 0xFFFF;
uint8 *p = pRx->auData; // pointer to the payload
// print control info
vfPrintf(&sSerStream, LB"[PKT Ad:%04x,Ln:%03d,Seq:%03d,Lq:%03d,Tms:%05d \"",
pRx->u32SrcAddr, // source address
pRx->u8Len, // payload size
pRx->u8Seq, // seq number
pRx->u8Lqi, // LQI
pRx->u32Tick & 0xFFFF); // time stamp
// print first 32 bytes
for (i = 0; i < pRx->u8Len; i++) {
if (i < 32) {
sSerStream.bPutChar(sSerStream.u8Device,
(pRx->auData[i] >= 0x20 && pRx->auData[i] <= 0x7f) ? pRx->auData[i] : '.');
} else {
vfPrintf(&sSerStream, "..");
break;
}
}
vfPrintf(&sSerStream, "C\"]");
}
最終更新