Wi-Fi Direct

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

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

หากต้องการใช้คุณสมบัตินี้ ผู้ผลิตอุปกรณ์ต้องใช้อินเทอร์เฟซของผู้จำหน่าย Wi-Fi และอินเทอร์เฟซ HAL ของซัพพลายเออร์

ใน Android 13 อินเทอร์เฟซผู้จัดหาใช้ AIDL สำหรับคำจำกัดความ HAL ใน Android 14 ขึ้นไป อินเทอร์เฟซ Vendor HAL ใช้ AIDL ใน Android 12 และต่ำกว่า อินเทอร์เฟซ Supplicant และ Vendor 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: ต้องมีแฟล็กคุณลักษณะ
  • รองรับ Wi-Fi Direct (P2P) HAL (ซึ่งหมายถึงการรองรับเฟิร์มแวร์)

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

การสุ่ม Wi-Fi Direct MAC ถูกนำมาใช้ใน '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 มีชุดการทดสอบหน่วย การทดสอบการรวม (ชุดทดสอบการเชื่อมต่อ Android หรือ ACTS) การทดสอบ ชุดทดสอบความเข้ากันได้ (CTS) และการทดสอบ CTS Verifier เพื่อตรวจสอบคุณสมบัติ Wi-Fi Direct นอกจากนี้ ยังสามารถทดสอบ Wi-Fi Direct ได้โดยใช้ Vendor Test Suite (VTS)

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

ตรวจสอบแพ็คเกจ Wi-Fi Direct โดยใช้การทดสอบต่อไปนี้

การทดสอบบริการ:

atest com.android.server.wifi.p2p

การทดสอบผู้จัดการ:

atest android.net.wifi.p2p

การทดสอบบูรณาการ (ACTS)

ชุดทดสอบ ACTS Wi-FI Direct ซึ่งอยู่ใน tools/test/connectivity/acts_tests/tests/google/wifi/p2p ดำเนินการทดสอบการทำงานของ Wi-Fi Direct

การทดสอบชุดทดสอบความเข้ากันได้ (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