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{
  kEndOfContainerMarkerSize = 1
}
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)
Copie un élément de conteneur TLV à partir de l'objet TLVReader.
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)
Initialise un nouvel objet TLVWriter pour écrire les membres d'un élément de conteneur TLV.
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
[in] writer
Référence à l'objet TLVWriter en cours de finalisation.
[in,out] bufHandle
Valeur de contexte uintptr_t définie par des appels précédents à la fonction GetNewBuffer.
[in,out] bufStart
Pointeur vers le début du tampon de sortie actuel (et final).
[in,out] bufLen
Nombre d'octets contenus dans le tampon et pointant vers bufStart.
Valeurs de retour
WEAVE_NO_ERROR
Si la finalisation a réussi.
other
Autres codes d'erreur spécifiques à la plate-forme ou Weave indiquant qu'une erreur s'est produite lors de la finalisation

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
[in] writer
Référence à l'objet TLVWriter qui demande un nouvel espace de mémoire tampon.
[in,out] bufHandle
Référence à une valeur uintptr_t que la fonction peut utiliser pour stocker des données contextuelles entre les appels. Cette valeur est initialisée sur 0 avant le premier appel.
[in,out] bufStart
Référence à un pointeur de données. À l'entrée de la fonction, bufStart pointe vers le début du tampon de sortie actuel. À la fermeture, bufStart doit pointer vers le début du nouveau tampon de sortie. La nouvelle valeur de pointeur peut être identique à la précédente (par exemple, si la fonction a copié les données existantes ailleurs), ou peut pointer vers un tout nouvel emplacement.
[in,out] bufLen
Référence à un entier non signé. À l'entrée de la fonction, bufLen contient le nombre d'octets d'espace non utilisé dans le tampon actuel. En sortie, bufLen doit contenir le nombre maximal d'octets pouvant être écrits dans le nouveau tampon de sortie.
Valeurs de retour
WEAVE_NO_ERROR
Indique si la fonction a pu fournir plus d'espace de tampon pour le rédacteur.
other
D'autres codes d'erreur spécifiques à la plate-forme ou Weave indiquant qu'une erreur s'est produite empêchant la fonction de produire de l'espace de tampon supplémentaire

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
[in] containerWriter
Référence à l'objet TLVWriter fourni à la méthode OpenContainer().
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_INCORRECT_STATE
Le rédacteur de conteneur fourni ne présente pas l'état adéquat.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un autre rédacteur de conteneur a été ouvert sur le rédacteur de conteneur fourni et qu'il n'est pas encore fermé.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'encodage du conteneur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configurées.

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
[in] buf
Pointeur vers un tampon contenant la chaîne d'octets à encoder.
[in] len
Nombre d'octets à encoder.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_INVALID_TLV_TAG
Si la valeur de balise spécifiée est incorrecte ou inappropriée dans le contexte dans lequel elle est écrite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configurées.

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
[in] container
Référence à un objet TLVReader identifiant le conteneur TLV précodé à copier.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_INCORRECT_STATE
Le lecteur fourni n'est pas placé sur un élément conteneur.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_TLV_UNDERRUN
Si l'encodage TLV sous-jacent associé au lecteur fourni a pris fin prématurément.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si le lecteur fourni a rencontré un type d'élément TLV non valide ou non compatible.
WEAVE_ERROR_INVALID_TLV_TAG
Si le lecteur fourni a rencontré une balise TLV dans un contexte non valide, ou si la balise associée au conteneur source n'est pas valide ou est inappropriée dans le contexte d'écriture du nouveau conteneur.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configurées, ou par la fonction GetNextBuffer() associée à l'objet lecteur.

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
[in] tag
La balise TLV à encoder avec le conteneur ou AnonymousTag si le conteneur doit l'être sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
[in] container
Référence à un objet TLVReader identifiant un conteneur TLV pré-encodé dont le type et les membres doivent être copiés.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_INCORRECT_STATE
Le lecteur fourni n'est pas placé sur un élément conteneur.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_TLV_UNDERRUN
Si l'encodage TLV sous-jacent associé au lecteur fourni a pris fin prématurément.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si le lecteur fourni a rencontré un type d'élément TLV non valide ou non compatible.
WEAVE_ERROR_INVALID_TLV_TAG
Le lecteur fourni a rencontré une balise TLV dans un contexte non valide, ou la balise fournie n'est pas valide ou n'est pas appropriée dans le contexte dans lequel le nouveau conteneur est écrit.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configurées, ou par la fonction GetNextBuffer() associée à l'objet lecteur.

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
[in] tag
La balise TLV à encoder avec le conteneur ou AnonymousTag si le conteneur doit l'être sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
[in] encodedContainer
Tampon contenant un conteneur TLV pré-encodé dont le type et les membres doivent être copiés.
[in] encodedContainerLen
Longueur du conteneur précodé, en octets.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_TLV_UNDERRUN
Si le conteneur encodé s'est terminé prématurément.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si le conteneur encodé contient un type d'élément TLV non valide ou non compatible.
WEAVE_ERROR_INVALID_TLV_TAG
Le conteneur encodé contient une balise TLV dans un contexte non valide, ou la balise fournie n'est pas valide ou est inappropriée dans le contexte dans lequel le nouveau conteneur est écrit.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configurées, ou par la fonction GetNextBuffer() associée à l'objet lecteur.

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
[in] reader
Référence à un objet TLVReader identifiant un élément TLV précodé à copier.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_INCORRECT_STATE
Si le lecteur fourni n'est pas positionné sur un élément.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_TLV_UNDERRUN
Si l'encodage TLV sous-jacent associé au lecteur fourni a pris fin prématurément.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si le lecteur fourni a rencontré un type d'élément TLV non valide ou non compatible.
WEAVE_ERROR_INVALID_TLV_TAG
Le lecteur fourni a rencontré une balise TLV dans un contexte non valide, ou la balise fournie n'est pas valide ou n'est pas appropriée dans le contexte dans lequel le nouveau conteneur est écrit.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configurées, ou par la fonction GetNextBuffer() associée à l'objet lecteur.

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
[in] outerContainerType
Valeur TLVType renvoyée par la méthode StartContainer().
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_INCORRECT_STATE
Si aucun appel StartContainer() correspondant n'a été effectué.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configuré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. 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
WEAVE_NO_ERROR
Si l'encodage a bien été finalisé.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par la fonction FinalizeBuffer() configurée.

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
)

Initialise un objet TLVWriter à écrire dans un seul tampon de sortie.

Détails
Paramètres
[in] buf
Pointeur vers le tampon dans lequel TLV doit être écrit.
[in] maxLen
Nombre maximal d'octets à écrire dans le tampon de sortie.

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
[in] buf
Pointeur vers un PaquetBuffer dans lequel TLV doit être écrit.
[in] maxLen
Nombre maximal d'octets à écrire dans le tampon de sortie.

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
[in] buf
Pointeur vers un PaquetBuffer dans lequel des données TLV doivent être écrites.
[in] maxLen
Nombre maximal d'octets à écrire dans le ou les tampons de sortie.
[in] allowDiscontiguousBuffers
Si la valeur est "true", écrivez les données dans une chaîne de PacketBuffers, en allouant si nécessaire de nouveaux tampons pour stocker les données écrites. Si la valeur est "false", l'écriture échoue avec WEAVE_ERROR_BUFFER_TOO_Small si les données écrites dépassent l'espace disponible dans le tampon de sortie initial.

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
[in] buf
Référence à un pointeur qui recevra le tampon alloué.
[in] maxLen
Nombre maximal d'octets à écrire dans le tampon de sortie.
[in] initialBufSize
Nombre initial d'octets à allouer au tampon.

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
[in] tag
La balise TLV à encoder avec le conteneur ou AnonymousTag si le conteneur doit l'être sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
[in] containerType
Type de conteneur à encoder. Doit être kTLVType_Structure, kTLVType_Array ou kTLVType_Path.
[out] containerWriter
Référence à un objet TLVWriter qui sera initialisé pour l'écriture des membres du nouvel élément de conteneur. Toutes les données associées à l'objet fourni sont écrasées.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_WRONG_TLV_TYPE
Si la valeur spécifiée pour containerType est incorrecte.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_INVALID_TLV_TAG
Si la valeur de balise spécifiée est incorrecte ou inappropriée dans le contexte dans lequel elle est écrite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configurées.

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
[in] tag
Balise TLV à encoder avec la valeur ou AnonymousTag si la valeur doit être encodée sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
[in] v
Valeur à encoder.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_INVALID_TLV_TAG
Si la valeur de balise spécifiée est incorrecte ou inappropriée dans le contexte dans lequel elle est écrite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configurées.

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
[in] tag
Balise TLV à encoder avec la valeur ou AnonymousTag si la valeur doit être encodée sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
[in] v
Valeur à encoder.
[in] preserveSize
"True" si la valeur doit être encodée dans le même nombre d'octets que dans le type d'entrée. "false" si la valeur doit être encodée avec le nombre minimal d'octets nécessaires pour la représenter. Remarque: Nous vous recommandons vivement de définir ce paramètre sur "false".
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_INVALID_TLV_TAG
Si la valeur de balise spécifiée est incorrecte ou inappropriée dans le contexte dans lequel elle est écrite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configurées.

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
[in] tag
Balise TLV à encoder avec la valeur ou AnonymousTag si la valeur doit être encodée sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
[in] v
Valeur à encoder.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_INVALID_TLV_TAG
Si la valeur de balise spécifiée est incorrecte ou inappropriée dans le contexte dans lequel elle est écrite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configurées.

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
[in] tag
Balise TLV à encoder avec la valeur ou AnonymousTag si la valeur doit être encodée sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
[in] v
Valeur à encoder.
[in] preserveSize
"True" si la valeur doit être encodée dans le même nombre d'octets que dans le type d'entrée. "false" si la valeur doit être encodée avec le nombre minimal d'octets nécessaires pour la représenter. Remarque: Nous vous recommandons vivement de définir ce paramètre sur "false".
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_INVALID_TLV_TAG
Si la valeur de balise spécifiée est incorrecte ou inappropriée dans le contexte dans lequel elle est écrite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configurées.

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
[in] tag
Balise TLV à encoder avec la valeur ou AnonymousTag si la valeur doit être encodée sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
[in] v
Valeur à encoder.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_INVALID_TLV_TAG
Si la valeur de balise spécifiée est incorrecte ou inappropriée dans le contexte dans lequel elle est écrite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configurées.

PutBoolean

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

Encode une valeur booléenne TLV.

Détails
Paramètres
[in] tag
Balise TLV à encoder avec la valeur ou AnonymousTag si la valeur doit être encodée sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
[in] v
Valeur à encoder.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_INVALID_TLV_TAG
Si la valeur de balise spécifiée est incorrecte ou inappropriée dans le contexte dans lequel elle est écrite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configuré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
[in] tag
Balise TLV à encoder avec la valeur ou AnonymousTag si la valeur doit être encodée sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
[in] buf
Pointeur vers un tampon contenant la chaîne d'octets à encoder.
[in] len
Nombre d'octets à encoder.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_INVALID_TLV_TAG
Si la valeur de balise spécifiée est incorrecte ou inappropriée dans le contexte dans lequel elle est écrite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configurées.

PutNull

WEAVE_ERROR PutNull(
  uint64_t tag
)

Encode une valeur nulle TLV.

Détails
Paramètres
[in] tag
Balise TLV à encoder avec la valeur ou AnonymousTag si la valeur doit être encodée sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_INVALID_TLV_TAG
Si la valeur de balise spécifiée est incorrecte ou inappropriée dans le contexte dans lequel elle est écrite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configuré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 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
[in] tag
La balise TLV à encoder avec le conteneur ou AnonymousTag si le conteneur doit l'être sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
[in] containerType
Type de conteneur à encoder. Doit être kTLVType_Structure, kTLVType_Array ou kTLVType_Path.
[in] data
Pointeur vers un tampon contenant zéro, un ou plusieurs autres éléments TLV encodés qui deviendront les membres du nouveau conteneur.
[in] dataLen
Nombre d'octets dans le tampon data.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_WRONG_TLV_TYPE
Si la valeur spécifiée pour containerType est incorrecte.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_INVALID_TLV_TAG
Si la valeur de balise spécifiée est incorrecte ou inappropriée dans le contexte dans lequel elle est écrite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configurées.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

Encode une valeur de chaîne TLV UTF8.

Détails
Paramètres
[in] tag
Balise TLV à encoder avec la valeur ou AnonymousTag si la valeur doit être encodée sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
[in] buf
Pointeur vers la chaîne UTF-8 se terminant par une valeur nulle à encoder.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_INVALID_TLV_TAG
Si la valeur de balise spécifiée est incorrecte ou inappropriée dans le contexte dans lequel elle est écrite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configurées.

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
[in] tag
Balise TLV à encoder avec la valeur ou AnonymousTag si la valeur doit être encodée sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
[in] buf
Pointeur vers la chaîne UTF-8 à encoder.
[in] len
Longueur (en octets) de la chaîne à encoder.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_INVALID_TLV_TAG
Si la valeur de balise spécifiée est incorrecte ou inappropriée dans le contexte dans lequel elle est écrite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configurées.

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
[in] tag
Balise TLV à encoder avec la valeur ou AnonymousTag si la valeur doit être encodée sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
[in] fmt
Chaîne de format utilisée pour mettre en forme la liste d'arguments. Suit la même syntaxe et les mêmes règles que la chaîne de format pour la famille de fonctions printf.
[in] ...
Liste d'arguments à mettre en forme dans la valeur de sortie selon fmt.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
other
Si les appels sous-jacents aux méthodes TLVWriter WriteElementHead ou GetNewBuffer échouent, l'erreur est immédiatement transférée vers la pile d'appel.

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
[in] tag
La balise TLV à encoder avec le conteneur ou AnonymousTag si le conteneur doit l'être sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
[in] containerType
Type de conteneur à encoder. Doit être kTLVType_Structure, kTLVType_Array ou kTLVType_Path.
[out] outerContainerType
Référence à une valeur TLVType qui recevra le contexte de l'auteur.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_WRONG_TLV_TYPE
Si la valeur spécifiée pour containerType est incorrecte.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_INVALID_TLV_TAG
Si la valeur de balise spécifiée est incorrecte ou inappropriée dans le contexte dans lequel elle est écrite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configuré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
[in] tag
Balise TLV à encoder avec la valeur ou AnonymousTag si la valeur doit être encodée sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
[in] totalLen
Nombre total d'octets à encoder.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Si un rédacteur de conteneur a été ouvert sur le rédacteur actuel, mais pas encore fermé.
WEAVE_ERROR_INVALID_TLV_TAG
Si la valeur de balise spécifiée est incorrecte ou inappropriée dans le contexte dans lequel elle est écrite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si l'écriture de la valeur entraîne le dépassement de la limite du nombre maximal d'octets spécifié lors de l'initialisation du rédacteur.
WEAVE_ERROR_NO_MEMORY
Si une tentative d'allocation d'un tampon de sortie échoue en raison d'un manque de mémoire.
other
Autres erreurs Weave ou spécifiques à la plate-forme renvoyées par les fonctions GetNewBuffer() ou FinalizeBuffer() configurées.

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
[in] tag
Balise TLV à encoder avec la valeur ou AnonymousTag si la valeur doit être encodée sans balise. Les valeurs de balise doivent être construites avec l'une des fonctions de définition de balise ProfileTag(), ContextTag() ou CommonTag().
[in] fmt
Chaîne de format utilisée pour mettre en forme la liste d'arguments. Suit la même syntaxe et les mêmes règles que la chaîne de format pour la famille de fonctions printf.
[in] ap
Liste d'arguments à mettre en forme dans la valeur de sortie selon fmt.
Valeurs de retour
WEAVE_NO_ERROR
Si la méthode a réussi.
other
Si les appels sous-jacents aux méthodes TLVWriter WriteElementHead ou GetNewBuffer échouent, l'erreur est immédiatement transférée vers la pile d'appel.

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
)