13f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh/* 23f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * Copyright (C) 2017 The Android Open Source Project 33f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * 43f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * Licensed under the Apache License, Version 2.0 (the "License"); 53f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * you may not use this file except in compliance with the License. 63f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * You may obtain a copy of the License at 73f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * 83f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * http://www.apache.org/licenses/LICENSE-2.0 93f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * 103f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * Unless required by applicable law or agreed to in writing, software 113f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * distributed under the License is distributed on an "AS IS" BASIS, 123f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * See the License for the specific language governing permissions and 143f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * limitations under the License. 153f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh */ 163f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 173f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh#include "chre/apps/wifi_offload/preferred_network.h" 183f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 193f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadehnamespace wifi_offload { 203f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 213f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi AlizadehPreferredNetwork::PreferredNetwork() : security_modes_(SecurityMode::UNKNOWN) {} 223f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 233f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadehbool PreferredNetwork::operator==(const PreferredNetwork &other) const { 243f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh if (this == &other) { 253f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh return true; 263f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh } 273f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh return ssid_ == other.ssid_ && security_modes_ == other.security_modes_; 283f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh} 293f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 303f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadehflatbuffers::Offset<PreferredNetwork::FbsType> PreferredNetwork::Serialize( 313f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh flatbuffers::FlatBufferBuilder *builder) const { 323f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh return fbs::CreatePreferredNetwork(*builder, ssid_.Serialize(builder), 333f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh security_modes_); 343f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh} 353f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 363f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadehbool PreferredNetwork::Deserialize( 373f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh const PreferredNetwork::FbsType &fbs_network) { 383f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh const auto &fbs_ssid = fbs_network.ssid(); 393f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh if (fbs_ssid == nullptr || !ssid_.Deserialize(*fbs_ssid)) { 403f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh LOGE("Failed to deserialize PreferredNetwork. Null or incomplete members."); 413f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh return false; 423f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh } 433f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 443f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh security_modes_ = fbs_network.security_modes(); 453f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh if (security_modes_ & ~SecurityMode::ALL_SECURITY_MODES_MASK) { 463f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh LOGE("Failed to deserialize PreferredNetwork. Invalid security mode."); 473f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh return false; 483f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh } 493f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 503f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh return true; 513f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh} 523f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 533f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadehvoid PreferredNetwork::Log() const { 543f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh ssid_.Log(); 553f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh LOGI(" security modes: 0x%" PRIx8, security_modes_); 563f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh} 573f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 583f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh} // namespace wifi_offload 59