گزارش های OpenThread

مشاهده منبع در GitHub

گزارش‌های OpenThread توسط چندین ثابت پیکربندی زمان کامپایل کنترل می‌شوند. مگر اینکه غیر از این ذکر شده باشد، این ثابت ها در فایل زیر تعریف شده اند:

openthread/src/core/config/logging.h

روش های خروجی

OpenThread از روش های مختلف ثبت خروجی پشتیبانی می کند که به عنوان ثابت پیکربندی زمان کامپایل OPENTHREAD_CONFIG_LOG_OUTPUT تعریف شده است. گزینه های روش ورود به سیستم در فایل زیر فهرست شده اند:

openthread/src/core/config/logging.h

پیکربندی پیش‌فرض خروجی گزارش OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED است.

روش خروجی مثالی است از جایی که ممکن است نیاز باشد به جای پیکربندی اصلی، ثابت پیکربندی سطح پلت فرم را به روز کنید. برای مثال، برای تغییر روش خروجی در برنامه مثال شبیه‌سازی، openthread/examples/platforms/simulation/openthread-core-simulation-config.h به جای openthread/src/core/config/logging.h ویرایش کنید.

سطوح ورود به سیستم

گزارش‌ها ممکن است سطوح مختلفی از اطلاعات را تولید کنند که به عنوان ثابت پیکربندی زمان کامپایل OPENTHREAD_CONFIG_LOG_LEVEL تعریف می‌شود. گزینه های سطح در فایل زیر لیست شده اند:

openthread/include/openthread/platform/logging.h

فهرست سطوح گزارش نیز در مرجع API Macros Logging Platform موجود است.

سطح گزارش پیش‌فرض OT_LOG_LEVEL_CRIT است که فقط بحرانی‌ترین گزارش‌ها را خروجی می‌دهد. برای مشاهده سیاهههای مربوط به دلخواه سطح را تغییر دهید. برای دیدن همه گزارش‌های OpenThread، از OT_LOG_LEVEL_DEBG استفاده کنید.

مناطق ورود به سیستم

مناطق log تعیین می کنند که چه مناطقی از کد OpenThread برای ورود به سیستم فعال هستند. شماره منطقه در فایل زیر تعریف شده است:

openthread/include/openthread/platform/logging.h

فهرست مناطق گزارش نیز در مرجع API شمارش‌های ورود به سیستم در دسترس است.

مناطق گزارش معمولاً به عنوان پارامتر در توابع گزارش استفاده می شوند. همه مناطق به طور پیش فرض فعال هستند.

عملکرد پیش‌فرض ورود به سیستم

تابع پیش‌فرض برای ورود به سیستم OpenThread otPlatLog است که به عنوان ثابت پیکربندی زمان کامپایل OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION تعریف می‌شود.

برای اطلاعات بیشتر در مورد این عملکرد به مرجع API Logging Platform مراجعه کنید.

برای استفاده مستقیم از این تابع در برنامه‌های نمونه OpenThread، از گزینه cmake OT_REFERENCE_DEVICE استفاده کنید. به عنوان مثال، برای استفاده از آن در برنامه CLI برای مثال CC2538:

./script/build -DOT_REFERENCE_DEVICE=ON

همچنین، فایل openthread/etc/cmake/options.cmake را به‌روزرسانی کنید تا در هنگام ساخت به‌طور پیش‌فرض فعال شود.

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

قبل از فعال کردن گزارش‌ها، مطمئن شوید که محیط شما برای ساخت OpenThread پیکربندی شده است. برای اطلاعات بیشتر به Build OpenThread مراجعه کنید.

فعال کردن همه گزارش‌ها

برای فعال کردن سریع تمام سطوح گزارش و مناطق، از گزینه OT_FULL_LOGS cmake استفاده کنید:

./script/build -DOT_FULL_LOGS=ON

این سوئیچ سطح گزارش را روی OT_LOG_LEVEL_DEBG تنظیم می کند و همه پرچم های منطقه را روشن می کند.

سطح خاصی از گزارش‌ها را فعال کنید

برای فعال کردن سطح خاصی از گزارش‌ها، openthread/src/core/config/logging.h را ویرایش کنید و OPENTHREAD_CONFIG_LOG_LEVEL را به سطح دلخواه به‌روزرسانی کنید، سپس OpenThread را بسازید. به عنوان مثال، برای فعال کردن گزارش‌ها تا OT_LOG_LEVEL_INFO :

#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
./script/build

مشاهده گزارش‌ها در syslog

گزارش ها به صورت پیش فرض به syslog ارسال می شوند. در لینوکس، این /var/log/syslog.

  1. نمونه شبیه سازی را با فعال بودن همه گزارش ها بسازید:
    cd openthread
    ./script/cmake-build simulation -DOT_FULL_LOGS=ON
    
  2. یک گره شبیه سازی شده را شروع کنید:
    ./build/simulation/examples/apps/cli/ot-cli-ftd 1
    
  3. در یک پنجره ترمینال جدید، یک خروجی بلادرنگ از گزارش‌های OT تنظیم کنید:
    tail -F /var/log/syslog | grep "ot-cli-ftd"
    
  4. در گره شبیه سازی شده، Thread را بیاورید:
dataset init new
Done
dataset
Active Timestamp: 1
Channel: 13
Channel Mask: 07fff800
Ext PAN ID: d63e8e3e495ebbc3
Mesh Local Prefix: fd3d:b50b:f96d:722d/64
Network Key: dfd34f0f05cad978ec4e32b0413038ff
Network Name: OpenThread-8f28
PAN ID: 0x8f28
PSKc: c23a76e98f1a6483639b1ac1271e2e27
Security Policy: 0, onrcb
Done
dataset commit active
Done
ifconfig up
Done
thread start
Done

به پنجره ترمینال که دستور tail اجرا می کند، برگردید. گزارش ها باید در زمان واقعی برای گره شبیه سازی شده نمایش داده شوند. به برچسب‌های گزارش در خروجی توجه کنید: [INFO] , [DEBG] , [NOTE] . همه اینها با سطوح گزارش مطابقت دارند. برای مثال، اگر سطح گزارش را به OT_LOG_LEVEL_INFO تغییر دهید، گزارش‌های DEBG از خروجی محو می‌شوند.

ot-cli-ftd[30055]: [1] [DEBG]-MAC-----: SrcAddrMatch - Cleared all entries
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: Read NetworkInfo {rloc:0x9c00, extaddr:1a4aaf5e97c852de, role:Leader, mode:0x0f, keyseq:0x0, ...
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: ... pid:0x8581bc9, mlecntr:0x3eb, maccntr:0x3e8, mliid:05e4b515e33746c8}
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Notifier: StateChanged (0x7f133b) [Ip6+ Ip6- LLAddr MLAddr Rloc+ KeySeqCntr NetData Ip6Mult+ Channel PanId NetName ExtPanId MstrKey PSKc SecPolicy]
ot-cli-ftd[30055]: [1] [INFO]-CLI-----: execute command: dataset panid
ot-cli-ftd[30055]: [1] [INFO]-CLI-----: execute command: dataset commit active
ot-cli-ftd[30055]: [1] [INFO]-MESH-CP-: Active dataset set
ot-cli-ftd[30055]: [1] [DEBG]-MAC-----: Idle mode: Radio sleeping
ot-cli-ftd[30055]: [1] [DEBG]-MAC-----: RadioPanId: 0x8f28
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Notifier: StateChanged (0x007f0100) [KeySeqCntr Channel PanId NetName ExtPanId MstrKey PSKc SecPolicy]
ot-cli-ftd[30055]: [1] [INFO]-CLI-----: execute command: ifconfig up
ot-cli-ftd[30055]: [1] [DEBG]-MAC-----: Idle mode: Radio receiving on channel 11
ot-cli-ftd[30055]: [1] [INFO]-CLI-----: execute command: thread start
ot-cli-ftd[30055]: [1] [NOTE]-MLE-----: Role Disabled -> Detached
ot-cli-ftd[30055]: [1] [INFO]-MLE-----: Attempt to become router
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: Read NetworkInfo {rloc:0x9c00, extaddr:1a4aaf5e97c852de, role:Leader, mode:0x0f, keyseq:0x0, ...
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: ... pid:0x8581bc9, mlecntr:0x3eb, maccntr:0x3e8, mliid:05e4b515e33746c8}
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: Saved NetworkInfo {rloc:0x9c00, extaddr:1a4aaf5e97c852de, role:Leader, mode:0x0f, keyseq:0x0, ...
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: ... pid:0x8581bc9, mlecntr:0x7d4, maccntr:0x7d0, mliid:05e4b515e33746c8}
ot-cli-ftd[30055]: [1] [DEBG]-MLE-----: Store Network Information
ot-cli-ftd[30055]: [1] [INFO]-MLE-----: Send Link Request (ff02:0:0:0:0:0:0:2)

گزارش‌ها را در برنامه CLI مشاهده کنید

گزارش‌ها ممکن است مستقیماً در برنامه نمونه OpenThread CLI مشاهده شوند.

  1. فایل پیکربندی را برای پلتفرم نمونه ویرایش کنید و خروجی گزارش را به برنامه تغییر دهید. برای مثال شبیه سازی، این openthread/examples/platforms/simulation/openthread-core-simulation-config.h است:
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. مثال شبیه سازی را با سطح مورد نظر از لاگ ها بسازید. برای فعال کردن همه گزارش‌ها:
    ./script/cmake-build simulation -DOT_FULL_LOGS=ON
    
  3. یک گره شبیه سازی شده را شروع کنید:
    ./build/simulation/examples/apps/cli/ot-cli-ftd 1
    
  4. هنگام پردازش دستورات باید خروجی ورود به سیستم را در همان پنجره OpenThread CLI ببینید.

اگر گزارش‌گیری سفارشی را اضافه کرده‌اید و همه گزارش‌ها را فعال کرده‌اید، بافر خط CLI یا بافر انتقال UART ممکن است به اندازه کافی بزرگ نباشد که بتواند گزارش‌های سفارشی اضافی را مدیریت کند. اگر برخی از گزارش‌ها در زمانی که باید ظاهر نمی‌شوند، سعی کنید اندازه بافر خط CLI را افزایش دهید، که به‌عنوان OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH در /openthread/src/cli/cli_config.h تعریف شده است یا اندازه بافر انتقال UART را افزایش دهید، که به‌عنوان OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE در /openthread/src/cli/cli_config.h تعریف شده است. فایل پیکربندی، مانند /src/nrf52840/openthread-core-nrf52840-config.h .

مشاهده گزارش های یک NCP

گزارش‌های یک NCP ممکن است از طریق wpantund به syslog یک میزبان ارسال شوند. برای یک هاست لینوکس، این /var/log/syslog.

از یک مقدار OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP برای فعال کردن گزارش NCP استفاده کنید. این مورد را در فایل پیکربندی پلتفرم تغییر دهید.

به عنوان مثال، برای فعال کردن این مورد برای یک nrf52840 متصل به یک میزبان لینوکس:

  1. فایل پیکربندی پلتفرم را ویرایش کنید و خروجی گزارش را به برنامه تغییر دهید. برای nrf52840، این ./src/nrf52840/openthread-core-nrf52840-config.h در مخزن ot-nrf528xx است:
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. مثال nrf52840 را با سطح دلخواه گزارش‌ها و سایر پرچم‌های خاص NCP بسازید. برای ساختن یک وصال با فعال بودن همه گزارش‌ها:
    ./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON
    
  3. NCP را فلش کنید، آن را به هاست لینوکس متصل کنید و wpantund همانطور که در مخزن wpantund توضیح داده شده است راه اندازی کنید.

  4. هنگامی که NCP اجرا می شود، syslog را در دستگاه لینوکس بررسی کنید:

    tail -F /var/log/syslog | grep "wpantund"
    

  5. شما باید گزارش های OpenThread را در زمان واقعی برای NCP مشاهده کنید. همچنین ممکن است آنها را در خروجی wpantund ببینید.

سطح گزارش را در زمان اجرا تغییر دهید

اگر کنترل سطح گزارش پویا فعال باشد، ممکن است سطوح گزارش در زمان اجرا تغییر کند.

  1. برنامه را با گزینه -DOT_LOG_LEVEL_DYNAMIC=ON بسازید. به عنوان مثال،
    ./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON -DOT_LOG_LEVEL_DYNAMIC=ON
    
  2. سطح گزارش را بسته به پیاده سازی خود تغییر دهید:
    1. برای یک سیستم روی تراشه (SoC) ، از Logging API در برنامه OpenThread خود استفاده کنید.
    2. برای NCP، از wpanctl در خط فرمان استفاده کنید. به wpan-properties.h در مخزن wpantund برای همه خصوصیات در معرض wpanctl و Spinel API برای تعاریف سطح گزارش آن مراجعه کنید.
      wpanctl set OpenThread:LogLevel 5