Darin Petkov | 41c0e0a | 2012-01-09 16:38:53 +0100 | [diff] [blame] | 1 | // Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
Darin Petkov | 887f298 | 2011-07-14 16:10:17 -0700 | [diff] [blame] | 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/modem_info.h" |
| 6 | |
Ben Chan | a0ddf46 | 2014-02-06 11:32:42 -0800 | [diff] [blame] | 7 | #include <base/files/file_path.h> |
Ben Chan | dc1819d | 2014-05-13 16:30:31 -0700 | [diff] [blame] | 8 | #include <chromeos/dbus/service_constants.h> |
Darin Petkov | 887f298 | 2011-07-14 16:10:17 -0700 | [diff] [blame] | 9 | |
Christopher Wiley | b691efd | 2012-08-09 13:51:51 -0700 | [diff] [blame] | 10 | #include "shill/logging.h" |
Prathmesh Prabhu | 97f317c | 2013-03-15 16:20:34 -0700 | [diff] [blame] | 11 | #include "shill/manager.h" |
Darin Petkov | 887f298 | 2011-07-14 16:10:17 -0700 | [diff] [blame] | 12 | #include "shill/modem_manager.h" |
Arman Uguray | 41cc634 | 2013-03-29 16:34:39 -0700 | [diff] [blame] | 13 | #include "shill/pending_activation_store.h" |
Darin Petkov | 887f298 | 2011-07-14 16:10:17 -0700 | [diff] [blame] | 14 | |
Albert Chaulk | 0e1cdea | 2013-02-27 15:32:55 -0800 | [diff] [blame] | 15 | using base::FilePath; |
Darin Petkov | 887f298 | 2011-07-14 16:10:17 -0700 | [diff] [blame] | 16 | using std::string; |
| 17 | |
Ben Chan | 62028b2 | 2012-11-05 11:20:02 -0800 | [diff] [blame] | 18 | namespace shill { |
| 19 | |
Darin Petkov | 887f298 | 2011-07-14 16:10:17 -0700 | [diff] [blame] | 20 | ModemInfo::ModemInfo(ControlInterface *control_interface, |
| 21 | EventDispatcher *dispatcher, |
Thieu Le | 3426c8f | 2012-01-11 17:35:11 -0800 | [diff] [blame] | 22 | Metrics *metrics, |
Darin Petkov | 887f298 | 2011-07-14 16:10:17 -0700 | [diff] [blame] | 23 | Manager *manager, |
| 24 | GLib *glib) |
| 25 | : control_interface_(control_interface), |
Darin Petkov | 67d8ecf | 2011-07-26 16:03:30 -0700 | [diff] [blame] | 26 | dispatcher_(dispatcher), |
Thieu Le | 3426c8f | 2012-01-11 17:35:11 -0800 | [diff] [blame] | 27 | metrics_(metrics), |
Darin Petkov | 887f298 | 2011-07-14 16:10:17 -0700 | [diff] [blame] | 28 | manager_(manager), |
Prathmesh Prabhu | 1758906 | 2014-05-22 11:21:20 -0700 | [diff] [blame] | 29 | glib_(glib) {} |
Darin Petkov | 887f298 | 2011-07-14 16:10:17 -0700 | [diff] [blame] | 30 | |
| 31 | ModemInfo::~ModemInfo() { |
| 32 | Stop(); |
| 33 | } |
| 34 | |
| 35 | void ModemInfo::Start() { |
Arman Uguray | 41cc634 | 2013-03-29 16:34:39 -0700 | [diff] [blame] | 36 | pending_activation_store_.reset(new PendingActivationStore()); |
| 37 | pending_activation_store_->InitStorage(manager_->glib(), |
Prathmesh Prabhu | 97f317c | 2013-03-15 16:20:34 -0700 | [diff] [blame] | 38 | manager_->storage_path()); |
Ben Chan | 62028b2 | 2012-11-05 11:20:02 -0800 | [diff] [blame] | 39 | |
Ben Chan | dc1819d | 2014-05-13 16:30:31 -0700 | [diff] [blame] | 40 | RegisterModemManager(new ModemManagerClassic(cromo::kCromoServiceName, |
| 41 | cromo::kCromoServicePath, |
| 42 | this)); |
Ben Chan | 8799a4a | 2013-04-13 16:00:13 -0700 | [diff] [blame] | 43 | RegisterModemManager( |
Ben Chan | dc1819d | 2014-05-13 16:30:31 -0700 | [diff] [blame] | 44 | new ModemManager1(modemmanager::kModemManager1ServiceName, |
| 45 | modemmanager::kModemManager1ServicePath, |
| 46 | this)); |
Darin Petkov | 887f298 | 2011-07-14 16:10:17 -0700 | [diff] [blame] | 47 | } |
| 48 | |
| 49 | void ModemInfo::Stop() { |
Arman Uguray | 41cc634 | 2013-03-29 16:34:39 -0700 | [diff] [blame] | 50 | pending_activation_store_.reset(); |
Paul Stewart | 5ad1606 | 2013-02-21 18:10:48 -0800 | [diff] [blame] | 51 | modem_managers_.clear(); |
Darin Petkov | 887f298 | 2011-07-14 16:10:17 -0700 | [diff] [blame] | 52 | } |
| 53 | |
Darin Petkov | 41c0e0a | 2012-01-09 16:38:53 +0100 | [diff] [blame] | 54 | void ModemInfo::OnDeviceInfoAvailable(const string &link_name) { |
Paul Stewart | 6db7b24 | 2014-05-02 15:34:21 -0700 | [diff] [blame] | 55 | for (const auto &manager : modem_managers_) { |
| 56 | manager->OnDeviceInfoAvailable(link_name); |
Darin Petkov | 41c0e0a | 2012-01-09 16:38:53 +0100 | [diff] [blame] | 57 | } |
| 58 | } |
| 59 | |
Arman Uguray | 41cc634 | 2013-03-29 16:34:39 -0700 | [diff] [blame] | 60 | void ModemInfo::set_pending_activation_store( |
| 61 | PendingActivationStore *pending_activation_store) { |
| 62 | pending_activation_store_.reset(pending_activation_store); |
Prathmesh Prabhu | 27526f1 | 2013-03-25 19:42:18 -0700 | [diff] [blame] | 63 | } |
| 64 | |
Ben Chan | 8799a4a | 2013-04-13 16:00:13 -0700 | [diff] [blame] | 65 | void ModemInfo::RegisterModemManager(ModemManager *manager) { |
Darin Petkov | 887f298 | 2011-07-14 16:10:17 -0700 | [diff] [blame] | 66 | modem_managers_.push_back(manager); // Passes ownership. |
| 67 | manager->Start(); |
| 68 | } |
Darin Petkov | 75f201f | 2013-03-19 13:01:28 +0100 | [diff] [blame] | 69 | |
Darin Petkov | 887f298 | 2011-07-14 16:10:17 -0700 | [diff] [blame] | 70 | } // namespace shill |