התכונה Wi-Fi Direct, שנקראת גם Wi-Fi P2P, מאפשרת למכשירים תומכים לגלות מכשירים אחרים ולהתחבר אליהם ישירות באמצעות פרוטוקול Wi-Fi Direct, ללא גישה לאינטרנט או לרשת סלולרית. התכונה הזו, שמבוססת על Wi-Fi Alliance (WFA) Wi-Fi Direct specification מאפשרת שיתוף נתונים עם תפוקה גבוהה בין מכשירים ואפליקציות מהימנים שלא מחוברים לרשת.
דוגמאות ומקור
כדי להשתמש בתכונה הזו, יצרני המכשירים צריכים להטמיע את ממשקי ה-HAL של ספק ה-Wi-Fi ושל מבקש ההרשאה.
ב-Android 13, ממשק ה-Supplicant משתמש ב-AIDL להגדרת HAL. ב-Android מגרסה 14 ואילך, ממשק Vendor HAL משתמש ב-AIDL. ב-Android מגרסה 12 ומטה, הממשקים של Supplicant ו-Vendor HAL מוגדרים באמצעות HIDL.
כדי להשתמש בתכונה Wi-Fi Direct, צריך להשתמש בממשקי HAL הבאים של Wi-Fi:
-
hardware/interfaces/wifi/aidl
אוhardware/interfaces/wifi/1.3
ומעלה -
hardware/interfaces/wifi/supplicant/aidl
אוhardware/interfaces/wifi/supplicant/1.2
ומעלה
הטמעה
יצרני מכשירים צריכים לספק תמיכה גם במסגרת וגם ב-HAL/firmware:
- Framework:
- קוד AOSP
- הפעלת Wi-Fi ישיר: נדרש דגל תכונה
- תמיכה ב-HAL של Wi-Fi Direct (P2P) (שמשמעותה תמיכה בקושחה)
כדי להטמיע את התכונה הזו, יצרני המכשירים מטמיעים את הממשקים Wi-Fi HIDL או AIDL ומפעילים את ה-feature flag של Wi-Fi Direct. ב-device.mk
שנמצא ב-device/<oem>/<device>
, משנים את משתנה הסביבה PRODUCT_COPY_FILES
כך שיכלול תמיכה בתכונה Wi-Fi Direct:
```
PRODUCT_COPY_FILES +=
frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml
```
כל שאר הדרישות לתמיכה ב-Wi-Fi Direct כלולות ב-AOSP.
רנדומיזציה של כתובות MAC
ב-Android נדרש שכתובת המכשיר וכתובת הממשק של Wi-Fi Direct יהיו אקראיות. הכתובות צריכות להיות שונות מכתובת ה-MAC האמיתית של המכשיר, ולעמוד בדרישות הבאות:
- כתובת המכשיר ב-Wi-Fi Direct צריכה להיקבע אקראית כשיוצרים ממשק אם לא נשמרה קבוצה קבועה. אחרת, כתובת המכשיר צריכה להמשיך להשתמש בכתובת ה-MAC האחרונה שנוצרה.
- כתובת הממשק של Wi-Fi Direct, שנקראת גם כתובת קבוצתית, חייבת להיות רנדומלית בכל פעם שנוצר חיבור.
רנדומיזציה של כתובות MAC ב-Wi-Fi Direct מיושמת ב-wpa_supplicant ונשלטת על ידי שתי הגדרות, p2p_device_random_mac_addr
ו-p2p_interface_random_mac_addr
.
כדי להפעיל את התכונה הזו, יצרני המכשירים צריכים:
- מטמיעים את Wi-Fi Supplicant
ISupplicantP2pIface::setMacRandomization
API. בהתאם לממשק שהוטמע, המיקום הוא:-
hardware/interface/wifi/supplicant/1.2
for HIDL -
hardware/interface/wifi/supplicant/aidl
ל-AIDL
-
- מגדירים את
config_wifi_p2p_mac_randomization_supported
ל-true בשכבת-על מותאמת אישית של מכשיר.
אימות
Android מספקת קבוצה של בדיקות יחידה, בדיקות של חבילת בדיקות התאימות (CTS) ובדיקות של CTS Verifier כדי לאמת את התכונה Wi-Fi Direct. אפשר גם לבדוק את ה-Wi-Fi הישיר באמצעות חבילת הבדיקות של הספק (VTS).
בדיקות יחידה
כדי לאמת את חבילת Wi-Fi Direct, משתמשים בבדיקות הבאות.
בדיקות שירות:
atest com.android.server.wifi.p2p
בדיקות בחשבון ניהול:
atest android.net.wifi.p2p
בדיקות בחבילה לבדיקות תאימות (CTS)
אפשר להשתמש בבדיקות CTS כדי לאמת את התכונה Wi-Fi Direct. מערכת CTS מזהה מתי התכונה מופעלת וכוללת אוטומטית את הבדיקות שקשורות אליה.
כדי להפעיל את בדיקות ה-CTS, מריצים את הפקודה:
% atest android.net.wifi.p2p.cts
בדיקות CTS Verifier
בדיקות CTS Verifier מאמתות את ההתנהגות של Wi-Fi Direct באמצעות שני מכשירים: מכשיר בדיקה ומכשיר תקין. כדי להריץ את הבדיקות, פותחים את CTS Verifier ועוברים לקטע Wi-Fi Direct Tests.