blob: 260245faff60f5bb966e7d04a0d1e4b7deb6198f [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"
14#include "shill/shill_event.h"
15#include "shill/wifi.h"
16
17using std::string;
18
19namespace shill {
mukesh agrawalb54601c2011-06-07 17:39:22 -070020
21WiFiService::WiFiService(ControlInterface *control_interface,
22 EventDispatcher *dispatcher,
Chris Masone2b105542011-06-22 10:58:09 -070023 const WiFiRefPtr &device,
mukesh agrawalb54601c2011-06-07 17:39:22 -070024 const std::vector<uint8_t> ssid,
25 uint32_t mode,
26 const std::string &key_management,
27 const std::string &name)
Chris Masone2b105542011-06-22 10:58:09 -070028 : Service(control_interface, dispatcher, name),
mukesh agrawalb54601c2011-06-07 17:39:22 -070029 task_factory_(this),
30 wifi_(device),
31 ssid_(ssid),
Chris Masone3bd3c8c2011-06-13 08:20:26 -070032 mode_(mode) {
33 eap_.key_management = key_management;
34
35 // TODO(cmasone): Figure out if mode_ should be a string or what
36 // RegisterString(flimflam::kModeProperty, &mode_);
37 RegisterString(flimflam::kPassphraseProperty, &passphrase_);
38 RegisterBool(flimflam::kPassphraseRequiredProperty, &need_passphrase_);
39 RegisterConstString(flimflam::kSecurityProperty, &security_);
40
41 RegisterConstString(flimflam::kWifiAuthMode, &auth_mode_);
42 RegisterConstBool(flimflam::kWifiHiddenSsid, &hidden_ssid_);
43 RegisterConstUint16(flimflam::kWifiFrequency, &frequency_);
44 RegisterConstUint16(flimflam::kWifiPhyMode, &physical_mode_);
45 RegisterConstUint16(flimflam::kWifiHexSsid, &hex_ssid_);
46
47 RegisterConstUint8(flimflam::kSignalStrengthProperty, &strength_);
48 RegisterConstString(flimflam::kTypeProperty, &type_);
mukesh agrawalb54601c2011-06-07 17:39:22 -070049}
50
51WiFiService::~WiFiService() {
52 LOG(INFO) << __func__;
53}
54
55void WiFiService::Connect() {
56 LOG(INFO) << __func__;
57
58 // NB(quiche) defer handling, since dbus-c++ does not permit us to
59 // send an outbound request while processing an inbound one.
60 dispatcher_->PostTask(
61 task_factory_.NewRunnableMethod(&WiFiService::RealConnect));
62}
63
Chris Masone3bd3c8c2011-06-13 08:20:26 -070064void WiFiService::Disconnect() {
65 // TODO(quiche) RemoveNetwork from supplicant
66 // XXX remove from favorite networks list?
67}
68
mukesh agrawal445e72c2011-06-22 11:13:50 -070069uint32_t WiFiService::mode() const {
70 return mode_;
71}
72
73const std::string &WiFiService::key_management() const {
74 return eap_.key_management;
75}
76
77const std::vector<uint8_t> &WiFiService::ssid() const {
78 return ssid_;
79}
80
mukesh agrawalb54601c2011-06-07 17:39:22 -070081void WiFiService::RealConnect() {
mukesh agrawal445e72c2011-06-22 11:13:50 -070082 wifi_->ConnectTo(*this);
mukesh agrawalb54601c2011-06-07 17:39:22 -070083}
84
mukesh agrawalb54601c2011-06-07 17:39:22 -070085} // namespace shill