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

Commit fabae2ff authored by Wei Wang's avatar Wei Wang
Browse files

Fix device reboot when ranging empty params.

Empty Rtt params was converted to null in
read/write paracel.

Bug:27227320

Change-Id: I7c9c897b0f7ed0ced499e9763dd56b48d209d195
parent 026cf53f
Loading
Loading
Loading
Loading
+46 −39
Original line number Diff line number Diff line
package android.net.wifi;

import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.content.Context;
import android.os.Bundle;
@@ -14,6 +15,7 @@ import android.os.RemoteException;
import android.util.Log;
import android.util.SparseArray;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.AsyncChannel;
import com.android.internal.util.Protocol;

@@ -275,12 +277,13 @@ public class RttManager {
        /** Implement the Parcelable interface {@hide} */
        public static final Creator<RttCapabilities> CREATOR =
            new Creator<RttCapabilities>() {
            @Override
            public RttCapabilities createFromParcel(Parcel in) {
                    RttCapabilities capabilities = new RttCapabilities();
                    capabilities.oneSidedRttSupported = in.readInt() == 1 ? true : false;
                        capabilities.twoSided11McRttSupported = in.readInt() == 1 ? true : false;
                        capabilities.lciSupported = in.readInt() == 1 ? true : false;
                        capabilities.lcrSupported = in.readInt() == 1 ? true : false;
                    capabilities.oneSidedRttSupported = (in.readInt() == 1);
                        capabilities.twoSided11McRttSupported = (in.readInt() == 1);
                        capabilities.lciSupported = (in.readInt() == 1);
                        capabilities.lcrSupported = (in.readInt() == 1);
                        capabilities.preambleSupported = in.readInt();
                        capabilities.bwSupported = in.readInt();
                        capabilities.responderSupported = (in.readInt() == 1);
@@ -464,20 +467,26 @@ public class RttManager {
    /** pseudo-private class used to parcel arguments */
    public static class ParcelableRttParams implements Parcelable {

        @NonNull
        public RttParams mParams[];

        ParcelableRttParams(RttParams[] params) {
            mParams = params;
        /**
         * @hide
         */
        @VisibleForTesting
        public ParcelableRttParams(RttParams[] params) {
            mParams = (params == null ? new RttParams[0] : params);
        }

        /** Implement the Parcelable interface {@hide} */
        @Override
        public int describeContents() {
            return 0;
        }

        /** Implement the Parcelable interface {@hide} */
        @Override
        public void writeToParcel(Parcel dest, int flags) {
            if (mParams != null) {
            dest.writeInt(mParams.length);

            for (RttParams params : mParams) {
@@ -500,22 +509,15 @@ public class RttManager {
                dest.writeInt(params.preamble);
                dest.writeInt(params.bandwidth);
            }
            } else {
                dest.writeInt(0);
            }
        }

        /** Implement the Parcelable interface {@hide} */
        public static final Creator<ParcelableRttParams> CREATOR =
                new Creator<ParcelableRttParams>() {
                    @Override
                    public ParcelableRttParams createFromParcel(Parcel in) {

                        int num = in.readInt();

                        if (num == 0) {
                            return new ParcelableRttParams(null);
                        }

                        RttParams params[] = new RttParams[num];
                        for (int i = 0; i < num; i++) {
                            params[i] = new RttParams();
@@ -532,8 +534,8 @@ public class RttManager {
                            params[i].numSamplesPerBurst = in.readInt();
                            params[i].numRetriesPerMeasurementFrame = in.readInt();
                            params[i].numRetriesPerFTMR = in.readInt();
                            params[i].LCIRequest = in.readInt() == 1 ? true : false;
                            params[i].LCRRequest = in.readInt() == 1 ? true : false;
                            params[i].LCIRequest = (in.readInt() == 1);
                            params[i].LCRRequest = (in.readInt() == 1);
                            params[i].burstTimeout = in.readInt();
                            params[i].preamble = in.readInt();
                            params[i].bandwidth = in.readInt();
@@ -543,6 +545,7 @@ public class RttManager {
                        return parcelableParams;
                    }

                    @Override
                    public ParcelableRttParams[] newArray(int size) {
                        return new ParcelableRttParams[size];
                    }
@@ -715,11 +718,13 @@ public class RttManager {
        }

        /** Implement the Parcelable interface {@hide} */
        @Override
        public int describeContents() {
            return 0;
        }

        /** Implement the Parcelable interface {@hide} */
        @Override
        public void writeToParcel(Parcel dest, int flags) {
            if (mResults != null) {
                dest.writeInt(mResults.length);
@@ -764,6 +769,7 @@ public class RttManager {
        /** Implement the Parcelable interface {@hide} */
        public static final Creator<ParcelableRttResults> CREATOR =
                new Creator<ParcelableRttResults>() {
                    @Override
                    public ParcelableRttResults createFromParcel(Parcel in) {

                        int num = in.readInt();
@@ -816,6 +822,7 @@ public class RttManager {
                        return parcelableResults;
                    }

                    @Override
                    public ParcelableRttResults[] newArray(int size) {
                        return new ParcelableRttResults[size];
                    }