nl::Weave::TLV::TLVWriter

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

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

Ringkasan

TLVWriter menerapkan encoder gaya streaming khusus maju untuk data TLV Weave. Aplikasi menulis data ke encoding dengan memanggil salah satu metode Put() penulis, dan meneruskan informasi tag dan nilai yang terkait sesuai kebutuhan. Demikian pula, aplikasi dapat mengenkode jenis container TLV (struktur, array, atau jalur) dengan memanggil metode OpenContainer() atau EnterContainer() penulis.

Objek TLVWriter dapat menulis data secara langsung ke buffer 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 yang Dikenal Langsung: 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 melakukan finalisasi 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 *
Bidang 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 telah dienkode sebelumnya.
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
Mengenkode elemen container TLV yang berisi elemen anggota dari container yang telah 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 container TLV.
Finalize(void)
Selesaikan penulisan encoding TLV.
GetContainerType(void) const
Menampilkan jenis container tempat TLVWriter saat ini 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 buffer output tunggal.
Init(PacketBuffer *buf, uint32_t maxLen)
void
Melakukan inisialisasi objek TLVWriter untuk menulis ke dalam satu PacketBuffer.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Melakukan inisialisasi objek TLVWriter untuk menulis ke satu atau beberapa PacketBuffers.
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
void
Melakukan inisialisasi objek TLVWriter untuk menulis ke buffer dinamis.
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
Melakukan inisialisasi 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 TLV yang tidak ditandatangani.
Put(uint64_t tag, uint8_t v, bool preserveSize)
Mengenkode nilai bilangan bulat TLV yang tidak ditandatangani.
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 telah 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, ...)
Lakukan enkode output string yang diformat sesuai dengan format dalam elemen TLV.
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
Memulai encoding elemen container TLV baru.
StartPutBytes(uint64_t tag, uint32_t totalLen)
Mengenkode string byte TLV dalam beberapa potongan.
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
Lakukan 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 PacketBuffer.
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Implementasi fungsi GetNewBuffer TLVWriter untuk menulis ke buffer dinamis.
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Implementasi fungsi GetNewBuffer TLVWriter untuk menulis ke rantai PacketBuffer.

Fungsi yang dilindungi

IsCloseContainerReserved(void) const
bool
Tentukan apakah penampung harus menyediakan ruang untuk simbol CloseContainer di titik awal / pembukaan penampung.
IsContainerOpen(void) const
bool
SetCloseContainerReserved(bool aCloseContainerReserved)
void
Tetapkan apakah penampung harus menyediakan ruang untuk simbol CloseContainer di 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 melakukan finalisasi output dari objek TLVWriter.

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

Detail
Parameter
[in] writer
Referensi ke objek TLVWriter yang sedang difinalisasi.
[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 terakhir).
[in,out] bufLen
Jumlah byte yang terdapat dalam buffer yang ditunjuk oleh bufStart.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika finalisasi berhasil.
other
Kode error khusus platform atau Weave lainnya yang menunjukkan bahwa error terjadi 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 menjadi tujuan penulisan TLVWriter. Saat dipanggil, fungsi ini diharapkan menampilkan pointer ke lokasi memori tempat data baru harus ditulis, bersama dengan panjang maksimum 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 antar panggilan. Nilai ini diinisialisasi ke 0 sebelum panggilan pertama.
[in,out] bufStart
Referensi ke {i>data pointer<i}. Saat memasuki fungsi, bufStart akan menunjuk awal buffer output saat ini. Saat keluar, bufStart diperkirakan akan mengarah ke awal buffer output baru. Nilai pointer baru bisa sama dengan nilai sebelumnya (misalnya, jika fungsi menyalin data yang ada di tempat lain), atau dapat menunjuk ke lokasi yang sama sekali baru.
[in,out] bufLen
Referensi ke bilangan bulat yang tidak ditandatangani. Saat masuk ke fungsi, bufLen berisi jumlah byte dari ruang yang tidak digunakan dalam buffer saat ini. Saat keluar, bufLen diharapkan berisi jumlah byte maksimum yang dapat ditulis ke buffer output baru.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Apakah fungsi dapat menyediakan lebih banyak ruang buffer untuk penulis.
other
Kode error khusus platform atau Weave lainnya yang menunjukkan bahwa terjadi error yang mencegah fungsi menghasilkan ruang buffer tambahan.

Atribut publik

AppData

void * AppData

Bidang 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 menetapkan pointer fungsi kapan saja sebelum memanggil Finalize(). Secara default, pointer ditetapkan ke NULL, yang menyebabkan metode Finalize() mengabaikan pemanggilan fungsi.

Lihat definisi jenis FinalizeBufferFunct untuk informasi tambahan tentang penerapan 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 diatur 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 menerapkan 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, dengan menghilangkan ID profil dalam prosesnya.

Secara default, properti ImplicitProfileId ditetapkan 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 yang dimulai dari titik saat ini dalam encoding. 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 melakukan panggilan yang sesuai ke CloseContainer(), dengan meneruskan referensi ke penulis penampung yang sama ke kedua metode.

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 disediakan harus dianggap sebagai 'diinisialisasi' dan tidak boleh digunakan tanpa inisialisasi ulang.

Detail
Parameter
[in] containerWriter
Referensi ke objek TLVWriter yang disediakan ke metode OpenContainer().
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_INCORRECT_STATE
Jika penulis penampung 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 penampung akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang telah 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 yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka di penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Apakah nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang telah 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 terletak di posisi saat ini dari objek TLVReader. Metode tersebut menulis keseluruhan elemen penampung baru dalam satu panggilan, menyalin jenis, tag, dan elemen penampung dari encoding sumber. Saat metode ditampilkan, objek penulis dapat digunakan untuk menulis elemen TLV tambahan setelah elemen container.

Detail
Parameter
[in] container
Referensi ke objek TLVReader yang mengidentifikasi container TLV yang telah dienkode sebelumnya untuk disalin.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_INCORRECT_STATE
Jika pembaca yang disediakan tidak diposisikan di elemen container.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka di 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 diberikan menemukan tag TLV dalam konteks yang tidak valid, atau jika tag yang terkait dengan penampung sumber tidak valid atau tidak pantas dalam konteks tempat penampung baru ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya 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 telah dienkode sebelumnya.

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

Saat metode 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] container
Referensi ke objek TLVReader yang mengidentifikasi penampung TLV yang telah dienkode sebelumnya yang jenis dan anggotanya harus disalin.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_INCORRECT_STATE
Jika pembaca yang disediakan tidak diposisikan di elemen container.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka di 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 dalam konteks penulisan penampung baru tersebut.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya 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 container TLV yang berisi elemen anggota dari container yang telah 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 yang disediakan. Saat metode ini dipanggil, data dalam buffer input yang disediakan akan diuraikan sebagai elemen container TLV. Container baru akan ditulis dengan jenis dan anggota yang sama seperti container input. Tag untuk penampung baru ditetapkan sebagai parameter input.

Saat metode 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] encodedContainer
Buffer yang berisi penampung TLV yang telah dienkode yang jenis dan anggotanya harus disalin.
[in] encodedContainerLen
Panjang dalam byte container yang telah dienkode sebelumnya.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka di penulis saat ini dan belum ditutup.
WEAVE_ERROR_TLV_UNDERRUN
Apakah penampung yang dienkode berakhir sebelum waktunya.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Apakah penampung yang dienkode berisi jenis elemen TLV yang tidak valid atau tidak didukung.
WEAVE_ERROR_INVALID_TLV_TAG
Apakah penampung yang dienkode berisi tag TLV dalam konteks yang tidak valid, atau jika tag yang diberikan tidak valid atau tidak pantas dalam konteks penulisan penampung baru tersebut.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya 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 ini dipanggil, objek pembaca yang disediakan diharapkan diposisikan pada elemen TLV sumber. Elemen yang baru dienkode akan memiliki jenis, tag, dan konten yang sama dengan penampung input. Jika elemen yang disediakan adalah container TLV (struktur, array, atau jalur), seluruh konten container akan disalin.

Detail
Parameter
[in] reader
Referensi ke objek TLVReader yang mengidentifikasi elemen TLV yang telah dienkode sebelumnya dan harus disalin.
Nilai yang Ditampilkan
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 di 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 dalam konteks penulisan penampung baru tersebut.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya 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 container TLV.

Metode EndContainer() menyelesaikan encoding elemen container TLV dan memulihkan status objek TLVWrite setelah panggilan sebelumnya ke StartContainer(). Untuk setiap panggilan ke StartContainer(), aplikasi 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 yang Ditampilkan
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 di penulis saat ini dan belum ditutup.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang telah dikonfigurasi.

Finalisasi

WEAVE_ERROR Finalize(
  void
)

Selesaikan penulisan encoding TLV.

Metode Finalize() menyelesaikan proses penulisan encoding TLV ke buffer 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 yang Ditampilkan
WEAVE_NO_ERROR
Jika encoding berhasil diselesaikan.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka pada penulis saat ini dan belum ditutup.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi FinalizeBuffer() yang dikonfigurasi.

GetContainerType

TLVType GetContainerType(
  void
) const 

Menampilkan jenis container tempat TLVWriter saat ini menulis.

Metode GetContainerType() menampilkan jenis container TLV yang saat ini sedang ditulis oleh TLVWriter. Jika TLVWriter tidak menulis elemen dalam penampung (yaitu jika menulis di tingkat encoding paling luar), metode akan menampilkan kTLVType_NotSpecified.

Detail
Hasil
TLVType dari container saat ini, atau kTLVType_NotSpecified jika TLVWriter tidak menulis elemen dalam sebuah container.

GetLengthWritten

uint32_t GetLengthWritten(
  void
)

Menampilkan jumlah total byte yang ditulis sejak penulis diinisialisasi.

Detail
Hasil
Jumlah total byte yang ditulis sejak penulis diinisialisasi.

Init

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

Menginisialisasi objek TLVWriter untuk menulis ke buffer output tunggal.

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

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Melakukan inisialisasi 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 buffer output.

Init

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

Melakukan inisialisasi objek TLVWriter untuk menulis ke satu atau beberapa PacketBuffers.

Penulisan dimulai segera setelah byte terakhir dari data yang ada dalam buffer yang ditentukan. Jika allowDiscontiguousBuffers bernilai benar, PacketBuffer tambahan akan dialokasikan dan dirantai ke buffer yang disediakan sesuai kebutuhan untuk mengakomodasi jumlah data yang ditulis. Jika buffer output yang ditentukan sudah menjadi head dari rantai buffer, output akan ditulis ke buffer berikutnya dalam rantai 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 buffer output.
[in] allowDiscontiguousBuffers
Jika true (benar), tulis data ke rantai PacketBuffers, lalu alokasikan buffer baru sesuai kebutuhan untuk menyimpan data yang ditulis. Jika salah (false), penulisan akan gagal dengan menggunakan WEAVE_ERROR_BUFFER_TOO_SMALL jika data yang ditulis melebihi ruang yang tersedia di buffer output awal.

InitMalloced

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

Melakukan inisialisasi 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 buffer output.
[in] initialBufSize
Jumlah awal byte yang harus dialokasikan ke buffer.

OpenContainer

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

Melakukan inisialisasi 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 mengambil jenis dan tag (jika ada) penampung baru, dan referensi ke objek writer baru (writer container) yang akan diinisialisasi untuk keperluan penulisan elemen penampung. Aplikasi menulis anggota penampung baru menggunakan penulis penampung, lalu memanggil CloseContainer() untuk menyelesaikan encoding container.

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

Penulis container mewarisi berbagai properti konfigurasi dari penulis induk. Karakter pengganti ini meliputi:

  • ID profil implisit (ImplicitProfileId)
  • Pointer data aplikasi (AppData)
  • 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 container 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. Data apa pun yang terkait dengan objek yang disediakan akan ditimpa.
Nilai yang Ditampilkan
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 di penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Apakah nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang telah 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, disediakan untuk memudahkan. Fungsi ini berbeda dari fungsi di atas hanya dalam argumen yang diterima.

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 yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka di penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Apakah nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang telah 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, disediakan untuk memudahkan. Fungsi ini berbeda dari fungsi di atas hanya dalam argumen yang diterima.

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
True 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: Sangat disarankan untuk menetapkan parameter ini ke false (salah).
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka di penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Apakah nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang telah 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 TLV yang tidak ditandatangani.

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

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 yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka di penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Apakah nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang telah dikonfigurasi.

Put

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

Mengenkode nilai bilangan bulat TLV yang tidak ditandatangani.

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

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
True 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: Sangat disarankan untuk menetapkan parameter ini ke false (salah).
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka di penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Apakah nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang telah 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, disediakan untuk memudahkan. Fungsi ini berbeda dari fungsi di atas hanya dalam argumen yang diterima.

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 yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka di penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Apakah nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang telah 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 yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka di penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Apakah nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang telah 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 yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka di penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Apakah nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang telah 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 yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka di penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Apakah nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang telah 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 telah dienkode sebelumnya.

Metode PutPreEncodedContainer() mengenkode elemen penampung TLV baru (struktur, array, atau jalur) yang berisi kumpulan elemen anggota yang diambil dari buffer yang telah dienkode sebelumnya. Buffer input diharapkan berisi nol atau beberapa elemen TLV berenkode 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 container dalam satu panggilan. Saat PutPreEncodedContainer() ditampilkan, objek writer 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 container yang akan dienkode. Harus salah satu dari kTLVType_Structure, kTLVType_Array, atau kTLVType_Path.
[in] data
Pointer ke buffer yang berisi nol elemen TLV lain yang dienkode, yang akan menjadi anggota container baru.
[in] dataLen
Jumlah byte dalam buffer data.
Nilai yang Ditampilkan
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 di penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Apakah nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang telah 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 untuk dienkode.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka di penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Apakah nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang telah 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 yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka di penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Apakah nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang telah dikonfigurasi.

PutStringF

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

Lakukan enkode output string yang diformat sesuai dengan format dalam elemen TLV.

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

Platform 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 sama seperti vsnprintf, tetapi memiliki ketentuan untuk menghilangkan karakter n pertama dari output.

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

Jika kedua hal di atas tidak tersedia, tetapi platform menyediakan malloc, fungsi akan mengalokasikan buffer sementara untuk menyimpan output. Jika platform tidak memberikan peningkatan ke kelompok printf atau malloc, output akan dipotong sedemikian rupa agar sesuai dengan status 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 yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
other
Jika panggilan yang mendasari ke metode TLVWriter WriteElementHead atau GetNewBuffer gagal, error-nya akan segera diteruskan ke stack panggilan.

StartContainer

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

Memulai encoding elemen container 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 container 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 yang Ditampilkan
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 di penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Apakah nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang telah dikonfigurasi.

StartPutBytes

WEAVE_ERROR StartPutBytes(
  uint64_t tag,
  uint32_t totalLen
)

Mengenkode string byte TLV dalam beberapa potongan.

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 yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Jika penulis container telah dibuka di penulis saat ini dan belum ditutup.
WEAVE_ERROR_INVALID_TLV_TAG
Apakah nilai tag yang ditentukan tidak valid atau tidak sesuai dalam konteks tempat nilai tersebut ditulis.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika penulisan, nilai akan melebihi batas jumlah byte maksimum yang ditentukan saat penulis diinisialisasi.
WEAVE_ERROR_NO_MEMORY
Jika upaya mengalokasikan buffer output gagal karena kekurangan memori.
other
Error khusus platform atau Weave lainnya yang ditampilkan oleh fungsi GetNewBuffer() atau FinalizeBuffer() yang telah dikonfigurasi.

VPutStringF

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

Lakukan enkode output string yang diformat sesuai dengan format dalam elemen TLV.

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

Platform 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 sama seperti vsnprintf, tetapi memiliki ketentuan untuk menghilangkan karakter n pertama dari output.

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

Jika kedua hal di atas tidak tersedia, tetapi platform menyediakan malloc, fungsi akan mengalokasikan buffer sementara untuk menyimpan output. Jika platform tidak memberikan peningkatan ke kelompok printf atau malloc, output akan dipotong sedemikian rupa agar sesuai dengan status 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 yang Ditampilkan
WEAVE_NO_ERROR
Jika metode ini berhasil.
other
Jika panggilan yang mendasari ke metode TLVWriter WriteElementHead atau GetNewBuffer gagal, error-nya 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 PacketBuffer.

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

Lihat definisi jenis FinalizeBufferFunct untuk mengetahui 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 buffer dinamis.

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

Lihat definisi jenis GetNewBufferFunct untuk mengetahui 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 PacketBuffer.

Fungsi GetNewPacketBuffer() menyediakan ruang output baru ke TLVWriter dengan mengalokasikan rantai dari satu atau beberapa PacketBuffers sesuai kebutuhan untuk menyimpan encoding. Fungsi ini dirancang 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 mengetahui informasi tambahan tentang API fungsi GetNewPacketBuffer().

Fungsi yang dilindungi

IsCloseContainerReserved

bool IsCloseContainerReserved(
  void
) const 

Tentukan apakah penampung harus menyediakan ruang untuk simbol CloseContainer di titik awal / pembukaan penampung.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

SetCloseContainerReserved

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

Tetapkan apakah penampung harus menyediakan ruang untuk simbol CloseContainer di 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
)