Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
パケット種別判定
パケットデータのバイト列を入力として、パケットの種別を判定します。また既に生成済みのspTwePacket
オブジェクトの種別を返します。戻り値はE_PKTです。
パケットオブジェクト
パケットデータは種別によってデータ構造が違いますが、様々な種類のパケットを一元管理するための基底クラスです。
spTwePacket
はメモリ管理のためのスマートポインタです。std::shared_ptr
を用いています。
TwePacketクラスは、パケットデータのパケット種別の管理を行います。また、パケットデータの解釈を行うための仮想関数parse()メソッドを定義しています。パケット特有のデータ構造に基づく解釈やデータの保存等の取り扱いは、派生クラスに実装します。
デフォルトでは、未解釈状態として E_PKT::PKT_ERROR
で初期化します。
パケットの種別をE_PKT
型で返します。
パケットデータのバイト列を与えて、パケットデータを解釈する。
派生クラスで、そのパケットに対応するデータ構造を解釈するための実装を行います。
戻り値は E_PKT
型 で、成功時は解釈されたパケット種別を、エラー時に E_PKT::PKT_ERROR
を返します。
パケットデータの解釈とオブジェクト生成
パケットデータのバイト列を入力として、パケット種別の判定と、種別に応じたspTwePacket
オブジェクトを生成します。
事前にidentify_packet_type()
を用いてパケットの種別E_PKT
が特定できている場合はeType
を与えます。
戻り値はspTwePacket
です。
TwePacketAppIO
のデータ部分。
spTwePacketオブジェクトの参照
本関数はspTwePacket
オブジェクトをTwePacket&
として参照します。
この関数は、->
演算子や*
演算子を極力使用しない方針でライブラリを設定しているため、スマートポインタの参照を行うために用意しています。
上記の判定式を(pkt && pkt->get_type() == E_PKT::PKT_TWELITE)
と記述しても同じ判定が得られます。
PAL共通データ
PALは接続されるセンサーなどによってパケットデータ構造が異なりますが、DataPal
では共通部のデータ構造を保持します。
PALのパケットデータ構造は大まかに2つのブロックからなり、全てのPAL共通部と個別のデータ部になります。個別のデータ部は、パケットの解釈を行わずそのまま格納しています。取り扱いを単純化するため32バイトを超えるデータは動的に確保するuptr_snsdata
に格納します。
個別のデータ部は、PalBase
をベースクラスに持つ構造体に格納されます。この構造体は、TwePacketPal
に定義されるジェネレータ関数により生成されます。
u8pkt_type
が0
の時はPalDataInfo
データ構造が付与された形式となります。比較的複雑な情報を格納するための形式です。1
の場合はPAL基板ごとに決められた標準的な形式でデータが格納されています。
パケット種別定義
以下のパケットに対応します。
App_Wings の親機で出力されるアスキー書式に対応します。
PAL基板種別
下記のPAL基板に対応します。
名前
解説
PKT_ERROR
パケット解釈前やパケット種別が特定できないなど、TwePacketには意味のあるデータが格納されていない
PKT_TWELITE
標準アプリ App_Twelite の 0x81 コマンドを解釈したもの
PKT_PAL
TWELITE PALのシリアル形式を解釈したもの
PKT_APPIO
PKT_APPUART
PKT_APPTAG
無線タグアプリApp_TagのUARTメッセージを解釈したもの。センサ固有部分は解釈されずpayloadとしてバイト列を報告します。
PKT_ACT_STD
アクト(Act)のサンプルなどで使用される出力書式。
名前
解説
NOPCB
基板未接続、エラー
MAG
マグネットセンサー付きのMAG (開閉センサーパル)
AMB
温湿度センサー、照度センサー付きのAMB (環境センサーパル)
MOT
加速度センサー付きのMOT (動作センサーパル)
NOTICE
LED付きのMOT (通知パル)
CUE
TWELITE CUE
ARIA
TWELITE ARIA
App_Twelite データ
TwePacketTwelite
のデータ部分。
パケット送信要因。PalDataInfo::e_data_cause
で使用されます。