13d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang/*
23d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang * Copyright (C) 2016 The Android Open Source Project
33d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang *
43d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang * Licensed under the Apache License, Version 2.0 (the "License");
53d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang * you may not use this file except in compliance with the License.
63d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang * You may obtain a copy of the License at
73d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang *
83d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang *      http://www.apache.org/licenses/LICENSE-2.0
93d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang *
103d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang * Unless required by applicable law or agreed to in writing, software
113d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang * distributed under the License is distributed on an "AS IS" BASIS,
123d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang * See the License for the specific language governing permissions and
143d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang * limitations under the License.
153d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang */
163d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang
173d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wangpackage com.android.server.wifi.wificond;
183d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang
193d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wangimport android.os.Parcel;
203d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wangimport android.os.Parcelable;
213d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wangimport android.util.Log;
223d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang
23cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wangimport java.util.Objects;
24cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang
253d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang/**
263d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang * ChannelSettings for wificond
273d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang *
283d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang * @hide
293d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang */
303d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wangpublic class ChannelSettings implements Parcelable {
313d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang    private static final String TAG = "ChannelSettings";
323d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang
333d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang    public int frequency;
343d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang
353d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang    /** public constructor */
363d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang    public ChannelSettings() { }
373d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang
38cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang    /** override comparator */
39cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang    @Override
40cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang    public boolean equals(Object rhs) {
41cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang        if (this == rhs) return true;
42cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang        if (!(rhs instanceof ChannelSettings)) {
43cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang            return false;
44cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang        }
45cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang        ChannelSettings channel = (ChannelSettings) rhs;
46cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang        if (channel == null) {
47cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang            return false;
48cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang        }
49cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang        return frequency == channel.frequency;
50cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang    }
51cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang
52cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang    /** override hash code */
53cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang    @Override
54cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang    public int hashCode() {
55cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang        return Objects.hash(frequency);
56cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang    }
57cc0a86f647320808c5d88da6e9d45c6de10b65b0Ningyuan Wang
583d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang    /** implement Parcelable interface */
593d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang    @Override
603d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang    public int describeContents() {
613d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang        return 0;
623d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang    }
633d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang
643d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang    /**
653d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang     * implement Parcelable interface
663d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang     * |flags| is ignored.
673d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang     * */
683d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang    @Override
693d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang    public void writeToParcel(Parcel out, int flags) {
703d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang        out.writeInt(frequency);
713d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang    }
723d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang
733d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang    /** implement Parcelable interface */
743d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang    public static final Parcelable.Creator<ChannelSettings> CREATOR =
753d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang            new Parcelable.Creator<ChannelSettings>() {
763d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang        /**
773d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang         * Caller is responsible for providing a valid parcel.
783d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang         */
793d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang        @Override
803d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang        public ChannelSettings createFromParcel(Parcel in) {
813d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang            ChannelSettings result = new ChannelSettings();
823d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang            result.frequency = in.readInt();
833d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang            if (in.dataAvail() != 0) {
843d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang                Log.e(TAG, "Found trailing data after parcel parsing.");
853d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang            }
863d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang
873d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang            return result;
883d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang        }
893d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang
903d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang        @Override
913d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang        public ChannelSettings[] newArray(int size) {
923d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang            return new ChannelSettings[size];
933d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang        }
943d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang    };
953d06c9eb56bb3c46f407965a5d2478cf7fd82408Ningyuan Wang}
96