nl::Weave::TLV::TLVWriter

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

Bietet einen speichereffizienten Encoder zum Schreiben von Daten im Weave-TLV-Format.

Zusammenfassung

TLVWriter implementiert einen Forward-Stream-Encoder für Weave-TLV-Daten. Anwendungen schreiben Daten in eine Codierung, indem sie eine der Put()-Methoden des Autors aufrufen und die zugehörigen Tag- und Wertinformationen nach Bedarf übergeben. Auf ähnliche Weise können Anwendungen TLV-Containertypen (Strukturen, Arrays oder Pfade) codieren, indem sie die Methoden OpenContainer() oder EnterContainer() des Autors aufrufen.

Ein TLVWriter-Objekt kann Daten direkt in einen festen Ausgabepuffer oder in eine Kette aus einem oder mehreren PacketBuffer-Objekten schreiben. Außerdem können Anwendungen ihre eigenen GetNewBuffer- und FinalizeBuffer-Funktionen bereitstellen, um die Ausgabe an ein beliebiges Ziel weiterzuleiten, z.B. einen Socket oder eine Ereigniswarteschlange.

Übernahme

Direkte bekannte Unterklassen: nl::Weave::TLV::CircularTLVWriter

Geschützte Typen

@72{
  kEndOfContainerMarkerSize = 1
}
enum

Öffentliche Typen

FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen) WEAVE_ERROR(*
Eine Funktion, die verwendet wird, um die Ausgabe eines TLVWriter-Objekts abzuschließen.
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR(*
Eine Funktion, die einem TLVWriter neuen Ausgabepufferspeicherplatz bereitstellt.

Öffentliche Attribute

AppData
void *
Ein Zeigerfeld, das für anwendungsspezifische Daten verwendet werden kann.
FinalizeBuffer
Ein Zeiger auf eine Funktion, die beim Abschluss von TLVWriter aufgerufen wird.
GetNewBuffer
Ein Zeiger auf eine Funktion, die einem TLVWriter neuen Ausgabepufferplatz bereitstellt.
ImplicitProfileId
uint32_t
Die Profil-ID von Tags, die implizit codiert werden sollten.

Geschützte Attribute

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

Öffentliche Funktionen

CloseContainer(TLVWriter & containerWriter)
Vervollständigt das Schreiben eines TLV-Containers nach einem Aufruf von OpenContainer().
ContinuePutBytes(const uint8_t *buf, uint32_t len)
Codiert einen TLV-Bytestring-Wert.
CopyContainer(TLVReader & container)
Kopiert ein TLV-Containerelement aus dem TLVReader-Objekt.
CopyContainer(uint64_t tag, TLVReader & container)
Codiert ein TLV-Containerelement aus einer vorcodierten Gruppe von Mitgliedselementen.
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
Codiert ein TLV-Containerelement, das Mitgliedselemente aus einem vorcodierten Container enthält.
CopyElement(TLVReader & reader)
Kopiert ein TLV-Element aus einem Leseobjekt in den Writer.
CopyElement(uint64_t tag, TLVReader & reader)
EndContainer(TLVType outerContainerType)
Schließen Sie die Codierung eines TLV-Containerelements ab.
Finalize(void)
Beenden Sie das Schreiben einer TLV-Codierung.
GetContainerType(void) const
Gibt den Containertyp zurück, in dem der TLVWriter gerade schreibt.
GetLengthWritten(void)
uint32_t
Gibt die Gesamtzahl der Byte zurück, die seit der Initialisierung des Writers geschrieben wurden.
Init(uint8_t *buf, uint32_t maxLen)
void
Initialisiert ein TLVWriter-Objekt, das in einen einzelnen Ausgabepuffer geschrieben wird.
Init(PacketBuffer *buf, uint32_t maxLen)
void
Initialisiert ein TLVWriter-Objekt, um in einen einzelnen PacketBuffer zu schreiben.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Initialisiert ein TLVWriter-Objekt, um in einen oder mehrere PacketBuffers zu schreiben.
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
void
Initialisiert ein TLVWriter-Objekt, um in einen dynamischen Zwischenspeicher zu schreiben.
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
Initialisiert ein neues TLVWriter-Objekt zum Schreiben der Mitglieder eines TLV-Containerelements.
Put(uint64_t tag, int8_t v)
Codiert einen vorzeichenbehafteten TLV-Ganzzahlwert.
Put(uint64_t tag, int8_t v, bool preserveSize)
Codiert einen vorzeichenbehafteten TLV-Ganzzahlwert.
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)
Codiert einen vorzeichenlosen TLV-Ganzzahlwert.
Put(uint64_t tag, uint8_t v, bool preserveSize)
Codiert einen vorzeichenlosen TLV-Ganzzahlwert.
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)
Codiert einen TLV-Gleitkommawert.
PutBoolean(uint64_t tag, bool v)
Codiert einen booleschen TLV-Wert.
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
Codiert einen TLV-Bytestring-Wert.
PutNull(uint64_t tag)
Codiert einen TLV-Nullwert.
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
Codiert ein TLV-Containerelement aus einer vorcodierten Gruppe von Mitgliedselementen.
PutString(uint64_t tag, const char *buf)
Codiert einen TLV-UTF8-Stringwert.
PutString(uint64_t tag, const char *buf, uint32_t len)
Codiert einen TLV-UTF8-Stringwert.
PutStringF(uint64_t tag, const char *fmt, ...)
Codieren Sie die Stringausgabe entsprechend dem Format im TLV-Element.
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
Beginnt mit der Codierung eines neuen TLV-Containerelements.
StartPutBytes(uint64_t tag, uint32_t totalLen)
Codiert einen TLV-Bytestring in mehreren Blöcken.
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
Codieren Sie die Stringausgabe entsprechend dem Format im TLV-Element.

Öffentliche statische Funktionen

FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
Eine Implementierung der Funktion TLVWriter FinalizeBuffer zum Schreiben in eine Kette von PacketBuffers.
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Implementierung der Funktion TLVWriter GetNewBuffer zum Schreiben in einen dynamischen Puffer.
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Eine Implementierung der Funktion TLVWriter GetNewBuffer zum Schreiben in eine Kette von PacketBuffers.

Geschützte Funktionen

IsCloseContainerReserved(void) const
bool
Legen Sie fest, ob der Container Platz für das CloseContainer-Symbol an der Stelle reservieren soll, an der der Container gestartet bzw. geöffnet wird.
IsContainerOpen(void) const
bool
SetCloseContainerReserved(bool aCloseContainerReserved)
void
Legt fest, ob der Container am Anfang bzw. beim Öffnen des Containers Platz für das CloseContainer-Symbol reservieren soll.
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)

Geschützte Typen

@72

 @72

Öffentliche Typen

FinalizeBufferFunct

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

Eine Funktion, die verwendet wird, um die Ausgabe eines TLVWriter-Objekts abzuschließen.

Funktionen dieses Typs werden aufgerufen, wenn die Methode Finalize() eines TLVWriter aufgerufen wird. Es wird erwartet, dass die Funktion alle erforderlichen Bereinigungen oder Finalisierungen im Zusammenhang mit der Nutzung der Ausgabe des Writer-Objekts durchführt. Beispiele hierfür sind das Aufzeichnen der endgültigen Länge der Codierung oder das Schließen eines Dateideskriptors.

Details
Parameter
[in] writer
Ein Verweis auf das TLVWriter-Objekt, das finalisiert wird.
[in,out] bufHandle
Ein uintptr_t-Kontextwert, der durch vorherige Aufrufe der GetNewBuffer-Funktion festgelegt wurde.
[in,out] bufStart
Ein Zeiger zum Anfang des aktuellen (und endgültigen) Ausgabepuffers.
[in,out] bufLen
Die Anzahl der im Zwischenspeicher enthaltenen Byte, auf die durch bufStart verwiesen wird.
Rückgabewerte
WEAVE_NO_ERROR
Wenn der Abschluss erfolgreich war.
other
Andere Weave- oder plattformspezifische Fehlercodes, die darauf hinweisen, dass während der Finalisierung ein Fehler aufgetreten ist.

GetNewBufferFunct

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

Eine Funktion, die einem TLVWriter neuen Ausgabepufferspeicherplatz bereitstellt.

Funktionen dieses Typs werden verwendet, um neuen Pufferbereich vorzubereiten, in den ein TLVWriter schreiben kann. Wenn die Funktion aufgerufen wird, wird erwartet, dass sie einen Zeiger zu einer Speicherstelle zurückgibt, an der neue Daten geschrieben werden sollen, zusammen mit einer zugehörigen maximalen Länge. Die Funktion kann Schreibspeicherplatz entweder durch Zuweisen eines neuen Puffers zur Aufnahme der Daten oder durch Löschen zuvor geschriebener Daten aus einem vorhandenen Puffer bereitstellen.

Details
Parameter
[in] writer
Ein Verweis auf das TLVWriter-Objekt, das neuen Pufferbereich anfordert.
[in,out] bufHandle
Ein Verweis auf einen uintptr_t-Wert, mit dem die Funktion Kontextdaten zwischen Aufrufen speichern kann. Dieser Wert wird vor dem ersten Aufruf auf 0 initialisiert.
[in,out] bufStart
Ein Verweis auf einen Datenzeiger. Beim Einstieg in die Funktion verweist bufStart auf den Anfang des aktuellen Ausgabepuffers. Beim Verlassen wird erwartet, dass bufStart auf den Anfang des neuen Ausgabepuffers verweist. Der neue Zeigerwert kann mit dem vorherigen Wert identisch sein (z.B. wenn die Funktion die vorhandenen Daten an eine andere Stelle kopiert hat) oder auf eine völlig neue Position verweisen.
[in,out] bufLen
Ein Verweis auf eine vorzeichenlose Ganzzahl. Beim Eintragen in die Funktion enthält bufLen die Bytezahl des nicht verwendeten Speicherplatzes im aktuellen Zwischenspeicher. Beim Beenden enthält bufLen voraussichtlich die maximale Anzahl von Byte, die in den neuen Ausgabepuffer geschrieben werden können.
Rückgabewerte
WEAVE_NO_ERROR
Ob die Funktion mehr Puffer für den Autor bereitstellen konnte.
other
Andere Weave- oder plattformspezifische Fehlercodes, die auf einen Fehler hinweisen, der verhindert, dass die Funktion zusätzlichen Pufferbereich erzeugt

Öffentliche Attribute

AppData

void * AppData

Ein Zeigerfeld, das für anwendungsspezifische Daten verwendet werden kann.

FinalizeBuffer

FinalizeBufferFunct FinalizeBuffer

Ein Zeiger auf eine Funktion, die beim Abschluss von TLVWriter aufgerufen wird.

Ein TLVWriter-Objekt ruft die FinalizeBuffer-Funktion bei jedem Aufruf seiner Finalize()-Methode auf. Anwendungen können den Funktionszeiger jederzeit vor dem Aufruf von Finalize() setzen. Standardmäßig ist der Zeiger auf NULL gesetzt, wodurch die Funktion Finalize() nicht mehr aufgerufen wird.

Weitere Informationen zur Implementierung der Funktion FinalizeBuffer finden Sie in der Definition des Typs FinalizeBufferFunct.

GetNewBuffer

GetNewBufferFunct GetNewBuffer

Ein Zeiger auf eine Funktion, die einem TLVWriter neuen Ausgabepufferplatz bereitstellt.

Ein TLVWriter-Objekt ruft die GetNewBuffer-Funktion immer dann auf, wenn versucht wird, Daten zu schreiben, die die Größe des aktuellen Ausgabepuffers überschreiten. Wenn der Wert auf NULL gesetzt ist (Standardwert), gibt der Schreiber den Fehler WEAVE_ERROR_NO_MEMORY zurück, wenn die Ausgabedaten den aktuellen Puffer überlaufen.

GetNewBuffer kann jederzeit von einer Anwendung festgelegt werden, wird jedoch normalerweise bei der Initialisierung des Writers festgelegt.

Weitere Informationen zur Implementierung der GetNewBuffer-Funktion finden Sie in der Typdefinition GetNewBufferFunct.

ImplicitProfileId

uint32_t ImplicitProfileId

Die Profil-ID von Tags, die implizit codiert werden sollten.

Wenn ein Autor aufgefordert wird, ein neues Element zu codieren, und die Profil-ID des Tags, das mit dem neuen Element verknüpft ist, mit dem Wert des ImplicitProfileId-Mitglieds übereinstimmt, codiert der Autor das Tag implizit und lässt dabei die Profil-ID aus.

Standardmäßig ist die Eigenschaft ImplicitProfileId auf „kProfileIdNot Specific“ gesetzt. Dadurch wird der Autor angewiesen, keine implizit codierten Tags auszugeben. In Anwendungen kann ImplicitProfileId jederzeit festgelegt werden, um Codierungs-Tags in impliziter Form ab dem aktuellen Punkt der Codierung zu aktivieren. Die geeignete Profil-ID hängt normalerweise vom Kontext der gesprochenen Anwendung oder des gesprochenen Protokolls ab.

Geschützte Attribute

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

Öffentliche Funktionen

CloseContainer

WEAVE_ERROR CloseContainer(
  TLVWriter & containerWriter
)

Vervollständigt das Schreiben eines TLV-Containers nach einem Aufruf von OpenContainer().

Die CloseContainer()-Methode stellt den Status eines übergeordneten TLVWriter-Objekts nach einem Aufruf von OpenContainer() wieder her. Für jeden Aufruf von OpenContainer()-Anwendungen muss ein entsprechender Aufruf an CloseContainer() erfolgen. Dabei wird ein Verweis auf denselben Container-Writer an beide Methoden übergeben.

Wenn CloseContainer() zurückgegeben wird, verwenden Anwendungen möglicherweise weiterhin den übergeordneten Writer, um zusätzliche TLV-Elemente zu schreiben, die nach dem Containerelement erscheinen. Zu diesem Zeitpunkt sollte der bereitgestellte Container-Writer als "deinitialisiert" betrachtet werden und darf nicht ohne erneute Initialisierung verwendet werden.

Details
Parameter
[in] containerWriter
Ein Verweis auf das TLVWriter-Objekt, das für die OpenContainer()-Methode bereitgestellt wurde.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_INCORRECT_STATE
Der bereitgestellte Container-Writer hat nicht den richtigen Status.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn auf dem bereitgestellten Container-Writer ein anderer Container-Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn das Abschließen der Codierung des Containers die bei der Initialisierung des Writers angegebene maximale Anzahl von Byte überschreiten würde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() zurückgegeben werden.

ContinuePutBytes

WEAVE_ERROR ContinuePutBytes(
  const uint8_t *buf,
  uint32_t len
)

Codiert einen TLV-Bytestring-Wert.

Dieser sollte mit StartPutBytes verwendet werden.

Details
Parameter
[in] buf
Ein Zeiger auf einen Zwischenspeicher, der den zu codierenden Bytestring enthält.
[in] len
Die Anzahl der zu codierenden Byte.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der angegebene Tag-Wert für den Kontext, in dem er geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() zurückgegeben werden.

CopyContainer

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

Kopiert ein TLV-Containerelement aus dem TLVReader-Objekt.

CopyContainer() codiert ein neues TLV-Containerelement, indem ein vorcodiertes Containerelement kopiert wird, das sich an der aktuellen Position eines TLVReader-Objekts befindet. Die Methode schreibt das gesamte neue Containerelement in einem Aufruf und kopiert Typ, Tag und Elemente des Containers aus der Quellcodierung. Wenn die Methode zurückkehrt, kann das Writer-Objekt verwendet werden, um zusätzliche TLV-Elemente nach dem Containerelement zu schreiben.

Details
Parameter
[in] container
Ein Verweis auf ein TLVReader-Objekt, das den vorcodierten TLV-Container identifiziert, der kopiert werden soll.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_INCORRECT_STATE
Das bereitgestellte Lesegerät befindet sich nicht auf einem Containerelement.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung, die mit dem bereitgestellten Lesegerät verknüpft ist, vorzeitig beendet wird.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Wenn das bereitgestellte Lesegerät auf einen ungültigen oder nicht unterstützten TLV-Elementtyp gestoßen ist.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der bereitgestellte Reader in einem ungültigen Kontext auf ein TLV-Tag gestoßen ist oder wenn das mit dem Quellcontainer verknüpfte Tag in dem Kontext, in dem der neue Container geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() oder von der Funktion GetNextBuffer() zurückgegeben werden, die mit dem Reader-Objekt verknüpft ist.

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

Codiert ein TLV-Containerelement aus einer vorcodierten Gruppe von Mitgliedselementen.

Die CopyContainer()-Methode codiert ein neues TLV-Containerelement (eine Struktur, ein Array oder einen Pfad), das eine Reihe von Mitgliedselementen aus einem TLVReader-Objekt enthält. Beim Aufruf der Methode wird erwartet, dass sich das bereitgestellte Leseobjekt auf einem TLV-Containerelement befindet. Der neu codierte Container hat denselben Typ und dieselben Mitglieder wie der Eingabecontainer. Das Tag für den neuen Container wird als Eingabeparameter angegeben.

Wenn die Methode zurückkehrt, kann das Writer-Objekt verwendet werden, um zusätzliche TLV-Elemente nach dem Containerelement zu schreiben.

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Container codiert werden soll, oder AnonymousTag, wenn der Container ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
[in] container
Ein Verweis auf ein TLVReader-Objekt, das einen vorcodierten TLV-Container identifiziert, dessen Typ und Mitglieder kopiert werden sollen.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_INCORRECT_STATE
Das bereitgestellte Lesegerät befindet sich nicht auf einem Containerelement.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung, die mit dem bereitgestellten Lesegerät verknüpft ist, vorzeitig beendet wird.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Wenn das bereitgestellte Lesegerät auf einen ungültigen oder nicht unterstützten TLV-Elementtyp gestoßen ist.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der bereitgestellte Reader in einem ungültigen Kontext auf ein TLV-Tag gestoßen ist oder wenn das bereitgestellte Tag für den Kontext, in dem der neue Container geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() oder von der Funktion GetNextBuffer() zurückgegeben werden, die mit dem Reader-Objekt verknüpft ist.

CopyContainer

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

Codiert ein TLV-Containerelement, das Mitgliedselemente aus einem vorcodierten Container enthält.

Die Methode CopyContainer() codiert ein neues TLV-Containerelement (eine Struktur, ein Array oder einen Pfad), das eine Reihe von Elementelementen enthält, die aus dem Inhalt eines bereitgestellten vorcodierten Containers stammen. Beim Aufruf der Methode werden die Daten im bereitgestellten Eingabepuffer als TLV-Containerelement geparst und ein neuer Container geschrieben, der denselben Typ und dieselben Mitglieder wie der Eingabecontainer hat. Das Tag für den neuen Container wird als Eingabeparameter angegeben.

Wenn die Methode zurückkehrt, kann das Writer-Objekt verwendet werden, um zusätzliche TLV-Elemente nach dem Containerelement zu schreiben.

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Container codiert werden soll, oder AnonymousTag, wenn der Container ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
[in] encodedContainer
Ein Zwischenspeicher mit einem vorcodierten TLV-Container, dessen Typ und Mitglieder kopiert werden sollen.
[in] encodedContainerLen
Die Länge des vorcodierten Containers in Byte.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_TLV_UNDERRUN
Der codierte Container wurde vorzeitig beendet.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Wenn der codierte Container einen ungültigen oder nicht unterstützten TLV-Elementtyp enthielt.
WEAVE_ERROR_INVALID_TLV_TAG
Der codierte Container enthielt ein TLV-Tag in einem ungültigen Kontext oder wenn das bereitgestellte Tag für den Kontext, in dem der neue Container geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() oder von der Funktion GetNextBuffer() zurückgegeben werden, die mit dem Reader-Objekt verknüpft ist.

CopyElement

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

Kopiert ein TLV-Element aus einem Leseobjekt in den Writer.

Die CopyElement()-Methode codiert ein neues TLV-Element, dessen Typ, Tag und Wert aus einem TLVReader-Objekt stammen. Beim Aufruf der Methode wird erwartet, dass das bereitgestellte Reader-Objekt im TLV-Quellelement positioniert ist. Das neu codierte Element hat denselben Typ, dasselbe Tag und denselben Inhalt wie der Eingabecontainer. Wenn das bereitgestellte Element ein TLV-Container (Struktur, Array oder Pfad) ist, wird der gesamte Inhalt des Containers kopiert.

Details
Parameter
[in] reader
Ein Verweis auf ein TLVReader-Objekt, das ein vorcodiertes TLV-Element identifiziert, das kopiert werden soll.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_INCORRECT_STATE
Wenn das mitgelieferte Lesegerät nicht auf einem Element positioniert ist.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_TLV_UNDERRUN
Wenn die zugrunde liegende TLV-Codierung, die mit dem bereitgestellten Lesegerät verknüpft ist, vorzeitig beendet wird.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Wenn das bereitgestellte Lesegerät auf einen ungültigen oder nicht unterstützten TLV-Elementtyp gestoßen ist.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der bereitgestellte Reader in einem ungültigen Kontext auf ein TLV-Tag gestoßen ist oder wenn das bereitgestellte Tag für den Kontext, in dem der neue Container geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() oder von der Funktion GetNextBuffer() zurückgegeben werden, die mit dem Reader-Objekt verknüpft ist.

CopyElement

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

EndContainer

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

Schließen Sie die Codierung eines TLV-Containerelements ab.

Die EndContainer()-Methode schließt die Codierung eines TLV-Containerelements ab und stellt den Status eines TLVWrite-Objekts nach einem früheren Aufruf von StartContainer() wieder her. Für jeden Aufruf von StartContainer()-Anwendungen muss ein entsprechender Aufruf an EndContainer() erfolgen und der vom StartContainer()-Aufruf zurückgegebene TLVType-Wert übergeben werden. Wenn EndContainer() zurückgibt, kann das Writer-Objekt verwendet werden, um zusätzliche TLV-Elemente zu schreiben, die auf das Containerelement folgen.

Details
Parameter
[in] outerContainerType
Der TLVType-Wert, der von der StartContainer()-Methode zurückgegeben wurde.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_INCORRECT_STATE
Wenn kein entsprechender StartContainer()-Aufruf erfolgt ist.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() zurückgegeben werden.

Abschließen

WEAVE_ERROR Finalize(
  void
)

Beenden Sie das Schreiben einer TLV-Codierung.

Mit der Methode Finalize() wird das Schreiben einer TLV-Codierung in den zugrunde liegenden Ausgabepuffer abgeschlossen. Die Methode muss von der Anwendung aufgerufen werden, bevor der Inhalt des Puffers verwendet wird. Finalize() kann nur aufgerufen werden, wenn für den aktuellen Autor keine Container-Writer geöffnet sind. (siehe OpenContainer()).

Details
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Codierung erfolgreich abgeschlossen wurde.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
other
Andere Weave- oder plattformspezifische Fehler, die von der konfigurierten Funktion FinalizeBuffer() zurückgegeben werden

GetContainerType

TLVType GetContainerType(
  void
) const 

Gibt den Containertyp zurück, in dem der TLVWriter gerade schreibt.

Die GetContainerType()-Methode gibt den Typ des TLV-Containers zurück, in dem der TLVWriter gerade schreibt. Wenn der TLVWriter keine Elemente in einen Container schreibt (d.h. auf die äußerste Ebene einer Codierung), gibt die Methode "kTLVType_Not Specific" zurück.

Details
Rückgabe
Der TLVType des aktuellen Containers oder kTLVType_NotSpecific, wenn der TLVWriter keine Elemente in einen Container schreibt.

GetLengthWritten

uint32_t GetLengthWritten(
  void
)

Gibt die Gesamtzahl der Byte zurück, die seit der Initialisierung des Writers geschrieben wurden.

Details
Rückgabe
Gesamtzahl der Byte, die seit der Initialisierung des Writers geschrieben wurden.

Init

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

Initialisiert ein TLVWriter-Objekt, das in einen einzelnen Ausgabepuffer geschrieben wird.

Details
Parameter
[in] buf
Ein Zeiger auf den Zwischenspeicher, in den TLV geschrieben werden soll.
[in] maxLen
Die maximale Anzahl von Byte, die in den Ausgabepuffer geschrieben werden sollen.

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Initialisiert ein TLVWriter-Objekt, um in einen einzelnen PacketBuffer zu schreiben.

Der Schreibvorgang beginnt unmittelbar nach dem letzten Byte vorhandener Daten im bereitgestellten Zwischenspeicher.

Details
Parameter
[in] buf
Ein Zeiger auf einen PacketBuffer, in den TLV geschrieben werden soll.
[in] maxLen
Die maximale Anzahl von Byte, die in den Ausgabepuffer geschrieben werden sollen.

Init

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

Initialisiert ein TLVWriter-Objekt, um in einen oder mehrere PacketBuffers zu schreiben.

Der Schreibvorgang beginnt unmittelbar nach dem letzten Byte vorhandener Daten im angegebenen Zwischenspeicher. Wenn allowDiscontiguousBuffers „true“ ist, werden zusätzliche PacketBuffers zugewiesen und nach Bedarf mit dem bereitgestellten Zwischenspeicher verkettet, um die Menge der geschriebenen Daten aufzunehmen. Wenn der angegebene Ausgabepuffer bereits der Anfang einer Pufferkette ist, wird die Ausgabe in die nachfolgenden Puffer in der Kette geschrieben, bevor neue Puffer zugewiesen werden.

Details
Parameter
[in] buf
Ein Zeiger auf einen PacketBuffer, in den TLV-Daten geschrieben werden sollen.
[in] maxLen
Die maximale Anzahl von Byte, die in den oder die Ausgabepuffer geschrieben werden sollen.
[in] allowDiscontiguousBuffers
Wenn wahr, schreiben Sie Daten in eine Kette von PacketBuffers und weisen nach Bedarf neue Puffer zu, um die geschriebenen Daten zu speichern. Bei "false" schlägt das Schreiben mit WEAVE_ERROR_BUFFER_TOO_small fehl, wenn die geschriebenen Daten den im anfänglichen Ausgabepuffer verfügbaren Speicherplatz überschreiten.

InitMalloced

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

Initialisiert ein TLVWriter-Objekt, um in einen dynamischen Zwischenspeicher zu schreiben.

Details
Parameter
[in] buf
Ein Verweis auf einen Zeiger, der den zugewiesenen Puffer empfängt.
[in] maxLen
Die maximale Anzahl von Byte, die in den Ausgabepuffer geschrieben werden sollen.
[in] initialBufSize
Die anfängliche Anzahl von Byte, die dem Zwischenspeicher zugewiesen werden sollen.

OpenContainer

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

Initialisiert ein neues TLVWriter-Objekt zum Schreiben der Mitglieder eines TLV-Containerelements.

Die OpenContainer()-Methode wird verwendet, um TLV-Containerelemente (Struktur, Arrays oder Pfade) in eine Codierung zu schreiben. Die Methode verwendet den Typ und das Tag (falls vorhanden) des neuen Containers sowie einen Verweis auf ein neues Writer-Objekt (den Container-Writer), das initialisiert wird, um die Elemente des Containers zu schreiben. Anwendungen schreiben die Mitglieder des neuen Containers mithilfe des Container-Writers und rufen dann CloseContainer() auf, um die Containercodierung abzuschließen.

Solange der Container-Writer geöffnet ist, dürfen Anwendungen den übergeordneten Writer nicht aufrufen oder seinen Status nicht anderweitig ändern.

Der Container-Writer übernimmt verschiedene Konfigurationseigenschaften vom übergeordneten Writer. Diese sind:

  • Die implizite Profil-ID (ImplicitProfileId)
  • Anwendungsdatenzeiger (AppData)
  • Die Funktionszeiger GetNewBuffer und FinalizeBuffer

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Container codiert werden soll, oder AnonymousTag, wenn der Container ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
[in] containerType
Der Typ des zu codierenden Containers. Muss kTLVType_Structure, kTLVType_Array oder kTLVType_Path sein.
[out] containerWriter
Ein Verweis auf ein TLVWriter-Objekt, das zum Schreiben der Mitglieder des neuen Containerelements initialisiert wird. Alle mit dem angegebenen Objekt verknüpften Daten werden überschrieben.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Der für containerType angegebene Wert ist falsch.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der angegebene Tag-Wert für den Kontext, in dem er geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() zurückgegeben werden.

Best Practices

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

Codiert einen vorzeichenbehafteten TLV-Ganzzahlwert.

Dies ist eine überlastete Member-Funktion, die der Einfachheit halber dient. Sie unterscheidet sich von der obigen Funktion nur durch die akzeptierten Argumente.

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Wert codiert werden soll, oder AnonymousTag, wenn der Wert ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
[in] v
Wert, der codiert werden soll
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der angegebene Tag-Wert für den Kontext, in dem er geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() zurückgegeben werden.

Best Practices

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

Codiert einen vorzeichenbehafteten TLV-Ganzzahlwert.

Dies ist eine überlastete Member-Funktion, die der Einfachheit halber dient. Sie unterscheidet sich von der obigen Funktion nur durch die akzeptierten Argumente.

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Wert codiert werden soll, oder AnonymousTag, wenn der Wert ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
[in] v
Wert, der codiert werden soll
[in] preserveSize
True, wenn der Wert mit der gleichen Anzahl von Byte wie beim Eingabetyp codiert werden soll. Falsch, wenn der Wert in der Mindestanzahl von Byte codiert werden soll, die zur Darstellung des Werts erforderlich sind. Hinweis: In Anwendungen wird dringend empfohlen, diesen Parameter auf "false" zu setzen.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der angegebene Tag-Wert für den Kontext, in dem er geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() zurückgegeben werden.

Best Practices

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v
)

Best Practices

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

Best Practices

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v
)

Best Practices

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

Best Practices

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v
)

Best Practices

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

Best Practices

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v
)

Codiert einen vorzeichenlosen TLV-Ganzzahlwert.

Dies ist eine überlastete Member-Funktion, die der Einfachheit halber dient. Sie unterscheidet sich von der obigen Funktion nur durch die akzeptierten Argumente.

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Wert codiert werden soll, oder AnonymousTag, wenn der Wert ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
[in] v
Wert, der codiert werden soll
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der angegebene Tag-Wert für den Kontext, in dem er geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() zurückgegeben werden.

Best Practices

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

Codiert einen vorzeichenlosen TLV-Ganzzahlwert.

Dies ist eine überlastete Member-Funktion, die der Einfachheit halber dient. Sie unterscheidet sich von der obigen Funktion nur durch die akzeptierten Argumente.

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Wert codiert werden soll, oder AnonymousTag, wenn der Wert ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
[in] v
Wert, der codiert werden soll
[in] preserveSize
True, wenn der Wert mit der gleichen Anzahl von Byte wie beim Eingabetyp codiert werden soll. Falsch, wenn der Wert in der Mindestanzahl von Byte codiert werden soll, die zur Darstellung des Werts erforderlich sind. Hinweis: In Anwendungen wird dringend empfohlen, diesen Parameter auf "false" zu setzen.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der angegebene Tag-Wert für den Kontext, in dem er geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() zurückgegeben werden.

Best Practices

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v
)

Best Practices

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

Best Practices

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v
)

Best Practices

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

Best Practices

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v
)

Best Practices

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

Best Practices

WEAVE_ERROR Put(
  uint64_t tag,
  float v
)

Best Practices

WEAVE_ERROR Put(
  uint64_t tag,
  double v
)

Codiert einen TLV-Gleitkommawert.

Dies ist eine überlastete Member-Funktion, die der Einfachheit halber dient. Sie unterscheidet sich von der obigen Funktion nur durch die akzeptierten Argumente.

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Wert codiert werden soll, oder AnonymousTag, wenn der Wert ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
[in] v
Wert, der codiert werden soll
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der angegebene Tag-Wert für den Kontext, in dem er geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() zurückgegeben werden.

PutBoolean

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

Codiert einen booleschen TLV-Wert.

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Wert codiert werden soll, oder AnonymousTag, wenn der Wert ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
[in] v
Wert, der codiert werden soll
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der angegebene Tag-Wert für den Kontext, in dem er geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() zurückgegeben werden.

PutBytes

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

Codiert einen TLV-Bytestring-Wert.

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Wert codiert werden soll, oder AnonymousTag, wenn der Wert ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
[in] buf
Ein Zeiger auf einen Zwischenspeicher, der den zu codierenden Bytestring enthält.
[in] len
Die Anzahl der zu codierenden Byte.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der angegebene Tag-Wert für den Kontext, in dem er geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() zurückgegeben werden.

PutNull

WEAVE_ERROR PutNull(
  uint64_t tag
)

Codiert einen TLV-Nullwert.

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Wert codiert werden soll, oder AnonymousTag, wenn der Wert ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der angegebene Tag-Wert für den Kontext, in dem er geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() zurückgegeben werden.

PutPreEncodedContainer

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

Codiert ein TLV-Containerelement aus einer vorcodierten Gruppe von Mitgliedselementen.

Die Methode PutPreEncodedContainer() codiert ein neues TLV-Containerelement (eine Struktur, ein Array oder einen Pfad), das eine Reihe von Mitgliederelementen aus einem vorcodierten Zwischenspeicher enthält. Der Eingabezwischenspeicher sollte null oder mehr vollständig codierte TLV-Elemente mit Tags enthalten, die den Regeln für den angegebenen Containertyp entsprechen (z.B. müssen Strukturmitglieder Tags haben, Array-Mitglieder nicht).

Die Methode codiert das gesamte Containerelement in einem Aufruf. Wenn PutPreEncodedContainer() zurückgibt, kann das Schreibobjekt verwendet werden, um zusätzliche TLV-Elemente zu schreiben, die auf das Containerelement folgen.

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Container codiert werden soll, oder AnonymousTag, wenn der Container ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
[in] containerType
Der Typ des zu codierenden Containers. Muss kTLVType_Structure, kTLVType_Array oder kTLVType_Path sein.
[in] data
Ein Zeiger auf einen Zwischenspeicher, der keine oder mehr codierten TLV-Elemente enthält, die Mitglieder des neuen Containers werden.
[in] dataLen
Die Anzahl der Byte im Zwischenspeicher data.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Der für containerType angegebene Wert ist falsch.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der angegebene Tag-Wert für den Kontext, in dem er geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() zurückgegeben werden.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

Codiert einen TLV-UTF8-Stringwert.

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Wert codiert werden soll, oder AnonymousTag, wenn der Wert ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
[in] buf
Ein Zeiger auf den mit Null beendeten UTF-8-String, der codiert werden soll.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der angegebene Tag-Wert für den Kontext, in dem er geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() zurückgegeben werden.

PutString

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

Codiert einen TLV-UTF8-Stringwert.

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Wert codiert werden soll, oder AnonymousTag, wenn der Wert ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
[in] buf
Ein Zeiger auf den zu codierenden UTF-8-String.
[in] len
Die Länge des Strings, der codiert werden soll (in Byte).
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der angegebene Tag-Wert für den Kontext, in dem er geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() zurückgegeben werden.

PutStringF

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

Codieren Sie die Stringausgabe entsprechend dem Format im TLV-Element.

„PutStringF“ ist ein Analog zu einer „sprintf“, bei der die Ausgabe in einem TLV-Element und nicht in einem Zeichenzwischenspeicher gespeichert wird. Wenn die erweiterte printf-Funktionalität verfügbar ist, kann die Funktion den Ergebnisstring an einen nicht zusammenhängenden zugrunde liegenden Speicher ausgeben. Die Implementierung unterstützt die folgenden printf-Verbesserungen:

Die Plattform stellt eine Callback-basierte vcbprintf bereit, die die Möglichkeit bietet, einen benutzerdefinierten Callback anstelle von „putchar“ aufzurufen.

Die Plattform stellt eine Variante von vsnprintf mit dem Namen vsnprintf_ex bereit, die sich genauso verhält wie vsnprintf, nur dass die ersten n-Zeichen der Ausgabe fehlen können.

Beachten Sie, dass die Callback-basierte Funktion zwar die einfachste Funktion ist und am wenigsten Code verwendet, die Funktion vsprintf_ex verbraucht jedoch weniger Stack.

Wenn keine der oben genannten Optionen verfügbar ist, die Plattform aber malloc bereitstellt, weist die Funktion einen temporären Puffer für die Ausgabe zu. Wenn die Plattform weder Verbesserungen für die printf-Familie noch für Malloc bereitstellt, wird die Ausgabe abgeschnitten, damit sie in den kontinuierlichen Zustand in den aktuellen TLV-Speicher passt.

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Wert codiert werden soll, oder AnonymousTag, wenn der Wert ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
[in] fmt
Der Formatstring, der zum Formatieren der Argumentliste verwendet wird. Folgt derselben Syntax und denselben Regeln wie der Formatstring für die printf-Funktionsfamilie.
[in] ...
Eine Liste von Argumenten, die im Ausgabewert gemäß fmt.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
other
Wenn zugrunde liegende Aufrufe der TLVWriter-Methoden WriteElementHead oder GetNewBuffer fehlgeschlagen sind, wird der Fehler sofort nach oben im Aufrufstack weitergeleitet.

StartContainer

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

Beginnt mit der Codierung eines neuen TLV-Containerelements.

Die Methode StartContainer() wird verwendet, um TLV-Containerelemente (Struktur, Arrays oder Pfade) in eine Codierung zu schreiben. Die Methode verwendet den Typ und das Tag (falls vorhanden) des neuen Containers sowie einen Verweis auf einen TLVType -Wert, mit dem der aktuelle Kontext des Writers gespeichert wird, während er zum Schreiben des Containers verwendet wird.

Sobald die Methode StartContainer() zurückgegeben wird, sollte die Anwendung das aktuelle TLVWriter-Objekt verwenden, um die Elemente des Containers zu schreiben. Anschließend muss die Anwendung die Methode EndContainer() aufrufen, um die Codierung des Containers abzuschließen.

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Container codiert werden soll, oder AnonymousTag, wenn der Container ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
[in] containerType
Der Typ des zu codierenden Containers. Muss kTLVType_Structure, kTLVType_Array oder kTLVType_Path sein.
[out] outerContainerType
Ein Verweis auf einen TLVType-Wert, der den Kontext des Autors empfängt.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_WRONG_TLV_TYPE
Der für containerType angegebene Wert ist falsch.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der angegebene Tag-Wert für den Kontext, in dem er geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() zurückgegeben werden.

StartPutBytes

WEAVE_ERROR StartPutBytes(
  uint64_t tag,
  uint32_t totalLen
)

Codiert einen TLV-Bytestring in mehreren Blöcken.

Dies sollte mit „ContinuePutBytes“ verwendet werden.

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Wert codiert werden soll, oder AnonymousTag, wenn der Wert ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
[in] totalLen
Die Gesamtzahl der zu codierenden Byte.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Wenn ein Container-Autor auf dem aktuellen Writer geöffnet und noch nicht geschlossen wurde.
WEAVE_ERROR_INVALID_TLV_TAG
Wenn der angegebene Tag-Wert für den Kontext, in dem er geschrieben wird, ungültig oder unangemessen ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn beim Schreiben der Wert das Limit für die maximale Anzahl von Byte überschreiten würde, die bei der Initialisierung des Schreibers angegeben wurde.
WEAVE_ERROR_NO_MEMORY
Wenn der Versuch, einen Ausgabepuffer zuzuweisen, aufgrund von Arbeitsspeichermangel fehlgeschlagen ist.
other
Andere Weave- oder plattformspezifische Fehler, die von den konfigurierten Funktionen GetNewBuffer() oder FinalizeBuffer() zurückgegeben werden.

VPutStringF

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

Codieren Sie die Stringausgabe entsprechend dem Format im TLV-Element.

„PutStringF“ ist ein Analog zu einer „sprintf“, bei der die Ausgabe in einem TLV-Element und nicht in einem Zeichenzwischenspeicher gespeichert wird. Wenn die erweiterte printf-Funktionalität verfügbar ist, kann die Funktion den Ergebnisstring an einen nicht zusammenhängenden zugrunde liegenden Speicher ausgeben. Die Implementierung unterstützt die folgenden printf-Verbesserungen:

Die Plattform stellt eine Callback-basierte vcbprintf bereit, die die Möglichkeit bietet, einen benutzerdefinierten Callback anstelle von „putchar“ aufzurufen.

Die Plattform stellt eine Variante von vsnprintf mit dem Namen vsnprintf_ex bereit, die sich genauso verhält wie vsnprintf, nur dass die ersten n-Zeichen der Ausgabe fehlen können.

Beachten Sie, dass die Callback-basierte Funktion zwar die einfachste Funktion ist und am wenigsten Code verwendet, die Funktion vsprintf_ex verbraucht jedoch weniger Stack.

Wenn keine der oben genannten Optionen verfügbar ist, die Plattform aber malloc bereitstellt, weist die Funktion einen temporären Puffer für die Ausgabe zu. Wenn die Plattform weder Verbesserungen für die printf-Familie noch für Malloc bereitstellt, wird die Ausgabe abgeschnitten, damit sie in den kontinuierlichen Zustand in den aktuellen TLV-Speicher passt.

Details
Parameter
[in] tag
Das TLV-Tag, das mit dem Wert codiert werden soll, oder AnonymousTag, wenn der Wert ohne Tag codiert werden soll. Tag-Werte sollten mit einer der Tag-Definitionsfunktionen ProfileTag(), ContextTag() oder CommonTag() erstellt werden.
[in] fmt
Der Formatstring, der zum Formatieren der Argumentliste verwendet wird. Folgt derselben Syntax und denselben Regeln wie der Formatstring für die printf-Funktionsfamilie.
[in] ap
Eine Liste von Argumenten, die im Ausgabewert gemäß fmt.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
other
Wenn zugrunde liegende Aufrufe der TLVWriter-Methoden WriteElementHead oder GetNewBuffer fehlgeschlagen sind, wird der Fehler sofort nach oben im Aufrufstack weitergeleitet.

Öffentliche statische Funktionen

FinalizePacketBuffer

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

Eine Implementierung der Funktion TLVWriter FinalizeBuffer zum Schreiben in eine Kette von PacketBuffers.

Die Funktion FinalizePacketBuffer() führt die erforderliche Finalisierung aus, die erforderlich ist, wenn ein TLVWriter verwendet wird, um in eine Kette von PacketBuffers zu schreiben. Die Funktion ist zur Verwendung in Verbindung mit der Funktion GetNewPacketBuffer() vorgesehen.

Weitere Informationen zur API der Funktion FinalizePacketBuffer() finden Sie in der Definition des Typs „FinalizeBufferFunct“.

GetNewBuffer_Malloced

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

Implementierung der Funktion TLVWriter GetNewBuffer zum Schreiben in einen dynamischen Puffer.

Die Funktion GetNewBuffer_Malloced() liefert neuen Ausgaberaum für einen TLVWriter, indem sie die Größe des zugrunde liegenden dynamischen Puffers nach Bedarf verdoppelt, um die Codierung zu speichern. Die Funktion sollte dem Funktionszeiger TLVWriter GetNewBuffer zugewiesen werden.

Weitere Informationen zur API der Funktion GetNewBuffer_Malloced() finden Sie in der Typdefinition GetNewBufferFunct.

GetNewPacketBuffer

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

Eine Implementierung der Funktion TLVWriter GetNewBuffer zum Schreiben in eine Kette von PacketBuffers.

Die Funktion GetNewPacketBuffer() stellt einem TLVWriter neuen Ausgaberaum bereit, indem sie nach Bedarf eine Kette aus einem oder mehreren PacketBuffers zur Speicherung der Codierung zuweist. Die Funktion sollte dem Funktionszeiger TLVWriter GetNewBuffer zugewiesen werden.

Hinweis: Wenn Sie GetNewPacketBuffer mit einem TLVWriter verwenden, sollte auch die entsprechende FinalizePacketBuffer()-Funktion (oder eine Entsprechung) verwendet werden, um die Pufferkette abzuschließen.

Weitere Informationen zur API der Funktion GetNewPacketBuffer() finden Sie in der Typdefinition "GetNewBufferFunct".

Geschützte Funktionen

IsCloseContainerReserved

bool IsCloseContainerReserved(
  void
) const 

Legen Sie fest, ob der Container Platz für das CloseContainer-Symbol an der Stelle reservieren soll, an der der Container gestartet bzw. geöffnet wird.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

SetCloseContainerReserved

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

Legt fest, ob der Container am Anfang bzw. beim Öffnen des Containers Platz für das CloseContainer-Symbol reservieren soll.

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
)