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 משיטת Next(). הקורא ימשיך להחזיר WEAVE_END_OF_TLV עד שיתבצע אתחול מחדש או עד ליציאה מהמאגר הנוכחי (דרך CloseContainer() / ExitContainer()).

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

ירושה

Direct known Subclasses:
  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)
הפונקציה מאתרת ומחזירה מאגר נתונים זמני שמכיל את הערך של הבייט הנוכחי או של מחרוזת ה-UTF8.
DupString(char *& buf)
הפונקציה משייכת ומחזירה מאגר נתונים זמני שמכיל ערך 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 כמחרוזת עם סיום null.
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(), כדי להעביר הפניה לאותו קורא קונטיינרים לשתי השיטות.

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

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

פרטים
פרמטרים
[in] containerReader
הפניה לאובייקט TLVReader שסופק ל-method OpenContainer().
ערכים מוחזרים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_INCORRECT_STATE
אם הקורא של OpenContainer() לא הופעל לקורא, או אם קורא הקונטיינר לא תואם לזה שהועבר למתודה 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
)

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

השיטה הזו יוצרת מאגר נתונים זמני ומחזירה עותק של הנתונים שמשויכים לרכיב הבייט או לרכיב מחרוזת ה-UTF-8 במיקום הנוכחי. הזיכרון של מאגר הנתונים הזמני נוצר באמצעות Maloc() וצריך לשחרר אותו עם 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
)

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

השיטה הזו יוצרת מאגר נתונים זמני ומחזירה עותק שהסיומת שלו היא null של הנתונים שמשויכים לרכיב הבייט או לרכיב מחרוזת ה-UTF-8 במיקום הנוכחי. הזיכרון של מאגר הנתונים הזמני נוצר באמצעות Maloc() וצריך לשחרר אותו עם Free() כשאין בו יותר צורך.

פרטים
פרמטרים
[out] 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.

EnterContainer

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

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

השיטה 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 כך שיקרא רכיבים אחרי המאגר.

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

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

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

פרטים
פרמטרים
[in] outerContainerType
ערך ה-TLVType שהוחזר על ידי השיטה EnterContainer().
ערכים מוחזרים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_INCORRECT_STATE
אם הקורא של OpenContainer() לא הופעל לקורא, או אם קורא הקונטיינר לא תואם לזה שהועבר למתודה 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 של נקודה צפה (floating-point), או שהקורא לא ממוקם על רכיב.

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 קריאה כרגע.

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

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

GetControlByte

uint16_t GetControlByte(
  void
) const 

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

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

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

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

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

השיטה הזו מחזירה מצביע ישיר את ערך המחרוזת המקודדת בתוך מאגר הקלט הבסיסי. כדי להצליח, השיטה דורשת שכל ערך המחרוזת יופיע במאגר נתונים זמני. אחרת השיטה מחזירה את הערך 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 כמחרוזת עם סיום null.

כדי לקבוע את הגודל הנדרש למאגר הנתונים הזמני, צריך לקרוא לשיטה 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.

הפעלה

void Init(
  const TLVReader & aReader
)

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

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

הפעלה

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

מפעילה אובייקט TLVReader כדי לקרוא ממאגר קלט יחיד.

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

הפעלה

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

מפעילה אובייקט TLVReader כדי לקרוא מ-PacketBuffer יחיד.

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

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

הפעלה

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

מפעיל אובייקט TLVReader כדי לקרוא מ-PacketBuffers אחד או יותר.

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

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

הבא

WEAVE_ERROR Next(
  void
)

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

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

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

כשאין רכיבים נוספים בהקשר של עצירה מסוימת, שיטת 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(TLVTypeexpectedType, 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.

השיטה 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
)