Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

nl::Weave::TLV::TLVWriter

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

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

Tóm tắt

TLVWriter triển khai bộ mã hóa kiểu luồng chỉ dành cho dữ liệu TLV của Weave. Các ứng dụng ghi dữ liệu vào quá trình mã hóa bằng cách gọi một trong các phương thức Put() của tác giả, chuyển thông tin thẻ và giá trị được liên kết nếu cần. Các ứng dụng tương tự có thể mã hóa 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 các phương thức OpenContainer() hoặc EnterCONTAINER() của nhà viết kịch bản.

Một đối tượng TLVWriter có thể ghi dữ liệu trực tiếp vào một bộ đệm đầu ra cố định hoặc tới 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 chức năng GetNewBufferFinalizeBuffer của riêng mình để chuyển hướng đầu ra đến một đích tuỳ ý, ví dụ: một cổng hoặc hàng đợi sự kiện.

Tính kế thừa

Các lớp con đã biết trực tiếp: nl::Weave::TLV::CirularTLVWriter

Các loại đượ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 để thực hiện việc cuối cùng của kết quả 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.

Thuộc tính công khai

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

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 thành việc ghi vùng chứa TLV sau lệnh gọi đến OpenCONTAINER().
ContinuePutBytes(const uint8_t *buf, uint32_t len)
Mã hóa một 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 TLV Reader.
CopyContainer(uint64_t tag, TLVReader & container)
Mã hóa phần tử vùng chứa TLV từ một nhóm phần tử thành viên được mã hóa trước.
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
Mã hóa 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ã hóa trước.
CopyElement(TLVReader & reader)
Sao chép một phần tử TLV từ đối tượng người đọc vào tác giả.
CopyElement(uint64_t tag, TLVReader & reader)
EndContainer(TLVType outerContainerType)
Hoàn thành mã hóa một phần tử vùng chứa TLV.
Finalize(void)
Hoàn tất việc viết mã TLV.
GetContainerType(void) const
Trả về loại vùng chứa mà TLVWriter đang viết.
GetLengthWritten(void)
uint32_t
Trả về tổng số byte được viết từ khi người viết được khởi tạo.
Init(uint8_t *buf, uint32_t maxLen)
void
Khởi tạo đối tượng TLVWriter để ghi vào một bộ đệm đầu ra.
Init(PacketBuffer *buf, uint32_t maxLen)
void
Khởi tạo đối tượng TLVWriter để ghi vào một PacketBuffer.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Khởi tạo đố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 tạo đối tượng TLVWriter để ghi vào một bộ đệm động.
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
Khởi tạo một đối tượng TLVWriter mới để ghi thành phần của thành phần vùng chứa TLV.
Put(uint64_t tag, int8_t v)
Mã hóa một giá trị số nguyên có chữ ký TLV.
Put(uint64_t tag, int8_t v, bool preserveSize)
Mã hóa một giá trị số nguyên có chữ ký 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ã hóa một giá trị số nguyên không dấu TLV.
Put(uint64_t tag, uint8_t v, bool preserveSize)
Mã hóa một giá trị số nguyên không dấu 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ã hóa một giá trị dấu phẩy động TLV.
PutBoolean(uint64_t tag, bool v)
Mã hóa một giá trị boolean TLV.
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
Mã hóa một giá trị chuỗi byte TLV.
PutNull(uint64_t tag)
Mã hóa một giá trị rỗng TLV.
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
Mã hóa phần tử vùng chứa TLV từ một nhóm phần tử thành viên được mã hóa trước.
PutString(uint64_t tag, const char *buf)
Mã hóa một giá trị chuỗi UTF8 TLV.
PutString(uint64_t tag, const char *buf, uint32_t len)
Mã hóa một giá trị chuỗi UTF8 TLV.
PutStringF(uint64_t tag, const char *fmt, ...)
Mã hóa đầ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 thành phần vùng chứa TLV mới.
StartPutBytes(uint64_t tag, uint32_t totalLen)
Mã hóa một chuỗi byte TLV theo nhiều phân đoạn.
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
Mã hóa đầ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)
Triển khai hàm TLVWriter FinalizeBuffer để viết vào chuỗi của PacketBuffers.
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Triển khai hàm TLVWriter GetNewBuffer để ghi vào một bộ đệm động.
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Triển khai hàm TLVWriter GetNewBuffer để viết vào chuỗi của 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 không gian cho biểu tượng CloseContainer tại điểm bắt đầu / mở vùng chứa hay không.
IsContainerOpen(void) const
bool
SetCloseContainerReserved(bool aCloseContainerReserved)
void
Đặt vùng chứa có đặt trước không gian cho biểu tượng CloseVùng tạ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)

Các loại đượ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 để thực hiện việc cuối cùng của kết quả từ đối tượng TLVWriter.

Các hàm thuộc loại này được gọi khi phương thức TLVWriter\39;s finalize() được gọi. Chức năng này dự kiến sẽ thực hiện mọi bước dọn dẹp hoặc hoàn thiện cần thiết liên quan đến việc sử dụng kết quả của đối tượng tác giả. Ví dụ: Nội dung này có thể là những trường hợp ghi lại độ dài cuối cùng của quá trình mã hóa hoặc đóng phần mô tả tệp.

Thông tin chi tiết
Các thông số
[in] writer
Tham chiếu đến đối tượng TLVWriter đang được hoàn thiện.
[in,out] bufHandle
Giá trị ngữ cảnh uintptr_t được đặt bởi các lệnh gọi trước đó cho hàm GetNewBuffer.
[in,out] bufStart
Con trỏ đến phần đầu của bộ đệm đầu ra hiện tại (và cuối cùng).
[in,out] bufLen
Số byte có trong bộ đệm do bufStart trỏ đến.
Giá trị trả về
WEAVE_NO_ERROR
Nếu hoàn tất thành công.
other
Các mã lỗi Weave hoặc mã nền tảng cụ thể khác cho biết đã xảy ra lỗi trong quá trình tổng kế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 dùng để chuẩn bị không gian bộ đệm mới để TLVWriter ghi vào. Khi được gọi, hàm dự kiến sẽ trả về một con trỏ đến vị trí bộ nhớ mà dữ liệu mới được viết cùng với độ dài tối đa được liên kết. Hàm có thể cung cấp không gian ghi bằng cách phân bổ bộ đệm mới để lưu giữ dữ liệu hoặc bằng cách xóa dữ liệu đã ghi trước đó khỏi bộ đệm hiện có.

Thông tin chi tiết
Các thông số
[in] writer
Tham chiếu đến đối tượng TLVWriter đang yêu cầu không gian bộ đệ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 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 hàm, bufStart trỏ đến điểm bắt đầu của bộ đệm đầu ra hiện tại. Khi thoát, bufStart dự kiến sẽ trỏ đến đầu bộ đệ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 trỏ đến một vị trí hoàn toàn mới.
[in,out] bufLen
Tham chiếu đến số nguyên không dấu. Khi nhập hàm này, bufLen chứa số byte của không gian used chưa được dùng vào bộ đệ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 bộ đệm đầu ra mới.
Giá trị trả về
WEAVE_NO_ERROR
Nếu hàm có thể cung cấp thêm khoảng trống cho tác giả.
other
Các mã lỗi Weave hoặc mã nền tảng cụ thể khác cho biết rằng đã xảy ra lỗi ngăn cản hàm tạo thêm không gian bộ đệm.

Thuộc tính công khai

ĐÃ GỬI

void * AppData

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

Vòng cuối

FinalizeBufferFunct FinalizeBuffer

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

Đối tượng TLVWriter sẽ gọi hàm FinalizeBuffer bất cứ khi nào phương thức finalize() được gọi. Các ứng dụng có thể đặt con trỏ hàm vào bất kỳ thời điểm nào trước khi gọi finalize(). Theo mặc định, con trỏ được đặt thành NULL, điều này 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.

Tải NewBBer

GetNewBufferFunct GetNewBuffer

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

Đối tượng TLVWriter sẽ gọi hàm GetNewBuffer mỗi khi bạn 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 đặt thành NULL (giá trị mặc định), người viết sẽ trả về WEAVE_ERROR_NO_MEMORY nếu dữ liệu đầu ra tràn ra bộ đệm hiện tại.

GetNewBuffer có thể được một ứng dụng đặt bất cứ lúc nào, nhưng thường được đặt khi người viết 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.

Hồ sơ ngầm ẩn

uint32_t ImplicitProfileId

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

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

Theo mặc định, thuộc tính ImplicitProfileId được đặt thành kProfileIdNotSpecated. Lệnh này sẽ hướng dẫn người viết không phát ra các thẻ được mã hóa ngầm. Các ứng dụng có thể đặt ImplicitProfileId bất cứ lúc nào để bật các thẻ mã hóa ở dạng ngầm, bắt đầu từ thời điểm hiện tại trong quá trình mã hóa. Id hồ sơ 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 đang được nói.

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

mBufhandle

uintptr_t mBufHandle

mBufStart

uint8_t * mBufStart

mVùngType

TLVType mContainerType

Viết mLenen

uint32_t mLenWritten

mMaxLen

uint32_t mMaxLen

Còn lại

uint32_t mRemainingLen

mWritePoint

uint8_t * mWritePoint

Hàm công khai

Vùng chứa đóng

WEAVE_ERROR CloseContainer(
  TLVWriter & containerWriter
)

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

Phương thức Close

Khi CloseContainer() trả về, ứng dụng có thể tiếp tục sử dụng trình viết mẹ để ghi các phần tử TLV xuất hiện sau phần tử vùng chứa. Tại thời điểm này, người viết vùng chứa đã cung cấp phải được xem là "$39&de-khởi tạo\39; và không được sử dụng trừ khi khởi chạy lại.

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

Tiếp tục

WEAVE_ERROR ContinuePutBytes(
  const uint8_t *buf,
  uint32_t len
)

Mã hóa một giá trị chuỗi byte TLV.

Bạn nên dùng thuộc tính này cùng với Put PutBytes.

Thông tin chi tiết
Các thông số
[in] buf
Con trỏ đến bộ đệm chứa chuỗi byte cần mã hóa.
[in] len
Số lượng byte sẽ được mã hóa.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một tác giả vùng chứa đã được mở trên tác giả 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 bạn viết giá trị này sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi người viết được khởi tạo.
WEAVE_ERROR_NO_MEMORY
Nếu cố gắng phân bổ bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi nền tảng cụ thể khác do hàm GetNewBuffer() hoặc finalizeBuffer() định cấu hình trả về.

Sao chép vùng chứa

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

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

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

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

Sao chép vùng chứa

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

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

Phương thức CopyCopy() mã hóa 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 TLV Reader. Khi phương thức này được gọi, đối tượng đọ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 mới được mã hóa sẽ có cùng loại và thành viê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 tác giả có thể được dùng để viết các phần tử TLV bổ sung sau phần tử vùng chứa.

Thông tin chi tiết
Các thông số
[in] tag
Thẻ TLV sẽ được mã hóa bằng vùng chứa hoặc AnonymousTag nếu vùng chứa phải được mã hóa mà không có thẻ. Các 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
Tham chiếu đến đối tượng TLV Reader nhận dạng vùng chứa TLV được mã hóa trước có loại và thành viên cần sao chép.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_INCORRECT_STATE
Nếu trình đọc được cung cấp không nằm trên phần tử vùng chứa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một tác giả vùng chứa đã được mở trên tác giả hiện tại và chưa đóng.
WEAVE_ERROR_TLV_UNDERRUN
Nếu chế độ mã hóa TLV cơ bản liên kết với trình đọ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 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 thẻ TLV trong ngữ cảnh không hợp lệ hoặc nếu thẻ đã cung cấp không hợp lệ hay 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 bạn viết giá trị này sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi người viết được khởi tạo.
WEAVE_ERROR_NO_MEMORY
Nếu cố gắng phân bổ bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi nền tảng khác được trả về bởi các hàm GetNewBuffer() hoặc finalizeBuffer() đã định cấu hình, hoặc bằng hàm GetNextBuffer() liên kết với đối tượng người đọc.

Sao chép vùng chứa

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

Mã hóa 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ã hóa trước.

Phương thức CopyCopy() mã hóa một phần tử vùng chứa TLV mới (một 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ừ nội dung của một vùng chứa đã mã hóa trước đó. Khi phương thức này được gọi, dữ liệu trong bộ đệm nhập được cung cấp sẽ được phân tích cú pháp như một phần tử vùng chứa TLV mà vùng chứa mới được viết có cùng loại và thành viê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 tác giả có thể được dùng để viết các phần tử TLV bổ sung sau phần tử vùng chứa.

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

Phần tử sao chép

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

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

Phương thức CopyElement() mã hoá một phần tử TLV mới có loại, thẻ và giá trị được lấy từ đối tượng TLV Reader. Khi phương thức này được gọi, đối tượng đọ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ã hóa 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à một 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.

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

Phần tử sao chép

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

Vùng chứa cuối

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

Hoàn thành mã hóa một phần tử vùng chứa TLV.

Phương thức EndContainer() sẽ hoàn tất quá trình mã hóa 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 StartContainer() phải thực hiện lệnh gọi tương ứng đến EndCONTAINER(), chuyển giá trị TLVType được trả về bởi lệnh gọi {1CONTAINER}StartContainer(). Khi EndCONTAINER() trả về, đối tượng người viết có thể được dùng để viết các phần tử TLV bổ sung theo phần tử vùng chứa.

Thông tin chi tiết
Các thông số
[in] outerContainerType
Giá trị TLVType được phương thức StartCONTAINER() trả về.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_INCORRECT_STATE
Nếu lệnh gọi StartVùng() tương ứng không được thực hiện.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một tác giả vùng chứa đã được mở trên tác giả hiện tại và chưa đóng.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu bạn viết giá trị này sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi người viết được khởi tạo.
WEAVE_ERROR_NO_MEMORY
Nếu cố gắng phân bổ bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi nền tảng cụ thể khác do hàm GetNewBuffer() hoặc finalizeBuffer() định cấu hình trả về.

Hoàn tất

WEAVE_ERROR Finalize(
  void
)

Hoàn tất việc viết mã TLV.

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

Thông tin chi tiết
Giá trị trả về
WEAVE_NO_ERROR
Nếu mã hóa được hoàn tất thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một tác giả vùng chứa đã được mở trên tác giả hiện tại và chưa đóng.
other
Các lỗi Weave hoặc lỗi nền tảng cụ thể khác do hàm finalizeBuffer() định cấu hình trả về.

Loại vùng chứa

TLVType GetContainerType(
  void
) const 

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

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

Thông tin chi tiết
Trả về
TLVType của vùng chứa hiện tại hoặc kTLVType_NotNot đặc biệt nếu TLVWriter không ghi các phần tử trong một vùng chứa.

GetLengthWrite

uint32_t GetLengthWritten(
  void
)

Trả về tổng số byte được viết từ khi người viết được khởi tạo.

Thông tin chi tiết
Trả về
Tổng số byte được viết kể từ khi người viết được khởi tạo.

Số nguyên

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

Khởi tạo đối tượng TLVWriter để ghi vào một bộ đệm đầu ra.

Thông tin chi tiết
Các thông số
[in] buf
Con trỏ đến bộ đệm sẽ viết TLV vào đó.
[in] maxLen
Số byte tối đa sẽ được ghi vào bộ đệm đầu ra.

Số nguyên

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Khởi tạo đố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 bộ đệm được cung cấp.

Thông tin chi tiết
Các thông số
[in] buf
Con trỏ đến PacketBuffer sẽ viết TLV vào.
[in] maxLen
Số byte tối đa sẽ được ghi vào bộ đệm đầu ra.

Số nguyên

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

Khởi tạo đố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 bộ đệm được chỉ định. Nếu allowDiscontiguousBuffers là true, thì PacketBuffers bổ sung sẽ được phân bổ và chuỗi vào bộ đệm được cung cấp khi cần thiết để đáp ứng lượng dữ liệu đã ghi. Nếu bộ đệm đầu ra được chỉ định đã là đầu của chuỗi bộ đệm, thì đầu ra sẽ được ghi vào các bộ đệm tiếp theo trong chuỗi trước khi mọi bộ đệm mới được phân bổ.

Thông tin chi tiết
Các thông số
[in] buf
Con trỏ đến PacketBuffer sẽ ghi dữ liệu TLV vào.
[in] maxLen
Số byte tối đa sẽ được ghi vào(các) bộ đệm đầu ra.
[in] allowDiscontiguousBuffers
Nếu true, hãy ghi dữ liệu vào một chuỗi của PacketBuffers, phân bổ các bộ đệm mới khi cần để lưu trữ dữ liệu đã ghi. Nếu giá trị là false, thì việc ghi sẽ không thành công với WEAVE_ERROR_BUFFER_TOO_CUSTOM nếu dữ liệu đã ghi vượt quá dung lượng còn trống trong bộ đệm đầu ra ban đầu.

Tích hợp

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

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

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

Vùng chứa mở

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

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

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

Khi người viết 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 người viết chính.

Tác giả vùng chứa kế thừa các thuộc tính cấu hình từ người viết chính. Đó là:

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

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

Đặt

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

Mã hóa một giá trị số nguyên có chữ ký TLV.

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

Thông tin chi tiết
Các thông số
[in] tag
Thẻ TLV được mã hóa bằng giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Các 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 mã hóa.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một tác giả vùng chứa đã được mở trên tác giả 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 bạn viết giá trị này sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi người viết được khởi tạo.
WEAVE_ERROR_NO_MEMORY
Nếu cố gắng phân bổ bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi nền tảng cụ thể khác do hàm GetNewBuffer() hoặc finalizeBuffer() định cấu hình trả về.

Đặt

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

Mã hóa một giá trị số nguyên có chữ ký TLV.

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

Thông tin chi tiết
Các thông số
[in] tag
Thẻ TLV được mã hóa bằng giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Các 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 mã hóa.
[in] preserveSize
True nếu giá trị được mã hóa với cùng số byte như loại đầu vào. Sai nếu giá trị phải được mã hóa bằng số byte tối thiểu cần thiết để đại diện cho giá trị. Lưu ý: Bạn nên đặt các thông số này thành false.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một tác giả vùng chứa đã được mở trên tác giả 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 bạn viết giá trị này sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi người viết được khởi tạo.
WEAVE_ERROR_NO_MEMORY
Nếu cố gắng phân bổ bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi nền tảng cụ thể khác do hàm GetNewBuffer() hoặc finalizeBuffer() định cấu hình trả về.

Đặ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ã hóa một giá trị số nguyên không dấu TLV.

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

Thông tin chi tiết
Các thông số
[in] tag
Thẻ TLV được mã hóa bằng giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Các 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 mã hóa.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một tác giả vùng chứa đã được mở trên tác giả 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 bạn viết giá trị này sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi người viết được khởi tạo.
WEAVE_ERROR_NO_MEMORY
Nếu cố gắng phân bổ bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi nền tảng cụ thể khác do hàm GetNewBuffer() hoặc finalizeBuffer() định cấu hình trả về.

Đặt

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

Mã hóa một giá trị số nguyên không dấu TLV.

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

Thông tin chi tiết
Các thông số
[in] tag
Thẻ TLV được mã hóa bằng giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Các 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 mã hóa.
[in] preserveSize
True nếu giá trị được mã hóa với cùng số byte như loại đầu vào. Sai nếu giá trị phải được mã hóa bằng số byte tối thiểu cần thiết để đại diện cho giá trị. Lưu ý: Bạn nên đặt các thông số này thành false.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một tác giả vùng chứa đã được mở trên tác giả 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 bạn viết giá trị này sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi người viết được khởi tạo.
WEAVE_ERROR_NO_MEMORY
Nếu cố gắng phân bổ bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi nền tảng cụ thể khác do hàm GetNewBuffer() hoặc finalizeBuffer() định cấu hình trả về.

Đặ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ã hóa một giá trị dấu phẩy động TLV.

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

Thông tin chi tiết
Các thông số
[in] tag
Thẻ TLV được mã hóa bằng giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Các 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 mã hóa.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một tác giả vùng chứa đã được mở trên tác giả 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 bạn viết giá trị này sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi người viết được khởi tạo.
WEAVE_ERROR_NO_MEMORY
Nếu cố gắng phân bổ bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi nền tảng cụ thể khác do hàm GetNewBuffer() hoặc finalizeBuffer() định cấu hình trả về.

Boolean

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

Mã hóa một giá trị boolean TLV.

Thông tin chi tiết
Các thông số
[in] tag
Thẻ TLV được mã hóa bằng giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Các 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 mã hóa.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một tác giả vùng chứa đã được mở trên tác giả 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 bạn viết giá trị này sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi người viết được khởi tạo.
WEAVE_ERROR_NO_MEMORY
Nếu cố gắng phân bổ bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi nền tảng cụ thể khác do hàm GetNewBuffer() hoặc finalizeBuffer() định cấu hình trả về.

Đặt số byte

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

Mã hóa một giá trị chuỗi byte TLV.

Thông tin chi tiết
Các thông số
[in] tag
Thẻ TLV được mã hóa bằng giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Các 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ỏ đến bộ đệm chứa chuỗi byte cần mã hóa.
[in] len
Số lượng byte sẽ được mã hóa.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một tác giả vùng chứa đã được mở trên tác giả 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 bạn viết giá trị này sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi người viết được khởi tạo.
WEAVE_ERROR_NO_MEMORY
Nếu cố gắng phân bổ bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi nền tảng cụ thể khác do hàm GetNewBuffer() hoặc finalizeBuffer() định cấu hình trả về.

Bỏ chọn

WEAVE_ERROR PutNull(
  uint64_t tag
)

Mã hóa một giá trị rỗng TLV.

Thông tin chi tiết
Các thông số
[in] tag
Thẻ TLV được mã hóa bằng giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Các 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 thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một tác giả vùng chứa đã được mở trên tác giả 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 bạn viết giá trị này sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi người viết được khởi tạo.
WEAVE_ERROR_NO_MEMORY
Nếu cố gắng phân bổ bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi nền tảng cụ thể khác do hàm GetNewBuffer() hoặc finalizeBuffer() định cấu hình trả về.

Đặt Quảng cáo đặt trước được mã hóa

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

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

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

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

Thông tin chi tiết
Các thông số
[in] tag
Thẻ TLV sẽ được mã hóa bằng vùng chứa hoặc AnonymousTag nếu vùng chứa phải được mã hóa mà không có thẻ. Các 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ã hóa. Phải là một trong các giá trị kTLVType_Structure, kTLVType_Array hoặc kTLVType_Path.
[in] data
Con trỏ đến một bộ đệm chứa số 0 phần tử TLV được mã hóa sẽ trở thành thành viên của vùng chứa mới.
[in] dataLen
Số byte trong bộ đệm data.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu giá trị được chỉ định choCONTAINERType không chính xác.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một tác giả vùng chứa đã được mở trên tác giả 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 bạn viết giá trị này sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi người viết được khởi tạo.
WEAVE_ERROR_NO_MEMORY
Nếu cố gắng phân bổ bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi nền tảng cụ thể khác do hàm GetNewBuffer() hoặc finalizeBuffer() định cấu hình trả về.

Chuỗi

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

Mã hóa một giá trị chuỗi UTF8 TLV.

Thông tin chi tiết
Các thông số
[in] tag
Thẻ TLV được mã hóa bằng giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Các 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ỏ đến chuỗi UTF-8 được chấm dứt rỗng để mã hóa.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một tác giả vùng chứa đã được mở trên tác giả 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 bạn viết giá trị này sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi người viết được khởi tạo.
WEAVE_ERROR_NO_MEMORY
Nếu cố gắng phân bổ bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi nền tảng cụ thể khác do hàm GetNewBuffer() hoặc finalizeBuffer() định cấu hình trả về.

Chuỗi

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

Mã hóa một giá trị chuỗi UTF8 TLV.

Thông tin chi tiết
Các thông số
[in] tag
Thẻ TLV được mã hóa bằng giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Các 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ỏ đến chuỗi UTF-8 để được mã hóa.
[in] len
Độ dài (tính bằng byte) của chuỗi sẽ được mã hóa.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một tác giả vùng chứa đã được mở trên tác giả 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 bạn viết giá trị này sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi người viết được khởi tạo.
WEAVE_ERROR_NO_MEMORY
Nếu cố gắng phân bổ bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi nền tảng cụ thể khác do hàm GetNewBuffer() hoặc finalizeBuffer() định cấu hình trả về.

Quảng cáo chuỗi

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

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

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

Nền tảng này cung cấp một lệnh gọi lại vcbprintf dựa trên lệnh gọi lại, cho phép bạn gọi lệnh gọi lại tùy 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. Biến thể này hoạt động giống hệt như biến sonprintf, ngoại trừ việc có các điều khoản để bỏ qua n ký tự đầu tiên của dữ liệu đầu ra.

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

Nếu cả hai giá trị trên đều không được cung cấp, nhưng nền tảng cung cấp malloc, thì hàm sẽ phân bổ bộ đệm tạm thời để lưu giữ dữ liệu đầu ra. Khi nền tảng không cung cấp tính năng nâng cao cho cả lớp in ấn cũng như trung tâm mua sắm, 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

Thông tin chi tiết
Các thông số
[in] tag
Thẻ TLV được mã hóa bằng giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Các 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 giống như chuỗi định dạng cho nhóm hàm printf.
[in] ...
Danh sách các đối số cần định dạng trong giá trị đầu ra theo fmt.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
other
Nếu các lệnh gọi cơ bản đến phương thức TLVWriter WriteElementHead hoặc GetNewBuffer không thành công, thì lỗi sẽ được chuyển tiếp ngay lập tức đến ngăn xếp cuộc gọi.

Bắt đầu vùng chứa

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

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

Phương thức StartContainer() được dùng để ghi các thành phần vùng chứa TLV (cấu trúc, mảng hoặc đường dẫn) vào quá trình mã hóa. Phương thức này 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 được dùng để lưu ngữ cảnh hiện tại của người viết trong khi dùng để ghi vùng chứa.

Khi phương thức StartVùng() trả về, ứng dụng sẽ sử dụng đối tượng TLVWriter hiện tại để ghi các thành phần 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ã hóa vùng chứa.

Thông tin chi tiết
Các thông số
[in] tag
Thẻ TLV sẽ được mã hóa bằng vùng chứa hoặc AnonymousTag nếu vùng chứa phải được mã hóa mà không có thẻ. Các 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ã hóa. Phải là một trong các giá trị kTLVType_Structure, kTLVType_Array hoặc kTLVType_Path.
[out] outerContainerType
Tham chiếu đến giá trị TLVType sẽ nhận được ngữ cảnh của người viết.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_WRONG_TLV_TYPE
Nếu giá trị được chỉ định choCONTAINERType không chính xác.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một tác giả vùng chứa đã được mở trên tác giả 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 bạn viết giá trị này sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi người viết được khởi tạo.
WEAVE_ERROR_NO_MEMORY
Nếu cố gắng phân bổ bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi nền tảng cụ thể khác do hàm GetNewBuffer() hoặc finalizeBuffer() định cấu hình trả về.

Bắt đầu đặt byte

WEAVE_ERROR StartPutBytes(
  uint64_t tag,
  uint32_t totalLen
)

Mã hóa một chuỗi byte TLV theo nhiều phân đoạn.

Bạn nên dùng thuộc tính này cùng FollowPlaceBytes.

Thông tin chi tiết
Các thông số
[in] tag
Thẻ TLV được mã hóa bằng giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Các 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ã hóa.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một tác giả vùng chứa đã được mở trên tác giả 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 bạn viết giá trị này sẽ vượt quá giới hạn về số byte tối đa được chỉ định khi người viết được khởi tạo.
WEAVE_ERROR_NO_MEMORY
Nếu cố gắng phân bổ bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc lỗi nền tảng cụ thể khác do hàm GetNewBuffer() hoặc finalizeBuffer() định cấu hình trả về.

VĐặtStringF

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

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

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

Nền tảng này cung cấp một lệnh gọi lại vcbprintf dựa trên lệnh gọi lại, cho phép bạn gọi lệnh gọi lại tùy 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. Biến thể này hoạt động giống hệt như biến sonprintf, ngoại trừ việc có các điều khoản để bỏ qua n ký tự đầu tiên của dữ liệu đầu ra.

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

Nếu cả hai giá trị trên đều không được cung cấp, nhưng nền tảng cung cấp malloc, thì hàm sẽ phân bổ bộ đệm tạm thời để lưu giữ dữ liệu đầu ra. Khi nền tảng không cung cấp tính năng nâng cao cho cả lớp in ấn cũng như trung tâm mua sắm, 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

Thông tin chi tiết
Các thông số
[in] tag
Thẻ TLV được mã hóa bằng giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Các 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 giống như chuỗi định dạng cho nhóm hàm printf.
[in] ap
Danh sách các đối số cần định dạng trong giá trị đầu ra theo fmt.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
other
Nếu các lệnh gọi cơ bản đến phương thức TLVWriter WriteElementHead hoặc GetNewBuffer không thành công, thì lỗi sẽ được chuyển tiếp ngay lập tức đến ngăn xếp cuộc gọi.

Hàm tĩnh công khai

FinalizePacketBuffer

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

Triển khai hàm TLVWriter FinalizeBuffer để viết vào chuỗi của PacketBuffers.

Hàm finalizePacketBuffer() thực hiện quá trình hoàn tất cần thiết khi sử dụng TLVWriter để ghi vào một chuỗi các PacketBuffers. Hàm này được thiết kế để sử 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
)

Triển khai hàm TLVWriter GetNewBuffer để ghi vào một 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 (nếu cần) để lưu trữ bộ mã hóa. Hàm này được thiết kế để chỉ định cho con trỏ hàm TLVWriter GetNewBuffer.

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
)

Triển khai hàm TLVWriter GetNewBuffer để viết vào chuỗi của PacketBuffers.

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

Lưu ý rằng khi sử dụng GetNewPacketBuffer với TLVWriter, hãy dùng hàm finalizePacketBuffer() tương ứng (hoặc 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ệ

Đã đóng vùng chứa đã đặt trước

bool IsCloseContainerReserved(
  void
) const 

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

Là vùng chứa mở

bool IsContainerOpen(
  void
) const 

Đặt đóng vùng chứa đã đặt trước

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

Đặt vùng chứa có đặt trước không gian cho biểu tượng CloseVùng tại điểm bắt đầu / mở vùng chứa hay không.

Đặt Vùng chứa mở

void SetContainerOpen(
  bool aContainerOpen
)

Ghi dữ liệu

WEAVE_ERROR WriteData(
  const uint8_t *p,
  uint32_t len
)

Viết thành phần đầu

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

GhiElementElementData

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