Wi-Fi Aware

ویژگی Wi-Fi Aware که در Android 8.0 اضافه شده است، دستگاه‌های پشتیبانی‌کننده را قادر می‌سازد تا مستقیماً بااستفاده از پروتکل Wi-Fi Aware بدون دسترسی به اینترنت یا شبکه تلفن همراه، یکدیگر را پیدا کنند، به هم متصل شوند، و فاصله خود را از یکدیگر بسنجند (در Android 9 اضافه شده است). این ویژگی که براساس Wi-Fi Alliance (WFA) مشخصات Wi-Fi Aware (نسخه‌های ۲.۰، ۳.۰، ۳.۱، و ۴.۰) ساخته شده است، اشتراک‌گذاری داده‌های با توان عملیاتی بالا را بین دستگاه‌ها و برنامه‌های مورداعتماد که درغیراین‌صورت خارج از شبکه هستند تسهیل می‌کند.

برای شرح مفصل معماری Wi-Fi Aware در Android 17 و نسخه‌های بالاتر، به معماری Wi-Fi Aware مراجعه کنید.

مثال‌ها و منبع

برای استفاده از این ویژگی، سازندگان دستگاه باید «لایه انتزاع سخت‌افزار فروشنده Wi-Fi» را پیاده‌سازی کنند. در Android نسخه ۱۴ و بالاتر، میانای HAL فروشنده بااستفاده از AIDL تعریف می‌شود. برای Android 13 و نسخه‌های پایین‌تر، میانای Vendor HAL بااستفاده از HIDL تعریف می‌شود.

برای استفاده از ویژگی Wi-Fi Aware، رابط Wi-Fi را دنبال کنید. بسته به اینکه کدام میانای پیاده‌سازی شده است، این مورد یکی از موارد زیر است:

  • AIDL: hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.2 یا جدیدتر

می‌توانید به Wi-Fi HAL قدیمی مراجعه کنید تا ببینید چگونه با میاناهای AIDL و HIDL مرتبط است: hardware/libhardware_legacy/+/android17-release/include/hardware_legacy/wifi_nan.h.

پیاده‌سازی

سازندگان دستگاه باید از چارچوب و HAL/میان‌افزار پشتیبانی کنند:

  • چارچوب:
    • کد «پروژه منبع باز Android»‏ (AOSP)
    • فعال کردن Aware: هم به پرچم ویژگی و هم به پرچم ساخت نیاز دارد
  • پشتیبانی Wi-Fi Aware (NAN) HAL (که به‌معنای پشتیبانی سفت‌افزار است)

برای پیاده‌سازی این ویژگی، سازندگان دستگاه رابط Wi-Fi را پیاده‌سازی می‌کنند و دو پرچم ویژگی را فعال می‌کنند:

  • در BoardConfig.mk یا BoardConfig-common.mk واقع در device/<oem>/<device>، پرچم زیر را اضافه کنید:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • در device.mk واقع در device/<oem>/<device>، متغیر محیطی PRODUCT_COPY_FILES را تغییر دهید تا از ویژگی «آگاه از Wi-Fi» پشتیبانی کند:

    PRODUCT_COPY_FILES +=
    frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml
    

‫Wi-Fi Aware شامل فاصله‌یابی تا دستگاه‌های همتا بااستفاده از پروتکل IEEE 802.11mc است که به‌عنوان «زمان رفت‌وبرگشت» (RTT) نیز شناخته می‌شود. این ویژگی فرعی Wi-Fi Aware مشروط به پشتیبانی دستگاه از ویژگی Wi-Fi RTT است، یعنی دستگاه باید از هر دو ویژگی Wi-Fi Aware و Wi-Fi RTT پشتیبانی کند. برای جزئیات بیشتر، به Wi-Fi RTT مراجعه کنید.

درغیراین‌صورت، هرآنچه برای این ویژگی لازم است در AOSP گنجانده شده است.

اگر پرچم WIFI_HAL_INTERFACE_COMBINATIONS مشخص شده باشد، پرچم WIFI_HIDL_FEATURE_AWARE نادیده گرفته می‌شود. برای اطلاعات بیشتر، به هم‌زمانی چند رابط Wi-Fi مراجعه کنید.

تصادفی‌سازی مک آدرس

‫Android لازم می‌داند نشانی MAC مربوط به شناسایی Wi-Fi Aware (NMI) و میاناهای داده (NDP) تصادفی‌سازی شود و با نشانی MAC واقعی دستگاه یکسان نباشد. مک آدرس‌ها باید:

  • هرزمان که Wi-Fi Aware فعال یا دوباره فعال شود، تصادفی‌سازی می‌شود.
  • وقتی Wi-Fi Aware فعال باشد، مک آدرس باید در فواصل زمانی منظم که با پارامتر NanConfigRequest.macAddressRandomizationIntervalSec پیکربندی شده است تصادفی‌سازی شود. این ویژگی به‌طور پیش‌فرض توسط چارچوب روی ۳۰ دقیقه پیکربندی شده است.

تعلیق و ازسرگیری

در Android 14 و نسخه‌های بالاتر، Wi-Fi Aware از قابلیت برنامه‌های دارای امتیاز برای تعلیق و ازسرگیری جلسات کاوش فعال (ازجمله همه مسیرهای داده مرتبط با آن جلسات) پشتیبانی می‌کند. پشتیبانی از این قابلیت به دستگاه‌ها امکان می‌دهد جلسات شناسایی را سریع‌تر ازسر بگیرند و از توان کمتری استفاده کنند زیرا جلسات شناسایی را می‌توان معلقه کرد.

اگر دستگاهی از این قابلیت تعلیق و ازسرگیری پشتیبانی کند، میان‌افزار جلسه Wi-Fi Aware را وقتی برنامه ممتاز جلسه کاوش را تعلیق می‌کند تعلیق می‌کند. وقتی جلسه کاوش در حالت تعلیق باشد، دستگاه هیچ چارچوبی برای آن جلسه، ازجمله هر NDP فعال در آن جلسه، ارسال یا دریافت نمی‌کند. اگر همه جلسه‌های شناسایی تعلیق شوند، دستگاه هیچ چارچوب Wi-Fi Aware را ارسال یا دریافت نمی‌کند.

وقتی برنامه دارای امتیاز جلسه کاوش تعلیق‌شده‌ای را ازسر می‌گیرد، چارچوب جلسه را به وضعیت قبلی‌اش برمی‌گرداند، ازجمله همه جلسه‌های NDP مرتبط. ازسر گرفتن جلسه شناسایی معلقه سریع‌تر از فعال کردن Wi-Fi Aware و ایجاد جلسه شناسایی جدید است.

برای پشتیبانی از قابلیت تعلیق و ازسرگیری جلسات شناسایی، سازندگان دستگاه باید از HAL و سفت‌افزار پشتیبانی کنند. برای جزئیات، به IWifiNanIface.java مراجعه کنید.

سازندگان دستگاه می‌توانند از ارتباطات خارج از باند (برای مثال، BLE) برای همگام‌سازی تعلیق و ازسرگیری در چند دستگاه استفاده کنند.

اعتبارسنجی

‫Android مجموعه‌ای از آزمون‌های واحد، آزمون‌های مجموعه آزمون سازگاری (CTS)، و آزمون‌های درستی‌سنج CTS برای اعتبارسنجی ویژگی «آگاه از Wi-Fi» ارائه می‌دهد. ‫Wi-Fi Aware را می‌توان بااستفاده از مجموعه آزمایشی فروشنده (VTS) نیز آزمایش کرد.

آزمون‌های واحد

آزمایش‌های بسته Wi-Fi Aware بااستفاده از موارد زیر اجرا می‌شوند:

آزمایش‌های سرویس:

atest com.android.server.wifi.aware

آزمایش‌های مدیر:

atest android.net.wifi.aware

آزمایش‌های «مجموعه آزمایش سازگاری» (CTS)

از آزمایش‌های CTS برای اعتبارسنجی ویژگی Wi-Fi Aware استفاده کنید. ‫CTS وقتی ویژگی فعال می‌شود آن را تشخیص می‌دهد و به‌طور خودکار آزمون‌های مرتبط را اضافه می‌کند.

آزمایش‌های CTS را می‌توان بااستفاده از موارد زیر راه‌اندازی کرد:

atest SingleDeviceTest

آزمایش‌های «درستی‌سنج CTS»

آزمایش‌های «درستی‌سنج CTS» عملکرد Wi-Fi Aware را بااستفاده از دو دستگاه تأیید می‌کنند: یک دستگاه آزمایشی و یک دستگاه خوب شناخته‌شده. برای اجرای آزمایش‌ها، «درستی‌سنج CTS» را باز کنید و به بخش Wi-Fi Aware Tests (آزمایش‌های Wi-Fi Aware) بروید.