nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
มีโปรแกรมเปลี่ยนไฟล์ที่มีประสิทธิภาพหน่วยความจำสำหรับการเขียนข้อมูลในรูปแบบ Weave TLV
สรุป
TLVWriter ใช้โปรแกรมเปลี่ยนไฟล์แบบสตรีมแบบส่งต่อเท่านั้นสำหรับข้อมูล Weave TLV แอปพลิเคชันจะเขียนข้อมูลเป็นการเข้ารหัสด้วยการเรียกใช้เมธอด Put() ของผู้เขียนโดยส่งผ่านแท็กและข้อมูลค่าที่เกี่ยวข้องตามที่จำเป็น ในทำนองเดียวกัน แอปพลิเคชันก็เข้ารหัสประเภทคอนเทนเนอร์ TLV (โครงสร้าง อาร์เรย์ หรือเส้นทาง) ได้ด้วยการเรียกใช้เมธอด OpenContainer() หรือ EnterContainer() ของผู้เขียน
ออบเจ็กต์ TLVWriter สามารถเขียนข้อมูลลงในบัฟเฟอร์เอาต์พุตแบบคงที่โดยตรงหรือไปยังเชนของออบเจ็กต์ PacketBuffer อย่างน้อย 1 รายการได้ นอกจากนี้ แอปพลิเคชันยังให้ฟังก์ชัน GetNewBuffer
และ FinalizeBuffer
ของตนเองเพื่อส่งเอาต์พุตไปยังปลายทางที่กำหนดเองได้ด้วย เช่น ซ็อกเก็ตหรือคิวเหตุการณ์
การสืบทอด
คลาสย่อยที่รู้จักโดยตรง: nl::Weave::TLV::CircularTLVWriter
ประเภทที่มีการป้องกัน |
|
---|---|
@72{
|
enum |
ประเภทสาธารณะ |
|
---|---|
FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
|
ข้อผิดพลาด WEAVE_(* ฟังก์ชันที่ใช้ในการสรุปเอาต์พุตจากออบเจ็กต์ TLVWriter |
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
|
ข้อผิดพลาด WEAVE_(* ฟังก์ชันที่ให้พื้นที่บัฟเฟอร์เอาต์พุตใหม่แก่ TLVWriter |
แอตทริบิวต์สาธารณะ |
|
---|---|
AppData
|
void *
ฟิลด์ตัวชี้ที่สามารถใช้สำหรับข้อมูลเฉพาะแอปพลิเคชัน
|
FinalizeBuffer
|
ตัวชี้ไปยังฟังก์ชันที่จะเรียกใช้เมื่อสรุป TLVWriter เสร็จแล้ว
|
GetNewBuffer
|
ตัวชี้ไปยังฟังก์ชันที่จะให้พื้นที่บัฟเฟอร์เอาต์พุตใหม่แก่ TLVWriter
|
ImplicitProfileId
|
uint32_t
รหัสโปรไฟล์ของแท็กที่ควรเข้ารหัสในรูปแบบโดยนัย
|
แอตทริบิวต์ที่มีการป้องกัน |
|
---|---|
mBufHandle
|
uintptr_t
|
mBufStart
|
uint8_t *
|
mContainerType
|
|
mLenWritten
|
uint32_t
|
mMaxLen
|
uint32_t
|
mRemainingLen
|
uint32_t
|
mWritePoint
|
uint8_t *
|
ฟังก์ชันสาธารณะ |
|
---|---|
CloseContainer(TLVWriter & containerWriter)
|
เขียนคอนเทนเนอร์ TLV ให้เสร็จสิ้นหลังจากเรียก OpenContainer()
|
ContinuePutBytes(const uint8_t *buf, uint32_t len)
|
เข้ารหัสค่าสตริงไบต์ TLV
|
CopyContainer(TLVReader & container)
|
|
CopyContainer(uint64_t tag, TLVReader & container)
|
เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV จากชุดองค์ประกอบสมาชิกที่เข้ารหัสล่วงหน้า
|
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
|
เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ที่มีองค์ประกอบสมาชิกจากคอนเทนเนอร์ที่เข้ารหัสไว้ล่วงหน้า
|
CopyElement(TLVReader & reader)
|
คัดลอกองค์ประกอบ TLV จากออบเจ็กต์ผู้อ่านไปยังผู้เขียน
|
CopyElement(uint64_t tag, TLVReader & reader)
|
|
EndContainer(TLVType outerContainerType)
|
เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ให้เสร็จสมบูรณ์
|
Finalize(void)
|
เขียนการเข้ารหัส TLV ให้เสร็จสิ้น
|
GetContainerType(void) const
|
แสดงผลประเภทของคอนเทนเนอร์ที่ TLVWriter กำลังเขียนอยู่
|
GetLengthWritten(void)
|
uint32_t
แสดงผลจำนวนไบต์ที่เขียนแล้วทั้งหมดตั้งแต่เริ่มเขียน
|
Init(uint8_t *buf, uint32_t maxLen)
|
void
เริ่มต้นออบเจ็กต์ TLVWriter เพื่อเขียนลงในบัฟเฟอร์เอาต์พุตเดียว
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
เริ่มต้นออบเจ็กต์ TLVWriter เพื่อเขียนลงใน PacketBuffer รายการเดียว
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
เริ่มต้นออบเจ็กต์ TLVWriter เพื่อเขียนลงใน PacketBuffers อย่างน้อย 1 รายการ
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
เริ่มต้นออบเจ็กต์ TLVWriter เพื่อเขียนลงในบัฟเฟอร์แบบไดนามิก
|
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
|
|
Put(uint64_t tag, int8_t v)
|
เข้ารหัสค่าจำนวนเต็มที่ลงนาม TLV
|
Put(uint64_t tag, int8_t v, bool preserveSize)
|
เข้ารหัสค่าจำนวนเต็มที่ลงนาม TLV
|
Put(uint64_t tag, int16_t v)
|
|
Put(uint64_t tag, int16_t v, bool preserveSize)
|
|
Put(uint64_t tag, int32_t v)
|
|
Put(uint64_t tag, int32_t v, bool preserveSize)
|
|
Put(uint64_t tag, int64_t v)
|
|
Put(uint64_t tag, int64_t v, bool preserveSize)
|
|
Put(uint64_t tag, uint8_t v)
|
เข้ารหัสค่าจำนวนเต็มที่ไม่มีเครื่องหมาย TLV
|
Put(uint64_t tag, uint8_t v, bool preserveSize)
|
เข้ารหัสค่าจำนวนเต็มที่ไม่มีเครื่องหมาย TLV
|
Put(uint64_t tag, uint16_t v)
|
|
Put(uint64_t tag, uint16_t v, bool preserveSize)
|
|
Put(uint64_t tag, uint32_t v)
|
|
Put(uint64_t tag, uint32_t v, bool preserveSize)
|
|
Put(uint64_t tag, uint64_t v)
|
|
Put(uint64_t tag, uint64_t v, bool preserveSize)
|
|
Put(uint64_t tag, float v)
|
|
Put(uint64_t tag, double v)
|
เข้ารหัสค่าทศนิยม TLV
|
PutBoolean(uint64_t tag, bool v)
|
เข้ารหัสค่าบูลีน TLV
|
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
|
เข้ารหัสค่าสตริงไบต์ TLV
|
PutNull(uint64_t tag)
|
เข้ารหัสค่า Null TLV
|
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
|
เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV จากชุดองค์ประกอบสมาชิกที่เข้ารหัสล่วงหน้า
|
PutString(uint64_t tag, const char *buf)
|
เข้ารหัสค่าสตริง UTF8 TLV
|
PutString(uint64_t tag, const char *buf, uint32_t len)
|
เข้ารหัสค่าสตริง UTF8 TLV
|
PutStringF(uint64_t tag, const char *fmt, ...)
|
เข้ารหัสเอาต์พุตสตริงที่มีการจัดรูปแบบตามรูปแบบในองค์ประกอบ TLV
|
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
|
เริ่มการเข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ใหม่
|
StartPutBytes(uint64_t tag, uint32_t totalLen)
|
เข้ารหัสสตริงไบต์ TLV เป็นกลุ่มๆ
|
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
|
เข้ารหัสเอาต์พุตสตริงที่มีการจัดรูปแบบตามรูปแบบในองค์ประกอบ TLV
|
ฟังก์ชันสาธารณะแบบคงที่ |
|
---|---|
FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
|
การใช้งานฟังก์ชัน TLVWriter FinalizeBuffer สำหรับการเขียนไปยังเชน PacketBuffers
|
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
การใช้งานฟังก์ชัน GetNewBuffer TLVWriter สำหรับการเขียนไปยังบัฟเฟอร์แบบไดนามิก
|
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
การใช้งานฟังก์ชัน GetNewBuffer ของ TLVWriter สำหรับการเขียนไปยังเชน PacketBuffers
|
ฟังก์ชันที่มีการป้องกัน |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
ตรวจสอบว่าคอนเทนเนอร์ควรจองพื้นที่สำหรับสัญลักษณ์ CloseContainer ที่จุดเริ่มต้น / เปิดคอนเทนเนอร์หรือไม่
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
กำหนดว่าคอนเทนเนอร์ควรจองพื้นที่สำหรับสัญลักษณ์ CloseContainer ที่จุดเริ่มต้น / การเปิดคอนเทนเนอร์หรือไม่
|
SetContainerOpen(bool aContainerOpen)
|
void
|
WriteData(const uint8_t *p, uint32_t len)
|
|
WriteElementHead(TLVElementType elemType, uint64_t tag, uint64_t lenOrVal)
|
|
WriteElementWithData(TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen)
|
ประเภทที่มีการป้องกัน
@72
@72
ประเภทสาธารณะ
FinalizeBufferFunct
WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
ฟังก์ชันที่ใช้ในการสรุปเอาต์พุตจากออบเจ็กต์ TLVWriter
ระบบจะเรียกฟังก์ชันประเภทนี้เมื่อมีการเรียกเมธอด Finalize() ของ TLVWriter ฟังก์ชันนี้จะดำเนินการทำความสะอาดหรือดำเนินการขั้นสุดท้ายที่จำเป็นซึ่งเกี่ยวข้องกับการใช้เอาต์พุตของออบเจ็กต์ผู้เขียน ตัวอย่างเช่น การบันทึกความยาวสุดท้ายของการเข้ารหัส หรือการปิดข้อบ่งชี้ไฟล์
รายละเอียด | |||||||||
---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||
ผลลัพธ์ |
|
GetNewBufferFunct
WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
ฟังก์ชันที่ให้พื้นที่บัฟเฟอร์เอาต์พุตใหม่แก่ TLVWriter
ฟังก์ชันของประเภทนี้ใช้เพื่อเตรียมพื้นที่บัฟเฟอร์ใหม่เพื่อให้ TLVWriter เขียนข้อมูล เมื่อมีการเรียกใช้ ฟังก์ชันดังกล่าวจะต้องส่งคืนตัวชี้ไปยังตำแหน่งหน่วยความจำที่ควรเขียนข้อมูลใหม่ พร้อมด้วยความยาวสูงสุดที่เกี่ยวข้อง ฟังก์ชันนี้จะให้พื้นที่เขียนโดยการจัดสรรบัฟเฟอร์ใหม่เพื่อเก็บข้อมูลหรือล้างข้อมูลที่เขียนไว้ก่อนหน้านี้ออกจากบัฟเฟอร์ที่มีอยู่
รายละเอียด | |||||||||
---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||
ผลลัพธ์ |
|
แอตทริบิวต์สาธารณะ
AppData
void * AppData
ฟิลด์ตัวชี้ที่สามารถใช้สำหรับข้อมูลเฉพาะแอปพลิเคชัน
FinalizeBuffer
FinalizeBufferFunct FinalizeBuffer
ตัวชี้ไปยังฟังก์ชันที่จะเรียกใช้เมื่อสรุป TLVWriter เสร็จแล้ว
ออบเจ็กต์ TLVWriter จะเรียกฟังก์ชัน FinalizeBuffer เมื่อมีการเรียกใช้เมธอด Finalize() แอปพลิเคชันสามารถตั้งค่าตัวชี้ฟังก์ชันที่จุดใดก็ได้ก่อนที่จะเรียก Finalize() โดยค่าเริ่มต้น ระบบจะกำหนดตัวชี้เป็น NULL ซึ่งทำให้เมธอด Finalize() ไม่เรียกใช้ฟังก์ชัน
ดูคำจำกัดความของประเภท FinalizeBufferFunct ข้อมูลเพิ่มเติมเกี่ยวกับการใช้ฟังก์ชัน FinalizeBuffer
GetNewBuffer
GetNewBufferFunct GetNewBuffer
ตัวชี้ไปยังฟังก์ชันที่จะให้พื้นที่บัฟเฟอร์เอาต์พุตใหม่แก่ TLVWriter
ออบเจ็กต์ TLVWriter จะเรียกใช้ฟังก์ชัน GetNewBuffer เมื่อใดก็ตามที่มีการพยายามเขียนข้อมูลที่มีขนาดเกินบัฟเฟอร์เอาต์พุตปัจจุบัน หากตั้งค่าเป็น NULL (ค่าเริ่มต้น) ผู้เขียนจะแสดงผล WEAVE_ERROR_NO_MEMORY หากข้อมูลเอาต์พุตล้นบัฟเฟอร์ปัจจุบัน
แอปพลิเคชันสามารถตั้งค่า GetNewBuffer ได้ทุกเมื่อ แต่โดยทั่วไปจะตั้งค่าไว้เมื่อผู้เขียนเริ่มต้น
ดูคำจำกัดความของประเภท GetNewBufferFunct ข้อมูลเพิ่มเติมเกี่ยวกับการใช้ฟังก์ชัน GetNewBuffer
ImplicitProfileId
uint32_t ImplicitProfileId
รหัสโปรไฟล์ของแท็กที่ควรเข้ารหัสในรูปแบบโดยนัย
เมื่อระบบขอให้ผู้เขียนเข้ารหัสองค์ประกอบใหม่ หากรหัสโปรไฟล์ของแท็กที่เชื่อมโยงกับองค์ประกอบใหม่ตรงกับค่าของสมาชิก ImplicitProfileId
ผู้เขียนจะเข้ารหัสแท็กในรูปแบบโดยนัยโดยละรหัสโปรไฟล์ในกระบวนการนี้
โดยค่าเริ่มต้น พร็อพเพอร์ตี้ ImplicitProfileId
จะตั้งค่าเป็น kProfileIdNotSpecified ซึ่งบอกผู้เขียนไม่ให้ส่งแท็กที่เข้ารหัสแบบโดยนัย แอปพลิเคชันจะตั้งค่า ImplicitProfileId
ได้ทุกเมื่อเพื่อเปิดใช้แท็กการเข้ารหัสในรูปแบบโดยนัยโดยเริ่มที่จุดปัจจุบันในการเข้ารหัส รหัสโปรไฟล์ที่เหมาะสมที่จะตั้งมักขึ้นอยู่กับบริบทของแอปพลิเคชันหรือโปรโตคอลที่พูด
แอตทริบิวต์ที่มีการป้องกัน
mBufHandle
uintptr_t mBufHandle
mBufStart
uint8_t * mBufStart
mContainerType
TLVType mContainerType
mLenWritten
uint32_t mLenWritten
mMaxLen
uint32_t mMaxLen
mRemainingLen
uint32_t mRemainingLen
mWritePoint
uint8_t * mWritePoint
ฟังก์ชันสาธารณะ
CloseContainer
WEAVE_ERROR CloseContainer( TLVWriter & containerWriter )
เขียนคอนเทนเนอร์ TLV ให้เสร็จสิ้นหลังจากเรียก OpenContainer()
เมธอด CloseContainer() จะคืนค่าสถานะของออบเจ็กต์ TLVWriter หลักหลังการเรียกใช้ OpenContainer() สำหรับการเรียกแอปพลิเคชัน OpenContainer() ทุกครั้งจะต้องเรียกใช้ CloseContainer() ที่สอดคล้องกัน โดยส่งการอ้างอิงไปยังผู้เขียนคอนเทนเนอร์เดียวกันไปยังทั้ง 2 วิธี
เมื่อ CloseContainer() แสดงผล แอปพลิเคชันอาจยังคงใช้ผู้เขียนระดับบนสุดเพื่อเขียนองค์ประกอบ TLV เพิ่มเติมที่ปรากฏหลังองค์ประกอบคอนเทนเนอร์ ณ จุดนี้ คุณควรพิจารณาว่าผู้เขียนคอนเทนเนอร์ที่ระบุมีการ "ยกเลิกการเริ่มต้น" และต้องไม่ใช้หากไม่มีการเริ่มต้นอีกครั้ง
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
ผลลัพธ์ |
|
ContinuePutBytes
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
เข้ารหัสค่าสตริงไบต์ TLV
ซึ่งควรใช้กับ StartPutBytes
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
ผลลัพธ์ |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
คัดลอกองค์ประกอบคอนเทนเนอร์ TLV จากออบเจ็กต์ TLVReader
CopyContainer() จะเข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ใหม่โดยการคัดลอกองค์ประกอบคอนเทนเนอร์ที่เข้ารหัสไว้ล่วงหน้าที่ตำแหน่งปัจจุบันของออบเจ็กต์ TLVReader เมธอดนี้จะเขียนองค์ประกอบคอนเทนเนอร์ใหม่ทั้งองค์ประกอบในการเรียกครั้งเดียว โดยคัดลอกประเภท แท็ก และองค์ประกอบของคอนเทนเนอร์จากการเข้ารหัสที่มา เมื่อเมธอดกลับคืนมา จะใช้ออบเจ็กต์นักเขียนเพื่อเขียนองค์ประกอบ TLV เพิ่มเติมต่อจากองค์ประกอบคอนเทนเนอร์ได้
รายละเอียด | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||||||
ผลลัพธ์ |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV จากชุดองค์ประกอบสมาชิกที่เข้ารหัสล่วงหน้า
เมธอด CopyContainer() จะเข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ใหม่ (โครงสร้าง อาร์เรย์ หรือเส้นทาง) ที่มีชุดองค์ประกอบสมาชิกที่นำมาจากออบเจ็กต์ TLVReader เมื่อมีการเรียกเมธอด ออบเจ็กต์ผู้อ่านที่ให้มาจะต้องวางอยู่ในองค์ประกอบคอนเทนเนอร์ TLV คอนเทนเนอร์ที่เข้ารหัสใหม่จะมีประเภทและสมาชิกเดียวกันกับคอนเทนเนอร์อินพุต แท็กสำหรับคอนเทนเนอร์ใหม่ได้รับการระบุเป็นพารามิเตอร์อินพุต
เมื่อเมธอดกลับคืนมา จะใช้ออบเจ็กต์นักเขียนเพื่อเขียนองค์ประกอบ TLV เพิ่มเติมต่อจากองค์ประกอบคอนเทนเนอร์ได้
รายละเอียด | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||||||
ผลลัพธ์ |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ที่มีองค์ประกอบสมาชิกจากคอนเทนเนอร์ที่เข้ารหัสล่วงหน้า
เมธอด CopyContainer() จะเข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ใหม่ (โครงสร้าง อาร์เรย์ หรือเส้นทาง) ที่มีชุดองค์ประกอบสมาชิกที่นำมาจากเนื้อหาของคอนเทนเนอร์ที่เข้ารหัสล่วงหน้าที่ให้มา เมื่อมีการเรียกใช้เมธอด ระบบจะแยกวิเคราะห์ข้อมูลในบัฟเฟอร์อินพุตที่ให้มาเป็นองค์ประกอบคอนเทนเนอร์ TLV ซึ่งจะเขียนคอนเทนเนอร์ใหม่ที่มีประเภทและสมาชิกเดียวกันกับคอนเทนเนอร์อินพุต แท็กสำหรับคอนเทนเนอร์ใหม่ได้รับการระบุเป็นพารามิเตอร์อินพุต
เมื่อเมธอดกลับคืนมา จะใช้ออบเจ็กต์นักเขียนเพื่อเขียนองค์ประกอบ TLV เพิ่มเติมต่อจากองค์ประกอบคอนเทนเนอร์ได้
รายละเอียด | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||||
ผลลัพธ์ |
|
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
คัดลอกองค์ประกอบ TLV จากออบเจ็กต์ผู้อ่านไปยังผู้เขียน
เมธอด CopyElement() จะเข้ารหัสองค์ประกอบ TLV ใหม่ โดยนำประเภท แท็ก และค่ามาจากออบเจ็กต์ TLVReader เมื่อมีการเรียกเมธอด ออบเจ็กต์ผู้อ่านที่ให้มาจะต้องอยู่ในองค์ประกอบ TLV ต้นทาง องค์ประกอบที่เข้ารหัสใหม่จะมีประเภท แท็ก และเนื้อหาเหมือนกับคอนเทนเนอร์อินพุต หากองค์ประกอบที่ระบุเป็นคอนเทนเนอร์ TLV (โครงสร้าง อาร์เรย์ หรือเส้นทาง) ระบบจะคัดลอกเนื้อหาทั้งหมดของคอนเทนเนอร์
รายละเอียด | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||||||
ผลลัพธ์ |
|
CopyElement
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
EndContainer
WEAVE_ERROR EndContainer( TLVType outerContainerType )
เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ให้เสร็จสมบูรณ์
เมธอด EndContainer() จะเข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV และคืนค่าสถานะของออบเจ็กต์ TLVWrite หลังจากการเรียกใช้ StartContainer() ก่อนหน้านี้แล้ว สำหรับการเรียกแอปพลิเคชัน StartContainer() ทุกครั้งจะต้องเรียกใช้ EndContainer() ที่สอดคล้องกัน โดยส่งค่า TLVType ที่แสดงผลโดยการเรียก StartContainer() เมื่อ EndContainer() แสดงผล ออบเจ็กต์ผู้เขียนสามารถใช้เขียนองค์ประกอบ TLV เพิ่มเติมที่อยู่ต่อจากองค์ประกอบคอนเทนเนอร์
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
ผลลัพธ์ |
|
สรุป
WEAVE_ERROR Finalize( void )
เขียนการเข้ารหัส TLV ให้เสร็จสิ้น
เมธอด Finalize() จะเขียนการเข้ารหัส TLV ลงในบัฟเฟอร์เอาต์พุตเบื้องหลังให้เสร็จเรียบร้อย แอปพลิเคชันต้องเรียกใช้เมธอดนี้ก่อนที่จะใช้เนื้อหาของบัฟเฟอร์ จะเรียก Finalize() ได้เฉพาะในกรณีที่ไม่มีผู้เขียนคอนเทนเนอร์ที่เปิดสำหรับผู้เขียนปัจจุบัน (ดู OpenContainer()
)
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
ผลลัพธ์ |
|
GetContainerType
TLVType GetContainerType( void ) const
แสดงผลประเภทของคอนเทนเนอร์ที่ TLVWriter กำลังเขียนอยู่
เมธอด GetContainerType() จะแสดงประเภทของคอนเทนเนอร์ TLV ที่ TLVWriter กำลังเขียนอยู่ หาก TLVWriter ไม่ได้เขียนองค์ประกอบภายในคอนเทนเนอร์ (เช่น หากเขียนที่ระดับด้านนอกของการเข้ารหัส) เมธอดจะแสดง kTLVType_NotSpecified
รายละเอียด | |
---|---|
การคืนสินค้า |
TLVType ของคอนเทนเนอร์ปัจจุบัน หรือ kTLVType_NotSpecified หาก TLVWriter ไม่ได้เขียนองค์ประกอบภายในคอนเทนเนอร์
|
GetLengthWritten
uint32_t GetLengthWritten( void )
แสดงผลจำนวนไบต์ที่เขียนแล้วทั้งหมดตั้งแต่เริ่มเขียน
รายละเอียด | |
---|---|
การคืนสินค้า |
จำนวนไบต์ทั้งหมดที่เขียนตั้งแต่เริ่มเขียน
|
Init
void Init( uint8_t *buf, uint32_t maxLen )
Init
void Init( PacketBuffer *buf, uint32_t maxLen )
Init
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
เริ่มต้นออบเจ็กต์ TLVWriter เพื่อเขียนลงใน PacketBuffers อย่างน้อย 1 รายการ
การเขียนจะเริ่มขึ้นทันทีหลังจากไบต์สุดท้ายของข้อมูลที่มีอยู่ในบัฟเฟอร์ที่ระบุ หาก allowDiscontiguousBuffers
เป็นจริง ระบบจะจัดสรรและเชื่อมโยง PacketBuffers เพิ่มเติมกับบัฟเฟอร์ที่ให้มาตามความจำเป็นเพื่อรองรับจำนวนข้อมูลที่เขียน หากบัฟเฟอร์เอาต์พุตที่ระบุเป็นส่วนหัวของเชนของบัฟเฟอร์อยู่แล้ว ระบบจะเขียนเอาต์พุตไปยังบัฟเฟอร์ถัดไปในเชนก่อนที่จะมีการจัดสรรบัฟเฟอร์ใหม่
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
InitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
เริ่มต้นออบเจ็กต์ TLVWriter เพื่อเขียนลงในบัฟเฟอร์แบบไดนามิก
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
OpenContainer
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
เริ่มต้นออบเจ็กต์ TLVWriter ใหม่เพื่อเขียนสมาชิกขององค์ประกอบคอนเทนเนอร์ TLV
เมธอด OpenContainer() ใช้เพื่อเขียนเอลิเมนต์ของคอนเทนเนอร์ TLV (โครงสร้าง อาร์เรย์ หรือเส้นทาง) ไปยังการเข้ารหัส เมธอดจะใช้ประเภทและแท็ก (หากมี) ของคอนเทนเนอร์ใหม่ และการอ้างอิงไปยังออบเจ็กต์ผู้เขียนใหม่ (คอนเทนเนอร์เขียนคอนเทนเนอร์) ที่จะเริ่มเขียนองค์ประกอบของคอนเทนเนอร์ แอปพลิเคชันจะเขียนสมาชิกของคอนเทนเนอร์ใหม่โดยใช้ตัวเขียนคอนเทนเนอร์ จากนั้นเรียก CloseContainer() เพื่อเข้ารหัสคอนเทนเนอร์ให้เสร็จสิ้น
ขณะที่การเขียนคอนเทนเนอร์เปิดอยู่ แอปพลิเคชันต้องไม่เรียกใช้หรือเปลี่ยนแปลงสถานะของผู้เขียนหลัก
ตัวเขียนคอนเทนเนอร์จะรับช่วงพร็อพเพอร์ตี้การกำหนดค่าต่างๆ มาจากผู้เขียนระดับบนสุด ได้แก่
- รหัสโปรไฟล์โดยนัย (ImplicitProfileId)
- ตัวชี้ข้อมูลแอปพลิเคชัน (AppData)
- ตัวชี้ฟังก์ชัน GetNewBuffer และ FinalizeBuffer
รายละเอียด | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||
ผลลัพธ์ |
|
วาง
WEAVE_ERROR Put( uint64_t tag, int8_t v )
เข้ารหัสค่าจำนวนเต็มที่ลงนาม TLV
ฟังก์ชันนี้มีไว้เพื่อการใช้งานสำหรับสมาชิกมากเกินไปซึ่งมีไว้เพื่ออำนวยความสะดวก ซึ่งจะแตกต่างจากฟังก์ชันข้างต้นเฉพาะที่อาร์กิวเมนต์ที่ยอมรับ
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
ผลลัพธ์ |
|
วาง
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
เข้ารหัสค่าจำนวนเต็มที่ลงนาม TLV
ฟังก์ชันนี้มีไว้เพื่อการใช้งานสำหรับสมาชิกมากเกินไปซึ่งมีไว้เพื่ออำนวยความสะดวก ซึ่งจะแตกต่างจากฟังก์ชันข้างต้นเฉพาะที่อาร์กิวเมนต์ที่ยอมรับ
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
ผลลัพธ์ |
|
วาง
WEAVE_ERROR Put( uint64_t tag, int16_t v )
วาง
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
วาง
WEAVE_ERROR Put( uint64_t tag, int32_t v )
วาง
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
วาง
WEAVE_ERROR Put( uint64_t tag, int64_t v )
วาง
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
วาง
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
เข้ารหัสค่าจำนวนเต็มที่ไม่มีเครื่องหมาย TLV
ฟังก์ชันนี้มีไว้เพื่อการใช้งานสำหรับสมาชิกมากเกินไปซึ่งมีไว้เพื่ออำนวยความสะดวก ซึ่งจะแตกต่างจากฟังก์ชันข้างต้นเฉพาะที่อาร์กิวเมนต์ที่ยอมรับ
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
ผลลัพธ์ |
|
วาง
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
เข้ารหัสค่าจำนวนเต็มที่ไม่มีเครื่องหมาย TLV
ฟังก์ชันนี้มีไว้เพื่อการใช้งานสำหรับสมาชิกมากเกินไปซึ่งมีไว้เพื่ออำนวยความสะดวก ซึ่งจะแตกต่างจากฟังก์ชันข้างต้นเฉพาะที่อาร์กิวเมนต์ที่ยอมรับ
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
ผลลัพธ์ |
|
วาง
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
วาง
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
วาง
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
วาง
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
วาง
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
วาง
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
วาง
WEAVE_ERROR Put( uint64_t tag, float v )
วาง
WEAVE_ERROR Put( uint64_t tag, double v )
เข้ารหัสค่าทศนิยม TLV
ฟังก์ชันนี้มีไว้เพื่อการใช้งานสำหรับสมาชิกมากเกินไปซึ่งมีไว้เพื่ออำนวยความสะดวก ซึ่งจะแตกต่างจากฟังก์ชันข้างต้นเฉพาะที่อาร์กิวเมนต์ที่ยอมรับ
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
ผลลัพธ์ |
|
PutBoolean
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
เข้ารหัสค่าบูลีน TLV
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
ผลลัพธ์ |
|
PutBytes
WEAVE_ERROR PutBytes( uint64_t tag, const uint8_t *buf, uint32_t len )
เข้ารหัสค่าสตริงไบต์ TLV
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
ผลลัพธ์ |
|
PutNull
WEAVE_ERROR PutNull( uint64_t tag )
เข้ารหัสค่า Null TLV
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
ผลลัพธ์ |
|
PutPreEncodedContainer
WEAVE_ERROR PutPreEncodedContainer( uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen )
เข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV จากชุดองค์ประกอบสมาชิกที่เข้ารหัสล่วงหน้า
เมธอด PutPreEncodedContainer() จะเข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ใหม่ (โครงสร้าง อาร์เรย์ หรือเส้นทาง) ที่มีชุดองค์ประกอบสมาชิกที่นำมาจากบัฟเฟอร์ที่เข้ารหัสล่วงหน้า บัฟเฟอร์อินพุตควรมีองค์ประกอบ TLV ที่เข้ารหัสแบบเต็มเป็น 0 รายการขึ้นไป โดยมีแท็กที่สอดคล้องกับกฎที่เชื่อมโยงกับประเภทคอนเทนเนอร์ที่ระบุ (เช่น สมาชิกโครงสร้างต้องมีแท็ก ขณะที่สมาชิกอาร์เรย์ต้องไม่มีแท็ก)
เมธอดนี้จะเข้ารหัสองค์ประกอบคอนเทนเนอร์ทั้งหมดภายในการเรียกครั้งเดียว เมื่อ PutPreEncodedContainer() แสดงผล ระบบจะใช้ออบเจ็กต์ผู้เขียนเพื่อเขียนองค์ประกอบ TLV เพิ่มเติมตามหลังองค์ประกอบคอนเทนเนอร์
รายละเอียด | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||
ผลลัพธ์ |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
เข้ารหัสค่าสตริง UTF8 TLV
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
ผลลัพธ์ |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
เข้ารหัสค่าสตริง UTF8 TLV
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
ผลลัพธ์ |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
เข้ารหัสเอาต์พุตสตริงที่มีการจัดรูปแบบตามรูปแบบในองค์ประกอบ TLV
PutStringF เป็นแอนะล็อกของ Sprintf ที่เก็บเอาต์พุตไว้ในองค์ประกอบ TLV ไม่ใช่บัฟเฟอร์อักขระ เมื่อมีฟังก์ชันการทำงานของคำว่า "printf" เพิ่มเติม ฟังก์ชันดังกล่าวจะสามารถส่งออกสตริงผลลัพธ์ลงในพื้นที่เก็บข้อมูลที่เกี่ยวข้องซึ่งมีไม่ต่อเนื่องได้ การใช้งานนี้รองรับการเพิ่มประสิทธิภาพ Printf ต่อไปนี้
แพลตฟอร์มจะมี vcbprintf
แบบ Callback ที่ให้ความสามารถในการเรียก Callback ที่กําหนดเองแทน Putchar
แพลตฟอร์มมี vsnprintf
ที่เป็นตัวแปรชื่อ vsnprintf_ex
ซึ่งมีลักษณะการทำงานเหมือน vsnprintf ทุกประการ เพียงแต่มีการจัดสรรการละเว้นอักขระ n
ตัวแรกของเอาต์พุต
โปรดทราบว่าแม้ฟังก์ชันที่อิงตาม Callback อาจใช้งานง่ายที่สุดและใช้รหัสน้อยที่สุด แต่ฟังก์ชัน vsprintf_ex
ที่หลากหลายจะใช้สแต็กน้อยลง
หากไม่มีทั้ง 2 ตัวเลือกข้างต้น แต่แพลตฟอร์มมี malloc
ฟังก์ชันจะจัดสรรบัฟเฟอร์ชั่วคราวเพื่อเก็บเอาต์พุต เมื่อแพลตฟอร์มไม่ได้เพิ่มประสิทธิภาพให้กับตระกูลพิมพ์หรือ Malloc ระบบจะตัดเอาต์พุตให้สั้นพอดีกับสถานะที่ต่อเนื่องในพื้นที่เก็บข้อมูล TLV ปัจจุบัน
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
ผลลัพธ์ |
|
StartContainer
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
เริ่มการเข้ารหัสองค์ประกอบคอนเทนเนอร์ TLV ใหม่
เมธอด StartContainer() ใช้เพื่อเขียนเอลิเมนต์ของคอนเทนเนอร์ TLV (โครงสร้าง อาร์เรย์ หรือเส้นทาง) ไปยังการเข้ารหัส เมธอดจะใช้ประเภทและแท็ก (หากมี) ของคอนเทนเนอร์ใหม่ และการอ้างอิงไปยังค่า TLVType ซึ่งจะใช้เพื่อบันทึกบริบทปัจจุบันของผู้เขียนขณะที่ใช้เพื่อเขียนคอนเทนเนอร์
เมื่อเมธอด StartContainer() กลับมาแล้ว แอปพลิเคชันควรใช้ออบเจ็กต์ TLVWriter ในปัจจุบันเพื่อเขียนองค์ประกอบของคอนเทนเนอร์ เมื่อดำเนินการเสร็จแล้ว แอปพลิเคชันต้องเรียกใช้เมธอด EndContainer() เพื่อเข้ารหัสคอนเทนเนอร์ให้เสร็จ
รายละเอียด | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||
ผลลัพธ์ |
|
StartPutBytes
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
เข้ารหัสสตริงไบต์ TLV เป็นกลุ่มๆ
ควรใช้กับ ContinuePutBytes
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
ผลลัพธ์ |
|
VPutStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
เข้ารหัสเอาต์พุตสตริงที่มีการจัดรูปแบบตามรูปแบบในองค์ประกอบ TLV
PutStringF เป็นแอนะล็อกของ Sprintf ที่เก็บเอาต์พุตไว้ในองค์ประกอบ TLV ไม่ใช่บัฟเฟอร์อักขระ เมื่อมีฟังก์ชันการพิมพ์เพิ่มเติมพร้อมใช้งาน ฟังก์ชันดังกล่าวจะแสดงสตริงผลลัพธ์ลงในพื้นที่เก็บข้อมูลที่เกี่ยวข้องซึ่งมีไม่ต่อเนื่องได้ การใช้งานจะสนับสนุนการเพิ่มประสิทธิภาพสำหรับ Printf ต่อไปนี้
แพลตฟอร์มจะมี vcbprintf
แบบ Callback ที่ให้ความสามารถในการเรียก Callback ที่กําหนดเองแทน Putchar
แพลตฟอร์มมี vsnprintf
ที่เป็นตัวแปรชื่อ vsnprintf_ex
ซึ่งมีลักษณะการทำงานเหมือน vsnprintf ทุกประการ เพียงแต่มีการจัดสรรการละเว้นอักขระ n
ตัวแรกของเอาต์พุต
โปรดทราบว่าแม้ฟังก์ชันที่อิงตาม Callback อาจใช้งานง่ายที่สุดและใช้รหัสน้อยที่สุด แต่ฟังก์ชัน vsprintf_ex
ที่หลากหลายจะใช้สแต็กน้อยลง
หากไม่มีทั้ง 2 ตัวเลือกข้างต้น แต่แพลตฟอร์มมี malloc
ฟังก์ชันจะจัดสรรบัฟเฟอร์ชั่วคราวเพื่อเก็บเอาต์พุต เมื่อแพลตฟอร์มไม่ได้เพิ่มประสิทธิภาพให้กับตระกูลพิมพ์หรือ Malloc ระบบจะตัดเอาต์พุตให้สั้นพอดีกับสถานะที่ต่อเนื่องในพื้นที่เก็บข้อมูล TLV ปัจจุบัน
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
ผลลัพธ์ |
|
ฟังก์ชันสาธารณะแบบคงที่
FinalizePacketBuffer
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
การใช้งานฟังก์ชัน TLVWriter FinalizeBuffer สำหรับการเขียนไปยังเชน PacketBuffers
ฟังก์ชัน FinalizePacketBuffer() ทำการสรุปที่จำเป็นเมื่อใช้ TLVWriter เพื่อเขียนไปยังเชน PacketBuffers ฟังก์ชันนี้ออกแบบมาให้ใช้ร่วมกับฟังก์ชัน GetNewPacketBuffer()
ดูข้อมูลเพิ่มเติมเกี่ยวกับ API ของฟังก์ชัน FinalizePacketBuffer() ได้จากคำจำกัดความของประเภท FinalizeBufferFunct
GetNewBuffer_Malloced
WEAVE_ERROR GetNewBuffer_Malloced( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
การใช้งานฟังก์ชัน GetNewBuffer TLVWriter สำหรับการเขียนไปยังบัฟเฟอร์แบบไดนามิก
ฟังก์ชัน GetNewBuffer_Malloced() จะมอบพื้นที่เอาต์พุตใหม่ให้กับ TLVWriter ด้วยการเพิ่มขนาดของบัฟเฟอร์แบบไดนามิกที่อยู่เบื้องหลังเป็น 2 เท่าตามที่จำเป็นเพื่อจัดเก็บการเข้ารหัส ฟังก์ชันนี้ออกแบบมาเพื่อให้กำหนดให้กับเคอร์เซอร์ฟังก์ชัน TLVWriter GetNewBuffer
ดูข้อมูลเพิ่มเติมเกี่ยวกับ API ของฟังก์ชัน GetNewBuffer_Malloced() ได้ในคำจำกัดความของประเภท GetNewBufferFunct
GetNewPacketBuffer
WEAVE_ERROR GetNewPacketBuffer( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
การใช้งานฟังก์ชัน GetNewBuffer ของ TLVWriter สำหรับการเขียนไปยังเชน PacketBuffers
ฟังก์ชัน GetNewPacketBuffer() จะมอบพื้นที่เอาต์พุตใหม่ให้กับ TLVWriter โดยจัดสรรเชนของ PacketBuffers อย่างน้อย 1 รายการตามต้องการเพื่อจัดเก็บการเข้ารหัส ฟังก์ชันนี้ออกแบบมาเพื่อให้กำหนดให้กับเคอร์เซอร์ฟังก์ชัน TLVWriter GetNewBuffer
โปรดทราบว่าเมื่อใช้ GetNewPacketBuffer กับ TLVWriter ควรใช้ฟังก์ชัน FinalizePacketBuffer() (หรือเทียบเท่า) เพื่อสรุปเชนบัฟเฟอร์ด้วย
ดูข้อมูลเพิ่มเติมเกี่ยวกับ API ของฟังก์ชัน GetNewPacketBuffer() ได้ในคำจำกัดความของประเภท GetNewBufferFunct
ฟังก์ชันที่มีการป้องกัน
IsCloseContainerReserved
bool IsCloseContainerReserved( void ) const
ตรวจสอบว่าคอนเทนเนอร์ควรจองพื้นที่สำหรับสัญลักษณ์ CloseContainer ที่จุดเริ่มต้น / เปิดคอนเทนเนอร์หรือไม่
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
กำหนดว่าคอนเทนเนอร์ควรจองพื้นที่สำหรับสัญลักษณ์ CloseContainer ที่จุดเริ่มต้น / การเปิดคอนเทนเนอร์หรือไม่
SetContainerOpen
void SetContainerOpen( bool aContainerOpen )
WriteData
WEAVE_ERROR WriteData( const uint8_t *p, uint32_t len )
WriteElementHead
WEAVE_ERROR WriteElementHead( TLVElementType elemType, uint64_t tag, uint64_t lenOrVal )
WriteElementWithData
WEAVE_ERROR WriteElementWithData( TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen )