1d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum/*
2d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum * Copyright (C) 2017 The Android Open Source Project
3d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum *
4d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum * Licensed under the Apache License, Version 2.0 (the "License");
5d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum * you may not use this file except in compliance with the License.
6d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum * You may obtain a copy of the License at
7d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum *
8d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum *      http://www.apache.org/licenses/LICENSE-2.0
9d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum *
10d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum * Unless required by applicable law or agreed to in writing, software
11d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum * distributed under the License is distributed on an "AS IS" BASIS,
12d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum * See the License for the specific language governing permissions and
14d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum * limitations under the License.
15d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum */
16d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
17d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum#define LOG_TAG "LowpanChannelInfo"
18d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
19d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum#include <android/net/lowpan/LowpanChannelInfo.h>
20d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
21d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum#include <binder/Parcel.h>
22d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum#include <log/log.h>
23d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum#include <utils/Errors.h>
24d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
25d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaumusing android::BAD_TYPE;
26d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaumusing android::BAD_VALUE;
27d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaumusing android::NO_ERROR;
28d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaumusing android::Parcel;
29d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaumusing android::status_t;
30d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaumusing android::UNEXPECTED_NULL;
31d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaumusing android::net::lowpan::LowpanChannelInfo;
32d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaumusing namespace ::android::binder;
33d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
34d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaumnamespace android {
35d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
36d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaumnamespace net {
37d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
38d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaumnamespace lowpan {
39d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
40d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum#define RETURN_IF_FAILED(calledOnce)                                     \
41d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    {                                                                    \
42d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum        status_t returnStatus = calledOnce;                              \
43d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum        if (returnStatus) {                                              \
44d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum            ALOGE("Failed at %s:%d (%s)", __FILE__, __LINE__, __func__); \
45d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum            return returnStatus;                                         \
46d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum         }                                                               \
47d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    }
48d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
49d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaumstatus_t LowpanChannelInfo::writeToParcel(Parcel* parcel) const {
50d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    /*
51d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum     * Keep implementation in sync with writeToParcel() in
52d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum     * frameworks/base/lowpan/java/android/net/android/net/lowpan/LowpanChannelInfo.java.
53d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum     */
54d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
55d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    RETURN_IF_FAILED(parcel->writeInt32(mIndex));
56d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    RETURN_IF_FAILED(parcel->writeUtf8AsUtf16(mName));
57d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    RETURN_IF_FAILED(parcel->writeFloat(mSpectrumCenterFrequency));
58d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    RETURN_IF_FAILED(parcel->writeFloat(mSpectrumBandwidth));
59d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    RETURN_IF_FAILED(parcel->writeInt32(mMaxTxPower));
60d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    RETURN_IF_FAILED(parcel->writeBool(mIsMaskedByRegulatoryDomain));
61d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
62d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    return NO_ERROR;
63d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum}
64d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
65d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaumstatus_t LowpanChannelInfo::readFromParcel(const Parcel* parcel) {
66d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    /*
67d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum     * Keep implementation in sync with readFromParcel() in
68d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum     * frameworks/base/lowpan/java/android/net/android/net/lowpan/LowpanChannelInfo.java.
69d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum     */
70d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
71d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    RETURN_IF_FAILED(parcel->readInt32(&mIndex));
72d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    RETURN_IF_FAILED(parcel->readUtf8FromUtf16(&mName));
73d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    RETURN_IF_FAILED(parcel->readFloat(&mSpectrumCenterFrequency));
74d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    RETURN_IF_FAILED(parcel->readFloat(&mSpectrumBandwidth));
75d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    RETURN_IF_FAILED(parcel->readInt32(&mMaxTxPower));
76d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    RETURN_IF_FAILED(parcel->readBool(&mIsMaskedByRegulatoryDomain));
77d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
78d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    return NO_ERROR;
79d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum}
80d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
81d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaumbool LowpanChannelInfo::operator==(const LowpanChannelInfo& rhs)
82d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum{
83d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    if (mIndex != rhs.mIndex) {
84d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum        return false;
85d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    }
86d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
87d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    if (mName != rhs.mName) {
88d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum        return false;
89d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    }
90d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
91d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    if (mSpectrumCenterFrequency != rhs.mSpectrumCenterFrequency) {
92d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum        return false;
93d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    }
94d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
95d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    if (mSpectrumBandwidth != rhs.mSpectrumBandwidth) {
96d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum        return false;
97d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    }
98d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
99d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    if (mMaxTxPower != rhs.mMaxTxPower) {
100d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum        return false;
101d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    }
102d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
103d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    if (mIsMaskedByRegulatoryDomain != rhs.mIsMaskedByRegulatoryDomain) {
104d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum        return false;
105d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    }
106d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
107d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum    return true;
108d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum}
109d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
110d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum}  // namespace lowpan
111d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
112d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum}  // namespace net
113d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum
114d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum}  // namespace android
115