nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
Offre un codificatore con memoria efficiente per la scrittura dei dati nel formato TLV Weave.
Riepilogo
TLVWriter implementa un codificatore in stile flusso in avanti per dati TLV di Weave. Le applicazioni scrivono dati in una codifica richiamando uno dei metodi Put() dell'autore, passando le informazioni associate a tag e valore secondo necessità. Analogamente, le applicazioni possono codificare i tipi di container TLV (strutture, array o percorsi) chiamando i metodi OpenContainer() o Invio di Writer().
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 finalizzare l'output da un oggetto TLVWriter. |
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
|
WEAVE_ERROR(*) Una funzione che fornisce un 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à richiamata quando TLVWriter è 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 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 contenitore TLV dopo una chiamata a OpenContainer().
|
ContinuePutBytes(const uint8_t *buf, uint32_t len)
|
Codifica un valore stringa di byte TLV.
|
CopyContainer(TLVReader & container)
|
|
CopyContainer(uint64_t tag, TLVReader & container)
|
Codifica un elemento container TLV da un insieme precodificato di elementi membri.
|
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
|
Codifica un elemento container TLV contenente gli elementi membri di un contenitore precodificato.
|
CopyElement(TLVReader & reader)
|
Copia un elemento TLV da un oggetto lettore 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 in cui TLVWriter è attualmente in scrittura.
|
GetLengthWritten(void)
|
uint32_t
Restituisce il numero totale di byte scritti da quando l'autore è 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 firma TLV.
|
Put(uint64_t tag, int8_t v, bool preserveSize)
|
Codifica un valore intero con firma 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 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 membri.
|
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 nell'elemento TLV.
|
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
|
Inizia la codifica di un nuovo elemento container 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 pubbliche pubbliche |
|
---|---|
FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
|
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)
|
Implementazione di una funzione GetNewBuffer TLVWriter per scrivere in un buffer dinamico.
|
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Implementazione di una funzione GetNewBuffer TLVWriter per scrivere in una catena di PacketBuffers.
|
Funzioni protette |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
Determina se il container deve riservare spazio per il simbolo CloseContainer nel punto in cui viene avviato o aperto il container.
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
Consente di stabilire se il container deve riservare lo spazio per il simbolo CloseContainer nel punto in cui è stato avviato o aperto il container.
|
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 finalizzare l'output da un oggetto TLVWriter.
Le funzioni di questo tipo vengono chiamate quando viene richiamato il metodo Finalize() di TLVWriter. Si prevede che la funzione esegua la pulizia o la finalizzazione necessarie in relazione al consumo dell'output dell'oggetto writer. Ad esempio, puoi registrare la lunghezza finale della codifica o chiudere un descrittore di file.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||
Valori di ritorno |
|
GetNewBufferFunct
WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
Una funzione che fornisce un 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 può scrivere. Quando viene richiamata, la funzione deve restituire un puntatore in una posizione di memoria in cui devono essere scritti i nuovi dati, insieme a una 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 di ritorno |
|
Attributi pubblici
Spazio dei nomi
void * AppData
Un campo puntatore che può essere utilizzato per dati specifici dell'applicazione.
Finalizza
FinalizeBufferFunct FinalizeBuffer
Un puntatore a una funzione che verrà richiamata quando TLVWriter è finalizzato.
Un oggetto TLVWriter chiama la funzione FinalizeBuffer ogni volta che viene richiamato 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, fa sì che il metodo Finalize() rinunci alla chiamata della funzione.
Per ulteriori informazioni sull'implementazione di una funzione FinalizeBuffer, vedi 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 quando viene eseguito un tentativo di scrittura di dati che superano le dimensioni del buffer di output corrente. Se viene impostato su NULL (valore predefinito), l'autore restituisce un 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 al momento dell'inizializzazione dell'autore.
Consulta la definizione del tipo GetNewBufferFunct per ulteriori informazioni sull'implementazione di una funzione GetNewBuffer.
ID profilo implicito
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
, il tag codifica il tag in forma implicita, omettendo l'ID profilo nel processo.
Per impostazione predefinita, la proprietà ImplicitProfileId
è impostata su kProfileIdNotSpecify, 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 forma implicita a partire dal punto corrente della codifica. L'ID profilo appropriato da impostare dipende in genere dal contesto dell'applicazione o del protocollo utilizzato.
Attributi protetti
Manipolazione portatile
uintptr_t mBufHandle
mBufStart
uint8_t * mBufStart
Tipo ContainerM
TLVType mContainerType
Scritto dal vivo
uint32_t mLenWritten
MaxLen
uint32_t mMaxLen
Rimanente
uint32_t mRemainingLen
mWritePoint
uint8_t * mWritePoint
Funzioni pubbliche
ChiudiContainer
WEAVE_ERROR CloseContainer( TLVWriter & containerWriter )
Completa la scrittura di un contenitore TLV dopo una chiamata a OpenContainer().
Il metodo CloseContainer() ripristina lo stato di un oggetto TLVWriter principale dopo una chiamata a OpenContainer(). Per ogni chiamata alle applicazioni OpenContainer() deve effettuare una chiamata corrispondente a CloseContainer(), trasmettendo un riferimento allo stesso writer di container a entrambi i metodi.
Quando viene restituito CloseContainer(), le applicazioni possono continuare a utilizzare l'elemento di scrittura principale per scrivere elementi TLV aggiuntivi che compaiono dopo l'elemento container. A questo punto, l'autore del container fornito deve essere preso in considerazione 'de-initialized' non deve essere utilizzato senza inizializzazione.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori di ritorno |
|
ContinuaPutByte
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
Codifica un valore stringa di byte TLV.
Dovrebbe essere usato con StartPutBytes.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori di ritorno |
|
Copia contenitore
WEAVE_ERROR CopyContainer( TLVReader & container )
Copia un elemento container TLV dall'oggetto TLVReader.
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 elemento nuovo del contenitore in una 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 ulteriori elementi TLV dopo l'elemento container.
Dettagli | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||||||
Valori di ritorno |
|
Copia contenitore
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
Codifica un elemento container TLV da un insieme precodificato di elementi membri.
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 TLVReader Quando il metodo viene chiamato, l'oggetto lettore fornito deve essere posizionato su un elemento contenitore 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 ulteriori elementi TLV dopo l'elemento container.
Dettagli | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||||||
Valori di ritorno |
|
Copia contenitore
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
Codifica un elemento container TLV contenente gli elementi membri di un contenitore precodificato.
Il metodo CopyContainer() codifica un nuovo elemento container TLV (una struttura, un array o un percorso) contenente un insieme di elementi membri recuperati dai contenuti di un contenitore precodificato fornito. Quando il metodo viene chiamato, i dati nel buffer di input fornito vengono analizzati come un elemento TLV e viene scritto un nuovo container che ha lo stesso tipo e gli stessi membri del container 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 ulteriori elementi TLV dopo l'elemento container.
Dettagli | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||||
Valori di ritorno |
|
Copiaelemento
WEAVE_ERROR CopyElement( TLVReader & reader )
Copia un elemento TLV da un oggetto lettore nell'autore.
Il metodo CopyElement() codifica un nuovo elemento TLV il cui tipo, tag e valore proviene da un oggetto TLVReader. Quando il metodo viene chiamato, l'oggetto lettore fornito deve essere posizionato 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 contenitore TLV (struttura, array o percorso), vengono copiati l'intero contenuto del contenitore.
Dettagli | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||||||
Valori di ritorno |
|
Copiaelemento
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
Contenitore finale
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(), trasmettendo 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 container.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori di ritorno |
|
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 che utilizzi i contenuti del buffer. La funzione Finalize() può essere chiamata solo quando non ci sono writer di container aperti per l'writer corrente. (vedi OpenContainer()
).
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Valori di ritorno |
|
GetContainerType
TLVType GetContainerType( void ) const
Restituisce il tipo di container in cui TLVWriter è attualmente in scrittura.
Il metodo GetContainerType() restituisce il tipo di container TLV in cui al momento è scritto in TLVWriter. Se TLVWriter non scrive elementi all'interno di un container (ad esempio se scrivi al livello più esterno di una codifica), il metodo restituisce kTLVType_NotSpecify.
Dettagli | |
---|---|
Restituisce |
Il valore di TLVType del contenitore corrente o kTLVType_NotSpecify se TLVWriter non scrive elementi all'interno di un contenitore.
|
GetLengthWrite
uint32_t GetLengthWritten( void )
Restituisce il numero totale di byte scritti da quando l'autore è stato inizializzato.
Dettagli | |
---|---|
Restituisce |
Il numero totale di byte scritti dall'inizializzazione dell'autore.
|
Iniziale
void Init( uint8_t *buf, uint32_t maxLen )
Iniziale
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 esistente nel buffer fornito.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
Iniziale
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 esistente nel buffer specificato. Se allowDiscontiguousBuffers
è true, verranno aggiunti ulteriori pacchetti di PacketBuffer e concatenati al buffer fornito secondo la necessità, per accogliere 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 dell'assegnazione di nuovi buffer.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
Init malloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
Inizializza un oggetto TLVWriter per scrivere in un buffer dinamico.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
Contenitore aperto
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 del container TLV (struttura, array o percorsi) in una codifica. Il metodo prevede il tipo e il tag (se presenti) del nuovo contenitore e un riferimento a un nuovo oggetto writer (container writer) che verrà inizializzato per la scrittura degli elementi del container. Le applicazioni scrivono i membri del nuovo container utilizzando l'writer di container, quindi chiamano CloseContainer() per completare la codifica del contenitore.
Quando l'autore del container è aperto, le applicazioni non devono effettuare chiamate sullo stato dell'autore principale o modificarlo in altro modo.
L'autore del contenitore eredita le varie proprietà di configurazione dall'autore principale. Gli URL in questione sono:
- ID profilo implicito (ImplicitProfileId)
- Il puntatore dei dati dell'applicazione (AppData)
- Puntatori della funzione GetNewBuffer e FinalizeBuffer
Dettagli | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||
Valori di ritorno |
|
Put
WEAVE_ERROR Put( uint64_t tag, int8_t v )
Codifica un valore intero con firma TLV.
Questa è una funzione membro sovraccarica, fornita per praticità. La funzione di cui sopra differisce solo per gli argomenti accettati.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori di ritorno |
|
Put
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
Codifica un valore intero con firma TLV.
Questa è una funzione membro sovraccarica, fornita per praticità. La funzione di cui sopra differisce solo per gli argomenti accettati.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori di ritorno |
|
Put
WEAVE_ERROR Put( uint64_t tag, int16_t v )
Put
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, int32_t v )
Put
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, int64_t v )
Put
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
Codifica un valore intero senza segno TLV.
Questa è una funzione membro sovraccarica, fornita per praticità. La funzione di cui sopra differisce solo per gli argomenti accettati.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori di ritorno |
|
Put
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
Codifica un valore intero senza segno TLV.
Questa è una funzione membro sovraccarica, fornita per praticità. La funzione di cui sopra differisce solo per gli argomenti accettati.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori di ritorno |
|
Put
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
Put
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
Put
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
Put
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, float v )
Put
WEAVE_ERROR Put( uint64_t tag, double v )
Codifica un valore in virgola mobile TLV.
Questa è una funzione membro sovraccarica, fornita per praticità. La funzione di cui sopra differisce solo per gli argomenti accettati.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori di ritorno |
|
Metti booleano
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
Codifica un valore booleano TLV.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori di ritorno |
|
PutByte
WEAVE_ERROR PutBytes( uint64_t tag, const uint8_t *buf, uint32_t len )
Codifica un valore stringa di byte TLV.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori di ritorno |
|
Inserisci null
WEAVE_ERROR PutNull( uint64_t tag )
Codifica un valore null TLV.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori di ritorno |
|
ContainerPrePreEncoded
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 membri.
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 pre-codificato. Il buffer di input dovrebbe contenere zero o più elementi TLV con codifica completa, con tag conformi alle regole associate ai tipi di container specificati (ad esempio, i membri della struttura devono avere tag, al contrario dei membri dell'array).
Il metodo codifica l'intero elemento del container in una sola chiamata. Quando viene restituito PutPreEncodedContainer(), l'oggetto writer può essere utilizzato per scrivere elementi TLV aggiuntivi dopo l'elemento container.
Dettagli | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||
Valori di ritorno |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
Codifica un valore stringa UTF8 TLV.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori di ritorno |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
Codifica un valore stringa UTF8 TLV.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori di ritorno |
|
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 analogico 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 generare la stringa di risultati in uno spazio di archiviazione sottostante discontinuo. L'implementazione supporta i seguenti miglioramenti dell'edizione cartacea:
La piattaforma fornisce un vcbprintf
basato su callback che consente 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, salvo che prevede delle omissioni dei primi n
caratteri dell'output.
Tieni presente che, mentre la funzione basata su callback può essere la più semplice e utilizzare la quantità di codice minima, la varietà di funzioni vsprintf_ex
consuma meno stack.
Se nessuna delle opzioni precedenti è disponibile, ma la piattaforma fornisce malloc
, la funzione alloca un buffer temporaneo per contenere l'output. Quando la piattaforma non offre miglioramenti né alla famiglia della versione stampata né al centro commerciale, l'output viene troncato in modo da adattarsi allo stato continuo dell'archiviazione TLV corrente.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori di ritorno |
|
StartContainer
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
Inizia la codifica di un nuovo elemento container TLV.
Il metodo StartContainer() viene utilizzato per scrivere elementi container TLV (struttura, array o percorsi) in una codifica. Il metodo prevede 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 durante l'utilizzo per la scrittura del container.
Una volta restituito il metodo StartContainer(), l'applicazione deve utilizzare l'oggetto TLVWriter corrente per scrivere gli elementi del contenitore. Al termine, l'applicazione deve chiamare il metodo EndContainer() per completare la codifica del contenitore.
Dettagli | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||
Valori di ritorno |
|
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 di ritorno |
|
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 analogico 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 generare la stringa di risultati in uno spazio di archiviazione sottostante discontinuo. L'implementazione supporta i seguenti miglioramenti dell'edizione cartacea:
La piattaforma fornisce un vcbprintf
basato su callback che consente 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, salvo che prevede delle omissioni dei primi n
caratteri dell'output.
Tieni presente che, mentre la funzione basata su callback può essere la più semplice e utilizzare la quantità di codice minima, la varietà di funzioni vsprintf_ex
consuma meno stack.
Se nessuna delle opzioni precedenti è disponibile, ma la piattaforma fornisce malloc
, la funzione alloca un buffer temporaneo per contenere l'output. Quando la piattaforma non offre miglioramenti né alla famiglia della versione stampata né al centro commerciale, l'output viene troncato in modo da adattarsi allo stato continuo dell'archiviazione TLV corrente.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori di ritorno |
|
Funzioni pubbliche pubbliche
FinalizePacketBuffer
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
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 è stata progettata per essere utilizzata insieme alla funzione GetNewPacketBuffer().
Per ulteriori informazioni sull'API della funzione FinalizePacketBuffer(), consulta la definizione del tipo FinalizeBufferFunct.
GetNewBuffer_Malloced
WEAVE_ERROR GetNewBuffer_Malloced( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
Implementazione di una funzione GetNewBuffer TLVWriter per scrivere 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 di 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 )
Implementazione di una funzione GetNewBuffer TLVWriter per scrivere in una catena di PacketBuffers.
La funzione GetNewPacketBuffer() fornisce nuovo spazio di output a un TLVWriter allocando una catena di uno o più PacketBuffers secondo necessità per archiviare la codifica. La funzione è progettata per essere assegnata al puntatore della funzione GetNewBuffer di TLVWriter.
Tieni presente che quando utilizzi GetNewPacketBuffer con un TLVWriter, devi finalizzare la funzione FinalizePacketBuffer() corrispondente (o equivalente) per finalizzare la catena di buffer.
Consulta la definizione del tipo GetNewBufferFunct per ulteriori informazioni sull'API della funzione GetNewPacketBuffer().
Funzioni protette
IsCloseContainerPrenotato
bool IsCloseContainerReserved( void ) const
Determina se il container deve riservare spazio per il simbolo CloseContainer nel punto in cui viene avviato o aperto il container.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerPrenotato
void SetCloseContainerReserved( bool aCloseContainerReserved )
Consente di stabilire se il container deve riservare lo spazio per il simbolo CloseContainer nel punto in cui è stato avviato o aperto il container.
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 )