Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.
Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

nl::Menenun::TLV::Pembaca TLV

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

Menyediakan parser yang hemat memori untuk data yang dienkode dalam format TLV Weave.

Ringkasan

TLVReader menerapkan parser “gaya tarik” khusus maju untuk data TLV Weave. Objek TLVReader beroperasi sebagai kursor yang dapat digunakan untuk melakukan iterasi pada urutan elemen TLV dan menafsirkan kontennya. Saat diposisikan pada elemen, aplikasi dapat melakukan panggilan ke metode Get() pembaca untuk mengkueri jenis dan tag elemen saat ini, serta untuk mengekstrak nilai terkait. Metode Next() pembaca digunakan untuk melanjutkan dari elemen ke elemen.

Objek TLVReader selalu diposisikan sebelum, sebelum, atau setelah elemen TLV. Saat pertama kali diinisialisasi, TLVReader akan diposisikan tepat sebelum elemen pertama encoding. Untuk mulai membaca, aplikasi harus melakukan panggilan awal ke metode Next() untuk memosisikan pembaca pada elemen pertama. Jika terdapat struktur penampung, array atau jalur metode OpenContainer() atau EnterContainer() dapat digunakan untuk melakukan iterasi melalui konten penampung.

Saat pembaca mencapai akhir encoding TLV, atau elemen terakhir dalam container, pembaca akan menandakan aplikasi dengan menampilkan error WEAVE_END_OF_TLV dari metode Next(). Pembaca akan terus menampilkan WEAVE_END_OF_TLV hingga diinisialisasi ulang, atau penampung saat ini dikeluarkan (melalui CloseContainer() / ExitContainer()).

Objek TLVReader dapat mengurai data secara langsung dari buffer input tetap, atau dari rantai satu atau lebih PacketBuffers. Selain itu, aplikasi dapat menyediakan fungsi GetNextBuffer untuk memberikan data ke pembaca dari sumber arbitrer, misalnya soket atau port serial.

Inheritance

Subclass Langsung yang Diketahui:
nl::Weave::Profiles::DataManagement_Current::CircularEventReader
nl::Weave::TLV::CircularTLVReader

Jenis publik

GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR(*
Fungsi yang dapat digunakan untuk mengambil data TLV tambahan untuk diuraikan.

Atribut publik

AppData
void *
Kolom pointer yang dapat digunakan untuk data khusus aplikasi.
GetNextBuffer
Pointer ke fungsi yang akan menghasilkan data input untuk objek TLVReader.
ImplicitProfileId
uint32_t
ID profil yang akan digunakan untuk tag profil yang dienkode dalam bentuk implisit.

Atribut yang dilindungi

mBufEnd
const uint8_t *
mBufHandle
uintptr_t
mContainerType
mControlByte
uint16_t
mElemLenOrVal
uint64_t
mElemTag
uint64_t
mLenRead
uint32_t
mMaxLen
uint32_t
mReadPoint
const uint8_t *

Fungsi publik

CloseContainer(TLVReader & containerReader)
Menyelesaikan pembacaan penampung TLV setelah panggilan ke OpenContainer().
DupBytes(uint8_t *& buf, uint32_t & dataLen)
Mengalokasikan dan menampilkan buffer yang berisi nilai byte saat ini atau string UTF8.
DupString(char *& buf)
Alokasikan dan tampilkan buffer yang berisi nilai yang dihapus dari byte saat ini atau string UTF8.
EnterContainer(TLVType & outerContainerType)
Mempersiapkan objek TLVReader untuk membaca anggota elemen penampung TLV.
ExitContainer(TLVType outerContainerType)
Menyelesaikan pembacaan penampung TLV dan menyiapkan objek TLVReader untuk membaca elemen setelah penampung.
Get(bool & v)
Mendapatkan nilai elemen saat ini sebagai jenis boolean.
Get(int8_t & v)
Dapatkan nilai elemen saat ini sebagai bilangan bulat 8-bit yang telah ditandai.
Get(int16_t & v)
Dapatkan nilai elemen saat ini sebagai bilangan bulat 16-bit yang telah ditandai.
Get(int32_t & v)
Dapatkan nilai elemen saat ini sebagai bilangan bulat 32-bit yang telah ditandai.
Get(int64_t & v)
Dapatkan nilai elemen saat ini sebagai bilangan bulat 64-bit yang telah ditandai.
Get(uint8_t & v)
Mendapatkan nilai elemen saat ini sebagai bilangan bulat 8-bit tanpa tanda tangan.
Get(uint16_t & v)
Mendapatkan nilai elemen saat ini sebagai bilangan bulat 16-bit tanpa tanda tangan.
Get(uint32_t & v)
Mendapatkan nilai elemen saat ini sebagai bilangan bulat 32-bit tanpa tanda tangan.
Get(uint64_t & v)
Mendapatkan nilai elemen saat ini sebagai bilangan bulat 64-bit tanpa tanda tangan.
Get(float & v)
Get(double & v)
Mendapatkan nilai elemen saat ini sebagai bilangan floating point presisi ganda.
GetBufHandle(void) const
uintptr_t
GetBytes(uint8_t *buf, uint32_t bufSize)
Mendapatkan nilai elemen string UTF8 atau byte saat ini.
GetContainerType(void) const
Menampilkan jenis penampung tempat TLVReader sedang membaca.
GetControlByte(void) const
uint16_t
Menampilkan byte kontrol yang terkait dengan elemen TLV saat ini.
GetDataPtr(const uint8_t *& data)
Dapatkan pointer ke byte awal yang dienkode dari byte TLV atau elemen string UTF8.
GetLength(void) const
uint32_t
Menampilkan panjang data yang terkait dengan elemen TLV saat ini.
GetLengthRead(void) const
uint32_t
Menampilkan jumlah total byte yang dibaca sejak pembaca diinisialisasi.
GetReadPoint(void) const
const uint8_t *
Mendapatkan titik di buffer input pokok yang sesuai dengan posisi pembaca saat ini.
GetRemainingLength(void) const
uint32_t
Menampilkan jumlah total byte yang dapat dibaca hingga panjang baca maksimum tercapai.
GetString(char *buf, uint32_t bufSize)
Dapatkan nilai elemen string UTF-1 atau byte saat ini sebagai string dengan akhiran null.
GetTag(void) const
uint64_t
Menampilkan tag yang terkait dengan elemen TLV saat ini.
GetType(void) const
Menampilkan jenis elemen TLV saat ini.
Init(const TLVReader & aReader)
void
Menginisialisasi objek TLVReader dari objek TLVReader lain.
Init(const uint8_t *data, uint32_t dataLen)
void
Menginisialisasi objek TLVReader untuk membaca dari buffer input tunggal.
Init(PacketBuffer *buf, uint32_t maxLen)
void
Menginisialisasi objek TLVReader untuk dibaca dari satu PacketBuffer.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Menginisialisasi objek TLVReader untuk membaca dari satu atau beberapa PacketBuffers.
Next(void)
Meneruskan objek TLVReader ke elemen TLV berikutnya yang akan dibaca.
Next(TLVType expectedType, uint64_t expectedTag)
Memajukan objek TLVReader ke elemen TLV berikutnya yang akan dibaca sehingga menegaskan jenis dan tag elemen baru.
OpenContainer(TLVReader & containerReader)
Menginisialisasi objek TLVReader baru untuk membaca anggota elemen container TLV.
Skip(void)
Memajukan objek TLVReader tepat setelah elemen TLV saat ini.
VerifyEndOfContainer(void)
Memverifikasi bahwa objek TVLReader berada di akhir container TLV.

Fungsi yang dilindungi

ClearElementState(void)
void
Menghapus status TLVReader.
ElementType(void) const
TLVElementType
Ini adalah metode pribadi yang menampilkan TLVElementType dari mControlByte.
EnsureData(WEAVE_ERROR noDataErr)
GetElementHeadLength(uint8_t & elemHeadBytes) const
Ini adalah metode pribadi yang digunakan untuk menghitung panjang kepala elemen TLV.
IsContainerOpen(void) const
bool
ReadData(uint8_t *buf, uint32_t len)
ReadElement(void)
ReadTag(TLVTagControl tagControl, const uint8_t *& p)
uint64_t
SetContainerOpen(bool aContainerOpen)
void
SkipData(void)
Lewati data apa pun yang dimuat dalam TLV saat ini dengan membacanya tanpa buffering tujuan.
SkipToEndOfContainer(void)
VerifyElement(void)

Fungsi statis yang dilindungi

FailGetNextBuffer(TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen)
GetNextPacketBuffer(TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen)

Jenis publik

GetNextBufferFunct

WEAVE_ERROR(* GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen)

Fungsi yang dapat digunakan untuk mengambil data TLV tambahan untuk diuraikan.

Fungsi jenis ini digunakan untuk memberikan feed data input ke TLVReader. Saat dipanggil, fungsi ini diharapkan menghasilkan data tambahan bagi pembaca untuk mengurai atau memberi sinyal kepada pembaca bahwa tidak ada lagi data yang tersedia.

Detail
Parameter
[in] reader
Referensi ke objek TLVReader yang meminta data input.
[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 fungsi dimasukkan, bufStart akan mengarah ke satu byte di luar byte data TLV terakhir yang digunakan oleh pembaca. Saat keluar, bufStart diharapkan mengarah ke byte pertama dari data TLV baru yang akan diurai. Nilai pointer baru dapat berada dalam buffer yang sama dengan data yang digunakan sebelumnya, atau dapat mengarah ke buffer yang benar-benar baru.
[out] bufLen
Referensi ke bilangan bulat yang tidak ditandatangani yang harus ditetapkan fungsi ke jumlah byte data TLV yang ditampilkan. Jika akhir data TLV input telah tercapai, fungsi ini harus menetapkan nilai ini ke 0.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika fungsi berhasil menghasilkan lebih banyak data TLV, atau akhir data input tercapai (bufLen dalam kasus ini harus ditetapkan ke 0).
other
Kode error spesifik Weave atau platform lainnya menunjukkan bahwa terjadi error yang mencegah fungsi menghasilkan data yang diminta.

Atribut publik

AppData

void * AppData

Kolom pointer yang dapat digunakan untuk data khusus aplikasi.

GetNextBuffer

GetNextBufferFunct GetNextBuffer

Pointer ke fungsi yang akan menghasilkan data input untuk objek TLVReader.

Jika ditetapkan ke NULL (nilai default), pembaca akan menganggap tidak ada data input lebih lanjut yang tersedia.

GetNextBuffer bisa disetel oleh aplikasi kapan saja, namun biasanya disetel saat pembaca diinisialisasi.

Lihat definisi jenis GetNextBufferFunct untuk informasi tambahan tentang implementasi fungsi GetNextBuffer.

IDProfil Implisit

uint32_t ImplicitProfileId

ID profil yang akan digunakan untuk tag profil yang dienkode dalam bentuk implisit.

Saat pembaca menemukan tag khusus profil yang telah dienkode dalam bentuk implisit, pembaca akan menggunakan nilai properti ImplicitProfileId sebagai ID profil yang diasumsikan untuk tag tersebut.

Secara default, properti ImplicitProfileId ditetapkan ke kProfileIdNotSpecified. Saat mendekode TLV yang berisi tag yang dienkode secara implisit, aplikasi harus menetapkan ImplicitProfileId sebelum membaca elemen TLV yang memiliki tag tersebut. ID profil yang sesuai biasanya bergantung pada konteks aplikasi atau protokol yang diucapkan.

Jika tag yang dienkode secara implisit ditemui saat ImplicitProfileId ditetapkan ke kProfileIdNotSpecified, pembaca akan mengembalikan error WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG.

Atribut yang dilindungi

mBufEnd

const uint8_t * mBufEnd

mBufHandle

uintptr_t mBufHandle

mContainerType

TLVType mContainerType

mControlByte

uint16_t mControlByte

mElemLenOrVal

uint64_t mElemLenOrVal

mElemTag

uint64_t mElemTag

mLenRead

uint32_t mLenRead

mMaxLen

uint32_t mMaxLen

mReadPoint

const uint8_t * mReadPoint

Fungsi publik

TutupPenampung

WEAVE_ERROR CloseContainer(
  TLVReader & containerReader
)

Menyelesaikan pembacaan penampung TLV setelah panggilan ke OpenContainer().

Metode CloseContainer() memulihkan status objek TLVReader induk setelah panggilan ke OpenContainer(). Untuk setiap panggilan ke aplikasi OpenContainer() harus melakukan panggilan yang sesuai ke CloseContainer(), dengan meneruskan referensi ke pembaca penampung yang sama ke kedua metode.

Saat CloseContainer() kembali, pembaca induk diposisikan tepat sebelum elemen pertama yang mengikuti penampung. Pada tahap ini, aplikasi dapat menggunakan metode Next() untuk melanjutkan ke elemen lainnya.

Aplikasi dapat memanggil tutup CloseContainer() pada pembaca induk kapan saja, terlepas dari apakah semua elemen dalam penampung yang mendasarinya telah dibaca. Setelah CloseContainer() dipanggil, aplikasi harus mempertimbangkan pembaca penampung 'de-inisialisasi' dan tidak boleh menggunakannya lebih lanjut tanpa melakukan inisialisasi ulang.

Detail
Parameter
[in] containerReader
Referensi ke objek TLVReader yang disediakan ke metode OpenContainer().
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_INCORRECT_STATE
Jika OpenContainer() belum dipanggil di pembaca, atau jika pembaca penampung tidak cocok dengan yang diteruskan ke metode OpenContainer().
WEAVE_ERROR_TLV_UNDERRUN
Jika encoding TLV yang mendasarinya berakhir sebelum waktunya.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Jika pembaca menemukan jenis elemen TLV yang tidak valid atau tidak didukung.
WEAVE_ERROR_INVALID_TLV_TAG
Jika pembaca menemukan tag TLV dalam konteks yang tidak valid.
other
Kode error platform atau Weave lainnya yang ditampilkan oleh fungsi GetNextBuffer() yang dikonfigurasi. Hanya memungkinkan jika GetNextBuffer tidak NULL.

DpByte

WEAVE_ERROR DupBytes(
  uint8_t *& buf,
  uint32_t & dataLen
)

Mengalokasikan dan menampilkan buffer yang berisi nilai byte saat ini atau string UTF8.

Metode ini membuat buffering untuk dan menampilkan salinan data yang terkait dengan elemen string byte atau UTF-8 pada posisi saat ini. Memori untuk buffer diperoleh dengan malloc() dan harus dibebaskan dengan free() oleh pemanggil jika tidak lagi diperlukan.

Detail
Parameter
[out] buf
Referensi ke pointer ke mana buffering dataLen yang dialokasikan melalui heap akan berhasil.
[out] dataLen
Referensi ke penyimpanan untuk ukuran, dalam byte, sebesar buf jika berhasil.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika elemen saat ini bukan byte TLV atau string UTF8, atau pembaca tidak diposisikan pada elemen.
WEAVE_ERROR_NO_MEMORY
Jika memori tidak dapat dialokasikan untuk buffering output.
WEAVE_ERROR_TLV_UNDERRUN
Jika encoding TLV yang mendasarinya berakhir sebelum waktunya.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
Jika platform target tidak mendukung malloc() dan free().
other
Kode error platform atau Weave lainnya yang ditampilkan oleh fungsi GetNextBuffer() yang dikonfigurasi. Hanya memungkinkan jika GetNextBuffer tidak NULL.

Musik DupString

WEAVE_ERROR DupString(
  char *& buf
)

Alokasikan dan tampilkan buffer yang berisi nilai yang dihapus dari byte saat ini atau string UTF8.

Metode ini membuat buffer dan menampilkan salinan data yang dihentikan null yang terkait dengan elemen string byte atau UTF-8 pada posisi saat ini. Memori untuk buffer diperoleh dengan malloc() dan harus dibebaskan dengan free() oleh pemanggil jika tidak lagi diperlukan.

Detail
Parameter
[out] buf
Referensi ke pointer ke mana buffer yang dialokasikan heap akan ditetapkan saat berhasil.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika elemen saat ini bukan byte TLV atau string UTF8, atau pembaca tidak diposisikan pada elemen.
WEAVE_ERROR_NO_MEMORY
Jika memori tidak dapat dialokasikan untuk buffering output.
WEAVE_ERROR_TLV_UNDERRUN
Jika encoding TLV yang mendasarinya berakhir sebelum waktunya.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
Jika platform target tidak mendukung malloc() dan free().
other
Kode error platform atau Weave lainnya yang ditampilkan oleh fungsi GetNextBuffer() yang dikonfigurasi. Hanya memungkinkan jika GetNextBuffer tidak NULL.

EnterContainer

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

Mempersiapkan objek TLVReader untuk membaca anggota elemen penampung TLV.

Metode EnterContainer() mempersiapkan objek TLVReader saat ini untuk mulai membaca elemen anggota penampung TLV (struktur, array, atau jalur). Untuk setiap panggilan ke aplikasi EnterContainer() harus melakukan panggilan yang sesuai ke ExitContainer().

Saat EnterContainer() dipanggil, objek TLVReader harus diposisikan pada elemen container agar dapat dibaca. Metode ini mengambil argumen sebagai referensi ke nilai TLVType yang akan digunakan untuk menyimpan konteks pembaca saat membaca penampung.

Saat metode EnterContainer() kembali, pembaca langsung diposisikan sebelum anggota pertama penampung. Memanggil Next() berulang kali akan memajukan pembaca melalui anggota koleksi hingga akhir tercapai, sehingga pembaca akan menampilkan WEAVE_END_OF_TLV.

Setelah aplikasi selesai membaca penampung, aplikasi dapat terus membaca elemen setelah penampung dengan memanggil metode ExitContainer().

Detail
Parameter
[out] outerContainerType
Referensi ke nilai TLVType yang akan menerima konteks pembaca.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_INCORRECT_STATE
Jika elemen saat ini tidak diposisikan pada elemen penampung.

Keluar dari Container

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

Menyelesaikan pembacaan penampung TLV dan menyiapkan objek TLVReader untuk membaca elemen setelah penampung.

Metode ExitContainer() memulihkan status objek TLVReader setelah panggilan ke EnterContainer(). Untuk setiap panggilan ke aplikasi EnterContainer() harus melakukan panggilan yang sesuai ke ExitContainer(), dengan meneruskan nilai konteks yang dikembalikan oleh metode EnterContainer().

Saat ExitContainer() kembali, pembaca diposisikan tepat sebelum elemen pertama yang mengikuti penampung. Pada tahap ini, aplikasi dapat menggunakan metode Next() untuk melanjutkan ke elemen lainnya.

Setelah EnterContainer() dipanggil, aplikasi dapat memanggil ExitContainer() pada pembaca kapan saja, terlepas dari apakah semua elemen dalam penampung yang mendasarinya telah dibaca.

Detail
Parameter
[in] outerContainerType
Nilai TLVType yang ditampilkan oleh metode EnterContainer().
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_INCORRECT_STATE
Jika OpenContainer() belum dipanggil di pembaca, atau jika pembaca penampung tidak cocok dengan yang diteruskan ke metode OpenContainer().
WEAVE_ERROR_TLV_UNDERRUN
Jika encoding TLV yang mendasarinya berakhir sebelum waktunya.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Jika pembaca menemukan jenis elemen TLV yang tidak valid atau tidak didukung.
WEAVE_ERROR_INVALID_TLV_TAG
Jika pembaca menemukan tag TLV dalam konteks yang tidak valid.
other
Kode error platform atau Weave lainnya yang ditampilkan oleh fungsi GetNextBuffer() yang dikonfigurasi. Hanya memungkinkan jika GetNextBuffer tidak NULL.

Dapatkan

WEAVE_ERROR Get(
  bool & v
)

Mendapatkan nilai elemen saat ini sebagai jenis boolean.

Detail
Parameter
[out] v
Menerima nilai yang terkait dengan elemen TLV saat ini.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika elemen saat ini bukan jenis boolean TLV, atau pembaca tidak diposisikan pada elemen.

Dapatkan

WEAVE_ERROR Get(
  int8_t & v
)

Dapatkan nilai elemen saat ini sebagai bilangan bulat 8-bit yang telah ditandai.

Jika nilai bilangan bulat yang dienkode lebih besar dari jenis data output, nilai yang dihasilkan akan terpotong.

Detail
Parameter
[out] v
Menerima nilai yang terkait dengan elemen TLV saat ini.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika elemen saat ini bukan jenis bilangan bulat TLV (bertanda atau tidak,) atau pembaca tidak diposisikan pada elemen.

Dapatkan

WEAVE_ERROR Get(
  int16_t & v
)

Dapatkan nilai elemen saat ini sebagai bilangan bulat 16-bit yang telah ditandai.

Jika nilai bilangan bulat yang dienkode lebih besar dari jenis data output, nilai yang dihasilkan akan terpotong.

Detail
Parameter
[out] v
Menerima nilai yang terkait dengan elemen TLV saat ini.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika elemen saat ini bukan jenis bilangan bulat TLV (bertanda atau tidak,) atau pembaca tidak diposisikan pada elemen.

Dapatkan

WEAVE_ERROR Get(
  int32_t & v
)

Dapatkan nilai elemen saat ini sebagai bilangan bulat 32-bit yang telah ditandai.

Jika nilai bilangan bulat yang dienkode lebih besar dari jenis data output, nilai yang dihasilkan akan terpotong.

Detail
Parameter
[out] v
Menerima nilai yang terkait dengan elemen TLV saat ini.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika elemen saat ini bukan jenis bilangan bulat TLV (bertanda atau tidak,) atau pembaca tidak diposisikan pada elemen.

Dapatkan

WEAVE_ERROR Get(
  int64_t & v
)

Dapatkan nilai elemen saat ini sebagai bilangan bulat 64-bit yang telah ditandai.

Jika nilai bilangan bulat yang dienkode lebih besar dari jenis data output, nilai yang dihasilkan akan terpotong.

Detail
Parameter
[out] v
Menerima nilai yang terkait dengan elemen TLV saat ini.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika elemen saat ini bukan jenis bilangan bulat TLV (bertanda atau tidak,) atau pembaca tidak diposisikan pada elemen.

Dapatkan

WEAVE_ERROR Get(
  uint8_t & v
)

Mendapatkan nilai elemen saat ini sebagai bilangan bulat 8-bit tanpa tanda tangan.

Jika nilai bilangan bulat yang dienkode lebih besar dari jenis data output, nilai yang dihasilkan akan terpotong. Demikian pula, jika nilai bilangan bulat yang dienkode negatif, nilai akan dikonversi menjadi tidak ditandatangani.

Detail
Parameter
[out] v
Menerima nilai yang terkait dengan elemen TLV saat ini.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika elemen saat ini bukan jenis bilangan bulat TLV (bertanda atau tidak,) atau pembaca tidak diposisikan pada elemen.

Dapatkan

WEAVE_ERROR Get(
  uint16_t & v
)

Mendapatkan nilai elemen saat ini sebagai bilangan bulat 16-bit tanpa tanda tangan.

Jika nilai bilangan bulat yang dienkode lebih besar dari jenis data output, nilai yang dihasilkan akan terpotong. Demikian pula, jika nilai bilangan bulat yang dienkode negatif, nilai akan dikonversi menjadi tidak ditandatangani.

Detail
Parameter
[out] v
Menerima nilai yang terkait dengan elemen TLV saat ini.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika elemen saat ini bukan jenis bilangan bulat TLV (bertanda atau tidak,) atau pembaca tidak diposisikan pada elemen.

Dapatkan

WEAVE_ERROR Get(
  uint32_t & v
)

Mendapatkan nilai elemen saat ini sebagai bilangan bulat 32-bit tanpa tanda tangan.

Jika nilai bilangan bulat yang dienkode lebih besar dari jenis data output, nilai yang dihasilkan akan terpotong. Demikian pula, jika nilai bilangan bulat yang dienkode negatif, nilai akan dikonversi menjadi tidak ditandatangani.

Detail
Parameter
[out] v
Menerima nilai yang terkait dengan elemen TLV saat ini.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika elemen saat ini bukan jenis bilangan bulat TLV (bertanda atau tidak,) atau pembaca tidak diposisikan pada elemen.

Dapatkan

WEAVE_ERROR Get(
  uint64_t & v
)

Mendapatkan nilai elemen saat ini sebagai bilangan bulat 64-bit tanpa tanda tangan.

Jika nilai bilangan bulat yang dienkode negatif, nilai akan dikonversi ke tidak ditandatangani.

Detail
Parameter
[out] v
Menerima nilai yang terkait dengan elemen TLV saat ini.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika elemen saat ini bukan jenis bilangan bulat TLV (bertanda atau tidak,) atau pembaca tidak diposisikan pada elemen.

Dapatkan

WEAVE_ERROR Get(
  float & v
)

Dapatkan

WEAVE_ERROR Get(
  double & v
)

Mendapatkan nilai elemen saat ini sebagai bilangan floating point presisi ganda.

Detail
Parameter
[out] v
Menerima nilai yang terkait dengan elemen TLV saat ini.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika elemen saat ini bukan jenis floating point TLV, atau pembaca tidak diposisikan pada elemen.

GetBufHandle

uintptr_t GetBufHandle(
  void
) const 

GetBytes

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

Mendapatkan nilai elemen string UTF8 atau byte saat ini.

Untuk menentukan ukuran buffer input yang diperlukan, panggil metode GetLength() sebelum memanggil GetBytes().

Detail
Parameter
[in] buf
Pointer ke buffer untuk menerima data string.
[in] bufSize
Ukuran buffer dalam byte yang ditunjukkan dengan buf.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika elemen saat ini bukan byte TLV atau string UTF8, atau pembaca tidak diposisikan pada elemen.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika buffer yang disediakan terlalu kecil untuk menyimpan data yang terkait dengan elemen saat ini.
WEAVE_ERROR_TLV_UNDERRUN
Jika encoding TLV yang mendasarinya berakhir sebelum waktunya.
other
Kode error platform atau Weave lainnya yang ditampilkan oleh fungsi GetNextBuffer() yang dikonfigurasi. Hanya memungkinkan jika GetNextBuffer tidak NULL.

GetContainerType

TLVType GetContainerType(
  void
) const 

Menampilkan jenis penampung tempat TLVReader sedang membaca.

Metode GetContainerType() menampilkan jenis penampung TLV tempat pembacaan TLVReader. Jika TLVReader diposisikan pada level paling luar dari encoding TLV (yaitu sebelum, pada atau setelah elemen TLV terluar), metode ini akan menampilkan kTLVType_NotSpecified.

Detail
Hasil
TLVType untuk container saat ini, atau kTLVType_NotSpecified jika TLVReader tidak diposisikan dalam container.

GetControlByte

uint16_t GetControlByte(
  void
) const 

Menampilkan byte kontrol yang terkait dengan elemen TLV saat ini.

Idealnya, tidak ada yang perlu mengetahui tentang byte kontrol dan hanya implementasi internal TLV yang dapat mengaksesnya. Namun, memiliki akses ke byte kontrol sangat berguna untuk tujuan proses debug oleh TLVDebugUtilities (yang mencoba mendekode byte kontrol tag saat mencetak konten buffer TLV) secara efektif.

Detail
Hasil
Bilangan bulat tanpa tanda tangan yang berisi byte kontrol yang terkait dengan elemen TLV saat ini. kTLVControlByte_NotSpecified ditampilkan jika pembaca tidak diposisikan pada elemen.

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

Dapatkan pointer ke byte awal yang dienkode dari byte TLV atau elemen string UTF8.

Metode ini menampilkan pointer langsung untuk nilai string yang dienkode dalam buffer input yang mendasarinya. Agar berhasil, metode ini mengharuskan keseluruhan nilai string ada dalam buffer tunggal. Jika tidak, metode ini akan menampilkan WEAVE_ERROR_TLV_UnderRUN. Ini membuat metode penggunaan terbatas saat membaca data dari beberapa buffer yang tidak berurutan.

Detail
Parameter
[out] data
Referensi ke pointer const yang akan menerima pointer ke data string yang mendasarinya.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika elemen saat ini bukan byte TLV atau string UTF8, atau pembaca tidak diposisikan pada elemen.
WEAVE_ERROR_TLV_UNDERRUN
Jika encoding TLV yang mendasarinya berakhir sebelum waktunya atau nilai elemen string saat ini tidak ada dalam satu buffer yang berdekatan.
other
Kode error platform atau Weave lainnya yang ditampilkan oleh fungsi GetNextBuffer() yang dikonfigurasi. Hanya memungkinkan jika GetNextBuffer tidak NULL.

GetLength

uint32_t GetLength(
  void
) const 

Menampilkan panjang data yang terkait dengan elemen TLV saat ini.

Panjang data hanya berlaku untuk elemen jenis string UTF8 atau string byte. Untuk string UTF8, nilai yang ditampilkan adalah jumlah byte dalam string, bukan jumlah karakter.

Detail
Hasil
Panjang data (dalam byte) yang terkait dengan elemen TLV saat ini, atau 0 jika elemen saat ini bukan string UTF8 atau string byte, atau jika pembaca tidak diposisikan pada elemen.

GetLengthRead

uint32_t GetLengthRead(
  void
) const 

Menampilkan jumlah total byte yang dibaca sejak pembaca diinisialisasi.

Detail
Hasil
Jumlah total byte yang dibaca sejak pembaca diinisialisasi.

GetReadPoint

const uint8_t * GetReadPoint(
  void
) const 

Mendapatkan titik di buffer input pokok yang sesuai dengan posisi pembaca saat ini.

Detail
Hasil
Pointer ke buffer input yang mendasarinya sesuai dengan posisi pembaca saat ini.

GetRemainingLength

uint32_t GetRemainingLength(
  void
) const 

Menampilkan jumlah total byte yang dapat dibaca hingga panjang baca maksimum tercapai.

Detail
Hasil
Total jumlah byte yang dapat dibaca hingga panjang baca maksimum tercapai.

GetString

WEAVE_ERROR GetString(
  char *buf,
  uint32_t bufSize
)

Dapatkan nilai elemen string UTF-1 atau byte saat ini sebagai string dengan akhiran null.

Untuk menentukan ukuran buffer input yang diperlukan, panggil metode GetLength() sebelum memanggil GetBytes(). Buffering input harus setidaknya satu byte lebih panjang dari panjang string untuk mengakomodasi karakter null.

Detail
Parameter
[in] buf
Pointer ke buffer untuk menerima data string byte.
[in] bufSize
Ukuran buffer dalam byte yang ditunjukkan dengan buf.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika elemen saat ini bukan byte TLV atau string UTF8, atau pembaca tidak diposisikan pada elemen.
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika buffer yang disediakan terlalu kecil untuk menyimpan data yang terkait dengan elemen saat ini.
WEAVE_ERROR_TLV_UNDERRUN
Jika encoding TLV yang mendasarinya berakhir sebelum waktunya.
other
Kode error platform atau Weave lainnya yang ditampilkan oleh fungsi GetNextBuffer() yang dikonfigurasi. Hanya memungkinkan jika GetNextBuffer tidak NULL.

Mendapatkan Tag

uint64_t GetTag(
  void
) const 

Menampilkan tag yang terkait dengan elemen TLV saat ini.

Nilai yang ditampilkan oleh GetTag() dapat digunakan dengan fungsi utilitas tag (IsProfileTag(), IsContextTag(), ProfileIdFromTag(), dll.) untuk menentukan jenis tag dan untuk mengekstrak berbagai nilai kolom tag.

Detail
Hasil
Bilangan bulat tanpa tanda tangan yang berisi informasi tentang tag yang terkait dengan elemen TLV saat ini.

GetType

TLVType GetType(
  void
) const 

Menampilkan jenis elemen TLV saat ini.

Detail
Hasil
Nilai TLVType yang menjelaskan jenis data elemen TLV saat ini. Jika pembaca tidak diposisikan pada elemen TLV, nilai yang ditampilkan akan menjadi kTLVType_NotSpecified.

Init

void Init(
  const TLVReader & aReader
)

Menginisialisasi objek TLVReader dari objek TLVReader lain.

Detail
Parameter
[in] aReader
Referensi hanya baca ke TLVReader untuk menginisialisasi ini.

Init

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

Menginisialisasi objek TLVReader untuk membaca dari buffer input tunggal.

Detail
Parameter
[in] data
Pointer ke buffer yang berisi data TLV yang akan diurai.
[in] dataLen
Panjang data TLV yang akan diurai.

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Menginisialisasi objek TLVReader untuk dibaca dari satu PacketBuffer.

Penguraian dimulai pada posisi awal buffer (buf->DataStart()) dan berlanjut hingga akhir data dalam buffer (seperti yang ditunjukkan oleh buf->Datalen()), atau byte maksLen telah diurai.

Detail
Parameter
[in] buf
Pointer ke PacketBuffer yang berisi data TLV yang akan diuraikan.
[in] maxLen
Maksimum byte untuk diuraikan. Defaultnya adalah jumlah data dalam buffer input.

Init

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

Menginisialisasi objek TLVReader untuk membaca dari satu atau beberapa PacketBuffers.

Penguraian dimulai pada posisi awal buffer awal (buf->DataStart()). Jika allowDiscontiguousBuffers benar, pembaca akan maju melalui rantai buffer yang ditautkan oleh pointer Next() mereka. Penguraian berlanjut hingga semua data dalam rantai buffering telah digunakan (seperti yang dilambangkan dengan buf->Datalen()), atau byte maxLen telah diurai.

Detail
Parameter
[in] buf
Pointer ke PacketBuffer yang berisi data TLV yang akan diuraikan.
[in] maxLen
Maksimum byte untuk diuraikan. Setelan default-nya adalah jumlah total data dalam rantai buffer input.
[in] allowDiscontiguousBuffers
Jika true, maju ke buffer berikutnya dalam rantai setelah semua data dalam buffer saat ini telah digunakan. Jika salah, hentikan penguraian di akhir buffer awal.

Berikutnya

WEAVE_ERROR Next(
  void
)

Meneruskan objek TLVReader ke elemen TLV berikutnya yang akan dibaca.

Metode Next() memosisikan objek pembaca pada elemen berikutnya dalam encoding TLV yang berada dalam konteks containment yang sama. Khususnya, jika pembaca diposisikan pada tingkat terluar dari encoding TLV, memanggil Next() akan memajukan pembaca ke elemen paling atas berikutnya. Jika pembaca diposisikan dalam elemen penampung TLV (struktur, array, atau jalur), memanggil Next() akan memajukan pembaca ke elemen anggota penampung berikutnya.

Karena Next() membatasi gerakan pembaca ke konteks penampung saat ini, memanggil Next() saat pembaca diposisikan pada elemen penampung akan maju melalui penampung, melewati elemen anggotanya (dan anggota penampung bertingkat) hingga mencapai elemen pertama setelah penampung.

Jika tidak ada elemen lebih lanjut dalam konteks penahanan tertentu, metode Next() akan menampilkan error WEAVE_END_OF_TLV dan posisi pembaca tidak akan berubah.

Detail
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Apakah pembaca berhasil diposisikan pada elemen baru.
WEAVE_END_OF_TLV
Jika tidak ada elemen lagi yang tersedia.
WEAVE_ERROR_TLV_UNDERRUN
Jika encoding TLV yang mendasarinya berakhir sebelum waktunya.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Jika pembaca menemukan jenis elemen TLV yang tidak valid atau tidak didukung.
WEAVE_ERROR_INVALID_TLV_TAG
Jika pembaca menemukan tag TLV dalam konteks yang tidak valid.
WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG
Jika pembaca menemukan tag TLV yang dienkode secara implisit dengan ID profil yang sesuai.
other
Kode error platform atau Weave lainnya yang ditampilkan oleh fungsi GetNextBuffer() yang dikonfigurasi. Hanya memungkinkan jika GetNextBuffer tidak NULL.

Berikutnya

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

Memajukan objek TLVReader ke elemen TLV berikutnya yang akan dibaca sehingga menegaskan jenis dan tag elemen baru.

Metode Next(TLVTypeExpectType, uint64_tExpectTag) adalah metode praktis yang memiliki perilaku yang sama seperti Next(), tetapi juga memverifikasi bahwa jenis dan tag elemen TLV baru cocok dengan argumen yang diberikan.

Detail
Parameter
[in] expectedType
Jenis data yang diharapkan untuk elemen berikutnya.
[in] expectedTag
Tag yang diharapkan untuk elemen berikutnya.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Apakah pembaca berhasil diposisikan pada elemen baru.
WEAVE_END_OF_TLV
Jika tidak ada elemen lagi yang tersedia.
WEAVE_ERROR_WRONG_TLV_TYPE
Jika jenis elemen baru tidak cocok dengan nilai argumen expectedType.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
Jika tag yang terkait dengan elemen baru tidak cocok dengan nilai argumen expectedTag.
WEAVE_ERROR_TLV_UNDERRUN
Jika encoding TLV yang mendasarinya berakhir sebelum waktunya.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Jika pembaca menemukan jenis elemen TLV yang tidak valid atau tidak didukung.
WEAVE_ERROR_INVALID_TLV_TAG
Jika pembaca menemukan tag TLV dalam konteks yang tidak valid.
other
Kode error platform atau Weave lainnya yang ditampilkan oleh fungsi GetNextBuffer() yang dikonfigurasi. Hanya memungkinkan jika GetNextBuffer tidak NULL.

Penampung Terbuka

WEAVE_ERROR OpenContainer(
  TLVReader & containerReader
)

Menginisialisasi objek TLVReader baru untuk membaca anggota elemen container TLV.

Metode OpenContainer() melakukan inisialisasi objek TLVReader baru untuk membaca elemen anggota container TLV (struktur, array, atau jalur). Saat OpenContainer() dipanggil, objek TLVReader saat ini harus diposisikan pada elemen container agar dapat dibaca. Metode ini menggunakan argumen tunggalnya sebagai referensi ke pembaca baru yang akan diinisialisasi untuk membaca penampung. Pembaca ini dikenal sebagai pembaca penampung sedangkan pembaca tempat OpenContainer() dipanggil dikenal sebagai pembaca induk.

Saat metode OpenContainer() kembali, pembaca penampung diposisikan tepat sebelum anggota pertama penampung. Memanggil Next() pada pembaca container akan maju melalui anggota koleksi hingga akhir tercapai, dan pada saat itu pembaca akan menampilkan WEAVE_END_OF_TLV.

Saat penampung pembaca terbuka, aplikasi tidak boleh melakukan panggilan atau mengubah status pembaca induk. Setelah aplikasi selesai menggunakan pembaca penampung, aplikasi harus menutupnya dengan memanggil CloseContainer() pada pembaca induk, meneruskan pembaca penampung sebagai argumen. Aplikasi dapat menutup pembaca penampung kapan saja, dengan atau tanpa membaca semua elemen yang ada dalam penampung yang mendasarinya. Setelah penampung pembaca ditutup, aplikasi dapat melanjutkan penggunaan pembaca induk.

Pembaca penampung mewarisi berbagai properti konfigurasi dari pembaca induk. Karakter pengganti ini meliputi:

  • ID profil implisit (implProfileIdId)
  • Pointer data aplikasi (AppData)
  • Pointer fungsi GetNextBuffer

Detail
Parameter
[out] containerReader
Referensi ke objek TLVReader yang akan diinisialisasi untuk membaca anggota elemen penampung saat ini. Data apa pun yang terkait dengan objek yang disediakan akan ditimpa.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika metode berhasil.
WEAVE_ERROR_INCORRECT_STATE
Jika elemen saat ini tidak diposisikan pada elemen penampung.

Lewati

WEAVE_ERROR Skip(
  void
)

Memajukan objek TLVReader tepat setelah elemen TLV saat ini.

Metode Skip() memosisikan objek pembaca tepat setelah elemen TLV saat ini, sehingga panggilan berikutnya ke Next() akan memajukan pembaca ke elemen berikut. Seperti Next(), jika pembaca diposisikan pada elemen penampung pada saat panggilan, anggota penampung akan dilewati. Jika pembaca tidak diposisikan pada elemen apa pun, posisinya tetap tidak berubah.

Detail
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Apakah pembaca berhasil diposisikan pada elemen baru.
WEAVE_END_OF_TLV
Jika tidak ada elemen lagi yang tersedia.
WEAVE_ERROR_TLV_UNDERRUN
Jika encoding TLV yang mendasarinya berakhir sebelum waktunya.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Jika pembaca menemukan jenis elemen TLV yang tidak valid atau tidak didukung.
WEAVE_ERROR_INVALID_TLV_TAG
Jika pembaca menemukan tag TLV dalam konteks yang tidak valid.
other
Kode error platform atau Weave lainnya yang ditampilkan oleh fungsi GetNextBuffer() yang dikonfigurasi. Hanya memungkinkan jika GetNextBuffer tidak NULL.

VerifikasiEndOfContainer

WEAVE_ERROR VerifyEndOfContainer(
  void
)

Memverifikasi bahwa objek TVLReader berada di akhir container TLV.

Metode VerifyEndOfContainer() memverifikasi bahwa tidak ada elemen TLV lebih lanjut untuk dibaca dalam penampung TLV saat ini. Ini adalah metode praktis yang sama dengan memanggil Next() dan memeriksa nilai yang ditampilkan WEAVE_END_OF_TLV.

Detail
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika tidak ada elemen TLV lebih lanjut untuk dibaca.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
Jika elemen TLV lain ditemukan dalam koleksi.
WEAVE_ERROR_TLV_UNDERRUN
Jika encoding TLV yang mendasarinya berakhir sebelum waktunya.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Jika pembaca menemukan jenis elemen TLV yang tidak valid atau tidak didukung.
WEAVE_ERROR_INVALID_TLV_TAG
Jika pembaca menemukan tag TLV dalam konteks yang tidak valid.
other
Kode error platform atau Weave lainnya yang ditampilkan oleh fungsi GetNextBuffer() yang dikonfigurasi. Hanya memungkinkan jika GetNextBuffer tidak NULL.

Fungsi yang dilindungi

ClearElement

void ClearElementState(
  void
)

Menghapus status TLVReader.

Metode ini digunakan untuk memosisikan pembaca sebelum TLV pertama, antara TLV atau setelah TLV terakhir.

JenisElemen

TLVElementType ElementType(
  void
) const 

Ini adalah metode pribadi yang menampilkan TLVElementType dari mControlByte.

PastikanData

WEAVE_ERROR EnsureData(
  WEAVE_ERROR noDataErr
)

GetElementHeadLength

WEAVE_ERROR GetElementHeadLength(
  uint8_t & elemHeadBytes
) const 

Ini adalah metode pribadi yang digunakan untuk menghitung panjang kepala elemen TLV.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

BacaData

WEAVE_ERROR ReadData(
  uint8_t *buf,
  uint32_t len
)

Elemen Baca

WEAVE_ERROR ReadElement(
  void
)

ReadTag

uint64_t ReadTag(
  TLVTagControl tagControl,
  const uint8_t *& p
)

SetContainerOpen

void SetContainerOpen(
  bool aContainerOpen
)

LewatiData

WEAVE_ERROR SkipData(
  void
)

Lewati data apa pun yang dimuat dalam TLV saat ini dengan membacanya tanpa buffering tujuan.

Detail
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika pembaca berhasil diposisikan di akhir data.
other
Kode error platform atau Weave lainnya yang ditampilkan oleh fungsi GetNextBuffer() yang dikonfigurasi. Hanya memungkinkan jika GetNextBuffer tidak NULL.

SkipToEndOfContainer

WEAVE_ERROR SkipToEndOfContainer(
  void
)

VerifikasiElemen

WEAVE_ERROR VerifyElement(
  void
)

Fungsi statis yang dilindungi

BufferGetNextBuffer Gagal

WEAVE_ERROR FailGetNextBuffer(
  TLVReader & reader,
  uintptr_t & bufHandle,
  const uint8_t *& bufStart,
  uint32_t & bufLen
)

GetNextPacketBuffer

WEAVE_ERROR GetNextPacketBuffer(
  TLVReader & reader,
  uintptr_t & bufHandle,
  const uint8_t *& bufStart,
  uint32_t & bufLen
)