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á kiểu phát trực tiếp chỉ chuyển tiếp cho dữ liệu TLV của Weave. Các ứng dụng ghi dữ liệu vào chế độ mã hoá bằng cách gọi một trong các phương thức Put() của trình ghi, chuyển thẻ liên quan và thông tin giá trị khi cần. 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 một 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 các hàm GetNewBufferFinalizeBuffer riêng để chuyển đầu ra đến một đích tuỳ ý, chẳng hạn như một ổ cắm hoặc một 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::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 thiện đầu ra của đố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ể 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 được hoàn tất.
GetNewBuffer
Con 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
Id hồ sơ của thẻ phải được mã hoá dưới 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 lệnh gọi OpenContainer().
ContinuePutBytes(const uint8_t *buf, uint32_t len)
Mã hoá một giá trị chuỗi byte TLV.
CopyContainer(TLVReader & container)
Sao chép phần tử vùng chứa TLV từ đối tượng TLVReader.
CopyContainer(uint64_t tag, TLVReader & container)
Mã hoá một 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 một phần tử TLV từ đối tượng trình đọc vào trình ghi.
CopyElement(uint64_t tag, TLVReader & reader)
EndContainer(TLVType outerContainerType)
Hoàn tất quá trình mã hoá một phần tử vùng chứa TLV.
Finalize(void)
Hoàn tất quá trình viết mã hoá TLV.
GetContainerType(void) const
Trả về loại vùng chứa mà TLVWriter đang ghi trong đó.
GetLengthWritten(void)
uint32_t
Trả về tổng số byte đã ghi kể từ khi khởi tạo trình ghi.
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.
Init(PacketBuffer *buf, uint32_t maxLen)
void
Khởi động đố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 đố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 phần tử vùng chứa TLV.
Put(uint64_t tag, int8_t v)
Mã hoá một giá trị số nguyên có dấu TLV.
Put(uint64_t tag, int8_t v, bool preserveSize)
Mã hoá một 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á một giá trị số nguyên chưa ký TLV.
Put(uint64_t tag, uint8_t v, bool preserveSize)
Mã hoá một 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á một giá trị dấu phẩy động TLV.
PutBoolean(uint64_t tag, bool v)
Mã hoá một giá trị boolean TLV.
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
Mã hoá một giá trị chuỗi byte TLV.
PutNull(uint64_t tag)
Mã hoá một giá trị rỗng TLV.
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
Mã hoá một 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á một giá trị chuỗi UTF8 TLV.
PutString(uint64_t tag, const char *buf, uint32_t len)
Mã hoá một 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 thành 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)
Triển khai hàm TLVWriter FinalizeBuffer để ghi vào một chuỗi PacketBuffers.
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Triển khai hàm GetNewBuffer của TLVWriter để ghi vào vùng đệm động.
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Triển khai hàm GetNewBuffer của TLVWriter để ghi vào một chuỗi PacketBuffers.

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

IsCloseContainerReserved(void) const
bool
Xác định xem vùng chứa có cần đặt trước không gian 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
Thiết lập xem vùng chứa có nên đặt trước không gian 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 thiện đầu ra của đố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 thiện cần thiết liên quan đến việc tiêu thụ đầu ra của đối tượng trình ghi. Có thể kể đến một số ví dụ như ghi lại độ dài cuối cùng của mã hoá hoặc đóng chỉ số mô tả tệp.

Thông tin chi tiết
Các tham số
[in] writer
Tham chiếu đến đối tượng TLVWriter đang được hoàn thiện.
[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ỏ đến điểm đầu vùng đệm đầu ra hiện tại (và cuối cùng).
[in,out] bufLen
Số byte có trong vùng đệm do 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 riêng của Weave hoặc nền tảng khác cho biết đã xảy ra lỗi trong quá trình hoàn thiện.

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 đệm mới cho TLVWriter để ghi vào. Khi được gọi, hàm dự kiến sẽ trả về một con trỏ tới 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 có thể cung cấp không gian ghi bằng cách phân bổ một vùng đệm mới để lưu giữ dữ liệu hoặc xoá dữ liệu đã ghi trước đó khỏi vùng đệm hiện có.

Thông tin chi tiết
Các 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 một giá trị uintptr_t mà hàm có thể dùng để lưu trữ dữ liệu ngữ cảnh giữa các lệnh gọi. Giá trị này được khởi tạo là 0 trước 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 một số nguyên chưa ký. Khi truy cập vào hàm, bufLen chứa số byte không gian unused 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ể ghi vào vùng đệm đầu ra mới.
Giá trị trả về
WEAVE_NO_ERROR
Liệu hàm này có thể cung cấp thêm không gian đệm cho người ghi.
other
Các mã lỗi riêng của Weave hoặc nền tảng khác cho biết đã xảy ra lỗi ngăn hàm tạo thêm không gian đệm.

Thuộc tính công khai

AppData

void * AppData

Một 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ỏ đến một hàm sẽ được gọi khi TLVWriter được hoàn tất.

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

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

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

Id hồ sơ của thẻ phải được mã hoá dưới dạng ngầm ẩn.

Khi người ghi đượ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 quá trình này.

Theo mặc định, thuộc tính ImplicitProfileId được đặt thành kProfileIdNotSpecified hướng dẫn người ghi không phát ra các thẻ được mã hoá ngầm. Ứng dụng có thể đặt ImplicitProfileId bất kỳ lúc nào để bật các thẻ mã hoá ở dạng ngầm ẩn, bắt đầu từ điểm hiện tại trong mã hoá. Mã cấu hình thích hợp cần đặt thường phụ thuộc vào ngữ cảnh của ứng dụng hoặc giao thức được nói.

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 lệnh gọi OpenContainer().

Phương thức CloseContainer() khôi phục trạng thái của đối tượng TLVWriter mẹ sau lệnh gọi đến 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 trình ghi vùng chứa cho cả hai phương thức.

Khi CloseContainer() trả về, ứng dụng có thể tiếp tục sử dụng trình ghi mẹ để ghi thêm 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, trình ghi vùng chứa đã cung cấp phải được xem là "huỷ khởi tạo" và không được sử dụng nếu không khởi chạy lại.

Thông tin chi tiết
Các 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 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 phù hợp.
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 nhưng chưa đóng.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu việc hoàn tất quá trình 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 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ởi 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á một giá trị chuỗi byte TLV.

Bạn nên sử dụng biến này với StartPutBytes.

Thông tin chi tiết
Các tham số
[in] buf
Con trỏ đến một vùng đệm chứa chuỗi byte cần mã hoá.
[in] len
Số byte được mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà 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 việc ghi giá trị 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 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ởi các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

CopyContainer

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

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

CopyContainer() mã hoá thành phần vùng chứa TLV mới bằng cách sao chép thành phần 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, thẻ và các phần tử của vùng chứa từ mã hóa nguồn. Khi phương thức trả về, bạn có thể sử dụng đối tượng trình ghi để viết thêm các phần tử TLV theo sau phần tử vùng chứa.

Thông tin chi tiết
Các tham số
[in] container
Mã tham chiếu đến một đối tượng TLVReader xác định vùng chứa TLV được mã hoá 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 đã cung cấp không được định vị trên phần tử vùng chứa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà chưa đóng.
WEAVE_ERROR_TLV_UNDERRUN
Nếu bộ mã hoá TLV cơ bản được 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 người đọ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 người đọc được cung cấp gặp phải một 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 việc ghi giá trị 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 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ởi các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình hoặc bởi 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á một 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 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 đượ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 mới mã hoá sẽ có cùng loại và thành viên với vùng chứa dữ liệu đầ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 trả về, bạn có thể sử dụng đối tượng trình ghi để viết thêm các phần tử TLV theo sau phần tử vùng chứa.

Thông tin chi tiết
Các tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng vùng chứa hoặc AnonymousTag nếu vùng chứa cần được mã hoá mà không cần thẻ. Bạn phải tạo giá trị thẻ bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] container
Mã tham chiếu đến một đối tượng TLVReader 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 thành công.
WEAVE_ERROR_INCORRECT_STATE
Nếu trình đọc đã cung cấp không được định vị trên phần tử vùng chứa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà chưa đóng.
WEAVE_ERROR_TLV_UNDERRUN
Nếu bộ mã hoá TLV cơ bản được 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 người đọ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 người đọc được cung cấp gặp phải một 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ệ 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 việc ghi giá trị 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 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ởi các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình hoặc bởi 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ã 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 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 được mã hoá trước đã cung cấp. Khi phương thức này đượ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 thành phần vùng chứa TLV. Vùng chứa mới được viết có cùng kiểu 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 trả về, bạn có thể sử dụng đối tượng trình ghi để viết thêm các phần tử TLV theo sau phần tử vùng chứa.

Thông tin chi tiết
Các tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng vùng chứa hoặc AnonymousTag nếu vùng chứa cần được mã hoá mà không cần thẻ. Bạn phải tạo giá trị thẻ 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 thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà 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 mã hoá 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 ngữ 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 ngữ cảnh mà vùng chứa mới đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu việc ghi giá trị 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 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ởi các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình hoặc bởi hàm GetNextBuffer() liên kết với đối tượng trình đọc.

CopyElement

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

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

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 TLVReader. Khi phương thức đượ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 như 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), 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 tham số
[in] reader
Mã tham chiếu đến một đối tượng TLVReader xác định 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 thành công.
WEAVE_ERROR_INCORRECT_STATE
Nếu máy đọc đã cung cấp không được định vị trên một phần tử.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà chưa đóng.
WEAVE_ERROR_TLV_UNDERRUN
Nếu bộ mã hoá TLV cơ bản được 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 người đọ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 người đọc được cung cấp gặp phải một 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ệ 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 việc ghi giá trị 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 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ởi các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình hoặc bởi 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á một phần tử vùng chứa TLV.

Phương thức EndContainer() hoàn tất quá trình 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 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.

Thông tin chi tiết
Các tham 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 StartContainer() tương ứng không được thực hiện.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà chưa đóng.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu việc ghi giá trị 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 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ởi 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 quá trình viết mã hoá TLV.

Phương thức Finalize() hoàn tất quá trình ghi 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 sử dụng nội dung trong vùng đệm. Bạn chỉ có thể gọi Finalize() khi không có người viết vùng chứa nào mở cho tác giả hiện tại. (Xem OpenContainer()).

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

GetContainerType

TLVType GetContainerType(
  void
) const 

Trả về loại vùng chứa mà TLVWriter đang ghi trong đó.

Phương thức GetContainerType() trả về loại vùng chứa TLVTLVWriter hiện đ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 một bộ mã hoá), thì phương thức này sẽ trả về kTLVType_NotSpecified.

Thông tin chi tiết
Trả về
TLVType của vùng chứa hiện tại hoặc kTLVType_NotSpecified nếu 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 khởi tạo trình ghi.

Thông tin chi tiết
Trả về
Tổng số byte đã ghi kể từ khi khởi tạo trình ghi.

Bắt đầu

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.

Thông tin chi tiết
Các 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.

Bắt đầu

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Khởi động đố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 được cung cấp.

Thông tin chi tiết
Các tham số
[in] buf
Con trỏ đến một Gói đệ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.

Bắt đầu

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à đúng, các Gói đệm bổ sung sẽ được phân bổ và liên kết với vùng đệm được cung cấp khi cần để đáp ứng lượng dữ liệu được ghi. Nếu vùng đệm đầu ra được chỉ định đã là đầu của chuỗi vùng đệm, thì dữ liệu đầ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.

Thông tin chi tiết
Các tham số
[in] buf
Con trỏ đến một Gói đệm mà sẽ được ghi dữ liệu TLV 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, hãy ghi dữ liệu vào một chuỗi PacketBuffers, phân bổ các vùng đệm mới khi cần để lưu trữ dữ liệu đã ghi. Nếu sai, chức năng ghi sẽ không thành công với WEAVE_ERROR_BUFFER_TOO_ cùng nếu dữ liệu đã ghi vượt quá dung lượ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 đối tượng TLVWriter để ghi vào vùng đệm động.

Thông tin chi tiết
Các tham số
[in] buf
Tham chiếu đến một 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 sẽ đượ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 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 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 trình ghi mới (trình ghi vùng chứa) sẽ được khởi tạo cho mục đích ghi các phần tử của vùng chứa. Các ứng dụng ghi các thành phầ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ở, ứ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

Thông tin chi tiết
Các tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng vùng chứa hoặc AnonymousTag nếu vùng chứa cần được mã hoá mà không cần thẻ. Bạn phải tạo giá trị thẻ 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á. 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 để 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 bị ghi đè.
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 cho ContainerType không chính xác.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà 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 việc ghi giá trị 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 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ởi 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á một giá trị số nguyên có dấu TLV.

Đây là 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.

Thông tin chi tiết
Các 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ó thẻ. Bạn phải tạo giá trị thẻ bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] v
Giá trị cần mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà 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 việc ghi giá trị 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 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ởi 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á một giá trị số nguyên có dấu TLV.

Đây là 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.

Thông tin chi tiết
Các 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ó thẻ. Bạn phải tạo giá trị thẻ bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] v
Giá trị cần mã hoá.
[in] preserveSize
"True" nếu giá trị phải được mã hoá bằng cùng số byte như ở loại dữ liệu đầu vào. Sai nếu giá trị phải được mã hoá bằng số byte tối thiểu cần thiết để biểu thị 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 thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà 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 việc ghi giá trị 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 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ởi 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á một giá trị số nguyên chưa ký TLV.

Đây là 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.

Thông tin chi tiết
Các 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ó thẻ. Bạn phải tạo giá trị thẻ bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] v
Giá trị cần mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà 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 việc ghi giá trị 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 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ởi 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á một giá trị số nguyên chưa ký TLV.

Đây là 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.

Thông tin chi tiết
Các 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ó thẻ. Bạn phải tạo giá trị thẻ bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] v
Giá trị cần mã hoá.
[in] preserveSize
"True" nếu giá trị phải được mã hoá bằng cùng số byte như ở loại dữ liệu đầu vào. Sai nếu giá trị phải được mã hoá bằng số byte tối thiểu cần thiết để biểu thị 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 thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà 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 việc ghi giá trị 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 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ởi 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á một giá trị dấu phẩy động TLV.

Đây là 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.

Thông tin chi tiết
Các 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ó thẻ. Bạn phải tạo giá trị thẻ bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] v
Giá trị cần mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà 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 việc ghi giá trị 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 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ởi các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

PutBoolean

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

Mã hoá một giá trị boolean TLV.

Thông tin chi tiết
Các 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ó thẻ. Bạn phải tạo giá trị thẻ bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] v
Giá trị cần mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà 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 việc ghi giá trị 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 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ởi 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á một giá trị chuỗi byte TLV.

Thông tin chi tiết
Các 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ó thẻ. Bạn phải tạo giá trị thẻ bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] buf
Con trỏ đến một vùng đệm chứa chuỗi byte cần mã hoá.
[in] len
Số byte được mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà 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 việc ghi giá trị 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 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ởi các hàm GetNewBuffer() hoặc FinalizeBuffer() đã định cấu hình.

PutNull

WEAVE_ERROR PutNull(
  uint64_t tag
)

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

Thông tin chi tiết
Các 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ó thẻ. Bạn phải tạo giá trị thẻ 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
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà 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 việc ghi giá trị 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 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ởi 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á một 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() 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ừ vùng đệm được mã hoá trước. Bộ đệm đầu vào dự kiến sẽ chứa 0 hoặc nhiều phần tử TLV được mã hoá đầy đủ, với các thẻ tuân thủ quy tắc liên quan đến loại vùng chứa đã 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 trình ghi có thể được sử dụng để viết thêm các phần tử TLV sau phần tử vùng chứa.

Thông tin chi tiết
Các tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng vùng chứa hoặc AnonymousTag nếu vùng chứa cần được mã hoá mà không cần thẻ. Bạn phải tạo giá trị thẻ 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á. Phải là một trong các giá trị kTLVType_Structure, kTLVType_Array hoặc kTLVType_Path.
[in] data
Con trỏ đến vùng đệm không chứa các phần tử TLV được mã hoá khác mà 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 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
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà 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 việc ghi giá trị 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 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ởi 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á một giá trị chuỗi UTF8 TLV.

Thông tin chi tiết
Các 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ó thẻ. Bạn phải tạo giá trị thẻ 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 kết thúc rỗng sẽ được mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà 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 việc ghi giá trị 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 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ởi 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á một giá trị chuỗi UTF8 TLV.

Thông tin chi tiết
Các 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ó thẻ. Bạn phải tạo giá trị thẻ 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ần được mã hoá.
[in] len
Độ dài (tính bằng byte) của chuỗi được mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà 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 việc ghi giá trị 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 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ởi 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 tương tự như sprintf, trong đó dữ liệu đầu ra được lưu trữ trong phần tử TLV trái ngược với vùng đệm ký tự. Khi dùng được chức năng printf mở rộng, hàm này có thể xuất chuỗi kết quả vào một bộ nhớ cơ bản gián đoạn. Việc triển khai hỗ trợ các tính năng nâng cao printf sau đây:

Nền tảng này cung cấp một vcbprintf dựa trên lệnh gọi lại, cung cấp khả năng 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ư so với Vnprintf, ngoại trừ việc có điều khoản bỏ qua n ký tự đầu tiên của kết quả.

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

Nếu cả hai tính năng trên đều không có sẵn nhưng nền tảng cung cấp malloc, hàm sẽ phân bổ một vùng đệm tạm thời để lưu giữ kết quả. 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, đầu ra sẽ bị cắt bớt để vừa 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 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ó thẻ. Bạn phải tạo giá trị thẻ 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 được định dạng ở 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 của các lệnh gọi này sẽ được chuyển tiếp ngay lập tức 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 và tham chiếu đến giá trị TLVType sẽ được dùng để lưu ngữ cảnh hiện tại của trình ghi 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 việc mã hoá vùng chứa.

Thông tin chi tiết
Các tham số
[in] tag
Thẻ TLV sẽ được mã hoá bằng vùng chứa hoặc AnonymousTag nếu vùng chứa cần được mã hoá mà không cần thẻ. Bạn phải tạo giá trị thẻ 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á. Phải là một trong các giá trị kTLVType_Structure, kTLVType_Array hoặc kTLVType_Path.
[out] outerContainerType
Tham chiếu đến một giá trị TLVType sẽ nhận ngữ cảnh của tác giả.
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 cho ContainerType không chính xác.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà 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 việc ghi giá trị 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 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ởi 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 thành nhiều đoạn.

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

Thông tin chi tiết
Các 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ó thẻ. Bạn phải tạo giá trị thẻ bằng một trong các hàm định nghĩa thẻ ProfileTag(), ContextTag() hoặc CommonTag().
[in] totalLen
Tổng số byte được mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Nếu phương thức thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Trường hợp người ghi vùng chứa đã được mở trên người ghi hiện tại mà 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 việc ghi giá trị 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 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ởi 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 tương tự như sprintf, trong đó dữ liệu đầu ra được lưu trữ trong phần tử TLV trái ngược với vùng đệm ký tự. Khi dùng được chức năng printf mở rộng, hàm này có thể xuất chuỗi kết quả vào một bộ nhớ cơ bản gián đoạn. Việc triển khai hỗ trợ các tính năng nâng cao printf sau đây:

Nền tảng này cung cấp một vcbprintf dựa trên lệnh gọi lại, cung cấp khả năng 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ư so với Vnprintf, ngoại trừ việc có điều khoản bỏ qua n ký tự đầu tiên của kết quả.

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

Nếu cả hai tính năng trên đều không có sẵn nhưng nền tảng cung cấp malloc, hàm sẽ phân bổ một vùng đệm tạm thời để lưu giữ kết quả. 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, đầu ra sẽ bị cắt bớt để vừa 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 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ó thẻ. Bạn phải tạo giá trị thẻ 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 được định dạng ở 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 của các lệnh gọi này sẽ được chuyển tiếp ngay lập tức 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
)

Triển khai hàm TLVWriter FinalizeBuffer để 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 một chuỗi 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 GetNewBuffer của TLVWriter để ghi vào vùng đệ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 vùng đệm động cơ bản khi cần để lưu trữ 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
)

Triển khai hàm GetNewBuffer của TLVWriter để ghi vào một 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ổ chuỗi gồm một hoặc nhiều Gói đệm khi cần để lưu trữ 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 nên dùng hàm FinalizePacketBuffer() tương ứng (hoặc hàm tương đương) để hoàn tất chuỗi vùng đệ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ó cần đặt trước không gian 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
)

Thiết lập xem vùng chứa có nên đặt trước không gian 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
)