nl::Weave::TLV::TLVReader

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

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

Tóm tắt

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 TLV của Weave. Đối tượng TLVReader hoạt động như một con trỏ có thể dùng để lặp lại theo trình tự các phần tử TLV và diễn giải nội dung của các phần tử đó. 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 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 và để trích xuất bất kỳ giá trị nào được liên kết. Phương thức Next() của trình đọc được dùng để chuyển từ phần tử này sang phần tử khác.

Đối tượng TLVReader luôn được đặt trước, sau hoặc sau thành phần TLV. Khi khởi chạy lần đầu, một TLVReader được đặt ngay trước phần tử mã hóa đầu tiên. Để bắt đầu đọc, ứng dụng phải thực hiện lệnh gọi ban đầu đến phương thức Next() để định vị trình đọc trên phần tử đầu tiên. Khi gặp phần tử vùng chứa, cấu trúc, mảng hoặc đường dẫn, bạn có thể dùng phương thức OpenContainer() hoặc EnterContainer() để lặp lại 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 sẽ 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(). Trình đọc sẽ tiếp tục trả về WEAVE_END_OF_TLV cho đến khi khởi động lại hoặc thoát vùng chứa hiện tại (thông qua ClosedContainer() / ExitContainer()).

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

Tính kế thừa

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

Loại công khai

GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen) LỖI_(*
Một hàm có thể dùng để truy xuất dữ liệu TLV bổ sung cần phân tích cú pháp.

Thuộc tính công khai

AppData
void *
Một trường con trỏ có thể dùng cho dữ liệu dành riêng cho ứng dụng.
GetNextBuffer
Con trỏ trỏ đến một hàm sẽ tạo dữ liệu đầu vào cho đối tượng TLVReader.
ImplicitProfileId
uint32_t
Mã hồ sơ sẽ được dùng cho các thẻ hồ sơ đã mã hóa ở dạng ngầm ẩ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 *

Hàm công khai

CloseContainer(TLVReader & containerReader)
Hoàn tất việc đọc vùng chứa TLV sau lệnh gọi đến OpenContainer().
DupBytes(uint8_t *& buf, uint32_t & dataLen)
Phân bổ và trả về bộ đệm có 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ề vùng đệm chứa giá trị kết thúc rỗng của byte hoặc chuỗi UTF8 hiện tại.
EnterContainer(TLVType & outerContainerType)
Chuẩn bị đối tượng TLVReader để đọc các thành phần của phần tử vùng chứa TLV.
ExitContainer(TLVType outerContainerType)
Hoàn tất việc đọc vùng chứa TLV và chuẩn bị đối tượng TLVReader để đọc các phần tử sau vùng chứa đó.
Get(bool & v)
Lấy giá trị của phần tử hiện tại dưới dạng loại boolean.
Get(int8_t & v)
Lấy 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)
Lấy 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)
Lấy giá trị của phần tử hiện tại dưới dạng số nguyên 32 bit có dấu.
Get(int64_t & v)
Lấy 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)
Lấy giá trị của phần tử hiện tại dưới dạng số nguyên 8 bit không dấu.
Get(uint16_t & v)
Lấy 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)
Lấy giá trị của phần tử hiện tại dưới dạng số nguyên 32 bit không dấu.
Get(uint64_t & v)
Lấy giá trị của phần tử hiện tại dưới dạng số nguyên 64 bit chưa ký.
Get(float & v)
Get(double & v)
Lấy giá trị của phần tử hiện tại dưới dạng số thực có độ chính xác gấp đôi.
GetBufHandle(void) const
uintptr_t
GetBytes(uint8_t *buf, uint32_t bufSize)
Lấy giá trị của byte hoặc chuỗi UTF8 hiện tại.
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 liên kết với phần tử TLV hiện tại.
GetDataPtr(const uint8_t *& data)
Nhận 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 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 chạy.
GetReadPoint(void) const
const uint8_t *
Nhận điểm trong vùng đệm đầu vào cơ bản tương ứng với vị trí hiện tại của trình đọc.
GetRemainingLength(void) const
uint32_t
Trả về tổng số byte có thể đọc được cho đến khi đạt độ 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 rỗng.
GetTag(void) const
uint64_t
Trả về thẻ liên kết với phần tử TLV hiện tại.
GetType(void) const
Trả về loại phần tử TLV hiện tại.
Init(const TLVReader & aReader)
void
Khởi chạy đối tượng TLVReader từ một đối tượng TLVReader khác.
Init(const uint8_t *data, uint32_t dataLen)
void
Khởi động đối tượng TLVReader để đọc từ một vùng đệm đầu vào.
Init(PacketBuffer *buf, uint32_t maxLen)
void
Khởi chạy đối tượng TLVReader để đọc từ một gói PacketBuffer.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Khởi chạy đối tượng TLVReader để đọc từ một hoặc nhiều PacketBuffers.
Next(void)
Chuyển đối tượng TLVReader sang phần tử TLV tiếp theo để đọc.
Next(TLVType expectedType, uint64_t expectedTag)
Chuyển đối tượng TLVReader sang phần tử TLV tiếp theo để đọc, xác nhận loại và thẻ của phần tử mới.
OpenContainer(TLVReader & containerReader)
Khởi chạy đối tượng TLVReader mới để đọc các thành phần của phần tử vùng chứa TLV.
Skip(void)
Chuyển đối tượng TLVReader sang ngay sau thành phần 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.

Hàm được bảo vệ

ClearElementState(void)
void
Xoá trạng thái của TLVReader.
ElementType(void) const
TLVElementType
Đây là phương thức riêng tư trả về TLVElementType từ mControlByte.
EnsureData(WEAVE_ERROR noDataErr)
GetElementHeadLength(uint8_t & elemHeadBytes) const
Đây là phương thức riêng tư dùng để tính toán độ dài của 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 mọi dữ liệu có trong TLV hiện tại bằng cách đọc dữ liệu đó mà không có vùng đệm đích.
SkipToEndOfContainer(void)
VerifyElement(void)

Hàm 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)

Loại công khai

GetNextBufferFunct

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

Một hàm có thể dùng để truy xuất dữ liệu TLV bổ sung cần phân tích cú pháp.

Các loại thuộc tính này dùng để cung cấp dữ liệu đầu vào cho TLVReader. Khi được gọi, hàm này dự kiến sẽ tạo thêm dữ liệu để trình đọc phân tích cú pháp hoặc báo hiệu cho trình đọc rằng không có thêm dữ liệu.

Thông tin chi tiết
Các tham số
[in] reader
Tham chiếu đến đối tượng TLVReader đ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ể dùng để lưu trữ dữ liệu ngữ cảnh giữa các lệnh gọi. Giá trị này được khởi tạo bằng 0 trước lệnh gọi đầu tiên.
[in,out] bufStart
Tham chiếu đến con trỏ dữ liệu. Khi nhập vào hàm, bufStart trỏ đến một byte vượt quá byte dữ liệu TLV cuối cùng mà 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 một bộ đệm với dữ liệu được sử dụng trước đó hoặc 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 đang được trả về. Nếu đã đến cuối dữ liệu đầu vào TLV, hàm sẽ đặt giá trị này thành 0.
Giá trị trả về
WEAVE_NO_ERROR
Nếu hàm tạo thêm dữ liệu TLV hoặc kết thúc dữ liệu đầu vào, (trong trường hợp này, bạn nên đặt bufLen thành 0).
other
Các mã lỗi Weave hoặc dành riêng cho nền tảng khác cho biết đã xảy ra lỗi khiến hàm không tạo được dữ liệu yêu cầu.

Thuộc tính công khai

Mã đính kèm

void * AppData

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

GetBuffer

GetNextBufferFunct GetNextBuffer

Con trỏ trỏ đến một hàm sẽ tạo dữ liệu đầu vào cho đối tượng TLVReader.

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

Một ứng dụng có thể đặt GetNextBuffer bất cứ lúc nào, nhưng thông thường ứng dụng sẽ đượ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.

Hồ sơ ngầm định

uint32_t ImplicitProfileId

Mã hồ sơ sẽ được dùng cho các thẻ hồ sơ đã mã hóa ở dạng ngầm ẩn.

Khi độc giả gặp một thẻ dành riêng cho hồ sơ đã được mã hóa ở dạng ngầm ẩn, thẻ này sẽ sử dụng giá trị của thuộc tính ImplicitProfileId làm mã hồ sơ giả định cho thẻ đó.

Theo mặc định, thuộc tính ImplicitProfileId được đặt thành kProfileIdNotSpecified. Khi giải mã TLV chứa các thẻ được mã hoá 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ó thẻ như vậy. Mã 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 ngầm 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

Cần điều khiển

uintptr_t mBufHandle

Loại mContainer

TLVType mContainerType

mControlByte

uint16_t mControlByte

mElemLenOrVal

uint64_t mElemLenOrVal

Thẻ mElemTag

uint64_t mElemTag

mLenĐọc

uint32_t mLenRead

mMaxLen

uint32_t mMaxLen

mReadPoint

const uint8_t * mReadPoint

Hàm công khai

Đóng vùng chứa

WEAVE_ERROR CloseContainer(
  TLVReader & containerReader
)

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

Phương thức ClosedContainer() sẽ khôi phục trạng thái của đối tượng TLVReader gốc sau khi gọi hàm OpenContainer(). Đối với mỗi lệnh gọi đến ứng dụng OpenContainer(), bạn phải thực hiện lệnh gọi tương ứng đến ClosedContainer(), chuyển tham chiếu đến cùng một trình đọc vùng chứa đến cả hai phương thức.

Khi ClosedContainer() trả về, trình đọc gốc sẽ được đặt ngay trước phần tử đầu tiên sau vùng chứa. Từ thời điểm này, ứng dụng có thể sử dụng phương thức Next() để tiếp tục thông qua mọi phần tử còn lại.

Các ứng dụng có thể gọi lệnh đóng CloseContainer() trên trình đọc chính bất cứ lúc nào, bất kể mọi yếu tố trong vùng chứa cơ bản đã được đọc hay chưa. Sau khi ClosedContainer() được gọi, ứng dụng sẽ xem xét trình đọc vùng chứa & # 39; de-khởi tạo\39; và không được sử dụng thêm trình đọc này nếu không khởi chạy lại.

Thông tin chi tiết
Các tham số
[in] containerReader
Giá trị tham chiếu đến đối tượng TLVReader đã được cung cấp cho phương thức OpenContainer().
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này 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 trình đọc vùng chứa được chuyển đến phương thức OpenContainer().
WEAVE_ERROR_TLV_UNDERRUN
Nếu quá trình mã hoá TLV cơ bản kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu trình đọ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 phải thẻ TLV trong bối cảnh không hợp lệ.
other
Các mã lỗi Weave hoặc nền tảng khác được 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 có chứa giá trị của byte hiện tại hoặc chuỗi UTF8.

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

Thông tin chi tiết
Các tham số
[out] buf
Tham chiếu đến con trỏ mà vùng đệm phân bổ vùng nhớ khối xếp dataLen sẽ được gán 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ả về
WEAVE_NO_ERROR
Nếu phương thức này 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 hay chuỗi UTF8 hoặc trình đọc không được định vị trên một phần tử.
WEAVE_ERROR_NO_MEMORY
Nếu không thể phân bổ bộ nhớ cho vùng đệm đầu ra.
WEAVE_ERROR_TLV_UNDERRUN
Nếu quá trình mã hoá TLV cơ bản kết thúc sớm.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
Nếu nền tảng mục tiêu không hỗ trợ malloc() và free().
other
Các mã lỗi Weave hoặc nền tảng khác được hàm GetNextBuffer() định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

Chuỗi Dup

WEAVE_ERROR DupString(
  char *& buf
)

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

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

Thông tin chi tiết
Các tham số
[out] buf
Tham chiếu đến con trỏ mà vùng đệm được phân bổ của vùng nhớ khối xếp sẽ được gán khi thành công.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này 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 hay chuỗi UTF8 hoặc trình đọc không được định vị trên một phần tử.
WEAVE_ERROR_NO_MEMORY
Nếu không thể phân bổ bộ nhớ cho vùng đệm đầu ra.
WEAVE_ERROR_TLV_UNDERRUN
Nếu quá trình mã hoá TLV cơ bản kết thúc sớm.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
Nếu nền tảng mục tiêu không hỗ trợ malloc() và free().
other
Các mã lỗi Weave hoặc nền tảng khác được 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ị đối tượng TLVReader để đọc các thành phần của phần tử vùng chứa TLV.

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

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

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

Sau khi đọc xong một vùng chứa, ứng dụng 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().

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

Thoát vùng chứa

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

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

Phương thức ExitContainer() sẽ khôi phục trạng thái của đối tượng TLVReader sau khi gọi EnterContainer(). Đối với mỗi lệnh gọi đến ứng dụng EnterContainer() phải thực hiện lệnh gọi tương ứng đến ExitContainer(), chuyển giá trị ngữ cảnh mà phương thức EnterContainer() trả về.

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

Sau 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 cơ bản đã được đọc hay chưa.

Thông tin chi tiết
Các tham số
[in] outerContainerType
Giá trị TLVType được phương thức EnterContainer() trả về.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này 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 trình đọc vùng chứa được chuyển đến phương thức OpenContainer().
WEAVE_ERROR_TLV_UNDERRUN
Nếu quá trình mã hoá TLV cơ bản kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu trình đọ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 phải thẻ TLV trong bối cảnh không hợp lệ.
other
Các mã lỗi Weave hoặc nền tảng khác được hàm GetNextBuffer() định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

Get

WEAVE_ERROR Get(
  bool & v
)

Lấy giá trị của phần tử hiện tại dưới dạng loại boolean.

Thông tin chi tiết
Các tham số
[out] v
Nhận giá trị liên kết với phần tử TLV hiện tại.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này 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 loại boolean TLV hoặc trình đọc không được định vị trên một phần tử.

Get

WEAVE_ERROR Get(
  int8_t & v
)

Lấy 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 loại dữ liệu đầu ra, giá trị kết quả sẽ bị cắt bớt.

Thông tin chi tiết
Các tham số
[out] v
Nhận giá trị liên kết với phần tử TLV hiện tại.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này 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 loại 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ử.

Get

WEAVE_ERROR Get(
  int16_t & v
)

Lấy 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 loại dữ liệu đầu ra, giá trị kết quả sẽ bị cắt bớt.

Thông tin chi tiết
Các tham số
[out] v
Nhận giá trị liên kết với phần tử TLV hiện tại.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này 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 loại 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ử.

Get

WEAVE_ERROR Get(
  int32_t & v
)

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

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

Thông tin chi tiết
Các tham số
[out] v
Nhận giá trị liên kết với phần tử TLV hiện tại.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này 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 loại 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ử.

Get

WEAVE_ERROR Get(
  int64_t & v
)

Lấy 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 loại dữ liệu đầu ra, giá trị kết quả sẽ bị cắt bớt.

Thông tin chi tiết
Các tham số
[out] v
Nhận giá trị liên kết với phần tử TLV hiện tại.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này 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 loại 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ử.

Get

WEAVE_ERROR Get(
  uint8_t & v
)

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

Nếu giá trị số nguyên được mã hóa lớn hơn loại 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 âm thì giá trị sẽ được chuyển đổi thành chưa ký.

Thông tin chi tiết
Các tham số
[out] v
Nhận giá trị liên kết với phần tử TLV hiện tại.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này 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 loại 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ử.

Get

WEAVE_ERROR Get(
  uint16_t & v
)

Lấy 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 loại 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 âm thì giá trị sẽ được chuyển đổi thành chưa ký.

Thông tin chi tiết
Các tham số
[out] v
Nhận giá trị liên kết với phần tử TLV hiện tại.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này 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 loại 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ử.

Get

WEAVE_ERROR Get(
  uint32_t & v
)

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

Nếu giá trị số nguyên được mã hóa lớn hơn loại 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 âm thì giá trị sẽ được chuyển đổi thành chưa ký.

Thông tin chi tiết
Các tham số
[out] v
Nhận giá trị liên kết với phần tử TLV hiện tại.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này 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 loại 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ử.

Get

WEAVE_ERROR Get(
  uint64_t & v
)

Lấy giá trị của phần tử hiện tại dưới dạng số nguyên 64 bit chưa ký.

Nếu giá trị số nguyên được mã hóa âm, giá trị sẽ được chuyển đổi thành chưa ký.

Thông tin chi tiết
Các tham số
[out] v
Nhận giá trị liên kết với phần tử TLV hiện tại.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này 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 loại 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ử.

Get

WEAVE_ERROR Get(
  float & v
)

Get

WEAVE_ERROR Get(
  double & v
)

Lấy giá trị của phần tử hiện tại dưới dạng số thực có độ chính xác gấp đôi.

Thông tin chi tiết
Các tham số
[out] v
Nhận giá trị liên kết với phần tử TLV hiện tại.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này 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 loại dấu phẩy động TLV hoặc trình đọc không được định vị trên một phần tử.

Bơm người chơi

uintptr_t GetBufHandle(
  void
) const 

Nhận byte

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

Lấy giá trị của byte hoặc chuỗi UTF8 hiện tại.

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

Thông tin chi tiết
Các tham số
[in] buf
Con trỏ trỏ đến vùng đệm để nhận dữ liệu chuỗi.
[in] bufSize
Dung lượng tính bằng byte của vùng đệm được buf trỏ đến.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này 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 hay chuỗi UTF8 hoặc trình đọc không được định vị trên một phần tử.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu vùng đệm được cung cấp quá nhỏ để lưu giữ dữ liệu liên kết với phần tử hiện tại.
WEAVE_ERROR_TLV_UNDERRUN
Nếu quá trình mã hoá TLV cơ bản kết thúc sớm.
other
Các mã lỗi Weave hoặc nền tảng khác được hàm GetNextBuffer() định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

Nhận loại vùng chứa

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 TLV mà trong đó TLVReader đang đọc. Nếu TLVReader đượ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 này sẽ trả về kTLVType_NotSpecified.

Thông tin chi tiết
Trả về
TLVType của vùng chứa hiện tại hoặc kTLVType_NotSpecified nếu TLVReader không được định vị trong một vùng chứa.

GetControlByte

uint16_t GetControlByte(
  void
) const 

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

Lý tưởng nhất là không ai biết về byte kiểm soát và chỉ có phương thức triển khai nội bộ của TLV mới có quyền truy cập vào byte đó. Tuy nhiên, việc có quyền truy cập vào byte kiểm soát sẽ rất hữu ích cho mục đích gỡ lỗi qua Tiện íchgỡ lỗiTLV (nhằm giúp giải mã byte kiểm soát thẻ khi in ra nội dung vùng đệm TLV).

Thông tin chi tiết
Trả về
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ử.

Nhận dữ liệu

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

Nhận 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ã hoá trong vùng đệm đầu vào cơ bản. Để 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 vùng đệm. Nếu không, phương thức này sẽ trả về WEAVE_ERROR_TLV_OutlineRUN. Điều này làm cho phương thức này bị hạn chế sử dụng khi đọc dữ liệu từ nhiều vùng đệm không liên tục.

Thông tin chi tiết
Các tham số
[out] data
Giá trị tham chiếu đến con trỏ const sẽ nhận được con trỏ đến dữ liệu chuỗi cơ bản.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này 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 hay chuỗi UTF8 hoặc trình đọc không được định vị trên một phần tử.
WEAVE_ERROR_TLV_UNDERRUN
Nếu quá trình mã hoá TLV cơ bản 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 vùng đệm liền kề.
other
Các mã lỗi Weave hoặc nền tảng khác được hàm GetNextBuffer() định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

Tải độ dài

uint32_t GetLength(
  void
) const 

Trả về độ dài 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ử thuộc loại UTF8 hoặc chuỗi byte. Đối với chuỗi UTF8, giá trị được trả về là số byte trong chuỗi, chứ không phải số ký tự.

Thông tin chi tiết
Trả về
Độ 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 đầu đọc không được đặt trên một phần tử.

Nhận độ dài đọc

uint32_t GetLengthRead(
  void
) const 

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

Thông tin chi tiết
Trả về
Tổng số byte được đọc kể từ khi trình đọc được khởi chạy.

GetReadPoint

const uint8_t * GetReadPoint(
  void
) const 

Nhận điểm trong vùng đệm đầu vào cơ bản tương ứng với vị trí hiện tại của trình đọc.

Thông tin chi tiết
Trả về
Con trỏ trỏ vào vùng đệm đầu vào cơ bản tương ứng với vị trí hiện tại của trình đọc.

Lấy chiều dài còn lại

uint32_t GetRemainingLength(
  void
) const 

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

Thông tin chi tiết
Trả về
Tổng số byte có thể đọc cho đến khi đạt độ dài tối đa.

Nhận chuỗi

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 rỗng.

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

Thông tin chi tiết
Các tham số
[in] buf
Con trỏ trỏ đến vùng đệm để nhận dữ liệu chuỗi byte.
[in] bufSize
Dung lượng tính bằng byte của vùng đệm được buf trỏ đến.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này 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 hay chuỗi UTF8 hoặc trình đọc không được định vị trên một phần tử.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu vùng đệm được cung cấp quá nhỏ để lưu giữ dữ liệu liên kết với phần tử hiện tại.
WEAVE_ERROR_TLV_UNDERRUN
Nếu quá trình mã hoá TLV cơ bản kết thúc sớm.
other
Các mã lỗi Weave hoặc nền tảng khác được hàm GetNextBuffer() định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

Nhận thẻ

uint64_t GetTag(
  void
) const 

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

Bạn có thể sử dụng giá trị mà GetTag() trả về cho các hàm số hiệu dụng của thẻ (IsProfileTag(), IsContextTag(), ProfileIdFromTag(), v.v.) để xác định loại thẻ và để trích xuất nhiều giá trị cho trường thẻ.

Thông tin chi tiết
Trả về
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.

Loại Get

TLVType GetType(
  void
) const 

Trả về loại phần tử TLV hiện tại.

Thông tin chi tiết
Trả về
Giá trị TLVType mô tả loại dữ liệu của phần tử TLV hiện tại. Nếu trình đọc không nằm trên phần tử TLV, giá trị trả về sẽ là kTLVType_NotSpecified.

Init

void Init(
  const TLVReader & aReader
)

Khởi chạy đối tượng TLVReader từ một đối tượng TLVReader khác.

Thông tin chi tiết
Các tham số
[in] aReader
Tham chiếu chỉ đọc tới TLVReader để khởi tạo giá trị này.

Init

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

Khởi động đối tượng TLVReader để đọc từ một vùng đệm đầu vào.

Thông tin chi tiết
Các tham số
[in] data
Con trỏ trỏ đến vùng đệm chứa dữ liệu TLV sẽ đượ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.

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Khởi chạy đối tượng TLVReader để đọc từ một gói PacketBuffer.

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

Thông tin chi tiết
Các tham số
[in] buf
Con trỏ trỏ đến một PacketBuffer chứa dữ liệu TLV sẽ được phân tích cú pháp.
[in] maxLen
Số byte tối đa để phân tích cú pháp. Giá trị mặc định là lượng dữ liệu trong vùng đệm đầu vào.

Init

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

Khởi chạy đối tượng TLVReader để đọc từ một hoặc nhiều PacketBuffers.

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, trình đọc sẽ chuyển qua chuỗi các vùng đệm được liên kết bằng con trỏ Next(). Quá trình phân tích cú pháp sẽ tiếp tục cho đến khi tất cả dữ liệu trong chuỗi bộ đệm được sử dụng (biểu thị bằng buf->Datalen()) hoặc byte maxLen đã được phân tích cú pháp.

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

Tiếp theo

WEAVE_ERROR Next(
  void
)

Chuyển đối tượng TLVReader sang phần tử TLV tiếp theo để đọc.

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

Next() ràng buộc chuyển động của trình đọc đối với ngữ cảnh vùng chứa hiện tại, nên 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 lên vùng chứa đó, bỏ qua các phần tử thành phần (và các thành phần của bất kỳ vùng chứa lồng nhau nào) cho đến khi đến phần tử đầu tiên 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.

Thông tin chi tiết
Giá trị trả về
WEAVE_NO_ERROR
Nếu trình đọ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ó phần tử nào khác.
WEAVE_ERROR_TLV_UNDERRUN
Nếu quá trình mã hoá TLV cơ bản kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu trình đọ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 phải thẻ TLV trong bối 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à không thể xác định được mã hồ sơ tương ứng.
other
Các mã lỗi Weave hoặc nền tảng khác được hàm GetNextBuffer() định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

Tiếp theo

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

Chuyển đối tượng TLVReader sang phần tử TLV tiếp theo để đọc, xác nhận loại và thẻ của phần tử mới.

Phương thức Next(TLVType mongType), uint64_t mongTag) là một phương thức thuận tiện có hành vi tương tự 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ố đã cung cấp.

Thông tin chi tiết
Các tham số
[in] expectedType
Loại dữ liệu dự kiến cho phần tử tiếp theo.
[in] expectedTag
Thẻ dự kiến cho phần tử tiếp theo.
Giá trị trả về
WEAVE_NO_ERROR
Nếu trình đọ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ó phần tử nào khác.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu loại của phần tử mới không khớp với giá trị của đối số expectedType.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
Nếu thẻ liên kết với phần tử mới không khớp với giá trị của đối số expectedTag.
WEAVE_ERROR_TLV_UNDERRUN
Nếu quá trình mã hoá TLV cơ bản kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu trình đọ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 phải thẻ TLV trong bối cảnh không hợp lệ.
other
Các mã lỗi Weave hoặc nền tảng khác được 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 chạy đối tượng TLVReader mới để đọc các thành phần của phần tử vùng chứa TLV.

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

Khi phương thức OpenContainer() trả về, trình đọc vùng chứa sẽ được đặt ngay trước thành viên đầu tiên của vùng chứa. Lệnh 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 điểm cuối. Tại thời điểm đó, trình đọc sẽ trả về WEAVE_END_OF_TLV.

Khi trình đọc vùng chứa đang mở, ứ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 gốc. Sau khi sử dụng xong trình đọc vùng chứa, ứng dụng phải đóng ứng dụng đó bằng cách gọi CloseContainer() trên trình đọc gốc, 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 bất cứ lúc nào, có hoặc không đọc tất cả các phần tử có trong vùng chứa cơ bản. Sau khi trình đọc vùng chứa đóng, các ứng dụng có thể tiếp tục sử dụng trình đọc gốc.

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

  • Mã hồ sơ ngầm (implProfileId)
  • Con trỏ dữ liệu ứng dụng (attachment)
  • Con trỏ hàm GetNextBuffer

Thông tin chi tiết
Các tham số
[out] containerReader
Giá trị tham chiếu đến đối tượng TLVReader sẽ được khởi tạo để đọc các thành phần của phần tử vùng chứa hiện tại. Mọi dữ liệu liên kết với đối tượng đã cung cấp sẽ bị ghi đè.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_INCORRECT_STATE
Nếu phần tử hiện tại không được đặt trên phần tử vùng chứa.

Bỏ qua

WEAVE_ERROR Skip(
  void
)

Chuyển đối tượng TLVReader sang ngay sau thành phần TLV hiện tại.

Phương thức Skip() định vị đối tượng trình đọc ngay lập tức sau phần tử TLV hiện tại, để lệnh gọi tiếp theo đến Tiếp theo() sẽ chuyển trình đọc đến phần tử sau. Giống như Next(), nếu trình đọc được định vị trên một phần tử vùng chứa tại thời điểm gọi, các thành viên của vùng chứa sẽ bị bỏ qua. Nếu người đọc không đặt vị trí trên phần tử nào, thì vị trí của phần tử đó sẽ không thay đổi.

Thông tin chi tiết
Giá trị trả về
WEAVE_NO_ERROR
Nếu trình đọ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ó phần tử nào khác.
WEAVE_ERROR_TLV_UNDERRUN
Nếu quá trình mã hoá TLV cơ bản kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu trình đọ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 phải thẻ TLV trong bối cảnh không hợp lệ.
other
Các mã lỗi Weave hoặc nền tảng khác được hàm GetNextBuffer() định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

Xác minh EndEndOfContainer

WEAVE_ERROR VerifyEndOfContainer(
  void
)

Xác minh rằng đối tượng TVLReader nằm ở cuối vùng chứa TLV.

Phương thức VerifyEndOfContainer() sẽ xác minh rằng không có phần tử TLV nào khác sẽ được đọc trong vùng chứa TLV hiện tại. Đây là một phương thức thuận tiện tương đương với việc gọi Next() và kiểm tra giá trị trả về của WEAVE_END_OF_TLV.

Thông tin chi tiết
Giá trị trả về
WEAVE_NO_ERROR
Nếu không có phần tử TLV nào khác để đọc.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
Nếu tìm thấy một phần tử TLV khác trong bộ sưu tập.
WEAVE_ERROR_TLV_UNDERRUN
Nếu quá trình mã hoá TLV cơ bản kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu trình đọ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 phải thẻ TLV trong bối cảnh không hợp lệ.
other
Các mã lỗi Weave hoặc nền tảng khác được hàm GetNextBuffer() định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

Hàm được bảo vệ

Xóa phần tử

void ClearElementState(
  void
)

Xoá trạng thái của TLVReader.

Phương thức này dùng để định vị trình đọc trước TLV đầu tiên, giữa các TLV hoặc sau TLV cuối cùng.

Loại phần tử

TLVElementType ElementType(
  void
) const 

Đây là phương thức riêng tư trả về TLVElementType từ mControlByte.

Đảm bảo dữ liệu

WEAVE_ERROR EnsureData(
  WEAVE_ERROR noDataErr
)

Lấy phần tử đầu phần tử

WEAVE_ERROR GetElementHeadLength(
  uint8_t & elemHeadBytes
) const 

Đây là phương thức riêng tư dùng để tính toán độ dài của phần tử TLV.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

Đọc dữ liệu

WEAVE_ERROR ReadData(
  uint8_t *buf,
  uint32_t len
)

Phần tử đọc

WEAVE_ERROR ReadElement(
  void
)

Đọc thẻ

uint64_t ReadTag(
  TLVTagControl tagControl,
  const uint8_t *& p
)

Đã mở vùng chứa

void SetContainerOpen(
  bool aContainerOpen
)

Bỏ qua dữ liệu

WEAVE_ERROR SkipData(
  void
)

Bỏ qua mọi dữ liệu có trong TLV hiện tại bằng cách đọc dữ liệu đó mà không có vùng đệm đích.

Thông tin chi tiết
Giá trị trả về
WEAVE_NO_ERROR
Nếu đầu đọc được định vị thành công ở cuối dữ liệu.
other
Các mã lỗi Weave hoặc nền tảng khác được hàm GetNextBuffer() định cấu hình. Chỉ có thể khi GetNextBuffer không phải là NULL.

SkipToEndOfContainer

WEAVE_ERROR SkipToEndOfContainer(
  void
)

Xác minh phần tử

WEAVE_ERROR VerifyElement(
  void
)

Hàm tĩnh được bảo vệ

Không thành công

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

GetBPetetBuffer

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