نظارت بر کودک، نظارت بر کودک

مشاهده منبع در گیت‌هاب

برای فراهم کردن یک مکانیزم کارآمد در مصرف انرژی برای یک دستگاه انتهایی در حالت خواب (SED) تا تأیید کند که هنوز به والد خود (که در جدول فرزند والد ذکر شده است) متصل است، ویژگی نظارت بر فرزند را فعال کنید.

مشخصات نخ (Thread Specification) ایجاب می‌کند که یک SED به صورت دوره‌ای یک تبادل درخواست و پاسخ به‌روزرسانی فرزند (MLE Child Update Request and Response) با والد خود انجام دهد تا اتصال را تأیید کند. نظارت بر فرزند (Child Supervision) یک راه‌حل جایگزین برای تأیید اتصال SED به والد است که بار انتقال پیام را به جای SED با محدودیت انرژی، بر والد قرار می‌دهد.

چگونه کار می‌کند؟

این ویژگی بسته به نوع گره و پارامترهای پیکربندی شده، به دو روش کار می‌کند:

روی والدین

اگر یک والد SED را در محدوده OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL به فرزندش ارسال نکند، والد یک پیام نظارت بر فرزند را در صف قرار داده و برای SED فرزند ارسال می‌کند. پیام نظارت بر فرزند یک فریم MAC است که حاوی اطلاعات زیر است:

  • RLOC16 مربوط به SED به عنوان مقصد در هدر MAC.
  • یک محموله خالی.

به طور پیش‌فرض، یک هدر MAC حاوی یک درخواست ACK با استاندارد 802.15.4 است. برای غیرفعال کردن این درخواست در پیام نظارت بر کودک، پارامتر OPENTHREAD_CONFIG_CHILD_SUPERVISION_MSG_NO_ACK_REQUEST را روی 1 تنظیم کنید.

روی کودک

اگر یک SED در محدوده‌ی OPENTHREAD_CONFIG_CHILD_SUPERVISION_CHECK_TIMEOUT از والد خود پیامی دریافت نکند، فرض می‌کند که اتصال خود را به والد از دست داده است و فرآیند MLE Attach را برای اتصال مجدد به شبکه آغاز می‌کند.

نحوه فعال کردن

این قابلیت به طور پیش‌فرض غیرفعال است.

با تعریف

برای فعال کردن نظارت بر کودک، قبل از ساخت OpenThread ، OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE را در فایل openthread/src/core/config/child_supervision.h برابر با 1 تعریف کنید:

#ifndef OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE
#define OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE 1
#endif

بر اساس گزینه

روش دیگر، هنگام ساخت OpenThread از گزینه build -DOT_CHILD_SUPERVISION=ON استفاده کنید:

./script/build -DOT_CHILD_SUPERVISION=ON

پارامترها

برای سفارشی‌سازی این ویژگی از پارامترهای زیر در openthread/src/core/config/child_supervision.h استفاده کنید:

پارامترها
OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL
مقدار پیش‌فرض
۱۲۹ ثانیه
توضیحات
فاصله زمانی نظارت مورد استفاده توسط والد را بر حسب ثانیه مشخص می‌کند. برای غیرفعال کردن فرآیند نظارت روی والد، روی ۰ تنظیم کنید.
OPENTHREAD_CONFIG_SUPERVISION_CHECK_TIMEOUT
مقدار پیش‌فرض
۱۹۰ ثانیه
توضیحات
فاصله زمانی بررسی نظارت را بر حسب ثانیه که توسط دستگاه در حالت فرزند استفاده می‌شود، مشخص می‌کند. برای غیرفعال کردن فرآیند بررسی نظارت در فرزند، روی ۰ تنظیم کنید.
OPENTHREAD_CONFIG_SUPERVISION_MSG_NO_ACK_REQUEST
مقدار پیش‌فرض
۰ (درخواست ACK فعال است)
توضیحات
برای پاک کردن/غیرفعال کردن درخواست 802.15.4 ACK در هدر MAC یک پیام نظارتی، روی ۱ تنظیم کنید.

رابط برنامه‌نویسی کاربردی

از API نظارت بر کودکان برای مدیریت نظارت و بررسی فواصل زمانی وقفه مستقیماً در برنامه OpenThread خود استفاده کنید.

رابط خط فرمان

هیچ دستور CLI مربوط به این ویژگی وجود ندارد.