nl::Weave::TLV::TLVWriter

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

Cung cấp một bộ mã hoá hiệu quả về bộ nhớ để ghi dữ liệu ở định dạng TLV của Weave.

Tóm tắt

TLVWriter triển khai một bộ mã hoá theo kiểu phát trực tiếp, chỉ chuyển tiếp cho dữ liệu TLV của Weave. Ứng dụng ghi dữ liệu vào một phương thức mã hoá bằng cách gọi một trong các phương thức Put() của người ghi, truyền thông tin giá trị và thẻ được liên kết nếu cần. Tương tự, các ứng dụng tương tự có thể mã hoá các loại vùng chứa TLV (cấu trúc, mảng hoặc đường dẫn) bằng cách gọi phương thức OpenContainer() hoặc EnterContainer() của người viết.

Đối tượng TLVWriter có thể ghi dữ liệu trực tiếp vào vùng đệm đầu ra cố định hoặc vào một chuỗi gồm một hoặc nhiều đối tượng PacketBuffer. Ngoài ra, các ứng dụng có thể cung cấp hàm GetNewBufferFinalizeBuffer riêng để chuyển hướng đầu ra đến một đích đến tuỳ ý, ví dụ: một ổ cắm hoặc hàng đợi sự kiện.

Tính kế thừa

Lớp học con đã biết trực tiếp: nl::Weave::TLV::CircularTLVWriter

Kiểu được bảo vệ

@72{
  kEndOfContainerMarkerSize = 1
}
enum

Loại công khai

FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen) WEAVE_ERROR(*
Một hàm dùng để hoàn tất đầu ra từ đối tượng TLVWriter.
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR(*
Một hàm cung cấp không gian vùng đệm đầu ra mới cho TLVWriter.

Các thuộc tính công khai

AppData
void *
Trường con trỏ có thể dùng cho dữ liệu dành riêng cho ứng dụng.
FinalizeBuffer
Con trỏ trỏ đến một hàm sẽ được gọi khi hoàn tất TLVWriter.
GetNewBuffer
Con trỏ trỏ đến một hàm sẽ cung cấp không gian vùng đệm đầu ra mới cho TLVWriter.
ImplicitProfileId
uint32_t
Mã hồ sơ của các thẻ được mã hoá ở dạng ngầm ẩn.

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

mBufHandle
uintptr_t
mBufStart
uint8_t *
mContainerType
mLenWritten
uint32_t
mMaxLen
uint32_t
mRemainingLen
uint32_t
mWritePoint
uint8_t *

Hàm công khai

CloseContainer(TLVWriter & containerWriter)
Hoàn tất việc viết vùng chứa TLV sau khi thực hiện lệnh gọi đến OpenContainer().
ContinuePutBytes(const uint8_t *buf, uint32_t len)
Mã hoá giá trị chuỗi byte TLV.
CopyContainer(TLVReader & container)
Sao chép một phần tử vùng chứa TLV từ đối tượng TLVReader.
CopyContainer(uint64_t tag, TLVReader & container)
Mã hoá phần tử vùng chứa TLV từ một tập hợp các phần tử thành phần được mã hoá trước.
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
Mã hoá một phần tử vùng chứa TLV chứa các phần tử thành phần từ một vùng chứa được mã hoá trước.
CopyElement(TLVReader & reader)
Sao chép phần tử TLV từ một đối tượng trình đọc vào tác giả.
CopyElement(uint64_t tag, TLVReader & reader)
EndContainer(TLVType outerContainerType)
Hoàn tất quá trình mã hoá phần tử vùng chứa TLV.
Finalize(void)
Hoàn tất việc viết bộ mã hoá TLV.
GetContainerType(void) const
Trả về loại vùng chứa mà TLVWriter hiện đang viết.
GetLengthWritten(void)
uint32_t
Trả về tổng số byte đã ghi kể từ khi trình ghi được khởi tạo.
Init(uint8_t *buf, uint32_t maxLen)
void
Khởi động một đối tượng TLVWriter để ghi vào một vùng đệm đầu ra duy nhất.
Init(PacketBuffer *buf, uint32_t maxLen)
void
Khởi động một đối tượng TLVWriter để ghi vào một PacketBuffer.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Khởi động một đối tượng TLVWriter để ghi vào một hoặc nhiều PacketBuffers.
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
void
Khởi động một đối tượng TLVWriter để ghi vào vùng đệm động.
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
Khởi chạy một đối tượng TLVWriter mới để ghi các thành phần của một phần tử vùng chứa TLV.
Put(uint64_t tag, int8_t v)
Mã hoá giá trị số nguyên có dấu TLV.
Put(uint64_t tag, int8_t v, bool preserveSize)
Mã hoá giá trị số nguyên có dấu TLV.
Put(uint64_t tag, int16_t v)
Put(uint64_t tag, int16_t v, bool preserveSize)
Put(uint64_t tag, int32_t v)
Put(uint64_t tag, int32_t v, bool preserveSize)
Put(uint64_t tag, int64_t v)
Put(uint64_t tag, int64_t v, bool preserveSize)
Put(uint64_t tag, uint8_t v)
Mã hoá giá trị số nguyên chưa ký TLV.
Put(uint64_t tag, uint8_t v, bool preserveSize)
Mã hoá giá trị số nguyên chưa ký TLV.
Put(uint64_t tag, uint16_t v)
Put(uint64_t tag, uint16_t v, bool preserveSize)
Put(uint64_t tag, uint32_t v)
Put(uint64_t tag, uint32_t v, bool preserveSize)
Put(uint64_t tag, uint64_t v)
Put(uint64_t tag, uint64_t v, bool preserveSize)
Put(uint64_t tag, float v)
Put(uint64_t tag, double v)
Mã hoá giá trị dấu phẩy động TLV.
PutBoolean(uint64_t tag, bool v)
Mã hoá giá trị boolean TLV.
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
Mã hoá giá trị chuỗi byte TLV.
PutNull(uint64_t tag)
Mã hoá giá trị rỗng TLV.
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
Mã hoá phần tử vùng chứa TLV từ một tập hợp các phần tử thành phần được mã hoá trước.
PutString(uint64_t tag, const char *buf)
Mã hoá giá trị chuỗi UTF8 TLV.
PutString(uint64_t tag, const char *buf, uint32_t len)
Mã hoá giá trị chuỗi UTF8 TLV.
PutStringF(uint64_t tag, const char *fmt, ...)
Mã hoá đầu ra chuỗi được định dạng theo định dạng trong phần tử TLV.
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
Bắt đầu mã hoá một phần tử vùng chứa TLV mới.
StartPutBytes(uint64_t tag, uint32_t totalLen)
Mã hoá một chuỗi byte TLV trong nhiều đoạn.
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
Mã hoá đầu ra chuỗi được định dạng theo định dạng trong phần tử TLV.

Hàm tĩnh công khai

FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
Hoạt động triển khai hàm FinalizeBuffer TLVWriter để ghi vào một chuỗi PacketBuffers.
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Hoạt động triển khai hàm GetNewBuffer TLVWriter để ghi vào bộ đệm động.
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Hoạt động triển khai hàm GetNewBuffer TLVWriter để ghi vào chuỗi PacketBuffers.

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

IsCloseContainerReserved(void) const
bool
Xác định xem vùng chứa có nên đặt trước khoảng trống cho biểu tượng CloseContainer tại thời điểm bắt đầu / mở vùng chứa hay không.
IsContainerOpen(void) const
bool
SetCloseContainerReserved(bool aCloseContainerReserved)
void
Đặt xem vùng chứa có nên đặt trước khoảng trống cho biểu tượng CloseContainer tại thời điểm bắt đầu / mở vùng chứa hay không.
SetContainerOpen(bool aContainerOpen)
void
WriteData(const uint8_t *p, uint32_t len)
WriteElementHead(TLVElementType elemType, uint64_t tag, uint64_t lenOrVal)
WriteElementWithData(TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen)

Kiểu được bảo vệ

@72

 @72

Loại công khai

FinalizeBufferFunct

WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)

Một hàm dùng để hoàn tất đầu ra từ đối tượng TLVWriter.

Các hàm thuộc loại này được gọi khi phương thức Finalize() của TLVWriter được gọi. Hàm này được dự kiến sẽ thực hiện mọi thao tác dọn dẹp hoặc hoàn tất cần thiết liên quan đến việc sử dụng đầu ra của đối tượng writer. Có thể kể đến một số ví dụ như ghi lại độ dài cuối cùng của quá trình mã hoá hoặc đóng chỉ số mô tả tệp.

Chi tiết
Tham số
[in] writer
Thông tin tham chiếu đến đối tượng TLVWriter đang được hoàn tất.
[in,out] bufHandle
Một giá trị ngữ cảnh uintptr_t được đặt bởi các lệnh gọi trước đó đến hàm GetNewBuffer.
[in,out] bufStart
Con trỏ trỏ đến điểm bắt đầu của vùng đệm đầu ra hiện tại (và cuối cùng).
[in,out] bufLen
Số byte có trong vùng đệm mà bufStart trỏ đến.
Giá trị trả về
WEAVE_NO_ERROR
Trường hợp hoàn tất thành công.
other
Các mã lỗi khác của Weave hoặc dành riêng cho nền tảng cho biết đã xảy ra lỗi trong quá trình hoàn tất.

GetNewBufferFunct

WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)

Một hàm cung cấp không gian vùng đệm đầu ra mới cho TLVWriter.

Các hàm thuộc loại này được dùng để chuẩn bị không gian vùng đệm mới để TLVWriter ghi vào. Khi được gọi, hàm dự kiến sẽ trả về một con trỏ đến một vị trí bộ nhớ nơi dữ liệu mới sẽ được ghi, cùng với độ dài tối đa tương ứng. Hàm này có thể cung cấp không gian ghi bằng cách phân bổ một bộ đệm mới để lưu giữ dữ liệu hoặc xoá dữ liệu đã ghi trước đó khỏi bộ đệm hiện có.

Chi tiết
Tham số
[in] writer
Tham chiếu đến đối tượng TLVWriter đang yêu cầu dung lượng vùng đệm mới.
[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 lệnh gọi. Giá trị này được khởi tạo về 0 trước khi thực hiện lệnh gọi đầu tiên.
[in,out] bufStart
Tham chiếu đến con trỏ dữ liệu. Khi truy cập vào hàm, bufStart sẽ trỏ đến điểm bắt đầu của vùng đệm đầu ra hiện tại. Khi thoát, bufStart dự kiến sẽ trỏ đến điểm bắt đầu của vùng đệm đầu ra mới. Giá trị con trỏ mới có thể giống với giá trị trước đó (ví dụ: nếu hàm sao chép dữ liệu hiện có ở nơi khác) hoặc có thể trỏ đến một vị trí hoàn toàn mới.
[in,out] bufLen
Tham chiếu đến số nguyên chưa ký. Khi truy cập vào hàm này, bufLen chứa số byte không gian unused (không sử dụng) trong vùng đệm hiện tại. Khi thoát, bufLen dự kiến sẽ chứa số byte tối đa có thể được ghi vào vùng đệm đầu ra mới.
Giá trị trả về
WEAVE_NO_ERROR
Liệu hàm có thể cung cấp thêm không gian đệm cho trình ghi hay không.
other
Các mã lỗi khác của Weave hoặc dành riêng cho nền tảng cho biết đã xảy ra lỗi ngăn hàm tạo thêm dung lượng vùng đệm.

Các thuộc tính công khai

AppData

void * AppData

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

FinalizeBuffer

FinalizeBufferFunct FinalizeBuffer

Con trỏ trỏ đến một hàm sẽ được gọi khi hoàn tất TLVWriter.

Đối tượng TLVWriter sẽ gọi hàm FinalizeBuffer bất cứ khi nào phương thức Finalize() của đối tượng này được gọi. Các ứng dụng có thể đặt con trỏ hàm bất cứ lúc nào trước khi gọi Finalize(). Theo mặc định, con trỏ được đặt thành NULL, khiến phương thức Finalize() bỏ qua việc gọi hàm.

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

GetNewBuffer

GetNewBufferFunct GetNewBuffer

Con trỏ trỏ đến một hàm sẽ cung cấp không gian vùng đệm đầu ra mới cho TLVWriter.

Đối tượng TLVWriter sẽ gọi hàm GetNewBuffer bất cứ khi nào cố gắng ghi dữ liệu vượt quá kích thước của bộ đệm đầu ra hiện tại. Nếu bạn đặt thành NULL (giá trị mặc định), thì trình ghi sẽ trả về giá trị WEAVE_ERROR_NO_MEMORY nếu dữ liệu đầu ra tràn vào vùng đệm hiện tại.

Ứng dụng có thể đặt GetNewBuffer bất cứ lúc nào, nhưng thường được đặt khi trình ghi được khởi tạo.

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

ImplicitProfileId

uint32_t ImplicitProfileId

Mã hồ sơ của các thẻ được mã hoá ở dạng ngầm ẩn.

Khi được yêu cầu mã hoá một phần tử mới, nếu mã hồ sơ của thẻ được liên kết với phần tử mới khớp với giá trị của thành phần ImplicitProfileId, thì trình ghi sẽ mã hoá thẻ ở dạng ngầm ẩn, bỏ qua mã nhận dạng hồ sơ trong quy trình này.

Theo mặc định, thuộc tính ImplicitProfileId được đặt thành kProfileIdNotDetails, để chỉ dẫn người ghi không phát hành các thẻ được mã hoá ngầm. Các ứng dụng có thể đặt ImplicitProfileId bất cứ lúc nào để bật các thẻ mã hoá ở dạng ngầm ẩn bắt đầu tại thời điểm hiện tại trong quá trình mã hoá. Id cấu hình thích hợp để đặt thường phụ thuộc vào ngữ cảnh của ứng dụng hoặc giao thức được sử dụng.

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

mBufHandle

uintptr_t mBufHandle

mBufStart

uint8_t * mBufStart

mContainerType

TLVType mContainerType

mLenWritten

uint32_t mLenWritten

mMaxLen

uint32_t mMaxLen

mRemainingLen

uint32_t mRemainingLen

mWritePoint

uint8_t * mWritePoint

Hàm công khai

CloseContainer

WEAVE_ERROR CloseContainer(
  TLVWriter & containerWriter
)

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

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

Khi CloseContainer() trả về, các ứng dụng có thể tiếp tục sử dụng trình viết gốc để viết các phần tử TLV bổ sung xuất hiện sau phần tử vùng chứa. Tại thời điểm này, trình ghi vùng chứa đã cung cấp phải được coi là "đã huỷ khởi tạo" và không được sử dụng khi chưa khởi chạy lại.

Chi tiết
Tham số
[in] containerWriter
Tham chiếu đến đối tượng TLVWriter đã đượ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 trình ghi vùng chứa được cung cấp không ở trạng thái chính xác.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một trình ghi vùng chứa khác đã được mở trên trình ghi vùng chứa đã cung cấp và chưa đóng.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu hoàn tất việc mã hoá vùng chứa sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi khác của Weave hoặc lỗi riêng của nền tảng được trả về bằng các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

ContinuePutBytes

WEAVE_ERROR ContinuePutBytes(
  const uint8_t *buf,
  uint32_t len
)

Mã hoá giá trị chuỗi byte TLV.

Bạn nên sử dụng thuộc tính này với StartPutBytes.

Chi tiết
Tham số
[in] buf
Con trỏ trỏ đến vùng đệm chứa chuỗi byte sẽ được mã hoá.
[in] len
Số byte sẽ được mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi khác của Weave hoặc lỗi riêng của nền tảng được trả về bằng các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

CopyContainer

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

Sao chép một phần tử vùng chứa TLV từ đối tượng TLVReader.

CopyContainer() mã hoá một phần tử vùng chứa TLV mới bằng cách sao chép phần tử vùng chứa được mã hoá trước nằm ở vị trí hiện tại của đối tượng TLVReader. Phương thức này sẽ ghi toàn bộ phần tử vùng chứa mới trong một lệnh gọi, sao chép loại vùng chứa, thẻ và các phần tử từ phương thức mã hoá nguồn. Khi phương thức này trả về, đối tượng trình ghi có thể được dùng để viết các phần tử TLV bổ sung theo sau phần tử vùng chứa.

Chi tiết
Tham số
[in] container
Thông tin tham chiếu đến đối tượng TLVReader giúp xác định vùng chứa TLV được mã hoá trước để sao chép.
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 trình đọc đã cung cấp không được đặt trên phần tử vùng chứa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_TLV_UNDERRUN
Nếu phương thức mã hoá TLV cơ bản liên kết với trình đọc được cung cấp đã kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu trình đọc được cung cấp 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 trình đọc được cung cấp gặp phải thẻ TLV trong ngữ cảnh không hợp lệ hoặc nếu thẻ liên kết với vùng chứa nguồn không hợp lệ hoặc không phù hợp trong ngữ cảnh mà vùng chứa mới đang được ghi.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi cụ thể khác của nền tảng do các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình trả về, hoặc do hàm GetNextBuffer() liên kết với đối tượng trình đọc.

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

Mã hoá phần tử vùng chứa TLV từ một tập hợp các phần tử thành phần được mã hoá trước.

Phương thức CopyContainer() mã hoá một phần tử vùng chứa TLV mới (cấu trúc, mảng hoặc đường dẫn) chứa một tập hợp các phần tử thành phần được lấy từ đối tượng TLVReader. Khi phương thức này được gọi, đối tượng trình đọc đã cung cấp dự kiến sẽ được định vị trên phần tử vùng chứa TLV. Vùng chứa được mã hoá mới sẽ có cùng loại và các thành phần với vùng chứa đầu vào. Thẻ cho vùng chứa mới được chỉ định làm thông số đầu vào.

Khi phương thức này trả về, đối tượng trình ghi có thể được dùng để viết các phần tử TLV bổ sung theo sau phần tử vùng chứa.

Chi tiết
Tham số
[in] tag
Thẻ TLV để mã hoá bằng vùng chứa hoặc AnonymousTag nếu vùng chứa được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] container
Thông tin tham chiếu đến đối tượng TLVReader giúp xác định vùng chứa TLV được mã hoá trước có loại và thành phần cần được sao chép.
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 trình đọc đã cung cấp không được đặt trên phần tử vùng chứa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_TLV_UNDERRUN
Nếu phương thức mã hoá TLV cơ bản liên kết với trình đọc được cung cấp đã kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu trình đọc được cung cấp 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 trình đọc được cung cấp gặp phải thẻ TLV trong ngữ cảnh không hợp lệ hoặc nếu thẻ được cung cấp không hợp lệ hoặc không phù hợp trong ngữ cảnh mà vùng chứa mới đang được ghi.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi cụ thể khác của nền tảng do các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình trả về, hoặc do hàm GetNextBuffer() liên kết với đối tượng trình đọc.

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  const uint8_t *encodedContainer,
  uint16_t encodedContainerLen
)

Mã hoá một phần tử vùng chứa TLV chứa các phần tử thành phần từ một vùng chứa được mã hoá trước.

Phương thức CopyContainer() mã hóa phần tử vùng chứa TLV mới (cấu trúc, mảng hoặc đường dẫn) chứa tập hợp các phần tử thành phần được lấy từ nội dung của vùng chứa mã hóa trước đã cung cấp. Khi phương thức được gọi, dữ liệu trong vùng đệm đầu vào đã cung cấp sẽ được phân tích cú pháp dưới dạng phần tử vùng chứa TLV. Một vùng chứa mới được ghi có cùng kiểu và thành phần với vùng chứa đầu vào. Thẻ cho vùng chứa mới được chỉ định làm thông số đầu vào.

Khi phương thức này trả về, đối tượng trình ghi có thể được dùng để viết các phần tử TLV bổ sung theo sau phần tử vùng chứa.

Chi tiết
Tham số
[in] tag
Thẻ TLV để mã hoá bằng vùng chứa hoặc AnonymousTag nếu vùng chứa được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] encodedContainer
Vùng đệm chứa vùng chứa TLV được mã hoá trước có loại và thành phần cần được sao chép.
[in] encodedContainerLen
Độ dài tính bằng byte của vùng chứa được mã hoá trước.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_TLV_UNDERRUN
Nếu vùng chứa được mã hoá kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu vùng chứa được mã hoá có chứa 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 vùng chứa được mã hoá chứa thẻ TLV trong bối cảnh không hợp lệ hoặc nếu thẻ được cung cấp không hợp lệ hay không phù hợp trong bối cảnh mà vùng chứa mới đang được ghi.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi cụ thể khác của nền tảng do các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình trả về, hoặc do hàm GetNextBuffer() liên kết với đối tượng trình đọc.

CopyElement

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

Sao chép phần tử TLV từ một đối tượng trình đọc vào tác giả.

Phương thức CopyElement() mã hóa một phần tử TLV mới có loại, thẻ và giá trị được lấy từ đối tượng TLVReader. Khi phương thức này được gọi, đối tượng trình đọc đã cung cấp dự kiến sẽ được định vị trên phần tử TLV nguồn. Phần tử mới được mã hoá sẽ có cùng loại, thẻ và nội dung với vùng chứa đầu vào. Nếu phần tử được cung cấp là vùng chứa TLV (cấu trúc, mảng hoặc đường dẫn), thì toàn bộ nội dung của vùng chứa sẽ được sao chép.

Chi tiết
Tham số
[in] reader
Thông tin tham chiếu đến đối tượng TLVReader giúp xác định một phần tử TLV được mã hoá trước cần được sao chép.
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 máy đọc đã cung cấp không được đặt trên một phần tử.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_TLV_UNDERRUN
Nếu phương thức mã hoá TLV cơ bản liên kết với trình đọc được cung cấp đã kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu trình đọc được cung cấp 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 trình đọc được cung cấp gặp phải thẻ TLV trong ngữ cảnh không hợp lệ hoặc nếu thẻ được cung cấp không hợp lệ hoặc không phù hợp trong ngữ cảnh mà vùng chứa mới đang được ghi.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi cụ thể khác của nền tảng do các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình trả về, hoặc do hàm GetNextBuffer() liên kết với đối tượng trình đọc.

CopyElement

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

EndContainer

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

Hoàn tất quá trình mã hoá phần tử vùng chứa TLV.

Phương thức EndContainer() hoàn tất việc mã hoá phần tử vùng chứa TLV và khôi phục trạng thái của đối tượng TLVWrite sau lệnh gọi trước đó đến StartContainer(). Đối với mỗi lệnh gọi đến ứng dụng StartContainer(), phải thực hiện lệnh gọi tương ứng đến EndContainer(), chuyển giá trị TLVType được lệnh gọi StartContainer() trả về. Khi EndContainer() trả về, đối tượng writer có thể được dùng để viết các phần tử TLV bổ sung theo sau phần tử vùng chứa.

Chi tiết
Tham số
[in] outerContainerType
Giá trị TLVType mà phương thức StartContainer() 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
Trường hợp lệnh gọi StartContainer() tương ứng không được thực hiện.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi khác của Weave hoặc lỗi riêng của nền tảng được trả về bằng các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

Hoàn tất

WEAVE_ERROR Finalize(
  void
)

Hoàn tất việc viết bộ mã hoá TLV.

Phương thức Finalize() hoàn tất quá trình ghi chế độ mã hoá TLV vào vùng đệm đầu ra cơ bản. Ứng dụng phải gọi phương thức này trước khi dùng nội dung của vùng đệm. Chỉ có thể gọi Finalize() khi không có trình ghi vùng chứa nào cho tác giả hiện tại. (Xem OpenContainer()).

Chi tiết
Giá trị trả về
WEAVE_NO_ERROR
Liệu quá trình mã hoá có được hoàn tất thành công hay không.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
other
Các lỗi khác của Weave hoặc lỗi cụ thể theo nền tảng được trả về bằng hàm FinalizeBuffer() đã định cấu hình.

GetContainerType

TLVType GetContainerType(
  void
) const 

Trả về loại vùng chứa mà TLVWriter hiện đang viết.

Phương thức GetContainerType() trả về loại vùng chứa TLVTLVWriter hiện đang viết. Nếu TLVWriter không ghi các phần tử trong vùng chứa (tức là nếu viết ở cấp ngoài cùng của bộ mã hoá), thì phương thức này sẽ trả về kTLVType_Notspecified.

Chi tiết
Trả về
TLVType của vùng chứa hiện tại hoặc kTLVType_Not specified nếu TLVWriter không ghi các phần tử trong một vùng chứa.

GetLengthWritten

uint32_t GetLengthWritten(
  void
)

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

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

Init

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

Khởi động một đối tượng TLVWriter để ghi vào một vùng đệm đầu ra duy nhất.

Chi tiết
Tham số
[in] buf
Một con trỏ đến vùng đệm mà TLV sẽ được ghi vào.
[in] maxLen
Số byte tối đa cần được ghi vào vùng đệm đầu ra.

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Khởi động một đối tượng TLVWriter để ghi vào một PacketBuffer.

Quá trình ghi bắt đầu ngay sau byte cuối cùng của dữ liệu hiện có trong vùng đệm đã cung cấp.

Chi tiết
Tham số
[in] buf
Con trỏ trỏ đến một PacketBuffer mà TLV sẽ được ghi vào đó.
[in] maxLen
Số byte tối đa cần được ghi vào vùng đệm đầu ra.

Init

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

Khởi động một đối tượng TLVWriter để ghi vào một hoặc nhiều PacketBuffers.

Quá trình ghi bắt đầu ngay sau byte cuối cùng của dữ liệu hiện có trong vùng đệm được chỉ định. Nếu giá trị allowDiscontiguousBuffers là true, thì các PacketBuffers bổ sung sẽ được phân bổ và liên kết với bộ đệm đã cung cấp khi cần thiết để đáp ứng lượng dữ liệu đã ghi. Nếu vùng đệm đầu ra được chỉ định đã là phần đầu của chuỗi vùng đệm, thì đầu ra sẽ được ghi vào các vùng đệm tiếp theo trong chuỗi trước khi phân bổ bất kỳ vùng đệm mới nào.

Chi tiết
Tham số
[in] buf
Con trỏ trỏ đến một PacketBuffer mà dữ liệu TLV sẽ được ghi vào đó.
[in] maxLen
Số byte tối đa cần được ghi vào(các) vùng đệm đầu ra.
[in] allowDiscontiguousBuffers
Nếu đúng, ghi dữ liệu vào một chuỗi PacketBuffers, phân bổ các bộ đệm mới nếu cần để lưu trữ dữ liệu đã ghi. Nếu đặt là false, thao tác ghi sẽ không thành công với WEAVE_ERROR_BUFFER_TOO_Small nếu dữ liệu đã ghi vượt quá khoảng trống có sẵn trong vùng đệm đầu ra ban đầu.

InitMalloced

void InitMalloced(
  uint8_t *& outBuf,
  uint32_t initialBufSize,
  uint32_t maxLen
)

Khởi động một đối tượng TLVWriter để ghi vào vùng đệm động.

Chi tiết
Tham số
[in] buf
Tham chiếu đến con trỏ sẽ nhận vùng đệm được phân bổ.
[in] maxLen
Số byte tối đa cần được ghi vào vùng đệm đầu ra.
[in] initialBufSize
Số byte ban đầu cần được phân bổ cho vùng đệm.

OpenContainer

WEAVE_ERROR OpenContainer(
  uint64_t tag,
  TLVType containerType,
  TLVWriter & containerWriter
)

Khởi chạy một đối tượng TLVWriter mới để ghi các thành phần của một phần tử vùng chứa TLV.

Phương thức OpenContainer() được dùng để ghi các phần tử vùng chứa TLV (cấu trúc, mảng hoặc đường dẫn) vào mã hoá. Phương thức này sẽ lấy loại và thẻ (nếu có) của vùng chứa mới, đồng thời tham chiếu đến một đối tượng trình ghi mới (trình viết của vùng chứa) sẽ được khởi tạo cho mục đích viết các thành phần của vùng chứa. Các ứng dụng ghi thành viên của vùng chứa mới bằng cách sử dụng trình ghi vùng chứa và sau đó gọi CloseContainer() để hoàn tất mã hóa vùng chứa.

Khi trình ghi 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 ghi mẹ.

Trình ghi vùng chứa kế thừa nhiều thuộc tính cấu hình từ trình ghi mẹ. Đó là:

  • Mã hồ sơ ngầm ẩn (ImplicitProfileId)
  • Con trỏ dữ liệu ứng dụng (AppData)
  • Con trỏ hàm GetNewBuffer và FinalizeBuffer

Chi tiết
Tham số
[in] tag
Thẻ TLV để mã hoá bằng vùng chứa hoặc AnonymousTag nếu vùng chứa được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] containerType
Loại vùng chứa cần mã hoá. Giá trị này phải là kTLVType_Structure, kTLVType_Array hoặc kTLVType_Path.
[out] containerWriter
Tham chiếu đến đối tượng TLVWriter sẽ được khởi tạo để ghi các thành phần của phần tử vùng chứa mới. Mọi dữ liệu liên kết với đối tượng đã cung cấp đều sẽ bị ghi đè.
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 giá trị được chỉ định cho ContainerType không chính xác.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi khác của Weave hoặc lỗi riêng của nền tảng được trả về bằng các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

Mã hoá giá trị số nguyên có dấu TLV.

Đây là một hàm thành phần nạp chồng, được cung cấp để thuận tiện. Hàm này chỉ khác với hàm trên ở(các) đối số mà hàm chấp nhận.

Chi tiết
Tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng giá trị hoặc AnonymousTag nếu giá trị được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] v
Giá trị cần được mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi khác của Weave hoặc lỗi riêng của nền tảng được trả về bằng các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v,
  bool preserveSize
)

Mã hoá giá trị số nguyên có dấu TLV.

Đây là một hàm thành phần nạp chồng, được cung cấp để thuận tiện. Hàm này chỉ khác với hàm trên ở(các) đối số mà hàm chấp nhận.

Chi tiết
Tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng giá trị hoặc AnonymousTag nếu giá trị được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] v
Giá trị cần được mã hoá.
[in] preserveSize
Đúng nếu giá trị phải được mã hoá theo cùng số byte như ở loại dữ liệu đầu vào. Sai nếu giá trị phải được mã hoá theo số byte tối thiểu cần thiết để thể hiện giá trị. Lưu ý: Các ứng dụng nên đặt tham số này thành false.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi khác của Weave hoặc lỗi riêng của nền tảng được trả về bằng các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v
)

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v,
  bool preserveSize
)

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v
)

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v,
  bool preserveSize
)

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v
)

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v,
  bool preserveSize
)

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v
)

Mã hoá giá trị số nguyên chưa ký TLV.

Đây là một hàm thành phần nạp chồng, được cung cấp để thuận tiện. Hàm này chỉ khác với hàm trên ở(các) đối số mà hàm chấp nhận.

Chi tiết
Tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng giá trị hoặc AnonymousTag nếu giá trị được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] v
Giá trị cần được mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi khác của Weave hoặc lỗi riêng của nền tảng được trả về bằng các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v,
  bool preserveSize
)

Mã hoá giá trị số nguyên chưa ký TLV.

Đây là một hàm thành phần nạp chồng, được cung cấp để thuận tiện. Hàm này chỉ khác với hàm trên ở(các) đối số mà hàm chấp nhận.

Chi tiết
Tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng giá trị hoặc AnonymousTag nếu giá trị được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] v
Giá trị cần được mã hoá.
[in] preserveSize
Đúng nếu giá trị phải được mã hoá theo cùng số byte như ở loại dữ liệu đầu vào. Sai nếu giá trị phải được mã hoá theo số byte tối thiểu cần thiết để thể hiện giá trị. Lưu ý: Các ứng dụng nên đặt tham số này thành false.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi khác của Weave hoặc lỗi riêng của nền tảng được trả về bằng các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v
)

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v,
  bool preserveSize
)

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v
)

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v,
  bool preserveSize
)

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v
)

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v,
  bool preserveSize
)

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  float v
)

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  double v
)

Mã hoá giá trị dấu phẩy động TLV.

Đây là một hàm thành phần nạp chồng, được cung cấp để thuận tiện. Hàm này chỉ khác với hàm trên ở(các) đối số mà hàm chấp nhận.

Chi tiết
Tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng giá trị hoặc AnonymousTag nếu giá trị được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] v
Giá trị cần được mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi khác của Weave hoặc lỗi riêng của nền tảng được trả về bằng các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

PutBoolean

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

Mã hoá giá trị boolean TLV.

Chi tiết
Tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng giá trị hoặc AnonymousTag nếu giá trị được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] v
Giá trị cần được mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi khác của Weave hoặc lỗi riêng của nền tảng được trả về bằng các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

PutBytes

WEAVE_ERROR PutBytes(
  uint64_t tag,
  const uint8_t *buf,
  uint32_t len
)

Mã hoá giá trị chuỗi byte TLV.

Chi tiết
Tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng giá trị hoặc AnonymousTag nếu giá trị được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] buf
Con trỏ trỏ đến vùng đệm chứa chuỗi byte sẽ được mã hoá.
[in] len
Số byte sẽ được mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi khác của Weave hoặc lỗi riêng của nền tảng được trả về bằng các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

PutNull

WEAVE_ERROR PutNull(
  uint64_t tag
)

Mã hoá giá trị rỗng TLV.

Chi tiết
Tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng giá trị hoặc AnonymousTag nếu giá trị được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi khác của Weave hoặc lỗi riêng của nền tảng được trả về bằng các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

PutPreEncodedContainer

WEAVE_ERROR PutPreEncodedContainer(
  uint64_t tag,
  TLVType containerType,
  const uint8_t *data,
  uint32_t dataLen
)

Mã hoá phần tử vùng chứa TLV từ một tập hợp các phần tử thành phần được mã hoá trước.

Phương thức PutPreEncodedContainer() sẽ mã hoá một phần tử vùng chứa TLV mới (cấu trúc, mảng hoặc đường dẫn) chứa một tập hợp các phần tử con được lấy từ vùng đệm mã hoá trước. Vùng đệm đầu vào dự kiến sẽ chứa không hoặc nhiều phần tử TLV được mã hoá đầy đủ, với các thẻ tuân thủ các quy tắc liên kết với loại vùng chứa được chỉ định (ví dụ: thành phần cấu trúc phải có thẻ, trong khi các thành phần mảng thì không).

Phương thức này mã hoá toàn bộ phần tử vùng chứa trong một lệnh gọi. Khi PutPreEncodedContainer() trả về, đối tượng writer có thể được dùng để viết các phần tử TLV bổ sung theo sau phần tử vùng chứa.

Chi tiết
Tham số
[in] tag
Thẻ TLV để mã hoá bằng vùng chứa hoặc AnonymousTag nếu vùng chứa được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] containerType
Loại vùng chứa cần mã hoá. Giá trị này phải là kTLVType_Structure, kTLVType_Array hoặc kTLVType_Path.
[in] data
Một con trỏ đến vùng đệm không chứa các phần tử TLV được mã hoá khác sẽ trở thành thành phần của vùng chứa mới.
[in] dataLen
Số byte trong vùng đệm data.
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 giá trị được chỉ định cho ContainerType không chính xác.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi khác của Weave hoặc lỗi riêng của nền tảng được trả về bằng các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

Mã hoá giá trị chuỗi UTF8 TLV.

Chi tiết
Tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng giá trị hoặc AnonymousTag nếu giá trị được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] buf
Con trỏ trỏ tới chuỗi UTF-8 kết thúc bằng rỗng để mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi khác của Weave hoặc lỗi riêng của nền tảng được trả về bằng các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf,
  uint32_t len
)

Mã hoá giá trị chuỗi UTF8 TLV.

Chi tiết
Tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng giá trị hoặc AnonymousTag nếu giá trị được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] buf
Con trỏ trỏ đến chuỗi UTF-8 sẽ được mã hoá.
[in] len
Độ dài (bằng byte) của chuỗi sẽ được mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi khác của Weave hoặc lỗi riêng của nền tảng được trả về bằng các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

PutStringF

WEAVE_ERROR PutStringF(
  uint64_t tag,
  const char *fmt,
  ...
)

Mã hoá đầu ra chuỗi được định dạng theo định dạng trong phần tử TLV.

PutStringF là một dạng tương tự của sprintf, trong đó đầu ra được lưu trữ trong phần tử TLV thay vì vùng đệm ký tự. Khi chức năng printf mở rộng được cung cấp, hàm này có thể xuất chuỗi kết quả vào bộ nhớ cơ bản không liên tục. Quá trình triển khai hỗ trợ các tính năng nâng cao cho printf sau đây:

Nền tảng này cung cấp vcbprintf dựa trên lệnh gọi lại, cho phép gọi một lệnh gọi lại tuỳ chỉnh thay cho putchar.

Nền tảng này cung cấp một biến thể của vsnprintf có tên là vsnprintf_ex, hoạt động giống hệt như vsnprintf, ngoại trừ việc có các điều khoản để bỏ qua n ký tự đầu ra của kết quả.

Lưu ý rằng mặc dù hàm dựa trên lệnh gọi lại có thể là đơn giản nhất và sử dụng ít mã nhất, nhưng sự đa dạng của các hàm vsprintf_ex sẽ tốn ít ngăn xếp hơn.

Nếu không có lựa chọn nào nêu trên, nhưng nền tảng cung cấp malloc thì hàm sẽ phân bổ vùng đệm tạm thời để lưu giữ đầu ra. Khi nền tảng không cung cấp tính năng nâng cao cho nhóm printf cũng như malloc, kết quả sẽ bị cắt bớt để phù hợp với trạng thái liên tục trong bộ nhớ TLV hiện tại

Chi tiết
Tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng giá trị hoặc AnonymousTag nếu giá trị được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] fmt
Chuỗi định dạng dùng để định dạng danh sách đối số. Tuân theo cú pháp và quy tắc tương tự như chuỗi định dạng cho nhóm hàm printf.
[in] ...
Danh sách các đối số cần được định dạng trong giá trị đầu ra theo fmt.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
other
Nếu các lệnh gọi cơ bản đến các phương thức TLVWriter WriteElementHead hoặc GetNewBuffer không thành công, thì lỗi của các phương thức đó sẽ ngay lập tức được chuyển tiếp lên ngăn xếp lệnh gọi.

StartContainer

WEAVE_ERROR StartContainer(
  uint64_t tag,
  TLVType containerType,
  TLVType & outerContainerType
)

Bắt đầu mã hoá một phần tử vùng chứa TLV mới.

Phương thức StartContainer() được dùng để ghi các phần tử vùng chứa TLV (cấu trúc, mảng hoặc đường dẫn) vào mã hoá. Phương thức này sẽ lấy loại và thẻ (nếu có) của vùng chứa mới, đồng thời tham chiếu đến giá trị TLVType sẽ được dùng để lưu ngữ cảnh hiện tại của tác giả trong khi đang được dùng để viết vùng chứa.

Sau khi phương thức StartContainer() trả về, ứng dụng sẽ sử dụng đối tượng TLVWriter hiện tại để ghi các phần tử của vùng chứa. Khi hoàn tất, ứng dụng phải gọi phương thức EndContainer() để hoàn tất mã hoá vùng chứa.

Chi tiết
Tham số
[in] tag
Thẻ TLV để mã hoá bằng vùng chứa hoặc AnonymousTag nếu vùng chứa được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] containerType
Loại vùng chứa cần mã hoá. Giá trị này phải là kTLVType_Structure, kTLVType_Array hoặc kTLVType_Path.
[out] outerContainerType
Tham chiếu đến giá trị TLVType sẽ nhận ngữ cảnh của người viết.
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 giá trị được chỉ định cho ContainerType không chính xác.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi khác của Weave hoặc lỗi riêng của nền tảng được trả về bằng các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

StartPutBytes

WEAVE_ERROR StartPutBytes(
  uint64_t tag,
  uint32_t totalLen
)

Mã hoá một chuỗi byte TLV trong nhiều đoạn.

Bạn nên dùng phương thức này với ContinuePutBytes.

Chi tiết
Tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng giá trị hoặc AnonymousTag nếu giá trị được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] totalLen
Tổng số byte sẽ được mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một người viết vùng chứa đã được mở đối với người viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu giá trị được ghi, sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi khởi tạo trình ghi.
WEAVE_ERROR_NO_MEMORY
Nếu việc phân bổ vùng đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi khác của Weave hoặc lỗi riêng của nền tảng được trả về bằng các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

VPutStringF

WEAVE_ERROR VPutStringF(
  uint64_t tag,
  const char *fmt,
  va_list ap
)

Mã hoá đầu ra chuỗi được định dạng theo định dạng trong phần tử TLV.

PutStringF là một dạng tương tự của sprintf, trong đó đầu ra được lưu trữ trong phần tử TLV thay vì vùng đệm ký tự. Khi chức năng printf mở rộng được cung cấp, hàm này có thể xuất chuỗi kết quả vào bộ nhớ cơ bản không liên tục. Quá trình triển khai hỗ trợ các tính năng nâng cao cho printf sau đây:

Nền tảng này cung cấp vcbprintf dựa trên lệnh gọi lại, cho phép gọi một lệnh gọi lại tuỳ chỉnh thay cho putchar.

Nền tảng này cung cấp một biến thể của vsnprintf có tên là vsnprintf_ex, hoạt động giống hệt như vsnprintf, ngoại trừ việc có các điều khoản để bỏ qua n ký tự đầu ra của kết quả.

Lưu ý rằng mặc dù hàm dựa trên lệnh gọi lại có thể là đơn giản nhất và sử dụng ít mã nhất, nhưng sự đa dạng của các hàm vsprintf_ex sẽ tốn ít ngăn xếp hơn.

Nếu không có lựa chọn nào nêu trên, nhưng nền tảng cung cấp malloc thì hàm sẽ phân bổ vùng đệm tạm thời để lưu giữ đầu ra. Khi nền tảng không cung cấp tính năng nâng cao cho nhóm printf cũng như malloc, kết quả sẽ bị cắt bớt để phù hợp với trạng thái liên tục trong bộ nhớ TLV hiện tại

Chi tiết
Tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng giá trị hoặc AnonymousTag nếu giá trị được mã hoá mà không cần thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] fmt
Chuỗi định dạng dùng để định dạng danh sách đối số. Tuân theo cú pháp và quy tắc tương tự như chuỗi định dạng cho nhóm hàm printf.
[in] ap
Danh sách các đối số cần được định dạng trong giá trị đầu ra theo fmt.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức này thành công.
other
Nếu các lệnh gọi cơ bản đến các phương thức TLVWriter WriteElementHead hoặc GetNewBuffer không thành công, thì lỗi của các phương thức đó sẽ ngay lập tức được chuyển tiếp lên ngăn xếp lệnh gọi.

Hàm tĩnh công khai

FinalizePacketBuffer

WEAVE_ERROR FinalizePacketBuffer(
  TLVWriter & writer,
  uintptr_t bufHandle,
  uint8_t *bufStart,
  uint32_t dataLen
)

Hoạt động triển khai hàm FinalizeBuffer TLVWriter để ghi vào một chuỗi PacketBuffers.

Hàm FinalizePacketBuffer() thực hiện bước hoàn tất cần thiết cần thiết khi sử dụng TLVWriter để ghi vào chuỗi PacketBuffers. Hàm này được thiết kế để dùng cùng với hàm GetNewPacketBuffer().

Xem định nghĩa loại FinalizeBufferFunct để biết thêm thông tin về API của hàm FinalizePacketBuffer().

GetNewBuffer_Malloced

WEAVE_ERROR GetNewBuffer_Malloced(
  TLVWriter & writer,
  uintptr_t & bufHandle,
  uint8_t *& bufStart,
  uint32_t & bufLen
)

Hoạt động triển khai hàm GetNewBuffer TLVWriter để ghi vào bộ đệm động.

Hàm GetNewBuffer_Malloced() cung cấp không gian đầu ra mới cho TLVWriter bằng cách tăng gấp đôi kích thước của bộ đệm động cơ bản khi cần để lưu trữ bộ mã hoá. Hàm này được thiết kế để gán cho con trỏ hàm GetNewBuffer TLVWriter.

Xem định nghĩa loại GetNewBufferFunct để biết thêm thông tin về API của hàm GetNewBuffer_Malloced().

GetNewPacketBuffer

WEAVE_ERROR GetNewPacketBuffer(
  TLVWriter & writer,
  uintptr_t & bufHandle,
  uint8_t *& bufStart,
  uint32_t & bufLen
)

Hoạt động triển khai hàm GetNewBuffer TLVWriter để ghi vào chuỗi PacketBuffers.

Hàm GetNewPacketBuffer() cung cấp không gian đầu ra mới cho TLVWriter bằng cách phân bổ một chuỗi gồm một hoặc nhiều PacketBuffers cần thiết để lưu trữ bộ mã hoá. Hàm này được thiết kế để gán cho con trỏ hàm GetNewBuffer TLVWriter.

Lưu ý rằng khi sử dụng GetNewPacketBuffer với TLVWriter, bạn cũng nên sử dụng hàm FinalizePacketBuffer() tương ứng (hoặc một hàm tương đương) để hoàn tất chuỗi bộ đệm.

Xem định nghĩa loại GetNewBufferFunct để biết thêm thông tin về API của hàm GetNewPacketBuffer().

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

IsCloseContainerReserved

bool IsCloseContainerReserved(
  void
) const 

Xác định xem vùng chứa có nên đặt trước khoảng trống cho biểu tượng CloseContainer tại thời điểm bắt đầu / mở vùng chứa hay không.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

SetCloseContainerReserved

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

Đặt xem vùng chứa có nên đặt trước khoảng trống cho biểu tượng CloseContainer tại thời điểm bắt đầu / mở vùng chứa hay không.

SetContainerOpen

void SetContainerOpen(
  bool aContainerOpen
)

WriteData

WEAVE_ERROR WriteData(
  const uint8_t *p,
  uint32_t len
)

WriteElementHead

WEAVE_ERROR WriteElementHead(
  TLVElementType elemType,
  uint64_t tag,
  uint64_t lenOrVal
)

WriteElementWithData

WEAVE_ERROR WriteElementWithData(
  TLVType type,
  uint64_t tag,
  const uint8_t *data,
  uint32_t dataLen
)