Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f80049a authored by Glen Kuhne's avatar Glen Kuhne
Browse files

P2P: update WifiP2pServiceResponse creator

WifiP2pServiceResponse.newInstance now receives the srcAddr and tlvs
binary data directory directly from the hal iface callback.
This fixes a bug introduced in O that broke serviceDiscoveryRequests.

Bug: 38174469
Test: CtsVerifier Service Discovery Requester
Test: frameworks/opt/net/wifi unit test
Change-Id: I66739713292a19ec399358a1033fccb35e76b9cf
parent e943a3cb
Loading
Loading
Loading
Loading
+7 −15
Original line number Diff line number Diff line
@@ -186,31 +186,23 @@ public class WifiP2pServiceResponse implements Parcelable {
    /**
     * Create the list of  WifiP2pServiceResponse instance from supplicant event.
     *
     * <pre>The format is as follows.
     * P2P-SERV-DISC-RESP &lt;address&gt; &lt;update indicator&gt; &lt;response data&gt;
     * e.g) P2P-SERV-DISC-RESP 02:03:7f:11:62:da 1 0300000101
     *
     * @param supplicantEvent wpa_supplicant event string.
     * @param srcAddr source address of the service response
     * @param tlvsBin byte array containing the binary tlvs data
     * @return if parse failed, return null
     * @hide
     */
    public static List<WifiP2pServiceResponse> newInstance(String supplicantEvent) {
    public static List<WifiP2pServiceResponse> newInstance(String srcAddr, byte[] tlvsBin) {
        //updateIndicator not used, and not passed up from supplicant

        List<WifiP2pServiceResponse> respList = new ArrayList<WifiP2pServiceResponse>();
        String[] args = supplicantEvent.split(" ");
        if (args.length != 4) {
            return null;
        }
        WifiP2pDevice dev = new WifiP2pDevice();
        String srcAddr = args[1];
        dev.deviceAddress = srcAddr;
        //String updateIndicator = args[2];//not used.
        byte[] bin = hexStr2Bin(args[3]);
        if (bin == null) {
        if (tlvsBin == null) {
            return null;
        }

        DataInputStream dis = new DataInputStream(new ByteArrayInputStream(bin));

        DataInputStream dis = new DataInputStream(new ByteArrayInputStream(tlvsBin));
        try {
            while (dis.available() > 0) {
                /*