ไม่มี:: สาน:: ทีแอลวี:: 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(*
ฟังก์ชั่นที่สามารถใช้ในการดึงเพิ่มเติม 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)
เตรียมTLVReader วัตถุสำหรับการอ่านสมาชิกของ TLV องค์ประกอบภาชนะ
ExitContainer ( TLVType outerContainerType)
เสร็จสิ้นการอ่านที่ TLV ภาชนะบรรจุและเตรียมTLVReader วัตถุที่จะอ่านองค์ประกอบหลังจากภาชนะ
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
เริ่มต้นTLVReader วัตถุจากที่อื่นTLVReader วัตถุ
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)
ความก้าวหน้าTLVReader วัตถุถัดไป TLV องค์ประกอบที่จะอ่าน
Next ( TLVType expectedType, uint64_t expectedTag)
ความก้าวหน้าTLVReader วัตถุต่อไป TLV องค์ประกอบที่จะอ่านเข้าไปยุ่งเกี่ยวกับชนิดและแท็กขององค์ประกอบใหม่
OpenContainer (TLVReader & containerReader)
เริ่มต้นใหม่TLVReader วัตถุสำหรับการอ่านของสมาชิกที่ TLV องค์ประกอบภาชนะ
Skip (void)
ความก้าวหน้าTLVReader วัตถุทันทีหลังจากที่ปัจจุบัน TLV องค์ประกอบ
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 เมื่อเรียก ฟังก์ชันนี้คาดว่าจะสร้างข้อมูลเพิ่มเติมสำหรับผู้อ่านเพื่อแยกวิเคราะห์หรือส่งสัญญาณให้ผู้อ่านทราบว่าไม่มีข้อมูลเพิ่มเติม

รายละเอียด
พารามิเตอร์
[in] reader
การอ้างอิงไปยังTLVReader วัตถุที่ถูกขอให้ป้อนข้อมูล
[in,out] bufHandle
การอ้างอิงถึงค่า uintptr_t ที่ฟังก์ชันสามารถใช้เพื่อเก็บข้อมูลบริบทระหว่างการเรียก ค่านี้จะเริ่มต้นเป็น 0 ก่อนการโทรครั้งแรก
[in,out] bufStart
การอ้างอิงถึงตัวชี้ข้อมูล เกี่ยวกับการเข้าสู่ฟังก์ชั่น bufStart ชี้ไปที่หนึ่งไบต์เกินสุดท้าย TLV ไบต์ข้อมูลการบริโภคโดยผู้อ่าน เมื่อออกจาก bufStart คาดว่าจะชี้ไปที่ไบต์แรกของใหม่ TLV ข้อมูลที่จะแยกวิเคราะห์ ค่าตัวชี้ใหม่สามารถอยู่ภายในบัฟเฟอร์เดียวกันกับข้อมูลที่ใช้ก่อนหน้านี้ หรือสามารถชี้ไปที่บัฟเฟอร์ใหม่ทั้งหมด
[out] bufLen
อ้างอิงถึงจำนวนเต็มไม่ได้ลงนามว่าฟังก์ชั่นต้องตั้งค่าไปยังหมายเลขของ TLV ข้อมูลไบต์ถูกส่งกลับ หากในตอนท้ายของการป้อนข้อมูล TLV ข้อมูลที่ได้รับถึงฟังก์ชั่นควรตั้งค่านี้ให้เป็น 0
ส่งกลับค่า
WEAVE_NO_ERROR
หากฟังก์ชั่นที่ผลิตประสบความสำเร็จมาก TLV ข้อมูลหรือจุดสิ้นสุดของข้อมูลเข้ามาถึง ( bufLen ควรจะตั้งค่าเป็น 0 ในกรณีนี้)
other
รหัสข้อผิดพลาด Weave หรือเฉพาะแพลตฟอร์มอื่น ๆ ที่ระบุว่ามีข้อผิดพลาดเกิดขึ้นซึ่งทำให้ฟังก์ชันไม่สามารถสร้างข้อมูลที่ร้องขอได้

คุณลักษณะสาธารณะ

ข้อมูลแอพ

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-เริ่มต้นและต้องไม่ใช้มันต่อไปได้โดยไม่ต้องเริ่มต้นใหม่อีกครั้งมัน

รายละเอียด
พารามิเตอร์
[in] containerReader
การอ้างอิงไปยังTLVReader วัตถุที่ถูกจ่ายให้กับ OpenContainer () วิธีการ
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_INCORRECT_STATE
หาก OpenContainer () ไม่ได้รับการเรียกร้องให้ผู้อ่านหรือถ้าอ่านภาชนะที่ไม่ตรงกับที่ส่งผ่านไปยัง OpenContainer () วิธีการ
WEAVE_ERROR_TLV_UNDERRUN
ถ้าพื้นฐาน TLV เข้ารหัสสิ้นสุดลงก่อนกำหนด
WEAVE_ERROR_INVALID_TLV_ELEMENT
หากผู้อ่านพบข้อที่ไม่ถูกต้องหรือไม่สนับสนุน TLV ประเภทองค์ประกอบ
WEAVE_ERROR_INVALID_TLV_TAG
หากผู้อ่านพบ TLV แท็กในบริบทที่ไม่ถูกต้อง
other
สานหรือข้อผิดพลาดอื่น ๆ แพลตฟอร์มรหัสส่งกลับโดยการกำหนดค่า GetNextBuffer () ฟังก์ชั่น เป็นไปได้เฉพาะเมื่อ GetNextBuffer ไม่ใช่ NULL

DupBytes

WEAVE_ERROR DupBytes(
  uint8_t *& buf,
  uint32_t & dataLen
)

จัดสรรและส่งกลับบัฟเฟอร์ที่มีค่าของไบต์ปัจจุบันหรือสตริง UTF8

เมธอดนี้จะสร้างบัฟเฟอร์และส่งกลับสำเนาของข้อมูลที่เกี่ยวข้องกับองค์ประกอบสตริงไบต์หรือ UTF-8 ที่ตำแหน่งปัจจุบัน ได้รับหน่วยความจำสำหรับบัฟเฟอร์ด้วย malloc() และควรว่างด้วย free() โดยผู้เรียกเมื่อไม่ต้องการใช้อีกต่อไป

รายละเอียด
พารามิเตอร์
[out] buf
อ้างอิงถึงตัวชี้ไปที่กองบัฟเฟอร์จัดสรร dataLen ไบต์จะได้รับมอบหมายในความสำเร็จ
[out] dataLen
อ้างอิงถึงการจัดเก็บข้อมูลสำหรับขนาดไบต์ buf กับความสำเร็จ
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_WRONG_TLV_TYPE
ถ้าองค์ประกอบในปัจจุบันไม่ได้เป็น TLV ไบต์หรือ UTF8 สตริงหรืออ่านไม่ได้วางอยู่บนองค์ประกอบ
WEAVE_ERROR_NO_MEMORY
หากไม่สามารถจัดสรรหน่วยความจำสำหรับบัฟเฟอร์เอาต์พุตได้
WEAVE_ERROR_TLV_UNDERRUN
ถ้าพื้นฐาน TLV เข้ารหัสสิ้นสุดลงก่อนกำหนด
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
หากแพลตฟอร์มเป้าหมายไม่รองรับ malloc() และ free()
other
สานหรือข้อผิดพลาดอื่น ๆ แพลตฟอร์มรหัสส่งกลับโดยการกำหนดค่า GetNextBuffer () ฟังก์ชั่น เป็นไปได้เฉพาะเมื่อ GetNextBuffer ไม่ใช่ NULL

DupString

WEAVE_ERROR DupString(
  char *& buf
)

จัดสรรและส่งกลับบัฟเฟอร์ที่มีค่าสิ้นสุดด้วยค่า null ของไบต์ปัจจุบันหรือสตริง UTF8

เมธอดนี้จะสร้างบัฟเฟอร์และส่งกลับสำเนาที่สิ้นสุดด้วยค่า null ของข้อมูลที่เชื่อมโยงกับองค์ประกอบสตริงไบต์หรือ UTF-8 ที่ตำแหน่งปัจจุบัน ได้รับหน่วยความจำสำหรับบัฟเฟอร์ด้วย malloc() และควรว่างด้วย free() โดยผู้เรียกเมื่อไม่ต้องการใช้อีกต่อไป

รายละเอียด
พารามิเตอร์
[out] buf
การอ้างอิงไปยังพอยน์เตอร์ที่บัฟเฟอร์ที่จัดสรรแบบฮีปจะถูกกำหนดเมื่อสำเร็จ
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_WRONG_TLV_TYPE
ถ้าองค์ประกอบในปัจจุบันไม่ได้เป็น TLV ไบต์หรือ UTF8 สตริงหรืออ่านไม่ได้วางอยู่บนองค์ประกอบ
WEAVE_ERROR_NO_MEMORY
หากไม่สามารถจัดสรรหน่วยความจำสำหรับบัฟเฟอร์เอาต์พุตได้
WEAVE_ERROR_TLV_UNDERRUN
ถ้าพื้นฐาน TLV เข้ารหัสสิ้นสุดลงก่อนกำหนด
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
หากแพลตฟอร์มเป้าหมายไม่รองรับ malloc() และ free()
other
สานหรือข้อผิดพลาดอื่น ๆ แพลตฟอร์มรหัสส่งกลับโดยการกำหนดค่า GetNextBuffer () ฟังก์ชั่น เป็นไปได้เฉพาะเมื่อ GetNextBuffer ไม่ใช่ NULL

EnterContainer

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

เตรียมTLVReader วัตถุสำหรับการอ่านสมาชิกของ TLV องค์ประกอบภาชนะ

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

เมื่อ EnterContainer () เรียกว่าTLVReader วัตถุต้องวางองค์ประกอบภาชนะที่จะอ่าน เมธอดนี้ใช้เป็นอาร์กิวเมนต์ในการอ้างอิงถึงค่า TLVType ซึ่งจะใช้เพื่อบันทึกบริบทของผู้อ่านในขณะที่กำลังอ่านคอนเทนเนอร์

เมื่อ EnterContainer () วิธีการส่งกลับผู้อ่านอยู่ในตำแหน่งทันทีก่อนที่จะเป็นสมาชิกคนแรกของภาชนะ ซ้ำแล้วซ้ำอีกเรียก ถัดไป () จะได้เลื่อนอ่านผ่านสมาชิกของคอลเลกชันจนจบถึงจุดที่ผู้อ่านจะกลับ WEAVE_END_OF_TLV

เมื่อใบสมัครได้เสร็จสิ้นการอ่านภาชนะก็สามารถอ่านต่อองค์ประกอบหลังจากภาชนะโดยการเรียก ExitContainer () วิธีการ

รายละเอียด
พารามิเตอร์
[out] outerContainerType
การอ้างอิงถึงค่า TLVType ที่จะได้รับบริบทของผู้อ่าน
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_INCORRECT_STATE
หากองค์ประกอบปัจจุบันไม่อยู่ในตำแหน่งองค์ประกอบคอนเทนเนอร์

ทางออกคอนเทนเนอร์

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

เสร็จสิ้นการอ่านที่ TLV ภาชนะบรรจุและเตรียมTLVReader วัตถุที่จะอ่านองค์ประกอบหลังจากภาชนะ

ExitContainer () วิธีการเรียกคืนสถานะของที่TLVReader วัตถุหลังจากที่โทรไป EnterContainer () สำหรับการโทรทุก EnterContainer () การใช้งานจะต้องทำให้การเรียกร้องที่สอดคล้องกับ ExitContainer () ผ่านค่าบริบทส่งกลับโดย EnterContainer () วิธีการ

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

เมื่อ EnterContainer () ได้รับการเรียกการใช้งานสามารถเรียก ExitContainer () ผู้อ่านที่จุดใด ๆ ในเวลาไม่คำนึงถึงว่าทุกองค์ประกอบในภาชนะพื้นฐานได้รับการอ่าน

รายละเอียด
พารามิเตอร์
[in] outerContainerType
ค่า TLVType ที่ถูกส่งกลับโดย EnterContainer () วิธีการ
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_INCORRECT_STATE
หาก OpenContainer () ไม่ได้รับการเรียกร้องให้ผู้อ่านหรือถ้าอ่านภาชนะที่ไม่ตรงกับที่ส่งผ่านไปยัง OpenContainer () วิธีการ
WEAVE_ERROR_TLV_UNDERRUN
ถ้าพื้นฐาน TLV เข้ารหัสสิ้นสุดลงก่อนกำหนด
WEAVE_ERROR_INVALID_TLV_ELEMENT
หากผู้อ่านพบข้อที่ไม่ถูกต้องหรือไม่สนับสนุน TLV ประเภทองค์ประกอบ
WEAVE_ERROR_INVALID_TLV_TAG
หากผู้อ่านพบ TLV แท็กในบริบทที่ไม่ถูกต้อง
other
สานหรือข้อผิดพลาดอื่น ๆ แพลตฟอร์มรหัสส่งกลับโดยการกำหนดค่า GetNextBuffer () ฟังก์ชั่น เป็นไปได้เฉพาะเมื่อ GetNextBuffer ไม่ใช่ NULL

รับ

WEAVE_ERROR Get(
  bool & v
)

รับค่าขององค์ประกอบปัจจุบันเป็นประเภทบูล

รายละเอียด
พารามิเตอร์
[out] v
ได้รับค่าที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_WRONG_TLV_TYPE
ถ้าองค์ประกอบในปัจจุบันไม่ได้เป็น TLV ชนิดบูลีนหรือผู้อ่านที่ไม่ได้วางอยู่บนองค์ประกอบ

รับ

WEAVE_ERROR Get(
  int8_t & v
)

รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็มที่ลงนาม 8 บิต

หากค่าจำนวนเต็มที่เข้ารหัสมากกว่าชนิดข้อมูลเอาต์พุต ค่าผลลัพธ์จะถูกตัดทอน

รายละเอียด
พารามิเตอร์
[out] v
ได้รับค่าที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_WRONG_TLV_TYPE
ถ้าองค์ประกอบในปัจจุบันไม่ได้เป็น TLV ชนิดจำนวนเต็ม (ลงนามหรือไม่ได้ลงนาม) หรือผู้อ่านที่ไม่ได้วางอยู่บนองค์ประกอบ

รับ

WEAVE_ERROR Get(
  int16_t & v
)

รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็มที่ลงนาม 16 บิต

หากค่าจำนวนเต็มที่เข้ารหัสมากกว่าชนิดข้อมูลเอาต์พุต ค่าผลลัพธ์จะถูกตัดทอน

รายละเอียด
พารามิเตอร์
[out] v
ได้รับค่าที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_WRONG_TLV_TYPE
ถ้าองค์ประกอบในปัจจุบันไม่ได้เป็น TLV ชนิดจำนวนเต็ม (ลงนามหรือไม่ได้ลงนาม) หรือผู้อ่านที่ไม่ได้วางอยู่บนองค์ประกอบ

รับ

WEAVE_ERROR Get(
  int32_t & v
)

รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็มที่ลงนามแบบ 32 บิต

หากค่าจำนวนเต็มที่เข้ารหัสมากกว่าชนิดข้อมูลเอาต์พุต ค่าผลลัพธ์จะถูกตัดทอน

รายละเอียด
พารามิเตอร์
[out] v
ได้รับค่าที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_WRONG_TLV_TYPE
ถ้าองค์ประกอบในปัจจุบันไม่ได้เป็น TLV ชนิดจำนวนเต็ม (ลงนามหรือไม่ได้ลงนาม) หรือผู้อ่านที่ไม่ได้วางอยู่บนองค์ประกอบ

รับ

WEAVE_ERROR Get(
  int64_t & v
)

รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็มที่ลงนาม 64 บิต

หากค่าจำนวนเต็มที่เข้ารหัสมากกว่าชนิดข้อมูลเอาต์พุต ค่าผลลัพธ์จะถูกตัดทอน

รายละเอียด
พารามิเตอร์
[out] v
ได้รับค่าที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_WRONG_TLV_TYPE
ถ้าองค์ประกอบในปัจจุบันไม่ได้เป็น TLV ชนิดจำนวนเต็ม (ลงนามหรือไม่ได้ลงนาม) หรือผู้อ่านที่ไม่ได้วางอยู่บนองค์ประกอบ

รับ

WEAVE_ERROR Get(
  uint8_t & v
)

รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็ม 8 บิตที่ไม่ได้ลงนาม

หากค่าจำนวนเต็มที่เข้ารหัสมากกว่าชนิดข้อมูลเอาต์พุต ค่าผลลัพธ์จะถูกตัดทอน ในทำนองเดียวกัน หากค่าจำนวนเต็มที่เข้ารหัสเป็นค่าลบ ค่าจะถูกแปลงเป็นค่าที่ไม่ได้ลงนาม

รายละเอียด
พารามิเตอร์
[out] v
ได้รับค่าที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_WRONG_TLV_TYPE
ถ้าองค์ประกอบในปัจจุบันไม่ได้เป็น TLV ชนิดจำนวนเต็ม (ลงนามหรือไม่ได้ลงนาม) หรือผู้อ่านที่ไม่ได้วางอยู่บนองค์ประกอบ

รับ

WEAVE_ERROR Get(
  uint16_t & v
)

รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็ม 16 บิตที่ไม่ได้ลงนาม

หากค่าจำนวนเต็มที่เข้ารหัสมากกว่าชนิดข้อมูลเอาต์พุต ค่าผลลัพธ์จะถูกตัดทอน ในทำนองเดียวกัน หากค่าจำนวนเต็มที่เข้ารหัสเป็นค่าลบ ค่าจะถูกแปลงเป็นค่าที่ไม่ได้ลงนาม

รายละเอียด
พารามิเตอร์
[out] v
ได้รับค่าที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_WRONG_TLV_TYPE
ถ้าองค์ประกอบในปัจจุบันไม่ได้เป็น TLV ชนิดจำนวนเต็ม (ลงนามหรือไม่ได้ลงนาม) หรือผู้อ่านที่ไม่ได้วางอยู่บนองค์ประกอบ

รับ

WEAVE_ERROR Get(
  uint32_t & v
)

รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็ม 32 บิตที่ไม่ได้ลงนาม

หากค่าจำนวนเต็มที่เข้ารหัสมากกว่าชนิดข้อมูลเอาต์พุต ค่าผลลัพธ์จะถูกตัดทอน ในทำนองเดียวกัน หากค่าจำนวนเต็มที่เข้ารหัสเป็นค่าลบ ค่าจะถูกแปลงเป็นค่าที่ไม่ได้ลงนาม

รายละเอียด
พารามิเตอร์
[out] v
ได้รับค่าที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_WRONG_TLV_TYPE
ถ้าองค์ประกอบในปัจจุบันไม่ได้เป็น TLV ชนิดจำนวนเต็ม (ลงนามหรือไม่ได้ลงนาม) หรือผู้อ่านที่ไม่ได้วางอยู่บนองค์ประกอบ

รับ

WEAVE_ERROR Get(
  uint64_t & v
)

รับค่าขององค์ประกอบปัจจุบันเป็นจำนวนเต็ม 64 บิตที่ไม่ได้ลงนาม

หากค่าจำนวนเต็มที่เข้ารหัสเป็นค่าลบ ค่าจะถูกแปลงเป็นค่าที่ไม่ได้ลงนาม

รายละเอียด
พารามิเตอร์
[out] v
ได้รับค่าที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_WRONG_TLV_TYPE
ถ้าองค์ประกอบในปัจจุบันไม่ได้เป็น TLV ชนิดจำนวนเต็ม (ลงนามหรือไม่ได้ลงนาม) หรือผู้อ่านที่ไม่ได้วางอยู่บนองค์ประกอบ

รับ

WEAVE_ERROR Get(
  float & v
)

รับ

WEAVE_ERROR Get(
  double & v
)

รับค่าขององค์ประกอบปัจจุบันเป็นตัวเลขทศนิยมที่มีความแม่นยำสองเท่า

รายละเอียด
พารามิเตอร์
[out] v
ได้รับค่าที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_WRONG_TLV_TYPE
ถ้าองค์ประกอบในปัจจุบันไม่ได้เป็น TLV ชนิดลอยจุดหรืออ่านไม่ได้วางอยู่บนองค์ประกอบ

GetBufHandle

uintptr_t GetBufHandle(
  void
) const 

GetBytes

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

รับค่าของไบต์ปัจจุบันหรือองค์ประกอบสตริง UTF8

เพื่อกำหนดขนาดบัฟเฟอร์ที่ต้องการเรียก GetLength () วิธีการก่อนที่จะเรียก GetBytes ()

รายละเอียด
พารามิเตอร์
[in] buf
ตัวชี้ไปยังบัฟเฟอร์เพื่อรับข้อมูลสตริง
[in] bufSize
ขนาดไบต์ของบัฟเฟอร์ที่ชี้ไปตาม buf
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_WRONG_TLV_TYPE
ถ้าองค์ประกอบในปัจจุบันไม่ได้เป็น TLV ไบต์หรือ UTF8 สตริงหรืออ่านไม่ได้วางอยู่บนองค์ประกอบ
WEAVE_ERROR_BUFFER_TOO_SMALL
หากบัฟเฟอร์ที่ให้มามีขนาดเล็กเกินไปที่จะเก็บข้อมูลที่เกี่ยวข้องกับองค์ประกอบปัจจุบัน
WEAVE_ERROR_TLV_UNDERRUN
ถ้าพื้นฐาน TLV เข้ารหัสสิ้นสุดลงก่อนกำหนด
other
สานหรือข้อผิดพลาดอื่น ๆ แพลตฟอร์มรหัสส่งกลับโดยการกำหนดค่า GetNextBuffer () ฟังก์ชั่น เป็นไปได้เฉพาะเมื่อ GetNextBuffer ไม่ใช่ NULL

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 ทำให้วิธีการใช้ที่จำกัดเมื่ออ่านข้อมูลจากบัฟเฟอร์ที่ไม่ต่อเนื่องกันหลายตัว

รายละเอียด
พารามิเตอร์
[out] data
การอ้างอิงถึงตัวชี้ const ที่จะได้รับตัวชี้ไปยังข้อมูลสตริงที่อยู่ภายใต้
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_WRONG_TLV_TYPE
ถ้าองค์ประกอบในปัจจุบันไม่ได้เป็น TLV ไบต์หรือ UTF8 สตริงหรืออ่านไม่ได้วางอยู่บนองค์ประกอบ
WEAVE_ERROR_TLV_UNDERRUN
ถ้าพื้นฐาน TLV เข้ารหัสสิ้นสุดลงก่อนกำหนดหรือมูลค่าขององค์ประกอบสตริงปัจจุบันจะไม่ได้อยู่ในบัฟเฟอร์ที่ต่อเนื่องกันเพียงครั้งเดียว
other
สานหรือข้อผิดพลาดอื่น ๆ แพลตฟอร์มรหัสส่งกลับโดยการกำหนดค่า GetNextBuffer () ฟังก์ชั่น เป็นไปได้เฉพาะเมื่อ GetNextBuffer ไม่ใช่ NULL

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

รายละเอียด
พารามิเตอร์
[in] buf
ตัวชี้ไปยังบัฟเฟอร์เพื่อรับข้อมูลสตริงไบต์
[in] bufSize
ขนาดไบต์ของบัฟเฟอร์ที่ชี้ไปตาม buf
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_WRONG_TLV_TYPE
ถ้าองค์ประกอบในปัจจุบันไม่ได้เป็น TLV ไบต์หรือ UTF8 สตริงหรืออ่านไม่ได้วางอยู่บนองค์ประกอบ
WEAVE_ERROR_BUFFER_TOO_SMALL
หากบัฟเฟอร์ที่ให้มามีขนาดเล็กเกินไปที่จะเก็บข้อมูลที่เกี่ยวข้องกับองค์ประกอบปัจจุบัน
WEAVE_ERROR_TLV_UNDERRUN
ถ้าพื้นฐาน TLV เข้ารหัสสิ้นสุดลงก่อนกำหนด
other
สานหรือข้อผิดพลาดอื่น ๆ แพลตฟอร์มรหัสส่งกลับโดยการกำหนดค่า GetNextBuffer () ฟังก์ชั่น เป็นไปได้เฉพาะเมื่อ GetNextBuffer ไม่ใช่ NULL

GetTag

uint64_t GetTag(
  void
) const 

ส่งกลับแท็กที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ

ค่าส่งกลับโดย GetTag () สามารถใช้กับฟังก์ชั่นแท็กยูทิลิตี้ ( IsProfileTag () , IsContextTag () , ProfileIdFromTag () อื่น ๆ ) เพื่อกำหนดประเภทของแท็กและแยกค่าแท็กข้อมูลต่างๆ

รายละเอียด
คืนสินค้า
มีข้อมูลจำนวนเต็มไม่ได้ลงนามเกี่ยวกับแท็กที่เกี่ยวข้องกับปัจจุบัน TLV องค์ประกอบ

GetType

TLVType GetType(
  void
) const 

ผลตอบแทนที่ประเภทของปัจจุบัน TLV องค์ประกอบ

รายละเอียด
คืนสินค้า
ค่า TLVType อธิบายชนิดข้อมูลของปัจจุบัน TLV องค์ประกอบ หากผู้อ่านจะไม่ได้ตำแหน่งบน TLV องค์ประกอบค่าส่งกลับจะ kTLVType_NotSpecified

ในนั้น

void Init(
  const TLVReader & aReader
)

เริ่มต้นTLVReader วัตถุจากที่อื่นTLVReader วัตถุ

รายละเอียด
พารามิเตอร์
[in] aReader
อ้างอิงอ่านอย่างเดียวกับTLVReader ในการเริ่มต้นนี้จาก

ในนั้น

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

เริ่มต้นTLVReader วัตถุที่จะอ่านจากบัฟเฟอร์เดียว

รายละเอียด
พารามิเตอร์
[in] data
ตัวชี้ไปยังบัฟเฟอร์ที่มี TLV ข้อมูลที่จะแยกวิเคราะห์
[in] dataLen
ความยาวของ TLV ข้อมูลที่จะแยกวิเคราะห์

ในนั้น

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

เริ่มต้นTLVReader วัตถุที่จะอ่านจาก PacketBuffer เดียว

การแยกวิเคราะห์เริ่มต้นที่ตำแหน่งเริ่มต้นของบัฟเฟอร์ (buf->DataStart()) และดำเนินต่อไปจนกระทั่งสิ้นสุดข้อมูลในบัฟเฟอร์ (ตามที่แสดงโดย buf->Datalen()) หรือ maxLen ไบต์ได้รับการแยกวิเคราะห์แล้ว

รายละเอียด
พารามิเตอร์
[in] buf
ตัวชี้ไปยัง PacketBuffer มี TLV ข้อมูลที่จะแยกวิเคราะห์
[in] maxLen
จำนวนไบต์สูงสุดที่จะแยกวิเคราะห์ ค่าเริ่มต้นของปริมาณข้อมูลในบัฟเฟอร์อินพุต

ในนั้น

void Init(
  PacketBuffer *buf,
  uint32_t maxLen,
  bool allowDiscontiguousBuffers
)

InitializesTLVReader วัตถุที่จะอ่านจากหนึ่งหรือ PacketBuffers มากขึ้น

การแยกวิเคราะห์เริ่มต้นที่ตำแหน่งเริ่มต้นของบัฟเฟอร์เริ่มต้น (buf->DataStart()) หาก allowDiscontiguousBuffers เป็นความจริงที่ผู้อ่านจะได้เลื่อนผ่านห่วงโซ่ของการเชื่อมโยงโดยบัฟเฟอร์ของพวกเขา ต่อไป () ตัวชี้ การแยกวิเคราะห์จะดำเนินต่อไปจนกว่าจะมีการใช้ข้อมูลทั้งหมดในห่วงโซ่บัฟเฟอร์ (ตามที่แสดงโดย buf->Datalen()) หรือไบต์ maxLen ได้รับการแยกวิเคราะห์

รายละเอียด
พารามิเตอร์
[in] buf
ตัวชี้ไปยัง PacketBuffer มี TLV ข้อมูลที่จะแยกวิเคราะห์
[in] maxLen
จำนวนไบต์สูงสุดที่จะแยกวิเคราะห์ ค่าเริ่มต้นเป็นจำนวนข้อมูลทั้งหมดในห่วงโซ่บัฟเฟอร์อินพุต
[in] allowDiscontiguousBuffers
ถ้าเป็นจริง ให้ไปยังบัฟเฟอร์ถัดไปในสายโซ่เมื่อข้อมูลทั้งหมดในบัฟเฟอร์ปัจจุบันถูกใช้ไปหมดแล้ว หากเป็นเท็จ ให้หยุดการแยกวิเคราะห์ที่ส่วนท้ายของบัฟเฟอร์เริ่มต้น

ต่อไป

WEAVE_ERROR Next(
  void
)

ความก้าวหน้าTLVReader วัตถุถัดไป TLV องค์ประกอบที่จะอ่าน

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

ตั้งแต่ ถัดไป () จำกัด การเคลื่อนไหวอ่านบริบทบรรจุปัจจุบันเรียก ถัดไป () เมื่อผู้อ่านอยู่ในตำแหน่งในองค์ประกอบภาชนะที่จะได้เลื่อนมากกว่าภาชนะข้ามองค์ประกอบสมาชิก (และสมาชิกของตู้คอนเทนเนอร์ซ้อนกันใด ๆ ) จนกว่าจะถึงครั้งแรก องค์ประกอบหลังภาชนะ

เมื่อไม่มีองค์ประกอบต่อไปในบริบทการบรรจุโดยเฉพาะ ถัดไป () วิธีการจะกลับ WEAVE_END_OF_TLV ข้อผิดพลาดและตำแหน่งของผู้อ่านจะยังคงไม่เปลี่ยนแปลง

รายละเอียด
ส่งกลับค่า
WEAVE_NO_ERROR
หากผู้อ่านวางตำแหน่งบนองค์ประกอบใหม่ได้สำเร็จ
WEAVE_END_OF_TLV
หากไม่มีองค์ประกอบเพิ่มเติม
WEAVE_ERROR_TLV_UNDERRUN
ถ้าพื้นฐาน TLV เข้ารหัสสิ้นสุดลงก่อนกำหนด
WEAVE_ERROR_INVALID_TLV_ELEMENT
หากผู้อ่านพบข้อที่ไม่ถูกต้องหรือไม่สนับสนุน TLV ประเภทองค์ประกอบ
WEAVE_ERROR_INVALID_TLV_TAG
หากผู้อ่านพบ TLV แท็กในบริบทที่ไม่ถูกต้อง
WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG
หากผู้อ่านพบโดยปริยายเข้ารหัส TLV แท็กที่รหัสรายละเอียดที่สอดคล้องกันไม่เป็นที่รู้จัก
other
สานหรือข้อผิดพลาดอื่น ๆ แพลตฟอร์มรหัสส่งกลับโดยการกำหนดค่า GetNextBuffer () ฟังก์ชั่น เป็นไปได้เฉพาะเมื่อ GetNextBuffer ไม่ใช่ NULL

ต่อไป

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

ความก้าวหน้าTLVReader วัตถุต่อไป TLV องค์ประกอบที่จะอ่านเข้าไปยุ่งเกี่ยวกับชนิดและแท็กขององค์ประกอบใหม่

ถัดไป (TLVType expectedType, uint64_t expectedTag) วิธีการเป็นวิธีการที่สะดวกสบายที่มีพฤติกรรมเช่นเดียวกับ ถัดไป () แต่ยังยืนยันว่าชนิดและแท็กของใหม่ TLV องค์ประกอบตรงกับข้อโต้แย้งที่จัด

รายละเอียด
พารามิเตอร์
[in] expectedType
ชนิดข้อมูลที่คาดไว้สำหรับองค์ประกอบถัดไป
[in] expectedTag
แท็กที่คาดไว้สำหรับองค์ประกอบถัดไป
ส่งกลับค่า
WEAVE_NO_ERROR
หากผู้อ่านวางตำแหน่งบนองค์ประกอบใหม่ได้สำเร็จ
WEAVE_END_OF_TLV
หากไม่มีองค์ประกอบเพิ่มเติม
WEAVE_ERROR_WRONG_TLV_TYPE
ถ้าชนิดขององค์ประกอบใหม่ไม่ตรงกับค่าของ expectedType โต้แย้ง
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
หากแท็กที่เกี่ยวข้องกับองค์ประกอบใหม่ไม่ตรงกับค่าของ expectedTag โต้แย้ง
WEAVE_ERROR_TLV_UNDERRUN
ถ้าพื้นฐาน TLV เข้ารหัสสิ้นสุดลงก่อนกำหนด
WEAVE_ERROR_INVALID_TLV_ELEMENT
หากผู้อ่านพบข้อที่ไม่ถูกต้องหรือไม่สนับสนุน TLV ประเภทองค์ประกอบ
WEAVE_ERROR_INVALID_TLV_TAG
หากผู้อ่านพบ TLV แท็กในบริบทที่ไม่ถูกต้อง
other
สานหรือข้อผิดพลาดอื่น ๆ แพลตฟอร์มรหัสส่งกลับโดยการกำหนดค่า GetNextBuffer () ฟังก์ชั่น เป็นไปได้เฉพาะเมื่อ GetNextBuffer ไม่ใช่ NULL

OpenContainer

WEAVE_ERROR OpenContainer(
  TLVReader & containerReader
)

เริ่มต้นใหม่TLVReader วัตถุสำหรับการอ่านของสมาชิกที่ TLV องค์ประกอบภาชนะ

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

เมื่อ OpenContainer () วิธีการส่งกลับผู้อ่านภาชนะที่อยู่ในตำแหน่งทันทีก่อนที่จะเป็นสมาชิกคนแรกของภาชนะ โทร ถัดไป () ผู้อ่านภาชนะที่จะได้เลื่อนผ่านสมาชิกของคอลเลกชันจนจบถึงจุดที่ผู้อ่านจะกลับ WEAVE_END_OF_TLV

ขณะที่ตัวอ่านคอนเทนเนอร์เปิดอยู่ แอปพลิเคชันต้องไม่โทรออกหรือเปลี่ยนแปลงสถานะของโปรแกรมอ่านหลัก เมื่อโปรแกรมประยุกต์ได้เสร็จสิ้นการใช้เครื่องอ่านภาชนะที่จะต้องปิดมันโดยการเรียก CloseContainer () ผู้อ่านผู้ปกครองผ่านอ่านภาชนะที่เป็นอาร์กิวเมนต์ แอปพลิเคชันอาจปิดตัวอ่านคอนเทนเนอร์ ณ จุดใดก็ได้ โดยมีหรือไม่มีการอ่านองค์ประกอบทั้งหมดที่อยู่ในคอนเทนเนอร์พื้นฐาน หลังจากที่ปิดตัวอ่านคอนเทนเนอร์แล้ว แอปพลิเคชันอาจใช้งานตัวอ่านหลักต่อไปได้

ตัวอ่านคอนเทนเนอร์สืบทอดคุณสมบัติคอนฟิกูเรชันต่างๆ จากตัวอ่านพาเรนต์ เหล่านี้คือ:

  • รหัสโปรไฟล์โดยนัย (ImplicitProfileId)
  • ตัวชี้ข้อมูลแอปพลิเคชัน (AppData)
  • ตัวชี้ฟังก์ชัน GetNextBuffer

รายละเอียด
พารามิเตอร์
[out] containerReader
การอ้างอิงไปยังTLVReader วัตถุที่จะเริ่มต้นสำหรับการอ่านสมาชิกขององค์ประกอบภาชนะปัจจุบัน ข้อมูลใด ๆ ที่เกี่ยวข้องกับวัตถุที่ให้มาจะถูกเขียนทับ
ส่งกลับค่า
WEAVE_NO_ERROR
หากวิธีการสำเร็จ
WEAVE_ERROR_INCORRECT_STATE
หากองค์ประกอบปัจจุบันไม่ได้วางตำแหน่งบนองค์ประกอบคอนเทนเนอร์

ข้าม

WEAVE_ERROR Skip(
  void
)

ความก้าวหน้าTLVReader วัตถุทันทีหลังจากที่ปัจจุบัน TLV องค์ประกอบ

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

รายละเอียด
ส่งกลับค่า
WEAVE_NO_ERROR
หากผู้อ่านวางตำแหน่งบนองค์ประกอบใหม่ได้สำเร็จ
WEAVE_END_OF_TLV
หากไม่มีองค์ประกอบเพิ่มเติม
WEAVE_ERROR_TLV_UNDERRUN
ถ้าพื้นฐาน TLV เข้ารหัสสิ้นสุดลงก่อนกำหนด
WEAVE_ERROR_INVALID_TLV_ELEMENT
หากผู้อ่านพบข้อที่ไม่ถูกต้องหรือไม่สนับสนุน TLV ประเภทองค์ประกอบ
WEAVE_ERROR_INVALID_TLV_TAG
หากผู้อ่านพบ TLV แท็กในบริบทที่ไม่ถูกต้อง
other
สานหรือข้อผิดพลาดอื่น ๆ แพลตฟอร์มรหัสส่งกลับโดยการกำหนดค่า GetNextBuffer () ฟังก์ชั่น เป็นไปได้เฉพาะเมื่อ GetNextBuffer ไม่ใช่ NULL

ตรวจสอบEndOfContainer

WEAVE_ERROR VerifyEndOfContainer(
  void
)

ตรวจสอบว่าวัตถุ TVLReader อยู่ที่ท้ายของ TLV ภาชนะ

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

รายละเอียด
ส่งกลับค่า
WEAVE_NO_ERROR
If there are no further TLV elements to be read.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
If another TLV element was found in the collection.
WEAVE_ERROR_TLV_UNDERRUN
If the underlying TLV encoding ended prematurely.
WEAVE_ERROR_INVALID_TLV_ELEMENT
If the reader encountered an invalid or unsupported TLV element type.
WEAVE_ERROR_INVALID_TLV_TAG
If the reader encountered a TLV tag in an invalid context.
other
Other Weave or platform error codes returned by the configured GetNextBuffer() function. Only possible when GetNextBuffer is non-NULL.

ฟังก์ชันที่ได้รับการป้องกัน

ClearElementState

void ClearElementState(
  void
)

Clear the state of theTLVReader .

This method is used to position the reader before the first TLV , between TLVs or after the last TLV .

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.

รายละเอียด
ส่งกลับค่า
WEAVE_NO_ERROR
If the reader was successfully positioned at the end of the data.
other
Other Weave or platform error codes returned by the configured GetNextBuffer() function. Only possible when GetNextBuffer is non-NULL.

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
)