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.

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

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

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

Tóm lược

TLVReader cụ một tiền đạo chỉ “kéo theo phong cách” phân tích cú pháp cho Weave TLV dữ liệu. CácTLVReader đối tượng hoạt động như một con trỏ có thể được sử dụng để lặp qua một chuỗi các TLV yếu tố và giải thích nội dung của họ. Khi đặt trên một phần tử, ứng dụng có thể thực hiện cuộc gọi đến của người đọc Get () phương pháp để truy vấn loại hình và thẻ phần tử hiện hành, và để trích xuất bất kỳ giá trị đi kèm. Của người đọc tiếp theo () phương pháp được sử dụng để tạm ứng từ yếu tố để phần tử.

MộtTLVReader đối tượng luôn được vị trí hoặc trước đó, vào ngày hoặc sau một TLV phần tử. 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 thực hiện cuộc gọi đầu tiên đến tiếp theo () phương pháp để xác định vị trí người đọc về các yếu tố đầu tiên. Khi một yếu tố container là encounteredeither một cấu trúc, một mảng hoặc một paththe OpenContainer () hoặc EnterContainer () phương pháp có thể được sử dụng để lặp qua các nội dung của container.

Khi đọc đến cuối của một TLV mã hóa, hoặc các yếu tố cuối cùng trong một container, nó báo hiệu sự ứng dụng bằng cách trả lại một lỗi WEAVE_END_OF_TLV từ Next () phương pháp. 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 () ).

MộtTLVReader đối tượng có thể phân tích dữ liệu trực tiếp từ một bộ đệm đầu vào cố định, hoặc từ một chuỗi của một hoặc nhiều PacketBuffers. Ngoài ra, các ứng dụng có thể cung cấp một GetNextBuffer chức năng để dữ liệu thức ăn chăn nuôi để người đọc từ một nguồn tùy ý, ví dụ như một ổ cắm hoặc một 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 để lấy thêm TLV dữ liệu được phân tích.

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ỏ tới một hàm mà sẽ tạo ra dữ liệu đầu vào choTLVReader đối tượng.
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 thành việc đọc một TLV chứa sau một cuộc 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ộtTLVReader đối tượng cho việc đọc các thành viên của TLV yếu tố container.
ExitContainer ( TLVType outerContainerType)
Hoàn thành việc đọc một TLV chứa và chuẩn bị mộtTLVReader đối tượng để đọc các yếu tố sau thùng sơn.
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 16 bit không dấu.
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 container trong đó cácTLVReader hiện đang đọc.
GetControlByte (void) const
uint16_t
Trả về byte kiểm soát kết hợp với hiện tại TLV phần tử.
GetDataPtr (const uint8_t *& data)
Nhận một con trỏ đến byte được mã hóa ban đầu của một TLV byte hoặc thành phần chuỗi UTF8.
GetLength (void) const
uint32_t
Trả về chiều dài của dữ liệu liên quan đến hiện tại TLV phần tử.
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 đượ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ả thẻ được kết hợp với hiện tại TLV phần tử.
GetType (void) const
Trả về loại của dòng điện TLV phần tử.
Init (constTLVReader & aReader)
void
Khởi mộtTLVReader đối tượng từ mộtTLVReader đối tượng.
Init (const uint8_t *data, uint32_t dataLen)
void
Khởi mộtTLVReader đối tượng để đọc từ một bộ đệm đầu vào duy nhất.
Init ( PacketBuffer *buf, uint32_t maxLen)
void
Khởi mộtTLVReader đối tượng để đọc từ một PacketBuffer duy nhất.
Init ( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Khởi mộtTLVReader đối tượng để đọc từ một hoặc nhiều PacketBuffers.
Next (void)
Tiến cácTLVReader đối tượng tiếp theo TLV yếu tố để được đọc.
Next ( TLVType expectedType, uint64_t expectedTag)
Tiến cácTLVReader đối tượng tiếp theo TLV yếu tố để được đọc, khẳng định loại và thẻ của phần tử mới.
OpenContainer (TLVReader & containerReader)
Khởi mớiTLVReader đối tượng cho việc đọc các thành viên của TLV yếu tố container.
Skip (void)
Tiến bộTLVReader đối tượng ngay sau khi dòng điện TLV phần tử.
VerifyEndOfContainer (void)
Thẩm tra rằng đối tượng TVLReader là ở phần cuối của một TLV chứa.

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 chiều dài của một TLV yếu tố đầu.
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 chứa trong hiện tại TLV bằng cách đọc qua nó mà không có một 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 để lấy thêm TLV dữ liệu được phân tích.

Chức năng của loại hình này được sử dụng để nhập dữ liệu thức ăn chăn nuôi đến mộtTLVReader . 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
Một tham chiếu tớiTLVReader đối tượng được 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. Nhập cảnh sang chức năng, bufStart điểm để một byte vượt qua TLV dữ liệu byte tiêu thụ bởi người đọc. Xuất cảnh, bufStart dự kiến sẽ trỏ đến byte đầu tiên của mới TLV dữ liệu được phân tích. Giá trị con trỏ mới có thể nằm trong cùng một 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
Một tham chiếu đến một số nguyên unsigned rằng chức năng phải thiết lập để số lượng TLV dữ liệu byte được trả lại. Nếu kết thúc đầu vào TLV dữ liệu đã đạt tới, các chức năng cần thiết lập giá trị này là 0.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu chức năng được sản xuất thành công hơn TLV dữ liệu, hoặc sự kết thúc của dữ liệu đầu vào đã đạt được ( 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ỏ tới một hàm mà sẽ tạo ra dữ liệu đầu vào choTLVReader đối tượng.

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.

Ứng dụng có thể đặt GetNextBuffer 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 một thẻ hồ sơ cụ thể đó đã được mã hóa ở dạng tiềm ẩn, nó sử dụng giá trị của ImplicitProfileId tài sản như id hồ sơ giả định cho thẻ.

Theo mặc định, ImplicitProfileId tài sản được thiết lập để kProfileIdNotSpecified. Khi giải mã TLV có chứa thẻ ngầm mã hóa, các ứng dụng phải thiết lập ImplicitProfileId trước khi đọc bất kỳ TLV yếu tố có thẻ đó. 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 thẻ ngầm-mã hóa là gặp phải trong khi ImplicitProfileId được thiết lập để kProfileIdNotSpecified, người đọc sẽ trả về một WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG lỗi.

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 thành việc đọc một TLV chứa sau một cuộc gọi đến OpenContainer () .

Các CloseContainer () phương pháp khôi phục trạng thái của một phụ huynhTLVReader đối tượng sau khi một cuộc gọi đến OpenContainer () . Đối với mỗi cuộc gọi đến OpenContainer () ứng dụng phải thực hiện cuộc gọi tương ứng với CloseContainer () , đi qua một tham chiếu đến người đọc cùng một container để cả hai phương pháp.

Khi CloseContainer () trả về, người đọc mẹ được bố trí ngay trước khi các yếu tố đầu tiên mà sau thùng sơn. Từ quan điểm này, một ứng dụng có thể sử dụng tiếp theo () phương pháp để trước thông qua bất kỳ yếu tố còn lại.

Ứng dụng có thể gọi gần CloseContainer () trên một đầu đọc phụ huynh tại bất kỳ điểm nào trong thời gian, cho dù tất cả các yếu tố trong container cơ bản đã được đọc. Sau CloseContainer () đã được gọi là, ứng dụng nên cân nhắc người đọc container de-khởi tạo 'và không được sử dụng nó tiếp tục mà không cần tái khởi tạo nó.

Chi tiết
Thông số
[in] containerReader
Một tham chiếu tớiTLVReader đối tượng đã được cung cấp cho các OpenContainer () phương pháp.
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 kêu gọi người đọc, hoặc nếu người đọc container không phù hợp với một truyền cho OpenContainer () phương pháp.
WEAVE_ERROR_TLV_UNDERRUN
Nếu cơ bản TLV mã hoa kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu người đọc gặp không hợp lệ hoặc không được hỗ trợ TLV loại nguyên tố.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu người đọc gặp một TLV thẻ trong một bối cảnh không hợp lệ.
other
Weave hay nền tảng mã lỗi khác được trả về bởi các cấu hình GetNextBuffer () chức năng. 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à sẽ được giải phóng bằng free () bởi người gọi khi nó không còn cần thiết nữa.

Chi tiết
Thông số
[out] buf
Một tham chiếu đến một con trỏ mà một bộ đệm đống phân bổ của dataLen byte sẽ được chỉ định đến sự thành công.
[out] dataLen
Một tài liệu tham khảo để lưu trữ cho các kích thước, tính theo byte, của buf trên 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à một TLV byte hoặc UTF8 chuỗi, hoặc người đọc không được đặt trên một 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 cơ bản TLV mã hoa 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
Weave hay nền tảng mã lỗi khác được trả về bởi các cấu hình GetNextBuffer () chức năng. 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 tại vị trí hiện tại. Bộ nhớ cho bộ đệm được lấy bằng malloc () và sẽ được giải phóng bằng free () bởi người gọi khi nó không còn cần thiết nữa.

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à một TLV byte hoặc UTF8 chuỗi, hoặc người đọc không được đặt trên một 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 cơ bản TLV mã hoa 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
Weave hay nền tảng mã lỗi khác được trả về bởi các cấu hình GetNextBuffer () chức năng. Chỉ có thể khi GetNextBuffer không phải là NULL.

EnterContainer

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

Chuẩn bị mộtTLVReader đối tượng cho việc đọc các thành viên của TLV yếu tố container.

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

Khi EnterContainer () được gọi làTLVReader đối tượng phải được đặt trên các yếu tố container để đượ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 EnterContainer () trở về phương pháp, người đọc được định vị ngay lập tức trước khi thành viên đầu tiên của container. Nhiều lần gọi tiếp theo () sẽ thúc đẩy người đọc thông qua các thành viên của bộ sưu tập cho đến khi cuối cùng đã đạt được, lúc này người đọc sẽ trở WEAVE_END_OF_TLV.

Một khi ứng dụng đã đọc xong một container có thể tiếp tục đọc các yếu tố sau container bằng cách gọi ExitContainer () phương pháp.

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 thành việc đọc một TLV chứa và chuẩn bị mộtTLVReader đối tượng để đọc các yếu tố sau thùng sơn.

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

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

Khi EnterContainer () đã được gọi là, các ứng dụng có thể gọi ExitContainer () trên một độc giả tại bất kỳ thời điểm nào, bất kể tất cả các yếu tố trong container cơ bản đã được đọc.

Chi tiết
Thông số
[in] outerContainerType
Các TLVType giá trị đã được trả về bởi các EnterContainer () phương pháp.
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 kêu gọi người đọc, hoặc nếu người đọc container không phù hợp với một truyền cho OpenContainer () phương pháp.
WEAVE_ERROR_TLV_UNDERRUN
Nếu cơ bản TLV mã hoa kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu người đọc gặp không hợp lệ hoặc không được hỗ trợ TLV loại nguyên tố.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu người đọc gặp một TLV thẻ trong một bối cảnh không hợp lệ.
other
Weave hay nền tảng mã lỗi khác được trả về bởi các cấu hình GetNextBuffer () chức năng. 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ị gắn liền với hiện tại TLV phần tử.
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à một TLV boolean loại, hoặc người đọc không được đặt trên một 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ị gắn liền với hiện tại TLV phần tử.
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à một TLV kiểu số nguyên (ký kết hoặc unsigned), hoặc người đọc không được đặt trên một 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ị gắn liền với hiện tại TLV phần tử.
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à một TLV kiểu số nguyên (ký kết hoặc unsigned), hoặc người đọc không được đặt trên một 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ị gắn liền với hiện tại TLV phần tử.
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à một TLV kiểu số nguyên (ký kết hoặc unsigned), hoặc người đọc không được đặt 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ị gắn liền với hiện tại TLV phần tử.
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à một TLV kiểu số nguyên (ký kết hoặc unsigned), hoặc người đọc không được đặt 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ị gắn liền với hiện tại TLV phần tử.
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à một TLV kiểu số nguyên (ký kết hoặc unsigned), hoặc người đọc không được đặt 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ị gắn liền với hiện tại TLV phần tử.
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à một TLV kiểu số nguyên (ký kết hoặc unsigned), hoặc người đọc không được đặt trên một 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ị gắn liền với hiện tại TLV phần tử.
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à một TLV kiểu số nguyên (ký kết hoặc unsigned), hoặc người đọc không được đặt trên một 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ị gắn liền với hiện tại TLV phần tử.
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à một TLV kiểu số nguyên (ký kết hoặc unsigned), hoặc người đọc không được đặt 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ị gắn liền với hiện tại TLV phần tử.
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à một TLV nổi loại điểm, hoặc người đọc không được đặt trên một 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 getLength () phương pháp 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 trỏ đến bởi buf .
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à một TLV byte hoặc UTF8 chuỗi, hoặc người đọc không được đặt trên một 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 cơ bản TLV mã hoa kết thúc sớm.
other
Weave hay nền tảng mã lỗi khác được trả về bởi các cấu hình GetNextBuffer () chức năng. Chỉ có thể khi GetNextBuffer không phải là NULL.

GetContainerType

TLVType GetContainerType(
  void
) const 

Trả về loại container trong đó cácTLVReader hiện đang đọc.

Các GetContainerType () phương thức trả về kiểu của TLV chứa trong đó cácTLVReader đang đọc. NếuTLVReader được đặt ở mức outer-nhất của một TLV mã hóa (tức là trước đó, vào ngày hoặc sau nhất bên ngoài-the TLV phần tử), phương pháp này sẽ trở lại kTLVType_NotSpecified.

Chi tiết
Lợi nhuận
Các TLVType của vùng chứa hiện, hoặc kTLVType_NotSpecified nếuTLVReader không đặt trong một container.

GetControlByte

uint16_t GetControlByte(
  void
) const 

Trả về byte kiểm soát kết hợp với hiện tại TLV phần tử.

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

Chi tiết
Lợi nhuận
Một số nguyên unsigned chứa byte kiểm soát liên quan đến việc hiện tại TLV phần tử. kTLVControlByte_NotSpecified được trả lại nếu người đọc không được đặt 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 một TLV byte hoặc thành phần 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 yêu cầu toàn bộ giá trị chuỗi phải có trong một bộ đệm duy nhất. Nếu 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
Một 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à một TLV byte hoặc UTF8 chuỗi, hoặc người đọc không được đặt trên một phần tử.
WEAVE_ERROR_TLV_UNDERRUN
Nếu cơ bản TLV mã hoa 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 tiếp giáp duy nhất.
other
Weave hay nền tảng mã lỗi khác được trả về bởi các cấu hình GetNextBuffer () chức năng. Chỉ có thể khi GetNextBuffer không phải là NULL.

GetLength

uint32_t GetLength(
  void
) const 

Trả về chiều dài của dữ liệu liên quan đến hiện tại TLV phần tử.

Độ 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
Chiều dài (tính bằng byte) dữ liệu liên quan đến việc hiện tại TLV phần tử, hoặc 0 nếu các yếu tố hiện tại không phải là một chuỗi UTF8 hoặc byte chuỗi, hoặc nếu người đọc không được đặt trên một 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 getLength () phương pháp 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 trỏ đến bởi buf .
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à một TLV byte hoặc UTF8 chuỗi, hoặc người đọc không được đặt trên một 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 cơ bản TLV mã hoa kết thúc sớm.
other
Weave hay nền tảng mã lỗi khác được trả về bởi các cấu hình GetNextBuffer () chức năng. Chỉ có thể khi GetNextBuffer không phải là NULL.

GetTag

uint64_t GetTag(
  void
) const 

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

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

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

GetType

TLVType GetType(
  void
) const 

Trả về loại của dòng điện TLV phần tử.

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

Trong đó

void Init(
  const TLVReader & aReader
)

Khởi mộtTLVReader đối tượng từ mộtTLVReader đối tượng.

Chi tiết
Thông số
[in] aReader
Một tài liệu tham khảo chỉ đọc đếnTLVReader để khởi tạo này từ đâu.

Trong đó

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

Khởi mộtTLVReader đối tượng để đọ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 một bộ đệm chứa TLV dữ liệu được phân tích.
[in] dataLen
Chiều dài của TLV dữ liệu được phân tích.

Trong đó

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Khởi mộtTLVReader đối tượng để đọ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 một PacketBuffer chứa TLV dữ liệu được phân tích.
[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 mộtTLVReader đối tượng để đọc từ một hoặc nhiều PacketBuffers.

Quá trình phân tích cú pháp bắt đầu từ vị trí bắt đầu của bộ đệm ban đầu (buf-> DataStart ()). Nếu allowDiscontiguousBuffers là đúng, người đọc sẽ thúc đẩy thông qua các chuỗi bộ đệm được liên kết bởi họ () Tiếp theo gợi ý. Việc 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 một PacketBuffer chứa TLV dữ liệu được phân tích.
[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
)

Tiến cácTLVReader đối tượng tiếp theo TLV yếu tố để được đọc.

Các Next () vị trí phương pháp đối tượng độc giả trên phần tử tiếp theo trong một TLV mã hóa cư trú rằng trong bối cảnh kiềm chế tương tự. Đặc biệt, nếu người đọc là vị trí ở cấp ngoài-nhất của một TLV mã hóa, kêu gọi tiếp theo () sẽ thúc đẩy người đọc vào, phần tử tiếp theo ở trên cùng. Nếu người đọc được định vị trong một TLV yếu tố container (một cấu trúc, mảng hoặc đường dẫn), kêu gọi tiếp theo () sẽ thúc đẩy người đọc đến các yếu tố thành viên tiếp theo của container.

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

Khi không có các yếu tố hơn nữa trong một bối cảnh ngăn chặn đặc biệt là Tiếp () phương pháp sẽ trả về một WEAVE_END_OF_TLV lỗi và vị trí của người đọ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 cơ bản TLV mã hoa kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu người đọc gặp không hợp lệ hoặc không được hỗ trợ TLV loại nguyên tố.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu người đọc gặp một TLV thẻ trong một bối cảnh không hợp lệ.
WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG
Nếu người đọc gặp một ngầm mã hóa TLV thẻ mà hồ sơ cá nhân id tương ứng là không rõ.
other
Weave hay nền tảng mã lỗi khác được trả về bởi các cấu hình GetNextBuffer () chức năng. Chỉ có thể khi GetNextBuffer không phải là NULL.

Kế tiếp

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

Tiến cácTLVReader đối tượng tiếp theo TLV yếu tố để được đọc, khẳng định loại và thẻ của phần tử mới.

Các Next (TLVType expectedType, uint64_t expectedTag) phương pháp là một phương pháp thuận tiện có hành vi tương tự như sau () , nhưng cũng xác nhận rằng các loại và thẻ của mới TLV yếu tố phù hợp với các đối số 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 kết hợp với các yếu tố mới không phù hợp với giá trị của expectedTag tranh cãi.
WEAVE_ERROR_TLV_UNDERRUN
Nếu cơ bản TLV mã hoa kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu người đọc gặp không hợp lệ hoặc không được hỗ trợ TLV loại nguyên tố.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu người đọc gặp một TLV thẻ trong một bối cảnh không hợp lệ.
other
Weave hay nền tảng mã lỗi khác được trả về bởi các cấu hình GetNextBuffer () chức năng. Chỉ có thể khi GetNextBuffer không phải là NULL.

OpenContainer

WEAVE_ERROR OpenContainer(
  TLVReader & containerReader
)

Khởi mớiTLVReader đối tượng cho việc đọc các thành viên của TLV yếu tố container.

Các OpenContainer () phương pháp khởi tạo một mớiTLVReader đối tượng cho việc đọc các yếu tố thành viên của một TLV container (một cấu trúc, mảng hoặc đường dẫn). Khi OpenContainer () được gọi, hiện tạiTLVReader đối tượng phải được đặt trên các yếu tố container để được đọc. Phương thức 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. Đọc này được biết đến như người đọc thùng trong khi người đọc mà OpenContainer () được gọi là được biết đến như người đọc mẹ.

Khi OpenContainer () trở về phương pháp, người đọc container được vị trí ngay trước khi thành viên đầu tiên của container. Gọi Tiếp () vào người đọc container sẽ thúc đẩy thông qua các thành viên của bộ sưu tập cho đến khi cuối cùng đã đạt được, lúc này người đọc sẽ trở 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 bằng cách sử dụng đầu đọc chứa nó phải đóng nó lại bằng cách gọi CloseContainer () trên đầu đọc phụ huynh, thông qua người đọc container như một cuộc tranh cãi. 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

Chi tiết
Thông số
[out] containerReader
Một tham chiếu đến mộtTLVReader đối tượng đó sẽ được khởi tạo cho việc đọc các thành viên của phần tử chứa hiện tại. Mọi dữ liệu liên quan đến đối tượng được cung cấp đều bị ghi đè.
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.

Nhảy

WEAVE_ERROR Skip(
  void
)

Tiến bộTLVReader đối tượng ngay sau khi dòng điện TLV phần tử.

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
)