nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
Udostępnia mało pamięci kodera do zapisu danych w formacie Weave TLV.
Podsumowanie
TLVWriter implementuje koder w stylu strumieniowym przeznaczony tylko do przekazywania dalej dla danych Weave TLV. Aplikacje zapisują dane w kodowaniu, wywołując jedną z metod Put() zapisującego, przekazując w razie potrzeby powiązane informacje o tagach i wartości. Podobnie aplikacje mogą kodować typy kontenerów TLV (struktury, tablice lub ścieżki) przez wywołanie metod OpenContainer() lub EnterContainer() zapisującego.
Obiekt TLVWriter może zapisywać dane bezpośrednio w stałym buforze wyjściowym lub w łańcuchu co najmniej jednego obiektu PacketBuffer. Dodatkowo aplikacje mogą dostarczać własne funkcje GetNewBuffer
i FinalizeBuffer
, aby kierować dane wyjściowe do dowolnego miejsca docelowego, np. 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 danych wyjściowych do 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 zakończeniu tworzenia parametru TLVWriter.
|
GetNewBuffer
|
Wskaźnik do funkcji, która dostarcza nową przestrzeń bufora wyjściowego do TLVWriter.
|
ImplicitProfileId
|
uint32_t
Identyfikator profilu tagów, które powinny być zakodowane w formie 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 zapisywanie 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 ze wstępnie zakodowanego zestawu elementów.
|
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 zapisującego.
|
CopyElement(uint64_t tag, TLVReader & reader)
|
|
EndContainer(TLVType outerContainerType)
|
Kończy kodowanie elementu kontenera TLV.
|
Finalize(void)
|
Zakończ kodowanie TLV.
|
GetContainerType(void) const
|
Zwraca typ kontenera, w którym obecnie pisze funkcja TLVWriter.
|
GetLengthWritten(void)
|
uint32_t
Zwraca łączną liczbę bajtów zapisanych od momentu zainicjowania zapisującego.
|
Init(uint8_t *buf, uint32_t maxLen)
|
void
Inicjuje obiekt TLVWriter do zapisu w pojedynczym buforze wyjściowym.
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
Inicjuje obiekt TLVWriter w celu zapisu w pojedynczym obiekcie PacketBuffer.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
Inicjuje obiekt TLVWriter w celu zapisu w co najmniej jednym obiekcie PacketBuffer.
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
Inicjuje obiekt TLVWriter do zapisu w dynamicznym buforze.
|
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
|
|
Put(uint64_t tag, int8_t v)
|
Koduje wartość całkowitą ze znakiem TLV.
|
Put(uint64_t tag, int8_t v, bool preserveSize)
|
Koduje wartość 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 wartość całkowitą bez znaku TLV.
|
Put(uint64_t tag, uint8_t v, bool preserveSize)
|
Koduje wartość całkowitą bez znaku 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 ze wstępnie zakodowanego zestawu elementów.
|
PutString(uint64_t tag, const char *buf)
|
Koduje wartość ciągu znaków UTF8 w TLV.
|
PutString(uint64_t tag, const char *buf, uint32_t len)
|
Koduje wartość ciągu znaków UTF8 w TLV.
|
PutStringF(uint64_t tag, const char *fmt, ...)
|
Zakoduj dane wyjściowe ciągu znaków w formacie zgodnym z formatem określonym w elemencie TLV.
|
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
|
Zaczyna kodować nowy element kontenera TLV.
|
StartPutBytes(uint64_t tag, uint32_t totalLen)
|
Koduje ciąg bajtowy TLV w kilku fragmentach.
|
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
|
Zakoduj dane wyjściowe ciągu znaków w formacie zgodnym z formatem określonym w elemencie TLV.
|
Publiczne funkcje statyczne |
|
---|---|
FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
|
Implementacja funkcji TLVWriter FinalizeBuffer do zapisu w łańcuchu PacketBuffers.
|
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Implementacja funkcji TLVWriter GetNewBuffer służącej do zapisu w buforze dynamicznym.
|
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Implementacja funkcji TLVWriter GetNewBuffer służącej do zapisu w łańcuchu PacketBuffers.
|
Funkcje chronione |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
Określ, czy kontener powinien zarezerwować miejsce na symbol CloseContainer w punkcie uruchamiania / otwierania kontenera.
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
Określ, czy kontener powinien zarezerwować miejsce na symbol CloseContainer w punkcie uruchamiania / otwierania kontenera.
|
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() funkcji TLVWriter. Oczekuje się, że funkcja wyczyści wszystkie niezbędne elementy lub finalizację związane z wykorzystaniem danych wyjściowych obiektu zapisującego. Może to obejmować 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 danych wyjściowych do TLVWriter.
Funkcje tego typu służą do przygotowywania nowej przestrzeni buforowej w celu zapisu przez TLVWriter. Po wywołaniu funkcja powinna zwrócić wskaźnik do lokalizacji pamięci, w której należy zapisać nowe dane, wraz z powiązaną maksymalną długością. Funkcja może zapewnić miejsce na zapis, przydzielając nowy bufor do przechowywania danych lub usuwając wcześniej zapisane dane 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 zakończeniu tworzenia parametru TLVWriter.
Obiekt TLVWriter będzie wywoływać funkcję FinalizeBuffer przy każdej wywołaniu jego metody Finalize(). Aplikacje mogą ustawić wskaźnik funkcji w dowolnym momencie przed wywołaniem Finalize(). Domyślnie wskaźnik jest ustawiony na NULL, co powoduje, że metoda Finalize() pomija funkcję.
Dodatkowe informacje o implementowaniu funkcji FinalizeBuffer znajdziesz w definicji typu FinalizeBufferFunct.
GetNewBuffer
GetNewBufferFunct GetNewBuffer
Wskaźnik do funkcji, która dostarcza nową przestrzeń bufora wyjściowego do TLVWriter.
Obiekt TLVWriter będzie wywoływać funkcję GetNewBuffer przy każdej próbie zapisu danych, które przekraczają rozmiar bieżącego bufora wyjściowego. Po ustawieniu wartości NULL (wartość domyślna) program zapisujący zwróci błąd WEAVE_ERROR_NO_MEMORY, jeśli dane wyjściowe przekraczają bieżący bufor.
Aplikacja może w dowolnym momencie ustawić wartość GetNewBuffer, ale zwykle jest ona ustawiana podczas inicjowania zapisującego.
Dodatkowe informacje o implementowaniu funkcji GetNewBuffer znajdziesz w definicji typu GetNewBufferFunct.
ImplicitProfileId
uint32_t ImplicitProfileId
Identyfikator profilu tagów, które powinny być zakodowane w formie niejawnej.
Gdy autor zostanie poproszony o zakodowanie nowego elementu, a identyfikator profilu tagu powiązanego z nowym elementem będzie zgodny z wartością elementu ImplicitProfileId
, autor zakoduje tag w formie niejawnej, pomijając w procesie identyfikator profilu.
Domyślnie właściwość ImplicitProfileId
ma wartość kProfileIdNotSpecified, co instruuje osobę zapisującą, aby nie wysyłała tagów niejawnie zakodowanych. Aplikacje mogą ustawić ImplicitProfileId
w dowolnym momencie, aby włączyć kodowanie tagów w formie niejawnej, począwszy od bieżącego momentu kodowania. Odpowiedni identyfikator profilu do ustawienia zależy zwykle od kontekstu aplikacji lub używanego 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 zapisywanie kontenera TLV po wywołaniu funkcji OpenContainer().
Metoda CloseContainer() przywraca stan nadrzędnego obiektu TLVWriter po wywołaniu funkcji OpenContainer(). Każde wywołanie aplikacji OpenContainer() musi wywołać funkcję CloseContainer(), przekazując odniesienie do tego samego zapisującego kontener do obu metod.
Gdy funkcja CloseContainer() zostanie zwrócona, aplikacje mogą nadal używać nadrzędnego zapisującego do zapisywania dodatkowych elementów TLV wyświetlanych po elemencie kontenera. W tym momencie podany skrypt zapisujący kontenera powinien być uznawany za „dezainicjowany” i nie można jej 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.
Należy go używać w przypadku StartPutBytes.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
Kopiuje element kontenera TLV z obiektu TLVReader.
Funkcja 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 w jednym wywołaniu, kopiując typ kontenera, tag i elementy z kodowania źródłowego. Po zwróceniu metody obiekt zapisujący może zostać użyty do zapisania dodatkowych elementów TLV po elemencie kontenera.
Szczegóły | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||||||||
Zwracane wartości |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
Koduje element kontenera TLV ze wstępnie zakodowanego zestawu elementów.
Metoda CopyContainer() koduje nowy element kontenera TLV (strukturę, tablica lub ścieżkę) zawierający zbiór elementów składowych pobranych z obiektu TLVReader. Gdy ta metoda jest wywoływana, podany obiekt czytnika powinien być umieszczony w elemencie kontenera TLV. Nowo zakodowany kontener będzie mieć ten sam typ i elementy co kontener wejściowy. Tag nowego kontenera jest określany jako parametr wejściowy.
Po zwróceniu metody obiekt zapisujący może zostać użyty do zapisania dodatkowych elementów TLV po elemencie kontenera.
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 podanym buforze danych wejściowych są analizowane jako element kontenera TLV i zapisywany jest nowy kontener tego samego typu i tego samego elementu co kontener wejściowy. Tag nowego kontenera jest określany jako parametr wejściowy.
Po zwróceniu metody obiekt zapisujący może zostać użyty do zapisania dodatkowych elementów TLV po elemencie kontenera.
Szczegóły | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||||||
Zwracane wartości |
|
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
Kopiuje element TLV z obiektu czytnika do zapisującego.
Metoda CopyElement() koduje nowy element TLV, którego typ, tag i wartość są pobierane z obiektu TLVReader. Gdy ta metoda jest wywoływana, podany obiekt czytnika powinien zostać umieszczony w źródłowym elemencie TLV. Nowo zakodowany element będzie mieć ten sam typ, tag i treść co kontener wejściowy. Jeśli dostarczony element jest kontenerem TLV (strukturą, tablicą lub ścieżką), skopiowana zostanie cała zawartość kontenera.
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łać odpowiednie wywołanie EndContainer(), przekazując wartość TLVType zwrócona przez wywołanie StartContainer(). Gdy funkcja EndContainer() jest zwracana, obiektu zapisującego można użyć do zapisania dodatkowych elementów TLV, które następują po elemencie kontenera.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
Zakończ
WEAVE_ERROR Finalize( void )
Zakończ kodowanie TLV.
Metoda Finalize() kończy proces zapisywania kodowania TLV w podstawowym buforze wyjściowym. Aplikacja musi wywołać tę metodę, zanim użyje zawartości bufora. Metodę Finalize() można wywołać tylko wtedy, gdy dla bieżącego zapisującego nie są otwarte żadne zapisy kontenera. (Patrz: OpenContainer()
).
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Zwracane wartości |
|
GetContainerType
TLVType GetContainerType( void ) const
Zwraca typ kontenera, w którym obecnie pisze funkcja TLVWriter.
Metoda GetContainerType() zwraca typ kontenera TLV, w którym aktualnie pisze funkcja TLVWriter. Jeśli TLVWriter nie zapisuje elementów w kontenerze (tzn. na najbardziej zewnętrznym poziomie kodowania), metoda zwraca kTLVType_NotOkreślified.
Szczegóły | |
---|---|
Zwroty |
Wartość TLVType bieżącego kontenera lub kTLVType_NotSpecified, jeśli TLVWriter nie zapisuje elementów w kontenerze.
|
GetLengthWritten
uint32_t GetLengthWritten( void )
Zwraca łączną liczbę bajtów zapisanych od momentu zainicjowania zapisującego.
Szczegóły | |
---|---|
Zwroty |
Łączna liczba bajtów zapisanych od zainicjowania zapisującego.
|
Init
void Init( uint8_t *buf, uint32_t maxLen )
Init
void Init( PacketBuffer *buf, uint32_t maxLen )
Inicjuje obiekt TLVWriter w celu zapisu w pojedynczym obiekcie PacketBuffer.
Zapisywanie rozpoczyna się natychmiast po ostatnim bajcie istniejących danych w podanym buforze.
Szczegóły | |||||
---|---|---|---|---|---|
Parametry |
|
Init
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
Inicjuje obiekt TLVWriter w celu zapisu w co najmniej jednym obiekcie PacketBuffer.
Zapisywanie rozpoczyna się natychmiast po ostatnim bajcie istniejących danych w określonym buforze. Jeśli allowDiscontiguousBuffers
ma wartość prawda, dodatkowe bufory PacketBuffer są przydzielane i łączone z podanym buforem odpowiednio do potrzeb w celu obsługi ilości zapisanych danych. Jeśli podany bufor wyjściowy jest już na początku łańcucha buforów, dane wyjściowe będą zapisywane w kolejnych buforach w łańcuchu, zanim zostaną przydzielone nowe bufory.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
InitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
Inicjuje obiekt TLVWriter do zapisu w dynamicznym buforze.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
OpenContainer
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
Inicjuje nowy obiekt TLVWriter służący do zapisywania elementów kontenera TLV.
Metoda OpenContainer() służy do zapisywania elementów kontenera TLV (struktury, tablic lub ścieżek) w kodowaniu. Metoda przyjmuje 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 zapisu elementów kontenera. Aplikacje zapisują elementy nowego kontenera za pomocą zapisującego kontener, a potem wywołują funkcję CloseContainer(), aby zakończyć kodowanie kontenera.
Gdy zapis w kontenerze jest otwarty, aplikacje nie mogą wywoływać ani w inny sposób zmieniać stanu zapisującego.
Zapisujący kontener dziedziczy różne właściwości konfiguracji ze zapisującego element nadrzędny. Dostępne symbole:
- Niejawny identyfikator profilu (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 wartość całkowitą ze znakiem TLV.
Jest to przeciążona funkcja członkowska dla wygody. Różni się od powyższej funkcji tylko akceptowanymi argumentami.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
Put
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
Koduje wartość całkowitą ze znakiem TLV.
Jest to przeciążona funkcja członkowska dla wygody. Różni się od powyższej funkcji tylko akceptowanymi argumentami.
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 wartość całkowitą bez znaku TLV.
Jest to przeciążona funkcja członkowska dla wygody. Różni się od powyższej funkcji tylko akceptowanymi argumentami.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
Put
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
Koduje wartość całkowitą bez znaku TLV.
Jest to przeciążona funkcja członkowska dla wygody. Różni się od powyższej funkcji tylko akceptowanymi argumentami.
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 członkowska dla wygody. Różni się od powyższej funkcji tylko akceptowanymi argumentami.
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 ze wstępnie zakodowanego zestawu elementów.
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 dotyczącymi określonego typu kontenera (np. elementy struktury muszą mieć tagi, a elementy tablicy nie).
Metoda koduje cały element kontenera w jednym wywołaniu. Gdy zwracana jest metoda PutPreEncodedContainer(), obiekt zapisujący może służyć do zapisywania dodatkowych elementów TLV po elemencie kontenera.
Szczegóły | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||||
Zwracane wartości |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
Koduje wartość ciągu znaków UTF8 w TLV.
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 UTF8 w TLV.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
Zakoduj dane wyjściowe ciągu znaków w formacie zgodnym z formatem określonym w elemencie TLV.
PutStringF to analog typu 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, może ona przesłać wynikowy ciąg znaków do nieciągłej pamięci bazowej. Implementacja obsługuje te ulepszenia wydrukuf:
Platforma dostarcza oparte na wywołaniu wywołanie vcbprintf
, które umożliwia wywołanie niestandardowego wywołania zwrotnego zamiast putchar.
Platforma udostępnia wariant vsnprintf
o nazwie vsnprintf_ex
, który działa dokładnie tak samo jak vsnprintf, z tym że zawiera zasady pomijania pierwszych n
znaków danych wyjściowych.
Pamiętaj, że chociaż funkcja oparta na wywołaniu zwrotnym jest najprostsza i wymaga najmniejszej ilości kodu, różne funkcje vsprintf_ex
zajmują mniej stosu.
Jeśli żadna z powyższych opcji nie jest dostępna, ale platforma udostępnia funkcję malloc
, funkcja przydzieli tymczasowy bufor do przechowywania danych wyjściowych. Gdy platforma nie dostarcza ulepszeń do rodziny Printf ani Malloc, dane wyjściowe są obcinane tak, aby mieściły się w stanie ciągłym w bieżącej pamięci TLV
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
||||||
Zwracane wartości |
|
StartContainer
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
Zaczyna kodować nowy element kontenera TLV.
Metoda StartContainer() służy do zapisywania elementów kontenera TLV (struktury, tablic lub ścieżek) w kodowaniu. Metoda przyjmuje typ i tag (jeśli występuje) nowego kontenera, a także odwołanie do wartości TLVType, która zostanie użyta do zapisania bieżącego kontekstu zapisującego, gdy jest on używany do zapisu kontenera.
Po zwróceniu metody StartContainer() aplikacja powinna użyć bieżącego obiektu TLVWriter do zapisywania elementów kontenera. Gdy skończysz, aplikacja musi wywołać metodę EndContainer(), aby dokoń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 kilku fragmentach.
Należy go używać z ContinuePutBytes.
Szczegóły | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||||
Zwracane wartości |
|
VPutStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
Zakoduj dane wyjściowe ciągu znaków w formacie zgodnym z formatem określonym w elemencie TLV.
PutStringF to analog typu 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, może ona przesłać wynikowy ciąg znaków do nieciągłej pamięci bazowej. Implementacja obsługuje te ulepszenia wydrukuf:
Platforma dostarcza oparte na wywołaniu wywołanie vcbprintf
, które umożliwia wywołanie niestandardowego wywołania zwrotnego zamiast putchar.
Platforma udostępnia wariant vsnprintf
o nazwie vsnprintf_ex
, który działa dokładnie tak samo jak vsnprintf, z tym że zawiera zasady pomijania pierwszych n
znaków danych wyjściowych.
Pamiętaj, że chociaż funkcja oparta na wywołaniu zwrotnym jest najprostsza i wymaga najmniejszej ilości kodu, różne funkcje vsprintf_ex
zajmują mniej stosu.
Jeśli żadna z powyższych opcji nie jest dostępna, ale platforma udostępnia funkcję malloc
, funkcja przydzieli tymczasowy bufor do przechowywania danych wyjściowych. Gdy platforma nie dostarcza ulepszeń do rodziny Printf ani Malloc, dane wyjściowe są obcinane tak, aby mieściły się w stanie ciągłym w bieżącej pamięci 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 TLVWriter FinalizeBuffer do zapisu w łańcuchu PacketBuffers.
Funkcja FinalizePacketBuffer() wykonuje niezbędną finalizację, która jest wymagana w przypadku użycia obiektu TLVWriter do zapisu w łańcuchu PacketBuffer. Funkcja jest przeznaczona do używania 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 służącej do zapisu w buforze dynamicznym.
Funkcja GetNewBuffer_Malloced() dostarcza nową przestrzeń wyjściową do TLVWriter, podwajając rozmiar bazowego bufora dynamicznego odpowiednio do potrzeb przechowywania kodowania. Tę funkcję należy przypisać 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 służącej do zapisu w łańcuchu PacketBuffers.
Funkcja GetNewPacketBuffer() dostarcza nową przestrzeń wyjściową do TLVWriter, przypisując łańcuch z co najmniej 1 pakietem PacketBuffer (w razie potrzeby) do przechowywania kodowania. Tę funkcję należy przypisać do wskaźnika funkcji TLVWriter GetNewBuffer.
Pamiętaj, że w przypadku użycia funkcji GetNewPacketBuffer z parametrem TLVWriter do zakończenia łańcucha bufora należy 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
Określ, czy kontener powinien zarezerwować miejsce na symbol CloseContainer w punkcie uruchamiania / otwierania kontenera.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
Określ, czy kontener powinien zarezerwować miejsce na symbol CloseContainer w punkcie uruchamiania / otwierania kontenera.
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 )