nl::Weave::TLV::TLVWriter

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

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

סיכום

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

אובייקט TLVWriter יכול לכתוב נתונים ישירות למאגר נתונים זמני של פלט, או לשרשרת של אובייקט PacketBuffer אחד או יותר. בנוסף, אפליקציות יכולות לספק פונקציות GetNewBuffer ו-FinalizeBuffer משלהן כדי להפנות פלט ליעד שרירותי, למשל. socket או תור אירועים.

ירושה

מחלקות משנה מוכרות ישירות: nl::Weave::TLV::CircularTLVWriter

סוגים מוגנים

@72{
  kEndOfContainerMarkerSize = 1
}
טיפוסים בני מנייה (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)
משלימה את הכתיבה של קונטיינר TLV אחרי קריאה ל-OpenContainer().
ContinuePutBytes(const uint8_t *buf, uint32_t len)
הפונקציה מקודדת ערך מחרוזת של בייט TLV.
CopyContainer(TLVReader & container)
העתקה של רכיב קונטיינר TLV מאובייקט TLVReader.
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
מאתחלת אובייקט TLVWriter כדי לכתוב ב-PacketBuffer יחיד.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
מאתחלת אובייקט TLVWriter כדי לכתוב ב-PacketBuffers אחד או יותר.
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
void
מאתחלת אובייקט TLVWriter כדי לכתוב בתוך מאגר דינמי דינמי.
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
מאתחלת אובייקט TLVWriter חדש עבור כתיבת רכיבי קונטיינר TLV.
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) מסוג TLV.
PutBoolean(uint64_t tag, bool v)
הפונקציה מקודדת ערך בוליאני TLV.
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
הפונקציה מקודדת ערך מחרוזת של בייט TLV.
PutNull(uint64_t tag)
הפונקציה מקודדת ערך null מסוג 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)
הטמעה של פונקציית TLVWriter FinalizeBuffer לכתיבה בשרשרת של PacketBuffers.
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)
הטמעה של פונקציית TLVWriter GetNewBuffer לכתיבה לשרשרת של PacketBuffers.

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

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.

מתבצעת קריאה לפונקציות מהסוג הזה כשמתבצעת קריאה ל-method Finalize() של TLVWriter. הפונקציה צפויה לבצע את כל הניקיון או הפעולה הסופיים הנדרשים שקשורים לשימוש בפלט של אובייקט הכתיבה. דוגמאות לכך כוללות, למשל, הקלטת האורך הסופי של הקידוד או סגירת מתאר קובץ.

פרטים
פרמטרים
[in] writer
הפניה לאובייקט TLVWriter שנמצא בתהליך עיבוד.
[in,out] bufHandle
ערך הקשר uintptr_t שהוגדר על ידי קריאות קודמות לפונקציה GetNewBuffer.
[in,out] bufStart
מצביע להתחלה של מאגר הנתונים הזמני (והסופי) של הפלט.
[in,out] bufLen
מספר הבייטים שכלולים במאגר הנתונים הזמני שאליו מצביעים bufStart.
מוחזר ערכים
WEAVE_NO_ERROR
אם הסיכום הושלם בהצלחה.
other
קודי שגיאה אחרים של Weave או פלטפורמה ספציפית, שמציינים שאירעה שגיאה במהלך העיבוד הסופי.

GetNewBufferFunct

WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)

פונקציה שמספקת שטח חדש למאגר הנתונים הזמני של הפלט ל-TLVWriter.

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

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

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

AppData

void * AppData

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

FinalizeBuffer

FinalizeBufferFunct FinalizeBuffer

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

אובייקט TLVWriter יקרא לפונקציה FinalizeBuffer בכל פעם שתתבצע קריאה ל-method Finalize(). אפליקציות יכולות להגדיר את מצביע הפונקציה בכל נקודה לפני הקריאה ל-Finalize(). כברירת מחדל, המצביע מוגדר ל-NULL, מה שגורם לשיטה Finalize() לוותר על הקריאה לפונקציה.

למידע נוסף על הטמעת הפונקציה FinalizeBuffer, ראו הגדרה של סוג FinalizeBufferFunct.

GetNewBuffer

GetNewBufferFunct GetNewBuffer

מצביע לפונקציה שמספקת שטח אחסון נתונים זמני לפלט חדש ל-TLVWriter.

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

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

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

ImplicitProfileId

uint32_t ImplicitProfileId

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

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

כברירת מחדל, המאפיין ImplicitProfileId מוגדר לערך kProfileIdNotSpecified, שמורה לכותב לא להוציא תגים בקידוד מרומז. אפליקציות יכולות להגדיר את 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
)

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

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

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

פרטים
פרמטרים
[in] containerWriter
הפניה לאובייקט TLVWriter שסופק ל-method OpenContainer().
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_INCORRECT_STATE
אם כלי הכתיבה של מאגר התגים שסופק אינו במצב הנכון.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה אחרת של קונטיינר נפתח בכתיבה של הקונטיינר שסופק ועדיין לא נסגרה.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם השלמת הקידוד של מאגר התגים תגרום לחריגה מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו.

ContinuePutBytes

WEAVE_ERROR ContinuePutBytes(
  const uint8_t *buf,
  uint32_t len
)

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

צריך להשתמש בו עם StartPutBytes.

פרטים
פרמטרים
[in] buf
מצביע למאגר נתונים זמני שמכיל את מחרוזת הבייטים לקידוד.
[in] len
מספר הבייטים לקידוד.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_INVALID_TLV_TAG
אם ערך התג שצוין לא חוקי או בלתי הולם בהקשר שבו הערך נכתב.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו.

CopyContainer

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

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

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

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

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

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

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

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

פרטים
פרמטרים
[in] tag
את תג TLV לקידוד עם מאגר התגים, או AnonymousTag אם צריך לקודד את מאגר התגים ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
[in] container
הפניה לאובייקט TLVReader שמזהה קונטיינר TLV מקודד מראש שצריך להעתיק אותו את הסוג ואת החברים שלו.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_INCORRECT_STATE
אם הקורא שסופק לא ממוקם על רכיב של קונטיינר.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_TLV_UNDERRUN
אם הקידוד הבסיסי של TLV המשויך לקורא שסופק הסתיים מוקדם מדי.
WEAVE_ERROR_INVALID_TLV_ELEMENT
אם הקורא שסופק נתקל בסוג רכיב TLV לא חוקי או לא נתמך.
WEAVE_ERROR_INVALID_TLV_TAG
אם הקורא שסופק נתקל בתג TLV בהקשר לא חוקי, או אם התג שסופק לא תקין או בלתי הולם בהקשר שבו נכתב המאגר החדש.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו, או על ידי הפונקציה GetNextBuffer() שמשויכת לאובייקט הקורא.

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  const uint8_t *encodedContainer,
  uint16_t encodedContainerLen
)

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

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

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

פרטים
פרמטרים
[in] tag
את תג TLV לקידוד עם מאגר התגים, או AnonymousTag אם צריך לקודד את מאגר התגים ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
[in] encodedContainer
מאגר נתונים זמני שמכיל מאגר TLV מקודד מראש שצריך להעתיק את הסוג שלו ואת החברים בו.
[in] encodedContainerLen
האורך בבייטים של הקונטיינר המקודד מראש.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_TLV_UNDERRUN
אם הקונטיינר המקודד הסתיים לפני הזמן.
WEAVE_ERROR_INVALID_TLV_ELEMENT
אם הקונטיינר המקודד הכיל סוג רכיב TLV לא תקין או לא נתמך.
WEAVE_ERROR_INVALID_TLV_TAG
אם המאגר המקודד הכיל תג TLV בהקשר לא חוקי, או אם התג שסופק לא תקין או בלתי הולם בהקשר שבו נכתב המאגר החדש.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו, או על ידי הפונקציה GetNextBuffer() שמשויכת לאובייקט הקורא.

CopyElement

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

מעתיק רכיב TLV מאובייקט קורא לכותב.

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

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

CopyElement

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

EndContainer

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

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

שיטת EndContainer() משלימה את הקידוד של רכיב קונטיינר TLV ומשחזרת את המצב של אובייקט TLVWrite אחרי קריאה קודמת ל-StartContainer(). בכל קריאה ל-StartContainer(), צריך לבצע קריאה תואמת ל-EndContainer(), ומעביר את ערך ה-TLVType שמוחזר על ידי הקריאה של StartContainer(). כשמחזירים EndContainer(), אפשר להשתמש באובייקט הכותב כדי לכתוב רכיבי TLV נוספים שעוקבים אחרי רכיב הקונטיינר.

פרטים
פרמטרים
[in] outerContainerType
ערך ה-TLVType שהוחזר באמצעות שיטת StartContainer().
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_INCORRECT_STATE
אם לא בוצעה קריאה תואמת של StartContainer().
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו.

סיום

WEAVE_ERROR Finalize(
  void
)

עליכם לסיים את הכתיבה של קידוד TLV.

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

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

GetContainerType

TLVType GetContainerType(
  void
) const 

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

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

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

GetLengthWritten

uint32_t GetLengthWritten(
  void
)

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

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

Init

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

מאתחלת אובייקט TLVWriter כדי לכתוב במאגר נתונים זמני של פלט.

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

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

מאתחלת אובייקט TLVWriter כדי לכתוב ב-PacketBuffer יחיד.

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

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

Init

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

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

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

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

InitMalloced

void InitMalloced(
  uint8_t *& outBuf,
  uint32_t initialBufSize,
  uint32_t maxLen
)

מאתחלת אובייקט TLVWriter כדי לכתוב בתוך מאגר דינמי דינמי.

פרטים
פרמטרים
[in] buf
הפניה לסמן שיקבל את מאגר הנתונים הזמני שהוקצה לו.
[in] maxLen
המספר המקסימלי של בייטים שייכתבו במאגר הנתונים הזמני.
[in] initialBufSize
המספר הראשוני של הבייטים שצריך להקצות למאגר הנתונים הזמני.

OpenContainer

WEAVE_ERROR OpenContainer(
  uint64_t tag,
  TLVType containerType,
  TLVWriter & containerWriter
)

מאתחלת אובייקט TLVWriter חדש עבור כתיבת רכיבי קונטיינר TLV.

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

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

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

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

פרטים
פרמטרים
[in] tag
את תג TLV לקידוד עם מאגר התגים, או AnonymousTag אם צריך לקודד את מאגר התגים ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
[in] containerType
סוג הקונטיינר לקידוד. חייב להיות אחד מהערכים kTLVType_Structure, kTLVType_Array או kTLVType_Path.
[out] containerWriter
הפניה לאובייקט TLVWriter שתופעל לכתיבת הרכיבים של רכיב הקונטיינר החדש. כל הנתונים המשויכים לאובייקט שסופק מוחלפים.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הערך שצוין ל-containType שגוי.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_INVALID_TLV_TAG
אם ערך התג שצוין לא חוקי או בלתי הולם בהקשר שבו הערך נכתב.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו.

הצבה

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

מקודד ערך של מספר שלם חתום TLV.

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

פרטים
פרמטרים
[in] tag
את התג TLV שיש לקודד עם הערך, או AnonymousTag אם צריך לקודד את הערך ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
[in] v
הערך לקידוד.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_INVALID_TLV_TAG
אם ערך התג שצוין לא חוקי או בלתי הולם בהקשר שבו הערך נכתב.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו.

הצבה

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

מקודד ערך של מספר שלם חתום TLV.

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

פרטים
פרמטרים
[in] tag
את התג TLV שיש לקודד עם הערך, או AnonymousTag אם צריך לקודד את הערך ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
[in] v
הערך לקידוד.
[in] preserveSize
הערך הוא True אם צריך לקודד את הערך באותו מספר בייטים כמו בסוג הקלט. False אם צריך לקודד את הערך במספר הבייטים המינימלי שנדרש כדי לייצג את הערך. הערה: מומלץ מאוד לאפליקציות להגדיר את הפרמטר הזה כ-False.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_INVALID_TLV_TAG
אם ערך התג שצוין לא חוקי או בלתי הולם בהקשר שבו הערך נכתב.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו.

הצבה

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.

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

פרטים
פרמטרים
[in] tag
את התג TLV שיש לקודד עם הערך, או AnonymousTag אם צריך לקודד את הערך ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
[in] v
הערך לקידוד.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_INVALID_TLV_TAG
אם ערך התג שצוין לא חוקי או בלתי הולם בהקשר שבו הערך נכתב.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו.

הצבה

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

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

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

פרטים
פרמטרים
[in] tag
את התג TLV שיש לקודד עם הערך, או AnonymousTag אם צריך לקודד את הערך ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
[in] v
הערך לקידוד.
[in] preserveSize
הערך הוא True אם צריך לקודד את הערך באותו מספר בייטים כמו בסוג הקלט. False אם צריך לקודד את הערך במספר הבייטים המינימלי שנדרש כדי לייצג את הערך. הערה: מומלץ מאוד לאפליקציות להגדיר את הפרמטר הזה כ-False.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_INVALID_TLV_TAG
אם ערך התג שצוין לא חוקי או בלתי הולם בהקשר שבו הערך נכתב.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו.

הצבה

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) מסוג TLV.

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

פרטים
פרמטרים
[in] tag
את התג TLV שיש לקודד עם הערך, או AnonymousTag אם צריך לקודד את הערך ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
[in] v
הערך לקידוד.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_INVALID_TLV_TAG
אם ערך התג שצוין לא חוקי או בלתי הולם בהקשר שבו הערך נכתב.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו.

PutBoolean

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

הפונקציה מקודדת ערך בוליאני TLV.

פרטים
פרמטרים
[in] tag
את התג TLV שיש לקודד עם הערך, או AnonymousTag אם צריך לקודד את הערך ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
[in] v
הערך לקידוד.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_INVALID_TLV_TAG
אם ערך התג שצוין לא חוקי או בלתי הולם בהקשר שבו הערך נכתב.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו.

PutBytes

WEAVE_ERROR PutBytes(
  uint64_t tag,
  const uint8_t *buf,
  uint32_t len
)

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

פרטים
פרמטרים
[in] tag
את התג TLV שיש לקודד עם הערך, או AnonymousTag אם צריך לקודד את הערך ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
[in] buf
מצביע למאגר נתונים זמני שמכיל את מחרוזת הבייטים לקידוד.
[in] len
מספר הבייטים לקידוד.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_INVALID_TLV_TAG
אם ערך התג שצוין לא חוקי או בלתי הולם בהקשר שבו הערך נכתב.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו.

PutNull

WEAVE_ERROR PutNull(
  uint64_t tag
)

הפונקציה מקודדת ערך null מסוג TLV.

פרטים
פרמטרים
[in] tag
את התג TLV שיש לקודד עם הערך, או AnonymousTag אם צריך לקודד את הערך ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_INVALID_TLV_TAG
אם ערך התג שצוין לא חוקי או בלתי הולם בהקשר שבו הערך נכתב.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו.

PutPreEncodedContainer

WEAVE_ERROR PutPreEncodedContainer(
  uint64_t tag,
  TLVType containerType,
  const uint8_t *data,
  uint32_t dataLen
)

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

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

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

פרטים
פרמטרים
[in] tag
את תג TLV לקידוד עם מאגר התגים, או AnonymousTag אם צריך לקודד את מאגר התגים ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
[in] containerType
סוג הקונטיינר לקידוד. חייב להיות אחד מהערכים kTLVType_Structure, kTLVType_Array או kTLVType_Path.
[in] data
מצביע אל מאגר נתונים זמני שמכיל אפס רכיבי TLV מקודדים נוספים שיהפכו לחלק של המאגר החדש.
[in] dataLen
מספר הבייטים במאגר הנתונים הזמני של data.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הערך שצוין ל-containType שגוי.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_INVALID_TLV_TAG
אם ערך התג שצוין לא חוקי או בלתי הולם בהקשר שבו הערך נכתב.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

הפונקציה מקודדת ערך מחרוזת מסוג TLV בתקן UTF8.

פרטים
פרמטרים
[in] tag
את התג TLV שיש לקודד עם הערך, או AnonymousTag אם צריך לקודד את הערך ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
[in] buf
מצביע למחרוזת UTF-8 עם סיום null שיש לקודד.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_INVALID_TLV_TAG
אם ערך התג שצוין לא חוקי או בלתי הולם בהקשר שבו הערך נכתב.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf,
  uint32_t len
)

הפונקציה מקודדת ערך מחרוזת מסוג TLV בתקן UTF8.

פרטים
פרמטרים
[in] tag
את התג TLV שיש לקודד עם הערך, או AnonymousTag אם צריך לקודד את הערך ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
[in] buf
מצביע למחרוזת UTF-8 שצריך לקודד.
[in] len
האורך (בבייטים) של המחרוזת שיש לקודד.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_INVALID_TLV_TAG
אם ערך התג שצוין לא חוקי או בלתי הולם בהקשר שבו הערך נכתב.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו.

PutStringF

WEAVE_ERROR PutStringF(
  uint64_t tag,
  const char *fmt,
  ...
)

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

ה-putStringF הוא אנלוגי של sprintf, שבו הפלט מאוחסן ברכיב TLV, בניגוד למאגר נתונים זמני של תווים. כשיש פונקציונליות מורחבת של Printf, הפונקציה יכולה להפיק פלט של מחרוזת התוצאה באחסון בסיסי רציף. ההטמעה תומכת בשיפורי ה-printf הבאים:

הפלטפורמה מספקת vcbprintf מבוסס-קריאה חוזרת (callback) שמאפשר לבצע קריאה חוזרת (callback) בהתאמה אישית במקום Putchar.

הפלטפורמה מספקת וריאנט של vsnprintf בשם vsnprintf_ex, שפועל בדיוק כמו לעומתnprintf, אבל יש בו תנאים להשמטת n התווים הראשונים של הפלט.

חשוב לדעת: יכול להיות שהפונקציה שמבוססת על קריאה חוזרת (callback) היא הפשוטה ביותר ותצרוך הכי פחות קוד, אבל מגוון הפונקציות של vsprintf_ex יצרוך פחות סטאק.

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

פרטים
פרמטרים
[in] tag
את התג TLV שיש לקודד עם הערך, או AnonymousTag אם צריך לקודד את הערך ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
[in] fmt
מחרוזת הפורמט שמשמשת לעיצוב של רשימת הארגומנטים. התחביר והכללים שלה זהים לאלה של מחרוזת הפורמט במשפחת הפונקציות printf.
[in] ...
רשימה של ארגומנטים לערך הפלט לפי FMt.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
other
אם קריאות בסיסיות ל-TLVWriter ב-methods WriteElementHead או GetNewBuffer נכשלות, השגיאה שלהן תועבר מיד לערימת הקריאות.

StartContainer

WEAVE_ERROR StartContainer(
  uint64_t tag,
  TLVType containerType,
  TLVType & outerContainerType
)

מתחיל לקודד רכיב TLV חדש.

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

אחרי שהשיטה StartContainer() מחזירה, האפליקציה צריכה להשתמש באובייקט TLVWriter הנוכחי כדי לכתוב את הרכיבים של הקונטיינר. בסיום, האפליקציה חייבת לקרוא לשיטה EndContainer() כדי לסיים את הקידוד של הקונטיינר.

פרטים
פרמטרים
[in] tag
את תג TLV לקידוד עם מאגר התגים, או AnonymousTag אם צריך לקודד את מאגר התגים ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
[in] containerType
סוג הקונטיינר לקידוד. חייב להיות אחד מהערכים kTLVType_Structure, kTLVType_Array או kTLVType_Path.
[out] outerContainerType
הפניה לערך TLVType שיקבל את ההקשר של הכותב.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_WRONG_TLV_TYPE
אם הערך שצוין ל-containType שגוי.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_INVALID_TLV_TAG
אם ערך התג שצוין לא חוקי או בלתי הולם בהקשר שבו הערך נכתב.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו.

StartPutBytes

WEAVE_ERROR StartPutBytes(
  uint64_t tag,
  uint32_t totalLen
)

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

צריך להשתמש בו עם ContinuePutBytes.

פרטים
פרמטרים
[in] tag
את התג TLV שיש לקודד עם הערך, או AnonymousTag אם צריך לקודד את הערך ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
[in] totalLen
המספר הכולל של הבייטים לקידוד.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
WEAVE_ERROR_TLV_CONTAINER_OPEN
אם כתיבה של קונטיינר נפתח בכותב הנוכחי ועדיין לא נסגר.
WEAVE_ERROR_INVALID_TLV_TAG
אם ערך התג שצוין לא חוקי או בלתי הולם בהקשר שבו הערך נכתב.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם כתיבת הערך תחרוג מהמגבלה על המספר המקסימלי של בייטים שצוין באתחול הכותב.
WEAVE_ERROR_NO_MEMORY
אם הניסיון להקצות מאגר נתונים זמני של פלט נכשל עקב מחסור בזיכרון.
other
שגיאות אחרות שקשורות ל-Weave או לפלטפורמה ספציפיות, שהוחזרו על ידי הפונקציות GetNewBuffer() או FinalizeBuffer() שהוגדרו.

VPutStringF

WEAVE_ERROR VPutStringF(
  uint64_t tag,
  const char *fmt,
  va_list ap
)

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

ה-putStringF הוא אנלוגי של sprintf, שבו הפלט מאוחסן ברכיב TLV, בניגוד למאגר נתונים זמני של תווים. כשיש פונקציונליות מורחבת של Printf, הפונקציה יכולה להפיק פלט של מחרוזת התוצאה באחסון בסיסי רציף. ההטמעה תומכת בשיפורי ה-printf הבאים:

הפלטפורמה מספקת vcbprintf מבוסס-קריאה חוזרת (callback) שמאפשר לבצע קריאה חוזרת (callback) בהתאמה אישית במקום Putchar.

הפלטפורמה מספקת וריאנט של vsnprintf בשם vsnprintf_ex, שפועל בדיוק כמו לעומתnprintf, אבל יש בו תנאים להשמטת n התווים הראשונים של הפלט.

חשוב לדעת: יכול להיות שהפונקציה שמבוססת על קריאה חוזרת (callback) היא הפשוטה ביותר ותצרוך הכי פחות קוד, אבל מגוון הפונקציות של vsprintf_ex יצרוך פחות סטאק.

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

פרטים
פרמטרים
[in] tag
את התג TLV שיש לקודד עם הערך, או AnonymousTag אם צריך לקודד את הערך ללא תג. את ערכי התגים יש לבנות באמצעות אחת מהפונקציות של הגדרת התג ProfileTag(), ContextTag() או CommonTag().
[in] fmt
מחרוזת הפורמט שמשמשת לעיצוב של רשימת הארגומנטים. התחביר והכללים שלה זהים לאלה של מחרוזת הפורמט במשפחת הפונקציות printf.
[in] ap
רשימה של ארגומנטים לערך הפלט לפי FMt.
מוחזר ערכים
WEAVE_NO_ERROR
אם השיטה הצליחה.
other
אם קריאות בסיסיות ל-TLVWriter ב-methods WriteElementHead או GetNewBuffer נכשלות, השגיאה שלהן תועבר מיד לערימת הקריאות.

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

FinalizePacketBuffer

WEAVE_ERROR FinalizePacketBuffer(
  TLVWriter & writer,
  uintptr_t bufHandle,
  uint8_t *bufStart,
  uint32_t dataLen
)

הטמעה של פונקציית TLVWriter FinalizeBuffer לכתיבה בשרשרת של PacketBuffers.

הפונקציה FinalizePacketBuffer() מבצעת את ההשלמה הנדרשת שנדרשת כשמשתמשים ב-TLVWriter כדי לכתוב בשרשרת של PacketBuffers. הפונקציה תוכננה לשימוש בשילוב עם הפונקציה GetNewPacketBuffer().

למידע נוסף על ה-API של הפונקציה 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.

מידע נוסף על ה-API של הפונקציה GetNewBuffer_Malloced() זמין בהגדרה של סוג GetNewBufferFunct.

GetNewPacketBuffer

WEAVE_ERROR GetNewPacketBuffer(
  TLVWriter & writer,
  uintptr_t & bufHandle,
  uint8_t *& bufStart,
  uint32_t & bufLen
)

הטמעה של פונקציית TLVWriter GetNewBuffer לכתיבה לשרשרת של PacketBuffers.

הפונקציה GetNewPacketBuffer() מספקת שטח פלט חדש ל-TLVWriter על ידי הקצאת שרשרת של PacketBuffer אחד או יותר לפי הצורך לאחסון הקידוד. הפונקציה תוקצה לסמן של הפונקציה TLVWriter GetNewBuffer.

הערה: כשמשתמשים ב-GetNewPacketBuffer עם רכיב TLVWriter, צריך להשתמש גם בפונקציה FinalizePacketBuffer() המתאימה (או בפונקציה מקבילה) כדי לסיים את שרשרת מאגר הנתונים הזמני.

מידע נוסף על ה-API של הפונקציה 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
)