TwePacketTweliteクラスは、標準アプリApp_Tweliteの0x81コマンドを解釈したものです。
class TwePacketTwelite : public TwePacket, public DataTwelite { ... };パケットデータ内の諸情報はparse()実行後にDataTweliteに格納されます。
TwePacketTwelite& refTwePacketTwelite(spTwePacket& p)spTwePacketオブジェクトからTwePacketTweliteオブジェクトを参照します。spTwePacketにTwePacketTwelite以外が格納されている場合は、未解釈のオブジェクトを戻します。
App_Twelite データ
TwePacketTweliteのデータ部分。
if (parse_ascii) { // アスキー形式のパーサーの解釈完了
auto&& pkt = newTwePacket(parse_ascii.get_payload());
if (identify_packet_type(pkt) == E_PKT::PKT_TWELITE) { // パケット解釈成功時
auto&& x = refTwePacketTwelite(pkt);
the_screen // LCDスクリーン上のターミナルに情報を表示
<< printfmt(":Lq=%d:Ad=%08X", x.u8lqi, x.u32addr_src)
<< printfmt(":ID=%02X", x.u8addr_src)
<< printfmt(":DI=%04b", x.DI_mask)
;
}
}struct DataTwelite {
//送信元のシリアル#
uint32_t u32addr_src;
// 送信元の論理ID
uint8_t u8addr_src;
// 宛先の論理ID
uint8_t u8addr_dst;
// 送信時のタイムスタンプ
uint16_t u16timestamp;
// 低レイテンシ送信時のフラグ
bool b_lowlatency_tx;
// リピート中継回数
uint16_t u8rpt_cnt;
// LQI値
uint16_t u8lqi;
// DIの状態 (true がアクティブ Lo,GND)
bool DI1, DI2, DI3, DI4;
// DIの状態ビットマップ (LSBから順にDI1,2,3,4)
uint8_t DI_mask;
// DIアクティブならtrue (過去にアクティブになったことがある)
bool DI1_active, DI2_active, DI3_active, DI4_active;
// DIのアクティブビットマップ(LSBから順にDI1,2,3,4)
uint8_t DI_active_mask;
// モジュールの電源電圧[mV]
uint16_t u16Volt;
// AD値 [mV]
uint16_t u16Adc1, u16Adc2, u16Adc3, u16Adc4;
// ADがアクティブ(有効)なら 1 になるビットマップ (LSBから順にAD1,2,3,4)
uint8_t Adc_active_mask;
};