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.
Trang này được dịch bởi Cloud Translation API.
Switch to English

nl :: Dệt :: TLV :: TLVWriter

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

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

Tóm lược

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

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

Di sản

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

Các loại được bảo vệ

@72 {
kEndOfContainerMarkerSize = 1
}
enum

Các loại công khai

FinalizeBufferFunct )(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen) WEAVE_ERROR (*
Một chức năng được sử dụng để thực hiện hoàn thiện đầu ra từ một đối tượngTLVWriter .
GetNewBufferFunct )(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR (*
Một chức năng cung cấp không gian đệm đầu ra mới choTLVWriter .

Thuộc tính công cộng

AppData
void *
Một trường con trỏ có thể được sử dụng cho dữ liệu dành riêng cho ứng dụng.
FinalizeBuffer
Một con trỏ đến một hàm sẽ được gọi khiTLVWriter được hoàn tất.
GetNewBuffer
Một con trỏ đến một hàm sẽ cung cấp không gian đệm đầu ra mới cho mộtTLVWriter .
ImplicitProfileId
uint32_t
Id hồ sơ của các thẻ phải được mã hóa ở dạng ẩ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 *

Chức năng công cộng

CloseContainer (TLVWriter & containerWriter)
Hoàn tất việc ghi vùng chứa TLV sau khi gọi tới OpenContainer () .
ContinuePutBytes (const uint8_t *buf, uint32_t len)
Mã hóa giá trị chuỗi byte TLV .
CopyContainer (TLVReader & container)
Sao chép phần tử vùng chứa TLV từ đối tượngTLVReader .
CopyContainer (uint64_t tag,TLVReader & container)
Mã hóa phần tử vùng chứa TLV từ một tập hợp các 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 có chứa các phần tử thành viên từ vùng chứa được mã hóa trước.
CopyElement (TLVReader & reader)
Sao chép một phần tử TLV từ một đối tượng độc giả vào người viết.
CopyElement (uint64_t tag,TLVReader & reader)
EndContainer ( TLVType outerContainerType)
Hoàn thành mã hóa phần tử vùng chứa TLV .
Finalize (void)
Kết thúc việc viết mã hóa TLV .
GetContainerType (void) const
Trả về loại vùng chứa màTLVWriter hiện đang viết.
GetLengthWritten (void)
uint32_t
Trả về tổng số byte được viết kể từ khi khởi tạo trình viết.
Init (uint8_t *buf, uint32_t maxLen)
void
Khởi tạo một đối tượngTLVWriter để ghi vào một bộ đệm đầu ra duy nhất.
Init ( PacketBuffer *buf, uint32_t maxLen)
void
Khởi tạo một đối tượngTLVWriter để ghi vào một PacketBuffer duy nhất.
Init ( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Khởi tạo một đối tượngTLVWriter để ghi vào một hoặc nhiềuBộ đệm gói .
InitMalloced (uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
void
Khởi tạo một đối tượngTLVWriter để ghi vào bộ đệm động.
OpenContainer (uint64_t tag, TLVType containerType,TLVWriter & containerWriter)
Khởi tạo đối tượngTLVWriter mới để ghi các thành viên của phần tử vùng chứa TLV .
Put (uint64_t tag, int8_t v)
Mã hóa một giá trị số nguyên có dấu TLV .
Put (uint64_t tag, int8_t v, bool preserveSize)
Mã hóa 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ã 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 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 giá trị chuỗi byte TLV .
PutNull (uint64_t tag)
Mã hóa 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 tập hợp các phần tử thành viên được mã hóa trước.
PutString (uint64_t tag, const char *buf)
Mã hóa giá trị chuỗi TLV UTF8.
PutString (uint64_t tag, const char *buf, uint32_t len)
Mã hóa giá trị chuỗi TLV UTF8.
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ã hóa phần tử vùng chứa TLV mới.
StartPutBytes (uint64_t tag, uint32_t totalLen)
Mã hóa một chuỗi byte TLV thành nhiều đ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 .

Chức năng tĩnh công khai

FinalizePacketBuffer (TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
Việc triển khai chức năngTLVWriter FinalizeBuffer để ghi vào một chuỗi PacketBuffer.
GetNewBuffer_Malloced (TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Một thi hành mộtTLVWriter chức năng GetNewBuffer cho văn bản cho một bộ đệm động.
GetNewPacketBuffer (TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Một thi hành mộtTLVWriter chức năng GetNewBuffer cho văn bản cho một chuỗi các PacketBuffers.

Các chức năng được bảo vệ

IsCloseContainerReserved (void) const
bool
Xác định xem vùng chứa có nên dành chỗ 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 xem vùng chứa có nên dành không gian cho biểu tượng CloseContainer 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

Các loại công khai

FinalizeBufferFunct

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

Một chức năng được sử dụng để thực hiện hoàn thiện đầu ra từ một đối tượngTLVWriter .

Các hàm kiểu này được gọi khi phương thức Finalize () củaTLVWriter được gọi. Hàm được mong đợi sẽ thực hiện bất kỳ quá trình dọn dẹp hoặc hoàn thiện cần thiết nào liên quan đến việc sử dụng đầu ra của đối tượng nhà văn. Ví dụ về điều này bao gồm những thứ như ghi lại độ dài cuối cùng của mã hóa hoặc đóng bộ mô tả tệp.

Chi tiết
Thông số
[in] writer
Tham chiếu đến đối tượngTLVWriter đ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 đó tới hàm GetNewBuffer .
[in,out] bufStart
Một con trỏ đến đầu của bộ đệm đầu ra hiện tại (và cuối cùng).
[in,out] bufLen
Số byte chứa trong bộ đệm được bufStart trỏ tới.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu việc hoàn thiện thành công.
other
Các mã lỗi Weave hoặc nền tảng cụ thể khác cho biết rằng đã xảy ra lỗi 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 chức năng cung cấp không gian đệm đầu ra mới choTLVWriter .

Các hàm kiểu này được sử dụng để chuẩn bị không gian đệm mới choTLVWriter ghi vào. Khi được gọi, hàm dự kiến ​​sẽ trả về một con trỏ đến vị trí bộ nhớ nơi dữ liệu mới sẽ được ghi, 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 cấp phát bộ đệm mới để giữ dữ liệu hoặc xóa dữ liệu đã ghi trước đó khỏi bộ đệm hiện có.

Chi tiết
Thông số
[in] writer
Tham chiếu đến đối tượngTLVWriter đang yêu cầu không gian đệ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 cuộc gọi. Giá trị này được khởi tạo bằng 0 trước cuộc gọi đầu tiên.
[in,out] bufStart
Tham chiếu đến một con trỏ dữ liệu. Khi vào hàm, bufStart trỏ điểm bắt đầu của bộ đệm đầu ra hiện tại. Khi thoát, bufStart được mong đợi sẽ trỏ đến phần đầu của 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 nó 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 không dấu. Khi nhập hàm, bufLen chứa số byte không gian chưa sử dụng trong 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ả lại
WEAVE_NO_ERROR
Nếu chức năng có thể cung cấp thêm không gian đệm cho người viết.
other
Các mã lỗi Weave hoặc nền tảng cụ thể khác cho biết rằng đã xảy ra lỗi ngăn chức năng tạo thêm không gian đệm.

Thuộc tính công cộng

Dữ liệu chương trình

void * AppData

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

FinalizeBuffer

FinalizeBufferFunct FinalizeBuffer

Một con trỏ đến một hàm sẽ được gọi khiTLVWriter được hoàn tất.

Một đối tượngTLVWriter sẽ gọi hàm FinalizeBuffer bất cứ khi nào phương thức Finalize () của nó được gọi. Các ứng dụng có thể đặt con trỏ hàm tại 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 kiểu FinalizeBufferFunct để biết thêm thông tin về cách triển khai chức năng FinalizeBuffer.

GetNewBuffer

GetNewBufferFunct GetNewBuffer

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

Một đối tượngTLVWriter sẽ gọi hàm GetNewBuffer bất cứ khi nào cố gắng ghi dữ liệu vượt quá kích thước của bộ đệm đầu ra hiện tại. Nếu được đặ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 làm tràn bộ đệm hiện tại.

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

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

ImplicitProfileId

uint32_t ImplicitProfileId

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

Khi người viết được yêu cầu mã hóa một phần tử mới, nếu id 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 viên ImplicitProfileId , người viết sẽ mã hóa thẻ ở dạng ẩn, bỏ qua id hồ sơ trong quá trình này.

Theo mặc định, thuộc tính ImplicitProfileId được đặt thành kProfileIdNotSpecified, điều này 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 kỳ lúc nào để bật các thẻ mã hóa ở dạng ngầm định bắt đầu từ điểm hiện tại trong 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

mContainerType

TLVType mContainerType

mLenWritten

uint32_t mLenWritten

mMaxLen

uint32_t mMaxLen

mRemainingLen

uint32_t mRemainingLen

mWritePoint

uint8_t * mWritePoint

Chức năng công cộng

CloseContainer

WEAVE_ERROR CloseContainer(
  TLVWriter & containerWriter
)

Hoàn tất việc ghi vùng chứa TLV sau khi gọi tới OpenContainer () .

Phương thứcCloseContainer () khôi phục trạng thái của một đối tượngTLVWriter gốc sau một cuộc gọi tới OpenContainer () . Đối với mọi cuộc gọi đến các ứng dụng OpenContainer () phải thực hiện một lệnh gọi tương ứng đến CloseContainer () , chuyển một 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ề, các ứng dụng có thể tiếp tục sử dụng trình viết chính để viết các phần tử TLV bổ sung xuất hiện sau phần tử vùng chứa. Tại thời điểm này, trình ghi vùng chứa được cung cấp sẽ được coi là 'đã được khử khởi tạo' và không được sử dụng khi chưa khởi tạo lại.

Chi tiết
Thông số
[in] containerWriter
Tham chiếu đến đối tượngTLVWriter được cung cấp cho phương thức OpenContainer () .
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_INCORRECT_STATE
Nếu trình ghi vùng chứa được cung cấp không ở đúng trạng thái.
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 được cung cấp và chưa đóng.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu 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 được khởi tạo.
WEAVE_ERROR_NO_MEMORY
Nếu nỗ lực cấp phát bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc nền tảng cụ thể khác đượ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ã hóa giá trị chuỗi byte TLV .

Điều này sẽ được sử dụng với StartPutBytes.

Chi tiết
Thông số
[in] buf
Một con trỏ tới bộ đệm chứa chuỗi byte được mã hóa.
[in] len
Số byte được mã hóa.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một trình ghi vùng chứa đã được mở trên trình viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu 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 nỗ lực cấp phát bộ đệ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 theo nền tảng cụ thể do các hàm GetNewBuffer () hoặc FinalizeBuffer () đã định cấu hình trả về.

CopyContainer

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

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

CopyContainer () mã hóa phần tử vùng chứa TLV mới bằng cách sao chép phần tử vùng chứa được mã hóa trước nằm ở vị trí hiện tại của đối tượngTLVReader . Phương thức ghi toàn bộ phần tử vùng chứa mới trong một lần gọi, sao chép kiểu, 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ề, đối tượng write có thể được sử dụng để viết các phần tử TLV bổ sung theo sau phần tử vùng chứa.

Chi tiết
Thông số
[in] container
Tham chiếu đến đối tượngTLVReader xác định vùng chứa TLV được mã hóa trước sẽ được sao chép.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_INCORRECT_STATE
Nếu đầu đọc được cung cấp không được định vị trên phần tử vùng chứa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một trình ghi vùng chứa đã được mở trên trình viết hiện tại và chưa đóng.
WEAVE_ERROR_TLV_UNDERRUN
Nếu mã hóa TLV cơ bản được liên kết với đầu đọc được cung cấp kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu đầu đọc được cung cấp gặp phải loại phần tử TLV không hợp lệ hoặc không được hỗ trợ.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu trình đọc được cung cấp gặp 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ệ hoặc 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 nỗ lực cấp phát bộ đệ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 theo nền tảng cụ thể đượ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 () được liên kết với đối tượng trình đọc.

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

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

Phương thức CopyContainer () 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 viên được lấy từ một đối tượngTLVReader . Khi phương thức được gọi, đối tượng đầu đọc đượ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à các thành viên như 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ề, đối tượng write có thể được sử dụng để viết các phần tử TLV bổ sung theo sau phần tử vùng chứa.

Chi tiết
Thông số
[in] tag
Thẻ TLV sẽ được mã hóa với vùng chứa hoặc AnonymousTag nếu vùng chứa phải được mã hóa mà không có thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ là ProfileTag () , ContextTag () hoặc CommonTag () .
[in] container
Tham chiếu đến đối tượngTLVReader xác định vùng chứa TLV được mã hóa trước có loại và thành viên cần được sao chép.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_INCORRECT_STATE
Nếu đầu đọc được cung cấp không được định vị trên phần tử vùng chứa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một trình ghi vùng chứa đã được mở trên trình viết hiện tại và chưa đóng.
WEAVE_ERROR_TLV_UNDERRUN
Nếu mã hóa TLV cơ bản được liên kết với đầu đọc được cung cấp kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu đầu đọc được cung cấp gặp phải loại phần tử TLV không hợp lệ hoặc không được hỗ trợ.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu trình đọc được cung cấp gặp thẻ TLV trong ngữ cảnh không hợp lệ hoặc nếu thẻ được cung cấp không hợp lệ hoặc không phù hợp trong ngữ cảnh mà vùng chứa mới đang được 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 nỗ lực cấp phát bộ đệ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 theo nền tảng cụ thể đượ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 () được 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ã hóa phần tử vùng chứa TLV có chứa các phần tử thành viên từ vùng chứa được mã hóa trước.

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

Chi tiết
Thông số
[in] tag
Thẻ TLV sẽ được mã hóa với vùng chứa hoặc AnonymousTag nếu vùng chứa phải được mã hóa mà không có thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ là ProfileTag () , ContextTag () hoặc CommonTag () .
[in] encodedContainer
Bộ đệm chứa vùng chứa TLV được mã hóa trước có loại và các thành viên sẽ được sao chép.
[in] encodedContainerLen
Độ dài tính bằng byte của vùng chứa được mã hóa trước.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một trình ghi vùng chứa đã được mở trên trình viết hiện tại và chưa đóng.
WEAVE_ERROR_TLV_UNDERRUN
Nếu vùng chứa được mã hóa kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu vùng chứa được 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ẻ được cung cấp không hợp lệ hoặc không phù hợp trong ngữ cảnh mà vùng chứa mới đang được 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 nỗ lực cấp phát bộ đệ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 theo nền tảng cụ thể đượ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 () được 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ừ một đối tượng độc giả vào người viết.

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

Chi tiết
Thông số
[in] reader
Tham chiếu đến đối tượngTLVReader xác định một phần tử TLV được mã hóa trước cần được sao chép.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_INCORRECT_STATE
Nếu đầu đọc được cung cấp không được định vị trên một phần tử.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một trình ghi vùng chứa đã được mở trên trình viết hiện tại và chưa đóng.
WEAVE_ERROR_TLV_UNDERRUN
Nếu mã hóa TLV cơ bản được liên kết với đầu đọc được cung cấp kết thúc sớm.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Nếu đầu đọc được cung cấp gặp phải loại phần tử TLV không hợp lệ hoặc không được hỗ trợ.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu trình đọc được cung cấp gặp phải thẻ TLV trong ngữ cảnh không hợp lệ hoặc nếu thẻ được cung cấp không hợp lệ hoặc không phù hợp trong ngữ cảnh mà vùng chứa mới đang được 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 nỗ lực cấp phát bộ đệ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 theo nền tảng cụ thể đượ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 () được 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 thành mã hóa phần tử vùng chứa TLV .

Phương thức EndContainer () hoàn thành việc 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 một lần gọi trước đó tới StartContainer () . Đối với mọi cuộc gọi đến StartContainer (), các ứng dụng phải thực hiện một cuộc gọi tương ứng đến EndContainer () , truyền giá trị TLVType được trả về bởi lệnh gọi StartContainer () . Khi EndContainer () trả về, đối tượng nhà văn có thể được sử dụng để viết các phần tử TLV bổ sung theo sau phần tử vùng chứa.

Chi tiết
Thông số
[in] outerContainerType
Giá trị TLVType được phương thức StartContainer () trả về.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_INCORRECT_STATE
Nếu một lệnh gọi StartContainer () tương ứng không được thực hiện.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một trình ghi vùng chứa đã được mở trên trình viết hiện tại và 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 nỗ lực cấp phát bộ đệ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 theo nền tảng cụ thể do các hàm GetNewBuffer () hoặc FinalizeBuffer () đã định cấu hình trả về.

Hoàn thiện

WEAVE_ERROR Finalize(
  void
)

Kết thúc quá trình viết bảng 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 bên dưới. Phương thức phải được gọi bởi ứng dụng trước khi nó sử dụng nội dung của bộ đệm. Finalize () chỉ có thể được gọi khi không có trình viết vùng chứa nào đang mở cho trình viết hiện tại. (Xem OpenContainer() ).

Chi tiết
Giá trị trả lại
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 trình ghi vùng chứa đã được mở trên trình viết hiện tại và chưa đóng.
other
Các lỗi Weave hoặc nền tảng cụ thể khác đượ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 hiện đang viết.

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

Chi tiết
Lợi nhuận
TLVType của vùng chứa hiện tại hoặc kTLVType_NotSpecified nếuTLVWriter không ghi các phần tử trong vùng chứa.

GetLengthWritten

uint32_t GetLengthWritten(
  void
)

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

Chi tiết
Lợi nhuận
Tổng số byte được viết kể từ khi người viết được khởi tạo.

Trong đó

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

Khởi tạo một đối tượngTLVWriter để ghi vào một bộ đệm đầu ra duy nhất.

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

Trong đó

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Khởi tạo một đối tượngTLVWriter để ghi vào một PacketBuffer duy nhất.

Việc 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.

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

Trong đó

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

Khởi tạo một đối tượngTLVWriter để ghi vào một hoặc nhiềuBộ đệm gói .

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

Chi tiết
Thông số
[in] buf
Một con trỏ tới PacketBuffer mà dữ liệu TLV sẽ được ghi vào đó.
[in] maxLen
Số byte tối đa sẽ được ghi vào (các) bộ đệm đầu ra.
[in] allowDiscontiguousBuffers
Nếu đúng, hãy ghi dữ liệu vào một chuỗi PacketBuffers, cấp phát bộ đệm mới nếu cần để lưu trữ dữ liệu đã ghi. Nếu sai, việc ghi sẽ không thành công với WEAVE_ERROR_BUFFER_TOO_SMALL nếu dữ liệu được ghi vượt quá dung lượng có sẵn trong bộ đệm đầu ra ban đầu.

InitMalloced

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

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

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

OpenContainer

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

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

Phương thức OpenContainer () được sử 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ột bảng mã. Phương thức này nhận kiểu và thẻ (nếu có) của vùng chứa mới và tham chiếu đến đối tượng người viết mới (người viết 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 viên của vùng chứa mới bằng cách sử dụng trình ghi vùng chứa và sau đó gọi CloseContainer () để hoàn tất quá trình mã hóa vùng chứa.

Trong khi trình ghi vùng chứa đang mở, các ứng dụng không được thực hiện lệnh gọi hoặc thay đổi trạng thái của trình ghi chính.

Trình ghi vùng chứa kế thừa các thuộc tính cấu hình khác nhau từ trình viết chính. Đó là:

  • Id hồ sơ ngầm định (ImplicitProfileId)
  • Con trỏ dữ liệu ứng dụng (AppData)
  • Con trỏ hàm GetNewBuffer và FinalizeBuffer

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

Đây là một chức năng thành viên quá tải, cung cấp cho thuận tiện. Nó chỉ khác với hàm trên ở (các) đối số mà nó chấp nhận.

Chi tiết
Thông số
[in] tag
Thẻ TLV sẽ được mã hóa với giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ là ProfileTag () , ContextTag () hoặc CommonTag () .
[in] v
Giá trị được mã hóa.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một trình ghi vùng chứa đã được mở trên trình viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được ghi.
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 nỗ lực cấp phát bộ đệm đầu ra không thành công do thiếu bộ nhớ.
other
Các lỗi Weave hoặc nền tảng cụ thể khác đượ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ã hóa một giá trị số nguyên có dấu TLV .

Đây là một chức năng thành viên quá tải, cung cấp cho thuận tiện. Nó chỉ khác với hàm trên ở (các) đối số mà nó chấp nhận.

Chi tiết
Thông số
[in] tag
Thẻ TLV sẽ được mã hóa với giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ là ProfileTag () , ContextTag () hoặc CommonTag () .
[in] v
Giá trị được mã hóa.
[in] preserveSize
Đúng nếu giá trị phải được mã hóa theo cùng một số byte như ở loại đầu vào. False if 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 ý: Các ứng dụng được khuyến khích đặt tham số này thành false.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một trình ghi vùng chứa đã được mở trên trình viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu 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 nỗ lực cấp phát bộ đệ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 theo nền tảng cụ thể do các 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 chức năng thành viên quá tải, cung cấp cho thuận tiện. Nó chỉ khác với hàm trên ở (các) đối số mà nó chấp nhận.

Chi tiết
Thông số
[in] tag
Thẻ TLV sẽ được mã hóa với giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ là ProfileTag () , ContextTag () hoặc CommonTag () .
[in] v
Giá trị được mã hóa.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một trình ghi vùng chứa đã được mở trên trình viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu 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 nỗ lực cấp phát bộ đệ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 theo nền tảng cụ thể do các 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 chức năng thành viên quá tải, cung cấp cho thuận tiện. Nó chỉ khác với hàm trên ở (các) đối số mà nó chấp nhận.

Chi tiết
Thông số
[in] tag
Thẻ TLV sẽ được mã hóa với giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ là ProfileTag () , ContextTag () hoặc CommonTag () .
[in] v
Giá trị được mã hóa.
[in] preserveSize
Đúng nếu giá trị phải được mã hóa theo cùng một 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 ý: Các ứng dụng được khuyến khích đặt thông số này thành false.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một trình ghi vùng chứa đã được mở trên trình viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu 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 nỗ lực cấp phát bộ đệ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 theo nền tảng cụ thể do các 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 giá trị dấu phẩy động TLV .

Đây là một chức năng thành viên quá tải, cung cấp cho thuận tiện. Nó chỉ khác với hàm trên ở (các) đối số mà nó chấp nhận.

Chi tiết
Thông số
[in] tag
Thẻ TLV sẽ được mã hóa với giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ là ProfileTag () , ContextTag () hoặc CommonTag () .
[in] v
Giá trị được mã hóa.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Nếu một trình ghi vùng chứa đã được mở trên trình viết hiện tại và chưa đóng.
WEAVE_ERROR_INVALID_TLV_TAG
Nếu giá trị thẻ được chỉ định không hợp lệ hoặc không phù hợp trong ngữ cảnh mà giá trị đang được viết.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu 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 nỗ lực cấp phát bộ đệ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 theo nền tảng cụ thể do các hàm GetNewBuffer () hoặc FinalizeBuffer () đã định cấu hình trả về.

PutBoolean

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

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

Chi tiết
Thông số
[in] tag
Thẻ TLV sẽ được mã hóa với giá trị hoặc AnonymousTag nếu giá trị phải được mã hóa mà không có thẻ. Giá trị thẻ phải được tạo bằng một trong các hàm định nghĩa thẻ là ProfileTag () , ContextTag () hoặc CommonTag () .
[in] v
Giá trị được mã hóa.
Giá trị trả lại
WEAVE_NO_ERROR
Nếu phương pháp thành công.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutBytes

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

Encodes a TLV byte string value.

Details
Parameters
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] buf
A pointer to a buffer containing the bytes string to be encoded.
[in] len
The number of bytes to be encoded.
Return Values
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutNull

WEAVE_ERROR PutNull(
  uint64_t tag
)

Encodes a TLV null value.

Details
Parameters
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
Return Values
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutPreEncodedContainer

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

Encodes a TLV container element from a pre-encoded set of member elements.

The PutPreEncodedContainer() method encodes a new TLV container element (a structure, array or path) containing a set of member elements taken from a pre-encoded buffer. The input buffer is expected to contain zero or more full-encoded TLV elements, with tags that conform to the rules associated with the specified container type (eg structure members must have tags, while array members must not).

The method encodes the entirety of the container element in one call. When PutPreEncodedContainer() returns, the writer object can be used to write additional TLV elements following the container element.

Details
Parameters
[in] tag
The TLV tag to be encoded with the container, or AnonymousTag if the container should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] containerType
The type of container to encode. Must be one of kTLVType_Structure , kTLVType_Array or kTLVType_Path .
[in] data
A pointer to a buffer containing zero of more encoded TLV elements that will become the members of the new container.
[in] dataLen
The number of bytes in the data buffer.
Return Values
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_WRONG_TLV_TYPE
If the value specified for containerType is incorrect.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

Encodes a TLV UTF8 string value.

Details
Parameters
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] buf
A pointer to the null-terminated UTF-8 string to be encoded.
Return Values
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutString

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

Encodes a TLV UTF8 string value.

Details
Parameters
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] buf
A pointer to the UTF-8 string to be encoded.
[in] len
The length (in bytes) of the string to be encoded.
Return Values
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutStringF

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

Encode the string output formatted according to the format in the TLV element.

PutStringF is an analog of a sprintf where the output is stored in a TLV element as opposed to a character buffer. When extended printf functionality is available, the function is able to output the result string into a discontinuous underlying storage. The implementation supports the following printf enhancements:

The platform supplies a callback-based vcbprintf that provides the ability to call a custom callback in place of putchar.

The platform supplies a variant of vsnprintf called vsnprintf_ex , that behaves exactly like vsnprintf except it has provisions for omitting the first n characters of the output.

Note that while the callback-based function may be the simplest and use the least amount of code, the vsprintf_ex variety of functions will consume less stack.

If neither of the above is available, but platform provides malloc the function will allocate a temporary buffer to hold the output. When the platform supplies neither enhancement to the printf family nor malloc, the output is truncated such that it fits in the continuous state in the current TLV storage

Details
Parameters
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] fmt
The format string used to format the argument list. Follows the same syntax and rules as the format string for printf family of functions.
[in] ...
A list of arguments to be formatted in the output value according to fmt.
Return Values
WEAVE_NO_ERROR
If the method succeeded.
other
If underlying calls toTLVWriter methods WriteElementHead or GetNewBuffer failed, their error is immediately forwarded up the call stack.

StartContainer

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

Begins encoding a new TLV container element.

The StartContainer() method is used to write TLV container elements (structure, arrays or paths) to an encoding. The method takes the type and tag (if any) of the new container, and a reference to a TLVType value which will be used to save the current context of the writer while it is being used to write the container.

Once the StartContainer() method returns, the application should use the currentTLVWriter object to write the elements of the container. When finish, the application must call the EndContainer() method to finish the encoding of the container.

Details
Parameters
[in] tag
The TLV tag to be encoded with the container, or AnonymousTag if the container should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] containerType
The type of container to encode. Must be one of kTLVType_Structure , kTLVType_Array or kTLVType_Path .
[out] outerContainerType
A reference to a TLVType value that will receive the context of the writer.
Return Values
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_WRONG_TLV_TYPE
If the value specified for containerType is incorrect.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

StartPutBytes

WEAVE_ERROR StartPutBytes(
  uint64_t tag,
  uint32_t totalLen
)

Encodes a TLV byte string in multiple chunks.

This should be used with ContinuePutBytes.

Details
Parameters
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] totalLen
The total number of bytes to be encoded.
Return Values
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

VPutStringF

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

Encode the string output formatted according to the format in the TLV element.

PutStringF is an analog of a sprintf where the output is stored in a TLV element as opposed to a character buffer. When extended printf functionality is available, the function is able to output the result string into a discontinuous underlying storage. The implementation supports the following printf enhancements:

The platform supplies a callback-based vcbprintf that provides the ability to call a custom callback in place of putchar.

The platform supplies a variant of vsnprintf called vsnprintf_ex , that behaves exactly like vsnprintf except it has provisions for omitting the first n characters of the output.

Note that while the callback-based function may be the simplest and use the least amount of code, the vsprintf_ex variety of functions will consume less stack.

If neither of the above is available, but platform provides malloc the function will allocate a temporary buffer to hold the output. When the platform supplies neither enhancement to the printf family nor malloc, the output is truncated such that it fits in the continuous state in the current TLV storage

Details
Parameters
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] fmt
The format string used to format the argument list. Follows the same syntax and rules as the format string for printf family of functions.
[in] ap
A list of arguments to be formatted in the output value according to fmt.
Return Values
WEAVE_NO_ERROR
If the method succeeded.
other
If underlying calls toTLVWriter methods WriteElementHead or GetNewBuffer failed, their error is immediately forwarded up the call stack.

Public static functions

FinalizePacketBuffer

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

An implementation of aTLVWriter FinalizeBuffer function for writing to a chain of PacketBuffers.

The FinalizePacketBuffer() function performs the necessary finalization required when using aTLVWriter to write to a chain of PacketBuffers. The function is designed to be used in conjunction with the GetNewPacketBuffer() function.

See the FinalizeBufferFunct type definition for additional information on the API of the FinalizePacketBuffer() function.

GetNewBuffer_Malloced

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

An implementation of aTLVWriter GetNewBuffer function for writing to a dynamic buffer.

The GetNewBuffer_Malloced() function supplies new output space to aTLVWriter by doubling the size of the underlying dynamic buffer as needed to store the encoding. The function is designed to be assigned to theTLVWriter GetNewBuffer function pointer.

See the GetNewBufferFunct type definition for additional information on the API of the GetNewBuffer_Malloced() function.

GetNewPacketBuffer

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

An implementation of aTLVWriter GetNewBuffer function for writing to a chain of PacketBuffers.

The GetNewPacketBuffer() function supplies new output space to aTLVWriter by allocating a chain of one or more PacketBuffers as needed to store the encoding. The function is designed to be assigned to theTLVWriter GetNewBuffer function pointer.

Note that when using the GetNewPacketBuffer with aTLVWriter , the corresponding FinalizePacketBuffer() function (or an equivalent) should also be used to finalize the buffer chain.

See the GetNewBufferFunct type definition for additional information on the API of the GetNewPacketBuffer() function.

Protected functions

IsCloseContainerReserved

bool IsCloseContainerReserved(
  void
) const 

Determine whether the container should reserve space for the CloseContainer symbol at the point of starting / opening the container.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

SetCloseContainerReserved

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

Set whether the container should reserve the space for the CloseContainer symbol at the point of starting / opening the container.

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
)