Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Trang này được dịch bởi Cloud Translation API.
Switch to English

nl :: Dệt :: TLV :: TLVReader

#include <src/lib/core/WeaveTLV.h>

Cung cấp trình phân tích bộ nhớ hiệu quả cho dữ liệu được mã hóa ở định dạng Weave TLV .

Tóm lược

TLVReader triển khai trình phân tích cú pháp "kiểu kéo" chỉ chuyển tiếp cho dữ liệu Weave TLV . Đối tượngTLVReader hoạt động như một con trỏ có thể được sử dụng để lặp qua một chuỗi các phần tử TLV và diễn giải nội dung của chúng. Khi được định vị trên một phần tử, các ứng dụng có thể thực hiện lệnh gọi đến các phương thức Get () của trình đọc để truy vấn loại và thẻ của phần tử hiện tại, đồng thời trích xuất bất kỳ giá trị liên quan nào. Phương thức Next () của trình đọc được sử dụng để chuyển từ phần tử này sang phần tử khác.

Đối tượngTLVReader luôn được định vị trước, trên hoặc sau phần tử TLV . Khi lần đầu tiên được khởi tạo, mộtTLVReader được đặt ngay trước phần tử đầu tiên của mã hóa. Để bắt đầu đọc, một ứng dụng phải gọi phương thức Next () ban đầu để định vị trình đọc trên phần tử đầu tiên. Khi một phần tử vùng chứa gặp phải một cấu trúc, một mảng hoặc một đường dẫn , các phương thức OpenContainer () hoặc EnterContainer () có thể được sử dụng để lặp qua nội dung của vùng chứa.

Khi trình đọc đến cuối mã hóa TLV hoặc phần tử cuối cùng trong vùng chứa, trình đọc báo hiệu cho ứng dụng bằng cách trả về lỗi WEAVE_END_OF_TLV từ phương thức Next () . Người đọc sẽ tiếp tục quay trở lại WEAVE_END_OF_TLV đến khi nó được reinitialized, hoặc container hiện đang thoát (thông qua CloseContainer () / ExitContainer () ).

Đối tượngTLVReader có thể phân tích cú pháp dữ liệu trực tiếp từ một bộ đệm đầu vào cố định hoặc từ một chuỗi một hoặc nhiều Bộ đệm gói. Ngoài ra, các ứng dụng có thể cung cấp chức năng GetNextBuffer để cung cấp dữ liệu cho trình đọc từ một nguồn tùy ý, ví dụ như ổ cắm hoặc cổng nối tiếp.

Di sản

Các lớp con đã biết trực tiếp:
  nl :: Weave :: Profiles :: DataManagement_Current :: CircularEventReader
  nl :: Weave :: TLV :: CircularTLVReader

Các loại công khai

GetNextBufferFunct )(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR (*
Một chức năng có thể được sử dụng để truy xuất dữ liệu TLV bổ sung cần được phân tích cú pháp.

Thuộc tính công cộng

AppData
void *
Một trường con trỏ có thể được sử dụng cho dữ liệu dành riêng cho ứng dụng.
GetNextBuffer
Một con trỏ đến một hàm sẽ tạo ra dữ liệu đầu vào cho đối tượngTLVReader .
ImplicitProfileId
uint32_t
Id hồ sơ được sử dụng cho các thẻ hồ sơ được mã hóa ở dạng ẩn.

Thuộc tính được bảo vệ

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 *

Chức năng công cộng

CloseContainer (TLVReader & containerReader)
Hoàn tất việc đọc vùng chứa TLV sau khi gọi đến OpenContainer () .
DupBytes (uint8_t *& buf, uint32_t & dataLen)
Phân bổ và trả về bộ đệm chứa giá trị của byte hiện tại hoặc chuỗi UTF8.
DupString (char *& buf)
Phân bổ và trả về bộ đệm chứa giá trị kết thúc bằng null của byte hoặc chuỗi UTF8 hiện tại.
EnterContainer ( TLVType & outerContainerType)
Chuẩn bị một đối tượngTLVReader để đọc các thành viên của phần tử vùng chứa TLV .
ExitContainer ( TLVType outerContainerType)
Hoàn thành việc đọc vùng chứa TLV và chuẩn bị một đối tượngTLVReader để đọc các phần tử sau vùng chứa.
Get (bool & v)
Nhận giá trị của phần tử hiện tại dưới dạng kiểu bool.
Get (int8_t & v)
Nhận giá trị của phần tử hiện tại dưới dạng số nguyên có dấu 8 bit.
Get (int16_t & v)
Nhận giá trị của phần tử hiện tại dưới dạng số nguyên có dấu 16 bit.
Get (int32_t & v)
Nhận giá trị của phần tử hiện tại dưới dạng số nguyên có dấu 32 bit.
Get (int64_t & v)
Nhận giá trị của phần tử hiện tại dưới dạng số nguyên có dấu 64 bit.
Get (uint8_t & v)
Nhận giá trị của phần tử hiện tại dưới dạng số nguyên không dấu 8 bit.
Get (uint16_t & v)
Nhận giá trị của phần tử hiện tại dưới dạng số nguyên không dấu 16 bit.
Get (uint32_t & v)
Nhận giá trị của phần tử hiện tại dưới dạng số nguyên không dấu 32 bit.
Get (uint64_t & v)
Nhận giá trị của phần tử hiện tại dưới dạng số nguyên 64-bit không dấu.
Get (float & v)
Get (double & v)
Nhận giá trị của phần tử hiện tại dưới dạng số dấu phẩy động có độ chính xác kép.
GetBufHandle (void) const
uintptr_t
GetBytes (uint8_t *buf, uint32_t bufSize)
Nhận giá trị của byte hiện tại hoặc phần tử chuỗi UTF8.
GetContainerType (void) const
Trả về loại vùng chứa màTLVReader hiện đang đọc.
GetControlByte (void) const
uint16_t
Trả về byte điều khiển được liên kết với phần tử TLV hiện tại.
GetDataPtr (const uint8_t *& data)
Nhận một con trỏ đến byte được mã hóa ban đầu của byte TLV hoặc phần tử chuỗi UTF8.
GetLength (void) const
uint32_t
Trả về độ dài của dữ liệu được liên kết với phần tử TLV hiện tại.
GetLengthRead (void) const
uint32_t
Trả về tổng số byte đã đọc kể từ khi trình đọc được khởi tạo.
GetReadPoint (void) const
const uint8_t *
Lấy điểm trong bộ đệm đầu vào bên dưới tương ứng với vị trí hiện tại của đầu đọc.
GetRemainingLength (void) const
uint32_t
Trả về tổng số byte có thể đọc cho đến khi đạt đến độ dài đọc tối đa.
GetString (char *buf, uint32_t bufSize)
Nhận giá trị của byte hiện tại hoặc phần tử chuỗi UTF8 dưới dạng chuỗi kết thúc bằng null.
GetTag (void) const
uint64_t
Trả về thẻ được liên kết với phần tử TLV hiện tại.
GetType (void) const
Trả về kiểu của phần tử TLV hiện tại.
Init (constTLVReader & aReader)
void
Khởi tạo một đối tượngTLVReader từ một đối tượngTLVReader khác.
Init (const uint8_t *data, uint32_t dataLen)
void
Khởi tạo một đối tượngTLVReader để đọc từ một bộ đệm đầu vào duy nhất.
Init ( PacketBuffer *buf, uint32_t maxLen)
void
Khởi tạo một đối tượngTLVReader để đọc từ một PacketBuffer duy nhất.
Init ( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Khởi tạo một đối tượngTLVReader để đọc từ một hoặc nhiềuBộ đệm gói .
Next (void)
Chuyển đối tượngTLVReader thành phần tử TLV tiếp theo sẽ được đọc.
Next ( TLVType expectedType, uint64_t expectedTag)
Tiến đối tượngTLVReader thành phần tử TLV tiếp theo sẽ được đọc, xác nhận loại và thẻ của phần tử mới.
OpenContainer (TLVReader & containerReader)
Khởi tạo đối tượngTLVReader mới để đọc các thành viên của phần tử vùng chứa TLV .
Skip (void)
Nâng đối tượngTLVReader lên ngay sau phần tử TLV hiện tại.
VerifyEndOfContainer (void)
Xác minh rằng đối tượng TVLReader nằm ở cuối vùng chứa TLV .

Các chức năng được bảo vệ

ClearElementState (void)
void
Xóa trạng thái củaTLVReader .
ElementType (void) const
TLVElementType
Đây là một phương thức private trả về TLVElementType từ mControlByte.
EnsureData ( WEAVE_ERROR noDataErr)
GetElementHeadLength (uint8_t & elemHeadBytes) const
Đây là một phương pháp riêng được sử dụng để tính toán độ dài của phần đầu phần tử 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)
Bỏ qua bất kỳ dữ liệu nào có trong TLV hiện tại bằng cách đọc qua nó mà không có bộ đệm đích.
SkipToEndOfContainer (void)
VerifyElement (void)

Các chức năng tĩnh được bảo vệ

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)

Các loại công khai

GetNextBufferFunct

WEAVE_ERROR(* GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen)

Một chức năng có thể được sử dụng để truy xuất dữ liệu TLV bổ sung cần được phân tích cú pháp.

Các hàm thuộc loại này được sử dụng để cung cấp dữ liệu đầu vào choTLVReader . Khi được gọi, hàm được mong đợi tạo ra dữ liệu bổ sung để trình đọc phân tích cú pháp hoặc báo hiệu cho người đọc biết rằng không còn dữ liệu nào nữa.

Chi tiết
Thông số
[in] reader
Tham chiếu đến đối tượngTLVReader đang yêu cầu dữ liệu đầu vào.
[in,out] bufHandle
Tham chiếu đến giá trị uintptr_t mà hàm có thể sử dụng để lưu trữ dữ liệu ngữ cảnh giữa các cuộc gọi. Giá trị này được khởi tạo bằng 0 trước cuộc gọi đầu tiên.
[in,out] bufStart
Tham chiếu đến một con trỏ dữ liệu. Khi vào hàm, bufStart trỏ tới một byte vượt quá byte dữ liệu TLV cuối cùng được trình đọc sử dụng. Khi thoát, bufStart dự kiến ​​sẽ trỏ đến byte đầu tiên của dữ liệu TLV mới sẽ được phân tích cú pháp. Giá trị con trỏ mới có thể nằm trong cùng bộ đệm với dữ liệu đã sử dụng trước đó hoặc nó có thể trỏ đến một bộ đệm hoàn toàn mới.
[out] bufLen
Tham chiếu đến một số nguyên không dấu mà hàm phải đặt thành số byte dữ liệu TLV được trả về. Nếu đã đến cuối dữ liệu TLV đầu vào, thì hàm nên đặt giá trị này thành 0.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu hàm tạo thành công nhiều dữ liệu TLV hơn hoặc đã đạt đến cuối dữ liệu đầu vào ( bufLen nên được đặt thành 0 trong trường hợp này).
other
Các mã lỗi Weave hoặc nền tảng cụ thể khác cho biết rằng đã xảy ra lỗi ngăn chức năng tạo ra dữ liệu được yêu cầu.

Thuộc tính công cộng

Dữ liệu chương trình

void * AppData

Một trường con trỏ có thể được sử dụng cho dữ liệu dành riêng cho ứng dụng.

GetNextBuffer

GetNextBufferFunct GetNextBuffer

Một con trỏ đến một hàm sẽ tạo ra dữ liệu đầu vào cho đối tượngTLVReader .

Nếu được đặt thành NULL (giá trị mặc định), người đọc sẽ cho rằng không có thêm dữ liệu đầu vào nào nữa.

GetNextBuffer có thể được ứng dụng đặt bất kỳ lúc nào, nhưng thường được đặt khi trình đọc được khởi chạy.

Xem định nghĩa loại GetNextBufferFunct để biết thêm thông tin về cách triển khai hàm GetNextBuffer.

ImplicitProfileId

uint32_t ImplicitProfileId

Id hồ sơ được sử dụng cho các thẻ hồ sơ được mã hóa ở dạng ẩn.

Khi người đọc gặp thẻ cấu hình cụ thể đã được mã hóa ở dạng ẩn, nó sử dụng giá trị của thuộc tính ImplicitProfileId làm id cấu hình giả định cho thẻ.

Theo mặc định, thuộc tính ImplicitProfileId được đặt thành kProfileIdNotSpecified. Khi giải mã TLV có chứa các thẻ được mã hóa ngầm, các ứng dụng phải đặt ImplicitProfileId trước khi đọc bất kỳ phần tử TLV nào có các thẻ như vậy. Id hồ sơ thích hợp thường phụ thuộc vào ngữ cảnh của ứng dụng hoặc giao thức đang được nói.

Nếu gặp phải thẻ được mã hóa ImplicitProfileId trong khi ImplicitProfileId được đặt thành kProfileIdNotSpecified, trình đọc sẽ trả về lỗi WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG .

Thuộc tính được bảo vệ

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

Chức năng công cộng

CloseContainer

WEAVE_ERROR CloseContainer(
  TLVReader & containerReader
)

Hoàn tất việc đọc vùng chứa TLV sau khi gọi tới OpenContainer () .

Phương thứcCloseContainer () khôi phục trạng thái của đối tượngTLVReader mẹ sau khi gọi đến OpenContainer () . Đối với mọi cuộc gọi đến các ứng dụng OpenContainer () phải thực hiện một lệnh gọi tương ứng đến CloseContainer () , chuyển một tham chiếu đến cùng một bộ đọc vùng chứa cho cả hai phương thức.

Khi CloseContainer () trả về, trình đọc cha được đặt ngay trước phần tử đầu tiên theo sau vùng chứa. Từ thời điểm này, một ứng dụng có thể sử dụng phương thức Next () để tiến qua bất kỳ phần tử nào còn lại.

Các ứng dụng có thể gọi CloseContainer () đóng trên trình đọc chính tại bất kỳ thời điểm nào, bất kể tất cả các phần tử trong vùng chứa bên dưới đã được đọc chưa. Sau khi CloseContainer () đã được gọi, ứng dụng sẽ coi trình đọc vùng chứa là 'đã được khởi tạo' và không được sử dụng nó nữa nếu không khởi tạo lại nó.

Chi tiết
Thông số
[in] containerReader
Tham chiếu đến đối tượngTLVReader đã được cung cấp cho phương thức OpenContainer () .
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_INCORRECT_STATE
Nếu OpenContainer () chưa được gọi trên trình đọc, hoặc nếu trình đọc vùng chứa không khớp với phương thức được truyền đến phương thức OpenContainer () .
WEAVE_ERROR_TLV_UNDERRUN
Nếu mã hóa TLV bên dưới kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu người đọc gặp phải loại phần tử TLV không hợp lệ hoặc không được hỗ trợ.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu người đọc gặp thẻ TLV trong ngữ cảnh không hợp lệ.
other
Các mã lỗi nền tảng hoặc dệt khác được trả về bởi hàm GetNextBuffer () đã định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

DupBytes

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

Phân bổ và trả về bộ đệm chứa giá trị của byte hiện tại hoặc chuỗi UTF8.

Phương thức này tạo bộ đệm cho và trả về bản sao dữ liệu được liên kết với byte hoặc phần tử chuỗi UTF-8 ở vị trí hiện tại. Bộ nhớ cho bộ đệm được lấy bằng malloc () và nên được giải phóng bằng free () bởi người gọi khi nó không còn cần thiết.

Chi tiết
Thông số
[out] buf
Tham chiếu đến một con trỏ mà bộ đệm dataLen được phân bổ theo heap sẽ được chỉ định khi thành công.
[out] dataLen
Tham chiếu đến bộ nhớ cho kích thước, tính bằng byte, của buf khi thành công.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu phần tử hiện tại không phải là byte TLV hoặc chuỗi UTF8 hoặc trình đọc không được định vị trên phần tử.
WEAVE_ERROR_NO_MEMORY
Nếu không thể cấp phát bộ nhớ cho bộ đệm đầu ra.
WEAVE_ERROR_TLV_UNDERRUN
Nếu mã hóa TLV bên dưới kết thúc sớm.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
Nếu nền tảng đích không hỗ trợ malloc () và free ().
other
Các mã lỗi nền tảng hoặc dệt khác được trả về bởi hàm GetNextBuffer () đã định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

DupString

WEAVE_ERROR DupString(
  char *& buf
)

Phân bổ và trả về bộ đệm chứa giá trị kết thúc bằng null của byte hoặc chuỗi UTF8 hiện tại.

Phương thức này tạo bộ đệm cho và trả về bản sao kết thúc bằng null của dữ liệu được liên kết với phần tử chuỗi byte hoặc UTF-8 ở vị trí hiện tại. Bộ nhớ cho bộ đệm được lấy bằng malloc () và nên được giải phóng bằng free () bởi người gọi khi nó không còn cần thiết.

Chi tiết
Thông số
[out] buf
Tham chiếu đến một con trỏ mà bộ đệm được phân bổ theo heap sẽ được chỉ định khi thành công.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu phần tử hiện tại không phải là byte TLV hoặc chuỗi UTF8 hoặc trình đọc không được định vị trên phần tử.
WEAVE_ERROR_NO_MEMORY
Nếu không thể cấp phát bộ nhớ cho bộ đệm đầu ra.
WEAVE_ERROR_TLV_UNDERRUN
Nếu mã hóa TLV bên dưới kết thúc sớm.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
Nếu nền tảng đích không hỗ trợ malloc () và free ().
other
Các mã lỗi nền tảng hoặc dệt khác được trả về bởi hàm GetNextBuffer () đã định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

EnterContainer

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

Chuẩn bị một đối tượngTLVReader để đọc các thành viên của phần tử vùng chứa TLV .

Phương thức EnterContainer () chuẩn bị đối tượngTLVReader hiện tại để bắt đầu đọc các phần tử thành viên của vùng chứa TLV (cấu trúc, mảng hoặc đường dẫn). Đối với mỗi cuộc gọi đến các ứng dụng EnterContainer () phải thực hiện một cuộc gọi tương ứng đến ExitContainer () .

Khi EnterContainer () được gọi, đối tượngTLVReader phải được định vị trên phần tử vùng chứa để được đọc. Phương thức này coi như một đối số là một tham chiếu đến giá trị TLVType sẽ được sử dụng để lưu ngữ cảnh của trình đọc khi nó đang đọc vùng chứa.

Khi phương thức EnterContainer () trả về, trình đọc được đặt ngay trước thành viên đầu tiên của vùng chứa. Liên tục gọi Next () sẽ chuyển người đọc qua các thành viên của bộ sưu tập cho đến khi đạt được phần cuối, lúc này người đọc sẽ trả về WEAVE_END_OF_TLV.

Khi ứng dụng đã đọc xong một vùng chứa, nó có thể tiếp tục đọc các phần tử sau vùng chứa bằng cách gọi phương thức ExitContainer () .

Chi tiết
Thông số
[out] outerContainerType
Tham chiếu đến giá trị TLVType sẽ nhận được ngữ cảnh của người đọc.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_INCORRECT_STATE
Nếu phần tử hiện tại không được định vị trên phần tử vùng chứa.

ExitContainer

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

Hoàn tất việc đọc vùng chứa TLV và chuẩn bị đối tượngTLVReader để đọc các phần tử sau vùng chứa.

Phương thức ExitContainer () khôi phục trạng thái của một đối tượngTLVReader sau một cuộc gọi tới EnterContainer () . Đối với mọi cuộc gọi đến các ứng dụng EnterContainer () phải thực hiện một lệnh gọi tương ứng đến ExitContainer () , truyền giá trị ngữ cảnh được trả về bởi phương thức EnterContainer () .

Khi ExitContainer () trả về, trình đọc được đặt ngay trước phần tử đầu tiên theo sau vùng chứa. Từ thời điểm này, một ứng dụng có thể sử dụng phương thức Next () để tiến qua bất kỳ phần tử nào còn lại.

Khi EnterContainer () đã được gọi, các ứng dụng có thể gọi ExitContainer () trên trình đọc bất kỳ lúc nào, bất kể tất cả các phần tử trong vùng chứa bên dưới đã được đọc chưa.

Chi tiết
Thông số
[in] outerContainerType
Giá trị TLVType được trả về bởi phương thức EnterContainer () .
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_INCORRECT_STATE
Nếu OpenContainer () chưa được gọi trên trình đọc, hoặc nếu trình đọc vùng chứa không khớp với phương thức được truyền đến phương thức OpenContainer () .
WEAVE_ERROR_TLV_UNDERRUN
Nếu mã hóa TLV bên dưới kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu người đọc gặp phải loại phần tử TLV không hợp lệ hoặc không được hỗ trợ.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu người đọc gặp thẻ TLV trong ngữ cảnh không hợp lệ.
other
Các mã lỗi nền tảng hoặc dệt khác được trả về bởi hàm GetNextBuffer () đã định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

Được

WEAVE_ERROR Get(
  bool & v
)

Nhận giá trị của phần tử hiện tại dưới dạng kiểu bool.

Chi tiết
Thông số
[out] v
Nhận giá trị được liên kết với phần tử TLV hiện tại.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu phần tử hiện tại không phải là kiểu boolean TLV hoặc trình đọc không được định vị trên phần tử.

Được

WEAVE_ERROR Get(
  int8_t & v
)

Nhận giá trị của phần tử hiện tại dưới dạng số nguyên có dấu 8 bit.

Nếu giá trị số nguyên được mã hóa lớn hơn kiểu dữ liệu đầu ra, giá trị kết quả sẽ bị cắt bớt.

Chi tiết
Thông số
[out] v
Nhận giá trị được liên kết với phần tử TLV hiện tại.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu phần tử hiện tại không phải là kiểu số nguyên TLV (có dấu hoặc không dấu), hoặc trình đọc không được định vị trên phần tử.

Được

WEAVE_ERROR Get(
  int16_t & v
)

Nhận giá trị của phần tử hiện tại dưới dạng số nguyên có dấu 16 bit.

Nếu giá trị số nguyên được mã hóa lớn hơn kiểu dữ liệu đầu ra, giá trị kết quả sẽ bị cắt bớt.

Chi tiết
Thông số
[out] v
Nhận giá trị được liên kết với phần tử TLV hiện tại.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu phần tử hiện tại không phải là kiểu số nguyên TLV (có dấu hoặc không dấu), hoặc trình đọc không được định vị trên phần tử.

Được

WEAVE_ERROR Get(
  int32_t & v
)

Nhận giá trị của phần tử hiện tại dưới dạng số nguyên có dấu 32 bit.

Nếu giá trị số nguyên được mã hóa lớn hơn kiểu dữ liệu đầu ra, giá trị kết quả sẽ bị cắt bớt.

Chi tiết
Thông số
[out] v
Nhận giá trị được liên kết với phần tử TLV hiện tại.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu phần tử hiện tại không phải là kiểu số nguyên TLV (có dấu hoặc không dấu), hoặc trình đọc không được định vị trên một phần tử.

Được

WEAVE_ERROR Get(
  int64_t & v
)

Nhận giá trị của phần tử hiện tại dưới dạng số nguyên có dấu 64 bit.

Nếu giá trị số nguyên được mã hóa lớn hơn kiểu dữ liệu đầu ra, giá trị kết quả sẽ bị cắt bớt.

Chi tiết
Thông số
[out] v
Nhận giá trị được liên kết với phần tử TLV hiện tại.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu phần tử hiện tại không phải là kiểu số nguyên TLV (có dấu hoặc không dấu), hoặc trình đọc không được định vị trên một phần tử.

Được

WEAVE_ERROR Get(
  uint8_t & v
)

Nhận giá trị của phần tử hiện tại dưới dạng số nguyên không dấu 8 bit.

Nếu giá trị số nguyên được mã hóa lớn hơn kiểu dữ liệu đầu ra, giá trị kết quả sẽ bị cắt bớt. Tương tự, nếu giá trị số nguyên được mã hóa là âm, giá trị sẽ được chuyển thành không dấu.

Chi tiết
Thông số
[out] v
Nhận giá trị được liên kết với phần tử TLV hiện tại.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu phần tử hiện tại không phải là kiểu số nguyên TLV (có dấu hoặc không dấu), hoặc trình đọc không được định vị trên một phần tử.

Được

WEAVE_ERROR Get(
  uint16_t & v
)

Nhận giá trị của phần tử hiện tại dưới dạng số nguyên 16-bit không dấu.

Nếu giá trị số nguyên được mã hóa lớn hơn kiểu dữ liệu đầu ra, giá trị kết quả sẽ bị cắt bớt. Tương tự, nếu giá trị số nguyên được mã hóa là âm, giá trị sẽ được chuyển thành không dấu.

Chi tiết
Thông số
[out] v
Nhận giá trị được liên kết với phần tử TLV hiện tại.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu phần tử hiện tại không phải là kiểu số nguyên TLV (có dấu hoặc không dấu), hoặc trình đọc không được định vị trên phần tử.

Được

WEAVE_ERROR Get(
  uint32_t & v
)

Nhận giá trị của phần tử hiện tại dưới dạng số nguyên không dấu 32 bit.

Nếu giá trị số nguyên được mã hóa lớn hơn kiểu dữ liệu đầu ra, giá trị kết quả sẽ bị cắt bớt. Tương tự, nếu giá trị số nguyên được mã hóa là âm, giá trị sẽ được chuyển thành không dấu.

Chi tiết
Thông số
[out] v
Nhận giá trị được liên kết với phần tử TLV hiện tại.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu phần tử hiện tại không phải là kiểu số nguyên TLV (có dấu hoặc không dấu), hoặc trình đọc không được định vị trên phần tử.

Được

WEAVE_ERROR Get(
  uint64_t & v
)

Nhận giá trị của phần tử hiện tại dưới dạng số nguyên 64-bit không dấu.

Nếu giá trị số nguyên được mã hóa là âm, giá trị sẽ được chuyển thành không dấu.

Chi tiết
Thông số
[out] v
Nhận giá trị được liên kết với phần tử TLV hiện tại.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu phần tử hiện tại không phải là kiểu số nguyên TLV (có dấu hoặc không dấu), hoặc trình đọc không được định vị trên một phần tử.

Được

WEAVE_ERROR Get(
  float & v
)

Được

WEAVE_ERROR Get(
  double & v
)

Nhận giá trị của phần tử hiện tại dưới dạng số dấu phẩy động có độ chính xác kép.

Chi tiết
Thông số
[out] v
Nhận giá trị được liên kết với phần tử TLV hiện tại.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu phần tử hiện tại không phải là loại dấu phẩy động TLV hoặc đầu đọc không được định vị trên phần tử.

GetBufHandle

uintptr_t GetBufHandle(
  void
) const 

GetBytes

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

Nhận giá trị của byte hiện tại hoặc phần tử chuỗi UTF8.

Để xác định kích thước bộ đệm đầu vào cần thiết, hãy gọi phương thức GetLength () trước khi gọi GetBytes () .

Chi tiết
Thông số
[in] buf
Một con trỏ tới bộ đệm để nhận dữ liệu chuỗi.
[in] bufSize
Kích thước tính bằng byte của bộ đệm được buf trỏ tới.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu phần tử hiện tại không phải là byte TLV hoặc chuỗi UTF8 hoặc trình đọc không được định vị trên phần tử.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu bộ đệm được cung cấp quá nhỏ để chứa dữ liệu được liên kết với phần tử hiện tại.
WEAVE_ERROR_TLV_UNDERRUN
Nếu mã hóa TLV bên dưới kết thúc sớm.
other
Các mã lỗi nền tảng hoặc dệt khác được trả về bởi hàm GetNextBuffer () đã định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

GetContainerType

TLVType GetContainerType(
  void
) const 

Trả về loại vùng chứa màTLVReader hiện đang đọc.

Phương thức GetContainerType () trả về loại vùng chứa TLVTLVReader đang đọc. NếuTLVReader được đặt ở cấp ngoài cùng của mã hóa TLV (tức là trước, trên hoặc sau phần tử TLV ngoài cùng), phương thức sẽ trả về kTLVType_NotSpecified.

Chi tiết
Lợi nhuận
TLVType của vùng chứa hiện tại hoặc kTLVType_NotSpecified nếuTLVReader không được định vị trong vùng chứa.

GetControlByte

uint16_t GetControlByte(
  void
) const 

Trả về byte điều khiển được liên kết với phần tử TLV hiện tại.

Lý tưởng nhất là không ai cần biết về byte điều khiển và chỉ có triển khai nội bộ của TLV mới có quyền truy cập vào byte đó. Nhưng, tuy nhiên, việc có quyền truy cập vào byte điều khiển rất hữu ích cho các mục đích gỡ lỗi của TLV Debug Utilities (cố gắng giải mã byte điều khiển thẻ khi in nội dung bộ đệm TLV ).

Chi tiết
Lợi nhuận
Một số nguyên không dấu chứa byte điều khiển được liên kết với phần tử TLV hiện tại. kTLVControlByte_NotSpecified được trả về nếu trình đọc không được định vị trên một phần tử.

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

Nhận một con trỏ đến byte được mã hóa ban đầu của byte TLV hoặc phần tử chuỗi UTF8.

Phương thức này trả về một con trỏ trực tiếp giá trị chuỗi được mã hóa trong bộ đệm đầu vào bên dưới. Để thành công, phương thức này yêu cầu toàn bộ giá trị chuỗi phải có trong một bộ đệm. Nếu không, phương thức trả về WEAVE_ERROR_TLV_UNDERRUN . Điều này làm cho phương pháp được sử dụng hạn chế khi đọc dữ liệu từ nhiều bộ đệm không liên tục.

Chi tiết
Thông số
[out] data
Tham chiếu đến một con trỏ const sẽ nhận một con trỏ đến dữ liệu chuỗi bên dưới.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu phần tử hiện tại không phải là byte TLV hoặc chuỗi UTF8, hoặc trình đọc không được định vị trên phần tử.
WEAVE_ERROR_TLV_UNDERRUN
Nếu mã hóa TLV bên dưới kết thúc sớm hoặc giá trị của phần tử chuỗi hiện tại không được chứa trong một bộ đệm liền kề.
other
Các mã lỗi nền tảng hoặc dệt khác được trả về bởi hàm GetNextBuffer () đã định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

GetLength

uint32_t GetLength(
  void
) const 

Trả về độ dài của dữ liệu được liên kết với phần tử TLV hiện tại.

Độ dài dữ liệu chỉ áp dụng cho các phần tử của kiểu chuỗi UTF8 hoặc chuỗi byte. Đối với chuỗi UTF8, giá trị trả về là số byte trong chuỗi, không phải số ký tự.

Chi tiết
Lợi nhuận
Độ dài (tính bằng byte) của dữ liệu được liên kết với phần tử TLV hiện tại hoặc 0 nếu phần tử hiện tại không phải là chuỗi UTF8 hoặc chuỗi byte hoặc nếu trình đọc không được định vị trên phần tử.

GetLengthRead

uint32_t GetLengthRead(
  void
) const 

Trả về tổng số byte đã đọc kể từ khi trình đọc được khởi tạo.

Chi tiết
Lợi nhuận
Tổng số byte được đọc kể từ khi trình đọc được khởi tạo.

GetReadPoint

const uint8_t * GetReadPoint(
  void
) const 

Lấy điểm trong bộ đệm đầu vào bên dưới tương ứng với vị trí hiện tại của đầu đọc.

Chi tiết
Lợi nhuận
Một con trỏ vào bộ đệm đầu vào bên dưới tương ứng với vị trí hiện tại của đầu đọc.

GetRemainingLength

uint32_t GetRemainingLength(
  void
) const 

Trả về tổng số byte có thể được đọc cho đến khi đạt đến độ dài đọc tối đa.

Chi tiết
Lợi nhuận
Tổng số byte có thể được đọc cho đến khi đạt đến độ dài đọc tối đa.

GetString

WEAVE_ERROR GetString(
  char *buf,
  uint32_t bufSize
)

Nhận giá trị của byte hiện tại hoặc phần tử chuỗi UTF8 dưới dạng chuỗi kết thúc bằng null.

Để xác định kích thước bộ đệm đầu vào cần thiết, hãy gọi phương thức GetLength () trước khi gọi GetBytes () . Bộ đệm đầu vào phải lớn hơn độ dài chuỗi ít nhất một byte để chứa ký tự null.

Chi tiết
Thông số
[in] buf
Một con trỏ tới bộ đệm để nhận dữ liệu chuỗi byte.
[in] bufSize
Kích thước tính bằng byte của bộ đệm được buf trỏ tới.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu phần tử hiện tại không phải là byte TLV hoặc chuỗi UTF8 hoặc trình đọc không được định vị trên phần tử.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu bộ đệm được cung cấp quá nhỏ để chứa dữ liệu được liên kết với phần tử hiện tại.
WEAVE_ERROR_TLV_UNDERRUN
Nếu mã hóa TLV bên dưới kết thúc sớm.
other
Các mã lỗi nền tảng hoặc dệt khác được trả về bởi hàm GetNextBuffer () đã định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

GetTag

uint64_t GetTag(
  void
) const 

Trả về thẻ được liên kết với phần tử TLV hiện tại.

Giá trị do GetTag () trả về có thể được sử dụng với các hàm tiện ích thẻ ( IsProfileTag () , IsContextTag () , ProfileIdFromTag () , v.v.) để xác định loại thẻ và trích xuất các giá trị trường thẻ khác nhau.

Chi tiết
Lợi nhuận
Một số nguyên không dấu chứa thông tin về thẻ được liên kết với phần tử TLV hiện tại.

GetType

TLVType GetType(
  void
) const 

Trả về kiểu của phần tử TLV hiện tại.

Chi tiết
Lợi nhuận
Giá trị TLVType mô tả kiểu dữ liệu của phần tử TLV hiện tại. Nếu trình đọc không được định vị trên phần tử TLV , giá trị trả về sẽ là kTLVType_NotSpecified.

Trong đó

void Init(
  const TLVReader & aReader
)

Khởi tạo một đối tượngTLVReader từ một đối tượngTLVReader khác.

Chi tiết
Thông số
[in] aReader
Tham chiếu chỉ đọc đếnTLVReader để khởi tạo nó từ đó.

Trong đó

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

Khởi tạo một đối tượngTLVReader để đọc từ một bộ đệm đầu vào duy nhất.

Chi tiết
Thông số
[in] data
Một con trỏ đến bộ đệm chứa dữ liệu TLV cần được phân tích cú pháp.
[in] dataLen
Độ dài của dữ liệu TLV được phân tích cú pháp.

Trong đó

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Khởi tạo một đối tượngTLVReader để đọc từ một PacketBuffer duy nhất.

Quá trình phân tích cú pháp bắt đầu từ vị trí bắt đầu của bộ đệm (buf-> DataStart ()) và tiếp tục cho đến khi kết thúc dữ liệu trong bộ đệm (như được biểu thị bằng buf-> Datalen ()) hoặc các byte maxLen đã được phân tích cú pháp.

Chi tiết
Thông số
[in] buf
Một con trỏ đến Bộ đệm gói chứa dữ liệu TLV cần được phân tích cú pháp.
[in] maxLen
Số byte tối đa để phân tích cú pháp. Mặc định là số lượng dữ liệu trong bộ đệm đầu vào.

Trong đó

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

Khởi tạo một đối tượngTLVReader để đọc từ một hoặc nhiềuBộ đệm gói .

Quá trình phân tích cú pháp bắt đầu ở vị trí bắt đầu của bộ đệm ban đầu (buf-> DataStart ()). Nếu allowDiscontiguousBuffers là true, người đọc sẽ tiến qua chuỗi bộ đệm được liên kết bởi con trỏ Next () của chúng . Quá trình phân tích cú pháp tiếp tục cho đến khi tất cả dữ liệu trong chuỗi bộ đệm đã được sử dụng (như được biểu thị bằng buf-> Datalen ()) hoặc các byte maxLen đã được phân tích cú pháp.

Chi tiết
Thông số
[in] buf
Một con trỏ đến Bộ đệm gói chứa dữ liệu TLV cần được phân tích cú pháp.
[in] maxLen
Số byte tối đa để phân tích cú pháp. Mặc định là tổng lượng dữ liệu trong chuỗi bộ đệm đầu vào.
[in] allowDiscontiguousBuffers
Nếu đúng, hãy chuyển sang bộ đệm tiếp theo trong chuỗi khi tất cả dữ liệu trong bộ đệm hiện tại đã được sử dụng. Nếu sai, hãy dừng phân tích cú pháp ở cuối vùng đệm ban đầu.

Kế tiếp

WEAVE_ERROR Next(
  void
)

Chuyển đối tượngTLVReader thành phần tử TLV tiếp theo sẽ được đọc.

Phương thức Next () định vị đối tượng đọc trên phần tử tiếp theo trong mã hóa TLV nằm trong cùng ngữ cảnh ngăn chặn. Đặc biệt, nếu trình đọc được đặt ở cấp ngoài cùng của mã hóa TLV , việc gọi Next () sẽ đưa trình đọc đến phần tử tiếp theo, cao nhất. Nếu trình đọc được định vị trong phần tử vùng chứa TLV (cấu trúc, mảng hoặc đường dẫn), việc gọi Next () sẽ đưa trình đọc tới phần tử thành viên tiếp theo của vùng chứa.

Next () hạn chế chuyển động của trình đọc với ngữ cảnh chứa hiện tại, việc gọi Next () khi trình đọc được định vị trên một phần tử vùng chứa sẽ tiến qua vùng chứa, bỏ qua các phần tử thành viên của nó (và các thành viên của bất kỳ vùng chứa lồng nhau nào) cho đến khi nó đến phần tử đầu tiên phần tử sau vùng chứa.

Khi không có thêm phần tử nào trong ngữ cảnh chứa cụ thể, phương thức Next () sẽ trả về lỗi WEAVE_END_OF_TLV và vị trí của trình đọc sẽ không thay đổi.

Chi tiết
Giá trị trả lại
WEAVE_NO_ERROR
Nếu người đọc đã được định vị thành công trên một phần tử mới.
WEAVE_END_OF_TLV
Nếu không có yếu tố nào khác.
WEAVE_ERROR_TLV_UNDERRUN
Nếu mã hóa TLV bên dưới kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu người đọc gặp phải loại phần tử TLV không hợp lệ hoặc không được hỗ trợ.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu người đọc gặp thẻ TLV trong ngữ cảnh không hợp lệ.
WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG
Nếu người đọc gặp phải thẻ TLV được mã hóa ngầm mà id hồ sơ tương ứng không xác định.
other
Các mã lỗi nền tảng hoặc dệt khác được trả về bởi hàm GetNextBuffer () đã định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

Kế tiếp

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

Tiến đối tượngTLVReader thành phần tử TLV tiếp theo sẽ được đọc, xác nhận loại và thẻ của phần tử mới.

Phương thức Next (TLVTypeworthyType, uint64_tworthyTag) là một phương thức tiện lợi có hành vi giống như Next () , nhưng cũng xác minh rằng loại và thẻ của phần tử TLV mới khớp với các đối số được cung cấp.

Chi tiết
Thông số
[in] expectedType
Kiểu dữ liệu mong đợi cho phần tử tiếp theo.
[in] expectedTag
Thẻ mong đợi cho phần tử tiếp theo.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu người đọc đã được định vị thành công trên một phần tử mới.
WEAVE_END_OF_TLV
Nếu không có yếu tố nào khác.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu các loại nguyên tố mới không phù hợp với giá trị của expectedType tranh cãi.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
Nếu thẻ được liên kết với phần tử mới không khớp với giá trị của đối số expectedTag vọngTag.
WEAVE_ERROR_TLV_UNDERRUN
Nếu mã hóa TLV bên dưới kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu người đọc gặp phải loại phần tử TLV không hợp lệ hoặc không được hỗ trợ.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu người đọc gặp thẻ TLV trong ngữ cảnh không hợp lệ.
other
Các mã lỗi nền tảng hoặc dệt khác được trả về bởi hàm GetNextBuffer () đã định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

OpenContainer

WEAVE_ERROR OpenContainer(
  TLVReader & containerReader
)

Khởi tạo đối tượngTLVReader mới để đọc các thành viên của phần tử vùng chứa TLV .

Phương thức OpenContainer () khởi tạo đối tượngTLVReader mới để đọc các phần tử thành viên của vùng chứa TLV (cấu trúc, mảng hoặc đường dẫn). Khi OpenContainer () được gọi, đối tượngTLVReader hiện tại phải được định vị trên phần tử vùng chứa để đọc. Phương thức này coi như đối số duy nhất của nó là một tham chiếu đến một trình đọc mới sẽ được khởi tạo để đọc vùng chứa. Bộ đọc này được gọi là bộ đọc vùng chứa trong khi bộ đọc mà OpenContainer () được gọi được gọi là bộ đọc cha .

Khi phương thức OpenContainer () trả về, trình đọc vùng chứa được đặt ngay trước thành viên đầu tiên của vùng chứa. Gọi Next () trên trình đọc vùng chứa sẽ chuyển tiếp qua các thành viên của bộ sưu tập cho đến khi đạt đến phần cuối, lúc này trình đọc sẽ trả về WEAVE_END_OF_TLV.

Trong khi trình đọc vùng chứa đang mở, các ứng dụng không được thực hiện lệnh gọi hoặc thay đổi trạng thái của trình đọc chính. Khi một ứng dụng đã hoàn thành việc sử dụng trình đọc vùng chứa, nó phải đóng nó bằng cách gọi CloseContainer () trên trình đọc mẹ, chuyển trình đọc vùng chứa làm đối số. Các ứng dụng có thể đóng trình đọc vùng chứa tại bất kỳ thời điểm nào, có hoặc không đọc tất cả các phần tử có trong vùng chứa bên dưới. Sau khi đóng trình đọc vùng chứa, các ứng dụng có thể tiếp tục sử dụng trình đọc cha.

Trình đọc vùng chứa kế thừa các thuộc tính cấu hình khác nhau từ trình đọc cha. Đó là:

  • Id hồ sơ ngầm định (ImplicitProfileId)
  • Con trỏ dữ liệu ứng dụng (AppData)
  • Con trỏ hàm GetNextBuffer

Details
Parameters
[out] containerReader
A reference to aTLVReader object that will be initialized for reading the members of the current container element. Any data associated with the supplied object is overwritten.
Return Values
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_INCORRECT_STATE
If the current element is not positioned on a container element.

Skip

WEAVE_ERROR Skip(
  void
)

Advances theTLVReader object to immediately after the current TLV element.

The Skip() method positions the reader object immediately after the current TLV element, such that a subsequent call to Next() will advance the reader to the following element. Like Next() , if the reader is positioned on a container element at the time of the call, the members of the container will be skipped. If the reader is not positioned on any element, its position remains unchanged.

Details
Return Values
WEAVE_NO_ERROR
If the reader was successfully positioned on a new element.
WEAVE_END_OF_TLV
If no further elements are available.
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.

VerifyEndOfContainer

WEAVE_ERROR VerifyEndOfContainer(
  void
)

Verifies that the TVLReader object is at the end of a TLV container.

The VerifyEndOfContainer() method verifies that there are no further TLV elements to be read within the current TLV container. This is a convenience method that is equivalent to calling Next() and checking for a return value of WEAVE_END_OF_TLV.

Details
Return Values
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.

Protected functions

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.

Details
Return Values
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
)

Protected static functions

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
)