nl::Weave::TLV

Weave TLV 形式でエンコードされたデータの処理に関する定義です。

まとめ

Weave TLV は、シンプルな構造化データ用の汎用エンコード方法です。一般的に使用される JSON シリアル化形式と多くのプロパティを共有しつつ、ネットワーク上で比較的コンパクトです。

列挙型

@71 列挙型
@73 列挙型
@74{
  AnonymousTag = kSpecialTagMarker | 0x00000000FFFFFFFFULL
}
列挙型
@75 列挙型
TLVCommonProfiles{
  kProfileIdNotSpecified = 0xFFFFFFFF
}
列挙型
TLVElementType 列挙型
TLVFieldSize 列挙型
TLVTagControl 列挙型
TLVTagFields 列挙型
TLVType 列挙型
TLV 要素のタイプを識別する列挙型です。

Variables

kWeaveTLVCopyChunkSize = 16
const size_t
TLV 要素をリーダー オブジェクトからライターにコピーします。
sTagSizes = { 0, 1, 2, 4, 2, 4, 6, 8 }[]
const uint8_t

Functions

CommonTag(uint32_t tagNum)
uint64_t
共通プロファイルの TLV タグの API 表現を生成します。
ContextTag(uint8_t tagNum)
uint64_t
コンテキスト固有の TLV タグの API 表現を生成します。
GetTLVFieldSize(uint8_t type)
TLVFieldSize
IsContextTag(uint64_t tag)
bool
指定されたタグがコンテキスト固有のタグである場合、true を返します。
IsProfileTag(uint64_t tag)
bool
指定されたタグがプロファイル固有のタグである場合に true を返します。
IsSpecialTag(uint64_t tag)
bool
IsValidTLVType(uint8_t type)
bool
指定された TLV タイプが有効な場合、true を返します。
ProfileIdFromTag(uint64_t tag)
uint32_t
TLV タグからプロフィール ID を返します。
ProfileNumFromTag(uint64_t tag)
uint16_t
TLV タグからプロフィール番号を返します。
ProfileTag(uint32_t profileId, uint32_t tagNum)
uint64_t
プロファイル ID とタグ番号からプロファイル固有の TLV タグの API 表現を生成します。
ProfileTag(uint16_t vendorId, uint16_t profileNum, uint32_t tagNum)
uint64_t
ベンダー ID、プロファイル番号、タグ番号からプロファイル固有の TLV タグの API 表現を生成します。
TLVFieldSizeToBytes(TLVFieldSize fieldSize)
uint8_t
TLVTypeHasLength(uint8_t type)
bool
指定された TLV 型が関連する長さフィールドの存在を暗示する場合、true を返します。
TLVTypeHasValue(uint8_t type)
bool
指定した TLV 型が関連する値フィールドが存在する場合、true を返します。
TLVTypeIsContainer(uint8_t type)
bool
指定された TLV タイプがコンテナの場合は true を返します。
TLVTypeIsString(uint8_t type)
bool
指定された TLV 型が UTF8 またはバイト文字列である場合、true を返します。
TagNumFromTag(uint64_t tag)
uint32_t
TLV タグからタグ番号を返します。
VendorIdFromTag(uint64_t tag)
uint16_t
TLV タグからベンダー ID を返します。

クラス

nl::Weave::TLV::CircularTLVReader
nl::Weave::TLV::CircularTLVWriter
nl::Weave::TLV::TLVReader

Weave TLV 形式でエンコードされたデータのメモリ効率の高いパーサーを提供します。

nl::Weave::TLV::TLVUpdater

TLV エンコードの要素を編集、追加、削除するための、統合された読み取り / 書き込みインターフェースを提供します。

nl::Weave::TLV::TLVWriter

Weave TLV 形式でデータを書き込むメモリ効率の良いエンコーダを提供します。

nl::Weave::TLV::WeaveCircularTLVBuffer

WeaveCircularTLVBuffer は、nl::Weave::TLV::TLVWriter と nl::Weave::TLVTLVReader に円形ストレージを提供します。

Namespace

nl::Weave::TLV::Debug

この名前空間には、Weave TLV のデバッグとロギングを行うためのタイプとインターフェースが含まれています。

nl::Weave::TLV::ユーティリティ

この名前空間には、Weave TLV の管理と操作を行うためのタイプとユーティリティ インターフェースが含まれています。

列挙型

71

 @71

73

 @73

74

 @74
Properties
AnonymousTag

タグのない TLV 要素を示す値(例:

匿名要素など)を含めることができます。

75

 @75

TLVCommonProfiles(TLV 共通プロファイル)

 TLVCommonProfiles
Properties
kProfileIdNotSpecified

変数またはメンバー内にプロファイル ID が存在しないことを示すために使用されます。

これは、WeaveProfiles.h で定義されている kWeaveProfile_NotSpecified と基本的に同じです。

TLVElementType(TLV 要素の種類)

 TLVElementType

TLVField サイズ

 TLVFieldSize

TLVTagControl

 TLVTagControl

TLVTagFields

 TLVTagFields

TLV タイプ

 TLVType

TLV 要素のタイプを識別する列挙型です。

Variables

kWeaveTLVCopyChunkSize

const size_t kWeaveTLVCopyChunkSize = 16

TLV 要素をリーダー オブジェクトからライターにコピーします。

CopyElement() メソッドでは、新しい TLV 要素がエンコードされ、その型と値は TLVReader オブジェクトから取得されます。このメソッドが呼び出されると、指定したリーダー オブジェクトがソースの TLV 要素に配置されます。新たにエンコードされた要素は、入力コンテナと同じタイプとコンテンツになりますが、タグは指定した引数に設定されます。指定した要素が TLV コンテナ(構造体、配列、パス)の場合、コンテナの内容全体がコピーされます。

詳細
パラメータ
[in] tag
コンテナでエンコードされる TLV タグ。コンテナをタグなしでエンコードする必要がある場合は AnonymousTag。タグ値は、ProfileTag()ContextTag()CommonTag() のいずれかで定義する必要があります。
[in] reader
型と値をコピーするプリエンコードの TLV 要素を識別する TLVReader オブジェクトへの参照。
戻り値
WEAVE_NO_ERROR
メソッドが成功した場合。
WEAVE_ERROR_INCORRECT_STATE
指定されたリーダーが要素に配置されていない場合。
WEAVE_ERROR_TLV_CONTAINER_OPEN
コンテナのライターが現在のライターで開かれていて、まだ閉じていない場合。
WEAVE_ERROR_TLV_UNDERRUN
指定されたリーダーに関連付けられている基盤となる TLV エンコードが途中で終了した場合。
WEAVE_ERROR_INVALID_TLV_ELEMENT
提供されたリーダーで、無効またはサポートされていない TLV 要素タイプが検出されました。
WEAVE_ERROR_INVALID_TLV_TAG
指定の読者が無効なコンテキストで TLV タグを見つけた場合、または新しいコンテナが書き込まれているコンテキストで指定タグが無効または不適切である場合。
WEAVE_ERROR_BUFFER_TOO_SMALL
値を書き込むと、ライターの初期化時に指定した最大バイト数の制限を超えます。
WEAVE_ERROR_NO_MEMORY
メモリ不足のために出力バッファを割り当てられなかった場合。
other
設定された GetNewBuffer() 関数または FinalizeBuffer() 関数、またはリーダー オブジェクトに関連付けられた GetNextBuffer() 関数によって返される、その他の Weave またはプラットフォーム固有のエラー。

sTagSizes

const uint8_t sTagSizes[] = { 0, 1, 2, 4, 2, 4, 6, 8 }

Functions

共通タグ

uint64_t CommonTag(
  uint32_t tagNum
)

共通プロファイルの TLV タグの API 表現を生成します。

詳細
パラメータ
[in] tagNum
タグに割り当てられている共通のプロファイル タグ番号。
戻り値
タグを表す 64 ビット整数。

コンテキストタグ

uint64_t ContextTag(
  uint8_t tagNum
)

コンテキスト固有の TLV タグの API 表現を生成します。

詳細
パラメータ
[in] tagNum
タグに割り当てられたコンテキスト固有のタグ番号。
戻り値
タグを表す 64 ビット整数。

GetTLVFieldSize をご覧ください。

TLVFieldSize GetTLVFieldSize(
  uint8_t type
)

IsContextTag

bool IsContextTag(
  uint64_t tag
)

指定されたタグがコンテキスト固有のタグである場合、true を返します。

IsProfileTag

bool IsProfileTag(
  uint64_t tag
)

指定されたタグがプロファイル固有のタグである場合に true を返します。

IsSpecialTag

bool IsSpecialTag(
  uint64_t tag
)

IsValidTLVType:

bool IsValidTLVType(
  uint8_t type
)

指定された TLV タイプが有効な場合、true を返します。

詳細
戻り値
指定した TLV 型が有効な場合は true、それ以外の場合は false となります。

ProfileIdFromTag

uint32_t ProfileIdFromTag(
  uint64_t tag
)

TLV タグからプロフィール ID を返します。

詳細
パラメータ
[in] tag
プロファイル固有の TLV タグの API 表現。
戻り値
プロフィール ID。

ProfileNumFromTag

uint16_t ProfileNumFromTag(
  uint64_t tag
)

TLV タグからプロフィール番号を返します。

詳細
パラメータ
[in] tag
プロファイル固有の TLV タグの API 表現。
戻り値
関連付けられているプロフィール番号。

ProfileTag

uint64_t ProfileTag(
  uint32_t profileId,
  uint32_t tagNum
)

プロファイル ID とタグ番号からプロファイル固有の TLV タグの API 表現を生成します。

詳細
パラメータ
[in] profileId
タグが定義されているプロファイルの ID。
[in] tagNum
タグに割り当てられているプロファイル固有のタグ番号。
戻り値
タグを表す 64 ビット整数。

ProfileTag

uint64_t ProfileTag(
  uint16_t vendorId,
  uint16_t profileNum,
  uint32_t tagNum
)

ベンダー ID、プロファイル番号、タグ番号からプロファイル固有の TLV タグの API 表現を生成します。

詳細
パラメータ
[in] vendorId
タグを定義したベンダーの ID。
[in] profileNum
タグが定義されているプロファイルのベンダー割り当て番号。
[in] tagNum
タグに割り当てられているプロファイル固有のタグ番号。
戻り値
タグを表す 64 ビット整数。

TLVFieldSizeToBytes

uint8_t TLVFieldSizeToBytes(
  TLVFieldSize fieldSize
)

TLVTypeHasLength

bool TLVTypeHasLength(
  uint8_t type
)

指定された TLV 型が関連する長さフィールドの存在を暗示する場合、true を返します。

詳細
戻り値
指定した TLV 型が関連する長さフィールドの存在を示す場合は true、それ以外の場合は false です。

TLVTypeHasValue

bool TLVTypeHasValue(
  uint8_t type
)

指定した TLV 型が関連する値フィールドが存在する場合、true を返します。

詳細
戻り値
指定した TLV 型が関連する値フィールドが存在する場合は true、それ以外の場合は false です。

TLVTypeIsContainer

bool TLVTypeIsContainer(
  uint8_t type
)

指定された TLV タイプがコンテナの場合は true を返します。

詳細
戻り値
指定された TLV タイプがコンテナの場合は true、それ以外の場合は false

TLVTypeIsString(TLVTypeIsString)

bool TLVTypeIsString(
  uint8_t type
)

指定された TLV 型が UTF8 またはバイト文字列である場合、true を返します。

詳細
戻り値
指定された TLV 型が UTF8 またはバイト文字列の場合は true、それ以外の場合は false です。

TagNumFromTag

uint32_t TagNumFromTag(
  uint64_t tag
)

TLV タグからタグ番号を返します。

詳細
パラメータ
[in] tag
プロファイル固有またはコンテキスト固有の TLV タグの API 表現。
戻り値
関連付けられているタグ番号。
関連情報:
IsProfileTag()IsContextTag()

VendorIdFromTag

uint16_t VendorIdFromTag(
  uint64_t tag
)

TLV タグからベンダー ID を返します。

詳細
パラメータ
[in] tag
プロファイル固有の TLV タグの API 表現。
戻り値
関連付けられているベンダー ID。