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 จากออบเจ็กต์ผู้อ่านไปยังผู้เขียน
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
แสดงผล true ของแท็กที่ระบุคือแท็กเฉพาะโปรไฟล์
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 จากออบเจ็กต์ผู้อ่านไปยังผู้เขียน

เมธอด CopyElement() จะเข้ารหัสองค์ประกอบ TLV ใหม่ซึ่งมีประเภทและค่าที่ได้จากออบเจ็กต์ TLVReader เมื่อมีการเรียกเมธอด ออบเจ็กต์ผู้อ่านที่ให้มาจะต้องอยู่ในองค์ประกอบ 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() ที่เชื่อมโยงกับออบเจ็กต์ผู้อ่าน

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
)

แสดงผล true ของแท็กที่ระบุคือแท็กเฉพาะโปรไฟล์

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 เฉพาะโปรไฟล์
การคืนสินค้า
รหัสผู้ให้บริการที่เกี่ยวข้อง