blob: ab76b2e1e86ff436c6b363b931108e320bb1ef2e [file] [log] [blame]
mukesh agrawalb54601c2011-06-07 17:39:22 -07001// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "shill/wifi_service.h"
6
7#include <string>
8
9#include <base/logging.h>
Chris Masone3bd3c8c2011-06-13 08:20:26 -070010#include <chromeos/dbus/service_constants.h>
mukesh agrawalb54601c2011-06-07 17:39:22 -070011
12#include "shill/control_interface.h"
13#include "shill/device.h"
Chris Masone7aa5f902011-07-11 11:13:35 -070014#include "shill/entry.h"
mukesh agrawalb54601c2011-06-07 17:39:22 -070015#include "shill/shill_event.h"
16#include "shill/wifi.h"
17
18using std::string;
19
20namespace shill {
mukesh agrawalb54601c2011-06-07 17:39:22 -070021
22WiFiService::WiFiService(ControlInterface *control_interface,
23 EventDispatcher *dispatcher,
Chris Masone2b105542011-06-22 10:58:09 -070024 const WiFiRefPtr &device,
Chris Masone7aa5f902011-07-11 11:13:35 -070025 const ProfileRefPtr &profile,
26 const EntryRefPtr &entry,
mukesh agrawalb54601c2011-06-07 17:39:22 -070027 const std::vector<uint8_t> ssid,
28 uint32_t mode,
29 const std::string &key_management,
30 const std::string &name)
Chris Masone7aa5f902011-07-11 11:13:35 -070031 : Service(control_interface, dispatcher, profile, entry, name),
mukesh agrawalb54601c2011-06-07 17:39:22 -070032 task_factory_(this),
33 wifi_(device),
34 ssid_(ssid),
Chris Masone3bd3c8c2011-06-13 08:20:26 -070035 mode_(mode) {
Chris Masone7aa5f902011-07-11 11:13:35 -070036 entry_->eap.key_management = key_management;
Chris Masone3bd3c8c2011-06-13 08:20:26 -070037
38 // TODO(cmasone): Figure out if mode_ should be a string or what
Chris Masone7aa5f902011-07-11 11:13:35 -070039 // store_.RegisterString(flimflam::kModeProperty, &entry_->mode);
Chris Masone27c4aa52011-07-02 13:10:14 -070040 store_.RegisterString(flimflam::kPassphraseProperty, &passphrase_);
41 store_.RegisterBool(flimflam::kPassphraseRequiredProperty, &need_passphrase_);
Chris Masone7aa5f902011-07-11 11:13:35 -070042 store_.RegisterConstString(flimflam::kSecurityProperty, &entry_->security);
Chris Masone4d42df82011-07-02 17:09:39 -070043 store_.RegisterConstUint8(flimflam::kSignalStrengthProperty, &strength_);
44 store_.RegisterConstString(flimflam::kTypeProperty, &type_);
Chris Masone3bd3c8c2011-06-13 08:20:26 -070045
Chris Masone27c4aa52011-07-02 13:10:14 -070046 store_.RegisterConstString(flimflam::kWifiAuthMode, &auth_mode_);
Chris Masone7aa5f902011-07-11 11:13:35 -070047 store_.RegisterConstBool(flimflam::kWifiHiddenSsid, &entry_->hidden_ssid);
Chris Masone27c4aa52011-07-02 13:10:14 -070048 store_.RegisterConstUint16(flimflam::kWifiFrequency, &frequency_);
49 store_.RegisterConstUint16(flimflam::kWifiPhyMode, &physical_mode_);
50 store_.RegisterConstUint16(flimflam::kWifiHexSsid, &hex_ssid_);
mukesh agrawalb54601c2011-06-07 17:39:22 -070051}
52
53WiFiService::~WiFiService() {
54 LOG(INFO) << __func__;
55}
56
57void WiFiService::Connect() {
58 LOG(INFO) << __func__;
59
60 // NB(quiche) defer handling, since dbus-c++ does not permit us to
61 // send an outbound request while processing an inbound one.
62 dispatcher_->PostTask(
63 task_factory_.NewRunnableMethod(&WiFiService::RealConnect));
64}
65
Chris Masone3bd3c8c2011-06-13 08:20:26 -070066void WiFiService::Disconnect() {
67 // TODO(quiche) RemoveNetwork from supplicant
68 // XXX remove from favorite networks list?
69}
70
mukesh agrawal445e72c2011-06-22 11:13:50 -070071uint32_t WiFiService::mode() const {
72 return mode_;
73}
74
75const std::string &WiFiService::key_management() const {
Chris Masone7aa5f902011-07-11 11:13:35 -070076 return entry_->eap.key_management;
mukesh agrawal445e72c2011-06-22 11:13:50 -070077}
78
79const std::vector<uint8_t> &WiFiService::ssid() const {
80 return ssid_;
81}
82
mukesh agrawalb54601c2011-06-07 17:39:22 -070083void WiFiService::RealConnect() {
mukesh agrawal445e72c2011-06-22 11:13:50 -070084 wifi_->ConnectTo(*this);
mukesh agrawalb54601c2011-06-07 17:39:22 -070085}
86
Chris Masone95207da2011-06-29 16:50:49 -070087string WiFiService::GetDeviceRpcId() {
88 return wifi_->GetRpcIdentifier();
89}
90
mukesh agrawalb54601c2011-06-07 17:39:22 -070091} // namespace shill