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