‫Wi-Fi ישיר

התכונה Wi-Fi ישיר, שנקראת גם Wi-Fi P2P, מאפשרת למכשירים תומכים לגלות מכשירים אחרים ולהתחבר אליהם ישירות באמצעות פרוטוקול Wi-Fi ישיר, ללא גישה לאינטרנט או לרשת סלולרית. התכונה הזו, שמבוססת על 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, צריך להשתמש בממשקי Wi-Fi HAL הבאים:

  • hardware/interfaces/wifi/aidl או hardware/interfaces/wifi/1.3 ומעלה
  • hardware/interfaces/wifi/supplicant/aidl או hardware/interfaces/wifi/supplicant/1.2 ומעלה

הטמעה

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

  • Framework:
    • קוד AOSP
    • הפעלת Wi-Fi ישיר: נדרש feature flag
  • תמיכה ב-Wi-Fi ישיר (P2P) HAL (שמשמעותה תמיכה בקושחה)

כדי להטמיע את התכונה הזו, יצרני המכשירים מטמיעים את הממשקים Wi-Fi HIDL או AIDL ומפעילים את ה-feature flag ל-Wi-Fi ישיר. ב-device.mk שנמצא ב-device/<oem>/<device>, משנים את משתנה הסביבה PRODUCT_COPY_FILES כך שיכלול תמיכה בתכונת Wi-Fi ישיר:

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 ישיר כלולות ב-AOSP.

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

ב-Android נדרש שכתובת המכשיר וכתובת הממשק של Wi-Fi ישיר יהיו אקראיות. הכתובות צריכות להיות שונות מכתובת ה-MAC האמיתית של המכשיר, ולעמוד בדרישות הבאות:

  • כתובת המכשיר ב-Wi-Fi ישיר צריכה להיקבע באופן אקראי כשיוצרים את הממשק, אם לא נשמרה קבוצה קבועה. אחרת, כתובת המכשיר צריכה להמשיך להשתמש בכתובת ה-MAC האחרונה שנוצרה.
  • כתובת הממשק של Wi-Fi ישיר, שנקראת גם כתובת קבוצתית, צריכה להיות אקראית בכל פעם שנוצר חיבור.

רנדומיזציה של כתובות MAC ב-Wi-Fi ישיר מיושמת ב-wpa_supplicant ונשלטת על ידי שתי הגדרות, p2p_device_random_mac_addr ו-p2p_interface_random_mac_addr.

כדי להפעיל את התכונה הזו, יצרני המכשירים צריכים:

  • מטמיעים את Wi-Fi Supplicant ISupplicantP2pIface::setMacRandomization API. בהתאם לממשק שהוטמע, המיקום הוא:
    • hardware/interface/wifi/supplicant/1.2 HIDL
    • hardware/interface/wifi/supplicant/aidl ל-AIDL
  • מגדירים את config_wifi_p2p_mac_randomization_supported ל-true בשכבת-על מותאמת אישית של מכשיר.

אימות

‫Android מספקת קבוצה של בדיקות יחידה, בדיקות Compatibility Test Suite (CTS) ובדיקות CTS Verifier כדי לאמת את התכונה Wi-Fi Direct. אפשר גם לבדוק את Wi-Fi ישיר באמצעות חבילת הבדיקות של הספק (VTS).

בדיקות יחידה

כדי לאמת את חבילת Wi-Fi ישיר, משתמשים בבדיקות הבאות.

בדיקות שירות:

atest com.android.server.wifi.p2p

בדיקות בחשבון ניהול:

atest android.net.wifi.p2p

בדיקות בחבילה לבדיקות תאימות (CTS)

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

כדי להפעיל את בדיקות ה-CTS, מריצים את הפקודה:

atest android.net.wifi.p2p.cts

בדיקות CTS Verifier

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