Loading...
TwePacketActStdクラスは、アクト(Act)のサンプルなどの無線パケットを親機・中継器アプリApp_Wingsで受信したときの形式です。(App_UARTの拡張形式とほぼ同じになります)
TwePacketActStd
spTwePacketオブジェクトからTwePacketActStdオブジェクトを参照します。spTwePacketにTwePacketActStd以外が格納されている場合は、未解釈のオブジェクトを戻します。
spTwePacket
class TwePacketActStd : public TwePacketAppUART
TwePacketActStd& refTwePacketActStd(spTwePacket& p)
if (parse_ascii) { // アスキー形式のパーサーの解釈完了 auto&& pkt = newTwePacket(parse_ascii.get_payload()); if (identify_packet_type(pkt) == E_PKT::PKT_ACT_STD) { // パケット解釈成功時 auto&& x = refTwePacketActStd(pkt); the_screen // LCDスクリーン上のターミナルに情報を表示 << printfmt(":Lq=%d:Ad=%08X", x.u8lqi, x.u32addr_src) << printfmt(":ID=%02X", x.u8addr_src) ; if (x.payload.length() > 5) { auto p = act.payload.begin(); // 先頭4バイトはActコードで無線パケット先頭に設定した4文字アルファベット the_screen << ":FOURCC="; for(int i = 0; i < 4; ++i, ++p) the_screen << printfmt("%c", *p); // 残りはHEXで表示(Actコードごとによって違う) the_screen << ":DATA="; for(; p != x.payload.end(); ++p) { the_screen << printfmt("%02X", *p); } } } } }
TwePacketActStdのデータ部。 (書式はApp_UARTと同一でDataAppUART型を流用しています)
DataAppUART
struct DataAppUART { /** * 送信元のアドレス */ uint32_t u32addr_src; /** * 送信先のアドレス */ uint32_t u32addr_dst; /** * 送信元の論理ID */ uint8_t u8addr_src; /** * 宛先の論理ID */ uint8_t u8addr_dst; /** * LQI値 */ uint8_t u8lqi; /** * 未使用 */ uint8_t u8response_id; /** * データ部の長さ */ uint16_t u16paylen; /** * データ部配列 */ TWEUTILS::SmplBuf_Byte payload; };