nl::Weave::TLV

คำจำกัดความสำหรับการทำงานกับข้อมูลที่เข้ารหัสในรูปแบบ Weave TLV

สรุป

Weave TLV เป็นวิธีการเข้ารหัสทั่วไปสำหรับข้อมูลที่มีโครงสร้างแบบง่าย รุ่นนี้ใช้คุณสมบัติมากมายกับรูปแบบการทำให้เป็นอนุกรม JSON ที่ใช้กันทั่วไปและมีขนาดกะทัดรัดมากกว่าตัวสายไฟ

การแจกแจง

@71 enum
@73 enum
@74{
  AnonymousTag = kSpecialTagMarker | 0x00000000FFFFFFFFULL
}
enum
@75 enum
TLVCommonProfiles{
  kProfileIdNotSpecified = 0xFFFFFFFF
}
enum
TLVElementType enum
TLVFieldSize enum
TLVTagControl enum
TLVTagFields enum
TLVType enum
การแจกแจงที่ระบุประเภทขององค์ประกอบ TLV

ตัวแปร

kWeaveTLVCopyChunkSize = 16
const size_t
คัดลอกองค์ประกอบ TLV จากออบเจ็กต์ Reader ลงในผู้เขียน
sTagSizes = { 0, 1, 2, 4, 2, 4, 6, 8 }[]
const uint8_t

ฟังก์ชัน

CommonTag(uint32_t tagNum)
uint64_t
สร้างการนำเสนอ API ของแท็ก TLV ทั่วไปของโปรไฟล์
ContextTag(uint8_t tagNum)
uint64_t
สร้างการนำเสนอ API สำหรับแท็ก TLV เฉพาะบริบท
GetTLVFieldSize(uint8_t type)
TLVFieldSize
IsContextTag(uint64_t tag)
bool
แสดงผลเป็น "จริง" หากแท็กที่ระบุเป็นแท็กเฉพาะบริบท
IsProfileTag(uint64_t tag)
bool
ค่าที่เป็นจริงของแท็กที่ระบุคือแท็กเฉพาะโปรไฟล์
IsSpecialTag(uint64_t tag)
bool
IsValidTLVType(uint8_t type)
bool
แสดงผลเป็น "จริง" หากประเภท TLV ที่ระบุถูกต้อง
ProfileIdFromTag(uint64_t tag)
uint32_t
แสดงรหัสโปรไฟล์จากแท็ก TLV
ProfileNumFromTag(uint64_t tag)
uint16_t
แสดงผลหมายเลขโปรไฟล์จากแท็ก TLV
ProfileTag(uint32_t profileId, uint32_t tagNum)
uint64_t
สร้างการนำเสนอ API ของแท็ก TLV เฉพาะโปรไฟล์จากรหัสโปรไฟล์และหมายเลขแท็ก
ProfileTag(uint16_t vendorId, uint16_t profileNum, uint32_t tagNum)
uint64_t
สร้างการนำเสนอ API ของแท็ก TLV เฉพาะโปรไฟล์จากรหัสผู้ให้บริการ หมายเลขโปรไฟล์ และหมายเลขแท็ก
TLVFieldSizeToBytes(TLVFieldSize fieldSize)
uint8_t
TLVTypeHasLength(uint8_t type)
bool
แสดงค่า "จริง" หากประเภท TLV ที่ระบุบ่งบอกว่ามีช่องความยาวที่เกี่ยวข้องอยู่
TLVTypeHasValue(uint8_t type)
bool
แสดงค่า "จริง" หากประเภท TLV ที่ระบุบ่งบอกว่ามีช่องค่าที่เกี่ยวข้องอยู่
TLVTypeIsContainer(uint8_t type)
bool
แสดงผลเป็น "จริง" หากประเภท TLV ที่ระบุเป็นคอนเทนเนอร์
TLVTypeIsString(uint8_t type)
bool
แสดงผลเป็น "จริง" หากประเภท TLV ที่ระบุเป็นสตริง UTF8 หรือไบต์
TagNumFromTag(uint64_t tag)
uint32_t
แสดงผลหมายเลขแท็กจากแท็ก TLV
VendorIdFromTag(uint64_t tag)
uint16_t
แสดงรหัสผู้ให้บริการจากแท็ก TLV

คลาส

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

ให้บริการโปรแกรมแยกวิเคราะห์ที่มีประสิทธิภาพด้านหน่วยความจำสำหรับข้อมูลที่เข้ารหัสในรูปแบบ Weave TLV

nl::Weave::TLV::TLVUpdater

มีอินเทอร์เฟซ Reader/Writer แบบรวมสำหรับการแก้ไข/เพิ่ม/ลบองค์ประกอบในการเข้ารหัส TLV

nl::Weave::TLV::TLVWriter

มีโปรแกรมเปลี่ยนไฟล์ที่มีประสิทธิภาพด้านหน่วยความจำสำหรับการเขียนข้อมูลในรูปแบบ Weave TLV

nl::Weave::TLV::WeaveCircularTLVBuffer

WeaveCircularTLVBuffer มอบพื้นที่เก็บข้อมูลแบบวงกลมสําหรับ nl::Weave::TLV::TLVWriter และ nl::Weave::TLVTLVReader

เนมสเปซ

nl::Weave::TLV::Debug

เนมสเปซนี้มีประเภทและอินเทอร์เฟซสำหรับการแก้ไขข้อบกพร่องและการบันทึก Weave TLV

nl::Weave::TLV::Utilities

เนมสเปซนี้มีประเภทและอินเทอร์เฟซยูทิลิตีสำหรับการจัดการและการทำงานร่วมกับ Weave TLV

การแจกแจง

@71

 @71

@73

 @73

@74

 @74
พร็อพเพอร์ตี้
AnonymousTag

ค่าที่แสดงถึงองค์ประกอบ TLV ที่ไม่มีแท็ก (เช่น

องค์ประกอบที่ไม่ระบุตัวตน)

@75

 @75

TLVCommonProfiles

 TLVCommonProfiles
พร็อพเพอร์ตี้
kProfileIdNotSpecified

ใช้เพื่อระบุไม่มีรหัสโปรไฟล์ในตัวแปรหรือสมาชิก

โดยหลักแล้วจะเหมือนกับ kWeaveProfile_NotSpecified ที่ระบุไว้ใน WeaveProfiles.h

TLVElementType

 TLVElementType

TLVFieldSize

 TLVFieldSize

TLVTagControl

 TLVTagControl

TLVTagFields

 TLVTagFields

TLVType

 TLVType

การแจกแจงที่ระบุประเภทขององค์ประกอบ TLV

ตัวแปร

kWeaveTLVCopyChunkSize

const size_t kWeaveTLVCopyChunkSize = 16

คัดลอกองค์ประกอบ TLV จากออบเจ็กต์ Reader ลงในผู้เขียน

เมธอด CopyElement() เข้ารหัสองค์ประกอบ TLV ใหม่ที่มีการนำประเภทและค่ามาจากออบเจ็กต์ TLVReader เมื่อมีการเรียกใช้เมธอด ออบเจ็กต์ Reader ที่ให้ไว้ควรจะอยู่ในตำแหน่งองค์ประกอบ TLV ของแหล่งที่มา องค์ประกอบที่เข้ารหัสใหม่จะมีประเภทและเนื้อหาเดียวกันกับคอนเทนเนอร์อินพุต แต่แท็กจะตั้งค่าเป็นอาร์กิวเมนต์ที่ระบุ หากองค์ประกอบที่ระบุเป็นคอนเทนเนอร์ TLV (โครงสร้าง อาร์เรย์ หรือเส้นทาง) ระบบจะคัดลอกเนื้อหาทั้งหมดของคอนเทนเนอร์

รายละเอียด
พารามิเตอร์
[in] tag
ใช้แท็ก TLV เพื่อเข้ารหัสด้วยคอนเทนเนอร์ หรือ AnonymousTag หากควรเข้ารหัสคอนเทนเนอร์โดยไม่มีแท็ก ควรสร้างค่าแท็กด้วยฟังก์ชันคำจำกัดความแท็กอย่างใดอย่างหนึ่ง ProfileTag(), ContextTag() หรือ CommonTag()
[in] reader
การอ้างอิงไปยังออบเจ็กต์ TLVReader ที่ระบุองค์ประกอบ TLV ที่เข้ารหัสล่วงหน้าซึ่งควรคัดลอกประเภทและค่า
แสดงผลค่า
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
ข้อผิดพลาด Weave หรือข้อผิดพลาดเฉพาะแพลตฟอร์มอื่นๆ ที่ส่งคืนโดยฟังก์ชัน GetNewBuffer() หรือ FinalizeBuffer() ที่กําหนดค่าไว้ หรือโดยฟังก์ชัน GetNextBuffer() ที่เชื่อมโยงกับออบเจ็กต์ Reader

sTagSizes

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

ฟังก์ชัน

CommonTag

uint64_t CommonTag(
  uint32_t tagNum
)

สร้างการนำเสนอ API ของแท็ก TLV ทั่วไปของโปรไฟล์

รายละเอียด
พารามิเตอร์
[in] tagNum
หมายเลขแท็กโปรไฟล์ทั่วไปที่กำหนดให้กับแท็ก
การส่งคืน
จำนวนเต็ม 64 บิตที่แสดงถึงแท็ก

ContextTag

uint64_t ContextTag(
  uint8_t tagNum
)

สร้างการนำเสนอ API สำหรับแท็ก TLV เฉพาะบริบท

รายละเอียด
พารามิเตอร์
[in] tagNum
หมายเลขแท็กเฉพาะบริบทที่กำหนดให้กับแท็ก
การส่งคืน
จำนวนเต็ม 64 บิตที่แสดงถึงแท็ก

GetTLVFieldSize

TLVFieldSize GetTLVFieldSize(
  uint8_t type
)

IsContextTag

bool IsContextTag(
  uint64_t tag
)

แสดงผลเป็น "จริง" หากแท็กที่ระบุเป็นแท็กเฉพาะบริบท

IsProfileTag

bool IsProfileTag(
  uint64_t tag
)

ค่าที่เป็นจริงของแท็กที่ระบุคือแท็กเฉพาะโปรไฟล์

IsSpecialTag

bool IsSpecialTag(
  uint64_t tag
)

IsValidTLVType

bool IsValidTLVType(
  uint8_t type
)

แสดงผลเป็น "จริง" หากประเภท TLV ที่ระบุถูกต้อง

รายละเอียด
การส่งคืน
true หากประเภท TLV ที่ระบุถูกต้อง มิฉะนั้น false

ProfileIdFromTag

uint32_t ProfileIdFromTag(
  uint64_t tag
)

แสดงรหัสโปรไฟล์จากแท็ก TLV

รายละเอียด
พารามิเตอร์
[in] tag
การนําเสนอ API ของแท็ก TLV เฉพาะโปรไฟล์
การส่งคืน
รหัสโปรไฟล์

ProfileNumFromTag

uint16_t ProfileNumFromTag(
  uint64_t tag
)

แสดงผลหมายเลขโปรไฟล์จากแท็ก TLV

รายละเอียด
พารามิเตอร์
[in] tag
การนําเสนอ API ของแท็ก TLV เฉพาะโปรไฟล์
การส่งคืน
หมายเลขโปรไฟล์ที่เชื่อมโยง

ProfileTag

uint64_t ProfileTag(
  uint32_t profileId,
  uint32_t tagNum
)

สร้างการนำเสนอ API ของแท็ก TLV เฉพาะโปรไฟล์จากรหัสโปรไฟล์และหมายเลขแท็ก

รายละเอียด
พารามิเตอร์
[in] profileId
รหัสของโปรไฟล์ภายในที่มีการกำหนดแท็ก
[in] tagNum
หมายเลขแท็กเฉพาะโปรไฟล์ที่กำหนดให้กับแท็ก
การส่งคืน
จำนวนเต็ม 64 บิตที่แสดงถึงแท็ก

ProfileTag

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

สร้างการนำเสนอ API ของแท็ก TLV เฉพาะโปรไฟล์จากรหัสผู้ให้บริการ หมายเลขโปรไฟล์ และหมายเลขแท็ก

รายละเอียด
พารามิเตอร์
[in] vendorId
รหัสของผู้ให้บริการที่กำหนดแท็ก
[in] profileNum
หมายเลขที่ผู้ให้บริการกำหนดสำหรับโปรไฟล์ภายในซึ่งเป็นที่มีการกำหนดแท็ก
[in] tagNum
หมายเลขแท็กเฉพาะโปรไฟล์ที่กำหนดให้กับแท็ก
การส่งคืน
จำนวนเต็ม 64 บิตที่แสดงถึงแท็ก

TLVFieldSizeToBytes

uint8_t TLVFieldSizeToBytes(
  TLVFieldSize fieldSize
)

TLVTypeHasLength

bool TLVTypeHasLength(
  uint8_t type
)

แสดงค่า "จริง" หากประเภท TLV ที่ระบุบ่งบอกว่ามีช่องความยาวที่เกี่ยวข้องอยู่

รายละเอียด
การส่งคืน
true หากประเภท TLV ที่ระบุบ่งบอกว่ามีช่องความยาวที่เกี่ยวข้อง มิเช่นนั้นจะเป็น false

TLVTypeHasValue

bool TLVTypeHasValue(
  uint8_t type
)

แสดงค่า "จริง" หากประเภท TLV ที่ระบุบ่งบอกว่ามีช่องค่าที่เกี่ยวข้องอยู่

รายละเอียด
การส่งคืน
true หากประเภท TLV ที่ระบุบ่งบอกว่ามีช่องค่าที่เกี่ยวข้อง มิเช่นนั้นจะเป็น false

TLVTypeIsContainer

bool TLVTypeIsContainer(
  uint8_t type
)

แสดงผลเป็น "จริง" หากประเภท TLV ที่ระบุเป็นคอนเทนเนอร์

รายละเอียด
การส่งคืน
true หากประเภท TLV ที่ระบุเป็นคอนเทนเนอร์ มิเช่นนั้นเป็น false

TLVTypeIsString

bool TLVTypeIsString(
  uint8_t type
)

แสดงผลเป็น "จริง" หากประเภท TLV ที่ระบุเป็นสตริง UTF8 หรือไบต์

รายละเอียด
การส่งคืน
true หากประเภท TLV ที่ระบุเป็นสตริง UTF8 หรือไบต์ มิเช่นนั้นจะเป็น false

TagNumFromTag

uint32_t TagNumFromTag(
  uint64_t tag
)

แสดงผลหมายเลขแท็กจากแท็ก TLV

รายละเอียด
พารามิเตอร์
[in] tag
การนําเสนอ API ของแท็ก TLV เฉพาะโปรไฟล์หรือเฉพาะบริบท
การส่งคืน
หมายเลขแท็กที่เชื่อมโยง
โปรดดู
IsProfileTag() และ IsContextTag()

VendorIdFromTag

uint16_t VendorIdFromTag(
  uint64_t tag
)

แสดงรหัสผู้ให้บริการจากแท็ก TLV

รายละเอียด
พารามิเตอร์
[in] tag
การนําเสนอ API ของแท็ก TLV เฉพาะโปรไฟล์
การส่งคืน
รหัสผู้ให้บริการที่เกี่ยวข้อง