ไม่มี:: สาน:: ทีแอลวี:: TLVReader
#include <src/lib/core/WeaveTLV.h>
ให้หน่วยความจำตัวแยกวิเคราะห์ที่มีประสิทธิภาพสำหรับข้อมูลที่เข้ารหัสในสาน TLV รูปแบบ
สรุป
TLVReader ดำเนินไปข้างหน้าเท่านั้น“ดึงสไตล์” parser สำหรับสาน TLV ข้อมูลTLVReader วัตถุทำงานเป็นเคอร์เซอร์ที่สามารถนำมาใช้เพื่อย้ำกว่าลำดับที่ TLV องค์ประกอบและตีความเนื้อหาของพวกเขา เมื่อวางบนองค์ประกอบการใช้งานสามารถโทรไปยังผู้อ่าน รับ () วิธีการสอบถามประเภทองค์ประกอบปัจจุบันและแท็กและเพื่อดึงค่าใด ๆ ที่เกี่ยวข้อง ผู้อ่านของ ถัดไป () วิธีการที่ใช้ในการล่วงหน้าจากองค์ประกอบองค์ประกอบ
TLVReader วัตถุอยู่ในตำแหน่งที่เสมอทั้งก่อนหรือหลังจากที่ TLV องค์ประกอบ เมื่อเริ่มต้นแรกTLVReader อยู่ในตำแหน่งทันทีก่อนองค์ประกอบแรกของการเข้ารหัส เพื่อเริ่มต้นการอ่านโปรแกรมประยุกต์ต้องโทรเริ่มต้นไป ถัดไป () วิธีการที่จะวางตำแหน่งผู้อ่านในองค์ประกอบแรก เมื่อองค์ประกอบภาชนะ encounteredeither โครงสร้างอาร์เรย์หรือขายปลีก OpenContainer () หรือ EnterContainer () วิธีการที่สามารถใช้เพื่อย้ำผ่านเนื้อหาของภาชนะ
เมื่ออ่านถึงจุดสิ้นสุดของการ TLV เข้ารหัสหรือองค์ประกอบสุดท้ายภายในภาชนะมันส่งสัญญาณแอพลิเคชันโดยการกลับข้อผิดพลาด WEAVE_END_OF_TLV จาก ถัดไป () วิธีการ ผู้อ่านจะยังคงกลับ WEAVE_END_OF_TLV จนกว่าจะมีการเริ่มต้นใหม่หรือภาชนะที่ปัจจุบันมีการออก (ผ่าน CloseContainer () / ExitContainer () )
TLVReader วัตถุสามารถแยกข้อมูลโดยตรงจากบัฟเฟอร์คงที่หรือจากห่วงโซ่ของหนึ่งหรือมากกว่า PacketBuffers นอกจากนี้การใช้งานที่สามารถจัดหา GetNextBuffer
ฟังก์ชั่นข้อมูลฟีดให้ผู้อ่านจากแหล่งที่มาโดยพลการเช่นซ็อกเก็ตหรือพอร์ตอนุกรม
มรดก
คลาสย่อยที่รู้จักโดยตรง:nl::Weave::Profiles::DataManagement_Current::CircularEventReader
nl::สาน::TLV::CircularTLVReader
ประเภทสาธารณะ | |
---|---|
GetNextBufferFunct )(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen) | WEAVE_ERROR(*WEAVE_ERROR (* ฟังก์ชั่นที่สามารถใช้ในการดึงเพิ่มเติม TLV ข้อมูลที่จะแยกวิเคราะห์ |
คุณลักษณะสาธารณะ | |
---|---|
AppData | void * ฟิลด์ตัวชี้ที่สามารถใช้สำหรับข้อมูลเฉพาะแอปพลิเคชัน |
GetNextBuffer | ตัวชี้ไปยังฟังก์ชั่นที่จะผลิตป้อนข้อมูลสำหรับการTLVReader วัตถุ |
ImplicitProfileId | uint32_t รหัสโปรไฟล์ที่จะใช้สำหรับแท็กโปรไฟล์ที่เข้ารหัสในรูปแบบโดยนัย |
คุณสมบัติที่ได้รับการคุ้มครอง | |
---|---|
mBufEnd | const uint8_t * |
mBufHandle | uintptr_t |
mContainerType | |
mControlByte | uint16_t |
mElemLenOrVal | uint64_t |
mElemTag | uint64_t |
mLenRead | uint32_t |
mMaxLen | uint32_t |
mReadPoint | const uint8_t * |
งานสาธารณะ | |
---|---|
CloseContainer (TLVReader & containerReader) | เสร็จสิ้นการอ่านที่ TLV ภาชนะหลังจากที่โทรไป OpenContainer () |
DupBytes (uint8_t *& buf, uint32_t & dataLen) | จัดสรรและส่งกลับบัฟเฟอร์ที่มีค่าของไบต์ปัจจุบันหรือสตริง UTF8 |
DupString (char *& buf) | จัดสรรและส่งกลับบัฟเฟอร์ที่มีค่าสิ้นสุดด้วยค่า null ของไบต์ปัจจุบันหรือสตริง UTF8 |
EnterContainer ( TLVType & outerContainerType) | |
ExitContainer ( TLVType outerContainerType) | |
Get (bool & v) | รับค่าขององค์ประกอบปัจจุบันเป็นประเภทบูล |
Get (int8_t & v) | รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็มที่ลงนาม 8 บิต |
Get (int16_t & v) | รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็มที่ลงนาม 16 บิต |
Get (int32_t & v) | รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็มที่ลงนามแบบ 32 บิต |
Get (int64_t & v) | รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็มที่ลงนาม 64 บิต |
Get (uint8_t & v) | รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็ม 8 บิตที่ไม่ได้ลงนาม |
Get (uint16_t & v) | รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็ม 16 บิตที่ไม่ได้ลงนาม |
Get (uint32_t & v) | รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็ม 32 บิตที่ไม่ได้ลงนาม |
Get (uint64_t & v) | รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็ม 64 บิตที่ไม่ได้ลงนาม |
Get (float & v) | |
Get (double & v) | รับค่าขององค์ประกอบปัจจุบันเป็นตัวเลขทศนิยมที่มีความแม่นยำสองเท่า |
GetBufHandle (void) const | uintptr_t |
GetBytes (uint8_t *buf, uint32_t bufSize) | รับค่าของไบต์ปัจจุบันหรือองค์ประกอบสตริง UTF8 |
GetContainerType (void) const | ผลตอบแทนที่ประเภทของภาชนะบรรจุภายในที่TLVReader ในปัจจุบันคือการอ่าน |
GetControlByte (void) const | uint16_t ส่งกลับไบต์ควบคุมที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ |
GetDataPtr (const uint8_t *& data) | รับตัวชี้ไปยังไบต์เข้ารหัสเริ่มต้นของการเป็น TLV ไบต์หรือองค์ประกอบสตริง UTF8 |
GetLength (void) const | uint32_t คืนความยาวของข้อมูลที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ |
GetLengthRead (void) const | uint32_t ส่งกลับจำนวนไบต์ที่อ่านทั้งหมดตั้งแต่เริ่มต้นโปรแกรมอ่าน |
GetReadPoint (void) const | const uint8_t * รับค่าจุดในบัฟเฟอร์อินพุตพื้นฐานที่สอดคล้องกับตำแหน่งปัจจุบันของผู้อ่าน |
GetRemainingLength (void) const | uint32_t ส่งกลับจำนวนไบต์ทั้งหมดที่สามารถอ่านได้จนกว่าจะถึงความยาวสูงสุดในการอ่าน |
GetString (char *buf, uint32_t bufSize) | รับค่าของไบต์ปัจจุบันหรือองค์ประกอบสตริง UTF8 เป็นสตริงที่สิ้นสุดด้วยค่า null |
GetTag (void) const | uint64_t ส่งกลับแท็กที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ |
GetType (void) const | ผลตอบแทนที่ประเภทของปัจจุบัน TLV องค์ประกอบ |
Init (constTLVReader & aReader) | void |
Init (const uint8_t *data, uint32_t dataLen) | void เริ่มต้นTLVReader วัตถุที่จะอ่านจากบัฟเฟอร์เดียว |
Init ( PacketBuffer *buf, uint32_t maxLen) | void เริ่มต้นTLVReader วัตถุที่จะอ่านจาก PacketBuffer เดียว |
Init ( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers) | void InitializesTLVReader วัตถุที่จะอ่านจากหนึ่งหรือ PacketBuffers มากขึ้น |
Next (void) | |
Next ( TLVType expectedType, uint64_t expectedTag) | |
OpenContainer (TLVReader & containerReader) | |
Skip (void) | |
VerifyEndOfContainer (void) | ตรวจสอบว่าวัตถุ TVLReader อยู่ที่ท้ายของ TLV ภาชนะ |
ฟังก์ชันที่ได้รับการป้องกัน | |
---|---|
ClearElementState (void) | void ล้างรัฐของTLVReader |
ElementType (void) const | TLVElementType นี่เป็นวิธีการส่วนตัวที่ส่งคืน TLVElementType จาก mControlByte |
EnsureData ( WEAVE_ERROR noDataErr) | |
GetElementHeadLength (uint8_t & elemHeadBytes) const | นี้เป็นวิธีส่วนตัวใช้ในการคำนวณความยาวของที่ TLV หัวองค์ประกอบ |
IsContainerOpen (void) const | bool |
ReadData (uint8_t *buf, uint32_t len) | |
ReadElement (void) | |
ReadTag (TLVTagControl tagControl, const uint8_t *& p) | uint64_t |
SetContainerOpen (bool aContainerOpen) | void |
SkipData (void) | ข้ามข้อมูลใด ๆ ที่มีอยู่ในปัจจุบัน TLV โดยการอ่านมากกว่านั้นโดยไม่ต้องบัฟเฟอร์ปลายทาง |
SkipToEndOfContainer (void) | |
VerifyElement (void) |
ฟังก์ชั่นป้องกันไฟฟ้าสถิตย์ | |
---|---|
FailGetNextBuffer (TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen) | |
GetNextPacketBuffer (TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen) |
ประเภทสาธารณะ
GetNextBufferFunct
WEAVE_ERROR(* GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen)
ฟังก์ชั่นที่สามารถใช้ในการดึงเพิ่มเติม TLV ข้อมูลที่จะแยกวิเคราะห์
ฟังก์ชั่นประเภทนี้จะใช้ในการป้อนข้อมูลฟีดกับTLVReader เมื่อเรียก ฟังก์ชันนี้คาดว่าจะสร้างข้อมูลเพิ่มเติมสำหรับผู้อ่านเพื่อแยกวิเคราะห์หรือส่งสัญญาณให้ผู้อ่านทราบว่าไม่มีข้อมูลเพิ่มเติม
รายละเอียด | |||||||||
---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
| ||||||||
ส่งกลับค่า |
|
คุณลักษณะสาธารณะ
ข้อมูลแอพ
void * AppData
ฟิลด์ตัวชี้ที่สามารถใช้สำหรับข้อมูลเฉพาะแอปพลิเคชัน
GetNextBuffer
GetNextBufferFunct GetNextBuffer
ตัวชี้ไปยังฟังก์ชั่นที่จะผลิตป้อนข้อมูลสำหรับการTLVReader วัตถุ
หากตั้งค่าเป็น NULL (ค่าเริ่มต้น) ผู้อ่านจะถือว่าไม่มีข้อมูลป้อนเข้าเพิ่มเติม
แอปพลิเคชันสามารถตั้งค่า GetNextBuffer ได้ตลอดเวลา แต่โดยทั่วไปแล้วจะตั้งค่าเมื่อเครื่องอ่านเริ่มต้น
ดูข้อกำหนดประเภท GetNextBufferFunct สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ฟังก์ชัน GetNextBuffer
ImplicitProfileId
uint32_t ImplicitProfileId
รหัสโปรไฟล์ที่จะใช้สำหรับแท็กโปรไฟล์ที่เข้ารหัสในรูปแบบโดยนัย
เมื่อผู้อ่านพบแท็กรายละเอียดที่เฉพาะเจาะจงที่ได้รับการเข้ารหัสในรูปแบบโดยปริยายจะใช้ค่าของ ImplicitProfileId
คุณสมบัติเป็นรหัสโปรไฟล์สันนิษฐานสำหรับแท็ก
โดยค่าเริ่มต้น ImplicitProfileId
ตั้งค่าคุณสมบัติเป็น kProfileIdNotSpecified เมื่อถอดรหัส TLV ที่มีแท็กโดยปริยายเข้ารหัสการใช้งานต้องตั้ง ImplicitProfileId
ก่อนที่จะมีการอ่านใด ๆ TLV องค์ประกอบที่มีแท็กดังกล่าว รหัสโปรไฟล์ที่เหมาะสมมักจะขึ้นอยู่กับบริบทของแอปพลิเคชันหรือโปรโตคอลที่กำลังพูด
ถ้าแท็กโดยปริยายเข้ารหัสจะพบในขณะ ImplicitProfileId
ถูกตั้งค่าให้ kProfileIdNotSpecified ผู้อ่านจะกลับ WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG ข้อผิดพลาด
คุณสมบัติที่ได้รับการคุ้มครอง
mBufEnd
const uint8_t * mBufEnd
mBufHandle
uintptr_t mBufHandle
mContainerType
TLVType mContainerType
mControlByte
uint16_t mControlByte
mElemLenOrVal
uint64_t mElemLenOrVal
mElemTag
uint64_t mElemTag
mLenRead
uint32_t mLenRead
mMaxLen
uint32_t mMaxLen
mReadPoint
const uint8_t * mReadPoint
งานสาธารณะ
ปิดคอนเทนเนอร์
WEAVE_ERROR CloseContainer( TLVReader & containerReader )
เสร็จสิ้นการอ่านที่ TLV ภาชนะหลังจากที่โทรไป OpenContainer ()
CloseContainer () วิธีการเรียกคืนสถานะของผู้ปกครองTLVReader วัตถุหลังจากที่โทรไป OpenContainer () สำหรับการเรียกร้องให้ทุก OpenContainer () การใช้งานจะต้องทำให้การเรียกร้องที่สอดคล้องกับ CloseContainer () ผ่านการอ้างอิงไปยังผู้อ่านภาชนะเดียวกันกับทั้งสองวิธี
เมื่อ CloseContainer () ผลตอบแทนของผู้อ่านผู้ปกครองอยู่ในตำแหน่งทันทีก่อนองค์ประกอบแรกที่เป็นไปตามภาชนะ จากจุดนี้แอพลิเคชันสามารถใช้ ถัดไป () วิธีการในการล่วงหน้าผ่านองค์ประกอบใด ๆ ที่เหลือ
การประยุกต์ใช้งานสามารถเรียกใกล้ CloseContainer () ผู้อ่านผู้ปกครองที่จุดใด ๆ ในเวลาไม่คำนึงถึงว่าทุกองค์ประกอบในภาชนะพื้นฐานได้รับการอ่าน หลังจาก CloseContainer () ได้รับการเรียกแอพลิเคชันควรพิจารณาอ่านภาชนะ 'de-เริ่มต้นและต้องไม่ใช้มันต่อไปได้โดยไม่ต้องเริ่มต้นใหม่อีกครั้งมัน
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
| ||||||||||||
ส่งกลับค่า |
|
DupBytes
WEAVE_ERROR DupBytes( uint8_t *& buf, uint32_t & dataLen )
จัดสรรและส่งกลับบัฟเฟอร์ที่มีค่าของไบต์ปัจจุบันหรือสตริง UTF8
เมธอดนี้จะสร้างบัฟเฟอร์และส่งกลับสำเนาของข้อมูลที่เกี่ยวข้องกับองค์ประกอบสตริงไบต์หรือ UTF-8 ที่ตำแหน่งปัจจุบัน ได้รับหน่วยความจำสำหรับบัฟเฟอร์ด้วย malloc() และควรว่างด้วย free() โดยผู้เรียกเมื่อไม่ต้องการใช้อีกต่อไป
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
| ||||||||||||
ส่งกลับค่า |
|
DupString
WEAVE_ERROR DupString( char *& buf )
จัดสรรและส่งกลับบัฟเฟอร์ที่มีค่าสิ้นสุดด้วยค่า null ของไบต์ปัจจุบันหรือสตริง UTF8
เมธอดนี้จะสร้างบัฟเฟอร์และส่งกลับสำเนาที่สิ้นสุดด้วยค่า null ของข้อมูลที่เชื่อมโยงกับองค์ประกอบสตริงไบต์หรือ UTF-8 ที่ตำแหน่งปัจจุบัน ได้รับหน่วยความจำสำหรับบัฟเฟอร์ด้วย malloc() และควรว่างด้วย free() โดยผู้เรียกเมื่อไม่ต้องการใช้อีกต่อไป
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
| ||||||||||||
ส่งกลับค่า |
|
EnterContainer
WEAVE_ERROR EnterContainer( TLVType & outerContainerType )
เตรียมTLVReader วัตถุสำหรับการอ่านสมาชิกของ TLV องค์ประกอบภาชนะ
EnterContainer () วิธีการเตรียมความพร้อมในปัจจุบันTLVReader วัตถุที่จะเริ่มต้นการอ่านองค์ประกอบสมาชิกของ TLV ภาชนะ (โครงสร้างอาร์เรย์หรือเส้นทาง) สำหรับการเรียกร้องให้ทุก EnterContainer () การใช้งานจะต้องทำให้การเรียกร้องที่สอดคล้องกับ ExitContainer ()
เมื่อ EnterContainer () เรียกว่าTLVReader วัตถุต้องวางองค์ประกอบภาชนะที่จะอ่าน เมธอดนี้ใช้เป็นอาร์กิวเมนต์ในการอ้างอิงถึงค่า TLVType ซึ่งจะใช้เพื่อบันทึกบริบทของผู้อ่านในขณะที่กำลังอ่านคอนเทนเนอร์
เมื่อ EnterContainer () วิธีการส่งกลับผู้อ่านอยู่ในตำแหน่งทันทีก่อนที่จะเป็นสมาชิกคนแรกของภาชนะ ซ้ำแล้วซ้ำอีกเรียก ถัดไป () จะได้เลื่อนอ่านผ่านสมาชิกของคอลเลกชันจนจบถึงจุดที่ผู้อ่านจะกลับ WEAVE_END_OF_TLV
เมื่อใบสมัครได้เสร็จสิ้นการอ่านภาชนะก็สามารถอ่านต่อองค์ประกอบหลังจากภาชนะโดยการเรียก ExitContainer () วิธีการ
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
| ||||
ส่งกลับค่า |
|
ทางออกคอนเทนเนอร์
WEAVE_ERROR ExitContainer( TLVType outerContainerType )
เสร็จสิ้นการอ่านที่ TLV ภาชนะบรรจุและเตรียมTLVReader วัตถุที่จะอ่านองค์ประกอบหลังจากภาชนะ
ExitContainer () วิธีการเรียกคืนสถานะของที่TLVReader วัตถุหลังจากที่โทรไป EnterContainer () สำหรับการโทรทุก EnterContainer () การใช้งานจะต้องทำให้การเรียกร้องที่สอดคล้องกับ ExitContainer () ผ่านค่าบริบทส่งกลับโดย EnterContainer () วิธีการ
เมื่อ ExitContainer () ผลตอบแทนที่ผู้อ่านอยู่ในตำแหน่งทันทีก่อนองค์ประกอบแรกที่เป็นไปตามภาชนะ จากจุดนี้แอพลิเคชันสามารถใช้ ถัดไป () วิธีการในการล่วงหน้าผ่านองค์ประกอบใด ๆ ที่เหลือ
เมื่อ EnterContainer () ได้รับการเรียกการใช้งานสามารถเรียก ExitContainer () ผู้อ่านที่จุดใด ๆ ในเวลาไม่คำนึงถึงว่าทุกองค์ประกอบในภาชนะพื้นฐานได้รับการอ่าน
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
| ||||||||||||
ส่งกลับค่า |
|
รับ
WEAVE_ERROR Get( bool & v )
รับ
WEAVE_ERROR Get( int8_t & v )
รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็มที่ลงนาม 8 บิต
หากค่าจำนวนเต็มที่เข้ารหัสมากกว่าชนิดข้อมูลเอาต์พุต ค่าผลลัพธ์จะถูกตัดทอน
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
| ||||
ส่งกลับค่า |
|
รับ
WEAVE_ERROR Get( int16_t & v )
รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็มที่ลงนาม 16 บิต
หากค่าจำนวนเต็มที่เข้ารหัสมากกว่าชนิดข้อมูลเอาต์พุต ค่าผลลัพธ์จะถูกตัดทอน
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
| ||||
ส่งกลับค่า |
|
รับ
WEAVE_ERROR Get( int32_t & v )
รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็มที่ลงนามแบบ 32 บิต
หากค่าจำนวนเต็มที่เข้ารหัสมากกว่าชนิดข้อมูลเอาต์พุต ค่าผลลัพธ์จะถูกตัดทอน
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
| ||||
ส่งกลับค่า |
|
รับ
WEAVE_ERROR Get( int64_t & v )
รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็มที่ลงนาม 64 บิต
หากค่าจำนวนเต็มที่เข้ารหัสมากกว่าชนิดข้อมูลเอาต์พุต ค่าผลลัพธ์จะถูกตัดทอน
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
| ||||
ส่งกลับค่า |
|
รับ
WEAVE_ERROR Get( uint8_t & v )
รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็ม 8 บิตที่ไม่ได้ลงนาม
หากค่าจำนวนเต็มที่เข้ารหัสมากกว่าชนิดข้อมูลเอาต์พุต ค่าผลลัพธ์จะถูกตัดทอน ในทำนองเดียวกัน หากค่าจำนวนเต็มที่เข้ารหัสเป็นค่าลบ ค่าจะถูกแปลงเป็นค่าที่ไม่ได้ลงนาม
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
| ||||
ส่งกลับค่า |
|
รับ
WEAVE_ERROR Get( uint16_t & v )
รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็ม 16 บิตที่ไม่ได้ลงนาม
หากค่าจำนวนเต็มที่เข้ารหัสมากกว่าชนิดข้อมูลเอาต์พุต ค่าผลลัพธ์จะถูกตัดทอน ในทำนองเดียวกัน หากค่าจำนวนเต็มที่เข้ารหัสเป็นค่าลบ ค่าจะถูกแปลงเป็นค่าที่ไม่ได้ลงนาม
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
| ||||
ส่งกลับค่า |
|
รับ
WEAVE_ERROR Get( uint32_t & v )
รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็ม 32 บิตที่ไม่ได้ลงนาม
หากค่าจำนวนเต็มที่เข้ารหัสมากกว่าชนิดข้อมูลเอาต์พุต ค่าผลลัพธ์จะถูกตัดทอน ในทำนองเดียวกัน หากค่าจำนวนเต็มที่เข้ารหัสเป็นค่าลบ ค่าจะถูกแปลงเป็นค่าที่ไม่ได้ลงนาม
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
| ||||
ส่งกลับค่า |
|
รับ
WEAVE_ERROR Get( uint64_t & v )
รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็ม 64 บิตที่ไม่ได้ลงนาม
หากค่าจำนวนเต็มที่เข้ารหัสเป็นค่าลบ ค่าจะถูกแปลงเป็นค่าที่ไม่ได้ลงนาม
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
| ||||
ส่งกลับค่า |
|
รับ
WEAVE_ERROR Get( float & v )
รับ
WEAVE_ERROR Get( double & v )
GetBufHandle
uintptr_t GetBufHandle( void ) const
GetBytes
WEAVE_ERROR GetBytes( uint8_t *buf, uint32_t bufSize )
รับค่าของไบต์ปัจจุบันหรือองค์ประกอบสตริง UTF8
เพื่อกำหนดขนาดบัฟเฟอร์ที่ต้องการเรียก GetLength () วิธีการก่อนที่จะเรียก GetBytes ()
รายละเอียด | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
| ||||||||||
ส่งกลับค่า |
|
GetContainerType
TLVType GetContainerType( void ) const
ผลตอบแทนที่ประเภทของภาชนะบรรจุภายในที่TLVReader ในปัจจุบันคือการอ่าน
GetContainerType () วิธีการส่งกลับชนิดของ TLV ภาชนะภายในที่TLVReader อ่าน หากTLVReader อยู่ในตำแหน่งที่ด้านนอกสุดของระดับ TLV เข้ารหัส (เช่นก่อนในหรือหลังด้านนอกสุด TLV องค์ประกอบ) วิธีการที่จะกลับ kTLVType_NotSpecified
รายละเอียด | |
---|---|
คืนสินค้า | TLVType ของคอนเทนเนอร์ปัจจุบันหรือ kTLVType_NotSpecified ถ้าTLVReader จะไม่ได้ตำแหน่งภายในภาชนะ |
GetControlByte
uint16_t GetControlByte( void ) const
ส่งกลับไบต์ควบคุมที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ
จะเป็นการดีที่ไม่มีใครเคยต้องการทราบเกี่ยวกับการควบคุมไบต์และมีเพียงการดำเนินการภายในของ TLV ควรมีการเข้าถึงมัน แต่ยังคงมีการเข้าถึงไบต์ควบคุมจะเป็นประโยชน์สำหรับการแก้จุดบกพร่องวัตถุประสงค์โดย TLV Debug ยูทิลิตี้ (ที่พยายามที่จะถอดรหัสไบต์ควบคุมแท็กเมื่อสวยพิมพ์ TLV buffer เนื้อหา)
รายละเอียด | |
---|---|
คืนสินค้า | จำนวนเต็มไม่ได้ลงนามที่มีไบต์ควบคุมที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ kTLVControlByte_NotSpecified ถูกส่งกลับถ้าผู้อ่านไม่ได้วางอยู่บนองค์ประกอบ |
GetDataPtr
WEAVE_ERROR GetDataPtr( const uint8_t *& data )
รับตัวชี้ไปยังไบต์เข้ารหัสเริ่มต้นของการเป็น TLV ไบต์หรือองค์ประกอบสตริง UTF8
เมธอดนี้ส่งคืนตัวชี้ตรงเป็นค่าสตริงที่เข้ารหัสภายในบัฟเฟอร์อินพุตพื้นฐาน เพื่อให้สำเร็จ วิธีการนี้ต้องการให้ค่าสตริงทั้งหมดมีอยู่ในบัฟเฟอร์เดียว มิฉะนั้นวิธีการผลตอบแทน WEAVE_ERROR_TLV_UNDERRUN ทำให้วิธีการใช้ที่จำกัดเมื่ออ่านข้อมูลจากบัฟเฟอร์ที่ไม่ต่อเนื่องกันหลายตัว
รายละเอียด | |||||||||
---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
| ||||||||
ส่งกลับค่า |
|
GetLength
uint32_t GetLength( void ) const
คืนความยาวของข้อมูลที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ
ความยาวข้อมูลใช้กับอิลิเมนต์ประเภทสตริง UTF8 หรือสตริงไบต์เท่านั้น สำหรับสตริง UTF8 ค่าที่ส่งคืนคือจำนวนไบต์ในสตริง ไม่ใช่จำนวนอักขระ
รายละเอียด | |
---|---|
คืนสินค้า | ความยาว (ในไบต์) ของข้อมูลที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบหรือ 0 ถ้าองค์ประกอบปัจจุบันไม่ได้เป็นสตริง UTF8 หรือไบต์สตริงหรือถ้าผู้อ่านไม่ได้วางอยู่บนองค์ประกอบ |
GetLengthRead
uint32_t GetLengthRead( void ) const
ส่งกลับจำนวนไบต์ที่อ่านทั้งหมดตั้งแต่เริ่มต้นโปรแกรมอ่าน
รายละเอียด | |
---|---|
คืนสินค้า | จำนวนไบต์ที่อ่านทั้งหมดตั้งแต่เริ่มต้นผู้อ่าน |
GetReadPoint
const uint8_t * GetReadPoint( void ) const
รับค่าจุดในบัฟเฟอร์อินพุตพื้นฐานที่สอดคล้องกับตำแหน่งปัจจุบันของผู้อ่าน
รายละเอียด | |
---|---|
คืนสินค้า | ตัวชี้ไปยังบัฟเฟอร์อินพุตพื้นฐานที่สอดคล้องกับตำแหน่งปัจจุบันของผู้อ่าน |
GetRemainingLength
uint32_t GetRemainingLength( void ) const
ส่งกลับจำนวนไบต์ทั้งหมดที่สามารถอ่านได้จนกว่าจะถึงความยาวสูงสุดในการอ่าน
รายละเอียด | |
---|---|
คืนสินค้า | จำนวนไบต์ทั้งหมดที่สามารถอ่านได้จนกว่าจะถึงความยาวสูงสุดในการอ่าน |
GetString
WEAVE_ERROR GetString( char *buf, uint32_t bufSize )
รับค่าของไบต์ปัจจุบันหรือองค์ประกอบสตริง UTF8 เป็นสตริงที่สิ้นสุดด้วยค่า null
เพื่อกำหนดขนาดบัฟเฟอร์ที่ต้องการเรียก GetLength () วิธีการก่อนที่จะเรียก GetBytes () บัฟเฟอร์อินพุตควรใหญ่กว่าความยาวสตริงอย่างน้อยหนึ่งไบต์เพื่อรองรับอักขระ null
รายละเอียด | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
| ||||||||||
ส่งกลับค่า |
|
GetTag
uint64_t GetTag( void ) const
ส่งกลับแท็กที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ
ค่าส่งกลับโดย GetTag () สามารถใช้กับฟังก์ชั่นแท็กยูทิลิตี้ ( IsProfileTag () , IsContextTag () , ProfileIdFromTag () อื่น ๆ ) เพื่อกำหนดประเภทของแท็กและแยกค่าแท็กข้อมูลต่างๆ
รายละเอียด | |
---|---|
คืนสินค้า | มีข้อมูลจำนวนเต็มไม่ได้ลงนามเกี่ยวกับแท็กที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ |
GetType
TLVType GetType( void ) const
ในนั้น
void Init( const TLVReader & aReader )
ในนั้น
void Init( const uint8_t *data, uint32_t dataLen )
ในนั้น
void Init( PacketBuffer *buf, uint32_t maxLen )
เริ่มต้นTLVReader วัตถุที่จะอ่านจาก PacketBuffer เดียว
การแยกวิเคราะห์เริ่มต้นที่ตำแหน่งเริ่มต้นของบัฟเฟอร์ (buf->DataStart()) และดำเนินต่อไปจนกระทั่งสิ้นสุดข้อมูลในบัฟเฟอร์ (ตามที่แสดงโดย buf->Datalen()) หรือ maxLen ไบต์ได้รับการแยกวิเคราะห์แล้ว
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
ในนั้น
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
InitializesTLVReader วัตถุที่จะอ่านจากหนึ่งหรือ PacketBuffers มากขึ้น
การแยกวิเคราะห์เริ่มต้นที่ตำแหน่งเริ่มต้นของบัฟเฟอร์เริ่มต้น (buf->DataStart()) หาก allowDiscontiguousBuffers เป็นความจริงที่ผู้อ่านจะได้เลื่อนผ่านห่วงโซ่ของการเชื่อมโยงโดยบัฟเฟอร์ของพวกเขา ต่อไป () ตัวชี้ การแยกวิเคราะห์จะดำเนินต่อไปจนกว่าจะมีการใช้ข้อมูลทั้งหมดในห่วงโซ่บัฟเฟอร์ (ตามที่แสดงโดย buf->Datalen()) หรือไบต์ maxLen ได้รับการแยกวิเคราะห์
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
ต่อไป
WEAVE_ERROR Next( void )
ความก้าวหน้าTLVReader วัตถุถัดไป TLV องค์ประกอบที่จะอ่าน
ถัดไป () วิธีตำแหน่งวัตถุอ่านบนองค์ประกอบถัดไปใน TLV เข้ารหัสที่อยู่ในบริบทบรรจุเดียวกัน โดยเฉพาะอย่างยิ่งถ้าผู้อ่านอยู่ในตำแหน่งที่ด้านนอกสุดของระดับ TLV เข้ารหัสเรียก ถัดไป () จะได้เลื่อนอ่านต่อไปบนสุดองค์ประกอบ หากผู้อ่านที่อยู่ในตำแหน่งภายใน TLV องค์ประกอบภาชนะ (โครงสร้างอาร์เรย์หรือเส้นทาง) เรียก ถัดไป () จะเลื่อนผู้อ่านไปยังองค์ประกอบสมาชิกต่อไปของภาชนะ
ตั้งแต่ ถัดไป () จำกัด การเคลื่อนไหวอ่านบริบทบรรจุปัจจุบันเรียก ถัดไป () เมื่อผู้อ่านอยู่ในตำแหน่งในองค์ประกอบภาชนะที่จะได้เลื่อนมากกว่าภาชนะข้ามองค์ประกอบสมาชิก (และสมาชิกของตู้คอนเทนเนอร์ซ้อนกันใด ๆ ) จนกว่าจะถึงครั้งแรก องค์ประกอบหลังภาชนะ
เมื่อไม่มีองค์ประกอบต่อไปในบริบทการบรรจุโดยเฉพาะ ถัดไป () วิธีการจะกลับ WEAVE_END_OF_TLV ข้อผิดพลาดและตำแหน่งของผู้อ่านจะยังคงไม่เปลี่ยนแปลง
รายละเอียด | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ส่งกลับค่า |
|
ต่อไป
WEAVE_ERROR Next( TLVType expectedType, uint64_t expectedTag )
ความก้าวหน้าTLVReader วัตถุต่อไป TLV องค์ประกอบที่จะอ่านเข้าไปยุ่งเกี่ยวกับชนิดและแท็กขององค์ประกอบใหม่
ถัดไป (TLVType expectedType, uint64_t expectedTag) วิธีการเป็นวิธีการที่สะดวกสบายที่มีพฤติกรรมเช่นเดียวกับ ถัดไป () แต่ยังยืนยันว่าชนิดและแท็กของใหม่ TLV องค์ประกอบตรงกับข้อโต้แย้งที่จัด
รายละเอียด | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
| ||||||||||||||||
ส่งกลับค่า |
|
OpenContainer
WEAVE_ERROR OpenContainer( TLVReader & containerReader )
เริ่มต้นใหม่TLVReader วัตถุสำหรับการอ่านของสมาชิกที่ TLV องค์ประกอบภาชนะ
OpenContainer () วิธีการเริ่มต้นใหม่TLVReader วัตถุสำหรับการอ่านองค์ประกอบสมาชิกของ TLV ภาชนะ (โครงสร้างอาร์เรย์หรือเส้นทาง) เมื่อ OpenContainer () เรียกว่าปัจจุบันTLVReader วัตถุต้องวางองค์ประกอบภาชนะที่จะอ่าน วิธีการนี้ใช้เป็นอาร์กิวเมนต์เพียงข้อเดียวในการอ้างอิงถึงผู้อ่านใหม่ที่จะเริ่มต้นเพื่ออ่านคอนเทนเนอร์ ผู้อ่านนี้เป็นที่รู้จักกันเป็นผู้อ่านคอนเทนเนอร์ในขณะที่ผู้อ่านที่ OpenContainer () จะเรียกว่าเป็นที่รู้จักกันเป็นผู้อ่านผู้ปกครอง
เมื่อ OpenContainer () วิธีการส่งกลับผู้อ่านภาชนะที่อยู่ในตำแหน่งทันทีก่อนที่จะเป็นสมาชิกคนแรกของภาชนะ โทร ถัดไป () ผู้อ่านภาชนะที่จะได้เลื่อนผ่านสมาชิกของคอลเลกชันจนจบถึงจุดที่ผู้อ่านจะกลับ WEAVE_END_OF_TLV
ขณะที่ตัวอ่านคอนเทนเนอร์เปิดอยู่ แอปพลิเคชันต้องไม่โทรออกหรือเปลี่ยนแปลงสถานะของโปรแกรมอ่านหลัก เมื่อโปรแกรมประยุกต์ได้เสร็จสิ้นการใช้เครื่องอ่านภาชนะที่จะต้องปิดมันโดยการเรียก CloseContainer () ผู้อ่านผู้ปกครองผ่านอ่านภาชนะที่เป็นอาร์กิวเมนต์ แอปพลิเคชันอาจปิดตัวอ่านคอนเทนเนอร์ ณ จุดใดก็ได้ โดยมีหรือไม่มีการอ่านองค์ประกอบทั้งหมดที่อยู่ในคอนเทนเนอร์พื้นฐาน หลังจากที่ปิดตัวอ่านคอนเทนเนอร์แล้ว แอปพลิเคชันอาจใช้งานตัวอ่านหลักต่อไปได้
ตัวอ่านคอนเทนเนอร์สืบทอดคุณสมบัติคอนฟิกูเรชันต่างๆ จากตัวอ่านพาเรนต์ เหล่านี้คือ:
- รหัสโปรไฟล์โดยนัย (ImplicitProfileId)
- ตัวชี้ข้อมูลแอปพลิเคชัน (AppData)
- ตัวชี้ฟังก์ชัน GetNextBuffer
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
| ||||
ส่งกลับค่า |
|
ข้าม
WEAVE_ERROR Skip( void )
ความก้าวหน้าTLVReader วัตถุทันทีหลังจากที่ปัจจุบัน TLV องค์ประกอบ
ข้าม () ตำแหน่งวิธีการที่วัตถุอ่านทันทีหลังจากที่ปัจจุบัน TLV องค์ประกอบเช่นว่าโทรตามมาเพื่อ ถัดไป () จะได้เลื่อนอ่านองค์ประกอบดังต่อไปนี้ เช่น ถัดไป () ถ้าผู้อ่านที่อยู่ในตำแหน่งในองค์ประกอบภาชนะที่เวลาของการโทรสมาชิกของภาชนะที่จะข้ามไป หากผู้อ่านไม่ได้วางตำแหน่งบนองค์ประกอบใด ๆ ตำแหน่งของเครื่องอ่านจะไม่เปลี่ยนแปลง
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ส่งกลับค่า |
|
ตรวจสอบEndOfContainer
WEAVE_ERROR VerifyEndOfContainer( void )
ตรวจสอบว่าวัตถุ TVLReader อยู่ที่ท้ายของ TLV ภาชนะ
VerifyEndOfContainer () จะตรวจสอบวิธีการที่จะมีต่อไปไม่ TLV องค์ประกอบที่จะอ่านในปัจจุบัน TLV ภาชนะ นี้เป็นวิธีที่สะดวกสบายที่เทียบเท่ากับการเรียก ถัดไป () และการตรวจสอบสำหรับค่าตอบแทนของ WEAVE_END_OF_TLV
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ส่งกลับค่า |
|
ฟังก์ชันที่ได้รับการป้องกัน
ClearElementState
void ClearElementState( void )
ElementType
TLVElementType ElementType( void ) const
This is a private method that returns the TLVElementType from mControlByte.
EnsureData
WEAVE_ERROR EnsureData( WEAVE_ERROR noDataErr )
GetElementHeadLength
WEAVE_ERROR GetElementHeadLength( uint8_t & elemHeadBytes ) const
This is a private method used to compute the length of a TLV element head.
IsContainerOpen
bool IsContainerOpen( void ) const
ReadData
WEAVE_ERROR ReadData( uint8_t *buf, uint32_t len )
ReadElement
WEAVE_ERROR ReadElement( void )
ReadTag
uint64_t ReadTag( TLVTagControl tagControl, const uint8_t *& p )
SetContainerOpen
void SetContainerOpen( bool aContainerOpen )
SkipData
WEAVE_ERROR SkipData( void )
Skip any data contained in the current TLV by reading over it without a destination buffer.
รายละเอียด | |||||
---|---|---|---|---|---|
ส่งกลับค่า |
|
SkipToEndOfContainer
WEAVE_ERROR SkipToEndOfContainer( void )
VerifyElement
WEAVE_ERROR VerifyElement( void )
ฟังก์ชั่นป้องกันไฟฟ้าสถิตย์
FailGetNextBuffer
WEAVE_ERROR FailGetNextBuffer( TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen )
GetNextPacketBuffer
WEAVE_ERROR GetNextPacketBuffer( TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen )