התכונה Wi-Fi Aware שנוספה ב-Android 8.0 מאפשרת למכשירים תומכים לגלות, להתחבר ולמדוד את המרחק (נוספה ב-Android 9) אחד מהשני ישירות באמצעות פרוטוקול Wi-Fi Aware, ללא גישה לאינטרנט או לרשת סלולרית. התכונה הזו, שמבוססת על Wi-Fi Alliance (WFA) Wi-Fi Aware specification (גרסאות 2.0, 3.0, 3.1 ו-4.0), מאפשרת שיתוף של נתונים עם קצב העברה גבוה בין מכשירים ואפליקציות מהימנים שלא מחוברים לרשת.
דוגמאות ומקור
כדי להשתמש בתכונה הזו, יצרני המכשירים צריכים להטמיע את Wi-Fi Vendor HAL. ב-Android מגרסה 14 ואילך, ממשק Vendor HAL מוגדר באמצעות AIDL. בגרסה 13 של Android ובגרסאות קודמות, ממשק ה-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-qpr2-release/include/hardware_legacy/wifi_nan.h.
הטמעה
יצרני המכשירים צריכים לספק תמיכה גם במסגרת וגם ב-HAL/קושחה:
- מסגרת:
- קוד של פרויקט קוד פתוח של Android (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, שנקרא גם זמן הלוך ושוב (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. המסגרת מגדירה כברירת מחדל את הזמן הזה ל-30 דקות.
השהיה והמשך
ב-Android מגרסה 14 ואילך, Wi-Fi Aware תומך באפשרות של אפליקציות עם הרשאות להשהות ולהפעיל מחדש סשנים פעילים של גילוי (כולל כל נתיבי הנתונים שמשויכים לסשנים האלה). התמיכה ביכולת הזו מאפשרת למכשירים להמשיך סשנים של זיהוי מהר יותר ולצרוך פחות חשמל, כי אפשר להשהות סשנים של זיהוי.
אם מכשיר תומך באפשרות ההשהיה וההפעלה מחדש הזו, הקושחה משעה את סשן Wi-Fi Aware כשממשתמשים משעים את סשן הגילוי. כשסשן גילוי נמצא במצב השהיה, המכשיר לא משדר או מקבל אף פריימים עבור הסשן הזה, כולל כל NDP פעיל בסשן הזה. אם כל סשני הגילוי מושעים, המכשיר לא משדר ולא מקבל אף מסגרת Wi-Fi Aware.
כשמפעילים מחדש סשן של גילוי שהושעה באפליקציה עם הרשאות, המסגרת מחזירה את הסשן למצב הקודם שלו, כולל כל הסשנים המשויכים של NDP. המשכת סשן גילוי שהושעה מהירה יותר מהפעלת Wi-Fi Aware ויצירת סשן גילוי חדש.
כדי לתמוך בהשהיה ובהפעלה מחדש של סשנים של גילוי, יצרני המכשירים צריכים לספק תמיכה ב-HAL ובקושחה. פרטים נוספים זמינים במאמר IWifiNanIface.java.
יצרני מכשירים יכולים להשתמש בתקשורת מחוץ לפס (לדוגמה, BLE) כדי לסנכרן השהיה והפעלה מחדש בכמה מכשירים.
אימות
Android מספקת קבוצה של בדיקות יחידה, בדיקות חבילה לבדיקות תאימות (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 Verifier
בדיקות CTS Verifier מאמתות את ההתנהגות של Wi-Fi Aware באמצעות שני מכשירים: מכשיר בדיקה ומכשיר known good. כדי להריץ את הבדיקות, פותחים את CTS Verifier ועוברים לקטע Wi-Fi Aware Tests.