nl:: Weave:: TLV:: TLVReader
#include <src/lib/core/WeaveTLV.h>
Weave TLV 形式でエンコードされたデータ用のメモリ効率の高いパーサーを提供します。
概要
TLVReader は、Weave TLV データ用のフォワード専用の「pull スタイル」パーサーを実装します。TLVReader オブジェクトは、TLV 要素のシーケンスを反復処理してその内容を解釈するために使用できるカーソルとして機能します。要素が要素上に配置されると、リーダーの Get() メソッドを呼び出し、現在の要素のタイプとタグを照会して、関連する値を抽出できます。リーダーの Next() メソッドは、要素間を移動するために使用されます。
TLVReader オブジェクトは、常に TLV 要素の前、上、後のいずれかに配置されます。最初に初期化されたときに、TLVReader はエンコードの最初の要素の直前に配置されます。読み取りを開始するには、アプリで Next() メソッドを最初に呼び出して、最初の要素にリーダーを配置する必要があります。コンテナ要素が構造、配列、パスのいずれかに触れると、OpenContainer() メソッドまたは EnterContainer() メソッドを使用してコンテナの内容を反復処理できます。
リーダーが TLV エンコードの最後、またはコンテナ内の最後の要素に到達すると、Next() メソッドから WEAVE_END_OF_TLV エラーを返してアプリケーションにシグナルを送信します。リーダーは、再初期化されるか、現在のコンテナが(CloseContainer() / ExitContainer() を介して)終了するまで、WEAVE_END_OF_TLV を返し続けます。
TLVReader オブジェクトは、固定入力バッファから直接、または 1 つ以上の PacketBuffer のチェーンからのデータを解析できます。さらに、アプリでは、GetNextBuffer
関数を指定して、任意のソースからリーダーにデータをフィードできます。たとえば、ポートまたはシリアルポートを接続します。
継承
直系の既知のサブクラス:nl::Weave::Profiles::DataManagement_Current::CircularEventReader
nl::Weave::TLV::CircularTLVReader
公開タイプ |
|
---|---|
GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen)
|
WEAVE_ERROR(*) 解析する追加の TLV データを取得するために使用できる関数。 |
パブリック属性 |
|
---|---|
AppData
|
void *
アプリケーション固有のデータに使用できるポインタ フィールド。
|
GetNextBuffer
|
TLVReader オブジェクトの入力データを生成する関数へのポインタ。
|
ImplicitProfileId
|
uint32_t
暗黙的な形式でエンコードされたプロファイル タグに使用されるプロファイル ID。
|
プロテクト属性 |
|
---|---|
mBufEnd
|
const uint8_t *
|
mBufHandle
|
uintptr_t
|
mContainerType
|
|
mControlByte
|
uint16_t
|
mElemLenOrVal
|
uint64_t
|
mElemTag
|
uint64_t
|
mLenRead
|
uint32_t
|
mMaxLen
|
uint32_t
|
mReadPoint
|
const uint8_t *
|
パブリック関数 |
|
---|---|
CloseContainer(TLVReader & containerReader)
|
OpenContainer() の呼び出し後に TLV コンテナの読み取りを完了します。
|
DupBytes(uint8_t *& buf, uint32_t & dataLen)
|
現在のバイトまたは UTF8 文字列の値を含むバッファを割り当てて返します。
|
DupString(char *& buf)
|
現在のバイトまたは UTF8 文字列の null 終端値を含むバッファを割り当てて返します。
|
EnterContainer(TLVType & outerContainerType)
|
|
ExitContainer(TLVType outerContainerType)
|
|
Get(bool & v)
|
現在の要素の値をブール値型として取得します。
|
Get(int8_t & v)
|
現在の要素の値を 8 ビット符号付き整数として取得します。
|
Get(int16_t & v)
|
現在の要素の値を 16 ビット符号付き整数として取得します。
|
Get(int32_t & v)
|
現在の要素の値を 32 ビット符号付き整数として取得します。
|
Get(int64_t & v)
|
現在の要素の値を 64 ビット符号付き整数として取得します。
|
Get(uint8_t & v)
|
現在の要素の値を 8 ビットの符号なし整数として取得します。
|
Get(uint16_t & v)
|
現在の要素の値を 16 ビット符号なし整数として取得します。
|
Get(uint32_t & v)
|
現在の要素の値を 32 ビット符号なし整数として取得します。
|
Get(uint64_t & v)
|
現在の要素の値を 64 ビット符号なし整数として取得します。
|
Get(float & v)
|
|
Get(double & v)
|
現在の要素の値を倍精度浮動小数点数として取得します。
|
GetBufHandle(void) const
|
uintptr_t
|
GetBytes(uint8_t *buf, uint32_t bufSize)
|
現在のバイトまたは UTF8 文字列要素の値を取得します。
|
GetContainerType(void) const
|
TLVReader が現在読み取っているコンテナの型を返します。
|
GetControlByte(void) const
|
uint16_t
現在の TLV 要素に関連付けられた制御バイトを返します。
|
GetDataPtr(const uint8_t *& data)
|
TLV バイトまたは UTF8 文字列要素の最初のエンコードされたバイトへのポインタを取得します。
|
GetLength(void) const
|
uint32_t
現在の TLV 要素に関連付けられているデータの長さを返します。
|
GetLengthRead(void) const
|
uint32_t
リーダーが初期化されてから読み取られた合計バイト数を返します。
|
GetReadPoint(void) const
|
const uint8_t *
リーダーの現在の位置に対応する、基になる入力バッファ内のポイントを取得します。
|
GetRemainingLength(void) const
|
uint32_t
最大読み取り長に達するまで読み取ることができるバイト数の合計を返します。
|
GetString(char *buf, uint32_t bufSize)
|
現在のバイトまたは UTF8 文字列要素の値を null 終端文字列として取得します。
|
GetTag(void) const
|
uint64_t
現在の TLV 要素に関連付けられているタグを返します。
|
GetType(void) const
|
現在の TLV 要素の型を返します。
|
Init(const TLVReader & aReader)
|
void
|
Init(const uint8_t *data, uint32_t dataLen)
|
void
単一の入力バッファから読み取る TLVReader オブジェクトを初期化します。
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
単一の PacketBuffer から読み取る TLVReader オブジェクトを初期化します。
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
1 つ以上の PacketBuffer から読み取る TLVReader オブジェクトを初期化します。
|
Next(void)
|
|
Next(TLVType expectedType, uint64_t expectedTag)
|
|
OpenContainer(TLVReader & containerReader)
|
|
Skip(void)
|
|
VerifyEndOfContainer(void)
|
TVLReader オブジェクトが TLV コンテナの最後にあることを確認します。
|
プロテクト関数 |
|
---|---|
ClearElementState(void)
|
void
TLVReader の状態をクリアします。
|
ElementType(void) const
|
TLVElementType
mControlByte から TLVElementType を返すプライベート メソッドです。
|
EnsureData(WEAVE_ERROR noDataErr)
|
|
GetElementHeadLength(uint8_t & elemHeadBytes) const
|
これは、TLV 要素ヘッドの長さの計算に使用されるプライベート メソッドです。
|
IsContainerOpen(void) const
|
bool
|
ReadData(uint8_t *buf, uint32_t len)
|
|
ReadElement(void)
|
|
ReadTag(TLVTagControl tagControl, const uint8_t *& p)
|
uint64_t
|
SetContainerOpen(bool aContainerOpen)
|
void
|
SkipData(void)
|
宛先バッファなしで読み取って、現在の TLV に含まれるデータをスキップします。
|
SkipToEndOfContainer(void)
|
|
VerifyElement(void)
|
保護された静的関数 |
|
---|---|
FailGetNextBuffer(TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen)
|
|
GetNextPacketBuffer(TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen)
|
公開タイプ
GetNextBufferFunct
WEAVE_ERROR(* GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen)
解析する追加の TLV データを取得するために使用できる関数。
この型の関数は、入力データを TLVReader にフィードするために使用されます。この関数が呼び出されると、リーダーが解析するための追加データを生成するか、もうデータがないことをリーダーに通知することが想定されます。
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||
戻り値 |
|
パブリック属性
AppData
void * AppData
アプリケーション固有のデータに使用できるポインタ フィールド。
GetNextBuffer
GetNextBufferFunct GetNextBuffer
TLVReader オブジェクトの入力データを生成する関数へのポインタ。
NULL(デフォルト値)に設定すると、リーダーはこれ以上入力データはないと見なします。
GetNextBuffer はアプリケーションによっていつでも設定できますが、通常はリーダーの初期化時に設定されます。
GetNextBuffer 関数の実装に関する追加情報については、GetNextBufferFunct 型の定義をご覧ください。
ImplicitProfileId
uint32_t ImplicitProfileId
暗黙的な形式でエンコードされたプロファイル タグに使用されるプロファイル ID。
リーダーは、暗黙的な形式でエンコードされたプロファイル固有のタグを見つけると、ImplicitProfileId
プロパティの値をタグの推定プロファイル ID として使用します。
デフォルトでは、ImplicitProfileId
プロパティは kProfileIdNotSpecified に設定されています。暗黙的にエンコードされたタグを含む TLV をデコードする場合、アプリケーションは、このようなタグを持つ TLV 要素を読み取る前に ImplicitProfileId
を設定する必要があります。適切なプロファイル ID は通常、使用するアプリケーションのコンテキストやプロトコルによって異なります。
ImplicitProfileId
が kProfileIdNotSpecified に設定されているときに、暗黙的にエンコードされたタグが検出されると、リーダーから WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG エラーが返されます。
プロテクト属性
mBufEnd
const uint8_t * mBufEnd
mBufHandle
uintptr_t mBufHandle
mContainerType
TLVType mContainerType
mControlByte
uint16_t mControlByte
mElemLenOrVal
uint64_t mElemLenOrVal
mElemTag
uint64_t mElemTag
mLenRead
uint32_t mLenRead
mMaxLen
uint32_t mMaxLen
mReadPoint
const uint8_t * mReadPoint
パブリック関数
CloseContainer
WEAVE_ERROR CloseContainer( TLVReader & containerReader )
OpenContainer() の呼び出し後に TLV コンテナの読み取りを完了します。
CloseContainer() メソッドは、OpenContainer() の呼び出し後に親 TLVReader オブジェクトの状態を復元します。OpenContainer() を呼び出すたびに、アプリケーションは対応する CloseContainer() を呼び出し、両方のメソッドに同じコンテナ リーダーへの参照を渡す必要があります。
CloseContainer() が返されると、親リーダーはコンテナに続く最初の要素の直前に配置されます。この時点から、アプリケーションは Next() メソッドを使用して残りの要素を進めます。
アプリケーションは、基になるコンテナ内のすべての要素が読み取られたかどうかにかかわらず、いつでも親リーダーで閉じる CloseContainer() を呼び出すことができます。CloseContainer() が呼び出された後、アプリケーションはコンテナ リーダーが「初期化解除された」とみなす必要があります。再初期化しない限り、それ以降は使用できません。
詳細 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||||
戻り値 |
|
DupBytes
WEAVE_ERROR DupBytes( uint8_t *& buf, uint32_t & dataLen )
現在のバイトまたは UTF8 文字列の値を含むバッファを割り当てて返します。
このメソッドはバッファを作成し、現在の位置にあるバイト要素または UTF-8 文字列要素に関連付けられたデータのコピーを返します。バッファのメモリは malloc() で取得し、不要になったら呼び出し側によって free() で解放する必要があります。
詳細 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||||
戻り値 |
|
DupString
WEAVE_ERROR DupString( char *& buf )
現在のバイトまたは UTF8 文字列の null 終端値を含むバッファを割り当てて返します。
このメソッドはバッファを作成し、現在の位置にあるバイト要素または UTF-8 文字列要素に関連付けられているデータの null 終端のコピーを返します。バッファのメモリは malloc() で取得し、不要になったら呼び出し側によって free() で解放する必要があります。
詳細 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||||
戻り値 |
|
EnterContainer
WEAVE_ERROR EnterContainer( TLVType & outerContainerType )
TLV コンテナ要素のメンバーを読み取るための TLVReader オブジェクトを準備します。
EnterContainer() メソッドは、現在の TLVReader オブジェクトを準備し、TLV コンテナのメンバー要素(構造、配列、パス)の読み取りを開始します。アプリケーションは、EnterContainer() を呼び出すたびに ExitContainer() を呼び出す必要があります。
EnterContainer() が呼び出されたら、TLVReader オブジェクトを、読み取るコンテナ要素上に配置する必要があります。このメソッドは、TLVType 値への参照を引数として受け取ります。TLVType 値は、コンテナの読み取り中にリーダーのコンテキストを保存するために使用されます。
EnterContainer() メソッドが戻ると、リーダーはコンテナの最初のメンバーの直前に配置されます。Next() を繰り返し呼び出すと、リーダーはコレクションのメンバーを順番に進め、最後に WEAVE_END_OF_TLV を返します。
アプリケーションがコンテナの読み取りを完了したら、ExitContainer() メソッドを呼び出して、コンテナの後で要素の読み取りを続行できます。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
||||
戻り値 |
|
ExitContainer
WEAVE_ERROR ExitContainer( TLVType outerContainerType )
TLV コンテナの読み取りを完了し、コンテナの後の要素を読み取るための TLVReader オブジェクトを準備します。
ExitContainer() メソッドは、EnterContainer() の呼び出し後に TLVReader オブジェクトの状態を復元します。EnterContainer() を呼び出すたびに、アプリケーションは ExitContainer() に対応する呼び出しを行い、EnterContainer() メソッドから返されたコンテキスト値を渡す必要があります。
ExitContainer() が返されると、コンテナに続く最初の要素の直前にリーダーが配置されます。この時点から、アプリケーションは Next() メソッドを使用して残りの要素を進めます。
EnterContainer() が呼び出されると、アプリケーションは基になるコンテナ内のすべての要素が読み取られたかどうかに関係なく、いつでもリーダーで ExitContainer() を呼び出すことができます。
詳細 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||||
戻り値 |
|
Get
WEAVE_ERROR Get( bool & v )
Get
WEAVE_ERROR Get( int8_t & v )
Get
WEAVE_ERROR Get( int16_t & v )
Get
WEAVE_ERROR Get( int32_t & v )
Get
WEAVE_ERROR Get( int64_t & v )
Get
WEAVE_ERROR Get( uint8_t & v )
Get
WEAVE_ERROR Get( uint16_t & v )
Get
WEAVE_ERROR Get( uint32_t & v )
Get
WEAVE_ERROR Get( uint64_t & v )
Get
WEAVE_ERROR Get( float & v )
Get
WEAVE_ERROR Get( double & v )
GetBufHandle
uintptr_t GetBufHandle( void ) const
GetBytes
WEAVE_ERROR GetBytes( uint8_t *buf, uint32_t bufSize )
現在のバイトまたは UTF8 文字列要素の値を取得します。
必要な入力バッファサイズを決定するには、GetBytes() を呼び出す前に GetLength() メソッドを呼び出します。
詳細 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||
戻り値 |
|
GetContainerType
TLVType GetContainerType( void ) const
GetControlByte
uint16_t GetControlByte( void ) const
現在の TLV 要素に関連付けられた制御バイトを返します。
理想的には、誰もコントロール バイトについて知る必要はなく、TLV の内部実装のみがコントロール バイトにアクセスできる必要があります。それでも、コントロール バイトにアクセスできることは、TLVDebugUtilities(TLV バッファの内容をプリティ プリントするときにタグ コントロール バイトをデコードしようとする)によるデバッグに役立ちます。
詳細 | |
---|---|
戻り値 |
現在の TLV 要素に関連付けられた制御バイトを含む符号なし整数。リーダーが要素に配置されていない場合、kTLVControlByte_NotSpecified が返されます。
|
GetDataPtr
WEAVE_ERROR GetDataPtr( const uint8_t *& data )
TLV バイトまたは UTF8 文字列要素の最初のエンコードされたバイトへのポインタを取得します。
このメソッドは、基になる入力バッファ内のエンコードされた文字列値の直接ポインタを返します。このメソッドを成功させるには、文字列値全体が 1 つのバッファに格納されている必要があります。それ以外の場合は、WEAVE_ERROR_TLV_UNDERRUN を返します。そのため、この手法では、複数の不連続バッファからデータを読み取るときに使用が制限されます。
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||
戻り値 |
|
GetLength
uint32_t GetLength( void ) const
GetLengthRead
uint32_t GetLengthRead( void ) const
リーダーが初期化されてから読み取られた合計バイト数を返します。
詳細 | |
---|---|
戻り値 |
リーダーの初期化以降に読み取られた合計バイト数。
|
GetReadPoint
const uint8_t * GetReadPoint( void ) const
リーダーの現在の位置に対応する、基になる入力バッファ内のポイントを取得します。
詳細 | |
---|---|
戻り値 |
リーダーの現在の位置に対応する、基になる入力バッファへのポインタ。
|
GetRemainingLength
uint32_t GetRemainingLength( void ) const
最大読み取り長に達するまで読み取ることができるバイト数の合計を返します。
詳細 | |
---|---|
戻り値 |
最大読み取り長に達するまで読み取ることができるバイト数の合計。
|
GetString
WEAVE_ERROR GetString( char *buf, uint32_t bufSize )
現在のバイトまたは UTF8 文字列要素の値を null 終端文字列として取得します。
必要な入力バッファサイズを決定するには、GetBytes() を呼び出す前に GetLength() メソッドを呼び出します。null 文字を格納できるように、入力バッファは文字列の長さより 1 バイト以上大きくする必要があります。
詳細 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||
戻り値 |
|
GetTag
uint64_t GetTag( void ) const
現在の TLV 要素に関連付けられているタグを返します。
GetTag() で返された値をタグ ユーティリティ関数(IsProfileTag()、IsContextTag()、ProfileIdFromTag() など)で使用して、タグのタイプを特定し、さまざまなタグフィールド値を抽出できます。
詳細 | |
---|---|
戻り値 |
現在の TLV 要素に関連付けられているタグに関する情報を含む符号なし整数。
|
GetType
TLVType GetType( void ) const
init
void Init( const TLVReader & aReader )
init
void Init( const uint8_t *data, uint32_t dataLen )
init
void Init( PacketBuffer *buf, uint32_t maxLen )
init
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
1 つ以上の PacketBuffer から読み取る TLVReader オブジェクトを初期化します。
解析は初期バッファの開始位置(buf->DataStart())から開始されます。allowDiscontiguousBuffers が true の場合、リーダーは Next() ポインタでリンクされたバッファのチェーンを進めます。解析は、バッファ チェーン内のすべてのデータが消費されるか(buf->Datalen() で示される)か、maxLen バイトの解析が完了するまで継続されます。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
次へ
WEAVE_ERROR Next( void )
TLVReader オブジェクトを、次に読み取る TLV 要素まで進めます。
Next() メソッドは、同じ包含コンテキストに存在する TLV エンコードの次の要素にリーダー オブジェクトを配置します。特に、リーダーが TLV エンコードの最も外側のレベルに配置されている場合、Next() を呼び出すと、リーダーは次の最上位の要素に進みます。リーダーが TLV コンテナ要素(構造、配列、パス)内にある場合、Next() を呼び出すと、リーダーはコンテナの次のメンバー要素に進みます。
Next() はリーダーの動きを現在の包含コンテキストに制限します。リーダーがコンテナ要素上に置かれているときに Next() を呼び出すと、そのメンバー要素(およびネストされたコンテナのメンバー)がコンテナに続く最初の要素に到達するまでコンテナがスキップされます。
特定の包含コンテキスト内にそれ以上の要素がない場合、Next() メソッドは WEAVE_END_OF_TLV エラーを返し、リーダーの位置は変化しません。
詳細 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
戻り値 |
|
次へ
WEAVE_ERROR Next( TLVType expectedType, uint64_t expectedTag )
読み取る次の TLV 要素に TLVReader オブジェクトを進めて、新しい要素の型とタグをアサートします。
Next(TLVTypeexpectedType, uint64_texpectedTag) メソッドは、Next() と同じ動作を持ち、新しい TLV 要素の型とタグが指定された引数と一致することを検証するコンビニエンス メソッドです。
詳細 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||||||||
戻り値 |
|
OpenContainer
WEAVE_ERROR OpenContainer( TLVReader & containerReader )
TLV コンテナ要素のメンバーを読み取るための新しい TLVReader オブジェクトを初期化します。
OpenContainer() メソッドは、TLV コンテナのメンバー要素(構造、配列、パス)を読み取るための新しい TLVReader オブジェクトを初期化します。OpenContainer() が呼び出されたら、現在の TLVReader オブジェクトが、読み取られるコンテナ要素上に配置されている必要があります。このメソッドは唯一の引数として、コンテナを読み取るために初期化される新しいリーダーへの参照を受け取ります。このリーダーはコンテナ リーダーと呼ばれ、OpenContainer() が呼び出されるリーダーは親リーダーと呼ばれます。
OpenContainer() メソッドが戻ると、コンテナ リーダーはコンテナの最初のメンバーの直前に配置されます。コンテナ リーダーで Next() を呼び出すと、コレクションのメンバーが最後まで進み、最後に WEAVE_END_OF_TLV が返されます。
コンテナ リーダーが開いている間は、アプリケーションで親リーダーの呼び出しを行ったり、親リーダーの状態を変更したりすることはできません。アプリケーションでコンテナ リーダーの使用が終了したら、親リーダーで CloseContainer() を呼び出し、コンテナ リーダーを引数として渡すことで、コンテナ リーダーを閉じる必要があります。アプリケーションは、基盤となるコンテナに含まれるすべての要素を読み取るかどうかにかかわらず、いつでもコンテナ リーダーを閉じることができます。コンテナ リーダーを閉じた後も、アプリケーションは親リーダーを引き続き使用できます。
コンテナ リーダーは、親リーダーからさまざまな構成プロパティを継承します。具体的には、次のとおりです。
- 暗黙的プロファイル ID(ImplicitProfileId)
- アプリケーション データ ポインタ(AppData)
- GetNextBuffer 関数ポインタ
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
||||
戻り値 |
|
スキップ
WEAVE_ERROR Skip( void )
TLVReader オブジェクトを現在の TLV 要素の直後に移動します。
Skip() メソッドは現在の TLV 要素の直後にリーダー オブジェクトを配置します。したがって、後続の Next() の呼び出しではリーダーを次の要素に進めます。Next() と同様に、呼び出し時にリーダーがコンテナ要素にある場合、コンテナのメンバーはスキップされます。リーダーがどの要素にも配置されていない場合、その位置は変わりません。
詳細 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
戻り値 |
|
VerifyEndOfContainer
WEAVE_ERROR VerifyEndOfContainer( void )
TVLReader オブジェクトが TLV コンテナの最後にあることを確認します。
VerifyEndOfContainer() メソッドは、現在の TLV コンテナ内に読み取る TLV 要素がないことを確認します。これは、Next() を呼び出して WEAVE_END_OF_TLV の戻り値を確認するのと同等の便利なメソッドです。
詳細 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
戻り値 |
|
プロテクト関数
ClearElementState
void ClearElementState( void )
ElementType
TLVElementType ElementType( void ) const
mControlByte から TLVElementType を返すプライベート メソッドです。
EnsureData
WEAVE_ERROR EnsureData( WEAVE_ERROR noDataErr )
GetElementHeadLength
WEAVE_ERROR GetElementHeadLength( uint8_t & elemHeadBytes ) const
これは、TLV 要素ヘッドの長さの計算に使用されるプライベート メソッドです。
IsContainerOpen
bool IsContainerOpen( void ) const
ReadData
WEAVE_ERROR ReadData( uint8_t *buf, uint32_t len )
ReadElement
WEAVE_ERROR ReadElement( void )
ReadTag
uint64_t ReadTag( TLVTagControl tagControl, const uint8_t *& p )
SetContainerOpen
void SetContainerOpen( bool aContainerOpen )
SkipData
WEAVE_ERROR SkipData( void )
宛先バッファなしで読み取って、現在の TLV に含まれるデータをスキップします。
詳細 | |||||
---|---|---|---|---|---|
戻り値 |
|
SkipToEndOfContainer
WEAVE_ERROR SkipToEndOfContainer( void )
VerifyElement
WEAVE_ERROR VerifyElement( void )
保護された静的関数
FailGetNextBuffer
WEAVE_ERROR FailGetNextBuffer( TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen )
GetNextPacketBuffer
WEAVE_ERROR GetNextPacketBuffer( TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen )