14e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum/*
24e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * Copyright (C) 2017 The Android Open Source Project
34e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum *
44e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * Licensed under the Apache License, Version 2.0 (the "License");
54e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * you may not use this file except in compliance with the License.
64e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * You may obtain a copy of the License at
74e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum *
84e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum *      http://www.apache.org/licenses/LICENSE-2.0
94e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum *
104e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * Unless required by applicable law or agreed to in writing, software
114e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * distributed under the License is distributed on an "AS IS" BASIS,
124e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * See the License for the specific language governing permissions and
144e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * limitations under the License.
154e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum */
164e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
174e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaumpackage android.net.lowpan;
184e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
1980aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaumimport android.os.Parcel;
2080aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaumimport android.os.Parcelable;
2180aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaumimport java.util.Objects;
2280aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
2380aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum/**
2480aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum * Provides detailed information about a given channel.
2580aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum *
2680aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum * @hide
2780aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum */
28325b7f5a066bc69c2ad32e1290274d18f40e423bRobert Quattlebaum// @SystemApi
2980aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaumpublic class LowpanChannelInfo implements Parcelable {
304e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
314e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    public static final int UNKNOWN_POWER = Integer.MAX_VALUE;
3280aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    public static final float UNKNOWN_FREQUENCY = 0.0f;
3380aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    public static final float UNKNOWN_BANDWIDTH = 0.0f;
344e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
354e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    private int mIndex = 0;
3680aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    private String mName = null;
3780aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    private float mSpectrumCenterFrequency = UNKNOWN_FREQUENCY;
3880aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    private float mSpectrumBandwidth = UNKNOWN_BANDWIDTH;
394e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    private int mMaxTransmitPower = UNKNOWN_POWER;
4080aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    private boolean mIsMaskedByRegulatoryDomain = false;
4180aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
4280aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    /** @hide */
4380aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    public static LowpanChannelInfo getChannelInfoForIeee802154Page0(int index) {
4480aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        LowpanChannelInfo info = new LowpanChannelInfo();
4580aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
4680aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        if (index < 0) {
4780aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            info = null;
4880aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
4980aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        } else if (index == 0) {
5080aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            info.mSpectrumCenterFrequency = 868300000.0f;
5180aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            info.mSpectrumBandwidth = 600000.0f;
5280aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
5380aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        } else if (index < 11) {
5480aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            info.mSpectrumCenterFrequency = 906000000.0f - (2000000.0f * 1) + 2000000.0f * (index);
5580aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            info.mSpectrumBandwidth = 0; // Unknown
5680aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
5780aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        } else if (index < 26) {
5880aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            info.mSpectrumCenterFrequency =
5980aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                    2405000000.0f - (5000000.0f * 11) + 5000000.0f * (index);
6080aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            info.mSpectrumBandwidth = 2000000.0f;
6180aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
6280aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        } else {
6380aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            info = null;
6480aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        }
6580aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
6680aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        info.mName = Integer.toString(index);
6780aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
6880aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        return info;
6980aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    }
7080aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
7180aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    private LowpanChannelInfo() {}
724e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
7380aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    private LowpanChannelInfo(int index, String name, float cf, float bw) {
7480aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        mIndex = index;
7580aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        mName = name;
7680aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        mSpectrumCenterFrequency = cf;
7780aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        mSpectrumBandwidth = bw;
7880aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    }
794e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
804e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    public String getName() {
814e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum        return mName;
824e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    }
834e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
844e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    public int getIndex() {
854e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum        return mIndex;
864e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    }
874e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
884e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    public int getMaxTransmitPower() {
894e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum        return mMaxTransmitPower;
904e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    }
914e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
924e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    public boolean isMaskedByRegulatoryDomain() {
934e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum        return mIsMaskedByRegulatoryDomain;
944e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    }
954e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
964e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    public float getSpectrumCenterFrequency() {
974e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum        return mSpectrumCenterFrequency;
984e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    }
994e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
1004e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    public float getSpectrumBandwidth() {
1014e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum        return mSpectrumBandwidth;
1024e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    }
1034e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
1044e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    @Override
1054e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    public String toString() {
1064e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum        StringBuffer sb = new StringBuffer();
1074e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
1084e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum        sb.append("Channel ").append(mIndex);
1094e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
11080aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        if (mName != null && !mName.equals(Integer.toString(mIndex))) {
1114e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum            sb.append(" (").append(mName).append(")");
1124e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum        }
1134e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
1144e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum        if (mSpectrumCenterFrequency > 0.0f) {
11580aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            if (mSpectrumCenterFrequency > 1000000000.0f) {
11680aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                sb.append(", SpectrumCenterFrequency: ")
11780aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                        .append(mSpectrumCenterFrequency / 1000000000.0f)
11880aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                        .append("GHz");
11980aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            } else if (mSpectrumCenterFrequency > 1000000.0f) {
12080aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                sb.append(", SpectrumCenterFrequency: ")
12180aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                        .append(mSpectrumCenterFrequency / 1000000.0f)
12280aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                        .append("MHz");
12380aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            } else {
12480aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                sb.append(", SpectrumCenterFrequency: ")
12580aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                        .append(mSpectrumCenterFrequency / 1000.0f)
12680aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                        .append("kHz");
12780aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            }
1284e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum        }
1294e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
1304e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum        if (mSpectrumBandwidth > 0.0f) {
13180aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            if (mSpectrumBandwidth > 1000000000.0f) {
13280aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                sb.append(", SpectrumBandwidth: ")
13380aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                        .append(mSpectrumBandwidth / 1000000000.0f)
13480aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                        .append("GHz");
13580aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            } else if (mSpectrumBandwidth > 1000000.0f) {
13680aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                sb.append(", SpectrumBandwidth: ")
13780aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                        .append(mSpectrumBandwidth / 1000000.0f)
13880aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                        .append("MHz");
13980aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            } else {
14080aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                sb.append(", SpectrumBandwidth: ")
14180aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                        .append(mSpectrumBandwidth / 1000.0f)
14280aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                        .append("kHz");
14380aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            }
1444e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum        }
1454e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
1464e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum        if (mMaxTransmitPower != UNKNOWN_POWER) {
14780aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            sb.append(", MaxTransmitPower: ").append(mMaxTransmitPower).append("dBm");
1484e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum        }
1494e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum
1504e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum        return sb.toString();
1514e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum    }
15280aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
15380aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    @Override
15480aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    public boolean equals(Object obj) {
15580aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        if (!(obj instanceof LowpanChannelInfo)) {
15680aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            return false;
15780aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        }
15880aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        LowpanChannelInfo rhs = (LowpanChannelInfo) obj;
15980aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        return Objects.equals(mName, rhs.mName)
16080aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                && mIndex == rhs.mIndex
16180aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                && mIsMaskedByRegulatoryDomain == rhs.mIsMaskedByRegulatoryDomain
16280aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                && mSpectrumCenterFrequency == rhs.mSpectrumCenterFrequency
16380aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                && mSpectrumBandwidth == rhs.mSpectrumBandwidth
16480aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                && mMaxTransmitPower == rhs.mMaxTransmitPower;
16580aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    }
16680aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
16780aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    @Override
16880aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    public int hashCode() {
16980aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        return Objects.hash(
17080aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                mName,
17180aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                mIndex,
17280aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                mIsMaskedByRegulatoryDomain,
17380aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                mSpectrumCenterFrequency,
17480aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                mSpectrumBandwidth,
17580aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                mMaxTransmitPower);
17680aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    }
17780aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
17880aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    /** Implement the Parcelable interface. */
17980aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    @Override
18080aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    public int describeContents() {
18180aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        return 0;
18280aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    }
18380aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
18480aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    /** Implement the Parcelable interface. */
18580aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    @Override
18680aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    public void writeToParcel(Parcel dest, int flags) {
18780aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        dest.writeInt(mIndex);
18880aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        dest.writeString(mName);
18980aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        dest.writeFloat(mSpectrumCenterFrequency);
19080aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        dest.writeFloat(mSpectrumBandwidth);
19180aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        dest.writeInt(mMaxTransmitPower);
19280aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum        dest.writeBoolean(mIsMaskedByRegulatoryDomain);
19380aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    }
19480aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
19580aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    /** Implement the Parcelable interface. */
19680aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum    public static final Creator<LowpanChannelInfo> CREATOR =
19780aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            new Creator<LowpanChannelInfo>() {
19880aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
19980aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                public LowpanChannelInfo createFromParcel(Parcel in) {
20080aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                    LowpanChannelInfo info = new LowpanChannelInfo();
20180aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
20280aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                    info.mIndex = in.readInt();
20380aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                    info.mName = in.readString();
20480aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                    info.mSpectrumCenterFrequency = in.readFloat();
20580aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                    info.mSpectrumBandwidth = in.readFloat();
20680aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                    info.mMaxTransmitPower = in.readInt();
20780aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                    info.mIsMaskedByRegulatoryDomain = in.readBoolean();
20880aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
20980aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                    return info;
21080aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                }
21180aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum
21280aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                public LowpanChannelInfo[] newArray(int size) {
21380aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                    return new LowpanChannelInfo[size];
21480aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum                }
21580aca1e3b3d3f7afd64a7f18cb2f3ae556f46ccfRobert Quattlebaum            };
2164e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum}
217