nl:: örgü:: TLV:: TLVGüncelleyici
#include <src/lib/core/WeaveTLV.h>
/ Düzenleme ekleme / elemanları silinmesi için bir birleştirilmiş okuyucu / yazıcı arayüzü sağlar TLV kodlama.
Özet
TLVUpdater bir birlikTLVReader veTLVWriter nesneler ve / düzenleme silme verileri bir kodlama hem de yeni elemanları eklemek için arayüz yöntemler sağlar TLV kodlama. TLVUpdater amacı esas olarak iki imleçler, (mevcut veri fazla kopyalama ya da yeni bir veri yazma için ya da) yazmak için mevcut kodlama okumak için bir başka görevi görür.
Semantik, TLVUpdater nesne fonksiyonları arasında bir birlik gibiTLVReader veTLVWriter . TLVUpdater yöntemler TLVReader / TLVWriter benzer şekilde adlandırılmış muadilleri olarak az ya da çok benzer anlamlara sahiptir. Semantik farklılıklar vardır durumlarda, farklılıklar açıkça işlevin yorum bölümünde belgelenmiştir WeaveTLVUpdater.cpp .
Yaklaşık bir özellikle önemli bir not TLVUpdater sitesindeki PutBytes () ve PutString () yöntemleri bir taşma oluştuğunda yazılan tek eleman bir başlık ile bozuk bir halde kodlama bırakmak olabilir. Uygulamalar emin kodlamayı yazmak için yaklaşık Yeterli boş alan olduğundan emin olmak için GetRemainingFreeLength () çağırabilir. GetRemainingFreeLength () size sadece boş bayt söyler ve uygulama yazılı alır kodlanmış verinin uzunluğunu bilmemiz için bir yol olduğunu unutmayın. Bir taşma durumunda, hem PutBytes() hem de PutString(), arayana WEAVE_ERROR_BUFFER_TOO_SMALL döndürür.
Ayrıca, not olduğunu Sonraki () metodu sonraki öğeye iç okuyucuyu ilerlemek aynı zamanda mevcut eleman atlayıp hem aşırı yüklü. Zaten kodlanmış elemanları atlayarak (atlayarak hazır) yeni serbest alan için hesaba iç yazarın boş alan devlet değişkenlerini değiştirerek gerektirdiğinden, uygulama çağrısında bulunması bekleniyor İleri () , değeri o değil bir Get () yöntemine sonra güncelleyici üzerinde ' geri yazmak istiyorum (bu, geçerli öğeyi atlamaya eşdeğerdir).
Kamu işlevleri | |
---|---|
CopyElement (TLVReader & reader) | |
CopyElement (uint64_t tag,TLVReader & reader) | |
DupBytes (uint8_t *& buf, uint32_t & dataLen) | |
DupString (char *& buf) | |
EndContainer ( TLVType outerContainerType) | |
EnterContainer ( TLVType & outerContainerType) | Bir hazırlar TLVUpdater bir kabın elemanlarını okumak için bir nesne. |
ExitContainer ( TLVType outerContainerType) | |
Finalize (void) | |
Get (bool & v) | |
Get (int8_t & v) | |
Get (int16_t & v) | |
Get (int32_t & v) | |
Get (int64_t & v) | |
Get (uint8_t & v) | |
Get (uint16_t & v) | |
Get (uint32_t & v) | |
Get (uint64_t & v) | |
Get (float & v) | |
Get (double & v) | |
GetBytes (uint8_t *buf, uint32_t bufSize) | |
GetContainerType (void) const | |
GetDataPtr (const uint8_t *& data) | |
GetImplicitProfileId (void) | uint32_t |
GetLength (void) const | uint32_t |
GetLengthRead (void) const | uint32_t |
GetLengthWritten (void) | uint32_t |
GetReader (TLVReader & containerReader) | void |
GetRemainingFreeLength (void) | uint32_t |
GetRemainingLength (void) const | uint32_t |
GetString (char *buf, uint32_t bufSize) | |
GetTag (void) const | uint64_t |
GetType (void) const | |
Init (uint8_t *buf, uint32_t dataLen, uint32_t maxLen) | Bir başlatma TLVUpdater düzenlemek için nesnenin tek bir giriş tamponu. |
Init (TLVReader & aReader, uint32_t freeLen) | Bir başlatma TLVUpdater bir kullanarak nesneyiTLVReader . |
Move (void) | |
MoveUntilEnd (void) | void Her şeyi hareket TLVUpdater girişinin sonuna kadar o anki okuma alanına TLV çıkışına fazla tampon. |
Next (void) | Geçerli elemanı atla ve ilerletmek TLVUpdater girişi sonraki elemana nesneyi TLV . |
Put (uint64_t tag, int8_t v) | |
Put (uint64_t tag, int16_t v) | |
Put (uint64_t tag, int32_t v) | |
Put (uint64_t tag, int64_t v) | |
Put (uint64_t tag, uint8_t v) | |
Put (uint64_t tag, uint16_t v) | |
Put (uint64_t tag, uint32_t v) | |
Put (uint64_t tag, uint64_t v) | |
Put (uint64_t tag, int8_t v, bool preserveSize) | |
Put (uint64_t tag, int16_t v, bool preserveSize) | |
Put (uint64_t tag, int32_t v, bool preserveSize) | |
Put (uint64_t tag, int64_t v, bool preserveSize) | |
Put (uint64_t tag, uint8_t v, bool preserveSize) | |
Put (uint64_t tag, uint16_t v, bool preserveSize) | |
Put (uint64_t tag, uint32_t v, bool preserveSize) | |
Put (uint64_t tag, uint64_t v, bool preserveSize) | |
Put (uint64_t tag, float v) | |
Put (uint64_t tag, double v) | |
PutBoolean (uint64_t tag, bool v) | |
PutBytes (uint64_t tag, const uint8_t *buf, uint32_t len) | |
PutNull (uint64_t tag) | |
PutString (uint64_t tag, const char *buf) | |
PutString (uint64_t tag, const char *buf, uint32_t len) | |
SetImplicitProfileId (uint32_t profileId) | void İçin Örtülü Profili kimliğini ayarla TLVUpdater nesne. |
StartContainer (uint64_t tag, TLVType containerType, TLVType & outerContainerType) | |
VerifyEndOfContainer (void) |
Kamu işlevleri
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
CopyElement
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
DupByte
WEAVE_ERROR DupBytes( uint8_t *& buf, uint32_t & dataLen )
DupString
WEAVE_ERROR DupString( char *& buf )
EndContainer
WEAVE_ERROR EndContainer( TLVType outerContainerType )
Konteyner Girin
WEAVE_ERROR EnterContainer( TLVType & outerContainerType )
Bir hazırlar TLVUpdater bir kabın elemanlarını okumak için bir nesne.
Aynı zamanda, çıkış konteyner nesnesinin bir başlangıç kodlayan TLV .
EnterContainer () metodu mevcut hazırlar TLVUpdater bir üyesi elemanları okumaya başlamak için nesne TLV konteyner (bir yapı, dizi ya da yol). Her çağrı için EnterContainer () uygulamaları için gelen arama yapmak zorundadır ExitContainer () .
Tüm EnterContainer () olarak adlandırılır TLVUpdater bireyin okuyucu muhafaza elemanı üzerinde konumlandırılmalıdır. Yöntem, kapsayıcıyı okurken güncelleyicinin bağlamını kaydetmek için kullanılacak bir TLVType değerine bir başvuruyu argüman olarak alır.
Tüm EnterContainer () metodu döner, güncelleyici, kabın birinci elemanın hemen önce konumlandırılmıştır. Defalarca arayarak İleri () uç güncelleyici WEAVE_END_OF_TLV dönecektir noktada söz konusu, ulaşılıncaya kadar koleksiyonun üyeleri aracılığıyla güncelleyiciyi ilerletir.
Uygulama bir kap okuma bittikten sonra bu çağrı ile kabın sonra elemanlarını okumak devam ExitContainer () metodu.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
parametreler |
| ||||||
Dönüş Değerleri |
|
ÇıkışKonteyner
WEAVE_ERROR ExitContainer( TLVType outerContainerType )
Bir okuma tamamlar TLV kap elemanı ve bir ucunu kodlayan TLV çıkış elemanı TLV .
ExitContainer () yöntemi, bir durumunu geri TLVUpdater bir çağrısının ardından nesnenin EnterContainer () . Her çağrı için EnterContainer () uygulamalar için karşılık gelen bir çağrı yapmak gerekir ExitContainer () tarafından döndürülen içerik değeri geçen EnterContainer () yöntemi.
Tüm ExitContainer () döner, TLVUpdater okuyucu giriş kabı aşağıda birinci elemanın hemen önce konumlandırılmış TLV . Bu noktadan sonra uygulamalar çağırabilirsiniz İleri () kalan elemanları aracılığıyla önceden etmek.
Bir kez EnterContainer () adı olmuştur, uygulamalar çağırabilirsiniz ExitContainer () bakılmaksızın temel kapta tüm unsurları okuma olmuştur olsun, zaman içinde herhangi bir noktada güncelleyici üzerinde. Ayrıca sesleniyor not ExitContainer () kapta tüm unsurları okumadan önce, güncellenmiş kapta sonuçlanacaktır çıktısında kesildi alma TLV .
Ayrıntılar | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
parametreler |
| ||||||||||
Dönüş Değerleri |
|
Sonuçlandırmak
WEAVE_ERROR Finalize( void )
Almak
WEAVE_ERROR Get( bool & v )
Almak
WEAVE_ERROR Get( int8_t & v )
Almak
WEAVE_ERROR Get( int16_t & v )
Almak
WEAVE_ERROR Get( int32_t & v )
Almak
WEAVE_ERROR Get( int64_t & v )
Almak
WEAVE_ERROR Get( uint8_t & v )
Almak
WEAVE_ERROR Get( uint16_t & v )
Almak
WEAVE_ERROR Get( uint32_t & v )
Almak
WEAVE_ERROR Get( uint64_t & v )
Almak
WEAVE_ERROR Get( float & v )
Almak
WEAVE_ERROR Get( double & v )
GetBytes
WEAVE_ERROR GetBytes( uint8_t *buf, uint32_t bufSize )
GetContainerType
TLVType GetContainerType( void ) const
GetDataPtr
WEAVE_ERROR GetDataPtr( const uint8_t *& data )
GetImplicitProfileId
uint32_t GetImplicitProfileId( void )
GetLength
uint32_t GetLength( void ) const
GetLengthRead
uint32_t GetLengthRead( void ) const
GetLengthWritten
uint32_t GetLengthWritten( void )
GetOkuyucu
void GetReader( TLVReader & containerReader )
GetRemainingFreeUzunluk
uint32_t GetRemainingFreeLength( void )
GetRemainingLength
uint32_t GetRemainingLength( void ) const
GetString
WEAVE_ERROR GetString( char *buf, uint32_t bufSize )
GetEtiket
uint64_t GetTag( void ) const
GetType
TLVType GetType( void ) const
İçinde
WEAVE_ERROR Init( uint8_t *buf, uint32_t dataLen, uint32_t maxLen )
Bir başlatma TLVUpdater düzenlemek için nesnenin tek bir giriş tamponu.
Bu yöntem arayan üzerinde, TLV tamponu içinde veri tampon ucuna taşınır ve özelTLVReader amacı, bu yeniden konumlandırılan tamponu ile başlatılır. Özel birTLVWriter nesne de başında artık kullanılabilir boş alan üzerine başlatılır. Uygulamalar kullanabilirsiniz TLVUpdater ayrıştırmak nesneyi TLV veri ve değiştirmek / varolan unsurları silmek veya kodlama yeni öğeler ekleyin.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
parametreler |
| ||||||
Dönüş Değerleri |
|
İçinde
WEAVE_ERROR Init( TLVReader & aReader, uint32_t freeLen )
Bir başlatma TLVUpdater bir kullanarak nesneyiTLVReader .
Bu yöntem arayan üzerinde, TLV tamponu veriler ile gösterilenTLVReader arabelleğinin sonuna mevcut okuma alanına taşınır. Yeni bir özelTLVReader yeni bir özel sırasında nesnenin, bu yeni bir konumdan okunması için başlatılırTLVWriter nesne kadar serbest tampon alanı için yazma için başlatılır.
Eğer NotTLVReader zaten bir unsuru "açık" konumlandırılmış, ilk yedeklenen kapalı olduğunu elemanın başlangıç. Ayrıca eğer örneğin Yapım de sahip konteyner elemanları, kapalı bu destek, dikkatTLVReader zaten çağırmak için kullanılan EnterContainer () , ardından arka-off bir şey yok. AncakTLVReader muhafaza elemanı ve üzerine yerleştirildi EnterContainer () henüz sonra, çağrılmamışsaTLVReader nesne destek kapalı olan kap kafasının başlangıcına.
GirişTLVReader nesne dönmeden önce imha edilecek ve uygulama dönüş aynı faydalanmak gerekir.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
parametreler |
| ||||||
Dönüş Değerleri |
|
Hareket
WEAVE_ERROR Move( void )
Kopya giriş akım elemanı TLV çıkışı TLV .
Taşı () metodu kopyalar üzerinde mevcut elemanı TLVUpdater sitesindeki okuyucu üzerinde konumlandırılmış TLVUpdater s yazar. ' Uygulama çağırmalıdır ileri () ve pozisyon TLVUpdater bu yöntemi çağırmadan önce bir öğe sitesindeki okuyucu. Tıpkı TLVReader :: sonraki () okuyucu çağrı sırasında bir muhafaza elemanı üzerinde konumlandırılmış ise yöntem, kabın tüm üyeleri kopyalanacaktır. Okuyucu herhangi bir öğe üzerinde konumlanmadıysa, bu yöntemin çağrılmasında hiçbir şey değişmez.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Dönüş Değerleri |
|
Sonuna Kadar Taşı
void MoveUntilEnd( void )
Her şeyi hareket TLVUpdater girişinin sonuna kadar o anki okuma alanına TLV çıkışına fazla tampon.
Her şeyi hareket Bu yöntem, destekler TLVUpdater 'okuyucu sonuna kadar o anki okuma noktasına fazla tampon TLVUpdater s yazar.'
Sonraki
WEAVE_ERROR Next( void )
Geçerli elemanı atla ve ilerletmek TLVUpdater girişi sonraki elemana nesneyi TLV .
Sonraki () yöntemi giriş mevcut elemanı atlar TLV ve gelişmeler TLVUpdater sonraki elemana sitesindeki okuyucu aynı muhafaza bağlamında göstermiş bulunuyoruz. Özel olarak, okuyucu en dış seviyede konumlanmış olduğu takdirde TLV çağrı, kodlama ileri () aşağıdaki, en üst eleman için ilerler. Okuyucu içine yerleştirilmiş ise, TLV çağrı, muhafaza elemanının (bir yapı, dizi ya da yol) ileri () kabın sonraki üyesi elemanı için ilerler.
Yana sonraki () çağrı halen mevcut bağlamda okuyucu hareketi, kısıtlar ileri () okuyucu ilk ulaşıncaya kadar üye elemanları (ve herhangi bir iç içe kapların üyeleri) atlayarak, kabın üzerinde ileri bir muhafaza elemanı üzerinde konumlandırıldığında kapsayıcıdan sonra eleman.
Belirli bir tutucu kapsamında başka elemanlar olduğunda sonraki () bir döner metot WEAVE_END_OF_TLV hata ve okuyucunun pozisyonu değişmeden kalır.
Ayrıntılar | |||||
---|---|---|---|---|---|
Dönüş Değerleri |
|
Koymak
WEAVE_ERROR Put( uint64_t tag, int8_t v )
Koymak
WEAVE_ERROR Put( uint64_t tag, int16_t v )
Koymak
WEAVE_ERROR Put( uint64_t tag, int32_t v )
Koymak
WEAVE_ERROR Put( uint64_t tag, int64_t v )
Koymak
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
Koymak
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
Koymak
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
Koymak
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
Koymak
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
Koymak
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
Koymak
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
Koymak
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
Koymak
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
Koymak
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
Koymak
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
Koymak
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
Koymak
WEAVE_ERROR Put( uint64_t tag, float v )
Koymak
WEAVE_ERROR Put( uint64_t tag, double v )
PutBoole
l10n-yer tutucu=56PutByte'ları
l10n-yer tutucu=57PutNull
l10n-yer tutucu=58PutString
l10n-yer tutucu=59PutString
l10n-yer tutucu=60SetImplicitProfileId
l10n-yer tutucu=61TLVUpdater nesne için Örtülü Profil Kimliğini ayarlayın.
Bu yöntem, TLVUpdater nesne için kapalı profil kimliğini belirler. Güncelleyici yeni eleman ile ilişkili etiketin profil kimliği profileId değerini eşleşirse, yeni bir unsur kodlamak için sorulduğunda, güncelleyici böylece işlemdeki profil kimliğini atlayarak, örtük biçimde etiketi kodlar.
Ayrıntılar | |||
---|---|---|---|
parametreler |
|