nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
Fournit un encodeur économe en mémoire pour écrire des données au format Weave TLV.
Résumé
TLVWriter implémente un encodeur de type flux uniquement 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 sur la balise et la valeur associées si nécessaire. De même, les applications peuvent encoder les 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{
|
enum |
Types publics |
|
---|---|
FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
|
WEAVE_ERROR(* Fonction utilisée pour finaliser la sortie 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 les données spécifiques à une application.
|
FinalizeBuffer
|
Pointeur vers une fonction qui sera appelée lorsque TLVWriter est finalisé.
|
GetNewBuffer
|
Pointeur vers une fonction qui fournit un nouvel espace de tampon de sortie à un TLVWriter.
|
ImplicitProfileId
|
uint32_t
ID de profil des balises qui doivent être encodées sous forme 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)
|
Termine 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 précodé d'éléments membres.
|
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
|
Encode un élément de conteneur TLV contenant des éléments membres d'un conteneur précodé.
|
CopyElement(TLVReader & reader)
|
Copie un élément TLV d'un objet lecteur dans l'auteur.
|
CopyElement(uint64_t tag, TLVReader & reader)
|
|
EndContainer(TLVType outerContainerType)
|
Termine 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 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
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
Initialise un objet TLVWriter à écrire dans un ou plusieurs PacketBuffers.
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
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 précodé d'éléments membres.
|
PutString(uint64_t tag, const char *buf)
|
Encode une valeur de chaîne TLV UTF8.
|
PutString(uint64_t tag, const char *buf, uint32_t len)
|
Encode une valeur de chaîne TLV UTF8.
|
PutStringF(uint64_t tag, const char *fmt, ...)
|
Encodez la sortie de chaîne au format approprié dans 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 au format approprié dans 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 permettant d'écrire dans un tampon dynamique.
|
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Implémentation d'une fonction GetNewBuffer TLVWriter permettant d'é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 moment du démarrage et de l'ouverture du conteneur.
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
Indiquez si le conteneur doit réserver l'espace pour le symbole CloseContainer au moment du démarrage et de 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 la sortie d'un objet TLVWriter.
Les fonctions de ce type sont appelées lors de l'appel de la méthode Finalize() de TLVWriter. La fonction doit effectuer tous les nettoyages ou finalisations nécessaires liés à l'utilisation de la sortie de l'objet "writer". Il peut s'agir, par exemple, d'enregistrer la longueur finale de l'encodage ou de fermer un descripteur de fichier.
Détails | |||||||||
---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||
Valeurs de retour |
|
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 de mémoire tampon dans lequel un TLVWriter peut écrire. Lorsqu'elle est appelée, la fonction doit renvoyer un pointeur vers un emplacement de mémoire dans lequel de nouvelles données doivent être écrites, ainsi qu'une longueur maximale associée. La fonction peut fournir de l'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 de retour |
|
Attributs publics
AppData
void * AppData
Champ de pointeur pouvant être utilisé pour les données spécifiques à une application.
FinalizeBuffer
FinalizeBufferFunct FinalizeBuffer
Pointeur vers une fonction qui sera appelée lorsque TLVWriter est finalisé.
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 empêche la méthode Finalize() d'appeler la fonction.
Consultez la définition du type FinalizeBufferFunct pour en savoir plus sur l'implémentation d'une fonction FinalizeBuffer.
GetNewBuffer
GetNewBufferFunct GetNewBuffer
Pointeur vers une fonction qui fournit un nouvel espace de tampon de sortie à un TLVWriter.
Un objet TLVWriter appelle la fonction GetNewBuffer chaque fois qu'une tentative d'écriture de données dépassant la taille du tampon de sortie actuel est effectuée. Si la valeur est NULL (valeur par défaut), le rédacteur renvoie 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 lors de l'initialisation du rédacteur.
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 balises qui doivent être encodées sous forme 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 de manière implicite, en omettant l'ID de profil.
Par défaut, la propriété ImplicitProfileId
est définie sur kProfileIdNotSpecified, qui indique au rédacteur de ne pas émettre de tags encodés implicitement. Les applications peuvent définir ImplicitProfileId
à tout moment pour activer les balises d'encodage sous forme implicite à partir du point d'encodage actuel. 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 )
Termine 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 s'affichent après l'élément conteneur. À ce stade, le rédacteur de conteneur fourni doit être considéré comme "déinitialisé" et ne doit pas être utilisé sans réinitialisation.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs de retour |
|
ContinuePutBytes
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
Encode une valeur de chaîne d'octets TLV.
Utilisez-le avec StartPutBytes.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs de retour |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
Copie un élément de conteneur TLV à partir de l'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 conteneur dans un seul appel, en copiant le type, la balise et les éléments du conteneur depuis 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 de retour |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
Encode un élément de conteneur TLV à partir d'un ensemble précodé d'éléments membres.
La méthode CopyContainer() encode un nouvel élément de conteneur TLV (une structure, un tableau ou un chemin) 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 placé sur un élément de conteneur TLV. Le conteneur nouvellement encodé aura 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 de retour |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
Encode un élément de conteneur TLV contenant des éléments membres d'un conteneur précodé.
La méthode CopyContainer() encode un nouvel élément de conteneur TLV (structure, tableau ou chemin) 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 de retour |
|
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
Copie un élément TLV d'un objet lecteur dans l'auteur.
La méthode CopyElement() encode un nouvel élément TLV dont le type, la balise et la valeur proviennent d'un objet TLVReader. Lorsque la méthode est appelée, l'objet lecteur fourni doit être positionné sur l'élément TLV source. L'élément nouvellement 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), l'intégralité du contenu du conteneur sera copié.
Détails | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||||||||
Valeurs de retour |
|
CopyElement
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
EndContainer
WEAVE_ERROR EndContainer( TLVType outerContainerType )
Termine 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 de la méthode 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 d'autres éléments TLV qui suivent l'élément conteneur.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs de retour |
|
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. La méthode doit être appelée par l'application avant d'utiliser le contenu du tampon. La méthode Finalize() ne peut être appelée que si aucun rédacteur de conteneurs n'est ouvert pour le rédacteur actuel. (voir OpenContainer()
).
Détails | |||||||
---|---|---|---|---|---|---|---|
Valeurs de retour |
|
GetContainerType
TLVType GetContainerType( void ) const
Renvoie le type de conteneur dans lequel 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 si l'écriture est au niveau le plus externe d'un encodage), la méthode renvoie kTLVType_NotSpecified.
Détails | |
---|---|
Renvoie |
TLVType du conteneur actuel, ou kTLVType_NotSpecified 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 des données existantes dans le tampon fourni.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
Init
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
Initialise un objet TLVWriter à écrire dans un ou plusieurs PacketBuffers.
L'écriture commence immédiatement après le dernier octet des données existantes dans le tampon spécifié. Si allowDiscontiguousBuffers
est défini sur "true", des PacketBuffers supplémentaires sont alloués et reliés au tampon fourni si nécessaire pour prendre en charge la quantité de données écrites. Si le tampon de sortie spécifié est déjà la tête d'une chaîne de tampons, la sortie sera écrite dans les tampons suivants de la chaîne avant que de nouveaux tampons ne soient alloués.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
InitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
Initialise un objet TLVWriter à écrire dans un tampon dynamique.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
OpenContainer
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
Initialise un nouvel objet TLVWriter pour é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 la balise (le cas échéant) du nouveau conteneur, ainsi qu'une référence à un nouvel objet "Rédacteur" (le rédacteur de conteneurs) qui sera initialisé pour l'écriture des éléments du conteneur. Les applications écrivent les membres du nouveau conteneur à l'aide du rédacteur de conteneurs, 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 ni modifier l'état du rédacteur parent.
Le rédacteur de conteneurs hérite des diverses propriétés de configuration du rédacteur parent. Les voici :
- ID de profil implicite (ImplicitProfileId)
- Pointeur de données de l'application (AppData)
- Pointeurs des fonctions GetNewBuffer et FinalizeBuffer
Détails | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||||
Valeurs de retour |
|
efficaces avec
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 de la fonction ci-dessus que par le ou les arguments qu'elle accepte.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs de retour |
|
efficaces avec
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 de la fonction ci-dessus que par le ou les arguments qu'elle accepte.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs de retour |
|
efficaces avec
WEAVE_ERROR Put( uint64_t tag, int16_t v )
efficaces avec
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
efficaces avec
WEAVE_ERROR Put( uint64_t tag, int32_t v )
efficaces avec
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
efficaces avec
WEAVE_ERROR Put( uint64_t tag, int64_t v )
efficaces avec
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
efficaces avec
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 de la fonction ci-dessus que par le ou les arguments qu'elle accepte.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs de retour |
|
efficaces avec
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 de la fonction ci-dessus que par le ou les arguments qu'elle accepte.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs de retour |
|
efficaces avec
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
efficaces avec
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
efficaces avec
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
efficaces avec
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
efficaces avec
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
efficaces avec
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
efficaces avec
WEAVE_ERROR Put( uint64_t tag, float v )
efficaces avec
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 de la fonction ci-dessus que par le ou les arguments qu'elle accepte.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs de retour |
|
PutBoolean
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
Encode une valeur booléenne TLV.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs de retour |
|
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 de retour |
|
PutNull
WEAVE_ERROR PutNull( uint64_t tag )
Encode une valeur nulle TLV.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs de retour |
|
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 précodé d'éléments membres.
La méthode PutPreEncodedContainer() encode un nouvel élément de conteneur TLV (une structure, un tableau ou un chemin) contenant un ensemble d'éléments membres issus d'un tampon pré-codé. Le tampon d'entrée doit contenir zéro, un ou plusieurs éléments TLV à encodage complet, 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 PutPreEncodedContainer() est renvoyé, 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 de retour |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
Encode une valeur de chaîne TLV UTF8.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs de retour |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
Encode une valeur de chaîne TLV UTF8.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs de retour |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
Encodez la sortie de chaîne au format approprié dans l'élément TLV.
PutStringF est un analogue à un sprintf dans lequel la sortie est stockée dans un élément TLV et non 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 printf suivantes:
La plate-forme fournit un vcbprintf
basé sur le rappel qui permet d'appeler un rappel personnalisé à la place du putchar.
La plate-forme fournit une variante de vsnprintf
appelée vsnprintf_ex
, qui se comporte exactement comme vsnprintf, à la différence qu'elle permet d'omettre les premiers caractères n
de la sortie.
Notez que même si la fonction basée sur le rappel est la plus simple et qu'elle 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 alloue un tampon temporaire pour contenir la sortie. Lorsque la plate-forme ne fournit aucune amélioration à la famille printf ni malloc, la sortie est tronquée afin qu'elle s'adapte à l'état continu dans le stockage TLV actuel.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs de retour |
|
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 la balise (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 du rédacteur pendant qu'il est utilisé pour écrire le conteneur.
Une fois la méthode StartContainer() 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 de retour |
|
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 de retour |
|
VPutStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
Encodez la sortie de chaîne au format approprié dans l'élément TLV.
PutStringF est un analogue à un sprintf dans lequel la sortie est stockée dans un élément TLV et non 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 printf suivantes:
La plate-forme fournit un vcbprintf
basé sur le rappel qui permet d'appeler un rappel personnalisé à la place du putchar.
La plate-forme fournit une variante de vsnprintf
appelée vsnprintf_ex
, qui se comporte exactement comme vsnprintf, à la différence qu'elle permet d'omettre les premiers caractères n
de la sortie.
Notez que même si la fonction basée sur le rappel est la plus simple et qu'elle 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 alloue un tampon temporaire pour contenir la sortie. Lorsque la plate-forme ne fournit aucune amélioration à la famille printf ni malloc, la sortie est tronquée afin qu'elle s'adapte à l'état continu dans le stockage TLV actuel.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs de retour |
|
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 lors de l'utilisation d'un TLVWriter pour écrire dans une chaîne de PacketBuffers. La fonction est conçue pour être utilisée 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 permettant d'é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 permettant d'é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 si nécessaire au stockage de l'encodage. La fonction est conçue pour être attribuée au pointeur de fonction GetNewBuffer TLVWriter.
Notez que lorsque vous utilisez GetNewPacketBuffer avec un 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 moment du démarrage et de l'ouverture du conteneur.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
Indiquez si le conteneur doit réserver l'espace pour le symbole CloseContainer au moment du démarrage et de 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 )