blob: 1dc2cf2d9658e501110dfddc842156464650309a [file] [log] [blame]
Darin Petkovac635a82012-01-10 16:51:58 +01001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
Darin Petkovdaf43862011-10-27 11:37:28 +02002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef SHILL_CELLULAR_CAPABILITY_CDMA_
6#define SHILL_CELLULAR_CAPABILITY_CDMA_
7
Darin Petkov184c54e2011-11-15 12:44:39 +01008#include <base/memory/scoped_ptr.h>
Eric Shienbrood3e20a232012-02-16 11:35:56 -05009#include <base/memory/weak_ptr.h>
Darin Petkovae0c64e2011-11-15 15:50:27 +010010#include <gtest/gtest_prod.h> // for FRIEND_TEST
Darin Petkova3d3be52011-11-14 21:34:16 +010011
Darin Petkovdaf43862011-10-27 11:37:28 +020012#include "shill/cellular_capability.h"
Darin Petkov381928f2012-02-02 23:00:12 +010013#include "shill/cellular_service.h"
Darin Petkov184c54e2011-11-15 12:44:39 +010014#include "shill/modem_cdma_proxy_interface.h"
Darin Petkovdaf43862011-10-27 11:37:28 +020015
16namespace shill {
17
Eric Shienbrood9a245532012-03-07 14:20:39 -050018class CellularCapabilityCDMA : public CellularCapability {
Darin Petkovdaf43862011-10-27 11:37:28 +020019 public:
Eric Shienbrood5de44ab2011-12-05 10:46:27 -050020 CellularCapabilityCDMA(Cellular *cellular, ProxyFactory *proxy_factory);
Darin Petkovdaf43862011-10-27 11:37:28 +020021
Darin Petkovb05315f2011-11-07 10:14:25 +010022 // Inherited from CellularCapability.
Eric Shienbrood9a245532012-03-07 14:20:39 -050023 virtual void StartModem(Error *error, const ResultCallback &callback);
Darin Petkov5f316f62011-11-18 12:10:26 +010024 virtual void OnServiceCreated();
Darin Petkovae0c64e2011-11-15 15:50:27 +010025 virtual void UpdateStatus(const DBusPropertiesMap &properties);
26 virtual void SetupConnectProperties(DBusPropertiesMap *properties);
Eric Shienbrood9a245532012-03-07 14:20:39 -050027 virtual void Activate(const std::string &carrier, Error *error,
28 const ResultCallback &callback);
Darin Petkovb72cf402011-11-22 14:51:39 +010029 virtual bool IsRegistered();
Darin Petkovac635a82012-01-10 16:51:58 +010030 virtual std::string CreateFriendlyServiceName();
Darin Petkov20c13ec2011-11-09 15:07:15 +010031 virtual std::string GetNetworkTechnologyString() const;
32 virtual std::string GetRoamingStateString() const;
Eric Shienbrood0db6a9b2012-03-30 16:11:39 -040033 virtual std::string GetTypeString() const { return "CDMA"; }
Darin Petkov3e509242011-11-10 14:46:44 +010034 virtual void GetSignalQuality();
Eric Shienbrood9a245532012-03-07 14:20:39 -050035 virtual void GetRegistrationState();
36 virtual void GetProperties(const ResultCallback &callback);
Darin Petkovae0c64e2011-11-15 15:50:27 +010037 virtual void OnModemManagerPropertiesChanged(
38 const DBusPropertiesMap &properties);
Darin Petkovdaf43862011-10-27 11:37:28 +020039
Eric Shienbrood9a245532012-03-07 14:20:39 -050040 virtual void GetMEID(const ResultCallback &callback);
Darin Petkovcb547732011-11-09 13:55:26 +010041
Darin Petkovae0c64e2011-11-15 15:50:27 +010042 uint32 activation_state() const { return activation_state_; }
Darin Petkov184c54e2011-11-15 12:44:39 +010043 uint32 registration_state_evdo() const { return registration_state_evdo_; }
44 uint32 registration_state_1x() const { return registration_state_1x_; }
45
Eric Shienbrood9a245532012-03-07 14:20:39 -050046 protected:
47 virtual void InitProxies();
48 virtual void ReleaseProxies();
49
Darin Petkovdaf43862011-10-27 11:37:28 +020050 private:
Darin Petkov184c54e2011-11-15 12:44:39 +010051 friend class CellularCapabilityCDMATest;
Eric Shienbrood9a245532012-03-07 14:20:39 -050052 friend class CellularTest;
Eric Shienbrood5de44ab2011-12-05 10:46:27 -050053 FRIEND_TEST(CellularCapabilityCDMATest, Activate);
54 FRIEND_TEST(CellularCapabilityCDMATest, ActivateError);
Darin Petkovac635a82012-01-10 16:51:58 +010055 FRIEND_TEST(CellularCapabilityCDMATest, CreateFriendlyServiceName);
Darin Petkovae0c64e2011-11-15 15:50:27 +010056 FRIEND_TEST(CellularCapabilityCDMATest, GetActivationStateString);
57 FRIEND_TEST(CellularCapabilityCDMATest, GetActivationErrorString);
58 FRIEND_TEST(CellularTest, CreateService);
59
60 static const char kPhoneNumber[];
Darin Petkov184c54e2011-11-15 12:44:39 +010061
Darin Petkovae0c64e2011-11-15 15:50:27 +010062 void HandleNewActivationState(uint32 error);
63
64 // Updates the serving operator on the active service.
65 void UpdateServingOperator();
66
67 static std::string GetActivationStateString(uint32 state);
68 static std::string GetActivationErrorString(uint32 error);
69
Eric Shienbrood9a245532012-03-07 14:20:39 -050070 // Signal callbacks from the Modem.CDMA interface
71 virtual void OnActivationStateChangedSignal(
Darin Petkov184c54e2011-11-15 12:44:39 +010072 uint32 activation_state,
73 uint32 activation_error,
74 const DBusPropertiesMap &status_changes);
Eric Shienbrood9a245532012-03-07 14:20:39 -050075 virtual void OnRegistrationStateChangedSignal(
76 uint32 state_1x, uint32 state_evdo);
77 virtual void OnSignalQualitySignal(uint32 strength);
78
79 // Method reply callbacks from the Modem.CDMA interface
80 virtual void OnActivateReply(const ResultCallback &callback,
81 uint32 status, const Error &error);
82
83 virtual void OnGetRegistrationStateReply(uint32 state_1x, uint32 state_evdo,
84 const Error &error);
85 virtual void OnGetSignalQualityReply(uint32 strength,
86 const Error &error);
Darin Petkov184c54e2011-11-15 12:44:39 +010087
88 scoped_ptr<ModemCDMAProxyInterface> proxy_;
Eric Shienbrood3e20a232012-02-16 11:35:56 -050089 base::WeakPtrFactory<CellularCapabilityCDMA> weak_ptr_factory_;
Darin Petkova3d3be52011-11-14 21:34:16 +010090
Darin Petkovae0c64e2011-11-15 15:50:27 +010091 uint32 activation_state_;
Darin Petkov184c54e2011-11-15 12:44:39 +010092 uint32 registration_state_evdo_;
93 uint32 registration_state_1x_;
Darin Petkovae0c64e2011-11-15 15:50:27 +010094 uint16 prl_version_;
Darin Petkov381928f2012-02-02 23:00:12 +010095 CellularService::OLP olp_;
Darin Petkovae0c64e2011-11-15 15:50:27 +010096 std::string usage_url_;
Darin Petkov184c54e2011-11-15 12:44:39 +010097
Darin Petkovac635a82012-01-10 16:51:58 +010098 static unsigned int friendly_service_name_id_;
99
Darin Petkovdaf43862011-10-27 11:37:28 +0200100 DISALLOW_COPY_AND_ASSIGN(CellularCapabilityCDMA);
101};
102
103} // namespace shill
104
105#endif // SHILL_CELLULAR_CAPABILITY_CDMA_