Wi-Fi Aware

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

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

برای استفاده از این ویژگی، تولیدکنندگان دستگاه باید رابط کاربری فروشنده Wi-Fi HAL را پیاده‌سازی کنند. در اندروید ۱۴ و بالاتر، رابط کاربری فروشنده HAL با استفاده از AIDL تعریف می‌شود. برای اندروید ۱۳ و پایین‌تر، رابط کاربری فروشنده 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/+/android16-release/include/hardware_legacy/wifi_nan.h .

پیاده‌سازی

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

  • چارچوب:
    • کد پروژه متن‌باز اندروید (AOSP)
    • فعال کردن Aware: به هر دو feature flag و build flag نیاز دارد.
  • پشتیبانی از Wi-Fi Aware (NAN) HAL (که به معنای پشتیبانی از میان‌افزار است)

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

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

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

    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 است که با نام Round Trip Time (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 مراجعه کنید.

تصادفی‌سازی MAC

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

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

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

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

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

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

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

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

اعتبارسنجی

اندروید مجموعه‌ای از تست‌های واحد، تست‌های مجموعه تست سازگاری (CTS) و تست‌های تأییدکننده CTS را برای اعتبارسنجی ویژگی Wi-Fi Aware ارائه می‌دهد. 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 Verifier رفتار Wi-Fi Aware را با استفاده از دو دستگاه اعتبارسنجی می‌کنند: یک دستگاه آزمایشی و یک دستگاه سالم . برای اجرای آزمایش‌ها، CTS Verifier را باز کنید و به بخشی با عنوان Wi-Fi Aware Tests بروید.