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{
  kEndOfContainerMarkerSize = 1
}
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)
Copia un elemento container TLV dall'oggetto TLVReader.
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)
Inizializza un nuovo oggetto TLVWriter per scrivere i membri di un elemento container TLV.
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
[in] writer
Un riferimento all'oggetto TLVWriter che è in fase di finalizzazione.
[in,out] bufHandle
Un valore di contesto uintptr_t impostato dalle chiamate precedenti alla funzione GetNewBuffer.
[in,out] bufStart
Un puntatore all'inizio del buffer di output corrente (e finale).
[in,out] bufLen
Il numero di byte contenuti nel buffer a cui si riferisce bufStart.
Valori di ritorno
WEAVE_NO_ERROR
Se la revisione è andata a buon fine.
other
Altri codici di errore Weave o specifici della piattaforma che indicano che si è verificato un errore durante la finalizzazione.

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
[in] writer
Un riferimento all'oggetto TLVWriter che richiede un nuovo spazio di buffer.
[in,out] bufHandle
Un riferimento a un valore uintptr_t che la funzione può utilizzare per memorizzare dati di contesto tra le chiamate. Questo valore è inizializzato da 0 prima della prima chiamata.
[in,out] bufStart
Un riferimento a un puntatore dei dati. Alla voce della funzione, bufStart indirizza l'inizio del buffer di output corrente. All'uscita, bufStart dovrebbe puntare all'inizio del nuovo buffer di output. Il nuovo valore del puntatore può coincidere con il valore precedente (ad esempio, se la funzione ha copiato altrove i dati esistenti) oppure può rimandare a una posizione completamente nuova.
[in,out] bufLen
Un riferimento a un numero intero senza firma. Alla voce della funzione, bufLen contiene il numero di byte di spazio non utilizzato nel buffer corrente. All'uscita, bufLen dovrebbe contenere il numero massimo di byte che è possibile scrivere nel buffer di output.
Valori di ritorno
WEAVE_NO_ERROR
Se la funzione è stata in grado di fornire più spazio di archiviazione per l'autore.
other
Altri codici di errore Weave o specifici della piattaforma che indicano che si è verificato un errore che impedisce alla funzione di produrre spazio di buffer aggiuntivo.

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
[in] containerWriter
Un riferimento all'oggetto TLVWriter che è stato fornito al metodo OpenContainer().
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_INCORRECT_STATE
Se l'autore del container fornito non è nello stato corretto.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se nell'autore fornito è stato aperto un altro writer e non è stato ancora chiuso.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se completassi la codifica del container, il limite supera il numero massimo di byte specificati quando l'autore è stato inizializzato.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o piattaforma restituiti dalle funzioni GetNewBuffer() o FinalizeBuffer() configurate.

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
[in] buf
Un puntatore a un buffer contenente la stringa di byte da codificare.
[in] len
Il numero di byte da codificare.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_INVALID_TLV_TAG
Se il valore specificato del tag non è valido o inappropriato nel contesto in cui viene scritto il valore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o piattaforma restituiti dalle funzioni GetNewBuffer() o FinalizeBuffer() configurate.

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
[in] container
Un riferimento a un oggetto TLVReader che identifica il contenitore precodificato TLV da copiare.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_INCORRECT_STATE
Se il lettore fornito non è posizionato su un elemento del contenitore.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_TLV_UNDERRUN
Se la codifica di base TLV associata al lettore fornito termina prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Se il lettore fornito ha rilevato un tipo di elemento TLV non valido o non supportato.
WEAVE_ERROR_INVALID_TLV_TAG
Se il lettore fornito ha rilevato un tag TLV in un contesto non valido oppure se il tag associato al contenitore di origine non è valido o inappropriato nel contesto in cui è stato scritto il nuovo contenitore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o della piattaforma restituiti dalle funzioni configurate GetNewBuffer() o FinalizeBuffer() o dalla funzione GetNextBuffer() associata all'oggetto lettore.

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
[in] tag
Il tag TLV da codificare con il contenitore o AnonymousTag se il contenitore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
[in] container
Un riferimento a un oggetto TLVReader che identifica un contenitore precodificato TLV il cui tipo e i membri devono essere copiati.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_INCORRECT_STATE
Se il lettore fornito non è posizionato su un elemento del contenitore.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_TLV_UNDERRUN
Se la codifica di base TLV associata al lettore fornito termina prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Se il lettore fornito ha rilevato un tipo di elemento TLV non valido o non supportato.
WEAVE_ERROR_INVALID_TLV_TAG
Se il lettore fornito ha riscontrato un tag TLV in un contesto non valido o se il tag fornito non è valido o inappropriato nel contesto in cui è stato scritto il nuovo contenitore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o della piattaforma restituiti dalle funzioni configurate GetNewBuffer() o FinalizeBuffer() o dalla funzione GetNextBuffer() associata all'oggetto lettore.

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
[in] tag
Il tag TLV da codificare con il contenitore o AnonymousTag se il contenitore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
[in] encodedContainer
Un buffer contenente un container TLV precodificato il cui tipo e i relativi membri devono essere copiati.
[in] encodedContainerLen
La lunghezza in byte del contenitore precodificato.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_TLV_UNDERRUN
Se il container codificato è terminato prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Se il contenitore codificato conteneva un tipo di elemento TLV non valido o non supportato.
WEAVE_ERROR_INVALID_TLV_TAG
Se il contenitore codificato conteneva un tag TLV in un contesto non valido oppure se il tag fornito non è valido o non appropriato nel contesto in cui viene scritto il nuovo contenitore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o della piattaforma restituiti dalle funzioni configurate GetNewBuffer() o FinalizeBuffer() o dalla funzione GetNextBuffer() associata all'oggetto lettore.

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
[in] reader
Un riferimento a un oggetto TLVReader che identifica un elemento TLV precodificato che deve essere copiato.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_INCORRECT_STATE
Se il lettore fornito non è posizionato su un elemento.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_TLV_UNDERRUN
Se la codifica di base TLV associata al lettore fornito termina prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Se il lettore fornito ha rilevato un tipo di elemento TLV non valido o non supportato.
WEAVE_ERROR_INVALID_TLV_TAG
Se il lettore fornito ha riscontrato un tag TLV in un contesto non valido o se il tag fornito non è valido o inappropriato nel contesto in cui è stato scritto il nuovo contenitore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o della piattaforma restituiti dalle funzioni configurate GetNewBuffer() o FinalizeBuffer() o dalla funzione GetNextBuffer() associata all'oggetto lettore.

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
[in] outerContainerType
Il valore TLVType restituito dal metodo StartContainer().
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_INCORRECT_STATE
Se non è stata effettuata una chiamata StartContainer() corrispondente.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o piattaforma restituiti dalle funzioni GetNewBuffer() o FinalizeBuffer() configurate.

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
WEAVE_NO_ERROR
Se la codifica è stata finalizzata correttamente.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
other
Altri errori specifici di Weave o di piattaforma restituiti dalla funzione FinalizeBuffer() configurata.

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
)

Inizializza un oggetto TLVWriter per scrivere in un singolo buffer di output.

Dettagli
Parametri
[in] buf
Un puntatore al buffer in cui deve essere scritto TLV.
[in] maxLen
Il numero massimo di byte da scrivere nel buffer di output.

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
[in] buf
Un puntatore a un PacketBuffer in cui deve essere scritto TLV.
[in] maxLen
Il numero massimo di byte da scrivere nel buffer di output.

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
[in] buf
Un puntatore a un PacketBuffer in cui devono essere scritti i dati TLV.
[in] maxLen
Il numero massimo di byte da scrivere nel buffer di output.
[in] allowDiscontiguousBuffers
Se il valore è true, scrivi i dati in una catena di PacketBuffers, allocando nuovi buffer necessari per archiviare i dati scritti. Se il valore è false, la scrittura non riuscirà con WEAVE_ERROR_BUFFER_TOO_small se i dati scritti superano lo spazio disponibile nel buffer di output iniziale.

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
[in] buf
Un riferimento a un puntatore che riceverà il buffer allocato.
[in] maxLen
Il numero massimo di byte da scrivere nel buffer di output.
[in] initialBufSize
Numero iniziale di byte da allocare al buffer.

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
[in] tag
Il tag TLV da codificare con il contenitore o AnonymousTag se il contenitore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
[in] containerType
Il tipo di container da codificare. Deve essere uno tra kTLVType_Structure, kTLVType_Array o kTLVType_Path.
[out] containerWriter
Un riferimento a un oggetto TLVWriter che verrà inizializzato per scrivere i membri del nuovo elemento container. Tutti i dati associati all'oggetto fornito vengono sovrascritti.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_WRONG_TLV_TYPE
Se il valore specificato per containerType non è corretto.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_INVALID_TLV_TAG
Se il valore specificato del tag non è valido o inappropriato nel contesto in cui viene scritto il valore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o piattaforma restituiti dalle funzioni GetNewBuffer() o FinalizeBuffer() configurate.

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
[in] tag
Il tag TLV da codificare con il valore o AnonymousTag se il valore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
[in] v
Il valore da codificare.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_INVALID_TLV_TAG
Se il valore specificato del tag non è valido o inappropriato nel contesto in cui viene scritto il valore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o piattaforma restituiti dalle funzioni GetNewBuffer() o FinalizeBuffer() configurate.

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
[in] tag
Il tag TLV da codificare con il valore o AnonymousTag se il valore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
[in] v
Il valore da codificare.
[in] preserveSize
True se il valore deve essere codificato nello stesso numero di byte del tipo di input. Falso se il valore deve essere codificato nel numero minimo di byte necessari per rappresentare il valore. Nota: si consiglia vivamente di impostare questo parametro su false.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_INVALID_TLV_TAG
Se il valore specificato del tag non è valido o inappropriato nel contesto in cui viene scritto il valore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o piattaforma restituiti dalle funzioni GetNewBuffer() o FinalizeBuffer() configurate.

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
[in] tag
Il tag TLV da codificare con il valore o AnonymousTag se il valore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
[in] v
Il valore da codificare.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_INVALID_TLV_TAG
Se il valore specificato del tag non è valido o inappropriato nel contesto in cui viene scritto il valore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o piattaforma restituiti dalle funzioni GetNewBuffer() o FinalizeBuffer() configurate.

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
[in] tag
Il tag TLV da codificare con il valore o AnonymousTag se il valore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
[in] v
Il valore da codificare.
[in] preserveSize
True se il valore deve essere codificato nello stesso numero di byte del tipo di input. Falso se il valore deve essere codificato nel numero minimo di byte necessari per rappresentare il valore. Nota: si consiglia vivamente di impostare questo parametro su false.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_INVALID_TLV_TAG
Se il valore specificato del tag non è valido o inappropriato nel contesto in cui viene scritto il valore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o piattaforma restituiti dalle funzioni GetNewBuffer() o FinalizeBuffer() configurate.

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
[in] tag
Il tag TLV da codificare con il valore o AnonymousTag se il valore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
[in] v
Il valore da codificare.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_INVALID_TLV_TAG
Se il valore specificato del tag non è valido o inappropriato nel contesto in cui viene scritto il valore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o piattaforma restituiti dalle funzioni GetNewBuffer() o FinalizeBuffer() configurate.

Metti booleano

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

Codifica un valore booleano TLV.

Dettagli
Parametri
[in] tag
Il tag TLV da codificare con il valore o AnonymousTag se il valore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
[in] v
Il valore da codificare.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_INVALID_TLV_TAG
Se il valore specificato del tag non è valido o inappropriato nel contesto in cui viene scritto il valore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o piattaforma restituiti dalle funzioni GetNewBuffer() o FinalizeBuffer() configurate.

PutByte

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

Codifica un valore stringa di byte TLV.

Dettagli
Parametri
[in] tag
Il tag TLV da codificare con il valore o AnonymousTag se il valore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
[in] buf
Un puntatore a un buffer contenente la stringa di byte da codificare.
[in] len
Il numero di byte da codificare.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_INVALID_TLV_TAG
Se il valore specificato del tag non è valido o inappropriato nel contesto in cui viene scritto il valore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o piattaforma restituiti dalle funzioni GetNewBuffer() o FinalizeBuffer() configurate.

Inserisci null

WEAVE_ERROR PutNull(
  uint64_t tag
)

Codifica un valore null TLV.

Dettagli
Parametri
[in] tag
Il tag TLV da codificare con il valore o AnonymousTag se il valore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_INVALID_TLV_TAG
Se il valore specificato del tag non è valido o inappropriato nel contesto in cui viene scritto il valore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o piattaforma restituiti dalle funzioni GetNewBuffer() o FinalizeBuffer() configurate.

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
[in] tag
Il tag TLV da codificare con il contenitore o AnonymousTag se il contenitore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
[in] containerType
Il tipo di container da codificare. Deve essere uno tra kTLVType_Structure, kTLVType_Array o kTLVType_Path.
[in] data
Un puntatore a un buffer che contiene zero di più elementi TLV codificati che diventeranno membri del nuovo container.
[in] dataLen
Il numero di byte nel buffer data.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_WRONG_TLV_TYPE
Se il valore specificato per containerType non è corretto.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_INVALID_TLV_TAG
Se il valore specificato del tag non è valido o inappropriato nel contesto in cui viene scritto il valore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o piattaforma restituiti dalle funzioni GetNewBuffer() o FinalizeBuffer() configurate.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

Codifica un valore stringa UTF8 TLV.

Dettagli
Parametri
[in] tag
Il tag TLV da codificare con il valore o AnonymousTag se il valore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
[in] buf
Un puntatore sulla stringa UTF-8 con terminazione nulla da codificare.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_INVALID_TLV_TAG
Se il valore specificato del tag non è valido o inappropriato nel contesto in cui viene scritto il valore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o piattaforma restituiti dalle funzioni GetNewBuffer() o FinalizeBuffer() configurate.

PutString

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

Codifica un valore stringa UTF8 TLV.

Dettagli
Parametri
[in] tag
Il tag TLV da codificare con il valore o AnonymousTag se il valore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
[in] buf
Un puntatore sulla stringa UTF-8 da codificare.
[in] len
La lunghezza (in byte) della stringa da codificare.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_INVALID_TLV_TAG
Se il valore specificato del tag non è valido o inappropriato nel contesto in cui viene scritto il valore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o piattaforma restituiti dalle funzioni GetNewBuffer() o FinalizeBuffer() configurate.

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
[in] tag
Il tag TLV da codificare con il valore o AnonymousTag se il valore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
[in] fmt
La stringa di formato utilizzata per formattare l'elenco di argomenti. Segue la stessa sintassi e le stesse regole della stringa di formato per la famiglia di funzioni printf.
[in] ...
Un elenco di argomenti da formattare nel valore di output in base a fmt.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
other
Se le chiamate sottostanti ai metodi TLVWriter WriteElementHead o GetNewBuffer non sono riuscite, il loro errore viene inoltrato immediatamente allo stack di chiamate.

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
[in] tag
Il tag TLV da codificare con il contenitore o AnonymousTag se il contenitore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
[in] containerType
Il tipo di container da codificare. Deve essere uno tra kTLVType_Structure, kTLVType_Array o kTLVType_Path.
[out] outerContainerType
Un riferimento a un valore TLVType che riceverà il contesto dell'autore.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_WRONG_TLV_TYPE
Se il valore specificato per containerType non è corretto.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_INVALID_TLV_TAG
Se il valore specificato del tag non è valido o inappropriato nel contesto in cui viene scritto il valore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o piattaforma restituiti dalle funzioni GetNewBuffer() o FinalizeBuffer() configurate.

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
[in] tag
Il tag TLV da codificare con il valore o AnonymousTag se il valore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
[in] totalLen
Il numero totale di byte da codificare.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se un writer contenitore è stato aperto sull'autore corrente e non ancora chiuso.
WEAVE_ERROR_INVALID_TLV_TAG
Se il valore specificato del tag non è valido o inappropriato nel contesto in cui viene scritto il valore.
WEAVE_ERROR_BUFFER_TOO_SMALL
In questo modo, il valore non verrebbe superato dal numero massimo di byte specificato al momento dell'inizializzazione dell'autore.
WEAVE_ERROR_NO_MEMORY
Se un tentativo di allocazione di un buffer di output non è riuscito a causa della memoria insufficiente.
other
Altri errori specifici di Weave o piattaforma restituiti dalle funzioni GetNewBuffer() o FinalizeBuffer() configurate.

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
[in] tag
Il tag TLV da codificare con il valore o AnonymousTag se il valore deve essere codificato senza tag. I valori tag devono essere creati con una delle funzioni di definizione dei tag ProfileTag(), ContextTag() o CommonTag().
[in] fmt
La stringa di formato utilizzata per formattare l'elenco di argomenti. Segue la stessa sintassi e le stesse regole della stringa di formato per la famiglia di funzioni printf.
[in] ap
Un elenco di argomenti da formattare nel valore di output in base a fmt.
Valori di ritorno
WEAVE_NO_ERROR
Se il metodo ha esito positivo.
other
Se le chiamate sottostanti ai metodi TLVWriter WriteElementHead o GetNewBuffer non sono riuscite, il loro errore viene inoltrato immediatamente allo stack di chiamate.

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
)