Wi-Fi Aware

התכונה Wi-Fi Aware שנוספה ב-Android 8.0 מאפשרת למכשירים תומכים לגלות, להתחבר ולמדוד מרחק (נוספה ב-Android 9) אחד מהשני ישירות באמצעות פרוטוקול Wi-Fi Aware ללא גישה לאינטרנט או לרשת סלולרית. התכונה הזו, שמבוססת על מפרט Wi-Fi Aware (גרסאות 2.0, ‏ 3.0, ‏ 3.1 ו-4.0) של Wi-Fi Alliance‏ (WFA), מאפשרת שיתוף קל של נתונים עם קצב העברה גבוה בין מכשירים ואפליקציות מהימנים שלא מחוברים לרשת.

דוגמאות ומקור

כדי להשתמש בתכונה הזו, יצרני המכשירים צריכים להטמיע את Wi-Fi Vendor HAL. ב-Android 14 ואילך, ממשק ה-HAL של הספק מוגדר באמצעות AIDL. בגרסה 13 של Android ובגרסאות קודמות, ממשק ה-HAL של הספק מוגדר באמצעות HIDL.

כדי להשתמש בתכונה Wi-Fi Aware, פועלים לפי ההוראות בממשק ה-Wi-Fi. בהתאם לממשק שהוטמע, זה יכול להיות:

  • ‫AIDL: hardware/interfaces/wifi/aidl
  • ‫HIDL: ‏ hardware/interfaces/wifi/1.2 ואילך

אפשר לעיין ב-HAL של Wi-Fi מדור קודם כדי לראות איך הוא קשור לממשקי AIDL ו-HIDL: hardware/libhardware_legacy/+/android16-release/include/hardware_legacy/wifi_nan.h.

הטמעה

יצרני מכשירים צריכים לספק תמיכה גם במסגרת וגם ב-HAL/firmware:

  • Framework:
    • קוד AOSP
    • הפעלת Aware: נדרשים גם דגל תכונה וגם דגל build
  • תמיכה ב-HAL של Wi-Fi Aware ‏ (NAN) (שמשמעותה תמיכה בקושחה)

כדי להטמיע את התכונה הזו, יצרני המכשירים מטמיעים את ממשק ה-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_HIDL_FEATURE_AWARE אם מציינים את הסימון WIFI_HAL_INTERFACE_COMBINATIONS. מידע נוסף זמין במאמר בנושא הפעלה בו-זמנית של כמה ממשקי Wi-Fi.

רנדומיזציה של כתובות MAC

ב-Android, כתובת ה-MAC של ממשקי הגילוי (NMI) והנתונים (NDP) של Wi-Fi Aware צריכה להיות אקראית ולא זהה לכתובת ה-MAC האמיתית של המכשיר. כתובות ה-MAC צריכות להיות:

  • הכתובת משתנה באופן אקראי בכל פעם שמפעילים או מפעילים מחדש את Wi-Fi Aware.
  • כשהתכונה Wi-Fi Aware מופעלת, כתובת ה-MAC חייבת להיות אקראית במרווחי זמן קבועים שמוגדרים על ידי הפרמטר NanConfigRequest.macAddressRandomizationIntervalSec. כברירת מחדל, משך הזמן הזה מוגדר ב-framework ל-30 דקות.

השהיה והמשך

ב-Android 14 ואילך, Wi-Fi Aware תומך ביכולת של אפליקציות עם הרשאות להשהות ולהפעיל מחדש סשנים פעילים של גילוי (כולל כל נתיבי הנתונים שמשויכים לסשנים האלה). התמיכה ביכולת הזו מאפשרת למכשירים להמשיך סשנים של גילוי מהר יותר ולצרוך פחות חשמל, כי אפשר להשהות סשנים של גילוי.

אם מכשיר תומך ביכולת ההשהיה והחידוש הזו, הקושחה משעה את סשן Wi-Fi Aware כשממשק API של אפליקציה עם הרשאות משעה את סשן הגילוי. כשסשן גילוי נמצא במצב מושהה, המכשיר לא משדר או מקבל אף פריימים עבור הסשן הזה, כולל כל NDP פעיל בסשן הזה. אם כל סשני הגילוי מושעים, המכשיר לא משדר או מקבל אף מסגרת Wi-Fi Aware.

כשמפעילים מחדש סשן של גילוי שהושעה באפליקציה עם הרשאות, המסגרת מחזירה את הסשן למצב הקודם שלו, כולל כל הסשנים המשויכים של NDP. חידוש של סשן גילוי שהושעה מהיר יותר מהפעלת Wi-Fi Aware ויצירת סשן גילוי חדש.

כדי לתמוך בהשהיה ובהמשך של סשנים של גילוי, יצרני המכשירים צריכים לספק תמיכה ב-HAL ובקושחה. פרטים נוספים זמינים בקישור IWifiNanIface.java.

יצרני מכשירים יכולים להשתמש בתקשורת מחוץ לפס (לדוגמה, BLE) כדי לסנכרן השהיה והפעלה מחדש בכמה מכשירים.

אימות

‫Android מספקת קבוצה של בדיקות יחידה, בדיקות של חבילה לבדיקות תאימות (CTS) ובדיקות של CTS Verifier כדי לאמת את התכונה Wi-Fi Aware. אפשר גם לבדוק את Wi-Fi Aware באמצעות Vendor Test Suite (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 Verifier

בדיקות CTS Verifier מאמתות את ההתנהגות של Wi-Fi Aware באמצעות שני מכשירים: מכשיר בדיקה ומכשיר known good. כדי להריץ את הבדיקות, פותחים את CTS Verifier ועוברים לקטע Wi-Fi Aware Tests (בדיקות Wi-Fi Aware).