nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
energooszczędny koder do zapisywania danych w formacie Weave TLV.
Podsumowanie
Komponent TLVWriter wdraża koder strumieniowy działający tylko do przodu dla danych TLV Weave. Aplikacje zapisują dane w kodowaniu, wywołując jedną z metod Put() autora, przekazując w razie potrzeby informacje o powiązanych tagach i wartościach. Podobnie aplikacje mogą kodować typy kontenerów TLV (struktury, tablice lub ścieżki), wywołując metody OpenContainer() lub EnterContainer() zapisującego.
Obiekt TLVWriter może zapisywać dane bezpośrednio w stałym buforze wyjściowym lub w łańcuchu zawierającym co najmniej 1 obiekt PacketBuffer. Poza tym aplikacje mogą dostarczać własne funkcje GetNewBuffer
i FinalizeBuffer
, aby kierować dane wyjściowe do dowolnego miejsca docelowego, na przykład gniazda lub kolejki zdarzeń.
Dziedziczenie
Bezpośrednie znane podklasy: nl::Weave::TLV::CircularTLVWriter
Typy chronione |
|
---|---|
@72{
|
enum | typ wyliczeniowy |
Typy publiczne |
|
---|---|
FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
|
WEAVE_ERROR(* Funkcja używana do finalizacji danych wyjściowych z obiektu TLVWriter. |
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
|
WEAVE_ERROR(* Funkcja, która dostarcza nową przestrzeń bufora wyjściowego do obiektu TLVWriter. |
Atrybuty publiczne |
|
---|---|
AppData
|
void *
Pole wskaźnika, którego można używać w przypadku danych specyficznych dla aplikacji.
|
FinalizeBuffer
|
Wskaźnik do funkcji, która zostanie wywołana po sfinalizowaniu obiektu TLVWriter.
|
GetNewBuffer
|
Wskaźnik do funkcji, która będzie dostarczać nową przestrzeń buforową do obiektu TLVWriter.
|
ImplicitProfileId
|
uint32_t
Identyfikator profilu tagów, które powinny być zakodowane w postaci niejawnej.
|
Atrybuty chronione |
|
---|---|
mBufHandle
|
uintptr_t
|
mBufStart
|
uint8_t *
|
mContainerType
|
|
mLenWritten
|
uint32_t
|
mMaxLen
|
uint32_t
|
mRemainingLen
|
uint32_t
|
mWritePoint
|
uint8_t *
|
Funkcje publiczne |
|
---|---|
CloseContainer(TLVWriter & containerWriter)
|
Kończy pisanie kontenera TLV po wywołaniu funkcji OpenContainer().
|
ContinuePutBytes(const uint8_t *buf, uint32_t len)
|
Koduje wartość ciągu bajtowego TLV.
|
CopyContainer(TLVReader & container)
|
|
CopyContainer(uint64_t tag, TLVReader & container)
|
Koduje element kontenera TLV z wstępnie zakodowanego zestawu elementów składowych.
|
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
|
Koduje element kontenera TLV, który zawiera elementy składowe ze wstępnie zakodowanego kontenera.
|
CopyElement(TLVReader & reader)
|
Kopiuje element TLV z obiektu czytnika do zapisu.
|
CopyElement(uint64_t tag, TLVReader & reader)
|
|
EndContainer(TLVType outerContainerType)
|
Kończy kodowanie elementu kontenera TLV.
|
Finalize(void)
|
Zakończ pisanie kodowania TLV.
|
GetContainerType(void) const
|
Zwraca typ kontenera, w którym obecnie zapisuje dane za pomocą obiektu TLVWriter.
|
GetLengthWritten(void)
|
uint32_t
Zwraca łączną liczbę bajtów zapisanych od momentu zainicjowania zapisu.
|
Init(uint8_t *buf, uint32_t maxLen)
|
void
Inicjuje obiekt TLVWriter do zapisania w pojedynczym buforze wyjściowym.
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
Inicjuje obiekt TLVWriter, który ma być zapisany w pojedynczym pakiecie PacketBuffer.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
Inicjuje obiekt TLVWriter, który ma być zapisany w co najmniej 1 bufecie PacketBuffer.
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
Inicjuje obiekt TLVWriter do zapisania w buforze dynamicznym.
|
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
|
|
Put(uint64_t tag, int8_t v)
|
Koduje liczbę całkowitą ze znakiem TLV.
|
Put(uint64_t tag, int8_t v, bool preserveSize)
|
Koduje liczbę całkowitą ze znakiem 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)
|
Koduje nieoznaczoną liczbę całkowitą TLV.
|
Put(uint64_t tag, uint8_t v, bool preserveSize)
|
Koduje nieoznaczoną liczbę całkowitą 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)
|
Koduje wartość zmiennoprzecinkową TLV.
|
PutBoolean(uint64_t tag, bool v)
|
Koduje wartość logiczną TLV.
|
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
|
Koduje wartość ciągu bajtowego TLV.
|
PutNull(uint64_t tag)
|
Koduje pustą wartość TLV.
|
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
|
Koduje element kontenera TLV z wstępnie zakodowanego zestawu elementów składowych.
|
PutString(uint64_t tag, const char *buf)
|
Koduje wartość ciągu znaków TLV w formacie UTF8.
|
PutString(uint64_t tag, const char *buf, uint32_t len)
|
Koduje wartość ciągu znaków TLV w formacie UTF8.
|
PutStringF(uint64_t tag, const char *fmt, ...)
|
Zakoduj dane wyjściowe ciągu znaków sformatowane zgodnie z formatem określonym w elemencie TLV.
|
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
|
Rozpoczyna kodowanie nowego elementu kontenera TLV.
|
StartPutBytes(uint64_t tag, uint32_t totalLen)
|
Koduje ciąg bajtowy TLV w wielu fragmentach.
|
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
|
Zakoduj dane wyjściowe ciągu znaków sformatowane zgodnie z formatem określonym w elemencie TLV.
|
Publiczne funkcje statyczne |
|
---|---|
FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
|
Implementacja funkcji FinalizeBuffer TLVWriter służąca do zapisu w łańcuchu PacketBuffer.
|
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Implementacja funkcji TLVWriter GetNewBuffer do zapisu w dynamicznym buforze.
|
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Implementacja funkcji TLVWriter GetNewBuffer do zapisu w łańcuchu pakietów PacketBuffer.
|
Funkcje chronione |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
Ustal, czy kontener powinien zarezerwować miejsce na symbol Zamknij kontener na etapie jego uruchamiania lub otwierania.
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
Określ, czy kontener ma rezerwować miejsce na symbol Zamknij kontener na etapie jego uruchamiania lub otwierania.
|
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)
|
Typy chronione
@72
@72
Typy publiczne
FinalizeBufferFunct
WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
Funkcja używana do finalizacji danych wyjściowych z obiektu TLVWriter.
Funkcje tego typu są wywoływane po wywołaniu metody Finalize() obiektu TLVWriter. Oczekuje się, że funkcja przeprowadzi wszystkie niezbędne oczyszczenia lub finalizacje związane z użyciem danych wyjściowych obiektu zapisującego. Może to być na przykład zarejestrowanie ostatecznej długości kodowania lub zamknięcie deskryptora pliku.
Szczegóły | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||
Zwracane wartości |
|
GetNewBufferFunct
WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
Funkcja, która dostarcza nową przestrzeń bufora wyjściowego do obiektu TLVWriter.
Funkcje tego typu służą do przygotowywania nowej przestrzeni bufora dla obiektu TLVWriter, w którym może zapisywać zapis. Po wywołaniu funkcja powinna zwrócić wskaźnik do lokalizacji w pamięci, w której powinny zostać zapisane nowe dane, wraz z powiązaną maksymalną długością. Funkcja może udostępniać miejsce do zapisu, przydzielając nowy bufor do przechowywania danych lub usuwając dane zapisane wcześniej z istniejącego bufora.
Szczegóły | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||
Zwracane wartości |
|
Atrybuty publiczne
AppData
void * AppData
Pole wskaźnika, którego można używać w przypadku danych specyficznych dla aplikacji.
FinalizeBuffer
FinalizeBufferFunct FinalizeBuffer
Wskaźnik do funkcji, która zostanie wywołana po sfinalizowaniu obiektu TLVWriter.
Obiekt TLVWriter wywołuje funkcję FinalizeBuffer za każdym razem, gdy wywołana jest jej metoda Finalize(). Aplikacje mogą ustawiać wskaźnik funkcji w dowolnym punkcie przed wywołaniem funkcji Finalize(). Domyślnie wskaźnik jest ustawiony na wartość NULL, co powoduje, że metoda Finalize() pomija wywołanie funkcji.
Więcej informacji o implementowaniu funkcji FinalizeBufferFunct znajdziesz w definicji typu FinalizeBufferFunct.
GetNewBuffer
GetNewBufferFunct GetNewBuffer
Wskaźnik do funkcji, która będzie dostarczać nową przestrzeń buforową do obiektu TLVWriter.
Obiekt TLVWriter wywołuje funkcję GetNewBuffer za każdym razem, gdy zostanie podjęta próba zapisania danych przekraczających rozmiar bieżącego bufora danych wyjściowych. Jeśli jest ustawiona na NULL (wartość domyślna), zapisujący zwraca kod WEAVE_ERROR_NO_MEMORY, jeśli dane wyjściowe przekraczają bieżący bufor.
Metoda GetNewBuffer można ustawić przez aplikację w dowolnym momencie, ale zwykle jest ustawiana po zainicjowaniu zapisu.
Więcej informacji na temat wdrażania funkcji GetNewBuffer znajdziesz w definicji typu GetNewBufferFunct.
ImplicitProfileId
uint32_t ImplicitProfileId
Identyfikator profilu tagów, które powinny być zakodowane w postaci niejawnej.
Gdy autor zostanie poproszony o zakodowanie nowego elementu, a identyfikator profilu tagu powiązanego z nowym elementem odpowiada wartości elementu ImplicitProfileId
, zapisujący zakoduje tag w formie niejawnej, pomijając w tym procesie identyfikator profilu.
Domyślnie właściwość ImplicitProfileId
ma wartość kProfileIdNotSpecified, co oznacza, że zapisujący nie wysyła tam tagów niejawnie zaszyfrowanych. Aplikacje mogą w dowolnym momencie skonfigurować ustawienie ImplicitProfileId
, aby włączyć tagi kodujące w formie niejawnej, począwszy od bieżącego punktu kodowania. Odpowiedni identyfikator profilu, który należy ustawić, zwykle zależy od kontekstu aplikacji lub protokołu.
Atrybuty chronione
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
Funkcje publiczne
CloseContainer
WEAVE_ERROR CloseContainer( TLVWriter & containerWriter )
Kończy pisanie kontenera TLV po wywołaniu funkcji OpenContainer().
Metoda CloseContainer() przywraca stan nadrzędnego obiektu TLVWriter po wywołaniu metody OpenContainer(). Każde wywołanie aplikacji OpenContainer() musi wywoływać odpowiadające jej wywołanie funkcji CloseContainer(), przekazując do obu metod tego samego zapisującego kontener.
Po zwróceniu metody CloseContainer() aplikacje mogą nadal używać nadrzędnego zapisującego do zapisywania dodatkowych elementów TLV, które pojawiają się po elemencie kontenera. W tym momencie dostarczonego zapisującego kontener powinien być uważany za „deinicjowany” i nie można go używać bez ponownego inicjowania.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
ContinuePutBytes
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
Koduje wartość ciągu bajtowego TLV.
Tego pola należy używać w przypadku StartPutBytes.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
Kopiuje element kontenera TLV z obiektu TLVReader.
Metoda CopyContainer() koduje nowy element kontenera TLV, kopiując wstępnie zakodowany element kontenera znajdujący się w bieżącej pozycji obiektu TLVReader. Ta metoda zapisuje cały nowy element kontenera za pomocą jednego wywołania, kopiując typ, tag i elementy kontenera z kodowania źródłowego. Po zwróceniu metody obiekt zapisujący można użyć do zapisania dodatkowych elementów TLV po elemencie container.
Szczegóły | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||||||||
Zwracane wartości |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
Koduje element kontenera TLV z wstępnie zakodowanego zestawu elementów składowych.
Metoda CopyContainer() koduje nowy element kontenera TLV (strukturę, tablica lub ścieżkę) zawierający zbiór elementów składowych pobranych z obiektu TLVReader. Po wywołaniu metody dostarczony obiekt czytnika powinien zostać umieszczony w elemencie kontenera TLV. Nowo zakodowany kontener będzie miał ten sam typ i członków co kontener wejściowy. Tag nowego kontenera jest określony jako parametr wejściowy.
Po zwróceniu metody obiekt zapisujący można użyć do zapisania dodatkowych elementów TLV po elemencie container.
Szczegóły | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||||||||
Zwracane wartości |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
Koduje element kontenera TLV, który zawiera elementy składowe ze wstępnie zakodowanego kontenera.
Metoda CopyContainer() koduje nowy element kontenera TLV (strukturę, tablica lub ścieżkę) zawierający zbiór elementów składowych pobranych z zawartości dostarczonego wstępnie zakodowanego kontenera. Po wywołaniu tej metody dane w dostarczonym buforze wejściowym są analizowane jako element kontenera TLV i zapisany nowy kontener, który ma ten sam typ i elementy co kontener wejściowy. Tag nowego kontenera jest określony jako parametr wejściowy.
Po zwróceniu metody obiekt zapisujący można użyć do zapisania dodatkowych elementów TLV po elemencie container.
Szczegóły | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||||||
Zwracane wartości |
|
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
Kopiuje element TLV z obiektu czytnika do zapisu.
Metoda CopyElement() koduje nowy element TLV, którego typ, tag i wartość są pobierane z obiektu TLVReader. Po wywołaniu metody dostarczony obiekt odczytującego powinien zostać umieszczony w elemencie źródłowym TLV. Nowo zakodowany element ma ten sam typ, tag i treść co kontener wejściowy. Jeśli podany element to kontener TLV (struktura, tablica lub ścieżka), zostanie skopiowana cała jego zawartość.
Szczegóły | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||||||||
Zwracane wartości |
|
CopyElement
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
EndContainer
WEAVE_ERROR EndContainer( TLVType outerContainerType )
Kończy kodowanie elementu kontenera TLV.
Metoda EndContainer() kończy kodowanie elementu kontenera TLV i przywraca stan obiektu TLVWrite po wcześniejszym wywołaniu funkcji StartContainer(). Każde wywołanie aplikacji StartContainer() musi wywoływać odpowiednie wywołanie funkcji EndContainer(), przekazując wartość TLVType zwracaną przez wywołanie StartContainer(). Po zwróceniu metody EndContainer() obiektu zapisującego można używać do zapisywania dodatkowych elementów TLV następujących po elemencie kontenera.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
Zakończ
WEAVE_ERROR Finalize( void )
Zakończ pisanie kodowania TLV.
Metoda Finalize() kończy proces zapisywania kodowania TLV w podstawowym buforze danych wyjściowych. Aplikacja musi wywołać metodę przed użyciem zawartości bufora. Funkcję Finalize() można wywołać tylko wtedy, gdy dla bieżącego zapisującego nie są otwarte żadne zapisy kontenerów. (patrz OpenContainer()
).
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Zwracane wartości |
|
GetContainerType
TLVType GetContainerType( void ) const
Zwraca typ kontenera, w którym obecnie zapisuje dane za pomocą obiektu TLVWriter.
Metoda GetContainerType() zwraca typ kontenera TLV, w którym obecnie zapisuje dane TLVWriter. Jeśli obiekt TLVWriter nie zapisuje elementów w kontenerze (tj. gdy zapisujesz je na najbardziej zewnętrznym poziomie kodowania), metoda zwraca kTLVType_NotSpecified.
Szczegóły | |
---|---|
Zwroty |
Wartość TLVType bieżącego kontenera lub wartość kTLVType_NotSpecified, jeśli obiekt TLVWriter nie zapisuje elementów w kontenerze.
|
GetLengthWritten
uint32_t GetLengthWritten( void )
Zwraca łączną liczbę bajtów zapisanych od momentu zainicjowania zapisu.
Szczegóły | |
---|---|
Zwroty |
Łączna liczba bajtów zapisanych od momentu zainicjowania zapisu.
|
Zainicjuj
void Init( uint8_t *buf, uint32_t maxLen )
Zainicjuj
void Init( PacketBuffer *buf, uint32_t maxLen )
Inicjuje obiekt TLVWriter, który ma być zapisany w pojedynczym pakiecie PacketBuffer.
Zapisywanie rozpoczyna się natychmiast po ostatnim bajcie danych istniejących w podanym buforze.
Szczegóły | |||||
---|---|---|---|---|---|
Parametry |
|
Zainicjuj
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
Inicjuje obiekt TLVWriter, który ma być zapisany w co najmniej 1 bufecie PacketBuffer.
Zapisywanie rozpoczyna się natychmiast po ostatnim bajcie danych istniejących w określonym buforze. Jeśli zasada allowDiscontiguousBuffers
ma wartość prawda, dodatkowe bufory pakietów zostaną przydzielone i połączone z dostarczonym buforem w zależności od potrzeb w celu obsługi ilości zapisanych danych. Jeśli podany bufor wyjściowy jest już nagłówkiem łańcucha buforów, dane wyjściowe są zapisywane w kolejnych buforach w łańcuchu przed przydzieleniem nowych buforów.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
InitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
Inicjuje obiekt TLVWriter do zapisania w buforze dynamicznym.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
OpenContainer
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
Inicjuje nowy obiekt TLVWriter do zapisywania elementów kontenera TLV.
Metoda OpenContainer() służy do zapisywania elementów kontenera TLV (struktur, tablic lub ścieżek) w kodowaniu. Metoda pobiera typ i tag (jeśli występuje) nowego kontenera oraz odwołanie do nowego obiektu zapisującego (Zapisujący kontener), który zostanie zainicjowany w celu zapisywania elementów kontenera. Aplikacje zapisują elementy nowego kontenera za pomocą zapisu w kontenerze, a następnie wywołują metodę CloseContainer(), aby zakończyć kodowanie kontenera.
Gdy skrypt zapisu kontenera jest otwarty, aplikacje nie mogą wykonywać wywołań ani w inny sposób zmieniać stanu nadrzędnego zapisującego.
Zapisujący kontener dziedziczy różne właściwości konfiguracji z nadrzędnego zapisującego. Dostępne symbole:
- Identyfikator profilu domyślnego (ImplicitProfileId)
- Wskaźnik danych aplikacji (AppData)
- Wskaźniki funkcji GetNewBuffer i FinalizeBuffer
Szczegóły | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||||
Zwracane wartości |
|
Put
WEAVE_ERROR Put( uint64_t tag, int8_t v )
Koduje liczbę całkowitą ze znakiem TLV.
Jest to przeciążona funkcja subskrybenta, udostępniona dla wygody. Różni się ona od funkcji powyżej jedynie argumentami, które akceptuje.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
Put
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
Koduje liczbę całkowitą ze znakiem TLV.
Jest to przeciążona funkcja subskrybenta, udostępniona dla wygody. Różni się ona od funkcji powyżej jedynie argumentami, które akceptuje.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
Put
WEAVE_ERROR Put( uint64_t tag, int16_t v )
Put
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, int32_t v )
Put
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, int64_t v )
Put
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
Koduje nieoznaczoną liczbę całkowitą TLV.
Jest to przeciążona funkcja subskrybenta, udostępniona dla wygody. Różni się ona od funkcji powyżej jedynie argumentami, które akceptuje.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
Put
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
Koduje nieoznaczoną liczbę całkowitą TLV.
Jest to przeciążona funkcja subskrybenta, udostępniona dla wygody. Różni się ona od funkcji powyżej jedynie argumentami, które akceptuje.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
Put
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
Put
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
Put
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
Put
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
Put
WEAVE_ERROR Put( uint64_t tag, float v )
Put
WEAVE_ERROR Put( uint64_t tag, double v )
Koduje wartość zmiennoprzecinkową TLV.
Jest to przeciążona funkcja subskrybenta, udostępniona dla wygody. Różni się ona od funkcji powyżej jedynie argumentami, które akceptuje.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
PutBoolean
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
Koduje wartość logiczną TLV.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
PutBytes
WEAVE_ERROR PutBytes( uint64_t tag, const uint8_t *buf, uint32_t len )
Koduje wartość ciągu bajtowego TLV.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
PutNull
WEAVE_ERROR PutNull( uint64_t tag )
Koduje pustą wartość TLV.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
PutPreEncodedContainer
WEAVE_ERROR PutPreEncodedContainer( uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen )
Koduje element kontenera TLV z wstępnie zakodowanego zestawu elementów składowych.
Metoda PutPreEncodedContainer() koduje nowy element kontenera TLV (strukturę, tablica lub ścieżkę) zawierający zbiór elementów składowych pobranych z wstępnie zakodowanego bufora. Bufor wejściowy powinien zawierać zero lub więcej w pełni zakodowanych elementów TLV z tagami zgodnymi z regułami powiązanymi z określonym typem kontenera (np. elementy struktury muszą mieć tagi, a elementy tablicy – nie).
Ta metoda koduje cały element kontenera w jednym wywołaniu. Gdy funkcja PutPreEncodedContainer() zwraca obiekt zapisujący, można za jego pomocą zapisać dodatkowe elementy TLV.
Szczegóły | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||||
Zwracane wartości |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
Koduje wartość ciągu znaków TLV w formacie UTF8.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
Koduje wartość ciągu znaków TLV w formacie UTF8.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
Zakoduj dane wyjściowe ciągu znaków sformatowane zgodnie z formatem określonym w elemencie TLV.
PutStringF to odpowiednik sprintf, w którym dane wyjściowe są przechowywane w elemencie TLV, a nie w buforze znaków. Gdy dostępna jest rozszerzona funkcja drukowania, funkcja może przekazywać ciąg wynikowy do nieciągłej pamięci bazowej. Implementacja obsługuje te ulepszenia Printf:
Platforma dostarcza wywołanie zwrotne vcbprintf
, które umożliwia wywołanie niestandardowego wywołania zwrotnego w miejscu metody putchar.
Platforma dostarcza wariant vsnprintf
o nazwie vsnprintf_ex
, który działa dokładnie tak samo jak vsnprintf, ale zawiera zasady pomijania pierwszych n
znaków w wynikach.
Pamiętaj, że chociaż funkcja oparta na wywołaniu zwrotnym może być najprostsza i zawierać najmniejszą ilość kodu, różne funkcje vsprintf_ex
zajmują mniej stosu.
Jeśli żadna z tych opcji nie jest dostępna, ale platforma udostępnia malloc
, funkcja przydzieli tymczasowy bufor do przechowywania danych wyjściowych. Gdy platforma nie dostarcza ulepszeń do rodziny wydruków ani zestawu Malloc, dane wyjściowe są obcinane w taki sposób, aby pasowały do ciągłego stanu pamięci masowej TLV.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
||||||
Zwracane wartości |
|
StartContainer
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
Rozpoczyna kodowanie nowego elementu kontenera TLV.
Metoda StartContainer() służy do zapisywania elementów kontenera TLV (struktur, tablic lub ścieżek) w kodowaniu. Metoda pobiera typ i tag (jeśli występuje) nowego kontenera oraz odwołanie do wartości TLVType, która zostanie użyta do zapisania bieżącego kontekstu zapisu w czasie, gdy będzie on używany do zapisu kontenera.
Po zwróceniu metody StartContainer() aplikacja powinna używać bieżącego obiektu TLVWriter, aby zapisywać elementy kontenera. Po zakończeniu aplikacja musi wywołać metodę EndContainer(), aby zakończyć kodowanie kontenera.
Szczegóły | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||||
Zwracane wartości |
|
StartPutBytes
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
Koduje ciąg bajtowy TLV w wielu fragmentach.
Tej opcji należy używać z kontynuacją przycisku „ContinuePutBytes”.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
Ciąg znaków VPutStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
Zakoduj dane wyjściowe ciągu znaków sformatowane zgodnie z formatem określonym w elemencie TLV.
PutStringF to odpowiednik sprintf, w którym dane wyjściowe są przechowywane w elemencie TLV, a nie w buforze znaków. Gdy dostępna jest rozszerzona funkcja drukowania, funkcja może przekazywać ciąg wynikowy do nieciągłej pamięci bazowej. Implementacja obsługuje te ulepszenia Printf:
Platforma dostarcza wywołanie zwrotne vcbprintf
, które umożliwia wywołanie niestandardowego wywołania zwrotnego w miejscu metody putchar.
Platforma dostarcza wariant vsnprintf
o nazwie vsnprintf_ex
, który działa dokładnie tak samo jak vsnprintf, ale zawiera zasady pomijania pierwszych n
znaków w wynikach.
Pamiętaj, że chociaż funkcja oparta na wywołaniu zwrotnym może być najprostsza i zawierać najmniejszą ilość kodu, różne funkcje vsprintf_ex
zajmują mniej stosu.
Jeśli żadna z tych opcji nie jest dostępna, ale platforma udostępnia malloc
, funkcja przydzieli tymczasowy bufor do przechowywania danych wyjściowych. Gdy platforma nie dostarcza ulepszeń do rodziny wydruków ani zestawu Malloc, dane wyjściowe są obcinane w taki sposób, aby pasowały do ciągłego stanu pamięci masowej TLV.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
||||||
Zwracane wartości |
|
Publiczne funkcje statyczne
FinalizePacketBuffer
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
Implementacja funkcji FinalizeBuffer TLVWriter służąca do zapisu w łańcuchu PacketBuffer.
Funkcja FinalizePacketBuffer() wykonuje niezbędną finalizację, która jest wymagana podczas zapisu w łańcuchu PacketBuffer za pomocą obiektu TLVWriter. Ta funkcja jest przeznaczona do użycia w połączeniu z funkcją GetNewPacketBuffer().
Więcej informacji o interfejsie API funkcji FinalizePacketBuffer() znajdziesz w definicji typu FinalizeBufferFunct.
GetNewBuffer_Malloced
WEAVE_ERROR GetNewBuffer_Malloced( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
Implementacja funkcji TLVWriter GetNewBuffer do zapisu w dynamicznym buforze.
Funkcja GetNewBuffer_Malloced() dostarcza nową przestrzeń wyjściową do obiektu TLVWriter, podwajając rozmiar bazowego bufora dynamicznego zgodnie z potrzebą do zapisania kodowania. Funkcja powinna zostać przypisana do wskaźnika funkcji TLVWriter GetNewBuffer.
Więcej informacji o interfejsie API funkcji GetNewBuffer_Malloced() znajdziesz w definicji typu GetNewBufferFunct.
GetNewPacketBuffer
WEAVE_ERROR GetNewPacketBuffer( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
Implementacja funkcji TLVWriter GetNewBuffer do zapisu w łańcuchu pakietów PacketBuffer.
Funkcja GetNewPacketBuffer() dostarcza nową przestrzeń wyjściową do obiektu TLVWriter, przypisując łańcuch co najmniej jednego bufora pakietów do przechowywania kodowania. Funkcja powinna zostać przypisana do wskaźnika funkcji TLVWriter GetNewBuffer.
Pamiętaj, że jeśli używasz metody GetNewPacketBuffer z metodą TLVWriter, do finalizacji łańcucha bufora należy też użyć odpowiedniej funkcji FinalizePacketBuffer() (lub jej odpowiednika).
Więcej informacji o interfejsie API funkcji GetNewPacketBuffer() znajdziesz w definicji typu GetNewBufferFunct.
Funkcje chronione
IsCloseContainerReserved
bool IsCloseContainerReserved( void ) const
Ustal, czy kontener powinien zarezerwować miejsce na symbol Zamknij kontener na etapie jego uruchamiania lub otwierania.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
Określ, czy kontener ma rezerwować miejsce na symbol Zamknij kontener na etapie jego uruchamiania lub otwierania.
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 )