nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
Fournit un encodeur économe en mémoire pour écrire des données au format TLV Weave.
Résumé
TLVWriter implémente un encodeur en mode flux simple pour les données TLV Weave. Les applications écrivent des données dans un encodage en appelant l'une des méthodes Put() du rédacteur, en transmettant les informations de balise et de valeur associées si nécessaire. De même, les applications peuvent encoder des types de conteneurs TLV (structures, tableaux ou chemins) en appelant les méthodes OpenContainer() ou EnterContainer() du rédacteur.
Un objet TLVWriter peut écrire des données directement dans un tampon de sortie fixe ou dans une chaîne d'un ou plusieurs objets PacketBuffer. De plus, les applications peuvent fournir leurs propres fonctions GetNewBuffer
et FinalizeBuffer
pour diriger la sortie vers une destination arbitraire, par exemple un socket ou une file d'attente d'événements.
Héritage
Sous-classes directes connues: nl::Weave::TLV::CircularTLVWriter
Types protégés |
|
---|---|
@72{
|
énum |
Types publics |
|
---|---|
FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
|
WEAVE_ERROR(* Fonction utilisée pour finaliser le résultat d'un objet TLVWriter. |
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
|
WEAVE_ERROR(* Fonction qui fournit un nouvel espace de tampon de sortie à un TLVWriter |
Attributs publics |
|
---|---|
AppData
|
void *
Champ de pointeur pouvant être utilisé pour des données spécifiques à une application.
|
FinalizeBuffer
|
Pointeur vers une fonction qui sera appelée une fois la fonction TLVWriter finalisée.
|
GetNewBuffer
|
Pointeur vers une fonction qui fournira un nouvel espace de tampon de sortie à TLVWriter.
|
ImplicitProfileId
|
uint32_t
ID de profil des tags devant être encodés de manière implicite.
|
Attributs protégés |
|
---|---|
mBufHandle
|
uintptr_t
|
mBufStart
|
uint8_t *
|
mContainerType
|
|
mLenWritten
|
uint32_t
|
mMaxLen
|
uint32_t
|
mRemainingLen
|
uint32_t
|
mWritePoint
|
uint8_t *
|
Fonctions publiques |
|
---|---|
CloseContainer(TLVWriter & containerWriter)
|
Complète l'écriture d'un conteneur TLV après un appel à OpenContainer().
|
ContinuePutBytes(const uint8_t *buf, uint32_t len)
|
Encode une valeur de chaîne d'octets TLV.
|
CopyContainer(TLVReader & container)
|
|
CopyContainer(uint64_t tag, TLVReader & container)
|
Encode un élément de conteneur TLV à partir d'un ensemble d'éléments membres pré-codés.
|
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
|
Elle encode un élément de conteneur TLV contenant les éléments membres d'un conteneur précodé.
|
CopyElement(TLVReader & reader)
|
Copie un élément TLV d'un objet lecteur dans l'éditeur.
|
CopyElement(uint64_t tag, TLVReader & reader)
|
|
EndContainer(TLVType outerContainerType)
|
Complète l'encodage d'un élément de conteneur TLV.
|
Finalize(void)
|
Terminez l'écriture d'un encodage TLV.
|
GetContainerType(void) const
|
Renvoie le type de conteneur dans lequel la fonction TLVWriter écrit actuellement.
|
GetLengthWritten(void)
|
uint32_t
Renvoie le nombre total d'octets écrits depuis l'initialisation du rédacteur.
|
Init(uint8_t *buf, uint32_t maxLen)
|
void
Elle initialise un objet TLVWriter à écrire dans un seul tampon de sortie.
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
Initialise un objet TLVWriter à écrire dans un seul PacketBuffer.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
Elle initialise un objet TLVWriter à écrire dans un ou plusieurs PacketBuffers.
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
Elle initialise un objet TLVWriter à écrire dans un tampon dynamique.
|
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
|
|
Put(uint64_t tag, int8_t v)
|
Encode une valeur entière signée TLV.
|
Put(uint64_t tag, int8_t v, bool preserveSize)
|
Encode une valeur entière signée 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)
|
Encode une valeur entière non signée TLV.
|
Put(uint64_t tag, uint8_t v, bool preserveSize)
|
Encode une valeur entière non signée 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)
|
Encode une valeur à virgule flottante TLV.
|
PutBoolean(uint64_t tag, bool v)
|
Encode une valeur booléenne TLV.
|
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
|
Encode une valeur de chaîne d'octets TLV.
|
PutNull(uint64_t tag)
|
Encode une valeur nulle TLV.
|
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
|
Encode un élément de conteneur TLV à partir d'un ensemble d'éléments membres pré-codés.
|
PutString(uint64_t tag, const char *buf)
|
Encode une valeur de chaîne UTF8 TLV.
|
PutString(uint64_t tag, const char *buf, uint32_t len)
|
Encode une valeur de chaîne UTF8 TLV.
|
PutStringF(uint64_t tag, const char *fmt, ...)
|
Encodez la sortie de chaîne formatée conformément au format de l'élément TLV.
|
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
|
Commence à encoder un nouvel élément de conteneur TLV.
|
StartPutBytes(uint64_t tag, uint32_t totalLen)
|
Encode une chaîne d'octets TLV en plusieurs fragments.
|
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
|
Encodez la sortie de chaîne formatée conformément au format de l'élément TLV.
|
Fonctions statiques publiques |
|
---|---|
FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
|
Implémentation d'une fonction FinalizeBuffer TLVWriter permettant d'écrire dans une chaîne de PacketBuffers.
|
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Implémentation d'une fonction GetNewBuffer TLVWriter pour écrire dans un tampon dynamique.
|
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Implémentation d'une fonction GetNewBuffer TLVWriter pour écrire dans une chaîne de PacketBuffers.
|
Fonctions protégées |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
Déterminez si le conteneur doit réserver de l'espace pour le symbole CloseContainer au point de démarrage ou d'ouverture du conteneur.
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
Indiquez si le conteneur doit réserver de l'espace pour le symbole CloseContainer au début ou à l'ouverture du conteneur.
|
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)
|
Types protégés
@72
@72
Types publics
FinalizeBufferFunct
WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
Fonction utilisée pour finaliser le résultat d'un objet TLVWriter.
Les fonctions de ce type sont appelées lorsque la méthode Finalize() d'un TLVWriter est appelée. La fonction doit effectuer tous les nettoyages ou finals nécessaires liés à la consommation de la sortie de l'objet writer. Il peut s'agir, par exemple, de l'enregistrement de la longueur finale de l'encodage ou de la fermeture d'un descripteur de fichier.
Détails | |||||||||
---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||
Valeurs renvoyées |
|
GetNewBufferFunct
WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
Fonction qui fournit un nouvel espace de tampon de sortie à un TLVWriter
Les fonctions de ce type permettent de préparer un nouvel espace tampon dans lequel TLVWriter pourra écrire. Lorsqu'elle est appelée, la fonction doit renvoyer un pointeur vers un emplacement de mémoire où de nouvelles données doivent être écrites, avec une longueur maximale associée. La fonction peut fournir un espace d'écriture soit en allouant un nouveau tampon pour stocker les données, soit en effaçant les données précédemment écrites d'un tampon existant.
Détails | |||||||||
---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||
Valeurs renvoyées |
|
Attributs publics
AppData
void * AppData
Champ de pointeur pouvant être utilisé pour des données spécifiques à une application.
FinalizeBuffer
FinalizeBufferFunct FinalizeBuffer
Pointeur vers une fonction qui sera appelée une fois la fonction TLVWriter finalisée.
Un objet TLVWriter appelle la fonction FinalizeBuffer chaque fois que sa méthode Finalize() est appelée. Les applications peuvent définir le pointeur de fonction à tout moment avant d'appeler Finalize(). Par défaut, le pointeur est défini sur NULL, ce qui oblige la méthode Finalize() à renoncer à appeler la fonction.
Pour en savoir plus sur l'implémentation d'une fonction FinalizeBuffer, consultez la définition du type FinalizeBufferFunct.
GetNewBuffer
GetNewBufferFunct GetNewBuffer
Pointeur vers une fonction qui fournira un nouvel espace de tampon de sortie à TLVWriter.
Un objet TLVWriter appelle la fonction GetNewBuffer chaque fois qu'une tentative d'écriture de données dépasse la taille du tampon de sortie actuel. S'il est défini sur NULL (valeur par défaut), le rédacteur renvoie une erreur WEAVE_ERROR_NO_MEMORY si les données de sortie dépassent le tampon actuel.
GetNewBuffer peut être défini à tout moment par une application, mais il est généralement défini lorsque le rédacteur est initialisé.
Consultez la définition du type GetNewBufferFunct pour en savoir plus sur l'implémentation d'une fonction GetNewBuffer.
ImplicitProfileId
uint32_t ImplicitProfileId
ID de profil des tags devant être encodés de manière implicite.
Lorsqu'un rédacteur est invité à encoder un nouvel élément, si l'ID de profil de la balise associée au nouvel élément correspond à la valeur du membre ImplicitProfileId
, il encode la balise sous forme implicite, en omettant l'ID de profil lors du processus.
Par défaut, la propriété ImplicitProfileId
est définie sur kProfileIdNotSpecification, ce qui indique au rédacteur de ne pas émettre de balises encodées implicitement. Les applications peuvent définir ImplicitProfileId
à tout moment pour activer les balises d'encodage sous forme implicite à partir du point actuel de l'encodage. L'ID de profil à définir dépend généralement du contexte de l'application ou du protocole parlé.
Attributs protégés
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
Fonctions publiques
CloseContainer
WEAVE_ERROR CloseContainer( TLVWriter & containerWriter )
Complète l'écriture d'un conteneur TLV après un appel à OpenContainer().
La méthode CloseContainer() restaure l'état d'un objet TLVWriter parent après un appel à OpenContainer(). Pour chaque appel à OpenContainer(), les applications doivent effectuer un appel correspondant à CloseContainer(), en transmettant une référence au même rédacteur de conteneur aux deux méthodes.
Lorsque CloseContainer() est renvoyé, les applications peuvent continuer à utiliser le rédacteur parent pour écrire des éléments TLV supplémentaires qui apparaissent après l'élément conteneur. À ce stade, le rédacteur de conteneur fourni doit être considéré comme "désinitialisé". et ne doit pas être utilisée sans réinitialisation.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs renvoyées |
|
ContinuePutBytes
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
Encode une valeur de chaîne d'octets TLV.
Il doit être utilisé avec StartPutBytes.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs renvoyées |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
Il copie un élément de conteneur TLV à partir d'un objet TLVReader.
CopyContainer() encode un nouvel élément de conteneur TLV en copiant un élément de conteneur précodé situé à la position actuelle d'un objet TLVReader. La méthode écrit l'intégralité du nouvel élément de conteneur dans un seul appel, en copiant le type, la balise et les éléments du conteneur à partir de l'encodage source. Lorsque la méthode est renvoyée, l'objet writer peut être utilisé pour écrire des éléments TLV supplémentaires après l'élément conteneur.
Détails | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||||||||
Valeurs renvoyées |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
Encode un élément de conteneur TLV à partir d'un ensemble d'éléments membres pré-codés.
La méthode CopyContainer() encode un nouvel élément de conteneur TLV (structure, tableau ou chemin d'accès) contenant un ensemble d'éléments membres issus d'un objet TLVReader. Lorsque la méthode est appelée, l'objet lecteur fourni doit être positionné sur un élément de conteneur TLV. Le conteneur nouvellement encodé possède le même type et les mêmes membres que le conteneur d'entrée. La balise du nouveau conteneur est spécifiée en tant que paramètre d'entrée.
Lorsque la méthode est renvoyée, l'objet writer peut être utilisé pour écrire des éléments TLV supplémentaires après l'élément conteneur.
Détails | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||||||||
Valeurs renvoyées |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
Elle encode un élément de conteneur TLV contenant les éléments membres d'un conteneur précodé.
La méthode CopyContainer() encode un nouvel élément de conteneur TLV (structure, tableau ou chemin d'accès) contenant un ensemble d'éléments membres issus du contenu d'un conteneur précodé fourni. Lorsque la méthode est appelée, les données du tampon d'entrée fourni sont analysées en tant qu'élément de conteneur TLV. Un nouveau conteneur est écrit, avec le même type et les mêmes membres que le conteneur d'entrée. La balise du nouveau conteneur est spécifiée en tant que paramètre d'entrée.
Lorsque la méthode est renvoyée, l'objet writer peut être utilisé pour écrire des éléments TLV supplémentaires après l'élément conteneur.
Détails | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||||||
Valeurs renvoyées |
|
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
Copie un élément TLV d'un objet lecteur dans l'éditeur.
La méthode CopyElement() encode un nouvel élément TLV dont le type, la balise et la valeur sont issus d'un objet TLVReader. Lorsque la méthode est appelée, l'objet lecteur fourni doit être positionné sur l'élément TLV source. Le nouvel élément encodé possède le même type, la même balise et le même contenu que le conteneur d'entrée. Si l'élément fourni est un conteneur TLV (structure, tableau ou chemin d'accès), l'intégralité du contenu du conteneur est copié.
Détails | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||||||||
Valeurs renvoyées |
|
CopyElement
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
EndContainer
WEAVE_ERROR EndContainer( TLVType outerContainerType )
Complète l'encodage d'un élément de conteneur TLV.
La méthode EndContainer() termine l'encodage d'un élément de conteneur TLV et restaure l'état d'un objet TLVWrite après un appel précédent à StartContainer(). Pour chaque appel à StartContainer(), les applications doivent effectuer un appel correspondant à EndContainer(), en transmettant la valeur TLVType renvoyée par l'appel StartContainer(). Lorsque EndContainer() est renvoyé, l'objet "writer" peut être utilisé pour écrire des éléments TLV supplémentaires qui suivent l'élément conteneur.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs renvoyées |
|
Finaliser
WEAVE_ERROR Finalize( void )
Terminez l'écriture d'un encodage TLV.
La méthode Finalize() termine le processus d'écriture d'un encodage TLV dans le tampon de sortie sous-jacent. Cette méthode doit être appelée par l'application avant d'utiliser le contenu du tampon. Finalize() ne peut être appelé que si aucun rédacteur de conteneur n'est ouvert pour le rédacteur actuel. (voir OpenContainer()
).
Détails | |||||||
---|---|---|---|---|---|---|---|
Valeurs renvoyées |
|
GetContainerType
TLVType GetContainerType( void ) const
Renvoie le type de conteneur dans lequel la fonction TLVWriter écrit actuellement.
La méthode GetContainerType() renvoie le type du conteneur TLV dans lequel TLVWriter écrit actuellement. Si TLVWriter n'écrit pas d'éléments dans un conteneur (c'est-à-dire, s'il écrit au niveau le plus externe d'un encodage), la méthode renvoie kTLVType_NotSpecified.
Détails | |
---|---|
Renvoie |
TLVType du conteneur actuel, ou kTLVType_NotSuggested si TLVWriter n'écrit pas d'éléments dans un conteneur.
|
GetLengthWritten
uint32_t GetLengthWritten( void )
Renvoie le nombre total d'octets écrits depuis l'initialisation du rédacteur.
Détails | |
---|---|
Renvoie |
Nombre total d'octets écrits depuis l'initialisation du rédacteur.
|
Init
void Init( uint8_t *buf, uint32_t maxLen )
Init
void Init( PacketBuffer *buf, uint32_t maxLen )
Initialise un objet TLVWriter à écrire dans un seul PacketBuffer.
L'écriture commence immédiatement après le dernier octet de données existantes dans le tampon fourni.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
Init
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
Elle initialise un objet TLVWriter à écrire dans un ou plusieurs PacketBuffers.
L'écriture commence immédiatement après le dernier octet de données existantes dans le tampon spécifié. Si allowDiscontiguousBuffers
est défini sur "true", des PacketBuffers supplémentaires seront alloués et enchaînés au tampon fourni afin de prendre en charge la quantité de données écrites. Si le tampon de sortie spécifié est déjà en tête d'une chaîne de tampons, la sortie sera écrite dans les tampons suivants de la chaîne avant l'allocation de nouveaux tampons.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
InitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
Elle initialise un objet TLVWriter à écrire dans un tampon dynamique.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
OpenContainer
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
Elle initialise un nouvel objet TLVWriter permettant d'écrire les membres d'un élément de conteneur TLV.
La méthode OpenContainer() permet d'écrire des éléments de conteneur TLV (structure, tableaux ou chemins) dans un encodage. La méthode utilise le type et le tag (le cas échéant) du nouveau conteneur, ainsi qu'une référence à un nouvel objet "writer" (container writer) qui sera initialisé pour écrire les éléments du conteneur. Les applications écrivent les membres du nouveau conteneur à l'aide du rédacteur de conteneur, puis appellent CloseContainer() pour terminer l'encodage du conteneur.
Lorsque le rédacteur de conteneurs est ouvert, les applications ne doivent pas effectuer d'appels sur le rédacteur parent ni modifier son état.
Le rédacteur de conteneurs hérite de diverses propriétés de configuration du rédacteur parent. Les voici :
- ID de profil implicite (ImplicitProfileId)
- Pointeur de données d'application (AppData)
- Pointeurs des fonctions GetNewBuffer et FinalizeBuffer
Détails | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||||
Valeurs renvoyées |
|
Écrire
WEAVE_ERROR Put( uint64_t tag, int8_t v )
Encode une valeur entière signée TLV.
Il s'agit d'une fonction de membre surchargée, fournie pour plus de commodité. Elle ne diffère des fonctions ci-dessus que par le ou les arguments qu'elle accepte.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs renvoyées |
|
Écrire
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
Encode une valeur entière signée TLV.
Il s'agit d'une fonction de membre surchargée, fournie pour plus de commodité. Elle ne diffère des fonctions ci-dessus que par le ou les arguments qu'elle accepte.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs renvoyées |
|
Écrire
WEAVE_ERROR Put( uint64_t tag, int16_t v )
Écrire
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
Écrire
WEAVE_ERROR Put( uint64_t tag, int32_t v )
Écrire
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
Écrire
WEAVE_ERROR Put( uint64_t tag, int64_t v )
Écrire
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
Écrire
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
Encode une valeur entière non signée TLV.
Il s'agit d'une fonction de membre surchargée, fournie pour plus de commodité. Elle ne diffère des fonctions ci-dessus que par le ou les arguments qu'elle accepte.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs renvoyées |
|
Écrire
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
Encode une valeur entière non signée TLV.
Il s'agit d'une fonction de membre surchargée, fournie pour plus de commodité. Elle ne diffère des fonctions ci-dessus que par le ou les arguments qu'elle accepte.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs renvoyées |
|
Écrire
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
Écrire
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
Écrire
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
Écrire
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
Écrire
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
Écrire
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
Écrire
WEAVE_ERROR Put( uint64_t tag, float v )
Écrire
WEAVE_ERROR Put( uint64_t tag, double v )
Encode une valeur à virgule flottante TLV.
Il s'agit d'une fonction de membre surchargée, fournie pour plus de commodité. Elle ne diffère des fonctions ci-dessus que par le ou les arguments qu'elle accepte.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs renvoyées |
|
PutBoolean
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
Encode une valeur booléenne TLV.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs renvoyées |
|
PutBytes
WEAVE_ERROR PutBytes( uint64_t tag, const uint8_t *buf, uint32_t len )
Encode une valeur de chaîne d'octets TLV.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs renvoyées |
|
PutNull
WEAVE_ERROR PutNull( uint64_t tag )
Encode une valeur nulle TLV.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs renvoyées |
|
PutPreEncodedContainer
WEAVE_ERROR PutPreEncodedContainer( uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen )
Encode un élément de conteneur TLV à partir d'un ensemble d'éléments membres pré-codés.
La méthode PutPreEncodedContainer() encode un nouvel élément de conteneur TLV (structure, tableau ou chemin) contenant un ensemble d'éléments membres issus d'un tampon précodé. Le tampon d'entrée doit contenir zéro ou plusieurs éléments TLV encodés en entier, avec des balises conformes aux règles associées au type de conteneur spécifié (par exemple, les membres de la structure doivent avoir des balises, contrairement aux membres du tableau).
La méthode encode l'intégralité de l'élément conteneur en un seul appel. Lorsque la fonction PutPreEncodedContainer() est renvoyée, l'objet writer peut être utilisé pour écrire des éléments TLV supplémentaires après l'élément conteneur.
Détails | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||||
Valeurs renvoyées |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
Encode une valeur de chaîne UTF8 TLV.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs renvoyées |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
Encode une valeur de chaîne UTF8 TLV.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs renvoyées |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
Encodez la sortie de chaîne formatée conformément au format de l'élément TLV.
PutStringF est l'équivalent d'un sprintf où la sortie est stockée dans un élément TLV plutôt que dans un tampon de caractères. Lorsque la fonctionnalité printf étendue est disponible, la fonction peut générer la chaîne de résultat dans un espace de stockage sous-jacent discontinu. L'implémentation prend en charge les améliorations suivantes pour Printf:
La plate-forme fournit un vcbprintf
basé sur le rappel, qui permet d'appeler un rappel personnalisé à la place de putchar.
La plate-forme fournit une variante de vsnprintf
appelée vsnprintf_ex
, qui se comporte exactement comme vsnprintf, sauf qu'elle permet d'omettre les n
premiers caractères de la sortie.
Notez que si la fonction basée sur le rappel est peut-être la plus simple et utilise le moins de code, la variété de fonctions vsprintf_ex
consomme moins de pile.
Si aucune des options ci-dessus n'est disponible, mais que la plate-forme fournit malloc
, la fonction attribuera un tampon temporaire pour stocker la sortie. Lorsque la plate-forme n'apporte aucune amélioration à la famille printf ni au malloc, la sortie est tronquée pour tenir à l'état continu dans l'espace de stockage TLV actuel.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs renvoyées |
|
StartContainer
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
Commence à encoder un nouvel élément de conteneur TLV.
La méthode StartContainer() permet d'écrire des éléments de conteneur TLV (structure, tableaux ou chemins) dans un encodage. La méthode utilise le type et le tag (le cas échéant) du nouveau conteneur, ainsi qu'une référence à une valeur TLVType qui sera utilisée pour enregistrer le contexte actuel de l'élément writer lorsqu'il est utilisé pour écrire le conteneur.
Lorsque la méthode StartContainer() est renvoyée, l'application doit utiliser l'objet TLVWriter actuel pour écrire les éléments du conteneur. Une fois l'opération terminée, l'application doit appeler la méthode EndContainer() pour terminer l'encodage du conteneur.
Détails | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||||
Valeurs renvoyées |
|
StartPutBytes
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
Encode une chaîne d'octets TLV en plusieurs fragments.
Il doit être utilisé avec ContinuePutBytes.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs renvoyées |
|
VPutStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
Encodez la sortie de chaîne formatée conformément au format de l'élément TLV.
PutStringF est l'équivalent d'un sprintf où la sortie est stockée dans un élément TLV plutôt que dans un tampon de caractères. Lorsque la fonctionnalité printf étendue est disponible, la fonction peut générer la chaîne de résultat dans un espace de stockage sous-jacent discontinu. L'implémentation prend en charge les améliorations suivantes pour Printf:
La plate-forme fournit un vcbprintf
basé sur le rappel, qui permet d'appeler un rappel personnalisé à la place de putchar.
La plate-forme fournit une variante de vsnprintf
appelée vsnprintf_ex
, qui se comporte exactement comme vsnprintf, sauf qu'elle permet d'omettre les n
premiers caractères de la sortie.
Notez que si la fonction basée sur le rappel est peut-être la plus simple et utilise le moins de code, la variété de fonctions vsprintf_ex
consomme moins de pile.
Si aucune des options ci-dessus n'est disponible, mais que la plate-forme fournit malloc
, la fonction attribuera un tampon temporaire pour stocker la sortie. Lorsque la plate-forme n'apporte aucune amélioration à la famille printf ni au malloc, la sortie est tronquée pour tenir à l'état continu dans l'espace de stockage TLV actuel.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs renvoyées |
|
Fonctions statiques publiques
FinalizePacketBuffer
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
Implémentation d'une fonction FinalizeBuffer TLVWriter permettant d'écrire dans une chaîne de PacketBuffers.
La fonction FinalizePacketBuffer() effectue la finalisation nécessaire lorsque vous utilisez TLVWriter pour écrire dans une chaîne de PacketBuffers. La fonction est conçue pour être utilisée conjointement avec la fonction GetNewPacketBuffer().
Consultez la définition du type FinalizeBufferFunct pour en savoir plus sur l'API de la fonction FinalizePacketBuffer().
GetNewBuffer_Malloced
WEAVE_ERROR GetNewBuffer_Malloced( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
Implémentation d'une fonction GetNewBuffer TLVWriter pour écrire dans un tampon dynamique.
La fonction GetNewBuffer_Malloced() fournit un nouvel espace de sortie à un TLVWriter en doublant la taille du tampon dynamique sous-jacent, si nécessaire pour stocker l'encodage. La fonction est conçue pour être attribuée au pointeur de fonction GetNewBuffer TLVWriter.
Consultez la définition du type GetNewBufferFunct pour en savoir plus sur l'API de la fonction GetNewBuffer_Malloced().
GetNewPacketBuffer
WEAVE_ERROR GetNewPacketBuffer( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
Implémentation d'une fonction GetNewBuffer TLVWriter pour écrire dans une chaîne de PacketBuffers.
La fonction GetNewPacketBuffer() fournit un nouvel espace de sortie à un TLVWriter en allouant une chaîne d'un ou plusieurs PacketBuffers selon les besoins pour stocker l'encodage. La fonction est conçue pour être attribuée au pointeur de fonction GetNewBuffer TLVWriter.
Notez que lorsque vous utilisez GetNewPacketBuffer avec TLVWriter, la fonction FinalizePacketBuffer() correspondante (ou un équivalent) doit également être utilisée pour finaliser la chaîne de tampon.
Consultez la définition du type GetNewBufferFunct pour en savoir plus sur l'API de la fonction GetNewPacketBuffer().
Fonctions protégées
IsCloseContainerReserved
bool IsCloseContainerReserved( void ) const
Déterminez si le conteneur doit réserver de l'espace pour le symbole CloseContainer au point de démarrage ou d'ouverture du conteneur.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
Indiquez si le conteneur doit réserver de l'espace pour le symbole CloseContainer au début ou à l'ouverture du conteneur.
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 )