nl::Weave::TLV::TLVReader

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

מנתח נתונים יעיל בזיכרון לקידוד נתונים בפורמט TLV של Weave.

סיכום

ב-TLVReader מטמיעים מנתח נתונים מסוג 'משיכה' בלבד, לנתוני Weave TLV. אובייקט TLVReader פועל כסמן שיכול לשמש לאיטרציה על פני רצף של רכיבי TLV ולפרש את התוכן שלהם. כשאפליקציות ממוקמות על רכיב, הן יכולות לבצע קריאות לשיטות Get() של הקורא כדי להריץ שאילתה על הסוג והתג של הרכיב הנוכחי, ולחלץ כל ערך משויך. שיטת Next() של הקורא משמשת להתקדמות מרכיב לרכיב.

אובייקט TLVReader תמיד ממוקם לפני, על או אחרי רכיב TLV. באתחול הראשון, TLVReader ממוקם ממש לפני הרכיב הראשון של הקידוד. כדי להתחיל לקרוא, האפליקציה צריכה לבצע קריאה ראשונית לשיטה Next() כדי למקם את הקורא ברכיב הראשון. כשיש חפיפה במבנה של קונטיינר, אפשר להשתמש במערך או בנתיב במתודה OpenContainer() או EnterContainer() כדי לבצע איטרציה בתוכן של הקונטיינר.

כשהקורא מגיע לסוף של קידוד TLV, או לאלמנט האחרון בתוך קונטיינר, הוא מסמן לאפליקציה על ידי החזרת שגיאת WEAVE_END_OF_TLV מה-method Next(). הקורא ימשיך להחזיר WEAVE_END_OF_TLV עד שהוא יופעל מחדש, או עד ליציאה מהמאגר הנוכחי (באמצעות CloseContainer() / ExitContainer()).

אובייקט TLVReader יכול לנתח נתונים ישירות ממאגר נתונים זמני של קלט, או משרשרת של PacketBuffers אחת או יותר. בנוסף, אפליקציות יכולות לספק פונקציית GetNextBuffer כדי להזין לקורא נתונים ממקור שרירותי, למשל. שקע או יציאה טורית.

ירושה

מחלקות משנה מוכרות ישירות:
  nl::Weave::Profiles::DataManagement_Current::CircularEventReader
  nl::Weave::TLV::CircularTLVReader

סוגים ציבוריים

GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR(*
פונקציה שאפשר להשתמש בה כדי לאחזר נתוני TLV נוספים לניתוח.

מאפיינים ציבוריים

AppData
void *
שדה מצביע שאפשר להשתמש בו לנתונים ספציפיים לאפליקציה.
GetNextBuffer
מצביע לפונקציה שתפיק נתוני קלט עבור האובייקט TLVReader.
ImplicitProfileId
uint32_t
מזהה הפרופיל שישמש לתגי פרופיל שמקודדים בצורה משתמעת.

מאפיינים מוגנים

mBufEnd
const uint8_t *
mBufHandle
uintptr_t
mContainerType
mControlByte
uint16_t
mElemLenOrVal
uint64_t
mElemTag
uint64_t
mLenRead
uint32_t
mMaxLen
uint32_t
mReadPoint
const uint8_t *

פונקציות ציבוריות

CloseContainer(TLVReader & containerReader)
משלימה את הקריאה של קונטיינר TLV אחרי קריאה ל-OpenContainer().
DupBytes(uint8_t *& buf, uint32_t & dataLen)
הפונקציה Allocat מופיעה ומחזירה מאגר נתונים זמני שמכיל את הערך של מחרוזת ה-UTF8 או הבייט הנוכחי.
DupString(char *& buf)
הפונקציה Allocat מופיעה ומחזירה מאגר נתונים זמני שמכיל את הערך עם סיום ה-null של הבייט או מחרוזת UTF8 הנוכחיים.
EnterContainer(TLVType & outerContainerType)
הכנה של אובייקט TLVReader לקריאת החברים ברכיב הקונטיינר TLV.
ExitContainer(TLVType outerContainerType)
משלימה את הקריאה של קונטיינר TLV ומכינה אובייקט TLVReader לקריאת רכיבים אחרי הקונטיינר.
Get(bool & v)
מקבלים את הערך של הרכיב הנוכחי כסוג בוליאני.
Get(int8_t & v)
מקבלים את ערך הרכיב הנוכחי כמספר שלם חתום של 8 ביט.
Get(int16_t & v)
מקבלים את ערך הרכיב הנוכחי כמספר שלם חתום של 16 ביט.
Get(int32_t & v)
מקבלים את ערך הרכיב הנוכחי כמספר שלם חתום של 32 ביט.
Get(int64_t & v)
מקבלים את ערך הרכיב הנוכחי כמספר שלם חתום של 64 ביט.
Get(uint8_t & v)
מקבלים את ערך הרכיב הנוכחי כמספר שלם לא חתום מסוג 8 ביט.
Get(uint16_t & v)
מקבלים את ערך הרכיב הנוכחי כמספר שלם לא חתום של 16 ביט.
Get(uint32_t & v)
מקבלים את ערך הרכיב הנוכחי כמספר שלם לא חתום בגרסת 32 ביט.
Get(uint64_t & v)
מקבלים את ערך הרכיב הנוכחי כמספר שלם לא חתום של 64 ביט.
Get(float & v)
Get(double & v)
מקבלים את הערך של הרכיב הנוכחי כמספר נקודה צפה ברמת דיוק כפולה.
GetBufHandle(void) const
uintptr_t
GetBytes(uint8_t *buf, uint32_t bufSize)
מקבלים את הערך של הבייט הנוכחי או של רכיב המחרוזת UTF8.
GetContainerType(void) const
הפונקציה מחזירה את סוג הקונטיינר שבו ה-TLVReader קורא כרגע.
GetControlByte(void) const
uint16_t
הפונקציה מחזירה את בייט הבקרה שמשויך לרכיב TLV הנוכחי.
GetDataPtr(const uint8_t *& data)
קבלת מצביע לבייט המקודד הראשוני של בייט TLV או רכיב מחרוזת UTF8.
GetLength(void) const
uint32_t
הפונקציה מחזירה את אורך הנתונים שמשויכים לרכיב TLV הנוכחי.
GetLengthRead(void) const
uint32_t
הפונקציה מחזירה את המספר הכולל של הבייטים שנקראו מאז אתחול הקורא.
GetReadPoint(void) const
const uint8_t *
מקבלת את הנקודה במאגר הנתונים הזמני הבסיסי שתואמת למיקום הנוכחי של הקורא.
GetRemainingLength(void) const
uint32_t
הפונקציה מחזירה את המספר הכולל של הבייטים שניתן לקרוא עד שמגיעים לאורך הקריאה המקסימלי.
GetString(char *buf, uint32_t bufSize)
מקבלים את הערך של רכיב המחרוזת הנוכחי בבייט או ב-UTF8 כמחרוזת אפסית שהסתיימה.
GetTag(void) const
uint64_t
הפונקציה מחזירה את התג שמשויך לרכיב TLV הנוכחי.
GetType(void) const
הפונקציה מחזירה את הסוג של הרכיב TLV הנוכחי.
Init(const TLVReader & aReader)
void
מאתחלת אובייקט TLVReader מאובייקט TLVReader אחר.
Init(const uint8_t *data, uint32_t dataLen)
void
מאתחלת אובייקט TLVReader לקריאה ממאגר נתונים זמני של קלט.
Init(PacketBuffer *buf, uint32_t maxLen)
void
מאתחלת אובייקט TLVReader לקריאה מ-packetBuffer יחיד.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
מאתחלת אובייקט TLVReader לקריאה מ-packetBuffers אחד או יותר.
Next(void)
מקדמת את האובייקט TLVReader לרכיב TLV הבא שיש לקרוא.
Next(TLVType expectedType, uint64_t expectedTag)
מקדמת את האובייקט TLVReader לרכיב TLV הבא שיש לקרוא, עם הצהרה על הסוג והתג של הרכיב החדש.
OpenContainer(TLVReader & containerReader)
מאתחלת אובייקט TLVReader חדש לקריאת החברים ברכיב קונטיינר TLV.
Skip(void)
הפונקציה מקדמת את האובייקט TLVReader כך שיופיע מיד אחרי הרכיב הנוכחי של TLV.
VerifyEndOfContainer(void)
מאשרת שהאובייקט TVLReader נמצא בסוף קונטיינר מסוג TLV.

פונקציות מוגנות

ClearElementState(void)
void
מוחקים את המצב של TLVReader.
ElementType(void) const
TLVElementType
זו שיטה פרטית שמחזירה את TLVElementType מ-mControlByte.
EnsureData(WEAVE_ERROR noDataErr)
GetElementHeadLength(uint8_t & elemHeadBytes) const
זו שיטה פרטית לחישוב האורך של ראש רכיב TLV.
IsContainerOpen(void) const
bool
ReadData(uint8_t *buf, uint32_t len)
ReadElement(void)
ReadTag(TLVTagControl tagControl, const uint8_t *& p)
uint64_t
SetContainerOpen(bool aContainerOpen)
void
SkipData(void)
כדי לדלג על הנתונים שכלולים ב-TLV הנוכחי, קוראים אותם ללא מאגר נתונים זמני ביעד.
SkipToEndOfContainer(void)
VerifyElement(void)

פונקציות סטטיות מוגנות

FailGetNextBuffer(TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen)
GetNextPacketBuffer(TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen)

סוגים ציבוריים

GetNextBufferFunct

WEAVE_ERROR(* GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen)

פונקציה שאפשר להשתמש בה כדי לאחזר נתוני TLV נוספים לניתוח.

פונקציות מהסוג הזה משמשות כדי להזין נתוני קלט ל-TLVReader. כשמפעילים את הפונקציה, היא אמורה לספק נתונים נוספים כדי שהקורא יוכל לנתח אותה או לאותת לקורא שאין עוד נתונים זמינים.

פרטים
פרמטרים
[in] reader
הפניה לאובייקט TLVReader שמבקש נתוני קלט.
[in,out] bufHandle
הפניה לערך uintptr_t שבו הפונקציה יכולה להשתמש כדי לאחסן נתוני הקשר בין קריאות. הערך הזה מאותחל ל-0 לפני הקריאה הראשונה.
[in,out] bufStart
הפניה לסמן של נתונים. בכניסה לפונקציה, bufStart מפנה לבייט אחד מעבר לבייט הנתונים האחרון של TLV שצורך הקורא. ביציאה, bufStart אמור להפנות לבייט הראשון של נתוני TLV חדשים שצריך לנתח. הערך החדש של המצביע יכול להיות באותו מאגר נתונים זמני שבו נמצאים הנתונים שנצרכו קודם, או שהוא יכול להפנות למאגר נתונים זמני חדש.
[out] bufLen
הפניה למספר שלם לא חתום שהפונקציה צריכה להגדיר למספר הבייטים של נתוני TLV שמוחזרים. אם מגיע לסוף של נתוני TLV, הפונקציה צריכה להגדיר את הערך הזה ל-0.
מוחזר ערכים
WEAVE_NO_ERROR
אם הפונקציה הניבה יותר נתוני TLV, או שהגעתם לסוף של נתוני הקלט (צריך להגדיר את bufLen לערך 0 במקרה הזה).
other
קודי שגיאה אחרים של Weave או פלטפורמה ספציפית, שמציינים שאירעה שגיאה המונעת מהפונקציה להפיק את הנתונים המבוקשים.

מאפיינים ציבוריים

AppData

void * AppData

שדה מצביע שאפשר להשתמש בו לנתונים ספציפיים לאפליקציה.

GetNextBuffer

GetNextBufferFunct GetNextBuffer

מצביע לפונקציה שתפיק נתוני קלט עבור האובייקט TLVReader.

אם היא מוגדרת ל-NULL (ערך ברירת המחדל), הקורא יניח שאין נתוני קלט נוספים זמינים.

אפליקציה יכולה להגדיר את GetNextBuffer בכל שלב, אבל בדרך כלל היא מוגדרת באמצעות אתחול הקורא.

למידע נוסף על יישום פונקציית GetNextBuffer, ראו הגדרה של סוג GetNextBufferFunct.

ImplicitProfileId

uint32_t ImplicitProfileId

מזהה הפרופיל שישמש לתגי פרופיל שמקודדים בצורה משתמעת.

כשהקורא נתקל בתג ספציפי לפרופיל שמקודד בצורה משתמעת, הוא משתמש בערך של המאפיין ImplicitProfileId כמזהה הפרופיל המשוער של התג.

כברירת מחדל, המאפיין ImplicitProfileId מוגדר כ-kProfileIdNotSpecified. כשמפענחים TLV שמכיל תגים בקידוד מרומז, האפליקציות חייבות להגדיר את הערך ImplicitProfileId לפני קריאת רכיבי TLV שמכילים תגים כאלה. מזהה הפרופיל המתאים תלוי בדרך כלל בהקשר של האפליקציה או הפרוטוקול שבהם נאמר.

אם יתקל בתג בקידוד מרומז בזמן ש-ImplicitProfileId מוגדר כ-kProfileIdNotSpecified, הקורא יחזיר שגיאת WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG.

מאפיינים מוגנים

mBufEnd

const uint8_t * mBufEnd

mBufHandle

uintptr_t mBufHandle

mContainerType

TLVType mContainerType

mControlByte

uint16_t mControlByte

mElemLenOrVal

uint64_t mElemLenOrVal

mElemTag

uint64_t mElemTag

mLenRead

uint32_t mLenRead

mMaxLen

uint32_t mMaxLen

mReadPoint

const uint8_t * mReadPoint

פונקציות ציבוריות

CloseContainer

WEAVE_ERROR CloseContainer(
  TLVReader & containerReader
)

משלימה את הקריאה של קונטיינר TLV אחרי קריאה ל-OpenContainer().

שיטת CloseContainer() משחזרת את המצב של אובייקט TLVReader הורה אחרי קריאה ל-OpenContainer(). בכל קריאה לאפליקציות OpenContainer() צריך לבצע קריאה תואמת ל-CloseContainer(), ומעבירה הפניה לאותו קורא קונטיינרים לשתי ה-methods.

כאשר CloseContainer() חוזר, קורא ההורה ממוקם ממש לפני הרכיב הראשון שאחרי הקונטיינר. מהשלב הזה, האפליקציה יכולה להשתמש בשיטה Next() כדי להתקדם דרך כל הרכיבים שנותרו.

בכל שלב, אפליקציות יכולות לקרוא לסגירה של CloseContainer() בקורא הורה, גם אם כל הרכיבים בקונטיינר הבסיסי נקראו. אחרי הקריאה ל-CloseContainer(), האפליקציה צריכה להתייחס לקורא הקונטיינר כ-'de-initialized' ולא יכולים להשתמש בו שוב בלי לאתחל אותו מחדש.

פרטים
פרמטרים
[in] containerReader
הפניה לאובייקט TLVReader שסופק ל-method OpenContainer().
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_INCORRECT_STATE
אם לא בוצעה קריאה ל-OpenContainer() בקורא, או אם קורא הקונטיינר לא תואם את זה שהועבר ל-method OpenContainer().
WEAVE_ERROR_TLV_UNDERRUN
אם הקידוד הבסיסי של ה-TLV הסתיים מוקדם מדי.
WEAVE_ERROR_INVALID_TLV_ELEMENT
אם הקורא נתקל בסוג רכיב TLV לא תקין או לא נתמך.
WEAVE_ERROR_INVALID_TLV_TAG
אם הקורא נתקל בתג TLV בהקשר לא חוקי.
other
קודי שגיאה אחרים של Weave או הפלטפורמה המוחזרים על-ידי הפונקציה GetNextBuffer() שהוגדרה. הדבר אפשרי רק כאשר GetNextBuffer לא מוגדר ל-NULL.

DupBytes

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

הפונקציה Allocat מופיעה ומחזירה מאגר נתונים זמני שמכיל את הערך של מחרוזת ה-UTF8 או הבייט הנוכחי.

השיטה הזו יוצרת מאגר נתונים זמני ומחזירה עותק של הנתונים שמשויכים לרכיב המחרוזת של בייטים או UTF-8 במיקום הנוכחי. הזיכרון למאגר הנתונים הזמני נוצר באמצעות Malloc() , וצריך לפנות אותו באמצעות free() על ידי המתקשר/ת כשאין בו יותר צורך.

פרטים
פרמטרים
[out] buf
הפניה לסמן שאליו יוקצה מאגר נתונים זמני של dataLen בייטים שהוקצו לו.
[out] dataLen
הפניה לנפח אחסון של buf בבייטים.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הרכיב הנוכחי הוא לא בייט TLV או מחרוזת UTF8, או שהקורא לא ממוקם על רכיב.
WEAVE_ERROR_NO_MEMORY
אם אי אפשר להקצות זיכרון למאגר הנתונים הזמני של הפלט.
WEAVE_ERROR_TLV_UNDERRUN
אם הקידוד הבסיסי של ה-TLV הסתיים מוקדם מדי.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
אם פלטפורמת היעד לא תומכת ב-Malloc() וב-free().
other
קודי שגיאה אחרים של Weave או הפלטפורמה המוחזרים על-ידי הפונקציה GetNextBuffer() שהוגדרה. הדבר אפשרי רק כאשר GetNextBuffer לא מוגדר ל-NULL.

DupString

WEAVE_ERROR DupString(
  char *& buf
)

הפונקציה Allocat מופיעה ומחזירה מאגר נתונים זמני שמכיל את הערך עם סיום ה-null של הבייט או מחרוזת UTF8 הנוכחיים.

השיטה הזו יוצרת מאגר נתונים זמני ומחזירה עותק עם סיום null של הנתונים המשויכים לרכיב המחרוזת של בייטים או UTF-8 במיקום הנוכחי. הזיכרון למאגר הנתונים הזמני נוצר באמצעות Malloc() , וצריך לפנות אותו באמצעות free() על ידי המתקשר/ת כשאין בו יותר צורך.

פרטים
פרמטרים
[out] buf
הפניה לסמן שאליו יוקצה מאגר נתונים זמני של ערימה (heap) בשביל הצלחה.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הרכיב הנוכחי הוא לא בייט TLV או מחרוזת UTF8, או שהקורא לא ממוקם על רכיב.
WEAVE_ERROR_NO_MEMORY
אם אי אפשר להקצות זיכרון למאגר הנתונים הזמני של הפלט.
WEAVE_ERROR_TLV_UNDERRUN
אם הקידוד הבסיסי של ה-TLV הסתיים מוקדם מדי.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
אם פלטפורמת היעד לא תומכת ב- Malloc() וב-free().
other
קודי שגיאה אחרים של Weave או הפלטפורמה המוחזרים על-ידי הפונקציה GetNextBuffer() שהוגדרה. הדבר אפשרי רק כאשר GetNextBuffer לא מוגדר ל-NULL.

EnterContainer

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

הכנה של אובייקט TLVReader לקריאת החברים ברכיב הקונטיינר TLV.

ה-method EnterContainer() מכינה את אובייקט TLVReader הנוכחי כך שיתחיל לקרוא את הרכיבים החברים בקונטיינר TLV (מבנה, מערך או נתיב). בכל קריאה ל-EnterContainer(), חייבים לבצע קריאה תואמת ל-ExitContainer().

כשקוראים לפונקציה EnterContainer(), את האובייקט TLVReader חייב להיות ממוקם על רכיב הקונטיינר כדי לקרוא אותו. השיטה הזו משתמשת כארגומנט כהפניה לערך TLVType שישמשו לשמירת ההקשר של הקורא בזמן קריאת הקונטיינר.

כשהשיטה EnterContainer() חוזרת, הקורא ממוקם מיד לפני האיבר הראשון של הקונטיינר. קריאה חוזרת ל-Next() תקדם את הקורא דרך החברים באוסף עד שהוא יגיע לסוףו, ואז הקורא יחזיר WEAVE_END_OF_TLV.

לאחר שהאפליקציה מסיימת לקרוא קונטיינר, היא יכולה להמשיך לקרוא את הרכיבים אחרי הקונטיינר על ידי קריאה לשיטה ExitContainer().

פרטים
פרמטרים
[out] outerContainerType
הפניה לערך TLVType שיקבל את ההקשר של הקורא.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_INCORRECT_STATE
אם הרכיב הנוכחי לא ממוקם על רכיב קונטיינר.

ExitContainer

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

משלימה את הקריאה של קונטיינר TLV ומכינה אובייקט TLVReader לקריאת רכיבים אחרי הקונטיינר.

ה-method ExitContainer() משחזרת את המצב של אובייקט TLVReader אחרי קריאה ל-EnterContainer(). בכל קריאה לאפליקציות EnterContainer() צריך לבצע קריאה תואמת ל-ExitContainer(), ומעביר את ערך ההקשר שמוחזר על ידי המתודה EnterContainer().

כאשר ExitContainer() חוזר, הקורא ממוקם ממש לפני הרכיב הראשון שאחרי הקונטיינר. מהשלב הזה, האפליקציה יכולה להשתמש בשיטה Next() כדי להתקדם דרך כל הרכיבים שנותרו.

לאחר הקריאה ל-EnterContainer(), אפליקציות יכולות לקרוא ל-ExitContainer() בקורא בכל שלב, גם אם כל הרכיבים בקונטיינר הבסיסי נקראו.

פרטים
פרמטרים
[in] outerContainerType
ערך TLVType שהוחזר באמצעות שיטת EnterContainer().
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_INCORRECT_STATE
אם לא בוצעה קריאה ל-OpenContainer() בקורא, או אם קורא הקונטיינר לא תואם את זה שהועבר ל-method OpenContainer().
WEAVE_ERROR_TLV_UNDERRUN
אם הקידוד הבסיסי של ה-TLV הסתיים מוקדם מדי.
WEAVE_ERROR_INVALID_TLV_ELEMENT
אם הקורא נתקל בסוג רכיב TLV לא תקין או לא נתמך.
WEAVE_ERROR_INVALID_TLV_TAG
אם הקורא נתקל בתג TLV בהקשר לא חוקי.
other
קודי שגיאה אחרים של Weave או הפלטפורמה המוחזרים על-ידי הפונקציה GetNextBuffer() שהוגדרה. הדבר אפשרי רק כאשר GetNextBuffer לא מוגדר ל-NULL.

קבל

WEAVE_ERROR Get(
  bool & v
)

מקבלים את הערך של הרכיב הנוכחי כסוג בוליאני.

פרטים
פרמטרים
[out] v
הפונקציה מקבלת את הערך שמשויך לרכיב TLV הנוכחי.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הרכיב הנוכחי הוא לא סוג בוליאני TLV, או שהקורא לא ממוקם על רכיב.

קבל

WEAVE_ERROR Get(
  int8_t & v
)

מקבלים את ערך הרכיב הנוכחי כמספר שלם חתום של 8 ביט.

אם ערך המספר השלם המקודד גדול מסוג נתוני הפלט, הערך שמתקבל ייחתך.

פרטים
פרמטרים
[out] v
הפונקציה מקבלת את הערך שמשויך לרכיב TLV הנוכחי.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הרכיב הנוכחי הוא לא מסוג TLV (חתום או לא חתום), או שהקורא לא ממוקם על רכיב.

קבל

WEAVE_ERROR Get(
  int16_t & v
)

מקבלים את ערך הרכיב הנוכחי כמספר שלם חתום של 16 ביט.

אם ערך המספר השלם המקודד גדול יותר מסוג נתוני הפלט, הערך שמתקבל ייחתך.

פרטים
פרמטרים
[out] v
הפונקציה מקבלת את הערך שמשויך לרכיב TLV הנוכחי.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הרכיב הנוכחי הוא לא מסוג TLV (חתום או לא חתום), או שהקורא לא ממוקם על רכיב.

קבל

WEAVE_ERROR Get(
  int32_t & v
)

מקבלים את ערך הרכיב הנוכחי כמספר שלם חתום של 32 ביט.

אם ערך המספר השלם המקודד גדול מסוג נתוני הפלט, הערך שמתקבל ייחתך.

פרטים
פרמטרים
[out] v
הפונקציה מקבלת את הערך שמשויך לרכיב TLV הנוכחי.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הרכיב הנוכחי הוא לא מסוג TLV (חתום או לא חתום), או שהקורא לא ממוקם על רכיב.

קבל

WEAVE_ERROR Get(
  int64_t & v
)

מקבלים את ערך הרכיב הנוכחי כמספר שלם חתום של 64 ביט.

אם ערך המספר השלם המקודד גדול מסוג נתוני הפלט, הערך שמתקבל ייחתך.

פרטים
פרמטרים
[out] v
הפונקציה מקבלת את הערך שמשויך לרכיב TLV הנוכחי.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הרכיב הנוכחי הוא לא מסוג TLV (חתום או לא חתום), או שהקורא לא ממוקם על רכיב.

קבל

WEAVE_ERROR Get(
  uint8_t & v
)

מקבלים את ערך הרכיב הנוכחי כמספר שלם לא חתום מסוג 8 ביט.

אם ערך המספר השלם המקודד גדול מסוג נתוני הפלט, הערך שמתקבל ייחתך. באופן דומה, אם ערך המספר השלם המקודד הוא שלילי, הערך יומר ללא חתימה.

פרטים
פרמטרים
[out] v
הפונקציה מקבלת את הערך שמשויך לרכיב TLV הנוכחי.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הרכיב הנוכחי הוא לא מסוג TLV (חתום או לא חתום), או שהקורא לא ממוקם על רכיב.

קבל

WEAVE_ERROR Get(
  uint16_t & v
)

מקבלים את ערך הרכיב הנוכחי כמספר שלם לא חתום של 16 ביט.

אם ערך המספר השלם המקודד גדול יותר מסוג נתוני הפלט, הערך שמתקבל ייחתך. באופן דומה, אם ערך המספר השלם המקודד הוא שלילי, הערך יומר ללא חתימה.

פרטים
פרמטרים
[out] v
הפונקציה מקבלת את הערך שמשויך לרכיב TLV הנוכחי.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הרכיב הנוכחי הוא לא מסוג TLV (חתום או לא חתום), או שהקורא לא ממוקם על רכיב.

קבל

WEAVE_ERROR Get(
  uint32_t & v
)

מקבלים את ערך הרכיב הנוכחי כמספר שלם לא חתום בגרסת 32 ביט.

אם ערך המספר השלם המקודד גדול מסוג נתוני הפלט, הערך שמתקבל ייחתך. באופן דומה, אם ערך המספר השלם המקודד הוא שלילי, הערך יומר ללא חתימה.

פרטים
פרמטרים
[out] v
הפונקציה מקבלת את הערך שמשויך לרכיב TLV הנוכחי.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הרכיב הנוכחי הוא לא מסוג TLV (חתום או לא חתום), או שהקורא לא ממוקם על רכיב.

קבל

WEAVE_ERROR Get(
  uint64_t & v
)

מקבלים את ערך הרכיב הנוכחי כמספר שלם לא חתום של 64 ביט.

אם הערך של המספר השלם המקודד הוא שלילי, הערך יומר ללא חתימה.

פרטים
פרמטרים
[out] v
הפונקציה מקבלת את הערך שמשויך לרכיב TLV הנוכחי.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הרכיב הנוכחי הוא לא מסוג TLV (חתום או לא חתום), או שהקורא לא ממוקם על רכיב.

קבל

WEAVE_ERROR Get(
  float & v
)

קבל

WEAVE_ERROR Get(
  double & v
)

מקבלים את הערך של הרכיב הנוכחי כמספר נקודה צפה ברמת דיוק כפולה.

פרטים
פרמטרים
[out] v
הפונקציה מקבלת את הערך שמשויך לרכיב TLV הנוכחי.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הרכיב הנוכחי הוא לא סוג של נקודה צפה (TLV) מסוג TLV, או שהקורא לא ממוקם על רכיב.

GetBufHandle

uintptr_t GetBufHandle(
  void
) const 

GetBytes

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

מקבלים את הערך של הבייט הנוכחי או של רכיב המחרוזת UTF8.

כדי לקבוע את הגודל הנדרש של מאגר הנתונים הזמני, קוראים לשיטה GetLength() לפני קריאה ל-GetBytes().

פרטים
פרמטרים
[in] buf
מצביע למאגר נתונים זמני לקבלת נתוני המחרוזת.
[in] bufSize
הגודל בבייטים של מאגר הנתונים הזמני שאליו מפנה buf.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הרכיב הנוכחי הוא לא בייט TLV או מחרוזת UTF8, או שהקורא לא ממוקם על רכיב.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם מאגר הנתונים הזמני שסופק קטן מדי ולא יכול להכיל את הנתונים שמשויכים לרכיב הנוכחי.
WEAVE_ERROR_TLV_UNDERRUN
אם הקידוד הבסיסי של ה-TLV הסתיים מוקדם מדי.
other
קודי שגיאה אחרים של Weave או הפלטפורמה המוחזרים על-ידי הפונקציה GetNextBuffer() שהוגדרה. הדבר אפשרי רק כאשר GetNextBuffer לא מוגדר ל-NULL.

GetContainerType

TLVType GetContainerType(
  void
) const 

הפונקציה מחזירה את סוג הקונטיינר שבו ה-TLVReader קורא כרגע.

ה-method GetContainerType() מחזירה את סוג הקונטיינר TLV שבו ה-TLVReader קורא. אם ה-TLVReader ממוקם ברמה החיצונית ביותר של קידוד TLV (כלומר לפני, מעל או אחרי רכיב ה-TLV החיצוני ביותר), ה-method תחזיר kTLVType_NotSpecified.

פרטים
החזרות
ה-TLVType של הקונטיינר הנוכחי, או kTLVType_NotSpecified אם ה-TLVReader לא ממוקם בתוך קונטיינר.

GetControlByte

uint16_t GetControlByte(
  void
) const 

הפונקציה מחזירה את בייט הבקרה שמשויך לרכיב TLV הנוכחי.

במצב אידיאלי אף אחד לא צריך לדעת על בייט הבקרה, ורק להטמעה הפנימית של TLV צריכה להיות גישה. עם זאת, גישה לבייט הבקרה שימושית לצורך ניפוי באגים באמצעות TLV

פרטים
החזרות
מספר שלם לא חתום שמכיל את הבייט של הבקרה שמשויך לרכיב TLV הנוכחי. הפונקציה kTLVControlByte_NotSpecified מוחזר אם הקורא לא ממוקם על רכיב.

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

קבלת מצביע לבייט המקודד הראשוני של בייט TLV או רכיב מחרוזת UTF8.

השיטה הזו מחזירה מצביע ישיר את ערך המחרוזת המקודד בתוך מאגר הקלט הבסיסי. כדי להצליח, השיטה דורשת שכל ערך המחרוזת יהיה במאגר נתונים זמני אחד. אחרת, ה-method מחזירה WEAVE_ERROR_TLV_UNDERRUN. זה הופך לשיטה של שימוש מוגבל כשקוראים נתונים מכמה מאגרי נתונים זמניים לא עוקבים.

פרטים
פרמטרים
[out] data
הפניה למצביע קבוע שיקבל מצביע לנתוני המחרוזת הבסיסית.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הרכיב הנוכחי הוא לא בייט TLV או מחרוזת UTF8, או שהקורא לא ממוקם על רכיב.
WEAVE_ERROR_TLV_UNDERRUN
אם הקידוד הבסיסי של TLV הסתיים מוקדם מדי, או שהערך של רכיב המחרוזת הנוכחי לא כלול בתוך מאגר נתונים זמני רציף.
other
קודי שגיאה אחרים של Weave או הפלטפורמה המוחזרים על-ידי הפונקציה GetNextBuffer() שהוגדרה. הדבר אפשרי רק כאשר GetNextBuffer לא מוגדר ל-NULL.

GetLength

uint32_t GetLength(
  void
) const 

הפונקציה מחזירה את אורך הנתונים שמשויכים לרכיב TLV הנוכחי.

אורך הנתונים חל רק על רכיבים מסוג UTF8 או מחרוזת בייטים. במחרוזות UTF8, הערך המוחזר הוא מספר הבייטים במחרוזת, ולא מספר התווים.

פרטים
החזרות
האורך (בבייטים) של הנתונים שמשויכים לאלמנט TLV הנוכחי, או 0 אם הרכיב הנוכחי הוא לא מחרוזת של בייטים או מחרוזת UTF8, או אם הקורא לא ממוקם על רכיב.

GetLengthRead

uint32_t GetLengthRead(
  void
) const 

הפונקציה מחזירה את המספר הכולל של הבייטים שנקראו מאז אתחול הקורא.

פרטים
החזרות
המספר הכולל של הבייטים שנקראו מאז אתחול הקורא.

GetReadPoint

const uint8_t * GetReadPoint(
  void
) const 

מקבלת את הנקודה במאגר הנתונים הזמני הבסיסי שתואמת למיקום הנוכחי של הקורא.

פרטים
החזרות
מצביע אל מאגר נתונים זמני בסיסי שתואם למיקום הנוכחי של הקורא.

GetRemainingLength

uint32_t GetRemainingLength(
  void
) const 

הפונקציה מחזירה את המספר הכולל של הבייטים שניתן לקרוא עד שמגיעים לאורך הקריאה המקסימלי.

פרטים
החזרות
המספר הכולל של הבייטים שניתן לקרוא עד שמגיעים לאורך הקריאה המקסימלי.

GetString

WEAVE_ERROR GetString(
  char *buf,
  uint32_t bufSize
)

מקבלים את הערך של רכיב המחרוזת הנוכחי בבייט או ב-UTF8 כמחרוזת אפסית שהסתיימה.

כדי לקבוע את הגודל הנדרש של מאגר הנתונים הזמני, קוראים לשיטה GetLength() לפני קריאה ל-GetBytes(). כדי להכיל את התו ה-null, מאגר הנתונים הזמני חייב להיות גדול בבייט אחד לפחות מאורך המחרוזת.

פרטים
פרמטרים
[in] buf
מצביע למאגר נתונים זמני כדי לקבל את נתוני המחרוזת של הבייטים.
[in] bufSize
הגודל בבייטים של מאגר הנתונים הזמני שאליו מפנה buf.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הרכיב הנוכחי הוא לא בייט TLV או מחרוזת UTF8, או שהקורא לא ממוקם על רכיב.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם מאגר הנתונים הזמני שסופק קטן מדי ולא יכול להכיל את הנתונים שמשויכים לרכיב הנוכחי.
WEAVE_ERROR_TLV_UNDERRUN
אם הקידוד הבסיסי של ה-TLV הסתיים מוקדם מדי.
other
קודי שגיאה אחרים של Weave או הפלטפורמה המוחזרים על-ידי הפונקציה GetNextBuffer() שהוגדרה. הדבר אפשרי רק כאשר GetNextBuffer לא מוגדר ל-NULL.

GetTag

uint64_t GetTag(
  void
) const 

הפונקציה מחזירה את התג שמשויך לרכיב TLV הנוכחי.

אפשר להשתמש בערך שמוחזר על ידי GetTag() עם פונקציות השירות של התג (IsProfileTag(), IsContextTag(), ProfileIdFromTag() וכו') כדי לקבוע את סוג התג ולחלץ ערכים שונים משדות התג.

פרטים
החזרות
מספר שלם לא חתום שמכיל מידע על התג שמשויך לרכיב TLV הנוכחי.

GetType

TLVType GetType(
  void
) const 

הפונקציה מחזירה את הסוג של הרכיב TLV הנוכחי.

פרטים
החזרות
ערך TLVType שמתאר את סוג הנתונים של רכיב TLV הנוכחי. אם הקורא לא ממוקם על רכיב TLV, הערך המוחזר יהיה kTLVType_NotSpecified.

Init

void Init(
  const TLVReader & aReader
)

מאתחלת אובייקט TLVReader מאובייקט TLVReader אחר.

פרטים
פרמטרים
[in] aReader
הפניה לקריאה בלבד של TLVReader שממנו מאתחלים.

Init

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

מאתחלת אובייקט TLVReader לקריאה ממאגר נתונים זמני של קלט.

פרטים
פרמטרים
[in] data
מצביע למאגר נתונים זמני שמכיל את הנתונים של TLV שצריך לנתח.
[in] dataLen
אורך נתוני TLV לניתוח.

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

מאתחלת אובייקט TLVReader לקריאה מ-packetBuffer יחיד.

הניתוח מתחיל בנקודת ההתחלה של מאגר הנתונים הזמני (buf->DataStart() ) וממשיך עד לסוף הנתונים במאגר הנתונים הזמני (כפי שנקבע על ידי buf->Datalen() ) או עד שהמערכת מנתחת בייטים של maxLen.

פרטים
פרמטרים
[in] buf
מצביע אל PacketBuffer שמכיל את הנתונים של TLV שצריך לנתח.
[in] maxLen
המספר המקסימלי של בייטים לנתח. ברירת המחדל היא כמות הנתונים במאגר הנתונים הזמני.

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen,
  bool allowDiscontiguousBuffers
)

מאתחלת אובייקט TLVReader לקריאה מ-packetBuffers אחד או יותר.

הניתוח מתחיל בנקודת ההתחלה של מאגר הנתונים הזמני (buf->DataStart() ). אם הערך של הפרמטר AllowDiscontiguousBuffers הוא True, הקורא יתקדם בשרשרת של מאגרי הנתונים הזמניים שמקושרים באמצעות מצביעי Next(). הניתוח ממשיך עד שיסופקו כל הנתונים בשרשרת מאגר הנתונים הזמני (כפי שנקבע על ידי buf->Datalen() ) או ינותחו בייטים של maxLen.

פרטים
פרמטרים
[in] buf
מצביע אל PacketBuffer שמכיל את הנתונים של TLV שצריך לנתח.
[in] maxLen
המספר המקסימלי של בייטים לנתח. ברירת המחדל היא כמות הנתונים הכוללת בשרשרת מאגר הנתונים הזמני.
[in] allowDiscontiguousBuffers
אם הערך הוא True, עוברים למאגר הנתונים הזמני הבא בשרשרת אחרי צריכת הנתונים של כל הנתונים במאגר הנתונים הזמני. אם הערך הוא False, מפסיקים את הניתוח בסוף מאגר הנתונים הזמני.

הבא

WEAVE_ERROR Next(
  void
)

מקדמת את האובייקט TLVReader לרכיב TLV הבא שיש לקרוא.

ה-method Next() ממקמת את אובייקט ה-Reader ברכיב הבא בקידוד TLV שנמצא באותו הקשר של גבולות. באופן ספציפי, אם הקורא ממוקם ברמה החיצונית ביותר של קידוד TLV, קריאה של Next() תקדם את הקורא לאלמנט הבא, העליון ביותר. אם הקורא ממוקם בתוך רכיב קונטיינר TLV (מבנה, מערך או נתיב), קריאה ל-Next() תקדם את הקורא לרכיב החבר הבא בקונטיינר.

מכיוון ש-Next() מגבילה את תנועת הקורא להקשר הבלימת הנוכחי, קריאה ל-Next() כשהקורא ממוקם על רכיב בקונטיינר תקדם מעל הקונטיינר וידלג על הרכיבים שכלולים בו (ועל הרכיבים של קונטיינרים בתוך קונטיינרים) עד שהוא יגיע לאלמנט הראשון אחרי הקונטיינר.

כשאין רכיבים נוספים בתוך הקשר מסוים של הגבלה, ה-method Next() מחזירה שגיאת WEAVE_END_OF_TLV והמיקום של הקורא יישאר ללא שינוי.

פרטים
מוחזר ערכים
WEAVE_NO_ERROR
אם הקורא הוצב בהצלחה על רכיב חדש.
WEAVE_END_OF_TLV
אם לא קיימים רכיבים נוספים.
WEAVE_ERROR_TLV_UNDERRUN
אם הקידוד הבסיסי של ה-TLV הסתיים מוקדם מדי.
WEAVE_ERROR_INVALID_TLV_ELEMENT
אם הקורא נתקל בסוג רכיב TLV לא תקין או לא נתמך.
WEAVE_ERROR_INVALID_TLV_TAG
אם הקורא נתקל בתג TLV בהקשר לא חוקי.
WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG
אם הקורא נתקל בתג TLV בקידוד מרומז, שמזהה הפרופיל המתאים שלו לא ידוע.
other
קודי שגיאה אחרים של Weave או הפלטפורמה המוחזרים על-ידי הפונקציה GetNextBuffer() שהוגדרה. הדבר אפשרי רק כאשר GetNextBuffer לא מוגדר ל-NULL.

הבא

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

מקדמת את האובייקט TLVReader לרכיב TLV הבא שיש לקרוא, עם הצהרה על הסוג והתג של הרכיב החדש.

השיטה Next(TLVType ExpectedType, uint64_texpectedTag) היא שיטת נוחות בעלת התנהגות זהה לזו של Next(), אך גם מאמתת שהסוג והתג של רכיב ה-TLV החדש תואמים לארגומנטים שסופקו.

פרטים
פרמטרים
[in] expectedType
סוג הנתונים הצפוי עבור הרכיב הבא.
[in] expectedTag
התג הצפוי של הרכיב הבא.
מוחזר ערכים
WEAVE_NO_ERROR
אם הקורא הוצב בהצלחה על רכיב חדש.
WEAVE_END_OF_TLV
אם לא קיימים רכיבים נוספים.
WEAVE_ERROR_WRONG_TLV_TYPE
אם סוג הרכיב החדש לא תואם לערך של הארגומנט expectedType.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
אם התג שמשויך לרכיב החדש לא תואם לערך של הארגומנט expectedTag.
WEAVE_ERROR_TLV_UNDERRUN
אם הקידוד הבסיסי של ה-TLV הסתיים מוקדם מדי.
WEAVE_ERROR_INVALID_TLV_ELEMENT
אם הקורא נתקל בסוג רכיב TLV לא תקין או לא נתמך.
WEAVE_ERROR_INVALID_TLV_TAG
אם הקורא נתקל בתג TLV בהקשר לא חוקי.
other
קודי שגיאה אחרים של Weave או הפלטפורמה המוחזרים על-ידי הפונקציה GetNextBuffer() שהוגדרה. הדבר אפשרי רק כאשר GetNextBuffer לא מוגדר ל-NULL.

OpenContainer

WEAVE_ERROR OpenContainer(
  TLVReader & containerReader
)

מאתחלת אובייקט TLVReader חדש לקריאת החברים ברכיב קונטיינר TLV.

השיטה OpenContainer() מאתחלת אובייקט TLVReader חדש לקריאת רכיבי החברים של קונטיינר TLV (מבנה, מערך או נתיב). כשמפעילים את הפונקציה OpenContainer(), צריך למקם את האובייקט הנוכחי של TLVReader על רכיב הקונטיינר כדי לקרוא אותו. השיטה מתייחסת כארגומנט היחיד שלה כהפניה לקורא חדש שיאופס לקריאת מאגר התגים. הקורא הזה נקרא קורא קונטיינר, ואילו הקורא שבו נקרא OpenContainer() נקרא קורא הורה.

כשהשיטה OpenContainer() חוזרת, קורא הקונטיינר ממוקם ממש לפני האיבר הראשון של הקונטיינר. קריאה ל-Next() בקורא הקונטיינרים תקדם את חברי האוסף עד לסוף, ואז הקורא יחזיר WEAVE_END_OF_TLV.

כשקורא הקונטיינר פתוח, אסור לאפליקציות לבצע הפעלות או לשנות בכל דרך אחרת את המצב של קורא ההורה. לאחר שאפליקציה מסיימת להשתמש בקורא הקונטיינר, היא צריכה לסגור אותה על ידי קריאה ל-CloseContainer() בקורא ההורה, והעברת קורא הקונטיינר כארגומנט. אפליקציות יכולות לסגור את קורא הקונטיינר בכל שלב, עם או בלי קריאה של כל הרכיבים שכלולים במאגר התגים. לאחר סגירת קורא הקונטיינר, האפליקציות יכולות להמשיך להשתמש בקורא ההורה.

קורא הקונטיינר יורש מאפייני תצורה שונים מקורא ההורה. סוגים אלה הם:

  • מזהה הפרופיל המשתמע (ImplicitProfileId)
  • הסמן של נתוני האפליקציה (AppData)
  • הסמן של הפונקציה GetNextBuffer

פרטים
פרמטרים
[out] containerReader
הפניה לאובייקט TLVReader שיאופס לקריאת החברים ברכיב הקונטיינר הנוכחי. כל הנתונים המשויכים לאובייקט שסופק מוחלפים.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_INCORRECT_STATE
אם הרכיב הנוכחי לא ממוקם על רכיב קונטיינר.

דילוג

WEAVE_ERROR Skip(
  void
)

הפונקציה מקדמת את האובייקט TLVReader כך שיופיע מיד אחרי הרכיב הנוכחי של TLV.

שיטת Skip() ממקמת את אובייקט הקורא מיד אחרי רכיב ה-TLV הנוכחי, כך שקריאה נוספת ל-Next() תקדם את הקורא לאלמנט הבא. בדומה ל-Next(), אם הקורא ממוקם על רכיב קונטיינר בזמן הקריאה, המערכת תדלג על החברים במאגר. אם הקורא לא ממוקם על רכיב כלשהו, המיקום שלו נשאר ללא שינוי.

פרטים
מוחזר ערכים
WEAVE_NO_ERROR
אם הקורא הוצב בהצלחה על רכיב חדש.
WEAVE_END_OF_TLV
אם לא קיימים רכיבים נוספים.
WEAVE_ERROR_TLV_UNDERRUN
אם הקידוד הבסיסי של ה-TLV הסתיים מוקדם מדי.
WEAVE_ERROR_INVALID_TLV_ELEMENT
אם הקורא נתקל בסוג רכיב TLV לא תקין או לא נתמך.
WEAVE_ERROR_INVALID_TLV_TAG
אם הקורא נתקל בתג TLV בהקשר לא חוקי.
other
קודי שגיאה אחרים של Weave או הפלטפורמה המוחזרים על-ידי הפונקציה GetNextBuffer() שהוגדרה. הדבר אפשרי רק כאשר GetNextBuffer לא מוגדר ל-NULL.

VerifyEndOfContainer

WEAVE_ERROR VerifyEndOfContainer(
  void
)

מאשרת שהאובייקט TVLReader נמצא בסוף קונטיינר מסוג TLV.

ה-method VerifyEndOfContainer() מאמתת שאין עוד רכיבי TLV לקריאה בתוך מאגר ה-TLV הנוכחי. זוהי שיטת נוחות המקבילה לקריאה ל-Next() ולבדיקה של ערך המוחזר של WEAVE_END_OF_TLV.

פרטים
מוחזר ערכים
WEAVE_NO_ERROR
אם אין רכיבי TLV נוספים שצריך לקרוא.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
אם נמצא עוד רכיב TLV באוסף.
WEAVE_ERROR_TLV_UNDERRUN
אם הקידוד הבסיסי של ה-TLV הסתיים מוקדם מדי.
WEAVE_ERROR_INVALID_TLV_ELEMENT
אם הקורא נתקל בסוג רכיב TLV לא תקין או לא נתמך.
WEAVE_ERROR_INVALID_TLV_TAG
אם הקורא נתקל בתג TLV בהקשר לא חוקי.
other
קודי שגיאה אחרים של Weave או הפלטפורמה המוחזרים על-ידי הפונקציה GetNextBuffer() שהוגדרה. הדבר אפשרי רק כאשר GetNextBuffer לא מוגדר ל-NULL.

פונקציות מוגנות

ClearElementState

void ClearElementState(
  void
)

מוחקים את המצב של TLVReader.

בשיטה הזו משתמשים כדי למקם את הקורא לפני TLV הראשון, בין רכיבי TLV או אחרי TLV האחרון.

ElementType

TLVElementType ElementType(
  void
) const 

זו שיטה פרטית שמחזירה את TLVElementType מ-mControlByte.

EnsureData

WEAVE_ERROR EnsureData(
  WEAVE_ERROR noDataErr
)

GetElementHeadLength

WEAVE_ERROR GetElementHeadLength(
  uint8_t & elemHeadBytes
) const 

זו שיטה פרטית לחישוב האורך של ראש רכיב TLV.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

ReadData

WEAVE_ERROR ReadData(
  uint8_t *buf,
  uint32_t len
)

ReadElement

WEAVE_ERROR ReadElement(
  void
)

ReadTag

uint64_t ReadTag(
  TLVTagControl tagControl,
  const uint8_t *& p
)

SetContainerOpen

void SetContainerOpen(
  bool aContainerOpen
)

SkipData

WEAVE_ERROR SkipData(
  void
)

כדי לדלג על הנתונים שכלולים ב-TLV הנוכחי, קוראים אותם ללא מאגר נתונים זמני ביעד.

פרטים
מוחזר ערכים
WEAVE_NO_ERROR
אם הקורא הוצב בהצלחה בסוף הנתונים.
other
קודי שגיאה אחרים של Weave או הפלטפורמה המוחזרים על-ידי הפונקציה GetNextBuffer() שהוגדרה. הדבר אפשרי רק כאשר GetNextBuffer לא מוגדר ל-NULL.

SkipToEndOfContainer

WEAVE_ERROR SkipToEndOfContainer(
  void
)

VerifyElement

WEAVE_ERROR VerifyElement(
  void
)

פונקציות סטטיות מוגנות

FailGetNextBuffer

WEAVE_ERROR FailGetNextBuffer(
  TLVReader & reader,
  uintptr_t & bufHandle,
  const uint8_t *& bufStart,
  uint32_t & bufLen
)

GetNextPacketBuffer

WEAVE_ERROR GetNextPacketBuffer(
  TLVReader & reader,
  uintptr_t & bufHandle,
  const uint8_t *& bufStart,
  uint32_t & bufLen
)