nl::Weave::TLV::TLVWriter

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

Menyediakan encoder yang hemat memori untuk menulis data dalam format Weave TLV.

Ringkasan

TLVWriter mengimplementasikan encoder khusus versi streaming untuk data Weave TLV. Aplikasi menulis data ke encoding dengan memanggil salah satu metode Put() penulis, dengan meneruskan tag terkait dan informasi nilai jika perlu. Demikian pula, aplikasi dapat mengenkode jenis penampung TLV (struktur, array, atau jalur) dengan memanggil metode OpenContainer() atau EnterContainer() penulis.

Objek TLVWriter dapat menulis data secara langsung ke buffering output tetap, atau ke rantai satu atau beberapa objek PacketBuffer. Selain itu, aplikasi dapat menyediakan fungsi GetNewBuffer dan FinalizeBuffer-nya sendiri untuk mengarahkan output ke tujuan arbitrer, misalnya, soket atau antrean peristiwa.

Inheritance

Subclass Langsung yang Diketahui: nl::Weave::TLV::CircularTLVWriter

Jenis yang dilindungi

@72{
  kEndOfContainerMarkerSize = 1
}
enum

Jenis publik

FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen) WEAVE_ERROR(*
Fungsi yang digunakan untuk menyelesaikan output dari objek TLVWriter.
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR(*
Fungsi yang menyediakan ruang buffer output baru ke TLVWriter.

Atribut publik

AppData
void *
Kolom pointer yang dapat digunakan untuk data khusus aplikasi.
FinalizeBuffer
Pointer ke fungsi yang akan dipanggil saat TLVWriter selesai.
GetNewBuffer
Pointer ke fungsi yang akan menyediakan ruang buffer output baru ke TLVWriter.
ImplicitProfileId
uint32_t
ID profil tag yang harus dienkode dalam bentuk implisit.

Atribut yang dilindungi

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

Fungsi publik

CloseContainer(TLVWriter & containerWriter)
Menyelesaikan penulisan container TLV setelah panggilan ke OpenContainer().
ContinuePutBytes(const uint8_t *buf, uint32_t len)
Mengenkode nilai string byte TLV.
CopyContainer(TLVReader & container)
Menyalin elemen container TLV dari objek TLVReader.
CopyContainer(uint64_t tag, TLVReader & container)
Mengenkode elemen penampung TLV dari kumpulan elemen anggota yang dienkode sebelumnya.
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
Mengenkode elemen penampung TLV yang berisi elemen anggota dari penampung yang dienkode sebelumnya.
CopyElement(TLVReader & reader)
Menyalin elemen TLV dari objek pembaca ke penulis.
CopyElement(uint64_t tag, TLVReader & reader)
EndContainer(TLVType outerContainerType)
Menyelesaikan encoding elemen penampung TLV.
Finalize(void)
Selesaikan penulisan encoding TLV.
GetContainerType(void) const
Menampilkan jenis container tempat TLVWriter sedang menulis.
GetLengthWritten(void)
uint32_t
Menampilkan jumlah total byte yang ditulis sejak penulis diinisialisasi.
Init(uint8_t *buf, uint32_t maxLen)
void
Menginisialisasi objek TLVWriter untuk menulis ke dalam buffer output tunggal.
Init(PacketBuffer *buf, uint32_t maxLen)
void
Menginisialisasi objek TLVWriter untuk menulis ke dalam satu PacketBuffer.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Menginisialisasi objek TLVWriter untuk menulis ke satu atau beberapa PacketBuffers.
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
void
Menginisialisasi objek TLVWriter untuk menulis ke buffer dinamis.
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
Menginisialisasi objek TLVWriter baru untuk menulis anggota elemen container TLV.
Put(uint64_t tag, int8_t v)
Mengenkode nilai bilangan bulat yang ditandatangani TLV.
Put(uint64_t tag, int8_t v, bool preserveSize)
Mengenkode nilai bilangan bulat yang ditandatangani 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)
Mengenkode nilai bilangan bulat yang belum ditandatangani TLV.
Put(uint64_t tag, uint8_t v, bool preserveSize)
Mengenkode nilai bilangan bulat yang belum ditandatangani 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)
Mengenkode nilai floating point TLV.
PutBoolean(uint64_t tag, bool v)
Mengenkode nilai boolean TLV.
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
Mengenkode nilai string byte TLV.
PutNull(uint64_t tag)
Mengenkode nilai null TLV.
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
Mengenkode elemen penampung TLV dari kumpulan elemen anggota yang dienkode sebelumnya.
PutString(uint64_t tag, const char *buf)
Mengenkode nilai string UTF8 TLV.
PutString(uint64_t tag, const char *buf, uint32_t len)
Mengenkode nilai string UTF8 TLV.
PutStringF(uint64_t tag, const char *fmt, ...)
Enkode output string yang diformat sesuai dengan format dalam elemen TLV.
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
Mulai mengenkode elemen penampung TLV baru.
StartPutBytes(uint64_t tag, uint32_t totalLen)
Mengenkode string byte TLV dalam beberapa bagian.
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
Enkode output string yang diformat sesuai dengan format dalam elemen TLV.

Fungsi statis publik

FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
Implementasi fungsi FinalizeBuffer TLVWriter untuk menulis ke rantai PacketBuffers.
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Implementasi fungsi GetNewBuffer TLVWriter untuk menulis ke buffering dinamis.
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Implementasi fungsi GetNewBuffer TLVWriter untuk menulis ke rantai PacketBuffers.

Fungsi yang dilindungi

IsCloseContainerReserved(void) const
bool
Tentukan apakah penampung harus menyediakan ruang untuk simbol CloseContainer pada saat memulai / membuka penampung.
IsContainerOpen(void) const
bool
SetCloseContainerReserved(bool aCloseContainerReserved)
void
Tetapkan apakah penampung harus mencadangkan ruang untuk simbol CloseContainer pada titik awal / pembukaan penampung.
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)

Jenis yang dilindungi

@72

 @72

Jenis publik

FinalizeBufferFunct

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

Fungsi yang digunakan untuk menyelesaikan output dari objek TLVWriter.

Fungsi jenis ini dipanggil saat metode Finalize() TLVWriter dipanggil. Fungsi ini diharapkan dapat melakukan pembersihan atau finalisasi yang diperlukan terkait penggunaan output objek penulis. Contohnya termasuk hal-hal seperti merekam panjang akhir encoding, atau menutup deskriptor file.

Detail
Parameter
[in] writer
Referensi ke objek TLVWriter yang sedang diselesaikan.
[in,out] bufHandle
Nilai konteks uintptr_t yang ditetapkan oleh panggilan sebelumnya ke fungsi GetNewBuffer.
[in,out] bufStart
Pointer ke awal buffer output saat ini (dan akhir).
[in,out] bufLen
Jumlah byte yang terdapat dalam buffering yang ditunjukkan oleh bufStart.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika finalisasi berhasil.
other
Kode error Weave atau khusus platform lainnya yang menunjukkan bahwa terjadi error selama finalisasi.

GetNewBufferFunct

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

Fungsi yang menyediakan ruang buffer output baru ke TLVWriter.

Fungsi jenis ini digunakan untuk menyiapkan ruang buffer baru yang akan digunakan oleh TLVWriter untuk menulis. Saat dipanggil, fungsi tersebut diharapkan mengembalikan pointer ke lokasi memori tempat data baru harus ditulis, bersama dengan panjang maksimum yang terkait. Fungsi ini dapat menyediakan ruang tulis dengan mengalokasikan buffer baru untuk menyimpan data atau dengan menghapus data yang ditulis sebelumnya dari buffer yang ada.

Detail
Parameter
[in] writer
Referensi ke objek TLVWriter yang meminta ruang buffer baru.
[in,out] bufHandle
Referensi ke nilai uintptr_t yang dapat digunakan fungsi untuk menyimpan data konteks di antara panggilan. Nilai ini diinisialisasi ke 0 sebelum panggilan pertama.
[in,out] bufStart
Referensi ke pointer data. Saat entri ke fungsi, bufStart akan menunjukkan awal buffering output saat ini. Saat keluar, bufStart diharapkan mengarah ke awal buffering output yang baru. Nilai pointer baru bisa sama dengan nilai sebelumnya (mis. jika fungsi menyalin data yang ada di tempat lain), atau bisa menunjuk ke lokasi yang sama sekali baru.
[in,out] bufLen
Referensi ke bilangan bulat yang tidak ditandatangani. Pada entri ke fungsi, bufLen berisi jumlah byte dari ruang yang unused di buffer saat ini. Saat keluar, bufLen diharapkan berisi jumlah maksimum byte yang dapat ditulis ke buffering output baru.
Nilai Pengembalian
WEAVE_NO_ERROR
Apakah fungsi tersebut dapat menyediakan lebih banyak ruang {i>buffer<i} untuk penulis.
other
Kode error Weave atau khusus platform lainnya yang menunjukkan bahwa terjadi error yang mencegah fungsi menghasilkan ruang buffer tambahan.

Atribut publik

AppData

void * AppData

Kolom pointer yang dapat digunakan untuk data khusus aplikasi.

FinalizeBuffer

FinalizeBufferFunct FinalizeBuffer

Pointer ke fungsi yang akan dipanggil saat TLVWriter selesai.

Objek TLVWriter akan memanggil fungsi FinalizeBuffer setiap kali metode Finalize() dipanggil. Aplikasi dapat menyetel pointer fungsi pada titik mana pun sebelum memanggil Finalize(). Secara default, pointer ditetapkan ke NULL, yang menyebabkan metode Finalize() mengabaikan pemanggilan fungsi.

Lihat definisi jenis FinalizeBufferFunct untuk informasi tambahan tentang cara mengimplementasikan fungsi FinalizeBuffer.

GetNewBuffer

GetNewBufferFunct GetNewBuffer

Pointer ke fungsi yang akan menyediakan ruang buffer output baru ke TLVWriter.

Objek TLVWriter akan memanggil fungsi GetNewBuffer setiap kali upaya dilakukan untuk menulis data yang melebihi ukuran buffer output saat ini. Jika disetel ke NULL (nilai default), penulis akan menampilkan WEAVE_ERROR_NO_MEMORY jika data output melebihi buffer saat ini.

GetNewBuffer dapat disetel oleh aplikasi kapan saja, tetapi biasanya disetel saat penulis diinisialisasi.

Lihat definisi jenis GetNewBufferFunct untuk informasi tambahan tentang cara mengimplementasikan fungsi GetNewBuffer.

ImplicitProfileId

uint32_t ImplicitProfileId

ID profil tag yang harus dienkode dalam bentuk implisit.

Saat penulis diminta untuk mengenkode elemen baru, jika ID profil tag yang terkait dengan elemen baru cocok dengan nilai anggota ImplicitProfileId, penulis akan mengenkode tag dalam bentuk implisit, tanpa menyertakan ID profil dalam prosesnya.

Secara default, properti ImplicitProfileId disetel ke kProfileIdNotSpecified, yang menginstruksikan penulis untuk tidak memunculkan tag yang dienkode secara implisit. Aplikasi dapat menyetel ImplicitProfileId kapan saja untuk mengaktifkan tag encoding dalam bentuk implisit mulai dari titik encoding saat ini. ID profil yang sesuai untuk ditetapkan biasanya bergantung pada konteks aplikasi atau protokol yang diucapkan.

Atribut yang dilindungi

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

Fungsi publik

CloseContainer

WEAVE_ERROR CloseContainer(
  TLVWriter & containerWriter
)

Menyelesaikan penulisan container TLV setelah panggilan ke OpenContainer().

Metode CloseContainer() memulihkan status objek TLVWriter induk setelah panggilan ke OpenContainer(). Untuk setiap panggilan ke OpenContainer(), aplikasi harus membuat panggilan yang sesuai ke CloseContainer(), dengan meneruskan referensi ke penulis container yang sama ke kedua metode tersebut.

Saat CloseContainer() ditampilkan, aplikasi dapat terus menggunakan penulis induk untuk menulis elemen TLV tambahan yang muncul setelah elemen container. Pada tahap ini, penulis container yang diberikan harus dianggap 'tidak diinisialisasi' dan tidak boleh digunakan tanpa inisialisasi ulang.

Detail
Parameter
[in] containerWriter
Referensi ke objek TLVWriter yang diberikan ke metode OpenContainer().
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_INCORRECT_STATE
Jika penulis container yang diberikan tidak dalam status yang benar.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container lain telah dibuka pada penulis container yang disediakan dan belum ditutup.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika menyelesaikan encoding container akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi.

ContinuePutBytes

WEAVE_ERROR ContinuePutBytes(
  const uint8_t *buf,
  uint32_t len
)

Mengenkode nilai string byte TLV.

Ini harus digunakan dengan StartPutBytes.

Detail
Parameter
[in] buf
Pointer ke buffer yang berisi string byte yang akan dienkode.
[in] len
Jumlah byte yang akan dienkode.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Jika nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi.

CopyContainer

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

Menyalin elemen container TLV dari objek TLVReader.

CopyContainer() mengenkode elemen container TLV baru dengan menyalin elemen container yang telah dienkode sebelumnya yang berada di posisi objek TLVReader saat ini. Metode ini menulis keseluruhan elemen penampung baru dalam satu panggilan, dengan menyalin jenis, tag, dan elemen penampung dari encoding sumber. Saat metode kembali, objek penulis dapat digunakan untuk menulis elemen TLV tambahan mengikuti elemen container.

Detail
Parameter
[in] container
Referensi ke objek TLVReader yang mengidentifikasi penampung TLV yang dienkode sebelumnya untuk disalin.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_INCORRECT_STATE
Jika pembaca yang disediakan tidak diposisikan pada elemen penampung.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_TLV_UNDERRUN
Jika encoding TLV pokok yang terkait dengan pembaca yang disediakan berakhir sebelum waktunya.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Jika pembaca yang disediakan mengalami jenis elemen TLV yang tidak valid atau tidak didukung.
WEAVE_ERROR_INVALID_TLV_TAG
Jika pembaca yang disediakan menemukan tag TLV dalam konteks yang tidak valid, atau jika tag yang terkait dengan penampung sumber tidak valid atau tidak sesuai dengan konteks tempat penampung baru ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi, atau oleh fungsi GetNextBuffer() yang terkait dengan objek pembaca.

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

Mengenkode elemen penampung TLV dari kumpulan elemen anggota yang dienkode sebelumnya.

Metode CopyContainer() mengenkode elemen container TLV baru (struktur, array, atau jalur) yang berisi kumpulan elemen anggota yang diambil dari objek TLVReader. Saat metode dipanggil, objek pembaca yang disediakan diharapkan diposisikan pada elemen penampung TLV. Penampung yang baru dienkode akan memiliki jenis dan anggota yang sama seperti penampung input. Tag untuk penampung baru ditetapkan sebagai parameter input.

Saat metode kembali, objek penulis dapat digunakan untuk menulis elemen TLV tambahan mengikuti elemen container.

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan penampung, atau AnonymousTag jika penampung harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
[in] container
Referensi ke objek TLVReader yang mengidentifikasi penampung TLV yang dienkode sebelumnya yang jenis dan anggotanya harus disalin.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_INCORRECT_STATE
Jika pembaca yang disediakan tidak diposisikan pada elemen penampung.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_TLV_UNDERRUN
Jika encoding TLV pokok yang terkait dengan pembaca yang disediakan berakhir sebelum waktunya.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Jika pembaca yang disediakan mengalami jenis elemen TLV yang tidak valid atau tidak didukung.
WEAVE_ERROR_INVALID_TLV_TAG
Jika pembaca yang disediakan menemukan tag TLV dalam konteks yang tidak valid, atau jika tag yang diberikan tidak valid atau tidak sesuai dengan konteks tempat penampung baru ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi, atau oleh fungsi GetNextBuffer() yang terkait dengan objek pembaca.

CopyContainer

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

Mengenkode elemen penampung TLV yang berisi elemen anggota dari penampung yang dienkode sebelumnya.

Metode CopyContainer() mengenkode elemen penampung TLV baru (struktur, array, atau jalur) yang berisi kumpulan elemen anggota yang diambil dari konten penampung yang telah dienkode sebelumnya. Saat metode tersebut dipanggil, data dalam buffering input yang disediakan diuraikan sebagai elemen penampung TLV, tempat penampung baru ditulis yang memiliki jenis dan anggota yang sama seperti penampung input. Tag untuk penampung baru ditetapkan sebagai parameter input.

Saat metode kembali, objek penulis dapat digunakan untuk menulis elemen TLV tambahan mengikuti elemen container.

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan penampung, atau AnonymousTag jika penampung harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
[in] encodedContainer
Buffer yang berisi container TLV yang telah dienkode sebelumnya yang jenis dan anggotanya harus disalin.
[in] encodedContainerLen
Panjang container yang dienkode sebelumnya dalam byte.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_TLV_UNDERRUN
Jika penampung yang dienkode berakhir sebelum waktunya.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Jika penampung dienkode berisi jenis elemen TLV yang tidak valid atau tidak didukung.
WEAVE_ERROR_INVALID_TLV_TAG
Jika penampung dienkode berisi tag TLV dalam konteks yang tidak valid, atau jika tag yang diberikan tidak valid atau tidak sesuai dengan konteks yang digunakan untuk menulis penampung baru.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi, atau oleh fungsi GetNextBuffer() yang terkait dengan objek pembaca.

CopyElement

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

Menyalin elemen TLV dari objek pembaca ke penulis.

Metode CopyElement() mengenkode elemen TLV baru yang jenis, tag, dan nilainya diambil dari objek TLVReader. Saat metode dipanggil, objek pembaca yang disediakan diharapkan akan diposisikan pada elemen TLV sumber. Elemen yang baru dienkode akan memiliki jenis, tag, dan konten yang sama seperti penampung input. Jika elemen yang disediakan adalah penampung TLV (struktur, array, atau jalur), seluruh konten penampung akan disalin.

Detail
Parameter
[in] reader
Referensi ke objek TLVReader yang mengidentifikasi elemen TLV yang dienkode sebelumnya yang harus disalin.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_INCORRECT_STATE
Jika pembaca yang disediakan tidak diposisikan pada elemen.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_TLV_UNDERRUN
Jika encoding TLV pokok yang terkait dengan pembaca yang disediakan berakhir sebelum waktunya.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Jika pembaca yang disediakan mengalami jenis elemen TLV yang tidak valid atau tidak didukung.
WEAVE_ERROR_INVALID_TLV_TAG
Jika pembaca yang disediakan menemukan tag TLV dalam konteks yang tidak valid, atau jika tag yang diberikan tidak valid atau tidak sesuai dengan konteks tempat penampung baru ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi, atau oleh fungsi GetNextBuffer() yang terkait dengan objek pembaca.

CopyElement

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

EndContainer

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

Menyelesaikan encoding elemen penampung TLV.

Metode EndContainer() menyelesaikan encoding elemen container TLV dan memulihkan status objek TLVWrite setelah panggilan sebelumnya ke StartContainer(). Untuk setiap panggilan ke aplikasi StartContainer() harus melakukan panggilan yang sesuai ke EndContainer(), dengan meneruskan nilai TLVType yang ditampilkan oleh panggilan StartContainer(). Saat EndContainer() ditampilkan, objek penulis dapat digunakan untuk menulis elemen TLV tambahan yang mengikuti elemen container.

Detail
Parameter
[in] outerContainerType
Nilai TLVType yang ditampilkan oleh metode StartContainer().
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_INCORRECT_STATE
Jika panggilan StartContainer() yang sesuai tidak dilakukan.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi.

Finalisasi

WEAVE_ERROR Finalize(
  void
)

Selesaikan penulisan encoding TLV.

Metode Finalize() menyelesaikan proses penulisan encoding TLV ke buffering output yang mendasarinya. Metode harus dipanggil oleh aplikasi sebelum menggunakan konten buffer. Finalize() hanya dapat dipanggil jika tidak ada penulis container yang terbuka untuk penulis saat ini. (Lihat OpenContainer()).

Detail
Nilai Pengembalian
WEAVE_NO_ERROR
Apakah encoding berhasil diselesaikan.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi FinalizeBuffer() yang dikonfigurasi.

GetContainerType

TLVType GetContainerType(
  void
) const 

Menampilkan jenis container tempat TLVWriter sedang menulis.

Metode GetContainerType() menampilkan jenis container TLV tempat TLVWriter sedang menulis. Jika TLVWriter tidak menulis elemen dalam container (yaitu jika menulis di tingkat encoding terluar), metode akan menampilkan kTLVType_NotSpecified.

Detail
Hasil
TLVType penampung saat ini, atau kTLVType_NotSpecified jika TLVWriter tidak menulis elemen dalam penampung.

GetLengthWritten

uint32_t GetLengthWritten(
  void
)

Menampilkan jumlah total byte yang ditulis sejak penulis diinisialisasi.

Detail
Hasil
Total jumlah byte yang ditulis sejak penulis diinisialisasi.

Inisiasi

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

Menginisialisasi objek TLVWriter untuk menulis ke dalam buffer output tunggal.

Detail
Parameter
[in] buf
Pointer ke buffer tempat TLV harus ditulis.
[in] maxLen
Jumlah maksimum byte yang harus ditulis ke buffering output.

Inisiasi

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Menginisialisasi objek TLVWriter untuk menulis ke dalam satu PacketBuffer.

Penulisan dimulai segera setelah byte terakhir dari data yang ada dalam buffer yang disediakan.

Detail
Parameter
[in] buf
Pointer ke PacketBuffer tempat TLV harus ditulis.
[in] maxLen
Jumlah maksimum byte yang harus ditulis ke buffering output.

Inisiasi

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

Menginisialisasi objek TLVWriter untuk menulis ke satu atau beberapa PacketBuffers.

Penulisan dimulai tepat setelah byte terakhir dari data yang ada dalam buffering yang ditentukan. Jika allowDiscontiguousBuffers bernilai benar, PacketBuffers tambahan akan dialokasikan dan dirantai ke buffering yang disediakan sesuai kebutuhan untuk mengakomodasi jumlah data yang ditulis. Jika buffering output yang ditentukan telah menjadi kepala rantai buffer, output akan ditulis ke buffering berikutnya dalam rantai tersebut sebelum buffer baru dialokasikan.

Detail
Parameter
[in] buf
Pointer ke PacketBuffer tempat data TLV harus ditulis.
[in] maxLen
Jumlah maksimum byte yang harus ditulis ke buffering output.
[in] allowDiscontiguousBuffers
Jika benar, tulis data ke rantai PacketBuffers, dan alokasikan buffer baru sesuai kebutuhan untuk menyimpan data yang ditulis. Jika false, penulisan akan gagal dengan WEAVE_ERROR_BUFFER_TOO_Small jika data tertulis melebihi ruang yang tersedia di buffering output awal.

InitMalloced

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

Menginisialisasi objek TLVWriter untuk menulis ke buffer dinamis.

Detail
Parameter
[in] buf
Referensi ke pointer yang akan menerima buffer yang dialokasikan.
[in] maxLen
Jumlah maksimum byte yang harus ditulis ke buffering output.
[in] initialBufSize
Jumlah awal byte yang harus dialokasikan ke buffer.

OpenContainer

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

Menginisialisasi objek TLVWriter baru untuk menulis anggota elemen container TLV.

Metode OpenContainer() digunakan untuk menulis elemen container TLV (struktur, array, atau jalur) ke encoding. Metode ini menggunakan jenis dan tag (jika ada) dari penampung baru, dan referensi ke objek penulis baru (penulis penampung) yang akan diinisialisasi untuk tujuan penulisan elemen penampung. Aplikasi menulis anggota container baru menggunakan penulis container, lalu memanggil CloseContainer() untuk menyelesaikan encoding container.

Saat penulis kontainer terbuka, aplikasi tidak boleh melakukan panggilan pada atau mengubah status penulis induk.

Penulis container mewarisi berbagai properti konfigurasi dari penulis induk. Di antaranya:

  • ID profil implisit (ImplicitProfileId)
  • Pointer data aplikasi (data)
  • Pointer fungsi GetNewBuffer dan FinalizeBuffer

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan penampung, atau AnonymousTag jika penampung harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
[in] containerType
Jenis penampung yang akan dienkode. Harus salah satu dari kTLVType_Structure, kTLVType_Array, atau kTLVType_Path.
[out] containerWriter
Referensi ke objek TLVWriter yang akan diinisialisasi untuk menulis anggota elemen container baru. Semua data yang terkait dengan objek yang disediakan akan ditimpa.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika nilai yang ditentukan untuk containerType salah.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Jika nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi.

Put

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

Mengenkode nilai bilangan bulat yang ditandatangani TLV.

Ini adalah fungsi anggota yang kelebihan beban, yang disediakan untuk memudahkan Anda. Fungsi ini berbeda dari fungsi di atas hanya dalam argumen yang diterimanya.

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan nilai, atau AnonymousTag jika nilai harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
[in] v
Nilai yang akan dienkode.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Jika nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi.

Put

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

Mengenkode nilai bilangan bulat yang ditandatangani TLV.

Ini adalah fungsi anggota yang kelebihan beban, yang disediakan untuk memudahkan Anda. Fungsi ini berbeda dari fungsi di atas hanya dalam argumen yang diterimanya.

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan nilai, atau AnonymousTag jika nilai harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
[in] v
Nilai yang akan dienkode.
[in] preserveSize
Benar jika nilai harus dienkode dalam jumlah byte yang sama seperti pada jenis input. False jika nilai harus dienkode dalam jumlah minimum byte yang diperlukan untuk mewakili nilai. Catatan: Aplikasi sangat disarankan untuk menetapkan parameter ini ke false (salah).
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Jika nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi.

Put

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v
)

Put

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

Put

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v
)

Put

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

Put

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v
)

Put

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

Put

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v
)

Mengenkode nilai bilangan bulat yang belum ditandatangani TLV.

Ini adalah fungsi anggota yang kelebihan beban, yang disediakan untuk memudahkan Anda. Fungsi ini berbeda dari fungsi di atas hanya dalam argumen yang diterimanya.

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan nilai, atau AnonymousTag jika nilai harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
[in] v
Nilai yang akan dienkode.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Jika nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi.

Put

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

Mengenkode nilai bilangan bulat yang belum ditandatangani TLV.

Ini adalah fungsi anggota yang kelebihan beban, yang disediakan untuk memudahkan Anda. Fungsi ini berbeda dari fungsi di atas hanya dalam argumen yang diterimanya.

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan nilai, atau AnonymousTag jika nilai harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
[in] v
Nilai yang akan dienkode.
[in] preserveSize
Benar jika nilai harus dienkode dalam jumlah byte yang sama seperti pada jenis input. False jika nilai harus dienkode dalam jumlah minimum byte yang diperlukan untuk mewakili nilai. Catatan: Aplikasi sangat disarankan untuk menetapkan parameter ini ke false (salah).
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Jika nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi.

Put

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v
)

Put

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

Put

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v
)

Put

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

Put

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v
)

Put

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

Put

WEAVE_ERROR Put(
  uint64_t tag,
  float v
)

Put

WEAVE_ERROR Put(
  uint64_t tag,
  double v
)

Mengenkode nilai floating point TLV.

Ini adalah fungsi anggota yang kelebihan beban, yang disediakan untuk memudahkan Anda. Fungsi ini berbeda dari fungsi di atas hanya dalam argumen yang diterimanya.

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan nilai, atau AnonymousTag jika nilai harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
[in] v
Nilai yang akan dienkode.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Jika nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi.

PutBoolean

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

Mengenkode nilai boolean TLV.

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan nilai, atau AnonymousTag jika nilai harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
[in] v
Nilai yang akan dienkode.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Jika nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi.

PutBytes

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

Mengenkode nilai string byte TLV.

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan nilai, atau AnonymousTag jika nilai harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
[in] buf
Pointer ke buffer yang berisi string byte yang akan dienkode.
[in] len
Jumlah byte yang akan dienkode.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Jika nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi.

PutNull

WEAVE_ERROR PutNull(
  uint64_t tag
)

Mengenkode nilai null TLV.

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan nilai, atau AnonymousTag jika nilai harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Jika nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi.

PutPreEncodedContainer

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

Mengenkode elemen penampung TLV dari kumpulan elemen anggota yang dienkode sebelumnya.

Metode PutPreEncodedContainer() mengenkode elemen container TLV baru (struktur, array, atau jalur) yang berisi kumpulan elemen anggota yang diambil dari buffering yang dienkode sebelumnya. Buffer input diharapkan berisi nol atau beberapa elemen TLV yang dienkode penuh, dengan tag yang sesuai dengan aturan yang terkait dengan jenis penampung yang ditentukan (misalnya, anggota struktur harus memiliki tag, sedangkan anggota array tidak boleh).

Metode ini mengenkode keseluruhan elemen penampung dalam satu panggilan. Saat PutPreEncodedContainer() ditampilkan, objek penulis dapat digunakan untuk menulis elemen TLV tambahan setelah elemen container.

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan penampung, atau AnonymousTag jika penampung harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
[in] containerType
Jenis penampung yang akan dienkode. Harus salah satu dari kTLVType_Structure, kTLVType_Array, atau kTLVType_Path.
[in] data
Pointer ke buffer yang berisi nol elemen TLV lainnya yang dienkode yang akan menjadi anggota penampung baru.
[in] dataLen
Jumlah byte dalam buffering data.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika nilai yang ditentukan untuk containerType salah.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Jika nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

Mengenkode nilai string UTF8 TLV.

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan nilai, atau AnonymousTag jika nilai harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
[in] buf
Pointer ke string UTF-8 yang dihentikan null yang akan dienkode.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Jika nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi.

PutString

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

Mengenkode nilai string UTF8 TLV.

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan nilai, atau AnonymousTag jika nilai harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
[in] buf
Pointer ke string UTF-8 yang akan dienkode.
[in] len
Panjang (dalam byte) string yang akan dienkode.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Jika nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi.

PutStringF

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

Enkode output string yang diformat sesuai dengan format dalam elemen TLV.

PutStringF adalah analog dari sprintf yang outputnya disimpan dalam elemen TLV, bukan buffer karakter. Jika fungsi printf yang diperluas tersedia, fungsi tersebut dapat menghasilkan string hasil ke dalam penyimpanan dasar yang terputus. Implementasi ini mendukung penyempurnaan printf berikut:

Platform ini menyediakan vcbprintf berbasis callback yang memberikan kemampuan untuk memanggil callback kustom sebagai pengganti putchar.

Platform ini menyediakan varian vsnprintf yang disebut vsnprintf_ex, yang berperilaku seperti vsnprintf kecuali memiliki ketentuan untuk menghilangkan karakter n pertama dari output.

Perhatikan bahwa meskipun fungsi berbasis callback mungkin yang paling sederhana dan menggunakan kode paling sedikit, variasi fungsi vsprintf_ex akan menggunakan lebih sedikit stack.

Jika tidak satu pun di atas tersedia, tetapi platform menyediakan malloc, fungsi akan mengalokasikan buffering sementara untuk menyimpan output. Ketika platform tidak memberikan peningkatan ke kelompok printf atau malloc, output akan dipotong sedemikian rupa sehingga sesuai dalam keadaan berkelanjutan dalam penyimpanan TLV saat ini

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan nilai, atau AnonymousTag jika nilai harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
[in] fmt
String format yang digunakan untuk memformat daftar argumen. Mengikuti sintaksis dan aturan yang sama dengan string format untuk kelompok fungsi printf.
[in] ...
Daftar argumen yang akan diformat dalam nilai output sesuai dengan fmt.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
other
Jika panggilan dasar ke metode TLVWriter WriteElementHead atau GetNewBuffer gagal, errornya akan segera diteruskan ke stack panggilan.

StartContainer

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

Mulai mengenkode elemen penampung TLV baru.

Metode StartContainer() digunakan untuk menulis elemen container TLV (struktur, array, atau jalur) ke encoding. Metode ini mengambil jenis dan tag (jika ada) dari penampung baru, dan referensi ke nilai TLVType yang akan digunakan untuk menyimpan konteks penulis saat ini saat sedang digunakan untuk menulis penampung.

Setelah metode StartContainer() ditampilkan, aplikasi harus menggunakan objek TLVWriter saat ini untuk menulis elemen container. Setelah selesai, aplikasi harus memanggil metode EndContainer() untuk menyelesaikan encoding penampung.

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan penampung, atau AnonymousTag jika penampung harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
[in] containerType
Jenis penampung yang akan dienkode. Harus salah satu dari kTLVType_Structure, kTLVType_Array, atau kTLVType_Path.
[out] outerContainerType
Referensi ke nilai TLVType yang akan menerima konteks penulis.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika nilai yang ditentukan untuk containerType salah.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Jika nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi.

StartPutBytes

WEAVE_ERROR StartPutBytes(
  uint64_t tag,
  uint32_t totalLen
)

Mengenkode string byte TLV dalam beberapa bagian.

Ini harus digunakan dengan ContinuePutBytes.

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan nilai, atau AnonymousTag jika nilai harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
[in] totalLen
Jumlah total byte yang akan dienkode.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Jika nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan nilainya akan melebihi batas jumlah maksimum byte yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya untuk mengalokasikan buffering output gagal karena kekurangan memori.
other
Error Weave lain atau khusus platform yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang dikonfigurasi.

{i>VPutStringF<i}

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

Enkode output string yang diformat sesuai dengan format dalam elemen TLV.

PutStringF adalah analog dari sprintf yang outputnya disimpan dalam elemen TLV, bukan buffer karakter. Jika fungsi printf yang diperluas tersedia, fungsi tersebut dapat menghasilkan string hasil ke dalam penyimpanan dasar yang terputus. Implementasi ini mendukung penyempurnaan printf berikut:

Platform ini menyediakan vcbprintf berbasis callback yang memberikan kemampuan untuk memanggil callback kustom sebagai pengganti putchar.

Platform ini menyediakan varian vsnprintf yang disebut vsnprintf_ex, yang berperilaku seperti vsnprintf kecuali memiliki ketentuan untuk menghilangkan karakter n pertama dari output.

Perhatikan bahwa meskipun fungsi berbasis callback mungkin yang paling sederhana dan menggunakan kode paling sedikit, variasi fungsi vsprintf_ex akan menggunakan lebih sedikit stack.

Jika tidak satu pun di atas tersedia, tetapi platform menyediakan malloc, fungsi akan mengalokasikan buffering sementara untuk menyimpan output. Ketika platform tidak memberikan peningkatan ke kelompok printf atau malloc, output akan dipotong sedemikian rupa sehingga sesuai dalam keadaan berkelanjutan dalam penyimpanan TLV saat ini

Detail
Parameter
[in] tag
Tag TLV yang akan dienkode dengan nilai, atau AnonymousTag jika nilai harus dienkode tanpa tag. Nilai tag harus dibuat dengan salah satu fungsi definisi tag ProfileTag(), ContextTag(), atau CommonTag().
[in] fmt
String format yang digunakan untuk memformat daftar argumen. Mengikuti sintaksis dan aturan yang sama dengan string format untuk kelompok fungsi printf.
[in] ap
Daftar argumen yang akan diformat dalam nilai output sesuai dengan fmt.
Nilai Pengembalian
WEAVE_NO_ERROR
Jika metode ini berhasil.
other
Jika panggilan dasar ke metode TLVWriter WriteElementHead atau GetNewBuffer gagal, errornya akan segera diteruskan ke stack panggilan.

Fungsi statis publik

FinalizePacketBuffer

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

Implementasi fungsi FinalizeBuffer TLVWriter untuk menulis ke rantai PacketBuffers.

Fungsi FinalizePacketBuffer() melakukan finalisasi yang diperlukan saat menggunakan TLVWriter untuk menulis ke rantai PacketBuffers. Fungsi ini dirancang untuk digunakan bersama fungsi GetNewPacketBuffer().

Lihat definisi jenis FinalizeBufferFunct untuk informasi tambahan tentang API fungsi FinalizePacketBuffer().

GetNewBuffer_Malloced

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

Implementasi fungsi GetNewBuffer TLVWriter untuk menulis ke buffering dinamis.

Fungsi GetNewBuffer_Malloced() menyediakan ruang output baru ke TLVWriter dengan menggandakan ukuran buffer dinamis dasar sesuai kebutuhan untuk menyimpan encoding. Fungsi ini didesain untuk ditetapkan ke pointer fungsi GetNewBuffer TLVWriter.

Lihat definisi jenis GetNewBufferFunct untuk informasi tambahan tentang API fungsi GetNewBuffer_Malloced().

GetNewPacketBuffer

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

Implementasi fungsi GetNewBuffer TLVWriter untuk menulis ke rantai PacketBuffers.

Fungsi GetNewPacketBuffer() menyediakan ruang output baru ke TLVWriter dengan mengalokasikan rantai yang terdiri dari satu atau beberapa PacketBuffers sesuai kebutuhan untuk menyimpan encoding. Fungsi ini didesain untuk ditetapkan ke pointer fungsi GetNewBuffer TLVWriter.

Perhatikan bahwa saat menggunakan GetNewPacketBuffer dengan TLVWriter, fungsi FinalizePacketBuffer() yang sesuai (atau yang setara) juga harus digunakan untuk menyelesaikan rantai buffer.

Lihat definisi jenis GetNewBufferFunct untuk informasi tambahan tentang API fungsi GetNewPacketBuffer().

Fungsi yang dilindungi

IsCloseContainerReserved

bool IsCloseContainerReserved(
  void
) const 

Tentukan apakah penampung harus menyediakan ruang untuk simbol CloseContainer pada saat memulai / membuka penampung.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

SetCloseContainerReserved

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

Tetapkan apakah penampung harus mencadangkan ruang untuk simbol CloseContainer pada titik awal / pembukaan penampung.

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
)