nl:: بافت:: TLV:: TLVWriter

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

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

خلاصه

TLVWriter یک رمزگذار به سبک استریم رو به جلو برای داده های Weave TLV پیاده سازی می کند. برنامه ها با فراخوانی یکی از متدهای Put() نویسنده، ارسال برچسب و اطلاعات ارزش مرتبط در صورت لزوم، داده ها را در یک رمزگذاری می نویسند. به طور مشابه، برنامه‌ها می‌توانند انواع کانتینر TLV (ساختارها، آرایه‌ها یا مسیرها) را با فراخوانی روش‌های OpenContainer() یا EnterContainer()نویسنده رمزگذاری کنند.

یک شی TLVWriter می تواند داده ها را مستقیماً در یک بافر خروجی ثابت یا در زنجیره ای از یک یا چند شیء PacketBuffer بنویسد. علاوه بر این، برنامه‌ها می‌توانند توابع GetNewBuffer و FinalizeBuffer خود را برای هدایت خروجی به یک مقصد دلخواه، به عنوان مثال یک سوکت یا یک صف رویداد، ارائه کنند.

وراثت

زیر کلاس های مستقیم شناخته شده: nl:: بافت::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 را برای نوشتن در یک یا چند PacketBuffer راه اندازی می کند.
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 را رمزگذاری می کند.
PutBoolean (uint64_t tag, bool v)
یک مقدار بولی TLV را رمزگذاری می کند.
PutBytes (uint64_t tag, const uint8_t *buf, uint32_t len)
یک مقدار رشته بایت TLV را رمزگذاری می کند.
PutNull (uint64_t tag)
یک مقدار تهی 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 برای نوشتن در زنجیره ای از PacketBuffer.
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 برای نوشتن در زنجیره ای از PacketBuffer.

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

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 استفاده می شود.

توابع از این نوع زمانی فراخوانی می شوند که متد 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 حاوی تعداد بایت فضای استفاده نشده در بافر فعلی است. در هنگام خروج، انتظار می رود bufLen حاوی حداکثر تعداد بایت هایی باشد که می توان در بافر خروجی جدید نوشت.
ارزش های بازگشتی
WEAVE_NO_ERROR
اگر تابع بتواند فضای بافر بیشتری را برای نویسنده فراهم کند.
other
سایر کدهای خطای Weave یا پلتفرم خاص که نشان می دهد خطایی رخ داده است که عملکرد را از ایجاد فضای بافر اضافی جلوگیری می کند.

صفات عمومی

اطلاعات برنامه

void * AppData

یک فیلد اشاره گر که می تواند برای داده های خاص برنامه استفاده شود.

Finalize Buffer

FinalizeBufferFunct FinalizeBuffer

اشاره گر به تابعی که با نهایی شدن TLVWriter فراخوانی می شود.

یک شی TLVWriter هر زمان که متد Finalize() فراخوانی شود تابع FinalizeBuffer را فراخوانی می کند. برنامه ها می توانند نشانگر تابع را در هر نقطه ای قبل از فراخوانی 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() داشته باشند و یک مرجع را به همان Container writer به هر دو متد ارسال کنند.

هنگامی که CloseContainer() برمی گردد، برنامه ها ممکن است به استفاده از نویسنده والد برای نوشتن عناصر TLV اضافی که بعد از عنصر کانتینر ظاهر می شوند، ادامه دهند. در این مرحله، کانتینرنویس ارائه شده باید «حداقل اولیه» در نظر گرفته شود و نباید بدون شروع مجدد استفاده شود.

جزئیات
مولفه های
[in] containerWriter
ارجاع به شی TLVWriter که به روش 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 قرار دارد، رمزگذاری می کند. این روش کل عنصر کانتینر جدید را در یک فراخوانی می‌نویسد و نوع، برچسب و عناصر ظرف را از کدگذاری منبع کپی می‌کند. هنگامی که متد برمی گردد، شی نویسنده می تواند برای نوشتن عناصر 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 است. هنگامی که متد فراخوانی می شود، انتظار می رود که شی خواننده ارائه شده روی یک عنصر ظرف TLV قرار گیرد. ظرف تازه کدگذاری شده دارای همان نوع و اعضای محفظه ورودی خواهد بود. تگ کانتینر جدید به عنوان پارامتر ورودی مشخص می شود.

هنگامی که متد برمی گردد، شی نویسنده می تواند برای نوشتن عناصر 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 جدید (یک ساختار، آرایه یا مسیر) را رمزگذاری می‌کند که شامل مجموعه‌ای از عناصر عضو است که از محتویات یک کانتینر از پیش کدگذاری شده ارائه شده است. هنگامی که متد فراخوانی می شود، داده ها در بافر ورودی ارائه شده به عنوان یک عنصر ظرف TLV تجزیه می شوند و یک ظرف جدید نوشته می شود که دارای همان نوع و اعضای محفظه ورودی است. تگ کانتینر جدید به عنوان پارامتر ورودی مشخص می شود.

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

متد CopyElement() یک عنصر TLV جدید را رمزگذاری می کند که نوع، برچسب و مقدار آن از یک شی TLVReader گرفته شده است. هنگامی که متد فراخوانی می شود، انتظار می رود که شی خواننده ارائه شده روی عنصر 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 در حال نوشتن در آن است، برمی‌گرداند.

متد GetContainerType() نوع محفظه TLV را که TLVWriter در حال نوشتن در آن است برمی گرداند. اگر TLVWriter عناصر را در یک ظرف نمی‌نویسد (یعنی اگر در بیرونی‌ترین سطح یک رمزگذاری بنویسد)، متد kTLVType_NotSpecified را برمی‌گرداند.

جزئیات
برمی گرداند
TLVType کانتینر فعلی یا kTLVType_NotSpecified اگر TLVWriter در حال نوشتن عناصر درون یک ظرف نباشد.

GetLengthWritten

uint32_t GetLengthWritten(
  void
)

تعداد کل بایت های نوشته شده از زمان اولیه سازی رایتر را برمی گرداند.

جزئیات
برمی گرداند
تعداد کل بایت های نوشته شده از زمان اولیه سازی رایتر.

شروع کنید

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

یک شی TLVWriter را برای نوشتن در یک بافر خروجی راه اندازی می کند.

جزئیات
مولفه های
[in] buf
اشاره گر به بافری که TLV باید در آن نوشته شود.
[in] maxLen
حداکثر تعداد بایت هایی که باید در بافر خروجی نوشته شود.

شروع کنید

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

یک شی TLVWriter را برای نوشتن در یک PacketBuffer راه اندازی می کند.

نوشتن بلافاصله پس از آخرین بایت داده موجود در بافر ارائه شده آغاز می شود.

جزئیات
مولفه های
[in] buf
اشاره گر به PacketBuffer که TLV باید در آن نوشته شود.
[in] maxLen
حداکثر تعداد بایت هایی که باید در بافر خروجی نوشته شود.

شروع کنید

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

یک شی TLVWriter را برای نوشتن در یک یا چند PacketBuffer راه اندازی می کند.

نوشتن بلافاصله پس از آخرین بایت داده موجود در بافر مشخص شده شروع می شود. اگر allowDiscontiguousBuffers درست باشد، PacketBuffer های اضافی تخصیص داده می شود و در صورت نیاز به بافر عرضه شده زنجیر می شود تا حجم داده های نوشته شده را در خود جای دهد. اگر بافر خروجی مشخص شده از قبل سر زنجیره ای از بافرها باشد، خروجی قبل از تخصیص بافرهای جدید به بافرهای بعدی در زنجیره نوشته می شود.

جزئیات
مولفه های
[in] buf
اشاره گر به PacketBuffer که داده های TLV باید در آن نوشته شود.
[in] maxLen
حداکثر تعداد بایت هایی که باید در بافر(های) خروجی نوشته شود.
[in] allowDiscontiguousBuffers
اگر درست است، داده ها را در زنجیره ای از PacketBuffers بنویسید و در صورت نیاز بافرهای جدیدی را برای ذخیره داده های نوشته شده اختصاص دهید. اگر نادرست باشد، نوشتن با WEAVE_ERROR_BUFFER_TOO_SMALL در صورتی که اطلاعات نوشته شده از فضای موجود در بافر خروجی اولیه فراتر رود، ناموفق خواهد بود.

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 (ساختار، آرایه ها یا مسیرها) در یک رمزگذاری استفاده می شود. این متد نوع و تگ (در صورت وجود) کانتینر جدید و ارجاع به یک شی نویسنده جدید ( نوشتن ظرف ) را می گیرد که برای نوشتن عناصر کانتینر مقداردهی اولیه می شود. برنامه ها اعضای کانتینر جدید را با استفاده از Container Writer می نویسند و سپس CloseContainer() را برای تکمیل رمزگذاری کانتینر فراخوانی می کنند.

در حالی که Container Writer باز است، برنامه ها نباید با آن تماس بگیرند یا وضعیت نویسنده والد را تغییر دهند.

Container writer خصوصیات پیکربندی مختلفی را از نویسنده والد به ارث می برد. اینها هستند:

  • شناسه نمایه ضمنی (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
اگر مقدار مشخص شده برای containerType نادرست باشد.
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
درست است اگر مقدار باید به همان تعداد بایت در نوع ورودی کدگذاری شود. اگر مقدار نادرست باید در حداقل تعداد بایت های لازم برای نمایش مقدار کدگذاری شود. توجه: برنامه ها به شدت تشویق می شوند که این پارامتر را روی 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
درست است اگر مقدار باید به همان تعداد بایت در نوع ورودی کدگذاری شود. اگر مقدار نادرست باید در حداقل تعداد بایت های لازم برای نمایش مقدار کدگذاری شود. توجه: برنامه ها به شدت تشویق می شوند که این پارامتر را روی 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 را رمزگذاری می کند.

این یک تابع عضو اضافه بار است که برای راحتی ارائه شده است. تفاوت آن با تابع فوق تنها در مورد پذیرش (های) آن است.

جزئیات
مولفه های
[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
)

یک مقدار تهی TLV را رمزگذاری می کند.

جزئیات
مولفه های
[in] tag
اگر مقدار باید بدون برچسب رمزگذاری شود ، AnonymousTag TLV با ارزش رمزگذاری می شود. مقادیر برچسب باید با یکی از توابع تعریف برچسب 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
سایر خطاهای مخصوص بافت یا پلت فرم که توسط توابع پیکربندی شده 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
اگر مقدار مشخص شده برای CanceterType نادرست باشد.
WEAVE_ERROR_TLV_CONTAINER_OPEN
اگر یک نویسنده کانتینر روی نویسنده فعلی باز شده و هنوز بسته نشده است.
WEAVE_ERROR_INVALID_TLV_TAG
اگر مقدار برچسب مشخص شده در زمینه ای که مقدار در آن نوشته شده است نامعتبر یا نامناسب باشد.
WEAVE_ERROR_BUFFER_TOO_SMALL
اگر نوشتن مقدار از حداکثر تعداد بایت های مشخص شده هنگام شروع نویسنده فراتر می رود.
WEAVE_ERROR_NO_MEMORY
در صورت عدم تلاش برای تخصیص بافر خروجی به دلیل کمبود حافظه شکست خورد.
other
سایر خطاهای مخصوص بافت یا پلت فرم که توسط توابع پیکربندی شده GetNewBuffer () یا FinalizeBuffer () بازگردانده شده اند.

چاودار

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

یک مقدار رشته TLV UTF8 را رمزگذاری می کند.

جزئیات
مولفه های
[in] tag
اگر مقدار باید بدون برچسب رمزگذاری شود ، AnonymousTag TLV با ارزش رمزگذاری می شود. مقادیر برچسب باید با یکی از توابع تعریف برچسب ProfileTag () ، ContextTag () یا Commontag () ساخته شود.
[in] buf
یک اشاره گر به رشته UTF-8 خاتمه یافته برای رمزگذاری.
ارزش های بازگشتی
WEAVE_NO_ERROR
اگر روش موفق شد.
WEAVE_ERROR_TLV_CONTAINER_OPEN
اگر یک نویسنده کانتینر روی نویسنده فعلی باز شده و هنوز بسته نشده است.
WEAVE_ERROR_INVALID_TLV_TAG
اگر مقدار برچسب مشخص شده در زمینه ای که مقدار در آن نوشته شده است نامعتبر یا نامناسب باشد.
WEAVE_ERROR_BUFFER_TOO_SMALL
اگر نوشتن مقدار از حداکثر تعداد بایت های مشخص شده هنگام شروع نویسنده فراتر می رود.
WEAVE_ERROR_NO_MEMORY
در صورت عدم تلاش برای تخصیص بافر خروجی به دلیل کمبود حافظه شکست خورد.
other
سایر خطاهای مخصوص بافت یا پلت فرم که توسط توابع پیکربندی شده GetNewBuffer () یا FinalizeBuffer () بازگردانده شده اند.

چاودار

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

یک مقدار رشته TLV UTF8 را رمزگذاری می کند.

جزئیات
مولفه های
[in] tag
اگر مقدار باید بدون برچسب رمزگذاری شود ، AnonymousTag TLV با ارزش رمزگذاری می شود. مقادیر برچسب باید با یکی از توابع تعریف برچسب 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
سایر خطاهای مخصوص بافت یا پلت فرم که توسط توابع پیکربندی شده GetNewBuffer () یا FinalizeBuffer () بازگردانده شده اند.

پاترینگ

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

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

PutStringf یک آنالوگ یک اسپرینت است که در آن خروجی در یک عنصر TLV بر خلاف یک بافر کاراکتر ذخیره می شود. هنگامی که عملکرد گسترده PrintF در دسترس است ، این تابع قادر است رشته نتیجه را به یک ذخیره سازی زیربنایی ناپیوسته وارد کند. اجرای از پیشرفت های Printf زیر پشتیبانی می کند:

این پلتفرم یک vcbprintf مبتنی بر تماس را تأمین می کند که امکان تماس با یک تماس تلفنی سفارشی را به جای Putchar فراهم می کند.

این پلتفرم نوعی از vsnprintf به نام vsnprintf_ex را تأمین می کند ، که دقیقاً مانند vsnprintf رفتار می کند ، مگر اینکه مقرراتی برای حذف اولین شخصیت های n از خروجی داشته باشد.

توجه داشته باشید که در حالی که عملکرد مبتنی بر تماس ممکن است ساده ترین باشد و از کمترین مقدار کد استفاده کند ، انواع توابع vsprintf_ex پشته کمتری مصرف می کند.

اگر هیچ یک از موارد فوق در دسترس نباشد ، اما Platform malloc ارائه می دهد ، عملکرد یک بافر موقت را برای نگه داشتن خروجی اختصاص می دهد. هنگامی که این پلتفرم نه تقویت کننده خانواده Printf و نه Malloc ، خروجی به گونه ای کوتاه می شود که در حالت مداوم در ذخیره سازی فعلی TLV قرار می گیرد

جزئیات
مولفه های
[in] tag
اگر مقدار باید بدون برچسب رمزگذاری شود ، AnonymousTag TLV با ارزش رمزگذاری می شود. مقادیر برچسب باید با یکی از توابع تعریف برچسب ProfileTag () ، ContextTag () یا Commontag () ساخته شود.
[in] fmt
رشته فرمت مورد استفاده برای قالب بندی لیست آرگومان. همان نحو را دنبال می کند و به عنوان رشته فرمت برای printf Family of Tware.
[in] ...
لیستی از استدلالهایی که باید در مقدار خروجی مطابق با FMT فرمت شوند.
ارزش های بازگشتی
WEAVE_NO_ERROR
اگر روش موفق شد.
other
اگر تماس های اساسی به روش های tlvwriter WriteElementHead یا GetNewBuffer انجام نشد ، خطای آنها بلافاصله از پشته تماس ارسال می شود.

شروع کار

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
اگر مقدار مشخص شده برای CanceterType نادرست باشد.
WEAVE_ERROR_TLV_CONTAINER_OPEN
اگر یک نویسنده کانتینر روی نویسنده فعلی باز شده و هنوز بسته نشده است.
WEAVE_ERROR_INVALID_TLV_TAG
اگر مقدار برچسب مشخص شده در زمینه ای که مقدار در آن نوشته شده است نامعتبر یا نامناسب باشد.
WEAVE_ERROR_BUFFER_TOO_SMALL
اگر نوشتن مقدار از حداکثر تعداد بایت های مشخص شده هنگام شروع نویسنده فراتر می رود.
WEAVE_ERROR_NO_MEMORY
در صورت عدم تلاش برای تخصیص بافر خروجی به دلیل کمبود حافظه شکست خورد.
other
سایر خطاهای مخصوص بافت یا پلت فرم که توسط توابع پیکربندی شده GetNewBuffer () یا FinalizeBuffer () بازگردانده شده اند.

StampputBytes

WEAVE_ERROR StartPutBytes(
  uint64_t tag,
  uint32_t totalLen
)

یک رشته بایت TLV را در چند تکه رمزگذاری می کند.

این باید با ContinuePutbytes استفاده شود.

جزئیات
مولفه های
[in] tag
اگر مقدار باید بدون برچسب رمزگذاری شود ، AnonymousTag TLV با ارزش رمزگذاری می شود. مقادیر برچسب باید با یکی از توابع تعریف برچسب 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
سایر خطاهای مخصوص بافت یا پلت فرم که توسط توابع پیکربندی شده GetNewBuffer () یا FinalizeBuffer () بازگردانده شده اند.

vputstringf

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

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

PutStringf یک آنالوگ یک اسپرینت است که در آن خروجی در یک عنصر TLV بر خلاف یک بافر کاراکتر ذخیره می شود. هنگامی که عملکرد گسترده PrintF در دسترس است ، این تابع قادر است رشته نتیجه را به یک ذخیره سازی زیربنایی ناپیوسته وارد کند. اجرای از پیشرفت های Printf زیر پشتیبانی می کند:

این پلتفرم یک vcbprintf مبتنی بر تماس را تأمین می کند که امکان تماس با یک تماس تلفنی سفارشی را به جای Putchar فراهم می کند.

این پلتفرم نوعی از vsnprintf به نام vsnprintf_ex را تأمین می کند ، که دقیقاً مانند vsnprintf رفتار می کند ، مگر اینکه مقرراتی برای حذف اولین شخصیت های n از خروجی داشته باشد.

توجه داشته باشید که در حالی که عملکرد مبتنی بر تماس ممکن است ساده ترین باشد و از کمترین مقدار کد استفاده کند ، انواع توابع vsprintf_ex پشته کمتری مصرف می کند.

اگر هیچ یک از موارد فوق در دسترس نباشد ، اما Platform malloc ارائه می دهد ، عملکرد یک بافر موقت را برای نگه داشتن خروجی اختصاص می دهد. هنگامی که این پلتفرم نه تقویت کننده خانواده Printf و نه Malloc ، خروجی به گونه ای کوتاه می شود که در حالت مداوم در ذخیره سازی فعلی TLV قرار می گیرد

جزئیات
مولفه های
[in] tag
اگر مقدار باید بدون برچسب رمزگذاری شود ، AnonymousTag TLV با ارزش رمزگذاری می شود. مقادیر برچسب باید با یکی از توابع تعریف برچسب ProfileTag () ، ContextTag () یا Commontag () ساخته شود.
[in] fmt
رشته فرمت مورد استفاده برای قالب بندی لیست آرگومان. همان نحو را دنبال می کند و به عنوان رشته فرمت برای printf Family of Tware.
[in] ap
لیستی از استدلالهایی که باید در مقدار خروجی مطابق با FMT فرمت شوند.
ارزش های بازگشتی
WEAVE_NO_ERROR
اگر روش موفق شد.
other
اگر تماس های اساسی به روش های tlvwriter WriteElementHead یا GetNewBuffer انجام نشد ، خطای آنها بلافاصله از پشته تماس ارسال می شود.

توابع استاتیک عمومی

FinalizePacketBuffer

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

اجرای یک عملکرد نهایی TLVwriter برای نوشتن به زنجیره ای از بسته بندی ها.

عملکرد FinalizePacketBuffer () نهایی شدن لازم را هنگام استفاده از TLVwriter برای نوشتن به زنجیره ای از بسته های بسته انجام می دهد. این تابع به گونه ای طراحی شده است که در رابطه با عملکرد 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 برای نوشتن به زنجیره ای از بسته بندی ها.

عملکرد GetNewPacketBuffer () با اختصاص زنجیره ای از یک یا چند بسته دهنده در صورت نیاز برای ذخیره رمزگذاری ، فضای خروجی جدیدی را به یک TLVWriter عرضه می کند. این تابع به گونه ای طراحی شده است که به نشانگر عملکرد TLVwriter getNewBuffer اختصاص داده شود.

توجه داشته باشید که هنگام استفاده از GetNewPacketBuffer با TLVwriter ، عملکرد مربوط به FinalizePacketBuffer (یا معادل آن) نیز باید برای نهایی کردن زنجیره بافر استفاده شود.

برای کسب اطلاعات بیشتر در مورد API عملکرد GetNewPacketBuffer () به تعریف نوع getNewBufferfunct مراجعه کنید.

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

isclosecontainerreces

bool IsCloseContainerReserved(
  void
) const 

تعیین کنید که آیا ظرف باید فضای نماد Closecontainer را در نقطه شروع / باز کردن ظرف رزرو کند.

iscontaineropen

bool IsContainerOpen(
  void
) const 

setCloseContainErresed

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

تنظیم کنید که آیا ظرف باید فضای نماد Closecontainer را در نقطه شروع / باز کردن ظرف رزرو کند.

setContainerOpen

void SetContainerOpen(
  bool aContainerOpen
)

رفیق

WEAVE_ERROR WriteData(
  const uint8_t *p,
  uint32_t len
)

نوشتن

WEAVE_ERROR WriteElementHead(
  TLVElementType elemType,
  uint64_t tag,
  uint64_t lenOrVal
)

WritElementWithData

WEAVE_ERROR WriteElementWithData(
  TLVType type,
  uint64_t tag,
  const uint8_t *data,
  uint32_t dataLen
)