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