blob: 4bded51230a9094f43a3ba2e77c343134b4fcd85 [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 Masone6791a432011-07-12 13:23:19 -070023 Manager *manager,
Chris Masone2b105542011-06-22 10:58:09 -070024 const WiFiRefPtr &device,
mukesh agrawalb54601c2011-06-07 17:39:22 -070025 const std::vector<uint8_t> ssid,
Chris Masone092df3e2011-08-22 09:41:39 -070026 const std::string &mode,
mukesh agrawal51a7e932011-07-27 16:18:26 -070027 const std::string &key_management)
28 : Service(control_interface, dispatcher, manager),
Chris Masone092df3e2011-08-22 09:41:39 -070029 mode_(mode),
mukesh agrawalb54601c2011-06-07 17:39:22 -070030 task_factory_(this),
31 wifi_(device),
Chris Masone092df3e2011-08-22 09:41:39 -070032 ssid_(ssid) {
Chris Masoneb2e326b2011-07-12 13:28:51 -070033 eap_.key_management = key_management;
Chris Masone3bd3c8c2011-06-13 08:20:26 -070034
Chris Masone092df3e2011-08-22 09:41:39 -070035 store_.RegisterConstString(flimflam::kModeProperty, &mode_);
Chris Masone27c4aa52011-07-02 13:10:14 -070036 store_.RegisterString(flimflam::kPassphraseProperty, &passphrase_);
37 store_.RegisterBool(flimflam::kPassphraseRequiredProperty, &need_passphrase_);
Chris Masoneb2e326b2011-07-12 13:28:51 -070038 store_.RegisterConstString(flimflam::kSecurityProperty, &security_);
Chris Masone4d42df82011-07-02 17:09:39 -070039 store_.RegisterConstUint8(flimflam::kSignalStrengthProperty, &strength_);
40 store_.RegisterConstString(flimflam::kTypeProperty, &type_);
Chris Masone3bd3c8c2011-06-13 08:20:26 -070041
Chris Masone27c4aa52011-07-02 13:10:14 -070042 store_.RegisterConstString(flimflam::kWifiAuthMode, &auth_mode_);
Chris Masoneb2e326b2011-07-12 13:28:51 -070043 store_.RegisterConstBool(flimflam::kWifiHiddenSsid, &hidden_ssid_);
Chris Masone27c4aa52011-07-02 13:10:14 -070044 store_.RegisterConstUint16(flimflam::kWifiFrequency, &frequency_);
45 store_.RegisterConstUint16(flimflam::kWifiPhyMode, &physical_mode_);
46 store_.RegisterConstUint16(flimflam::kWifiHexSsid, &hex_ssid_);
mukesh agrawalb54601c2011-06-07 17:39:22 -070047}
48
49WiFiService::~WiFiService() {
50 LOG(INFO) << __func__;
51}
52
53void WiFiService::Connect() {
54 LOG(INFO) << __func__;
55
56 // NB(quiche) defer handling, since dbus-c++ does not permit us to
57 // send an outbound request while processing an inbound one.
58 dispatcher_->PostTask(
mukesh agrawaldc42bb32011-07-28 10:40:26 -070059 task_factory_.NewRunnableMethod(&WiFiService::ConnectTask));
mukesh agrawalb54601c2011-06-07 17:39:22 -070060}
61
Chris Masone3bd3c8c2011-06-13 08:20:26 -070062void WiFiService::Disconnect() {
63 // TODO(quiche) RemoveNetwork from supplicant
64 // XXX remove from favorite networks list?
65}
66
Chris Masone092df3e2011-08-22 09:41:39 -070067const string &WiFiService::mode() const {
mukesh agrawal445e72c2011-06-22 11:13:50 -070068 return mode_;
69}
70
Chris Masone092df3e2011-08-22 09:41:39 -070071const string &WiFiService::key_management() const {
Chris Masoneb2e326b2011-07-12 13:28:51 -070072 return eap_.key_management;
mukesh agrawal445e72c2011-06-22 11:13:50 -070073}
74
75const std::vector<uint8_t> &WiFiService::ssid() const {
76 return ssid_;
77}
78
mukesh agrawaldc42bb32011-07-28 10:40:26 -070079void WiFiService::ConnectTask() {
mukesh agrawal445e72c2011-06-22 11:13:50 -070080 wifi_->ConnectTo(*this);
mukesh agrawalb54601c2011-06-07 17:39:22 -070081}
82
Chris Masone95207da2011-06-29 16:50:49 -070083string WiFiService::GetDeviceRpcId() {
84 return wifi_->GetRpcIdentifier();
85}
86
mukesh agrawalb54601c2011-06-07 17:39:22 -070087} // namespace shill