blob: 8011bc67ad628e1d6c90463c502ee969f9f4fea4 [file] [log] [blame]
Chris Masone3bd3c8c2011-06-13 08:20:26 -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/cellular_service.h"
6
7#include <string>
8
9#include <base/logging.h>
Chris Masone34af2182011-08-22 11:59:36 -070010#include <base/stringprintf.h>
Chris Masone3bd3c8c2011-06-13 08:20:26 -070011#include <chromeos/dbus/service_constants.h>
12
13#include "shill/cellular.h"
Chris Masone3bd3c8c2011-06-13 08:20:26 -070014
15using std::string;
16
17namespace shill {
Darin Petkovc5f56562011-08-06 16:40:05 -070018
Chris Masone34af2182011-08-22 11:59:36 -070019// static
20const char CellularService::kServiceType[] = "cellular";
21
Chris Masone3bd3c8c2011-06-13 08:20:26 -070022CellularService::CellularService(ControlInterface *control_interface,
23 EventDispatcher *dispatcher,
Chris Masone6791a432011-07-12 13:23:19 -070024 Manager *manager,
mukesh agrawal51a7e932011-07-27 16:18:26 -070025 const CellularRefPtr &device)
mukesh agrawal7a4e4002011-09-06 11:26:05 -070026 : Service(control_interface, dispatcher, manager, flimflam::kTypeCellular),
Chris Masone3bd3c8c2011-06-13 08:20:26 -070027 strength_(0),
mukesh agrawal7a4e4002011-09-06 11:26:05 -070028 cellular_(device) {
mukesh agrawalde29fa82011-09-16 16:16:36 -070029 PropertyStore *store = this->mutable_store();
Paul Stewartac4ac002011-08-26 12:04:26 -070030 store->RegisterConstString(flimflam::kActivationStateProperty,
Chris Masone27c4aa52011-07-02 13:10:14 -070031 &activation_state_);
Paul Stewartac4ac002011-08-26 12:04:26 -070032 store->RegisterStringmap(flimflam::kCellularApnProperty, &apn_info_);
33 store->RegisterConstStringmap(flimflam::kCellularLastGoodApnProperty,
Chris Masone27c4aa52011-07-02 13:10:14 -070034 &last_good_apn_info_);
Paul Stewartac4ac002011-08-26 12:04:26 -070035 store->RegisterConstString(flimflam::kNetworkTechnologyProperty,
Chris Masone4d42df82011-07-02 17:09:39 -070036 &network_tech_);
Paul Stewartac4ac002011-08-26 12:04:26 -070037 store->RegisterConstString(flimflam::kPaymentURLProperty, &payment_url_);
38 store->RegisterConstString(flimflam::kRoamingStateProperty, &roaming_state_);
39 store->RegisterConstStringmap(flimflam::kServingOperatorProperty,
Darin Petkov3335b372011-08-22 11:05:32 -070040 &serving_operator_.ToDict());
Paul Stewartac4ac002011-08-26 12:04:26 -070041 store->RegisterConstUint8(flimflam::kSignalStrengthProperty, &strength_);
Paul Stewartac4ac002011-08-26 12:04:26 -070042 store->RegisterConstString(flimflam::kUsageURLProperty, &usage_url_);
Chris Masone3bd3c8c2011-06-13 08:20:26 -070043}
44
45CellularService::~CellularService() { }
46
Darin Petkov4d6d9412011-08-24 13:19:54 -070047void CellularService::Connect(Error *error) {
48 cellular_->Connect(error);
Darin Petkovc5f56562011-08-06 16:40:05 -070049}
Chris Masone3bd3c8c2011-06-13 08:20:26 -070050
51void CellularService::Disconnect() { }
52
Darin Petkovb100ae72011-08-24 16:19:45 -070053void CellularService::ActivateCellularModem(const string &carrier,
54 Error *error) {
55 cellular_->Activate(carrier, error);
Darin Petkovc408e692011-08-17 13:47:15 -070056}
57
Paul Stewart22aa71b2011-09-16 12:15:11 -070058bool CellularService::TechnologyIs(const Technology::Identifier type) const {
59 return cellular_->TechnologyIs(type);
60}
61
Chris Masone6515aab2011-10-12 16:19:09 -070062string CellularService::GetStorageIdentifier() const {
Chris Masone34af2182011-08-22 11:59:36 -070063 string id = base::StringPrintf("%s_%s_%s",
64 kServiceType,
Chris Masone9d779932011-08-25 16:33:41 -070065 cellular_->address().c_str(),
Chris Masone34af2182011-08-22 11:59:36 -070066 serving_operator_.GetName().c_str());
67 std::replace_if(id.begin(), id.end(), &Service::LegalChar, '_');
68 return id;
69}
70
Darin Petkovc408e692011-08-17 13:47:15 -070071string CellularService::GetDeviceRpcId() {
Chris Masone95207da2011-06-29 16:50:49 -070072 return cellular_->GetRpcIdentifier();
73}
74
Darin Petkov3335b372011-08-22 11:05:32 -070075const Cellular::Operator &CellularService::serving_operator() const {
76 return serving_operator_;
77}
78
79void CellularService::set_serving_operator(const Cellular::Operator &oper) {
80 serving_operator_.CopyFrom(oper);
81}
82
Chris Masone3bd3c8c2011-06-13 08:20:26 -070083} // namespace shill