blob: 830ed83a07c6697a3e3f38314a221bd11a78cc7e [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>
Darin Petkova3d3be52011-11-14 21:34:16 +01009#include <base/task.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
Darin Petkov184c54e2011-11-15 12:44:39 +010018class CellularCapabilityCDMA : public CellularCapability,
19 public ModemCDMAProxyDelegate {
20
Darin Petkovdaf43862011-10-27 11:37:28 +020021 public:
Eric Shienbrood5de44ab2011-12-05 10:46:27 -050022 CellularCapabilityCDMA(Cellular *cellular, ProxyFactory *proxy_factory);
Darin Petkovdaf43862011-10-27 11:37:28 +020023
Darin Petkovb05315f2011-11-07 10:14:25 +010024 // Inherited from CellularCapability.
Eric Shienbrood5de44ab2011-12-05 10:46:27 -050025 virtual void StartModem();
26 virtual void StopModem();
Darin Petkov5f316f62011-11-18 12:10:26 +010027 virtual void OnServiceCreated();
Darin Petkovae0c64e2011-11-15 15:50:27 +010028 virtual void UpdateStatus(const DBusPropertiesMap &properties);
29 virtual void SetupConnectProperties(DBusPropertiesMap *properties);
Eric Shienbrood5de44ab2011-12-05 10:46:27 -050030 virtual void Activate(const std::string &carrier,
31 AsyncCallHandler *call_handler);
Darin Petkovb72cf402011-11-22 14:51:39 +010032 virtual bool IsRegistered();
Darin Petkovac635a82012-01-10 16:51:58 +010033 virtual std::string CreateFriendlyServiceName();
Darin Petkov20c13ec2011-11-09 15:07:15 +010034 virtual std::string GetNetworkTechnologyString() const;
35 virtual std::string GetRoamingStateString() const;
Darin Petkov3e509242011-11-10 14:46:44 +010036 virtual void GetSignalQuality();
Eric Shienbrood5de44ab2011-12-05 10:46:27 -050037 virtual void GetRegistrationState(AsyncCallHandler *call_handler);
38 virtual void GetProperties(AsyncCallHandler *call_handler);
Darin Petkovae0c64e2011-11-15 15:50:27 +010039 virtual void OnModemManagerPropertiesChanged(
40 const DBusPropertiesMap &properties);
Darin Petkovdaf43862011-10-27 11:37:28 +020041
Eric Shienbrood5de44ab2011-12-05 10:46:27 -050042 virtual void GetMEID(AsyncCallHandler *call_handler);
Darin Petkovcb547732011-11-09 13:55:26 +010043
Darin Petkovae0c64e2011-11-15 15:50:27 +010044 uint32 activation_state() const { return activation_state_; }
Darin Petkov184c54e2011-11-15 12:44:39 +010045 uint32 registration_state_evdo() const { return registration_state_evdo_; }
46 uint32 registration_state_1x() const { return registration_state_1x_; }
47
Darin Petkovdaf43862011-10-27 11:37:28 +020048 private:
Darin Petkov184c54e2011-11-15 12:44:39 +010049 friend class CellularCapabilityCDMATest;
Eric Shienbrood5de44ab2011-12-05 10:46:27 -050050 FRIEND_TEST(CellularCapabilityCDMATest, Activate);
51 FRIEND_TEST(CellularCapabilityCDMATest, ActivateError);
Darin Petkovac635a82012-01-10 16:51:58 +010052 FRIEND_TEST(CellularCapabilityCDMATest, CreateFriendlyServiceName);
Darin Petkovae0c64e2011-11-15 15:50:27 +010053 FRIEND_TEST(CellularCapabilityCDMATest, GetActivationStateString);
54 FRIEND_TEST(CellularCapabilityCDMATest, GetActivationErrorString);
55 FRIEND_TEST(CellularTest, CreateService);
56
57 static const char kPhoneNumber[];
Darin Petkov184c54e2011-11-15 12:44:39 +010058
Darin Petkovae0c64e2011-11-15 15:50:27 +010059 void HandleNewActivationState(uint32 error);
60
61 // Updates the serving operator on the active service.
62 void UpdateServingOperator();
63
64 static std::string GetActivationStateString(uint32 state);
65 static std::string GetActivationErrorString(uint32 error);
66
Darin Petkov184c54e2011-11-15 12:44:39 +010067 // Signal callbacks inherited from ModemCDMAProxyDelegate.
68 virtual void OnCDMAActivationStateChanged(
69 uint32 activation_state,
70 uint32 activation_error,
71 const DBusPropertiesMap &status_changes);
72 virtual void OnCDMARegistrationStateChanged(uint32 state_1x,
73 uint32 state_evdo);
74 virtual void OnCDMASignalQualityChanged(uint32 strength);
Eric Shienbrood5de44ab2011-12-05 10:46:27 -050075 virtual void OnActivateCallback(uint32 status, const Error &error,
76 AsyncCallHandler *call_handler);
Darin Petkov184c54e2011-11-15 12:44:39 +010077
78 scoped_ptr<ModemCDMAProxyInterface> proxy_;
79
Darin Petkova3d3be52011-11-14 21:34:16 +010080 ScopedRunnableMethodFactory<CellularCapabilityCDMA> task_factory_;
81
Darin Petkovae0c64e2011-11-15 15:50:27 +010082 uint32 activation_state_;
Darin Petkov184c54e2011-11-15 12:44:39 +010083 uint32 registration_state_evdo_;
84 uint32 registration_state_1x_;
Darin Petkovae0c64e2011-11-15 15:50:27 +010085 uint16 prl_version_;
Darin Petkov381928f2012-02-02 23:00:12 +010086 CellularService::OLP olp_;
Darin Petkovae0c64e2011-11-15 15:50:27 +010087 std::string usage_url_;
Darin Petkov184c54e2011-11-15 12:44:39 +010088
Darin Petkovac635a82012-01-10 16:51:58 +010089 static unsigned int friendly_service_name_id_;
90
Darin Petkovdaf43862011-10-27 11:37:28 +020091 DISALLOW_COPY_AND_ASSIGN(CellularCapabilityCDMA);
92};
93
94} // namespace shill
95
96#endif // SHILL_CELLULAR_CAPABILITY_CDMA_