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