Home | History | Annotate | Download | only in dbus
      1 //
      2 // Copyright (C) 2015 The Android Open Source Project
      3 //
      4 // Licensed under the Apache License, Version 2.0 (the "License");
      5 // you may not use this file except in compliance with the License.
      6 // You may obtain a copy of the License at
      7 //
      8 //      http://www.apache.org/licenses/LICENSE-2.0
      9 //
     10 // Unless required by applicable law or agreed to in writing, software
     11 // distributed under the License is distributed on an "AS IS" BASIS,
     12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 // See the License for the specific language governing permissions and
     14 // limitations under the License.
     15 //
     16 
     17 #include "shill/dbus/chromeos_supplicant_bss_proxy.h"
     18 
     19 #include <string>
     20 
     21 #include <base/bind.h>
     22 
     23 #include "shill/logging.h"
     24 #include "shill/supplicant/wpa_supplicant.h"
     25 #include "shill/wifi/wifi_endpoint.h"
     26 
     27 using std::string;
     28 
     29 namespace shill {
     30 
     31 namespace Logging {
     32 static auto kModuleLogScope = ScopeLogger::kDBus;
     33 static string ObjectID(const dbus::ObjectPath* p) { return p->value(); }
     34 }
     35 
     36 ChromeosSupplicantBSSProxy::ChromeosSupplicantBSSProxy(
     37     const scoped_refptr<dbus::Bus>& bus,
     38     const std::string& object_path,
     39     WiFiEndpoint* wifi_endpoint)
     40     : bss_proxy_(
     41         new fi::w1::wpa_supplicant1::BSSProxy(
     42             bus,
     43             WPASupplicant::kDBusAddr,
     44             dbus::ObjectPath(object_path))),
     45       wifi_endpoint_(wifi_endpoint) {
     46   // Register signal handler.
     47   bss_proxy_->RegisterPropertiesChangedSignalHandler(
     48       base::Bind(&ChromeosSupplicantBSSProxy::PropertiesChanged,
     49                  weak_factory_.GetWeakPtr()),
     50       base::Bind(&ChromeosSupplicantBSSProxy::OnSignalConnected,
     51                  weak_factory_.GetWeakPtr()));
     52 }
     53 
     54 ChromeosSupplicantBSSProxy::~ChromeosSupplicantBSSProxy() {
     55   bss_proxy_->ReleaseObjectProxy(base::Bind(&base::DoNothing));
     56 }
     57 
     58 void ChromeosSupplicantBSSProxy::PropertiesChanged(
     59     const brillo::VariantDictionary& properties) {
     60   SLOG(&bss_proxy_->GetObjectPath(), 2) << __func__;
     61   KeyValueStore store;
     62   KeyValueStore::ConvertFromVariantDictionary(properties, &store);
     63   wifi_endpoint_->PropertiesChanged(store);
     64 }
     65 
     66 // Called when signal is connected to the ObjectProxy.
     67 void ChromeosSupplicantBSSProxy::OnSignalConnected(
     68     const std::string& interface_name,
     69     const std::string& signal_name,
     70     bool success) {
     71   SLOG(&bss_proxy_->GetObjectPath(), 2) << __func__
     72       << "interface: " << interface_name << " signal: " << signal_name
     73       << "success: " << success;
     74   if (!success) {
     75     LOG(ERROR) << "Failed to connect signal " << signal_name
     76         << " to interface " << interface_name;
     77   }
     78 }
     79 
     80 }  // namespace shill
     81