nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
यह Weave TLV फ़ॉर्मैट में डेटा लिखने के लिए, एक मेमोरी एफ़िशिएंट एन्कोडर उपलब्ध कराता है.
खास जानकारी
TLVWriter, Weave TLV डेटा के लिए, फ़ॉरवर्ड-ओनली, स्ट्रीम-स्टाइल एन्कोडर लागू करता है. ऐप्लिकेशन, लेखक के Put() तरीकों में से किसी एक को कॉल करके, कोड में बदलने के लिए डेटा लिखते हैं. साथ ही, ज़रूरत के मुताबिक इससे जुड़े टैग और वैल्यू की जानकारी पास करते हैं. इसी तरह, ऐप्लिकेशन लेखक के OpenContainer() या EnterContainer() तरीकों को कॉल करके, TLV कंटेनर टाइप (स्ट्रक्चर, अरे या पाथ) को कोड में बदल सकते हैं.
TLVWriter ऑब्जेक्ट, सीधे किसी तय आउटपुट बफ़र में या एक या उससे ज़्यादा PacketBuffer ऑब्जेक्ट की चेन में डेटा लिख सकता है. इसके अलावा, आउटपुट को किसी आर्बिट्रेरी डेस्टिनेशन पर ले जाने के लिए, ऐप्लिकेशन खुद के GetNewBuffer
और FinalizeBuffer
फ़ंक्शन दे सकते हैं, जैसे कि सॉकेट या इवेंट की सूची.
इनहेरिटेंस
पहले से मालूम सब-क्लास: nl::Weave::TLV::CircularTLVWriter
सुरक्षित किए गए टाइप |
|
---|---|
@72{
|
enum |
सार्वजनिक प्रकार |
|
---|---|
FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
|
WEAVE_ERROR(* यह फ़ंक्शन, TLVWriter ऑब्जेक्ट से आउटपुट को फ़ाइनल करने के लिए इस्तेमाल होता है. |
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
|
WEAVE_ERROR(* यह ऐसा फ़ंक्शन है जो TLVWriter को नया आउटपुट बफ़र स्पेस उपलब्ध कराता है. |
सार्वजनिक विशेषताएं |
|
---|---|
AppData
|
void *
एक पॉइंटर फ़ील्ड, जिसका इस्तेमाल ऐप्लिकेशन-विशिष्ट डेटा के लिए किया जा सकता है.
|
FinalizeBuffer
|
किसी फ़ंक्शन का पॉइंटर, जिसे TLVWriter को फ़ाइनल किया जाने पर कॉल किया जाएगा.
|
GetNewBuffer
|
किसी फ़ंक्शन का पॉइंटर, जो TLVWriter को नया आउटपुट बफ़र स्पेस देगा.
|
ImplicitProfileId
|
uint32_t
टैग का प्रोफ़ाइल आईडी, जिसे इंप्लिसिट रूप में एन्कोड किया जाना चाहिए.
|
सुरक्षित किए गए एट्रिब्यूट |
|
---|---|
mBufHandle
|
uintptr_t
|
mBufStart
|
uint8_t *
|
mContainerType
|
|
mLenWritten
|
uint32_t
|
mMaxLen
|
uint32_t
|
mRemainingLen
|
uint32_t
|
mWritePoint
|
uint8_t *
|
सार्वजनिक फ़ंक्शन |
|
---|---|
CloseContainer(TLVWriter & containerWriter)
|
OpenContainer() को कॉल करने के बाद, TLV कंटेनर को लिखा जाता है.
|
ContinuePutBytes(const uint8_t *buf, uint32_t len)
|
TLV बाइट स्ट्रिंग वैल्यू को कोड में बदलता है.
|
CopyContainer(TLVReader & container)
|
|
CopyContainer(uint64_t tag, TLVReader & container)
|
सदस्य एलिमेंट के पहले से कोड में बदले गए सेट के TLV कंटेनर एलिमेंट को कोड में बदलता है.
|
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
|
TLV कंटेनर एलिमेंट को कोड में बदलता है, जिसमें पहले से कोड में बदले गए कंटेनर के मेंबर एलिमेंट शामिल होते हैं.
|
CopyElement(TLVReader & reader)
|
किसी TLV एलिमेंट को रीडर ऑब्जेक्ट से राइटर में कॉपी करता है.
|
CopyElement(uint64_t tag, TLVReader & reader)
|
|
EndContainer(TLVType outerContainerType)
|
TLV कंटेनर एलिमेंट की एन्कोडिंग को पूरा करता है.
|
Finalize(void)
|
TLV एन्कोडिंग को पूरा करें.
|
GetContainerType(void) const
|
उस कंटेनर का टाइप दिखाता है जिसमें TLVWriter फ़िलहाल लिख रहा है.
|
GetLengthWritten(void)
|
uint32_t
राइटर शुरू करने के बाद, लिखे गए बाइट की कुल संख्या दिखाता है.
|
Init(uint8_t *buf, uint32_t maxLen)
|
void
सिंगल आउटपुट बफ़र में लिखने के लिए, TLVWriter ऑब्जेक्ट को शुरू करता है.
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
किसी एक PacketBuffer में लिखने के लिए, TLVWriter ऑब्जेक्ट को शुरू करता है.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
एक या ज़्यादा PacketBuffers में लिखने के लिए, TLVWriter ऑब्जेक्ट को शुरू करता है.
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
डाइनैमिक बफ़र में लिखने के लिए TLVWriter ऑब्जेक्ट को शुरू करता है.
|
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
|
|
Put(uint64_t tag, int8_t v)
|
TLV की साइन की गई पूर्णांक वैल्यू को कोड में बदलता है.
|
Put(uint64_t tag, int8_t v, bool preserveSize)
|
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)
|
TLV की साइन नहीं की गई इंटीजर वैल्यू को कोड में बदलता है.
|
Put(uint64_t tag, uint8_t v, bool preserveSize)
|
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)
|
यह TLV फ़्लोटिंग पॉइंट वैल्यू को कोड में बदलता है.
|
PutBoolean(uint64_t tag, bool v)
|
TLV बूलियन वैल्यू को कोड में बदलता है.
|
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
|
TLV बाइट स्ट्रिंग वैल्यू को कोड में बदलता है.
|
PutNull(uint64_t tag)
|
TLV शून्य वैल्यू को कोड में बदलता है.
|
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
|
सदस्य एलिमेंट के पहले से कोड में बदले गए सेट के TLV कंटेनर एलिमेंट को कोड में बदलता है.
|
PutString(uint64_t tag, const char *buf)
|
TLV UTF8 स्ट्रिंग वैल्यू को कोड में बदलता है.
|
PutString(uint64_t tag, const char *buf, uint32_t len)
|
TLV UTF8 स्ट्रिंग वैल्यू को कोड में बदलता है.
|
PutStringF(uint64_t tag, const char *fmt, ...)
|
स्ट्रिंग आउटपुट को TLV एलिमेंट में फ़ॉर्मैट के हिसाब से एन्कोड करें.
|
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
|
इसकी मदद से, नए TLV कंटेनर एलिमेंट को कोड में बदलना शुरू किया जाता है.
|
StartPutBytes(uint64_t tag, uint32_t totalLen)
|
TLV बाइट स्ट्रिंग को कई हिस्सों में एन्कोड करता है.
|
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
|
स्ट्रिंग आउटपुट को TLV एलिमेंट में फ़ॉर्मैट के हिसाब से एन्कोड करें.
|
सार्वजनिक स्टैटिक फ़ंक्शन |
|
---|---|
FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
|
PacketBuffers की चेन में लिखने के लिए, TLVWriter FinalizeBuffer फ़ंक्शन को लागू करना.
|
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
डाइनैमिक बफ़र में लिखने के लिए TLVWriter GetNewBuffer फ़ंक्शन को लागू करना.
|
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
PacketBuffers की चेन में लिखने के लिए, TLVWriter GetNewBuffer फ़ंक्शन को लागू करना.
|
सुरक्षित फ़ंक्शन |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
यह तय करें कि कंटेनर को शुरू / खोलने के समय पर, कंटेनर को CloseContainer चिह्न के लिए जगह रिज़र्व करनी चाहिए.
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
यह सेट करें कि कंटेनर को शुरू / खोलते समय, कंटेनर को CloseContainer चिह्न के लिए जगह रिज़र्व करनी चाहिए या नहीं.
|
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)
|
सुरक्षित किए गए टाइप
@72
@72
सार्वजनिक प्रकार
FinalizeBufferFunct
WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
यह फ़ंक्शन, TLVWriter ऑब्जेक्ट से आउटपुट को फ़ाइनल करने के लिए इस्तेमाल होता है.
इस टाइप के फ़ंक्शन तब कॉल किए जाते हैं, जब TLVWriter का FINALize() तरीका कॉल किया जाता है. राइटर ऑब्जेक्ट के आउटपुट को इस्तेमाल करने के लिए, फ़ंक्शन से सभी ज़रूरी क्लीन-अप या फ़ाइनलाइज़ेशन की उम्मीद की जाती है. इसके उदाहरणों में ये चीज़ें शामिल हैं, जैसे कि कोड में बदलने के तरीके की आखिरी अवधि रिकॉर्ड करना या फ़ाइल डिस्क्रिप्टर को बंद करना.
जानकारी | |||||||||
---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||
रिटर्न वैल्यू |
|
GetNewBufferFunct
WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
यह ऐसा फ़ंक्शन है जो TLVWriter को नया आउटपुट बफ़र स्पेस उपलब्ध कराता है.
इस तरह के फ़ंक्शन का इस्तेमाल, TLVWriter को लिखने के लिए नया बफ़र स्पेस तैयार करने के लिए किया जाता है. कॉल किए जाने पर, फ़ंक्शन से उम्मीद की जाती है कि वह मेमोरी की ऐसी जगह पर पॉइंटर दिखाएगा जहां नया डेटा लिखा जाना चाहिए. साथ ही, उससे जुड़ी ज़्यादा से ज़्यादा लंबाई भी शामिल होनी चाहिए. यह फ़ंक्शन, डेटा को होल्ड करने के लिए नया बफ़र असाइन करता है या पहले से लिखे डेटा को किसी मौजूदा बफ़र से मिटाता है. ऐसा करके, लिखने के लिए जगह दी जा सकती है.
जानकारी | |||||||||
---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||
रिटर्न वैल्यू |
|
सार्वजनिक विशेषताएं
AppData
void * AppData
एक पॉइंटर फ़ील्ड, जिसका इस्तेमाल ऐप्लिकेशन-विशिष्ट डेटा के लिए किया जा सकता है.
FinalizeBuffer
FinalizeBufferFunct FinalizeBuffer
किसी फ़ंक्शन का पॉइंटर, जिसे TLVWriter को फ़ाइनल किया जाने पर कॉल किया जाएगा.
जब भी FINALize() तरीके का इस्तेमाल किया जाएगा, तो TLVWriter ऑब्जेक्ट, FinalizeBuffer फ़ंक्शन को कॉल करेगा. ऐप्लिकेशन FINALize() को कॉल करने से पहले किसी भी समय फ़ंक्शन पॉइंटर को सेट कर सकते हैं. डिफ़ॉल्ट रूप से, पॉइंटर शून्य पर सेट होता है. इस वजह से, FINALize() तरीका फ़ंक्शन को कॉल करना छोड़ देता है.
FinalizeBufferFunct प्रकार की परिभाषा देखें, ताकि FinalizeBuffer फ़ंक्शन लागू करने के बारे में ज़्यादा जानकारी मिल सके.
GetNewBuffer
GetNewBufferFunct GetNewBuffer
किसी फ़ंक्शन का पॉइंटर, जो TLVWriter को नया आउटपुट बफ़र स्पेस देगा.
जब भी मौजूदा आउटपुट बफ़र के साइज़ से ज़्यादा का डेटा लिखने की कोशिश की जाएगी, तो TLVWriter ऑब्जेक्ट, GetNewBuffer फ़ंक्शन को कॉल करेगा. अगर आउटपुट डेटा को शून्य (डिफ़ॉल्ट वैल्यू) पर सेट किया जाता है, तो आउटपुट डेटा मौजूदा बफ़र से ओवरफ़्लो होने पर, लेखक WEAVE_ERROR_NO_MEMORY नतीजे दिखाएगा.
GetNewBuffer को किसी भी समय ऐप्लिकेशन की मदद से सेट किया जा सकता है. हालांकि, आम तौर पर इसे तब सेट किया जाता है, जब राइटर का इस्तेमाल शुरू किया जाता है.
GetNewBufferFunct प्रकार की परिभाषा देखें, ताकि आपको GetNewBuffer फ़ंक्शन को लागू करने के बारे में ज़्यादा जानकारी मिल सके.
ImplicitProfileId
uint32_t ImplicitProfileId
टैग का प्रोफ़ाइल आईडी, जिसे इंप्लिसिट रूप में एन्कोड किया जाना चाहिए.
जब किसी लेखक से किसी नए एलिमेंट को कोड में बदलने के लिए कहा जाता है, तो अगर नए एलिमेंट से जुड़े टैग का प्रोफ़ाइल आईडी, ImplicitProfileId
मेंबर की वैल्यू से मेल खाता है, तो लेखक टैग को इंप्लिसिट फ़ॉर्म में एन्कोड करेगा. इस प्रोसेस में प्रोफ़ाइल आईडी को छोड़ दिया जाएगा.
डिफ़ॉल्ट रूप से, ImplicitProfileId
प्रॉपर्टी kProfileIdNot स्थल पर सेट होती है, जो लेखक को निर्देश देती है कि वे अनजाने में कोड में बदले गए टैग न बनाएं. ऐप्लिकेशन, एन्कोडिंग के मौजूदा पॉइंट से शुरू करते हुए, किसी भी समय ImplicitProfileId
को इंप्लिसिट रूप में कोड में बदलने के टैग को चालू कर सकते हैं. सेट किया जाने वाला सही प्रोफ़ाइल आईडी आम तौर पर, ऐप्लिकेशन के संदर्भ या बोले जा रहे प्रोटोकॉल पर निर्भर करता है.
सुरक्षित किए गए एट्रिब्यूट
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
सार्वजनिक फ़ंक्शन
CloseContainer
WEAVE_ERROR CloseContainer( TLVWriter & containerWriter )
OpenContainer() को कॉल करने के बाद, TLV कंटेनर को लिखा जाता है.
OpenContainer() को कॉल करने के बाद, CloseContainer() का तरीका, पैरंट TLVWriter ऑब्जेक्ट की स्थिति को पहले जैसा करता है. OpenContainer() को किए जाने वाले हर कॉल के लिए, CloseContainer() के लिए एक कॉल करना चाहिए. इससे, दोनों तरीकों में एक ही कंटेनर राइटर का रेफ़रंस पास किया जाता है.
CloseContainer() के वापस आने पर, ऐप्लिकेशन कंटेनर एलिमेंट के बाद दिखने वाले अन्य TLV एलिमेंट लिखने के लिए, पैरंट राइटर का इस्तेमाल करना जारी रख सकते हैं. इस समय, दिए गए कंटेनर राइटर को 'इस्तेमाल शुरू किया गया' माना जाना चाहिए और इसे फिर से शुरू किए बिना इस्तेमाल नहीं किया जाना चाहिए.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
ContinuePutBytes
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
TLV बाइट स्ट्रिंग वैल्यू को कोड में बदलता है.
इसका इस्तेमाल StartPutBytes के साथ किया जाना चाहिए.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
TLVReader ऑब्जेक्ट से TLV कंटेनर एलिमेंट कॉपी किया जाता है.
CopyContainer() का इस्तेमाल करके, नए TLV कंटेनर एलिमेंट को कोड में बदला जाता है. ऐसा करने के लिए, पहले से कोड में बदले गए कंटेनर एलिमेंट को कॉपी किया जाता है, जो TLVReader ऑब्जेक्ट की मौजूदा पोज़िशन पर होता है. यह तरीका, सोर्स एन्कोडिंग से कंटेनर के टाइप, टैग, और एलिमेंट को कॉपी करके, एक ही कॉल में नए कंटेनर एलिमेंट को पूरी तरह से लिखता है. तरीका वापस आने पर, राइटर ऑब्जेक्ट का इस्तेमाल, कंटेनर एलिमेंट के बाद ज़्यादा TLV एलिमेंट लिखने के लिए किया जा सकता है.
जानकारी | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||||||||
रिटर्न वैल्यू |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
सदस्य एलिमेंट के पहले से कोड में बदले गए सेट के TLV कंटेनर एलिमेंट को कोड में बदलता है.
CopyContainer() तरीका, नए TLV कंटेनर एलिमेंट (स्ट्रक्चर, अरे या पाथ) को कोड में बदलता है. इसमें सदस्य एलिमेंट का एक सेट होता है, जो TLVReader ऑब्जेक्ट से लिया जाता है. जब तरीके को कॉल किया जाता है, तो दिए गए रीडर ऑब्जेक्ट को TLV कंटेनर एलिमेंट पर रखा जाना चाहिए. कोड में बदले गए नए कंटेनर का टाइप और सदस्य, इनपुट कंटेनर के जैसा ही होंगे. नए कंटेनर के लिए टैग, इनपुट पैरामीटर के तौर पर बताया गया है.
तरीका वापस आने पर, राइटर ऑब्जेक्ट का इस्तेमाल, कंटेनर एलिमेंट के बाद ज़्यादा TLV एलिमेंट लिखने के लिए किया जा सकता है.
जानकारी | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||||||||
रिटर्न वैल्यू |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
TLV कंटेनर एलिमेंट को कोड में बदलता है, जिसमें पहले से कोड में बदले गए कंटेनर के मेंबर एलिमेंट शामिल होते हैं.
CopyContainer() तरीका, नए TLV कंटेनर एलिमेंट (स्ट्रक्चर, अरे या पाथ) को कोड में बदलता है. इसमें सदस्य एलिमेंट का सेट शामिल होता है, जो पहले से एन्कोड किए गए कंटेनर के कॉन्टेंट से लिया जाता है. जब तरीके को कॉल किया जाता है, तब दिए गए इनपुट बफ़र में मौजूद डेटा को TLV कंटेनर एलिमेंट के तौर पर पार्स किया जाता है. इसके बाद, एक नया कंटेनर लिखा जाता है जिसका टाइप और उसमें मौजूद सदस्य, इनपुट कंटेनर जैसे होते हैं. नए कंटेनर के लिए टैग, इनपुट पैरामीटर के तौर पर बताया गया है.
तरीका वापस आने पर, राइटर ऑब्जेक्ट का इस्तेमाल, कंटेनर एलिमेंट के बाद ज़्यादा TLV एलिमेंट लिखने के लिए किया जा सकता है.
जानकारी | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||||||
रिटर्न वैल्यू |
|
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
किसी TLV एलिमेंट को रीडर ऑब्जेक्ट से राइटर में कॉपी करता है.
CopyElement() तरीका, एक नए TLV एलिमेंट को कोड में बदलता है, जिसका टाइप, टैग, और वैल्यू किसी TLVReader ऑब्जेक्ट से लिया जाता है. जब तरीके को कॉल किया जाता है, तो दिए गए रीडर ऑब्जेक्ट को सोर्स TLV एलिमेंट पर रखा जाना चाहिए. कोड में बदले गए नए एलिमेंट का टाइप, टैग, और कॉन्टेंट, इनपुट कंटेनर जैसा ही होगा. अगर दिया गया एलिमेंट कोई TLV कंटेनर (स्ट्रक्चर, अरे या पाथ) है, तो कंटेनर का पूरा कॉन्टेंट कॉपी हो जाएगा.
जानकारी | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||||||||
रिटर्न वैल्यू |
|
CopyElement
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
EndContainer
WEAVE_ERROR EndContainer( TLVType outerContainerType )
TLV कंटेनर एलिमेंट की एन्कोडिंग को पूरा करता है.
EndContainer() का तरीका, TLV कंटेनर एलिमेंट की एन्कोडिंग को पूरा करता है. साथ ही, StartContainer() को पहले किए गए कॉल के बाद TLVWrite ऑब्जेक्ट की स्थिति को पहले जैसा करता है. StartContainer() को किए जाने वाले हर कॉल के लिए, EndContainer() को एक संबंधित कॉल करना चाहिए, ताकि StartContainer() कॉल से मिलने वाली TLVType वैल्यू को पास किया जा सके. EndContainer() के वापस आने पर, राइटर ऑब्जेक्ट का इस्तेमाल, कंटेनर एलिमेंट को फ़ॉलो करने वाले अतिरिक्त TLV एलिमेंट लिखने के लिए किया जा सकता है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
बिलिंग करें
WEAVE_ERROR Finalize( void )
TLV एन्कोडिंग को पूरा करें.
FINALize() तरीका, मौजूदा आउटपुट बफ़र में TLV एन्कोडिंग लिखने की प्रोसेस पूरी करता है. बफ़र की सामग्री का इस्तेमाल करने से पहले ऐप्लिकेशन को इस तरीके को कॉल करना चाहिए. FINALize() को सिर्फ़ तब कॉल किया जा सकता है, जब मौजूदा राइटर के लिए कोई कंटेनर राइटर न खुला हो. (OpenContainer()
देखें).
जानकारी | |||||||
---|---|---|---|---|---|---|---|
रिटर्न वैल्यू |
|
GetContainerType
TLVType GetContainerType( void ) const
उस कंटेनर का टाइप दिखाता है जिसमें TLVWriter फ़िलहाल लिख रहा है.
GetContainerType() तरीका, TLV कंटेनर का टाइप दिखाता है, जिसमें फ़िलहाल TLVWriter लिखा जा रहा है. अगर TLVWriter किसी कंटेनर के अंदर एलिमेंट नहीं लिख रहा है (उदाहरण के लिए, अगर किसी एन्कोडिंग के सबसे बाहरी लेवल पर लिखा जा रहा है), तो यह तरीका kTLVType_NotSafe दिखाता है.
जानकारी | |
---|---|
लौटाए जाने वाले प्रॉडक्ट |
मौजूदा कंटेनर का TLVType या अगर TLVWriter, किसी कंटेनर में एलिमेंट नहीं लिख रहा है, तो kTLVType_Not उपयोगकर्ता.
|
GetLengthWritten
uint32_t GetLengthWritten( void )
राइटर शुरू करने के बाद, लिखे गए बाइट की कुल संख्या दिखाता है.
जानकारी | |
---|---|
लौटाए जाने वाले प्रॉडक्ट |
राइटर शुरू किए जाने के बाद से, लिखे गए बाइट की कुल संख्या.
|
Init
void Init( uint8_t *buf, uint32_t maxLen )
Init
void Init( PacketBuffer *buf, uint32_t maxLen )
Init
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
एक या ज़्यादा PacketBuffers में लिखने के लिए, TLVWriter ऑब्जेक्ट को शुरू करता है.
दिए गए बफ़र में मौजूदा डेटा के आखिरी बाइट के तुरंत बाद लिखना शुरू हो जाता है. अगर allowDiscontiguousBuffers
सही है, तो डेटा की मात्रा को शामिल करने के लिए, ज़रूरत के हिसाब से अतिरिक्त PacketBuffers को दिए गए बफ़र में बांट दिया जाएगा और तय किया जाएगा. अगर तय किया गया आउटपुट बफ़र, पहले से ही बफ़र की चेन का हेड है, तो नए बफ़र तय करने से पहले, आउटपुट को चेन में बाद के बफ़र में लिखा जाएगा.
जानकारी | |||||||
---|---|---|---|---|---|---|---|
पैरामीटर |
|
InitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
डाइनैमिक बफ़र में लिखने के लिए TLVWriter ऑब्जेक्ट को शुरू करता है.
जानकारी | |||||||
---|---|---|---|---|---|---|---|
पैरामीटर |
|
OpenContainer
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
TLV कंटेनर एलिमेंट के सदस्यों को लिखने के लिए, नए TLVWriter ऑब्जेक्ट को शुरू करता है.
OpenContainer() तरीके का इस्तेमाल करके, किसी एन्कोडिंग में TLV कंटेनर एलिमेंट (स्ट्रक्चर, अरे या पाथ) लिखा जाता है. यह तरीका, नए कंटेनर के टाइप और टैग (अगर कोई हो) के साथ-साथ, नए राइटर ऑब्जेक्ट (कंटेनर राइटर) का रेफ़रंस लेता है, जिसे कंटेनर के एलिमेंट लिखने के लिए शुरू किया जाएगा. ऐप्लिकेशन, कंटेनर राइटर का इस्तेमाल करके नए कंटेनर के सदस्यों को लिखते हैं और फिर कंटेनर एन्कोडिंग को पूरा करने के लिए CloseContainer() को कॉल करते हैं.
कंटेनर राइटर खुला होने पर, ऐप्लिकेशन को पैरंट राइटर के तौर पर कॉल नहीं करना चाहिए और न ही उसकी स्थिति में बदलाव करना चाहिए.
कंटेनर राइटर, पैरंट राइटर से कई कॉन्फ़िगरेशन प्रॉपर्टी इनहेरिट करता है. इनके उदाहरण हैं:
- इंप्लिसिट प्रोफ़ाइल आईडी (ImplicitProfileId)
- ऐप्लिकेशन डेटा पॉइंटर (AppData)
- GetNewBuffer और FinalizeBuffer फ़ंक्शन के पॉइंटर
जानकारी | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||||
रिटर्न वैल्यू |
|
रखें
WEAVE_ERROR Put( uint64_t tag, int8_t v )
TLV की साइन की गई पूर्णांक वैल्यू को कोड में बदलता है.
यह सदस्य का ओवरलोडेड फ़ंक्शन है, जिसे आपकी सुविधा के लिए दिया गया है. यह ऊपर दिए गए फ़ंक्शन से सिर्फ़ स्वीकार किए जाने वाले तर्क(जवाबों) में अलग है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
रखें
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
TLV की साइन की गई पूर्णांक वैल्यू को कोड में बदलता है.
यह सदस्य का ओवरलोडेड फ़ंक्शन है, जिसे आपकी सुविधा के लिए दिया गया है. यह ऊपर दिए गए फ़ंक्शन से सिर्फ़ स्वीकार किए जाने वाले तर्क(जवाबों) में अलग है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
रखें
WEAVE_ERROR Put( uint64_t tag, int16_t v )
रखें
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
रखें
WEAVE_ERROR Put( uint64_t tag, int32_t v )
रखें
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
रखें
WEAVE_ERROR Put( uint64_t tag, int64_t v )
रखें
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
रखें
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
TLV की साइन नहीं की गई इंटीजर वैल्यू को कोड में बदलता है.
यह सदस्य का ओवरलोडेड फ़ंक्शन है, जिसे आपकी सुविधा के लिए दिया गया है. यह ऊपर दिए गए फ़ंक्शन से सिर्फ़ स्वीकार किए जाने वाले तर्क(जवाबों) में अलग है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
रखें
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
TLV की साइन नहीं की गई इंटीजर वैल्यू को कोड में बदलता है.
यह सदस्य का ओवरलोडेड फ़ंक्शन है, जिसे आपकी सुविधा के लिए दिया गया है. यह ऊपर दिए गए फ़ंक्शन से सिर्फ़ स्वीकार किए जाने वाले तर्क(जवाबों) में अलग है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
रखें
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
रखें
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
रखें
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
रखें
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
रखें
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
रखें
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
रखें
WEAVE_ERROR Put( uint64_t tag, float v )
रखें
WEAVE_ERROR Put( uint64_t tag, double v )
यह TLV फ़्लोटिंग पॉइंट वैल्यू को कोड में बदलता है.
यह सदस्य का ओवरलोडेड फ़ंक्शन है, जिसे आपकी सुविधा के लिए दिया गया है. यह ऊपर दिए गए फ़ंक्शन से सिर्फ़ स्वीकार किए जाने वाले तर्क(जवाबों) में अलग है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
PutBoolean
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
TLV बूलियन वैल्यू को कोड में बदलता है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
PutBytes
WEAVE_ERROR PutBytes( uint64_t tag, const uint8_t *buf, uint32_t len )
TLV बाइट स्ट्रिंग वैल्यू को कोड में बदलता है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
PutNull
WEAVE_ERROR PutNull( uint64_t tag )
TLV शून्य वैल्यू को कोड में बदलता है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
PutPreEncodedContainer
WEAVE_ERROR PutPreEncodedContainer( uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen )
सदस्य एलिमेंट के पहले से कोड में बदले गए सेट के TLV कंटेनर एलिमेंट को कोड में बदलता है.
PutPreEncodedContainer() तरीका, एक नए TLV कंटेनर एलिमेंट (स्ट्रक्चर, अरे या पाथ) को कोड में बदलता है. इसमें, पहले से कोड में बदले गए बफ़र से लिए गए सदस्य एलिमेंट का सेट होता है. ज़रूरी है कि इनपुट बफ़र में शून्य या उससे ज़्यादा, फ़ुल-एन्कोडेड TLV एलिमेंट शामिल हों, क्योंकि ऐसे टैग जो बताए गए कंटेनर टाइप से जुड़े नियमों का पालन करते हैं. उदाहरण के लिए, स्ट्रक्चर वाले सदस्यों के पास टैग होने चाहिए, जबकि अरे वाले सदस्यों के पास नहीं.
यह तरीका एक कॉल में कंटेनर एलिमेंट को पूरी तरह से कोड में बदल देता है. जब PutPreEncodedContainer() वापस आता है, तो राइटर ऑब्जेक्ट का इस्तेमाल, कंटेनर एलिमेंट के बाद दूसरे TLV एलिमेंट लिखने के लिए किया जा सकता है.
जानकारी | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||||
रिटर्न वैल्यू |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
TLV UTF8 स्ट्रिंग वैल्यू को कोड में बदलता है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
TLV UTF8 स्ट्रिंग वैल्यू को कोड में बदलता है.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
स्ट्रिंग आउटपुट को TLV एलिमेंट में फ़ॉर्मैट के हिसाब से एन्कोड करें.
PutStringF एक sprintf का एनालॉग है, जहां आउटपुट को वर्ण बफ़र के बजाय TLV एलिमेंट में स्टोर किया जाता है. जब प्रिंट करने के लिए ज़्यादा सुविधाएं उपलब्ध हों, तब यह फ़ंक्शन, नतीजे वाली स्ट्रिंग को एक जगह मौजूद स्टोरेज में भेज सकता है. इसे लागू करने पर, Printf को बेहतर बनाने के ये तरीके काम करते हैं:
यह प्लैटफ़ॉर्म, कॉलबैक-आधारित vcbprintf
की सुविधा देता है. इसकी मदद से, पुटचर की जगह कस्टम कॉलबैक को कॉल किया जा सकता है.
यह प्लैटफ़ॉर्म, vsnprintf
का एक वैरिएंट उपलब्ध कराता है, जिसे vsnprintf_ex
कहते हैं. यह वैरिएंटVnprintf की तरह काम करता है. हालांकि, इसमें आउटपुट के पहले n
वर्णों को छोड़ने के प्रावधान होते हैं.
ध्यान दें कि कॉलबैक-आधारित फ़ंक्शन सबसे आसान हो सकता है और इसमें कम से कम कोड का इस्तेमाल होता है. हालांकि, अलग-अलग तरह के vsprintf_ex
फ़ंक्शन, कम स्टैक का इस्तेमाल करेंगे.
अगर इनमें से कोई भी उपलब्ध नहीं है, लेकिन प्लैटफ़ॉर्म malloc
देता है, तो आउटपुट को होल्ड करने के लिए फ़ंक्शन एक अस्थायी बफ़र तय करेगा. जब यह प्लैटफ़ॉर्म, प्रिंटएफ़ फ़ैमिली या मैलक के लिए कोई भी एन्हैंसमेंट उपलब्ध नहीं कराता है, तो आउटपुट में इस तरह से काट-छांट की जाती है कि वह मौजूदा TLV स्टोरेज की लगातार स्थिति में फ़िट हो जाए
जानकारी | |||||||
---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||
रिटर्न वैल्यू |
|
StartContainer
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
इसकी मदद से, नए TLV कंटेनर एलिमेंट को कोड में बदलना शुरू किया जाता है.
StartContainer() तरीके का इस्तेमाल, किसी एन्कोडिंग में TLV कंटेनर एलिमेंट (स्ट्रक्चर, अरे या पाथ) लिखने के लिए किया जाता है. यह तरीका नए कंटेनर के टाइप और टैग (अगर कोई है) के साथ-साथ TLVType वैल्यू का रेफ़रंस लेता है. इसका इस्तेमाल, कंटेनर को लिखने के लिए किए जा रहे लेखक के मौजूदा संदर्भ को सेव करने के लिए किया जाएगा.
StartContainer() तरीका वापस आने पर, कंटेनर के एलिमेंट लिखने के लिए ऐप्लिकेशन को मौजूदा TLVWriter ऑब्जेक्ट का इस्तेमाल करना चाहिए. काम पूरा होने के बाद, ऐप्लिकेशन को कंटेनर की एन्कोडिंग को पूरा करने के लिए, EndContainer() तरीके को कॉल करना चाहिए.
जानकारी | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||||
रिटर्न वैल्यू |
|
StartPutBytes
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
TLV बाइट स्ट्रिंग को कई हिस्सों में एन्कोड करता है.
इसका इस्तेमाल RememberPutBytes के साथ किया जाना चाहिए.
जानकारी | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||||||
रिटर्न वैल्यू |
|
VPutStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
स्ट्रिंग आउटपुट को TLV एलिमेंट में फ़ॉर्मैट के हिसाब से एन्कोड करें.
PutStringF एक sprintf का एनालॉग है, जहां आउटपुट को वर्ण बफ़र के बजाय TLV एलिमेंट में स्टोर किया जाता है. जब प्रिंट करने के लिए ज़्यादा सुविधाएं उपलब्ध हों, तब यह फ़ंक्शन, नतीजे वाली स्ट्रिंग को एक जगह मौजूद स्टोरेज में भेज सकता है. इसे लागू करने पर, Printf को बेहतर बनाने के ये तरीके काम करते हैं:
यह प्लैटफ़ॉर्म, कॉलबैक-आधारित vcbprintf
की सुविधा देता है. इसकी मदद से, पुटचर की जगह कस्टम कॉलबैक को कॉल किया जा सकता है.
यह प्लैटफ़ॉर्म, vsnprintf
का एक वैरिएंट उपलब्ध कराता है, जिसे vsnprintf_ex
कहते हैं. यह वैरिएंटVnprintf की तरह काम करता है. हालांकि, इसमें आउटपुट के पहले n
वर्णों को छोड़ने के प्रावधान होते हैं.
ध्यान दें कि कॉलबैक-आधारित फ़ंक्शन सबसे आसान हो सकता है और इसमें कम से कम कोड का इस्तेमाल होता है. हालांकि, अलग-अलग तरह के vsprintf_ex
फ़ंक्शन, कम स्टैक का इस्तेमाल करेंगे.
अगर इनमें से कोई भी उपलब्ध नहीं है, लेकिन प्लैटफ़ॉर्म malloc
देता है, तो आउटपुट को होल्ड करने के लिए फ़ंक्शन एक अस्थायी बफ़र तय करेगा. जब यह प्लैटफ़ॉर्म, प्रिंटएफ़ फ़ैमिली या मैलक के लिए कोई भी एन्हैंसमेंट उपलब्ध नहीं कराता है, तो आउटपुट में इस तरह से काट-छांट की जाती है कि वह मौजूदा TLV स्टोरेज की लगातार स्थिति में फ़िट हो जाए
जानकारी | |||||||
---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||
रिटर्न वैल्यू |
|
सार्वजनिक स्टैटिक फ़ंक्शन
FinalizePacketBuffer
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
PacketBuffers की चेन में लिखने के लिए, TLVWriter FinalizeBuffer फ़ंक्शन को लागू करना.
पैकेट की चेन में लिखने के लिए, TLVWriter का इस्तेमाल करते समय, FinalizePacketBuffer() फ़ंक्शन ज़रूरी फ़ाइनल करता है. इस फ़ंक्शन को GetNewPacketBuffer() फ़ंक्शन के साथ इस्तेमाल करने के लिए डिज़ाइन किया गया है.
FinalizePacketBuffer() फ़ंक्शन के एपीआई के बारे में ज़्यादा जानकारी पाने के लिए, FinalizeBufferFunct टाइप की परिभाषा देखें.
GetNewBuffer_Malloced
WEAVE_ERROR GetNewBuffer_Malloced( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
डाइनैमिक बफ़र में लिखने के लिए TLVWriter GetNewBuffer फ़ंक्शन को लागू करना.
GetNewBuffer_Malloced() फ़ंक्शन, कोड में बदलने के तरीके को सेव करने के लिए ज़रूरी डाइनैमिक बफ़र के साइज़ को दोगुना करके, TLVWriter को नया आउटपुट स्पेस उपलब्ध कराता है. फ़ंक्शन को TLVWriter GetNewBuffer फ़ंक्शन पॉइंटर को असाइन करने के लिए डिज़ाइन किया गया है.
GetNewBuffer_Malloced() फ़ंक्शन के एपीआई के बारे में ज़्यादा जानकारी पाने के लिए, GetNewBufferFunct टाइप की परिभाषा देखें.
GetNewPacketBuffer
WEAVE_ERROR GetNewPacketBuffer( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
PacketBuffers की चेन में लिखने के लिए, TLVWriter GetNewBuffer फ़ंक्शन को लागू करना.
GetNewPacketBuffer() फ़ंक्शन, TLVWriter को नया आउटपुट स्पेस उपलब्ध कराता है. इसके लिए, यह एन्कोडिंग को सेव करने के लिए, एक या एक से ज़्यादा PacketBuffers की चेन को असाइन करता है. फ़ंक्शन को TLVWriter GetNewBuffer फ़ंक्शन पॉइंटर को असाइन करने के लिए डिज़ाइन किया गया है.
ध्यान रखें कि TLVWriter के साथ GetNewPacketBuffer का इस्तेमाल करने पर, बफ़र चेन को पूरा करने के लिए, इससे जुड़े FinalizePacketBuffer() फ़ंक्शन (या इसके बराबर का) का भी इस्तेमाल किया जाना चाहिए.
GetNewPacketBuffer() फ़ंक्शन के एपीआई के बारे में ज़्यादा जानकारी पाने के लिए, GetNewBufferFunct टाइप की परिभाषा देखें.
सुरक्षित फ़ंक्शन
IsCloseContainerReserved
bool IsCloseContainerReserved( void ) const
यह तय करें कि कंटेनर को शुरू / खोलने के समय पर, कंटेनर को CloseContainer चिह्न के लिए जगह रिज़र्व करनी चाहिए.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
यह सेट करें कि कंटेनर को शुरू / खोलते समय, कंटेनर को CloseContainer चिह्न के लिए जगह रिज़र्व करनी चाहिए या नहीं.
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 )