nl:: Dokuma:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
Weave TLV biçiminde veri yazmak için bellek açısından verimli bir kodlayıcı sağlar.
Özet
TLVWriter, Weave TLV verileri için yalnızca ileriye dönük, akış stili bir kodlayıcı uygular. Uygulamalar, yazarın Put() yöntemlerinden birini çağırarak ilişkili etiket ve değer bilgilerini ileterek kodlamaya veri yazar. Benzer şekilde uygulamalar, yazıcının OpenContainer() veya EnterContainer() yöntemlerini çağırarak TLV kapsayıcı türlerini (yapılar, diziler veya yollar) kodlayabilir.
TLVWriter nesnesi, verileri doğrudan sabit bir çıkış arabelleğine veya bir veya daha fazla PaketetBuffer nesnesi zincirine yazabilir. Ayrıca uygulamalar, çıkışı rastgele bir hedefe (ör. yuva veya etkinlik sırası) yönlendirmek için kendi GetNewBuffer
ve FinalizeBuffer
işlevlerini sağlayabilir.
Devralma
Doğrudan Bilinen Alt Sınıflar: nl::Weave::TLV::CircularTLVWriter
Korunan türler |
|
---|---|
@72{
|
enum |
Herkese açık türler |
|
---|---|
FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
|
WEAVE_ERROR(* Bir TLVWriter nesnesinden çıkışın kesinleşmesini sağlamak için kullanılan bir işlev. |
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
|
WEAVE_ERROR(* Bir TLVWriter öğesine yeni çıkış arabelleği alanı sağlayan bir işlev. |
Herkese açık özellikler |
|
---|---|
AppData
|
void *
Uygulamaya özel veriler için kullanılabilecek işaretçi alanı.
|
FinalizeBuffer
|
TLVWriter tamamlandığında çağrılacak bir işlevin işaretçisi.
|
GetNewBuffer
|
TLVWriter öğesine yeni çıkış arabelleği alanı sağlayacak bir işlevin işaretçisi.
|
ImplicitProfileId
|
uint32_t
Dolaylı biçimde kodlanması gereken etiketlerin profil kimliği.
|
Korunan özellikler |
|
---|---|
mBufHandle
|
uintptr_t
|
mBufStart
|
uint8_t *
|
mContainerType
|
|
mLenWritten
|
uint32_t
|
mMaxLen
|
uint32_t
|
mRemainingLen
|
uint32_t
|
mWritePoint
|
uint8_t *
|
Herkese açık işlevler |
|
---|---|
CloseContainer(TLVWriter & containerWriter)
|
OpenContainer() çağrısından sonra, TLV kapsayıcısının yazma işlemini tamamlar.
|
ContinuePutBytes(const uint8_t *buf, uint32_t len)
|
TLV baytlık dize değerini kodlar.
|
CopyContainer(TLVReader & container)
|
|
CopyContainer(uint64_t tag, TLVReader & container)
|
TLV kapsayıcı öğesini, önceden kodlanmış bir üye öğesi grubundan kodlar.
|
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
|
Önceden kodlanmış bir kapsayıcıdan üye öğeleri içeren bir TLV kapsayıcı öğesini kodlar.
|
CopyElement(TLVReader & reader)
|
Bir TLV öğesini okuyucu nesnesinden yazara kopyalar.
|
CopyElement(uint64_t tag, TLVReader & reader)
|
|
EndContainer(TLVType outerContainerType)
|
TLV kapsayıcı öğesinin kodlamasını tamamlar.
|
Finalize(void)
|
TLV kodlamasının yazımını tamamlayın.
|
GetContainerType(void) const
|
TLVWriter kullanıcısının yazmakta olduğu kapsayıcı türünü döndürür.
|
GetLengthWritten(void)
|
uint32_t
Yazarın ilk kullanıma sunulmasından bu yana yazılan toplam bayt sayısını döndürür.
|
Init(uint8_t *buf, uint32_t maxLen)
|
void
Tek bir çıkış arabelleğine yazmak için bir TLVWriter nesnesini başlatır.
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
Tek bir PacketBuffer'a yazmak için bir TLVWriter nesnesini başlatır.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
Bir veya daha fazla PacketBuffers yazmak için bir TLVWriter nesnesi başlatır.
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
Dinamik bir arabelleğe yazmak için bir TLVWriter nesnesini başlatır.
|
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
|
|
Put(uint64_t tag, int8_t v)
|
TLV imzalı tam sayı değerini kodlar.
|
Put(uint64_t tag, int8_t v, bool preserveSize)
|
TLV imzalı tam sayı değerini kodlar.
|
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)
|
TLV imzalanmamış tam sayı değerini kodlar.
|
Put(uint64_t tag, uint8_t v, bool preserveSize)
|
TLV imzalanmamış tam sayı değerini kodlar.
|
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)
|
TLV kayan nokta değerini kodlar.
|
PutBoolean(uint64_t tag, bool v)
|
TLV boole değerini kodlar.
|
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
|
TLV baytlık dize değerini kodlar.
|
PutNull(uint64_t tag)
|
TLV boş değerini kodlar.
|
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
|
TLV kapsayıcı öğesini, önceden kodlanmış bir üye öğesi grubundan kodlar.
|
PutString(uint64_t tag, const char *buf)
|
TLV UTF8 dizesi değerini kodlar.
|
PutString(uint64_t tag, const char *buf, uint32_t len)
|
TLV UTF8 dizesi değerini kodlar.
|
PutStringF(uint64_t tag, const char *fmt, ...)
|
Dize çıkışını TLV öğesindeki biçime göre biçimlendirilmiş şekilde kodlayın.
|
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
|
Yeni bir TLV kapsayıcı öğesini kodlamaya başlar.
|
StartPutBytes(uint64_t tag, uint32_t totalLen)
|
TLV bayt dizesini birden fazla parçada kodlar.
|
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
|
Dize çıkışını TLV öğesindeki biçime göre biçimlendirilmiş şekilde kodlayın.
|
Herkese açık statik işlevler |
|
---|---|
FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
|
PacketBuffers zincirine yazmak için bir TLVWriter FinalizeBuffer işlevinin uygulanması.
|
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Dinamik bir arabelleğe yazmak için bir TLVWriter GetNewBuffer işlevi uygulaması.
|
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
PacketBuffers zincirine yazmak için bir TLVWriter GetNewBuffer işlevi uygulaması.
|
Korumalı işlevler |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
Kapsayıcının, container'ı başlatma / açma noktasında CloseContainer simgesi için boşluk bırakması gerekip gerekmediğini belirleyin.
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
Kapsayıcının, kapsayıcıyı başlatma / açma noktasında CloseContainer simgesi için boşluk bırakması gerekip gerekmediğini ayarlayın.
|
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)
|
Korunan türler
@72
@72
Herkese açık türler
FinalizeBufferFunct
WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
Bir TLVWriter nesnesinden çıkışın kesinleşmesini sağlamak için kullanılan bir işlev.
Bu tür işlevler, bir TLVWriter's Finalize() yöntemi çağrıldığında çağrılır. İşlevin, yazar nesnesinin çıkışının tüketimiyle ilgili gerekli tüm temizleme veya tamamlama işlemlerini yapması beklenir. Bunlara örnek olarak kodlamanın son uzunluğunun kaydedilmesi veya dosya tanımlayıcısının kapatılması verilebilir.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||
Döndürülen Değerler |
|
YeniBufferFunct Alma
WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
Bir TLVWriter öğesine yeni çıkış arabelleği alanı sağlayan bir işlev.
Bu tür işlevler, bir TLVWriter kullanıcısının yazabileceği yeni arabellek alanını hazırlamak için kullanılır. Arandığında, işlevin yeni verilerin yazması gereken bellek konumuna, ilişkili maksimum uzunlukla birlikte bir işaretçi döndürmesi beklenir. İşlev, verileri muhafazaya almak için yeni bir arabelleğe alma veya mevcut bir arabelleğe alınmış daha önce yazılmış verileri temizleme yoluyla yazma alanı sağlayabilir.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||
Döndürülen Değerler |
|
Herkese açık özellikler
AppData
void * AppData
Uygulamaya özel veriler için kullanılabilecek işaretçi alanı.
Son İşlem Arabellek
FinalizeBufferFunct FinalizeBuffer
TLVWriter tamamlandığında çağrılacak bir işlevin işaretçisi.
Bir TLVWriter nesnesi, Finalize() yöntemi çağrıldığında FinalizeBuffer işlevini çağırır. Uygulamalar, işlev işaretçisini Finalize() çağrısından önce herhangi bir anda ayarlayabilir. Varsayılan olarak, işaretçi NULL değerine ayarlanır ve Finalize() yöntemi işlevi çağırmadan vazgeçir.
FinalizeBuffer işlevinin uygulanmasıyla ilgili ek bilgiler için FinalizeBufferFunct türü tanımına bakın.
YeniYeniAl
GetNewBufferFunct GetNewBuffer
TLVWriter öğesine yeni çıkış arabelleği alanı sağlayacak bir işlevin işaretçisi.
Mevcut çıkış arabelleğinin boyutunu aşan veriler yazmaya çalışıldığında bir TLVWriter nesnesi GetNewBuffer işlevini çağırır. NULL değerine (varsayılan değer) ayarlanırsa yazar, çıkış verileri mevcut arabelleği doldurursa bir WEAVE_ERROR_NO_MEMORY döndürür.
GetNewBuffer, bir uygulama tarafından herhangi bir zamanda ayarlanabilir ancak genellikle yazar ilk başlatıldığında ayarlanır.
GetNewBuffer işlevinin uygulanmasıyla ilgili ek bilgiler için GetNewBufferFunct tür tanımına bakın.
DolaylıProfil Kimliği
uint32_t ImplicitProfileId
Dolaylı biçimde kodlanması gereken etiketlerin profil kimliği.
Bir yazardan yeni bir öğeyi kodlaması istendiğinde, yeni öğeyle ilişkili etiketin profil kimliği ImplicitProfileId
üyesinin değeriyle eşleşirse yazar, etiketi gizli bir şekilde kodlar ve işlem sırasında profil kimliğini çıkarır.
Varsayılan olarak ImplicitProfileId
özelliği, kProfileIdNotSpecified değerine ayarlanır ve böylece yazara, dolaylı olarak kodlanmış etiketler yayınlamaması talimatı verilir. Uygulamalar kodlama kodlamasının mevcut noktasından başlayan örtük biçimde kodlama etiketlerini etkinleştirmek için istediği zaman ImplicitProfileId
ayarlayabilir. Ayarlanacak uygun profil kimliği genellikle konuşulan uygulama veya protokolün bağlamına bağlıdır.
Korunan özellikler
mBufHandle
uintptr_t mBufHandle
mBufStart
uint8_t * mBufStart
mContainerType
TLVType mContainerType
mLenyazılı
uint32_t mLenWritten
Maksimum Performans
uint32_t mMaxLen
Kalan Uzun
uint32_t mRemainingLen
mWritePoint
uint8_t * mWritePoint
Herkese açık işlevler
CloseContainer'ı
WEAVE_ERROR CloseContainer( TLVWriter & containerWriter )
OpenContainer() çağrısından sonra, TLV kapsayıcısının yazma işlemini tamamlar.
CloseContainer() yöntemi, OpenContainer() çağrısından sonra üst TLVWriter nesnesinin durumunu geri yükler. OpenContainer() uygulamalarına yapılan her çağrı için karşılık gelen kapsayıcının, her iki yönteme de iletildiği CloseContainer() çağrısı yapılmalıdır.
CloseContainer() döndüğünde uygulamalar, kapsayıcı öğesinden sonra görünen ek TLV öğeleri yazmak için üst yazıcıyı kullanmaya devam edebilir. Bu noktada, sağlanan kapsayıcı yazıcısı 'de-itibarlı' olarak değerlendirilmeli ve yeniden başlatma olmadan kullanılmamalıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
Devam Ettiren Baytlar
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
TLV baytlık dize değerini kodlar.
Bu, StartPutBytes ile kullanılmalıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
Kopyalama Kapsayıcısı
WEAVE_ERROR CopyContainer( TLVReader & container )
Bir TLVkapsayıcısını TLVReader nesnesinden kopyalar.
CopyContainer(), bir TLVReader nesnesinin mevcut konumunda bulunan önceden kodlanmış bir kapsayıcı öğesini kopyalayarak yeni bir TLV kapsayıcı öğesini kodlar. Yöntem, bir kapsayıcıda yeni kapsayıcı öğesinin tamamını yazar. Kapsayıcının türünü, etiketini ve öğelerini kaynak kodlamadan kopyalar. Yöntem döndüğünde, yazma nesnesi, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için kullanılabilir.
Ayrıntılar | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||||||
Döndürülen Değerler |
|
Kopyalama Kapsayıcısı
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
TLV kapsayıcı öğesini, önceden kodlanmış bir üye öğesi grubundan kodlar.
CopyContainer() yöntemi, bir TLVReader nesnesinden alınan üye öğelerini içeren yeni bir TLV kapsayıcı öğesini (bir yapı, dizi veya yol) kodlar. Yöntem çağrıldığında, sağlanan okuyucu nesnesinin bir TLV kapsayıcı öğesine yerleştirilmesi beklenir. Yeni kodlanmış kapsayıcı, giriş kapsayıcıyla aynı türe ve üyelere sahip olur. Yeni kapsayıcının etiketi, bir giriş parametresi olarak belirtilir.
Yöntem döndüğünde, yazma nesnesi, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için kullanılabilir.
Ayrıntılar | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||||||
Döndürülen Değerler |
|
Kopyalama Kapsayıcısı
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
Önceden kodlanmış bir kapsayıcıdan üye öğeleri içeren bir TLV kapsayıcı öğesini kodlar.
CopyContainer() yöntemi, sağlanan önceden kodlanmış kapsayıcının içeriklerinden alınan bir üye öğeleri grubunu içeren yeni bir TLV kapsayıcı öğesini (bir yapı, dizi veya yol) kodlar. Yöntem çağrıldığında, sağlanan giriş arabelleğindeki veriler TLV kapsayıcı öğesi olarak ayrıştırılır. Bunun için giriş kapsayıcıyla aynı türde ve üyelere sahip yeni bir kapsayıcı yazılır. Yeni kapsayıcının etiketi, bir giriş parametresi olarak belirtilir.
Yöntem döndüğünde, yazma nesnesi, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için kullanılabilir.
Ayrıntılar | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||||
Döndürülen Değerler |
|
Kopya Öğesi
WEAVE_ERROR CopyElement( TLVReader & reader )
Bir TLV öğesini okuyucu nesnesinden yazara kopyalar.
CopyElement() yöntemi, türü, etiketi ve değeri TLVReader nesnesinden alınan yeni bir TLV öğesini kodlar. Yöntem çağrıldığında, sağlanan okuyucu nesnesinin kaynak TLV öğesine konumlandırılması beklenir. Yeni kodlanmış öğe, giriş kapsayıcıyla aynı türde, etikete ve içeriğe sahip olur. Sağlanan öğe bir TLV kapsayıcısı (yapı, dizi veya yol) ise kapsayıcının tüm içeriği kopyalanır.
Ayrıntılar | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||||||
Döndürülen Değerler |
|
Kopya Öğesi
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
Son Kapsayıcı
WEAVE_ERROR EndContainer( TLVType outerContainerType )
TLV kapsayıcı öğesinin kodlamasını tamamlar.
EndContainer() yöntemi, bir TLV kapsayıcı öğesinin kodlamasını tamamlar ve bir VContainer() çağrısından önceki bir TLVWrite nesnesinin durumunu geri yükler. StartContainer() uygulamalarına yapılan her çağrı için karşılık gelen bir EndContainer() çağrısı yapılmalıdır. Bu durumda, StartContainer() çağrısı tarafından döndürülen TLVType değeri iletilmelidir. EndContainer() döndüğünde, yazma nesnesi, kapsayıcı öğesini izleyen ek TLV öğeleri yazmak için kullanılabilir.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
Sonlandır
WEAVE_ERROR Finalize( void )
TLV kodlamasının yazımını tamamlayın.
Finalize() yöntemi, temel çıkış arabelleğine TLV kodlaması yazma işlemini tamamlar. Yöntem, arabelleğin içeriğini kullanmadan önce uygulama tarafından çağrılmalıdır. Finalize() yalnızca geçerli yazar için açık kapsayıcı yazarı olmadığında çağrılabilir. (Bkz. OpenContainer()
).
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Döndürülen Değerler |
|
GetContainerType
TLVType GetContainerType( void ) const
TLVWriter kullanıcısının yazmakta olduğu kapsayıcı türünü döndürür.
GetContainerType() yöntemi, TLVWriter'ın şu anda yazmakta olduğu TLV kapsayıcısının türünü döndürür. TLVWriter, bir kapsayıcı içindeki öğeleri yazmıyorsa (yani bir kodlamanın en dış düzeyinde yazıyorsa) yöntem kTLVType_NotSpecified sonucunu döndürür.
Ayrıntılar | |
---|---|
İadeler |
Mevcut kapsayıcının TLVType veya TLVWriter bir kapsayıcı içindeki öğeleri yazmıyorsa kTLVType_NotSpecified.
|
GetLengthYazıldı
uint32_t GetLengthWritten( void )
Yazarın ilk kullanıma sunulmasından bu yana yazılan toplam bayt sayısını döndürür.
Ayrıntılar | |
---|---|
İadeler |
Yazarın ilk kullanıma sunulmasından bu yana yazılan toplam bayt sayısı.
|
Başlangıç
void Init( uint8_t *buf, uint32_t maxLen )
Başlangıç
void Init( PacketBuffer *buf, uint32_t maxLen )
Tek bir PacketBuffer'a yazmak için bir TLVWriter nesnesini başlatır.
Yazma, sağlanan arabellekteki mevcut verilerin son baytından hemen sonra başlar.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
Başlangıç
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
Bir veya daha fazla PacketBuffers yazmak için bir TLVWriter nesnesi başlatır.
Yazma, belirtilen arabellekteki mevcut verilerin son baytından hemen sonra başlar. allowDiscontiguousBuffers
değeri true (doğru) olduğunda, ek Paket Paketi, ayrılan veri miktarını karşılayacak şekilde arabelleğe alınır ve zincire zincirlenir. Belirtilen çıkış arabelleği zaten bir arabelleğe zincirinin başıysa çıkış, yeni arabelleğe alınmadan önce zincirdeki sonraki arabelleğe yazılır.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
İnitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
Dinamik bir arabelleğe yazmak için bir TLVWriter nesnesini başlatır.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
OpenContainer
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
Bir TLV kapsayıcı öğesinin üyelerini yazmak için yeni bir TLVWriter nesnesini başlatır.
Bir kodlamaya TLVkapsayıcı öğeleri (yapı, diziler veya yollar) yazmak için OpenContainer() yöntemi kullanılır. Yöntem, yeni kapsayıcının türünü ve etiketini (varsa) ve kapsayıcı öğelerini yazmak amacıyla başlatılacak yeni bir yazar nesnesine (kapı yazarı) başvuru alır. Uygulamalar, kapsayıcı kapsayıcıyı kullanarak yeni kapsayıcının üyelerini yazar ve ardından kapsayıcı kodlamasını tamamlamak için CloseContainer() işlevini çağırır.
Kapsayıcı yazarı açık olduğunda, uygulamalar ana yazıcının durumunu çağırmamalı veya değiştirmemelidir.
Kapsayıcı yazıcısı, çeşitli yapılandırma özelliklerini üst yazardan devralır. Desteklenen biçimler şunlardır:
- Dolaylı profil kimliği (ImplicitProfileId)
- Uygulama veri işaretçisi (AppData)
- GetNewBuffer ve FinalizeBuffer işlev işaretçileri
Ayrıntılar | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||
Döndürülen Değerler |
|
bağla
WEAVE_ERROR Put( uint64_t tag, int8_t v )
TLV imzalı tam sayı değerini kodlar.
Bu, kolaylık sağlamak için aşırı yüklenmiş bir üye işlevidir. Yukarıdaki işlevden yalnızca kabul ettiği bağımsız değişkenlerden farklıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
bağla
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
TLV imzalı tam sayı değerini kodlar.
Bu, kolaylık sağlamak için aşırı yüklenmiş bir üye işlevidir. Yukarıdaki işlevden yalnızca kabul ettiği bağımsız değişkenlerden farklıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
bağla
WEAVE_ERROR Put( uint64_t tag, int16_t v )
bağla
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
bağla
WEAVE_ERROR Put( uint64_t tag, int32_t v )
bağla
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
bağla
WEAVE_ERROR Put( uint64_t tag, int64_t v )
bağla
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
bağla
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
TLV imzalanmamış tam sayı değerini kodlar.
Bu, kolaylık sağlamak için aşırı yüklenmiş bir üye işlevidir. Yukarıdaki işlevden yalnızca kabul ettiği bağımsız değişkenlerden farklıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
bağla
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
TLV imzalanmamış tam sayı değerini kodlar.
Bu, kolaylık sağlamak için aşırı yüklenmiş bir üye işlevidir. Yukarıdaki işlevden yalnızca kabul ettiği bağımsız değişkenlerden farklıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
bağla
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
bağla
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
bağla
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
bağla
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
bağla
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
bağla
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
bağla
WEAVE_ERROR Put( uint64_t tag, float v )
bağla
WEAVE_ERROR Put( uint64_t tag, double v )
TLV kayan nokta değerini kodlar.
Bu, kolaylık sağlamak için aşırı yüklenmiş bir üye işlevidir. Yukarıdaki işlevden yalnızca kabul ettiği bağımsız değişkenlerden farklıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
PutBoole
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
TLV boole değerini kodlar.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
PutByte
WEAVE_ERROR PutBytes( uint64_t tag, const uint8_t *buf, uint32_t len )
TLV baytlık dize değerini kodlar.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
PutNull
WEAVE_ERROR PutNull( uint64_t tag )
TLV boş değerini kodlar.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
PutPre-EncodingContainer
WEAVE_ERROR PutPreEncodedContainer( uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen )
TLV kapsayıcı öğesini, önceden kodlanmış bir üye öğesi grubundan kodlar.
PutPreEncodingContainer() yöntemi, önceden kodlanmış bir arabelleğe alınmış bir üye öğesi grubunu içeren yeni bir TLV kapsayıcı öğesini (bir yapı, dizi veya yol) kodlar. Giriş arabelleğinin, belirtilen kapsayıcı türüyle ilişkili kurallara uyan etiketlerle (ör. yapı üyelerinin etiket içermesi gerekirken dizi üyelerinin olmaması gerekir) sıfır veya daha fazla tam kodlanmış TLV öğesi içermesi beklenir.
Yöntem, bir çağrıda kapsayıcı öğesinin tamamını kodlar. PutPreEncodingContainer() döndüğünde, yazma nesnesi, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için kullanılabilir.
Ayrıntılar | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||
Döndürülen Değerler |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
TLV UTF8 dizesi değerini kodlar.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
TLV UTF8 dizesi değerini kodlar.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
Dize çıkışını TLV öğesindeki biçime göre biçimlendirilmiş şekilde kodlayın.
PutStringF, çıkışın bir karakter arabelleği yerine TLV öğesinde depolandığı bir sprintf analogudur. Genişletilmiş yazdırma işlevi mevcut olduğunda, işlev sonuç dizesini sürekli olmayan bir temel depolama alanına üretebilir. Uygulama, aşağıdaki Printf geliştirmelerini destekler:
Platform, kişisel karakterin yerine özel bir geri çağırma çağırmak için geri çağırmaya dayalı vcbprintf
sağlar.
Platform, vsnprintf_ex
adlı varyantın, çıkışın ilk n
karakterinin atlanmasına ilişkin hükümlerinin haricinde tam olarak vsnprintf gibi davranan bir varyantı sağlar.
Geri çağırmaya dayalı işlevin en basit yöntem olabileceği ve en az sayıda kod kullanabilse de vsprintf_ex
çeşitli işlevler için daha az yığın kullanılır.
Yukarıdakilerden hiçbiri kullanılabilir değilse ancak platform malloc
sağlarsa işlev, çıkışı tutmak için geçici bir arabelle ayırır. Platform, matba ailesine veya Malloc'a geliştirme yapmadığında çıkış, mevcut TLV depolama alanında sürekli duruma sığacak şekilde kesilir.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Döndürülen Değerler |
|
BaşlangıçKapsayıcısı
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
Yeni bir TLV kapsayıcı öğesini kodlamaya başlar.
Bir kodlamaya StartContainer() yöntemi, TLV kapsayıcı öğeleri (yapı, diziler veya yollar) yazmak için kullanılır. Yöntem, yeni kapsayıcının türünü ve etiketini (varsa) ve kapsayıcıyı yazmak için yazarın mevcut bağlamını kaydetmek amacıyla kullanılacak bir TLVType değerine başvuruyu alır.
StartContainer() yöntemi döndürüldüğünde uygulama, kapsayıcının öğelerini yazmak için geçerli TLVWriter nesnesini kullanmalıdır. İşiniz bittiğinde uygulama, kapsayıcının kodlamasını tamamlamak için EndContainer() yöntemini çağırmalıdır.
Ayrıntılar | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||
Döndürülen Değerler |
|
StartPutBytes
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
TLV bayt dizesini birden fazla parçada kodlar.
Bu,ContinuePutBytes ile birlikte kullanılmalıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
VPutStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
Dize çıkışını TLV öğesindeki biçime göre biçimlendirilmiş şekilde kodlayın.
PutStringF, çıkışın bir karakter arabelleği yerine TLV öğesinde depolandığı bir sprintf analogudur. Genişletilmiş yazdırma işlevi mevcut olduğunda, işlev sonuç dizesini sürekli olmayan bir temel depolama alanına üretebilir. Uygulama, aşağıdaki Printf geliştirmelerini destekler:
Platform, kişisel karakterin yerine özel bir geri çağırma çağırmak için geri çağırmaya dayalı vcbprintf
sağlar.
Platform, vsnprintf_ex
adlı varyantın, çıkışın ilk n
karakterinin atlanmasına ilişkin hükümlerinin haricinde tam olarak vsnprintf gibi davranan bir varyantı sağlar.
Geri çağırmaya dayalı işlevin en basit yöntem olabileceği ve en az sayıda kod kullanabilse de vsprintf_ex
çeşitli işlevler için daha az yığın kullanılır.
Yukarıdakilerden hiçbiri kullanılabilir değilse ancak platform malloc
sağlarsa işlev, çıkışı tutmak için geçici bir arabelle ayırır. Platform, matba ailesine veya Malloc'a geliştirme yapmadığında çıkış, mevcut TLV depolama alanında sürekli duruma sığacak şekilde kesilir.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Döndürülen Değerler |
|
Herkese açık statik işlevler
Nihai Paket Paketini Bitir
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
PacketBuffers zincirine yazmak için bir TLVWriter FinalizeBuffer işlevinin uygulanması.
FinalizePacketBuffer() işlevi, PacketBuffers zincirine yazmak için TLVWriter kullanılırken gerekli olan kesinleştirmeyi gerçekleştirir. İşlev, GetNewPacketBuffer() işleviyle birlikte kullanılmak üzere tasarlanmıştır.
FinalizePacketBuffer() işlevinin API'si hakkında daha fazla bilgi için FinalizeBufferFunct türü tanımına bakın.
YeniYeniFarkı_Merkezi Alın
WEAVE_ERROR GetNewBuffer_Malloced( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
Dinamik bir arabelleğe yazmak için bir TLVWriter GetNewBuffer işlevi uygulaması.
GetNewBuffer_Malloced() işlevi, kodlamayı depolamak için temel dinamik arabellek boyutunun iki katına çıkarılarak bir TLVWriter öğesine yeni çıkış alanı sağlar. İşlev, TLVWriter GetNewBuffer işlev işaretçisine atanacak şekilde tasarlanmıştır.
GetNewBuffer_Malloced() işlevinin API'si hakkında ek bilgi için GetNewBufferFunct tür tanımına bakın.
YeniPacketBuffer
WEAVE_ERROR GetNewPacketBuffer( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
PacketBuffers zincirine yazmak için bir TLVWriter GetNewBuffer işlevi uygulaması.
GetNewPacketBuffer() işlevi, kodlamayı depolamak için bir veya daha fazla PaketetBuffers zinciri ayırarak TLVWriter öğesine yeni çıkış alanı sağlar. İşlev, TLVWriter GetNewBuffer işlev işaretçisine atanacak şekilde tasarlanmıştır.
GetNewPacketBuffer'ı bir TLVWriter ile kullanırken, arabellek zincirini kesinleştirmek için ilgili FinalizePacketBuffer() işlevinin de (veya eşdeğeri) kullanılması gerektiğini unutmayın.
GetNewPacketBuffer() işlevinin API'sı hakkında ek bilgi için GetNewBufferFunct tür tanımına bakın.
Korumalı işlevler
IsCloseContainerAyrılmış
bool IsCloseContainerReserved( void ) const
Kapsayıcının, container'ı başlatma / açma noktasında CloseContainer simgesi için boşluk bırakması gerekip gerekmediğini belirleyin.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerAyrılmış
void SetCloseContainerReserved( bool aCloseContainerReserved )
Kapsayıcının, kapsayıcıyı başlatma / açma noktasında CloseContainer simgesi için boşluk bırakması gerekip gerekmediğini ayarlayın.
SetContainerOpen
void SetContainerOpen( bool aContainerOpen )
Yazma Verileri
WEAVE_ERROR WriteData( const uint8_t *p, uint32_t len )
YazarÖğe Başlığı
WEAVE_ERROR WriteElementHead( TLVElementType elemType, uint64_t tag, uint64_t lenOrVal )
Yazarken Öğe Verileri
WEAVE_ERROR WriteElementWithData( TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen )