blob: 8c36f0e8308e8e6fdb39160f912d44d38924829a [file] [log] [blame]
Darin Petkov41c0e0a2012-01-09 16:38:53 +01001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
Darin Petkov887f2982011-07-14 16:10:17 -07002// 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/modem_info.h"
6
Ben Chana0ddf462014-02-06 11:32:42 -08007#include <base/files/file_path.h>
Ben Chandc1819d2014-05-13 16:30:31 -07008#include <chromeos/dbus/service_constants.h>
Darin Petkov887f2982011-07-14 16:10:17 -07009
Christopher Wileyb691efd2012-08-09 13:51:51 -070010#include "shill/logging.h"
Prathmesh Prabhu97f317c2013-03-15 16:20:34 -070011#include "shill/manager.h"
Darin Petkov887f2982011-07-14 16:10:17 -070012#include "shill/modem_manager.h"
Arman Uguray41cc6342013-03-29 16:34:39 -070013#include "shill/pending_activation_store.h"
Darin Petkov887f2982011-07-14 16:10:17 -070014
Albert Chaulk0e1cdea2013-02-27 15:32:55 -080015using base::FilePath;
Darin Petkov887f2982011-07-14 16:10:17 -070016using std::string;
17
Ben Chan62028b22012-11-05 11:20:02 -080018namespace shill {
19
Darin Petkov887f2982011-07-14 16:10:17 -070020ModemInfo::ModemInfo(ControlInterface *control_interface,
21 EventDispatcher *dispatcher,
Thieu Le3426c8f2012-01-11 17:35:11 -080022 Metrics *metrics,
Darin Petkov887f2982011-07-14 16:10:17 -070023 Manager *manager,
24 GLib *glib)
25 : control_interface_(control_interface),
Darin Petkov67d8ecf2011-07-26 16:03:30 -070026 dispatcher_(dispatcher),
Thieu Le3426c8f2012-01-11 17:35:11 -080027 metrics_(metrics),
Darin Petkov887f2982011-07-14 16:10:17 -070028 manager_(manager),
Prathmesh Prabhu17589062014-05-22 11:21:20 -070029 glib_(glib) {}
Darin Petkov887f2982011-07-14 16:10:17 -070030
31ModemInfo::~ModemInfo() {
32 Stop();
33}
34
35void ModemInfo::Start() {
Arman Uguray41cc6342013-03-29 16:34:39 -070036 pending_activation_store_.reset(new PendingActivationStore());
37 pending_activation_store_->InitStorage(manager_->glib(),
Prathmesh Prabhu97f317c2013-03-15 16:20:34 -070038 manager_->storage_path());
Ben Chan62028b22012-11-05 11:20:02 -080039
Ben Chandc1819d2014-05-13 16:30:31 -070040 RegisterModemManager(new ModemManagerClassic(cromo::kCromoServiceName,
41 cromo::kCromoServicePath,
42 this));
Ben Chan8799a4a2013-04-13 16:00:13 -070043 RegisterModemManager(
Ben Chandc1819d2014-05-13 16:30:31 -070044 new ModemManager1(modemmanager::kModemManager1ServiceName,
45 modemmanager::kModemManager1ServicePath,
46 this));
Darin Petkov887f2982011-07-14 16:10:17 -070047}
48
49void ModemInfo::Stop() {
Arman Uguray41cc6342013-03-29 16:34:39 -070050 pending_activation_store_.reset();
Paul Stewart5ad16062013-02-21 18:10:48 -080051 modem_managers_.clear();
Darin Petkov887f2982011-07-14 16:10:17 -070052}
53
Darin Petkov41c0e0a2012-01-09 16:38:53 +010054void ModemInfo::OnDeviceInfoAvailable(const string &link_name) {
Paul Stewart6db7b242014-05-02 15:34:21 -070055 for (const auto &manager : modem_managers_) {
56 manager->OnDeviceInfoAvailable(link_name);
Darin Petkov41c0e0a2012-01-09 16:38:53 +010057 }
58}
59
Arman Uguray41cc6342013-03-29 16:34:39 -070060void ModemInfo::set_pending_activation_store(
61 PendingActivationStore *pending_activation_store) {
62 pending_activation_store_.reset(pending_activation_store);
Prathmesh Prabhu27526f12013-03-25 19:42:18 -070063}
64
Ben Chan8799a4a2013-04-13 16:00:13 -070065void ModemInfo::RegisterModemManager(ModemManager *manager) {
Darin Petkov887f2982011-07-14 16:10:17 -070066 modem_managers_.push_back(manager); // Passes ownership.
67 manager->Start();
68}
Darin Petkov75f201f2013-03-19 13:01:28 +010069
Darin Petkov887f2982011-07-14 16:10:17 -070070} // namespace shill