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\"]");
}

最終更新