WiFi Direct

ฟีเจอร์ Wi-Fi Direct หรือที่เรียกว่า Wi-Fi P2P ช่วยให้อุปกรณ์ที่รองรับค้นพบและเชื่อมต่อกันโดยตรงได้โดยใช้โปรโตคอล Wi-Fi Direct โดยไม่ต้องเข้าถึงอินเทอร์เน็ตหรือเครือข่ายมือถือ ฟีเจอร์นี้สร้างขึ้นจากข้อกำหนด Wi-Fi Direct ของ Wi-Fi Alliance (WFA) ซึ่งช่วยให้อุปกรณ์และแอปที่เชื่อถือซึ่งไม่ได้อยู่ในเครือข่ายสามารถแชร์ข้อมูลที่มีอัตราข้อมูลสูงได้

ตัวอย่างและแหล่งที่มา

หากต้องการใช้ฟีเจอร์นี้ ผู้ผลิตอุปกรณ์ต้องใช้อินเทอร์เฟซ HAL ของผู้ให้บริการและ Supplicant ของ Wi-Fi

ใน Android 13 อินเทอร์เฟซ Supplicant จะใช้ AIDL สำหรับคำจำกัดความ HAL ใน Android 14 ขึ้นไป อินเทอร์เฟซ HAL ของผู้ให้บริการจะใช้ AIDL ใน Android 12 และต่ำกว่า ระบบจะกำหนดอินเทอร์เฟซ Supplicant และ HAL ของผู้ให้บริการโดยใช้ HIDL

ต้องใช้แพลตฟอร์ม Wi-Fi HAL ต่อไปนี้เพื่อใช้ฟีเจอร์ Wi-Fi Direct

  • hardware/interfaces/wifi/aidl หรือ hardware/interfaces/wifi/1.3 ขึ้นไป
  • hardware/interfaces/wifi/supplicant/aidl หรือ hardware/interfaces/wifi/supplicant/1.2 ขึ้นไป

การใช้งาน

ผู้ผลิตอุปกรณ์ต้องรองรับทั้งเฟรมเวิร์กและ HAL/เฟิร์มแวร์ ดังนี้

  • เฟรมเวิร์ก:
    • โค้ด AOSP
    • เปิดใช้ Wi-Fi Direct: ต้องมี Flag ฟีเจอร์
  • การรองรับ HAL ของ Wi-Fi Direct (P2P) (ซึ่งหมายถึงการรองรับเฟิร์มแวร์)

หากต้องการใช้ฟีเจอร์นี้ ผู้ผลิตอุปกรณ์จะต้องใช้อินเทอร์เฟซ Wi-Fi HIDL หรือ AIDL และเปิดใช้ 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" และควบคุมโดยการกำหนดค่า 2 รายการ ได้แก่ 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 เป็น "จริง" ในการวางซ้อนที่กำหนดเองของอุปกรณ์

การตรวจสอบความถูกต้อง

Android มีชุดการทดสอบยูนิตการทดสอบ Compatibility Test Suite (CTS) และการทดสอบ CTS Verifier เพื่อตรวจสอบฟีเจอร์ Wi-Fi Direct นอกจากนี้ คุณยังทดสอบ Wi-Fi Direct โดยใช้ชุดทดสอบของผู้ให้บริการ (VTS) ได้ด้วย

การทดสอบ 1 หน่วย

ยืนยันแพ็กเกจ 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

การทดสอบโปรแกรมตรวจสอบ CTS จะตรวจสอบลักษณะการทํางานของ Wi-Fi Direct โดยใช้อุปกรณ์ 2 เครื่อง ได้แก่ อุปกรณ์ทดสอบและอุปกรณ์ที่ทราบแล้วว่าใช้งานได้ หากต้องการทำการทดสอบ ให้เปิด CTS Verifier แล้วไปที่ส่วน "การทดสอบ Wi-Fi Direct"