Wi-Fi Aware

ویژگی Wi-Fi Aware اضافه شده در Android 8.0 به دستگاه‌های پشتیبان امکان می‌دهد مستقیماً با استفاده از پروتکل Wi-Fi Aware بدون دسترسی به اینترنت یا شبکه تلفن همراه، یکدیگر را کشف، متصل و محدوده (افزوده شده در Android 9) به یکدیگر پیدا کنند. این ویژگی که بر اساس مشخصات Wi-Fi Aware Wi-Fi Alliance (WFA) (نسخه‌های 2.0، 3.0، 3.1 و 4.0) ساخته شده است، امکان اشتراک‌گذاری آسان داده‌های پرتوان را در میان دستگاه‌ها و برنامه‌هایی که در غیر این صورت خارج از شبکه هستند، فراهم می‌کند.

مثال ها و منبع

برای استفاده از این ویژگی، سازندگان دستگاه باید Wi-Fi Vendor HAL را پیاده سازی کنند. در اندروید 14 و بالاتر، رابط Vendor HAL با استفاده از AIDL تعریف شده است. برای اندروید 13 و پایین تر، رابط Vendor HAL با استفاده از HIDL تعریف شده است.

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

  • AIDL: hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.2 یا بالاتر

برای مشاهده ارتباط آن با رابط های AIDL و HIDL می توانید به HAL قدیمی Wi-Fi مراجعه کنید: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h .

پیاده سازی

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

  • چارچوب:
    • کد AOSP
    • Enable 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 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 است که به عنوان زمان رفت و برگشت (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

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

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

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

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

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

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

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

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

اعتبار سنجی

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