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 "LowpanBeaconInfo" 18d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 19d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum#include <android/net/lowpan/LowpanBeaconInfo.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::LowpanBeaconInfo; 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 QuattlebaumLowpanBeaconInfo::Builder::Builder() { 50d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 51d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 52d38415634a6e0d2175e888618a6ebc52dfcb861eRobert QuattlebaumLowpanBeaconInfo::Builder& LowpanBeaconInfo::Builder::setName(const std::string& value) { 53d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mIdentityBuilder.setName(value); 54d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return *this; 55d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 56d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 57d38415634a6e0d2175e888618a6ebc52dfcb861eRobert QuattlebaumLowpanBeaconInfo::Builder& LowpanBeaconInfo::Builder::setType(const std::string& value) { 58d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mIdentityBuilder.setType(value); 59d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return *this; 60d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 61d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 62d38415634a6e0d2175e888618a6ebc52dfcb861eRobert QuattlebaumLowpanBeaconInfo::Builder& LowpanBeaconInfo::Builder::setType(const ::android::String16& value) { 63d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mIdentityBuilder.setType(value); 64d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return *this; 65d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 66d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 67d38415634a6e0d2175e888618a6ebc52dfcb861eRobert QuattlebaumLowpanBeaconInfo::Builder& LowpanBeaconInfo::Builder::setXpanid(const std::vector<uint8_t>& value) { 68d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mIdentityBuilder.setXpanid(value); 69d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return *this; 70d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 71d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 72d38415634a6e0d2175e888618a6ebc52dfcb861eRobert QuattlebaumLowpanBeaconInfo::Builder& LowpanBeaconInfo::Builder::setXpanid(const uint8_t* valuePtr, int32_t valueLen) { 73d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mIdentityBuilder.setXpanid(valuePtr, valueLen); 74d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return *this; 75d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 76d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 77d38415634a6e0d2175e888618a6ebc52dfcb861eRobert QuattlebaumLowpanBeaconInfo::Builder& LowpanBeaconInfo::Builder::setPanid(int32_t value) { 78d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mIdentityBuilder.setPanid(value); 79d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return *this; 80d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 81d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 82d38415634a6e0d2175e888618a6ebc52dfcb861eRobert QuattlebaumLowpanBeaconInfo::Builder& LowpanBeaconInfo::Builder::setChannel(int32_t value) { 83d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mIdentityBuilder.setChannel(value); 84d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return *this; 85d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 86d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 87d38415634a6e0d2175e888618a6ebc52dfcb861eRobert QuattlebaumLowpanBeaconInfo::Builder& LowpanBeaconInfo::Builder::setLowpanIdentity(const LowpanIdentity& value) { 88d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mIdentityBuilder.setLowpanIdentity(value); 89d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return *this; 90d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 91d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 92d38415634a6e0d2175e888618a6ebc52dfcb861eRobert QuattlebaumLowpanBeaconInfo::Builder& LowpanBeaconInfo::Builder::setRssi(int32_t value) { 93d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mRssi = value; 94d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return *this; 95d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 96d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 97d38415634a6e0d2175e888618a6ebc52dfcb861eRobert QuattlebaumLowpanBeaconInfo::Builder& LowpanBeaconInfo::Builder::setLqi(int32_t value) { 98d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mLqi = value; 99d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return *this; 100d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 101d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 102d38415634a6e0d2175e888618a6ebc52dfcb861eRobert QuattlebaumLowpanBeaconInfo::Builder& LowpanBeaconInfo::Builder::setBeaconAddress(const std::vector<uint8_t>& value) { 103d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mBeaconAddress = value; 104d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return *this; 105d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 106d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 107d38415634a6e0d2175e888618a6ebc52dfcb861eRobert QuattlebaumLowpanBeaconInfo::Builder& LowpanBeaconInfo::Builder::setBeaconAddress(const uint8_t* valuePtr, int32_t valueLen) { 108d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mBeaconAddress.clear(); 109d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mBeaconAddress.insert(mBeaconAddress.end(), valuePtr, valuePtr + valueLen); 110d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return *this; 111d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 112d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 113d38415634a6e0d2175e888618a6ebc52dfcb861eRobert QuattlebaumLowpanBeaconInfo::Builder& LowpanBeaconInfo::Builder::setFlag(int32_t value) { 114d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mFlags.insert(value); 115d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return *this; 116d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 117d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 118d38415634a6e0d2175e888618a6ebc52dfcb861eRobert QuattlebaumLowpanBeaconInfo::Builder& LowpanBeaconInfo::Builder::clearFlag(int32_t value) { 119d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mFlags.erase(value); 120d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return *this; 121d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 122d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 123d38415634a6e0d2175e888618a6ebc52dfcb861eRobert QuattlebaumLowpanBeaconInfo LowpanBeaconInfo::Builder::build(void) const { 124d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return LowpanBeaconInfo(*this); 125d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 126d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 127d38415634a6e0d2175e888618a6ebc52dfcb861eRobert QuattlebaumLowpanBeaconInfo::LowpanBeaconInfo(const LowpanBeaconInfo::Builder& builder) : 128d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mIdentity(builder.mIdentityBuilder.build()), 129d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mRssi(builder.mRssi), 130d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mLqi(builder.mLqi), 131d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mBeaconAddress(builder.mBeaconAddress), 132d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mFlags(builder.mFlags) 133d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum{ 134d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 135d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 136d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaumstatus_t LowpanBeaconInfo::writeToParcel(Parcel* parcel) const { 137d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum /* 138d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum * Keep implementation in sync with writeToParcel() in 139d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum * frameworks/base/lowpan/java/android/net/android/net/lowpan/LowpanBeaconInfo.java. 140d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum */ 141d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 142d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum RETURN_IF_FAILED(mIdentity.writeToParcel(parcel)); 143d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum RETURN_IF_FAILED(parcel->writeInt32(mRssi)); 144d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum RETURN_IF_FAILED(parcel->writeInt32(mLqi)); 145d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum RETURN_IF_FAILED(parcel->writeByteVector(mBeaconAddress)); 146d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum RETURN_IF_FAILED(parcel->writeInt32(mFlags.size())); 147d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 148d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum std::set<int32_t>::const_iterator iter; 149d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum std::set<int32_t>::const_iterator end = mFlags.end(); 150d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 151d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum for (iter = mFlags.begin(); iter != end; ++iter) { 152d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum RETURN_IF_FAILED(parcel->writeInt32(*iter)); 153d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum } 154d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 155d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return NO_ERROR; 156d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 157d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 158d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaumstatus_t LowpanBeaconInfo::readFromParcel(const Parcel* parcel) { 159d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum /* 160d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum * Keep implementation in sync with readFromParcel() in 161d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum * frameworks/base/lowpan/java/android/net/android/net/lowpan/LowpanBeaconInfo.java. 162d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum */ 163d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 164d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum RETURN_IF_FAILED(mIdentity.readFromParcel(parcel)); 165d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum RETURN_IF_FAILED(parcel->readInt32(&mRssi)); 166d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum RETURN_IF_FAILED(parcel->readInt32(&mLqi)); 167d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum RETURN_IF_FAILED(parcel->readByteVector(&mBeaconAddress)); 168d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 169d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum int32_t flagCount = 0; 170d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 171d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum RETURN_IF_FAILED(parcel->readInt32(&flagCount)); 172d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 173d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum if (flagCount < 0) { 174d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum ALOGE("Bad flag count"); 175d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return BAD_VALUE; 176d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum } 177d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 178d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mFlags.clear(); 179d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 180d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum while (flagCount--) { 181d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum int32_t flag = 0; 182d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum RETURN_IF_FAILED(parcel->readInt32(&flag)); 183d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum mFlags.insert(flag); 184d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum } 185d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 186d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return NO_ERROR; 187d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 188d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 189d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaumbool LowpanBeaconInfo::operator==(const LowpanBeaconInfo& rhs) 190d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum{ 191d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum if (mIdentity != rhs.mIdentity) { 192d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return false; 193d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum } 194d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 195d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum if (mRssi != rhs.mRssi) { 196d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return false; 197d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum } 198d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 199d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum if (mLqi != rhs.mLqi) { 200d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return false; 201d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum } 202d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 203d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum if (mBeaconAddress != rhs.mBeaconAddress) { 204d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return false; 205d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum } 206d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 207d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum if (mFlags != rhs.mFlags) { 208d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return false; 209d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum } 210d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 211d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum return true; 212d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} 213d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 214d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} // namespace lowpan 215d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 216d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} // namespace net 217d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum 218d38415634a6e0d2175e888618a6ebc52dfcb861eRobert Quattlebaum} // namespace android 219