nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
Fornisce un codificatore efficiente in termini di memoria per la scrittura di dati in formato Weave TLV.
Riepilogo
TLVWriter implementa un codificatore di tipo flusso di solo forwarding per i dati Weave TLV. Le applicazioni scrivono dati in una codifica chiamando uno dei metodi Put() dell'autore, passando le informazioni sui tag e sui valori associati in base alle esigenze. 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 dirette: nl::Weave::TLV::CircularTLVWriter
Tipi protetti |
|
---|---|
@72{
|
enum |
Tipi pubblici |
|
---|---|
FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
|
WEAVE_ERROR(* 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 di buffer di output a un TLVWriter. |
Attributi pubblici |
|
---|---|
AppData
|
void *
Un campo puntatore che può essere utilizzato per 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à un nuovo spazio di buffer di output a un TLVWriter.
|
ImplicitProfileId
|
uint32_t
L'ID profilo dei tag che deve essere codificato 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 gli elementi membro 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 contenitore 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 da scrivere in un singolo buffer di output.
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
Inizializza un oggetto TLVWriter da scrivere in un singolo PacketBuffer.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
Inizializza un oggetto TLVWriter per scrivere in uno o più PacketBuffer.
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
Inizializza un oggetto TLVWriter da 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 in 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 null 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 stringa UTF8 TLV.
|
PutString(uint64_t tag, const char *buf, uint32_t len)
|
Codifica un valore stringa UTF8 TLV.
|
PutStringF(uint64_t tag, const char *fmt, ...)
|
Codifica l'output della stringa formattato in base al formato dell'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 dell'elemento TLV.
|
Funzioni statiche pubbliche |
|
---|---|
FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
|
Un'implementazione di una funzione FinalizeBuffer 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 in 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
Stabilisci se il container deve riservare spazio per il simbolo di CloseContainer nel punto di avvio / apertura del container.
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
Consente di specificare se il contenitore deve riservare lo spazio per il simbolo di 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)
Funzione utilizzata per eseguire la finalizzazione dell'output da un oggetto TLVWriter.
Le funzioni di questo tipo vengono richiamate quando viene richiamato il metodo Finalize() di un TLVWriter. La funzione dovrebbe eseguire le operazioni di pulizia o finalizzazione necessarie per consumare l'output dell'oggetto writer. Alcuni esempi includono la registrazione della lunghezza finale della codifica o la chiusura di un descrittore di 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 di buffer di output a un TLVWriter.
Le funzioni di questo tipo vengono utilizzate per preparare un nuovo spazio di buffer in cui un TLVWriter possa scrivere. Quando viene chiamata, la funzione dovrebbe restituire un puntatore a una posizione di memoria in cui devono essere scritti nuovi dati, insieme alla lunghezza massima associata. La funzione può fornire spazio di scrittura allocando un nuovo buffer per contenere 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 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 della funzione in qualsiasi momento prima di chiamare Finalize(). Per impostazione predefinita il puntatore è impostato su NULL, perciò il metodo Finalize() rinuncia a chiamare la funzione.
Per ulteriori informazioni sull'implementazione di una funzione FinalizeBuffer, consulta la definizione del tipo FinalizeBufferFunct.
GetNewBuffer
GetNewBufferFunct GetNewBuffer
Un puntatore a una funzione che fornirà un nuovo spazio di buffer di output a un TLVWriter.
Un oggetto TLVWriter chiama la funzione GetNewBuffer ogni volta che si tenta di scrivere dati che superano le dimensioni del buffer di output attuale. Se impostato su NULL (valore predefinito), il writer restituirà un messaggio di errore WEAVE_ERROR_NO_MEMORY se i dati di uscita superano il buffer corrente.
GetNewBuffer può essere impostato da un'applicazione in qualsiasi momento, ma in genere viene impostato al momento dell'inizializzazione del writer.
Consulta la definizione del tipo GetNewBufferFunct per ulteriori informazioni sull'implementazione di una funzione GetNewBuffer.
ImplicitProfileId
uint32_t ImplicitProfileId
L'ID profilo dei tag che deve essere codificato 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 codifica il tag in forma implicita, omettendo l'ID profilo durante la procedura.
Per impostazione predefinita, la proprietà ImplicitProfileId
è impostata su kProfileIdNot specifichi, che indica all'autore di non emettere tag con codifica implicita. Le applicazioni possono impostare ImplicitProfileId
in qualsiasi momento per attivare i tag di codifica in forma implicita a partire dal punto corrente della codifica. L'ID profilo appropriato da impostare dipende solitamente 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() deve effettuare una chiamata corrispondente a CloseContainer(), passando un riferimento allo stesso writer container per entrambi i metodi.
Quando viene restituito CloseContainer(), le applicazioni possono continuare a utilizzare l'autore principale per scrivere altri elementi TLV che vengono visualizzati dopo l'elemento container. A questo punto, il writer del container fornito deve essere considerato "de-inizializzato" e non deve essere utilizzato senza reinizializzazione.
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 utilizzato con StartPutBytes.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
Copia un elemento container TLV dall'oggetto TLVReader.
Il metodo CopyContainer() codifica un nuovo elemento container TLV copiando un elemento container precodificato situato nella posizione corrente di un oggetto TLVReader. Il metodo scrive l'intero nuovo elemento contenitore in un'unica chiamata, copiando il tipo, il tag e gli elementi del contenitore dalla codifica di origine. Quando il metodo restituisce, l'oggetto writer può essere utilizzato per scrivere elementi TLV aggiuntivi che seguono l'elemento container.
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 contenitore TLV (una struttura, un array o un percorso) che contiene un insieme di elementi membri acquisiti da un oggetto TLVReader. Quando il metodo viene chiamato, l'oggetto Reader fornito dovrebbe trovarsi su un elemento container TLV. Il contenitore appena codificato avrà lo stesso tipo e gli stessi membri del contenitore di input. Il tag per il nuovo contenitore viene specificato come parametro di input.
Quando il metodo restituisce, l'oggetto writer può essere utilizzato per scrivere elementi TLV aggiuntivi che seguono l'elemento container.
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 gli elementi membro di un container precodificato.
Il metodo CopyContainer() codifica un nuovo elemento contenitore TLV (una struttura, un array o un percorso) che contiene un insieme di elementi membro presi dai contenuti di un contenitore precodificato fornito. Quando viene richiamato il metodo, i dati nel buffer di input fornito vengono analizzati come elemento container TLV, viene scritto un nuovo container che ha lo stesso tipo e gli stessi membri del contenitore di input. Il tag per il nuovo contenitore viene specificato come parametro di input.
Quando il metodo restituisce, l'oggetto writer può essere utilizzato per scrivere elementi TLV aggiuntivi che seguono l'elemento container.
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 viene richiamato il metodo, l'oggetto Reader fornito dovrebbe trovarsi sull'elemento TLV di origine. L'elemento appena codificato avrà lo stesso tipo, tag e contenuti 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 contenitore 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 restituisce 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. La funzione Finalize() può essere chiamata solo quando non ci sono autori 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 in cui TLVWriter sta attualmente scrivendo. Se TLVWriter non scrive elementi all'interno di un container (ovvero se scrive al livello più esterno di una codifica), il metodo restituisce kTLVType_NotAt.
Dettagli | |
---|---|
Restituisce |
Il TLVType del container corrente oppure kTLVType_Not specifichi se TLVWriter non scrive 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 dall'inizializzazione del writer.
|
Inizia
void Init( uint8_t *buf, uint32_t maxLen )
Inizia
void Init( PacketBuffer *buf, uint32_t maxLen )
Inizializza un oggetto TLVWriter da scrivere in un singolo PacketBuffer.
La scrittura inizia immediatamente dopo l'ultimo byte di dati esistenti nel buffer fornito.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
Inizia
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
Inizializza un oggetto TLVWriter per scrivere in uno o più PacketBuffer.
La scrittura inizia immediatamente dopo l'ultimo byte di dati esistenti nel buffer specificato. Se allowDiscontiguousBuffers
è true, verranno allocati e concatenati ulteriori PacketBuffer 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 assegnati nuovi buffer.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
InitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
Inizializza un oggetto TLVWriter da scrivere in un buffer dinamico.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
OpenContainer
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
Inizializza un nuovo oggetto TLVWriter per la scrittura dei membri di un elemento container TLV.
Il metodo OpenContainer() viene utilizzato per scrivere elementi contenitore TLV (struttura, array o percorsi) in una codifica. Il metodo prende il tipo e il tag (se presenti) del nuovo contenitore, nonché un riferimento a un nuovo oggetto writer (lo writer contenitore) che verrà inizializzato allo scopo di scrivere gli elementi del contenitore. Le applicazioni scrivono i membri del nuovo contenitore utilizzando il writer del contenitore e quindi chiamano CloseContainer() per completare la codifica del contenitore.
Quando il writer del container è aperto, le applicazioni non devono effettuare chiamate o alterare in altro modo lo stato dell'autore principale.
Il writer del contenitore eredita varie proprietà di configurazione dall'autore principale. Le tre aree sono:
- ID profilo implicito (ImplicitProfileId)
- Il puntatore ai dati dell'applicazione (VPC)
- Puntatori alle 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.
Questa è una funzione membro sovraccarico, fornita per praticità. Si differenzia dalla funzione precedente solo per gli argomenti che accetta.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
Adotta
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
Codifica un valore intero con segno TLV.
Questa è una funzione membro sovraccarico, fornita per praticità. Si differenzia dalla funzione precedente solo per gli argomenti che 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.
Questa è una funzione membro sovraccarico, fornita per praticità. Si differenzia dalla funzione precedente solo per gli argomenti che accetta.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
Adotta
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
Codifica un valore intero senza segno TLV.
Questa è una funzione membro sovraccarico, fornita per praticità. Si differenzia dalla funzione precedente solo per gli argomenti che 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 in virgola mobile TLV.
Questa è una funzione membro sovraccarico, fornita per praticità. Si differenzia dalla funzione precedente solo per gli argomenti che 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 null 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 contenitore TLV (una struttura, un array o un percorso) contenente un insieme di elementi membro acquisiti 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 esempio, i membri della struttura devono avere tag, mentre i membri dell'array no).
Il metodo codifica l'intero elemento contenitore in un'unica chiamata. Quando restituisce PutPreEncodedContainer(), l'oggetto writer può essere utilizzato per scrivere elementi TLV aggiuntivi che seguono l'elemento contenitore.
Dettagli | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||
Valori restituiti |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
Codifica un valore stringa UTF8 TLV.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
Codifica un valore 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 dell'elemento TLV.
PutStringF è un analogo di uno sprintf in cui l'output è archiviato in un elemento TLV anziché in un buffer dei caratteri. Quando è disponibile la funzionalità printf estesa, la funzione è in grado di generare la stringa risultato in uno spazio di archiviazione sottostante discontinuo. L'implementazione supporta i seguenti miglioramenti printf:
La piattaforma fornisce un vcbprintf
basato su callback che offre la possibilità di chiamare una callback personalizzata al posto del putchar.
La piattaforma fornisce una variante di vsnprintf
denominata vsnprintf_ex
, che si comporta esattamente come vsnprintf, tranne per il fatto che prevede l'omissione dei primi n
caratteri dell'output.
Tieni presente che mentre la funzione basata su callback potrebbe essere la più semplice e utilizzare la minor quantità di codice, la varietà di funzioni vsprintf_ex
consuma meno stack.
Se nessuna delle opzioni precedenti è disponibile, ma la piattaforma fornisce malloc
, la funzione allocherà un buffer temporaneo per contenere l'output. Quando la piattaforma non fornisce miglioramenti alla famiglia printf né al Malloc, l'output viene troncato in modo da rientrare nello 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 contenitore TLV (struttura, array o percorsi) in una codifica. Il metodo prende il tipo e il tag (se presenti) del nuovo contenitore, oltre a un riferimento a un valore TLVType che verrà utilizzato per salvare il contesto corrente dell'autore mentre questo 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 completare la codifica del contenitore.
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 utilizzato con ContinuePutBytes.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
Stringa VPut F
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
Codifica l'output della stringa formattato in base al formato dell'elemento TLV.
PutStringF è un analogo di uno sprintf in cui l'output è archiviato in un elemento TLV anziché in un buffer dei caratteri. Quando è disponibile la funzionalità printf estesa, la funzione è in grado di generare la stringa risultato in uno spazio di archiviazione sottostante discontinuo. L'implementazione supporta i seguenti miglioramenti printf:
La piattaforma fornisce un vcbprintf
basato su callback che offre la possibilità di chiamare una callback personalizzata al posto del putchar.
La piattaforma fornisce una variante di vsnprintf
denominata vsnprintf_ex
, che si comporta esattamente come vsnprintf, tranne per il fatto che prevede l'omissione dei primi n
caratteri dell'output.
Tieni presente che mentre la funzione basata su callback potrebbe essere la più semplice e utilizzare la minor quantità di codice, la varietà di funzioni vsprintf_ex
consuma meno stack.
Se nessuna delle opzioni precedenti è disponibile, ma la piattaforma fornisce malloc
, la funzione allocherà un buffer temporaneo per contenere l'output. Quando la piattaforma non fornisce miglioramenti alla famiglia printf né al Malloc, l'output viene troncato in modo da rientrare nello 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 TLVWriter per la scrittura in una catena di PacketBuffers.
La funzione FinalizePacketBuffer() esegue la finalizzazione necessaria quando si utilizza un TLVWriter per scrivere in una catena di PacketBuffers. La funzione è progettata per essere utilizzata in combinazione con la funzione GetNewPacketBuffer().
Consulta la definizione del tipo FinalizeBufferFunct per ulteriori informazioni sull'API della funzione FinalizePacketBuffer().
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 in un buffer dinamico.
La funzione GetNewBuffer_Malloced() fornisce nuovo spazio di output a un TLVWriter raddoppiando le dimensioni del buffer dinamico sottostante secondo necessità 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 un TLVWriter allocando una catena di uno o più PacketBuffers necessari per archiviare la codifica. La funzione è progettata per essere assegnata al puntatore della funzione GetNewBuffer TLVWriter.
Tieni presente che quando utilizzi GetNewPacketBuffer con un TLVWriter, per finalizzare la catena del buffer è necessario utilizzare anche la corrispondente funzione FinalizePacketBuffer() (o una funzione equivalente).
Consulta la definizione del tipo GetNewBufferFunct per ulteriori informazioni sull'API della funzione GetNewPacketBuffer().
Funzioni protette
IsCloseContainerReserved
bool IsCloseContainerReserved( void ) const
Stabilisci se il container deve riservare spazio per il simbolo di CloseContainer nel punto di avvio / apertura del container.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
Consente di specificare se il contenitore deve riservare lo spazio per il simbolo di 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 )