Wi-Fi Direct

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

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

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

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

แพลตฟอร์ม HAL ของ Wi-Fi ต่อไปนี้จำเป็นต่อการใช้ฟีเจอร์ 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: ต้องมีแฟล็กฟีเจอร์
  • การรองรับ HAL ของ Wi-Fi Direct (P2P) (ซึ่งหมายความว่ารองรับเฟิร์มแวร์)

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

มีการใช้การสุ่ม MAC ของ Wi-Fi Direct ใน "wpa_suprovider" และควบคุมด้วยการกำหนดค่า 2 รายการ ได้แก่ p2p_device_random_mac_addr และ p2p_interface_random_mac_addr

หากต้องการเปิดใช้ฟีเจอร์นี้ ผู้ผลิตอุปกรณ์จะต้องมีคุณสมบัติดังนี้

  • ใช้ API ผู้สมัคร ISupplicantP2pIface::setMacRandomization สำหรับ Wi-Fi ซึ่งจะอยู่ในเงื่อนไขต่อไปนี้ โดยขึ้นอยู่กับอินเทอร์เฟซที่ใช้งาน
    • hardware/interface/wifi/supplicant/1.2 สำหรับ HIDL
    • hardware/interface/wifi/supplicant/aidl สำหรับ AIDL
  • ตั้งค่า config_wifi_p2p_mac_randomization_supported เป็น "จริง" ในการวางซ้อนที่กำหนดเองของอุปกรณ์

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

Android มีชุดการทดสอบ 1 หน่วย การทดสอบชุดเครื่องมือทดสอบความเข้ากันได้ (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 Verifier

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