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
แสดงผลเป็น "จริง" ของแท็กที่ระบุเป็นแท็กเฉพาะโปรไฟล์
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::แก้ไขข้อบกพร่อง

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

nl:: Weave::TLV:: ยูทิลิตี

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

การแจกแจง

@71

 @71

@73

 @73

@74

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

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

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

@75

 @75

TLVCommonProfiles

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

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

ซึ่งเหมือนกับ kWeaveProfile_NotSpecified ที่กําหนดไว้ใน WeaveProfiles.h

ประเภทองค์ประกอบ TLV

 TLVElementType

ขนาดช่องขนาด TLV

 TLVFieldSize

การควบคุมแท็ก TLVTag

 TLVTagControl

ช่องแท็ก TLVTag

 TLVTagFields

ประเภท TLV

 TLVType

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

ตัวแปร

ขนาด WeaveTLVChChsize

const size_t kWeaveTLVCopyChunkSize = 16

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

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

ขนาดแท็ก

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

ฟังก์ชัน

แท็กทั่วไป

uint64_t CommonTag(
  uint32_t tagNum
)

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

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

แท็กบริบท

uint64_t ContextTag(
  uint8_t tagNum
)

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

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

ขนาด GetTLVField

TLVFieldSize GetTLVFieldSize(
  uint8_t type
)

แท็ก IsContext

bool IsContextTag(
  uint64_t tag
)

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

แท็ก IsProfile

bool IsProfileTag(
  uint64_t tag
)

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

แท็กพิเศษ

bool IsSpecialTag(
  uint64_t tag
)

IsTypeTLVType

bool IsValidTLVType(
  uint8_t type
)

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

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

ProfileIdFromTag

uint32_t ProfileIdFromTag(
  uint64_t tag
)

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

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

โปรไฟล์จากแท็ก

uint16_t ProfileNumFromTag(
  uint64_t tag
)

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

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

แท็กโปรไฟล์

uint64_t ProfileTag(
  uint32_t profileId,
  uint32_t tagNum
)

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

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

แท็กโปรไฟล์

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

แท็กจากแท็ก

uint32_t TagNumFromTag(
  uint64_t tag
)

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

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

รหัสผู้ให้บริการต้นทาง

uint16_t VendorIdFromTag(
  uint64_t tag
)

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

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