nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
Fornisce un codificatore a elevata efficienza di memoria per la scrittura di dati in formato Weave TLV.
Riepilogo
TLVWriter implementa un codificatore di tipo flusso solo in avanti per i dati TLV Weave. Le applicazioni scrivono i dati in una codifica chiamando uno dei metodi Put() dello scrittore, passando le informazioni relative a tag e valori associate, se necessario. Analogamente, le applicazioni possono codificare i tipi di container TLV (strutture, array o percorsi) chiamando i metodi OpenContainer() o EnterContainer() dell'autore.
Un oggetto TLVWriter può scrivere dati direttamente in un buffer di output fisso o in una catena di uno o più oggetti PacketBuffer. Inoltre, le applicazioni possono fornire le proprie funzioni GetNewBuffer
e FinalizeBuffer
per indirizzare l'output a una destinazione arbitraria, ad esempio un socket o una coda di eventi.
Eredità
Sottoclassi note direttamente: nl::Weave::TLV::CircularTLVWriter
Tipi protetti |
|
---|---|
@72{
|
enum |
Tipi pubblici |
|
---|---|
FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
|
WEAVE_ERROR(* Una funzione utilizzata per eseguire la finalizzazione dell'output da un oggetto TLVWriter. |
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
|
WEAVE_ERROR(* Una funzione che fornisce nuovo spazio del buffer di output a TLVWriter. |
Attributi pubblici |
|
---|---|
AppData
|
void *
Un campo puntatore che può essere utilizzato per i dati specifici dell'applicazione.
|
FinalizeBuffer
|
Un puntatore a una funzione che verrà chiamata quando TLVWriter viene finalizzato.
|
GetNewBuffer
|
Un puntatore a una funzione che fornirà nuovo spazio del buffer di output a una TLVWriter.
|
ImplicitProfileId
|
uint32_t
L'ID profilo dei tag che devono essere codificati in forma implicita.
|
Attributi protetti |
|
---|---|
mBufHandle
|
uintptr_t
|
mBufStart
|
uint8_t *
|
mContainerType
|
|
mLenWritten
|
uint32_t
|
mMaxLen
|
uint32_t
|
mRemainingLen
|
uint32_t
|
mWritePoint
|
uint8_t *
|
Funzioni pubbliche |
|
---|---|
CloseContainer(TLVWriter & containerWriter)
|
Completa la scrittura di un container TLV dopo una chiamata a OpenContainer().
|
ContinuePutBytes(const uint8_t *buf, uint32_t len)
|
Codifica un valore di stringa di byte TLV.
|
CopyContainer(TLVReader & container)
|
|
CopyContainer(uint64_t tag, TLVReader & container)
|
Codifica un elemento container TLV da un insieme precodificato di elementi membro.
|
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
|
Codifica un elemento container TLV che contiene elementi membri di un container precodificato.
|
CopyElement(TLVReader & reader)
|
Copia un elemento TLV da un oggetto reader nell'autore.
|
CopyElement(uint64_t tag, TLVReader & reader)
|
|
EndContainer(TLVType outerContainerType)
|
Completa la codifica di un elemento container TLV.
|
Finalize(void)
|
Completa la scrittura di una codifica TLV.
|
GetContainerType(void) const
|
Restituisce il tipo di container all'interno del quale TLVWriter sta attualmente scrivendo.
|
GetLengthWritten(void)
|
uint32_t
Restituisce il numero totale di byte scritti da quando il writer è stato inizializzato.
|
Init(uint8_t *buf, uint32_t maxLen)
|
void
Inizializza un oggetto TLVWriter per scrivere in un singolo buffer di output.
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
Inizializza un oggetto TLVWriter per scrivere in un singolo PacketBuffer.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
Inizializza un oggetto TLVWriter per scrivere in uno o più PacketBuffers.
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
Inizializza un oggetto TLVWriter per scrivere in un buffer dinamico.
|
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
|
|
Put(uint64_t tag, int8_t v)
|
Codifica un valore intero con segno TLV.
|
Put(uint64_t tag, int8_t v, bool preserveSize)
|
Codifica un valore intero con segno TLV.
|
Put(uint64_t tag, int16_t v)
|
|
Put(uint64_t tag, int16_t v, bool preserveSize)
|
|
Put(uint64_t tag, int32_t v)
|
|
Put(uint64_t tag, int32_t v, bool preserveSize)
|
|
Put(uint64_t tag, int64_t v)
|
|
Put(uint64_t tag, int64_t v, bool preserveSize)
|
|
Put(uint64_t tag, uint8_t v)
|
Codifica un valore intero senza segno TLV.
|
Put(uint64_t tag, uint8_t v, bool preserveSize)
|
Codifica un valore intero senza segno TLV.
|
Put(uint64_t tag, uint16_t v)
|
|
Put(uint64_t tag, uint16_t v, bool preserveSize)
|
|
Put(uint64_t tag, uint32_t v)
|
|
Put(uint64_t tag, uint32_t v, bool preserveSize)
|
|
Put(uint64_t tag, uint64_t v)
|
|
Put(uint64_t tag, uint64_t v, bool preserveSize)
|
|
Put(uint64_t tag, float v)
|
|
Put(uint64_t tag, double v)
|
Codifica un valore con virgola mobile TLV.
|
PutBoolean(uint64_t tag, bool v)
|
Codifica un valore booleano TLV.
|
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
|
Codifica un valore di stringa di byte TLV.
|
PutNull(uint64_t tag)
|
Codifica un valore nullo TLV.
|
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
|
Codifica un elemento container TLV da un insieme precodificato di elementi membro.
|
PutString(uint64_t tag, const char *buf)
|
Codifica un valore di stringa UTF8 TLV.
|
PutString(uint64_t tag, const char *buf, uint32_t len)
|
Codifica un valore di stringa UTF8 TLV.
|
PutStringF(uint64_t tag, const char *fmt, ...)
|
Codifica l'output della stringa formattato in base al formato nell'elemento TLV.
|
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
|
Inizia la codifica di un nuovo elemento contenitore TLV.
|
StartPutBytes(uint64_t tag, uint32_t totalLen)
|
Codifica una stringa di byte TLV in più blocchi.
|
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
|
Codifica l'output della stringa formattato in base al formato nell'elemento TLV.
|
Funzioni statiche pubbliche |
|
---|---|
FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
|
Un'implementazione di una funzione FinalizeBuffer di TLVWriter per la scrittura in una catena di PacketBuffers.
|
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Un'implementazione di una funzione GetNewBuffer TLVWriter per la scrittura su un buffer dinamico.
|
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Un'implementazione di una funzione GetNewBuffer TLVWriter per la scrittura in una catena di PacketBuffers.
|
Funzioni protette |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
Determina se il container deve riservare spazio per il simbolo CloseContainer nel punto di avvio / apertura del container.
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
Specifica se il contenitore deve riservare lo spazio per il simbolo CloseContainer nel punto di avvio / apertura del contenitore.
|
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)
|
Tipi protetti
@72
@72
Tipi pubblici
FinalizeBufferFunct
WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
Una funzione utilizzata per eseguire la finalizzazione dell'output da un oggetto TLVWriter.
Funzioni di questo tipo vengono chiamate quando viene chiamato il metodo Finalize() di TLVWriter. La funzione deve eseguire qualsiasi pulizia o finalizzazione necessaria relativa all'utilizzo dell'output dell'oggetto writer. Alcuni esempi includono la registrazione della lunghezza finale della codifica o la chiusura di un descrittore di un file.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||
Valori restituiti |
|
GetNewBufferFunct
WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
Una funzione che fornisce nuovo spazio del buffer di output a TLVWriter.
Funzioni di questo tipo vengono utilizzate per preparare un nuovo spazio del buffer in cui scrivere in TLVWriter. Quando viene chiamata, la funzione dovrebbe restituire un puntatore in una posizione di memoria in cui devono essere scritti nuovi dati, insieme a una lunghezza massima associata. La funzione può fornire spazio di scrittura allocando un nuovo buffer per conservare i dati o cancellando i dati scritti in precedenza da un buffer esistente.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||
Valori restituiti |
|
Attributi pubblici
AppData
void * AppData
Un campo puntatore che può essere utilizzato per i dati specifici dell'applicazione.
FinalizeBuffer
FinalizeBufferFunct FinalizeBuffer
Un puntatore a una funzione che verrà chiamata quando TLVWriter viene finalizzato.
Un oggetto TLVWriter chiama la funzione FinalizeBuffer ogni volta che viene chiamato il metodo Finalize(). Le applicazioni possono impostare il puntatore di funzione in qualsiasi momento prima di chiamare Finalize(). Per impostazione predefinita, il puntatore è impostato su NULL, il che fa sì che il metodo Finalize() non chiami la funzione.
Per ulteriori informazioni sull'implementazione di una funzione FinalizeBuffer, consulta la definizione del tipo di FinalizeBufferFunct.
GetNewBuffer
GetNewBufferFunct GetNewBuffer
Un puntatore a una funzione che fornirà nuovo spazio del buffer di output a una TLVWriter.
Un oggetto TLVWriter chiama la funzione GetNewBuffer ogni volta che si tenta di scrivere dati che superano le dimensioni del buffer di output corrente. Se impostato su NULL (il valore predefinito), il writer restituirà un errore WEAVE_ERROR_NO_MEMORY se i dati di output superano il buffer corrente.
GetNewBuffer può essere impostato da un'applicazione in qualsiasi momento, ma in genere viene impostato quando il writer viene inizializzato.
Per ulteriori informazioni sull'implementazione di una funzione GetNewBuffer, consulta la definizione del tipo GetNewBufferFunct.
ImplicitProfileId
uint32_t ImplicitProfileId
L'ID profilo dei tag che devono essere codificati in forma implicita.
Quando a un autore viene chiesto di codificare un nuovo elemento, se l'ID profilo del tag associato al nuovo elemento corrisponde al valore del membro ImplicitProfileId
, l'autore codificherà il tag in forma implicita, omettendo durante la procedura l'ID profilo.
Per impostazione predefinita, la proprietà ImplicitProfileId
è impostata su kProfileIdNotSpecified, che indica all'autore di non emettere tag implicitamente codificati. Le applicazioni possono impostare ImplicitProfileId
in qualsiasi momento per attivare i tag di codifica in formato implicito a partire dal punto attuale della codifica. L'ID profilo appropriato da impostare solitamente dipende dal contesto dell'applicazione o del protocollo pronunciato.
Attributi protetti
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
Funzioni pubbliche
CloseContainer
WEAVE_ERROR CloseContainer( TLVWriter & containerWriter )
Completa la scrittura di un container TLV dopo una chiamata a OpenContainer().
Il metodo CloseContainer() ripristina lo stato di un oggetto TLVWriter padre dopo una chiamata a OpenContainer(). Per ogni chiamata alle applicazioni OpenContainer(), è necessario effettuare una chiamata corrispondente a CloseContainer(), passando un riferimento allo stesso writer di container a entrambi i metodi.
Quando viene restituito CloseContainer(), le applicazioni possono continuare a utilizzare l'autore principale per scrivere elementi TLV aggiuntivi che vengono visualizzati dopo l'elemento contenitore. A questo punto il writer del container fornito deve essere considerato "de-inizializzato" e non deve essere utilizzato senza una nuova inizializzazione.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
ContinuePutBytes
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
Codifica un valore di stringa di byte TLV.
Deve essere usato con StartPutBytes.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
Copia un elemento contenitore TLV dall'oggetto TLVReader.
CopyContainer() codifica un nuovo elemento container TLV copiando un elemento container precodificato che si trova nella posizione corrente di un oggetto TLVReader. Il metodo scrive l'intero elemento contenitore in una sola chiamata, copiando il tipo, il tag e gli elementi del contenitore dalla codifica di origine. Quando il metodo viene restituito, l'oggetto writer può essere utilizzato per scrivere elementi TLV aggiuntivi che seguono l'elemento contenitore.
Dettagli | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||||||
Valori restituiti |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
Codifica un elemento container TLV da un insieme precodificato di elementi membro.
Il metodo CopyContainer() codifica un nuovo elemento container TLV (una struttura, un array o un percorso) contenente un insieme di elementi membri presi da un oggetto TLVReader. Quando il metodo viene chiamato, l'oggetto reader fornito dovrebbe essere posizionato su un elemento contenitore TLV. Il container appena codificato avrà lo stesso tipo e gli stessi membri del container di input. Il tag per il nuovo contenitore è specificato come parametro di input.
Quando il metodo viene restituito, l'oggetto writer può essere utilizzato per scrivere elementi TLV aggiuntivi che seguono l'elemento contenitore.
Dettagli | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||||||
Valori restituiti |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
Codifica un elemento container TLV che contiene elementi membri di un container precodificato.
Il metodo CopyContainer() codifica un nuovo elemento contenitore TLV (una struttura, un array o un percorso) contenente un insieme di elementi membri ricavati dai contenuti di un container precodificato fornito. Quando il metodo viene richiamato, i dati nel buffer di input fornito vengono analizzati come un elemento container TLV e viene scritto un nuovo contenitore che ha lo stesso tipo e gli stessi membri del contenitore di input. Il tag per il nuovo contenitore è specificato come parametro di input.
Quando il metodo viene restituito, l'oggetto writer può essere utilizzato per scrivere elementi TLV aggiuntivi che seguono l'elemento contenitore.
Dettagli | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||||
Valori restituiti |
|
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
Copia un elemento TLV da un oggetto reader nell'autore.
Il metodo CopyElement() codifica un nuovo elemento TLV il cui tipo, tag e valore derivano da un oggetto TLVReader. Quando il metodo viene chiamato, l'oggetto reader fornito dovrebbe essere posizionato sull'elemento TLV di origine. L'elemento appena codificato avrà lo stesso tipo, tag e contenuto del contenitore di input. Se l'elemento fornito è un container TLV (struttura, array o percorso), verranno copiati l'intero contenuto del container.
Dettagli | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||||||
Valori restituiti |
|
CopyElement
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
EndContainer
WEAVE_ERROR EndContainer( TLVType outerContainerType )
Completa la codifica di un elemento container TLV.
Il metodo EndContainer() completa la codifica di un elemento container TLV e ripristina lo stato di un oggetto TLVWrite dopo una chiamata precedente a StartContainer(). Per ogni chiamata alle applicazioni StartContainer() deve effettuare una chiamata corrispondente a EndContainer(), passando il valore TLVType restituito dalla chiamata StartContainer(). Quando viene restituito EndContainer(), l'oggetto writer può essere utilizzato per scrivere elementi TLV aggiuntivi che seguono l'elemento contenitore.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
Finalizza
WEAVE_ERROR Finalize( void )
Completa la scrittura di una codifica TLV.
Il metodo Finalize() completa il processo di scrittura di una codifica TLV nel buffer di output sottostante. Il metodo deve essere chiamato dall'applicazione prima di utilizzare i contenuti del buffer. Finalize() può essere chiamato solo se non ci sono writer di container aperti per l'autore corrente. (Vedi OpenContainer()
).
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Valori restituiti |
|
GetContainerType
TLVType GetContainerType( void ) const
Restituisce il tipo di container all'interno del quale TLVWriter sta attualmente scrivendo.
Il metodo GetContainerType() restituisce il tipo di container TLV all'interno del quale TLVWriter sta attualmente scrivendo. Se TLVWriter non scrive elementi all'interno di un container (ossia, se scrive al livello più esterno di una codifica), il metodo restituisce kTLVType_NotSpecified.
Dettagli | |
---|---|
Restituisce |
Il TLVType del container corrente o kTLVType_NotSpecified se TLVWriter non sta scrivendo elementi all'interno di un container.
|
GetLengthWritten
uint32_t GetLengthWritten( void )
Restituisce il numero totale di byte scritti da quando il writer è stato inizializzato.
Dettagli | |
---|---|
Restituisce |
Numero totale di byte scritti da quando il writer è stato inizializzato.
|
Init
void Init( uint8_t *buf, uint32_t maxLen )
Init
void Init( PacketBuffer *buf, uint32_t maxLen )
Inizializza un oggetto TLVWriter per scrivere in un singolo PacketBuffer.
La scrittura inizia immediatamente dopo l'ultimo byte di dati esistenti nel buffer fornito.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
Init
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
Inizializza un oggetto TLVWriter per scrivere in uno o più PacketBuffers.
La scrittura inizia immediatamente dopo l'ultimo byte di dati esistenti nel buffer specificato. Se allowDiscontiguousBuffers
è impostato su true, altri PacketBuffer verranno allocati e concatenati al buffer fornito in base alle esigenze per contenere la quantità di dati scritti. Se il buffer di output specificato è già l'intestazione di una catena di buffer, l'output verrà scritto nei buffer successivi della catena prima che vengano allocati nuovi buffer.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
InitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
Inizializza un oggetto TLVWriter per scrivere in un buffer dinamico.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
OpenContainer
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
Inizializza un nuovo oggetto TLVWriter per scrivere i membri di un elemento container TLV.
Il metodo OpenContainer() viene utilizzato per scrivere elementi container TLV (struttura, array o percorsi) in una codifica. Il metodo prende il tipo e il tag (se presenti) del nuovo contenitore e un riferimento a un nuovo oggetto writer (l'writer del container) che verrà inizializzato per la scrittura degli elementi del container. Le applicazioni scrivono i membri del nuovo container utilizzando l'autore del container e richiamano CloseContainer() per completare la codifica del container.
Mentre il writer del container è aperto, le applicazioni non devono effettuare chiamate o alterare in altro modo lo stato del writer principale.
L'autore del container eredita varie proprietà di configurazione dal writer principale. Queste sono:
- ID profilo implicito (ImplicitProfileId)
- Il puntatore dei dati dell'applicazione (AppData)
- Puntatori delle funzioni GetNewBuffer e FinalizeBuffer
Dettagli | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||
Valori restituiti |
|
Adotta
WEAVE_ERROR Put( uint64_t tag, int8_t v )
Codifica un valore intero con segno TLV.
Si tratta di una funzione membro con sovraccarico, fornita per praticità. Differisce dalla funzione precedente solo per quali argomenti accetta.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
Adotta
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
Codifica un valore intero con segno TLV.
Si tratta di una funzione membro con sovraccarico, fornita per praticità. Differisce dalla funzione precedente solo per quali argomenti accetta.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
Adotta
WEAVE_ERROR Put( uint64_t tag, int16_t v )
Adotta
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
Adotta
WEAVE_ERROR Put( uint64_t tag, int32_t v )
Adotta
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
Adotta
WEAVE_ERROR Put( uint64_t tag, int64_t v )
Adotta
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
Adotta
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
Codifica un valore intero senza segno TLV.
Si tratta di una funzione membro con sovraccarico, fornita per praticità. Differisce dalla funzione precedente solo per quali argomenti accetta.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
Adotta
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
Codifica un valore intero senza segno TLV.
Si tratta di una funzione membro con sovraccarico, fornita per praticità. Differisce dalla funzione precedente solo per quali argomenti accetta.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
Adotta
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
Adotta
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
Adotta
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
Adotta
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
Adotta
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
Adotta
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
Adotta
WEAVE_ERROR Put( uint64_t tag, float v )
Adotta
WEAVE_ERROR Put( uint64_t tag, double v )
Codifica un valore con virgola mobile TLV.
Si tratta di una funzione membro con sovraccarico, fornita per praticità. Differisce dalla funzione precedente solo per quali argomenti accetta.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
PutBoolean
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
Codifica un valore booleano TLV.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
PutBytes
WEAVE_ERROR PutBytes( uint64_t tag, const uint8_t *buf, uint32_t len )
Codifica un valore di stringa di byte TLV.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
PutNull
WEAVE_ERROR PutNull( uint64_t tag )
Codifica un valore nullo TLV.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
PutPreEncodedContainer
WEAVE_ERROR PutPreEncodedContainer( uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen )
Codifica un elemento container TLV da un insieme precodificato di elementi membro.
Il metodo PutPreEncodedContainer() codifica un nuovo elemento container TLV (una struttura, un array o un percorso) contenente un insieme di elementi membri presi da un buffer precodificato. Il buffer di input dovrebbe contenere zero o più elementi TLV con codifica completa, con tag conformi alle regole associate al tipo di contenitore specificato (ad es. i membri della struttura devono avere tag, mentre i membri dell'array no).
Il metodo codifica l'intero elemento container in un'unica chiamata. Quando viene restituito PutPreEncodedContainer(), l'oggetto writer può essere utilizzato per scrivere elementi TLV aggiuntivi che seguono l'elemento container.
Dettagli | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||
Valori restituiti |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
Codifica un valore di stringa UTF8 TLV.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
Codifica un valore di stringa UTF8 TLV.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
Codifica l'output della stringa formattato in base al formato nell'elemento TLV.
PutStringF è un analogo di uno sprintf in cui l'output viene archiviato in un elemento TLV anziché in un buffer di caratteri. Quando è disponibile la funzionalità di stampa estesa, la funzione è in grado di restituire la stringa di risultati in uno spazio di archiviazione sottostante discontinuo. L'implementazione supporta i seguenti miglioramenti in stampa:
La piattaforma fornisce un vcbprintf
basato su callback che offre la possibilità di chiamare un callback personalizzato al posto di putchar.
La piattaforma fornisce una variante di vsnprintf
chiamata vsnprintf_ex
, che si comporta esattamente come vsnprintf, tranne per il fatto che ha delle disposizioni per omettere i primi n
caratteri dell'output.
Tieni presente che, sebbene la funzione basata su callback possa essere la più semplice e utilizzi la minor quantità di codice, la varietà di funzioni vsprintf_ex
consumerà meno stack.
Se nessuna delle opzioni precedenti è disponibile, ma la piattaforma fornisce malloc
, la funzione allocherà un buffer temporaneo per conservare l'output. Quando la piattaforma non fornisce né miglioramenti alla famiglia di stampa né al Malloc, l'output viene troncato in modo da adattarsi allo stato continuo nell'attuale spazio di archiviazione TLV.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
StartContainer
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
Inizia la codifica di un nuovo elemento contenitore TLV.
Il metodo StartContainer() viene utilizzato per scrivere elementi del container TLV (struttura, array o percorsi) in una codifica. Il metodo prende il tipo e il tag (se presenti) del nuovo contenitore e un riferimento a un valore TLVType che verrà utilizzato per salvare il contesto corrente dell'autore del testo mentre viene utilizzato per scrivere il container.
Una volta restituito il metodo StartContainer(), l'applicazione deve utilizzare l'oggetto TLVWriter corrente per scrivere gli elementi del container. Al termine, l'applicazione deve chiamare il metodo EndContainer() per terminare la codifica del container.
Dettagli | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||
Valori restituiti |
|
StartPutBytes
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
Codifica una stringa di byte TLV in più blocchi.
Deve essere usato con ContinuePutBytes.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
VPutStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
Codifica l'output della stringa formattato in base al formato nell'elemento TLV.
PutStringF è un analogo di uno sprintf in cui l'output viene archiviato in un elemento TLV anziché in un buffer di caratteri. Quando è disponibile la funzionalità di stampa estesa, la funzione è in grado di restituire la stringa di risultati in uno spazio di archiviazione sottostante discontinuo. L'implementazione supporta i seguenti miglioramenti in stampa:
La piattaforma fornisce un vcbprintf
basato su callback che offre la possibilità di chiamare un callback personalizzato al posto di putchar.
La piattaforma fornisce una variante di vsnprintf
chiamata vsnprintf_ex
, che si comporta esattamente come vsnprintf, tranne per il fatto che ha delle disposizioni per omettere i primi n
caratteri dell'output.
Tieni presente che, sebbene la funzione basata su callback possa essere la più semplice e utilizzi la minor quantità di codice, la varietà di funzioni vsprintf_ex
consumerà meno stack.
Se nessuna delle opzioni precedenti è disponibile, ma la piattaforma fornisce malloc
, la funzione allocherà un buffer temporaneo per conservare l'output. Quando la piattaforma non fornisce né miglioramenti alla famiglia di stampa né al Malloc, l'output viene troncato in modo da adattarsi allo stato continuo nell'attuale spazio di archiviazione TLV.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
Funzioni statiche pubbliche
FinalizePacketBuffer
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
Un'implementazione di una funzione FinalizeBuffer di TLVWriter per la scrittura in una catena di PacketBuffers.
La funzione FinalizePacketBuffer() esegue la finalizzazione necessaria necessaria quando si utilizza un oggetto TLVWriter per scrivere in una catena di PacketBuffers. La funzione è progettata per essere utilizzata insieme alla funzione GetNewPacketBuffer().
Per ulteriori informazioni sull'API della funzione FinalizePacketBuffer(), consulta la definizione del tipo di FinalizeBufferFunct.
GetNewBuffer_Malloced
WEAVE_ERROR GetNewBuffer_Malloced( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
Un'implementazione di una funzione GetNewBuffer TLVWriter per la scrittura su un buffer dinamico.
La funzione GetNewBuffer_Malloced() fornisce nuovo spazio di output a TLVWriter raddoppiando la dimensione del buffer dinamico sottostante per archiviare la codifica. La funzione è progettata per essere assegnata al puntatore della funzione GetNewBuffer TLVWriter.
Consulta la definizione del tipo GetNewBufferFunct per ulteriori informazioni sull'API della funzione GetNewBuffer_Malloced().
GetNewPacketBuffer
WEAVE_ERROR GetNewPacketBuffer( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
Un'implementazione di una funzione GetNewBuffer TLVWriter per la scrittura in una catena di PacketBuffers.
La funzione GetNewPacketBuffer() fornisce nuovo spazio di output a TLVWriter allocando una catena di uno o più PacketBuffers in base alle esigenze per archiviare la codifica. La funzione è progettata per essere assegnata al puntatore della funzione GetNewBuffer TLVWriter.
Tieni presente che quando utilizzi GetNewPacketBuffer con un oggetto TLVWriter, devi utilizzare anche la funzione FinalizePacketBuffer() (o una funzione equivalente) per finalizzare la catena di buffer.
Consulta la definizione del tipo GetNewBufferFunct per ulteriori informazioni sull'API della funzione GetNewPacketBuffer().
Funzioni protette
IsCloseContainerReserved
bool IsCloseContainerReserved( void ) const
Determina se il container deve riservare spazio per il simbolo CloseContainer nel punto di avvio / apertura del container.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
Specifica se il contenitore deve riservare lo spazio per il simbolo CloseContainer nel punto di avvio / apertura del contenitore.
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 )