nl:: बुनें:: टीएलवी:: टीएलवीअपडेटर

#include <src/lib/core/WeaveTLV.h>

संपादन / जोड़ने / में तत्वों को हटाने के लिए एक एकीकृत रीडर / लेखक इंटरफेस प्रदान करता है TLV एन्कोडिंग।

सारांश

TLVUpdater का एक संघ हैTLVReader औरTLVWriter वस्तुओं और एन्कोडिंग में संपादन / हटाने से डेटा के साथ-साथ करने के लिए नए तत्वों को जोड़ने के लिए इंटरफ़ेस तरीके प्रदान TLV एन्कोडिंग। TLVUpdater वस्तु अनिवार्य रूप से दो कर्सर, (मौजूदा डेटा की प्रतिलिपि या नए डेटा लिखने के लिए या तो) लिखने के लिए मौजूदा एन्कोडिंग पढ़ने के लिए और दूसरा तरह कार्य करता है।

शब्दार्थ TLVUpdater वस्तु कार्यों का एक संघ की तरहTLVReader औरTLVWriterTLVUpdater तरीकों TLVReader / TLVWriter में इसी नाम समकक्षों के रूप में कम या ज्यादा अर्थ एक समान है। जहां अर्थ विज्ञान में मतभेद हैं, मतभेद स्पष्ट रूप से में समारोह की टिप्पणी अनुभाग में दर्ज कर रहे हैं WeaveTLVUpdater.cpp

के बारे में विशेष रूप से महत्वपूर्ण टिप्पणी TLVUpdater के PutBytes () और PutString () पद्धतियों है कि यह केवल तत्व हैडर लिखा एक अतिप्रवाह तब होता है जब के साथ एक भ्रष्ट राज्य में एन्कोडिंग छोड़ सकते है। आवेदन करने के लिए GetRemainingFreeLength () कॉल कर सकते हैं यकीन है कि वहाँ लगभग पर्याप्त खाली एन्कोडिंग लिखने के लिए अंतरिक्ष। ध्यान दें कि GetRemainingFreeLength () केवल आप मुफ्त उपलब्ध बाइट्स बताता है और वहाँ के लिए आवेदन इनकोडिंग डेटा है कि लिखा हो जाता है की लंबाई पता करने के लिए कोई रास्ता नहीं है। अतिप्रवाह की स्थिति में, PutBytes() और PutString() दोनों कॉलर को WEAVE_ERROR_BUFFER_TOO_SMALL लौटा देंगे।

इसके अलावा, कृपया ध्यान दें कि अगला () विधि दोनों को ओवरलोड हो गया है वर्तमान तत्व छोड़ सकते हैं और यह भी अगले तत्व करने के लिए आंतरिक पाठक अग्रिम। क्योंकि पहले से ही इनकोडिंग तत्वों लंघन नई मुक्त कर दिया अंतरिक्ष (छोड़ने के द्वारा उपलब्ध कराए गए) के लिए खाते में आंतरिक लेखक के खाली स्थान राज्य चर बदल रहा है की आवश्यकता है, आवेदन फोन करने की उम्मीद है अगले () अपडेटर पर एक प्राप्त () विधि जिसका मूल्य ऐसा नहीं के बाद वापस लिखने की इच्छा नहीं है (जो वर्तमान तत्व को छोड़ने के बराबर है)।

सार्वजनिक समारोह

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)
एक तैयार TLVUpdater एक कंटेनर के तत्वों को पढ़ने के लिए वस्तु।
ExitContainer ( TLVType outerContainerType)
एक के पढ़ने को पूरा करता TLV कंटेनर तत्व और का अंत encodes TLV उत्पादन में तत्व TLV
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)
एक प्रारंभ TLVUpdater संपादित करने के लिए वस्तु एक भी इनपुट बफर।
Init (TLVReader & aReader, uint32_t freeLen)
एक प्रारंभ TLVUpdater एक का उपयोग कर वस्तुTLVReader
Move (void)
प्रतियां इनपुट से वर्तमान तत्व TLV उत्पादन के लिए TLV
MoveUntilEnd (void)
void
से सब कुछ ले जाएँ TLVUpdater की वर्तमान पढ़ने बिंदु इनपुट के अंत तक TLV उत्पादन के लिए खत्म हो बफ़र।
Next (void)
वर्तमान तत्व छोड़ें और अग्रिम TLVUpdater इनपुट में अगले तत्व वस्तु 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
के लिए अंतर्निहित प्रोफ़ाइल आईडी सेट TLVUpdater वस्तु।
StartContainer (uint64_t tag, TLVType containerType, TLVType & outerContainerType)
VerifyEndOfContainer (void)

सार्वजनिक समारोह

कॉपी एलिमेंट

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

कॉपी एलिमेंट

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

डुपबाइट्स

WEAVE_ERROR DupBytes(
  uint8_t *& buf,
  uint32_t & dataLen
)

डुपस्ट्रिंग

WEAVE_ERROR DupString(
  char *& buf
)

अंत कंटेनर

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

एंटरकंटेनर

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

एक तैयार TLVUpdater एक कंटेनर के तत्वों को पढ़ने के लिए वस्तु।

यह भी उत्पादन में कंटेनर वस्तु की एक शुरुआत encodes TLV

EnterContainer () विधि वर्तमान तैयार करता TLVUpdater वस्तु एक के सदस्य तत्वों पढ़ने शुरू करने के लिए TLV कंटेनर (एक संरचना, सरणी या पथ)। के लिए हर कॉल के लिए EnterContainer () आवेदन करने के लिए एक इसी फोन करना चाहिए ExitContainer ()

जब EnterContainer () कहा जाता है TLVUpdater के पाठक कंटेनर तत्व पर तैनात किया जाना चाहिए। विधि एक तर्क के रूप में एक TLVType मान का संदर्भ लेती है जिसका उपयोग कंटेनर को पढ़ते समय अद्यतनकर्ता के संदर्भ को सहेजने के लिए किया जाएगा।

जब EnterContainer () विधि रिटर्न, अपडेटर कंटेनर के पहले सदस्य से ठीक पहले स्थिति में है। बार-बार कॉल अगला () संग्रह के सदस्यों के माध्यम से अपडेटर अग्रिम जाएगा, जब तक अंत, तक पहुँच जाता है, जिसके आधार पर अपडेटर WEAVE_END_OF_TLV वापस आ जाएगी।

एक बार आवेदन एक कंटेनर पढ़ने समाप्त हो गया है यह फोन करके कंटेनर के बाद तत्वों पढ़ने जारी रख सकते हैं ExitContainer () विधि।

विवरण
मापदंडों
[out] outerContainerType
एक TLVType मान का संदर्भ जो अद्यतनकर्ता का संदर्भ प्राप्त करेगा।
वापसी मूल्य
WEAVE_NO_ERROR
यदि विधि सफल हुई।
WEAVE_ERROR_INCORRECT_STATE
यदि TLVUpdater पाठक एक कंटेनर तत्व पर तैनात नहीं है।
other
किसी भी अन्य Weave या मंच त्रुटि द्वारा लौटाए गए कोड TLVWriter :: StartContainer () या TLVReader :: EnterContainer ()

बाहर निकलें कंटेनर

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

एक के पढ़ने को पूरा करता TLV कंटेनर तत्व और का अंत encodes TLV उत्पादन में तत्व TLV

ExitContainer () विधि एक की स्थिति को पुनर्स्थापित करता TLVUpdater के लिए एक कॉल के बाद वस्तु EnterContainer () । के लिए हर कॉल के लिए EnterContainer () आवेदन करने के लिए एक इसी फोन करना चाहिए ExitContainer () , द्वारा लौटाए गए संदर्भ मूल्य गुजर EnterContainer () विधि।

जब ExitContainer () रिटर्न, TLVUpdater पाठक तुरंत पहला तत्व है कि इनपुट में कंटेनर इस प्रकार से पहले स्थिति में है TLV । इस बिंदु से अनुप्रयोगों कॉल कर सकते हैं अगला () किसी भी शेष तत्वों के माध्यम से अग्रिम करने के लिए।

एक बार जब EnterContainer () बुलाया गया है, आवेदन फोन कर सकते हैं ExitContainer () है कि क्या अंतर्निहित कंटेनर में सभी तत्वों को पढ़ने के लिए किया गया है की परवाह किए बिना समय में किसी भी बिंदु पर अपडेटर पर,। इसके अलावा, कृपया ध्यान दें कि बुला ExitContainer () कंटेनर में सभी तत्वों को पढ़ने से पहले, अद्यतन कंटेनर में परिणाम होगा उत्पादन में छोटा कर दिया हो रही TLV

विवरण
मापदंडों
[in] outerContainerType
TLVType मूल्य कि द्वारा दिया गया था EnterContainer () विधि।
वापसी मूल्य
WEAVE_NO_ERROR
यदि विधि सफल हुई।
WEAVE_ERROR_TLV_UNDERRUN
अंतर्निहित हैं TLV समय से पहले ही समाप्त हो गया एन्कोडिंग।
WEAVE_ERROR_INVALID_TLV_ELEMENT
अपडेटर एक अमान्य या असमर्थित का सामना करना पड़ा, तो TLV तत्व प्रकार।
WEAVE_ERROR_INVALID_TLV_TAG
अपडेटर एक का सामना करना पड़ा, तो TLV गलत संदर्भ में टैग।
other
किसी भी अन्य Weave या मंच त्रुटि द्वारा लौटाए गए कोड TLVWriter :: EndContainer () या TLVReader :: ExitContainer ()

अंतिम रूप

WEAVE_ERROR Finalize(
  void
)

प्राप्त

WEAVE_ERROR Get(
  bool & v
)

प्राप्त

WEAVE_ERROR Get(
  int8_t & v
)

प्राप्त

WEAVE_ERROR Get(
  int16_t & v
)

प्राप्त

WEAVE_ERROR Get(
  int32_t & v
)

प्राप्त

WEAVE_ERROR Get(
  int64_t & v
)

प्राप्त

WEAVE_ERROR Get(
  uint8_t & v
)

प्राप्त

WEAVE_ERROR Get(
  uint16_t & v
)

प्राप्त

WEAVE_ERROR Get(
  uint32_t & v
)

प्राप्त

WEAVE_ERROR Get(
  uint64_t & v
)

प्राप्त

WEAVE_ERROR Get(
  float & v
)

प्राप्त

WEAVE_ERROR Get(
  double & v
)

गेटबाइट्स

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

GetContainer प्रकार

TLVType GetContainerType(
  void
) const 

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

GetImplicitProfileId

uint32_t GetImplicitProfileId(
  void
)

लंबाई प्राप्त करें

uint32_t GetLength(
  void
) const 

GetLengthपढ़ें

uint32_t GetLengthRead(
  void
) const 

GetLengthलिखित

uint32_t GetLengthWritten(
  void
)

GetReader

void GetReader(
  TLVReader & containerReader
)

शेष मुक्त लंबाई प्राप्त करें

uint32_t GetRemainingFreeLength(
  void
)

शेष लंबाई प्राप्त करें

uint32_t GetRemainingLength(
  void
) const 

गेटस्ट्रिंग

WEAVE_ERROR GetString(
  char *buf,
  uint32_t bufSize
)

गेटटैग

uint64_t GetTag(
  void
) const 

गेट टाइप

TLVType GetType(
  void
) const 

में इस

WEAVE_ERROR Init(
  uint8_t *buf,
  uint32_t dataLen,
  uint32_t maxLen
)

एक प्रारंभ TLVUpdater संपादित करने के लिए वस्तु एक भी इनपुट बफर।

इस विधि बुला पर, TLV बफर में डेटा बफर के अंत करने के लिए ले जाया जाता है और एक निजीTLVReader वस्तु इस दूसरी जगह बफर पर आरंभ नहीं हो जाता। एक निजीTLVWriter वस्तु भी रिक्त स्थान है कि शुरुआत में अब उपलब्ध है पर आरंभ नहीं हो जाता। आवेदन का उपयोग कर सकते TLVUpdater पार्स करने के लिए वस्तु TLV डेटा और संशोधित / मौजूदा तत्वों को हटाने या एन्कोडिंग के लिए नए तत्वों को जोड़ने।

विवरण
मापदंडों
[in] buf
एक बफर युक्त करने के लिए एक सूचक TLV डेटा संपादित करने के लिए।
[in] dataLen
की लंबाई TLV बफर में डेटा।
[in] maxLen
बफर की कुल लंबाई।
वापसी मूल्य
WEAVE_NO_ERROR
यदि विधि सफल हुई।
WEAVE_ERROR_INVALID_ARGUMENT
यदि बफर पता अमान्य है।
WEAVE_ERROR_BUFFER_TOO_SMALL
यदि बफर बहुत छोटा है।

में इस

WEAVE_ERROR Init(
  TLVReader & aReader,
  uint32_t freeLen
)

एक प्रारंभ TLVUpdater एक का उपयोग कर वस्तुTLVReader

इस विधि बुला पर, TLV बफर में आंकड़ों के द्वारा बतायाTLVReader वर्तमान पढ़ने बिंदु से बफर के अंत करने के लिए ले जाया जाता है। एक नए निजीTLVReader वस्तु, इस नए स्थान से पढ़ने के लिए प्रारंभ करते समय एक नए निजी हैTLVWriter वस्तु को मुक्त कर दिया बफर अंतरिक्ष के लिए लिखने के लिए शुरू किया गया है।

ध्यान दें कि यदिTLVReader पहले से ही एक तत्व "पर" स्थिति में है, यह पहली समर्थित बंद उस तत्व के शुरू करने के है। यह भी ध्यान रखें काम करता है अच्छी तरह से साथ कंटेनर तत्वों, यानी बंद इस समर्थन, अगर है किTLVReader पहले से ही कॉल करने के लिए इस्तेमाल किया गया था EnterContainer () , तो वापस बंद करने के लिए कुछ नहीं है। लेकिन अगरTLVReader कंटेनर तत्व और पर तैनात किया गया था EnterContainer () अभी तक आमंत्रित नहीं किया गया, तोTLVReader वस्तु कंटेनर सिर के शुरू करने का समर्थन किया बंद है।

इनपुटTLVReader वस्तु लौटने से पहले नष्ट कर दिया जाएगा और आवेदन वापसी पर एक ही का उपयोग नहीं करना चाहिए।

विवरण
मापदंडों
[in,out] aReader
एक करने के लिए संदर्भTLVReader उद्देश्य यह है कि लौटने से पहले नष्ट हो जाएगा।
[in] freeLen
पूर्व-एन्कोडेड डेटा बफ़र में उपलब्ध खाली स्थान की लंबाई (बाइट्स में)।
वापसी मूल्य
WEAVE_NO_ERROR
यदि विधि सफल हुई।
WEAVE_ERROR_INVALID_ARGUMENT
यदि बफर पता अमान्य है।
WEAVE_ERROR_NOT_IMPLEMENTED
यदि पाठक को बफर की श्रृंखला पर प्रारंभ किया गया था।

चाल

WEAVE_ERROR Move(
  void
)

प्रतियां इनपुट से वर्तमान तत्व TLV उत्पादन के लिए TLV

ले जाएँ () विधि प्रतियां वर्तमान तत्व है जिस पर TLVUpdater के पाठक पर तैनात किया जाता है, TLVUpdater के लेखक। आवेदन बुलाना चाहिए अगला () और स्थिति TLVUpdater इस विधि कॉल करने से पहले एक तत्व पर की पाठक। वैसे ही जैसे TLVReader :: अगला () विधि, अगर पाठक कॉल के समय एक कंटेनर तत्व पर रखा जाता है, सभी कंटेनर के सदस्यों कॉपी किया जायेगा। यदि पाठक किसी तत्व पर स्थित नहीं है, तो इस विधि को कॉल करने पर कुछ भी नहीं बदलता है।

विवरण
वापसी मूल्य
WEAVE_NO_ERROR
यदि TLVUpdater पाठक सफलतापूर्वक एक नए तत्व पर तैनात किया गया था।
WEAVE_END_OF_TLV
यदि TLVUpdater के पाठक कंटेनर के अंत की ओर इशारा करते है।
WEAVE_ERROR_INVALID_TLV_ELEMENT
TLVIpdater के पाठक एक वैध पर तैनात नहीं है, तो TLV तत्व।
other
द्वारा लौटाए गए अन्य त्रुटि कोड रिटर्न TLVReader :: छोड़ें () विधि।

अंत तक ले जाएँ

void MoveUntilEnd(
  void
)

से सब कुछ ले जाएँ TLVUpdater की वर्तमान पढ़ने बिंदु इनपुट के अंत तक TLV उत्पादन के लिए खत्म हो बफ़र।

इस विधि से सब कुछ आगे बढ़ समर्थन करता है TLVUpdater 'पाठक के अंत तक मौजूदा पढ़ने बात करने के लिए खत्म हो गया बफ़र TLVUpdater रों लेखक'।

अगला

WEAVE_ERROR Next(
  void
)

वर्तमान तत्व छोड़ें और अग्रिम TLVUpdater इनपुट में अगले तत्व वस्तु TLV

अगला () विधि इनपुट में मौजूदा तत्व को छोड़ देता है TLV और अग्रिम TLVUpdater अगले तत्व के पाठक है कि एक ही रोकथाम संदर्भ में रहता है। विशेष रूप से, पाठक एक की सबसे बाहरी स्तर पर रखा जाता है, तो TLV एन्कोडिंग, बुला अगला () यह अगले शीर्ष सबसे तत्व को आगे बढ़ाएंगे। पाठक एक के भीतर रखा जाता है तो TLV , कंटेनर तत्व (एक संरचना, सरणी या पथ) बुला अगला () कंटेनर के अगले सदस्य तत्व करने के लिए इसे आगे बढ़ाएंगे।

चूंकि अगला () वर्तमान रोकथाम संदर्भ के लिए पाठक गति, बुला रोकें अगला () जब पाठक एक कंटेनर तत्व पर रखा जाता है कंटेनर से अधिक अग्रिम होगा, उसके सदस्य तत्वों (और किसी भी नेस्टेड कंटेनर के सदस्य) लंघन जब तक यह पहले तक पहुँचता है कंटेनर के बाद तत्व।

जब वहाँ एक विशेष रोकथाम के संदर्भ में आगे कोई तत्व हैं अगला () विधि एक वापस आ जाएगी WEAVE_END_OF_TLV त्रुटि और पाठक की स्थिति यथावत रहेगा।

विवरण
वापसी मूल्य
WEAVE_NO_ERROR
यदि TLVUpdater पाठक सफलतापूर्वक एक नए तत्व पर तैनात किया गया था।
other
रिटर्न Weave या मंच त्रुटि कोड द्वारा दिया TLVReader :: छोड़ें () और TLVReader :: अगला () विधि।

डाल

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

डाल

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v
)

डाल

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v
)

डाल

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v
)

डाल

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v
)

डाल

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v
)

डाल

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v
)

डाल

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v
)

डाल

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v,
  bool preserveSize
)

डाल

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v,
  bool preserveSize
)

डाल

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v,
  bool preserveSize
)

डाल

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v,
  bool preserveSize
)

डाल

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v,
  bool preserveSize
)

डाल

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v,
  bool preserveSize
)

डाल

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v,
  bool preserveSize
)

डाल

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
)

पुटबूलियन

l10n-प्लेसहोल्डर=56

पुटबाइट्स

l10n-प्लेसहोल्डर=57

पुट नल

l10n-प्लेसहोल्डर=58

पुटस्ट्रिंग

l10n-प्लेसहोल्डर=59

पुटस्ट्रिंग

l10n-प्लेसहोल्डर=60

SetImplicitProfileId

l10n-प्लेसहोल्डर=61

TLVUpdater वस्तु के लिए अंतर्निहित प्रोफाइल आईडी सेट करें।

इस विधि TLVUpdater वस्तु के लिए अंतर्निहित प्रोफाइल आईडी सेट। जब अपडेटर अगर नए तत्व के साथ जुड़े टैग की प्रोफ़ाइल ID profileId के मान से मेल खाता एक नए तत्व एन्कोड करने के लिए, कहा जाता है, अपडेटर अंतर्निहित रूप में टैग सांकेतिक शब्दों में बदलना होगा, जिससे इस प्रक्रिया में अपनी प्रोफ़ाइल आईडी को छोड़ते हुए।

विवरण
मापदंडों
[में] प्रोफ़ाइल आईडी
टैग की प्रोफ़ाइल आईडी जिसे निहित रूप में एन्कोड किया जाना चाहिए।

स्टार्टकंटेनर

l10n-प्लेसहोल्डर=62

VerifyEndOfContainer

l10n-प्लेसहोल्डर=63