nl:: بافت:: TLV:: TLVReader

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

یک تجزیه کننده کارآمد حافظه برای داده های کدگذاری شده در قالب Weave TLV فراهم می کند.

خلاصه

TLVReader یک تجزیه‌کننده فقط به جلو و «استایل کششی» را برای داده‌های Weave TLV پیاده‌سازی می‌کند. شی TLVReader به عنوان یک مکان نما عمل می کند که می تواند برای تکرار روی یک دنباله از عناصر TLV و تفسیر محتوای آنها استفاده شود. هنگامی که برنامه‌ها روی یک عنصر قرار می‌گیرند، می‌توانند با متدهای Get() خواننده تماس بگیرند تا نوع و برچسب عنصر فعلی را پرس و جو کنند و هر مقدار مرتبط را استخراج کنند. متد Next() Reader برای پیشروی از عنصری به عنصر دیگر استفاده می شود.

یک شی TLVReader همیشه قبل، روی یا بعد از یک عنصر TLV قرار می گیرد. هنگامی که برای اولین بار مقداردهی اولیه می شود، یک TLVReader بلافاصله قبل از اولین عنصر رمزگذاری قرار می گیرد. برای شروع خواندن، یک برنامه کاربردی باید یک فراخوانی اولیه با متد ()Next برقرار کند تا خواننده را روی عنصر اول قرار دهد. هنگامی که یک عنصر کانتینر با یک ساختار، یک آرایه یا یک مسیر مواجه می‌شود، می‌توان از روش‌های OpenContainer() یا EnterContainer برای تکرار در محتویات ظرف استفاده کرد.

هنگامی که خواننده به پایان رمزگذاری TLV یا آخرین عنصر درون یک ظرف می رسد، با برگرداندن یک خطای WEAVE_END_OF_TLV از متد ()Next به برنامه سیگنال می دهد. خواننده همچنان به بازگرداندن WEAVE_END_OF_TLV ادامه می‌دهد تا زمانی که مجدداً مقداردهی شود، یا از ظرف فعلی خارج شود (از طریق CloseContainer() / ExitContainer() ).

یک شی TLVReader می تواند داده ها را مستقیماً از یک بافر ورودی ثابت یا از زنجیره ای از یک یا چند PacketBuffer تجزیه کند. علاوه بر این، برنامه‌ها می‌توانند یک تابع GetNextBuffer برای تغذیه داده‌ها از یک منبع دلخواه به خواننده، به عنوان مثال یک سوکت یا یک پورت سریال، ارائه دهند.

ارث

زیر کلاس های مستقیم شناخته شده:
  nl::Weave::Profiles::DataManagement_Current::CircularEventReader
  nl:: بافت::TLV::دایره TLVReader

انواع عمومی

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)
یک بافر حاوی مقدار تهی بایت فعلی یا رشته UTF8 را اختصاص داده و برمی گرداند.
EnterContainer ( TLVType & outerContainerType)
یک شی TLVReader را برای خواندن اعضای عنصر ظرف TLV آماده می کند.
ExitContainer ( TLVType outerContainerType)
خواندن یک ظرف TLV را کامل می کند و یک شی TLVReader را برای خواندن عناصر بعد از ظرف آماده می کند.
Get (bool & v)
مقدار عنصر فعلی را به عنوان یک نوع bool دریافت کنید.
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 را برای خواندن از یک یا چند PacketBuffer راه اندازی می کند.
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() داشته باشند و یک مرجع به همان Container Reader به هر دو متد ارسال کنند.

هنگامی که CloseContainer() برمی گردد، خواننده والد بلافاصله قبل از اولین عنصری که پس از ظرف قرار می گیرد قرار می گیرد. از این نقطه یک برنامه کاربردی می تواند از متد Next() برای پیشروی در میان عناصر باقی مانده استفاده کند.

برنامه‌ها می‌توانند CloseContainer() را در یک خواننده والد در هر زمانی از زمان فراخوانی کنند، صرف نظر از اینکه آیا تمام عناصر موجود در ظرف زیرین خوانده شده‌اند یا خیر. پس از فراخوانی ()CloseContainer ، برنامه باید کانتینر خوان را به‌عنوان «deitialized» در نظر بگیرد و نباید آن را بدون مقداردهی مجدد آن استفاده کند.

جزئیات
پارامترها
[in] containerReader
ارجاع به شی TLVReader که به متد OpenContainer() ارائه شده است.
ارزش های بازگشتی
WEAVE_NO_ERROR
اگر روش موفق شد.
WEAVE_ERROR_INCORRECT_STATE
اگر OpenContainer() در Reader فراخوانی نشده باشد، یا اگر Container Reader با روش ارسال شده به روش OpenContainer() مطابقت نداشته باشد.
WEAVE_ERROR_TLV_UNDERRUN
اگر رمزگذاری TLV زیربنایی پیش از موعد به پایان برسد.
WEAVE_ERROR_INVALID_TLV_ELEMENT
اگر خواننده با یک نوع عنصر TLV نامعتبر یا پشتیبانی نشده مواجه شد.
WEAVE_ERROR_INVALID_TLV_TAG
اگر خواننده با یک برچسب TLV در یک زمینه نامعتبر مواجه شد.
other
سایر کدهای خطای Weave یا platform توسط تابع پیکربندی شده GetNextBuffer() برگردانده شده است. فقط زمانی ممکن است که GetNextBuffer غیر NULL باشد.

DupBytes

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

یک بافر حاوی مقدار بایت فعلی یا رشته UTF8 را اختصاص داده و برمی گرداند.

این روش یک بافر ایجاد می کند و یک کپی از داده های مرتبط با بایت یا عنصر رشته UTF-8 را در موقعیت فعلی برمی گرداند. حافظه بافر با malloc() به دست می آید و زمانی که دیگر نیازی به آن نیست، باید با free() توسط تماس گیرنده آزاد شود.

جزئیات
پارامترها
[out] buf
ارجاع به اشاره‌گری که در صورت موفقیت، یک بافر تخصیص داده شده توسط پشته از بایت‌های dataLen به آن اختصاص داده می‌شود.
[out] dataLen
ارجاع به ذخیره سازی برای اندازه، بر حسب بایت، buf on موفقیت.
ارزش های بازگشتی
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 یا platform توسط تابع پیکربندی شده GetNextBuffer() برگردانده شده است. فقط زمانی ممکن است که GetNextBuffer غیر NULL باشد.

DupString

WEAVE_ERROR DupString(
  char *& buf
)

یک بافر حاوی مقدار تهی بایت فعلی یا رشته UTF8 را اختصاص داده و برمی گرداند.

این روش یک بافر برای داده های مرتبط با بایت یا عنصر رشته UTF-8 در موقعیت فعلی ایجاد می کند و یک کپی با پایان تهی را برمی گرداند. حافظه بافر با malloc() به دست می آید و زمانی که دیگر نیازی به آن نیست، باید با 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() بر روی Reader فراخوانی نشده باشد، یا اگر Container Reader با روش ارسال شده به روش OpenContainer() مطابقت نداشته باشد.
WEAVE_ERROR_TLV_UNDERRUN
اگر رمزگذاری TLV زیربنایی پیش از موعد به پایان برسد.
WEAVE_ERROR_INVALID_TLV_ELEMENT
اگر خواننده با یک نوع عنصر TLV نامعتبر یا پشتیبانی نشده مواجه شد.
WEAVE_ERROR_INVALID_TLV_TAG
اگر خواننده با یک برچسب TLV در یک زمینه نامعتبر مواجه شد.
other
سایر کدهای خطای Weave یا platform توسط تابع پیکربندی شده GetNextBuffer() برگردانده شده است. فقط زمانی ممکن است که GetNextBuffer غیر NULL باشد.

دریافت کنید

WEAVE_ERROR Get(
  bool & v
)

مقدار عنصر فعلی را به عنوان یک نوع bool دریافت کنید.

جزئیات
پارامترها
[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 نباشد، یا خواننده روی یک عنصر قرار نگیرد.

GetBufHandle

uintptr_t GetBufHandle(
  void
) const 

GetBytes

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

مقدار بایت فعلی یا عنصر رشته UTF8 را دریافت کنید.

برای تعیین اندازه بافر ورودی مورد نیاز، قبل از فراخوانی GetBytes () متد GetLength () را فراخوانی کنید.

جزئیات
پارامترها
[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 باید به آن دسترسی داشته باشد. اما، با این وجود، دسترسی به بایت کنترل برای اهداف اشکال زدایی توسط TLV Debug Utilities مفید است (که سعی می کنند بایت کنترل برچسب را هنگام چاپ زیبای محتویات بافر TLV رمزگشایی کنند).

جزئیات
برمی گرداند
یک عدد صحیح بدون علامت حاوی بایت کنترل مرتبط با عنصر TLV فعلی. اگر خواننده روی یک عنصر قرار نگیرد، kTLVControlByte_NotSpecified برگردانده می شود.

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

یک اشاره گر به بایت کدگذاری شده اولیه یک بایت TLV یا عنصر رشته UTF8 دریافت کنید.

این روش یک اشاره گر مستقیم مقدار رشته کدگذاری شده را در بافر ورودی زیرین برمی گرداند. برای موفقیت، روش مستلزم آن است که کل مقدار رشته در یک بافر وجود داشته باشد. در غیر این صورت روش WEAVE_ERROR_TLV_UNDERRUN را برمی گرداند. این باعث می شود که روش در هنگام خواندن داده ها از چند بافر ناپیوسته استفاده محدود شود.

جزئیات
پارامترها
[out] data
یک اشاره به یک اشاره گر const که یک اشاره گر به داده های رشته زیرین دریافت می کند.
ارزش های بازگشتی
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 را به عنوان یک رشته پایان یافته تهی دریافت کنید.

برای تعیین اندازه بافر ورودی مورد نیاز، قبل از فراخوانی GetBytes () متد GetLength () را فراخوانی کنید. بافر ورودی باید حداقل یک بایت بزرگتر از طول رشته باشد تا کاراکتر تهی را در خود جای دهد.

جزئیات
پارامترها
[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 یا platform توسط تابع پیکربندی شده 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 را برای خواندن از یک یا چند PacketBuffer راه اندازی می کند.

تجزیه از موقعیت شروع بافر اولیه (buf->DataStart()) شروع می شود. اگر allowDiscontiguousBuffers درست باشد، خواننده از طریق زنجیره ای از بافرها که توسط اشاره گرهای Next() به هم مرتبط شده اند، پیش می رود. تجزیه تا زمانی ادامه می یابد که تمام داده های زنجیره بافر مصرف شود (همانطور که با buf->Datalen() نشان داده شده است)، یا بایت های maxLen تجزیه شوند.

جزئیات
پارامترها
[in] buf
یک اشاره گر به PacketBuffer حاوی داده های TLV برای تجزیه.
[in] maxLen
حداکثر بایت برای تجزیه. مقدار کل داده در زنجیره بافر ورودی را پیش‌فرض می‌کند.
[in] allowDiscontiguousBuffers
اگر درست است، زمانی که تمام داده های بافر فعلی مصرف شد، به بافر بعدی در زنجیره بروید. اگر نادرست است، تجزیه را در پایان بافر اولیه متوقف کنید.

بعدی

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(TLVType expectType, uint64_t expectTag) یک روش راحت است که رفتاری مشابه با 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 را برمی گرداند.

وقتی کانتینرخوان باز است، برنامه‌ها نباید تماس بگیرند یا وضعیت خواننده اصلی را تغییر دهند. هنگامی که یک برنامه کاربردی استفاده از Container Reader را تمام کرد، باید آن را با فراخوانی ()CloseContainer در خواننده والد ببندد، و Container reader را به عنوان آرگومان ارسال کند. برنامه‌ها ممکن است کانتینرخوان را در هر نقطه، با یا بدون خواندن همه عناصر موجود در ظرف زیرین ببندند. پس از بسته شدن کانتینر خوان، برنامه ها ممکن است به استفاده خود از خواننده والد ادامه دهند.

Container Reader ویژگی های پیکربندی مختلفی را از خواننده اصلی به ارث می برد. اینها عبارتند از:

  • شناسه نمایه ضمنی (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 یا platform توسط تابع پیکربندی شده 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
سایر کدهای خطای بافندگی یا بستر های نرم افزاری که توسط عملکرد پیکربندی شده GetNextBuffer () بازگردانده شده اند. فقط در صورت امکان GetNextBuffer غیر تهی است.

توابع محافظت شده

کاپلیستستات

void ClearElementState(
  void
)

وضعیت tlvreader را پاک کنید.

این روش برای قرار دادن خواننده قبل از اولین TLV ، بین TLV یا بعد از آخرین TLV استفاده می شود.

عنصر

TLVElementType ElementType(
  void
) const 

این یک روش خصوصی است که TlvelementType را از McOntrolByte برمی گرداند.

تضمین شده

WEAVE_ERROR EnsureData(
  WEAVE_ERROR noDataErr
)

طول getelementledl

WEAVE_ERROR GetElementHeadLength(
  uint8_t & elemHeadBytes
) const 

این یک روش خصوصی است که برای محاسبه طول سر عنصر TLV استفاده می شود.

iscontaineropen

bool IsContainerOpen(
  void
) const 

readdata

WEAVE_ERROR ReadData(
  uint8_t *buf,
  uint32_t len
)

خواندن

WEAVE_ERROR ReadElement(
  void
)

رجیت

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

setContainerOpen

void SetContainerOpen(
  bool aContainerOpen
)

صعود

WEAVE_ERROR SkipData(
  void
)

با خواندن بیش از آن بدون بافر مقصد ، از داده های موجود در TLV فعلی استفاده کنید.

جزئیات
ارزش های بازگشتی
WEAVE_NO_ERROR
اگر خواننده با موفقیت در انتهای داده ها قرار گرفت.
other
سایر کدهای خطای بافندگی یا بستر های نرم افزاری که توسط عملکرد پیکربندی شده GetNextBuffer () بازگردانده شده اند. فقط در صورت امکان GetNextBuffer غیر تهی است.

SkiptoEndofContainer

WEAVE_ERROR SkipToEndOfContainer(
  void
)

سنجش

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
)