Wi-Fi Aware

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

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

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

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

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

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

הטמעה

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

  • מסגרת:
    • קוד AOSP
    • הפעלת מודעוּת: נדרשים גם feature flag של התכונה וגם דגל 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 תכונה רלוונטית:

    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. פרטים נוספים זמינים במאמר RTT ב-Wi-Fi.

אחרת, כל מה שנדרש לתכונה הזו נכלל ב-AOSP.

המערכת תתעלם מהדגל WIFI_HIDL_FEATURE_AWARE אם WIFI_HAL_INTERFACE_COMBINATIONS מצוין. מידע נוסף זמין במאמר הבא: ריבוי ממשקים של Wi-Fi בו-זמנית.

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

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

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

השעיה והמשך

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

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

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

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

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

אימות

מערכת Android מספקת קבוצה של בדיקות יחידה, בדיקות של חבילה לבדיקות תאימות (CTS) ובדיקות של CTS Verifier כדי לאמת את התכונה 'התראה על שימוש ב-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 Verifier מאמתות את ההתנהגות של Wi-Fi Aware באמצעות שני מכשירים: מכשיר בדיקה ומכשיר ידוע כתקין. כדי להריץ את הבדיקות, פותחים את CTS Verifier ועוברים לקטע Wi-Fi Aware Tests.