cellular_capability_cdma.h revision 608ec29525f553d51f0a92e84176e3d4b45930a9
1// Copyright (c) 2012 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#ifndef SHILL_CELLULAR_CELLULAR_CAPABILITY_CDMA_H_
6#define SHILL_CELLULAR_CELLULAR_CAPABILITY_CDMA_H_
7
8#include <memory>
9#include <string>
10#include <vector>
11
12#include <base/memory/weak_ptr.h>
13#include <chromeos/dbus/service_constants.h>
14#include <gtest/gtest_prod.h>  // for FRIEND_TEST
15
16#include "shill/cellular/cellular_capability.h"
17#include "shill/cellular/cellular_capability_classic.h"
18#include "shill/cellular/cellular_service.h"
19#include "shill/cellular/modem_cdma_proxy_interface.h"
20
21namespace shill {
22
23class ModemInfo;
24
25class CellularCapabilityCDMA : public CellularCapabilityClassic {
26 public:
27  CellularCapabilityCDMA(Cellular* cellular,
28                         ControlInterface* control_interface,
29                         ModemInfo* modem_info);
30  ~CellularCapabilityCDMA() override;
31
32  // Inherited from CellularCapability.
33  std::string GetTypeString() const override;
34  void StartModem(Error* error,
35                  const ResultCallback& callback) override;
36  bool AreProxiesInitialized() const override;
37  void Activate(const std::string& carrier,
38                Error* error,
39                const ResultCallback& callback) override;
40  bool IsActivating() const override;
41  bool IsRegistered() const override;
42  void SetUnregistered(bool searching) override;
43  void OnServiceCreated() override;
44  std::string GetNetworkTechnologyString() const override;
45  std::string GetRoamingStateString() const override;
46  bool AllowRoaming() override;
47  void GetSignalQuality() override;
48  void SetupConnectProperties(DBusPropertiesMap* properties) override;
49  void DisconnectCleanup() override;
50
51  // Inherited from CellularCapabilityClassic.
52  void GetRegistrationState() override;
53  void GetProperties(const ResultCallback& callback) override;
54
55  virtual void GetMEID(const ResultCallback& callback);
56
57  uint32_t activation_state() const { return activation_state_; }
58  uint32_t registration_state_evdo() const { return registration_state_evdo_; }
59  uint32_t registration_state_1x() const { return registration_state_1x_; }
60
61 protected:
62  // Inherited from CellularCapabilityClassic.
63  void InitProxies() override;
64  void ReleaseProxies() override;
65  void UpdateStatus(const DBusPropertiesMap& properties) override;
66
67 private:
68  friend class CellularCapabilityCDMATest;
69  friend class CellularTest;
70  FRIEND_TEST(CellularCapabilityCDMATest, Activate);
71  FRIEND_TEST(CellularCapabilityCDMATest, ActivateError);
72  FRIEND_TEST(CellularCapabilityCDMATest, GetActivationStateString);
73  FRIEND_TEST(CellularCapabilityCDMATest, GetActivationErrorString);
74  FRIEND_TEST(CellularServiceTest, IsAutoConnectable);
75  FRIEND_TEST(CellularTest, CreateService);
76
77  static const char kPhoneNumber[];
78
79  void HandleNewActivationState(uint32_t error);
80
81  static std::string GetActivationStateString(uint32_t state);
82  static std::string GetActivationErrorString(uint32_t error);
83
84  // Signal callbacks from the Modem.CDMA interface
85  void OnActivationStateChangedSignal(
86      uint32_t activation_state,
87      uint32_t activation_error,
88      const DBusPropertiesMap& status_changes);
89  void OnRegistrationStateChangedSignal(
90      uint32_t state_1x, uint32_t state_evdo);
91  void OnSignalQualitySignal(uint32_t strength);
92
93  // Method reply callbacks from the Modem.CDMA interface
94  void OnActivateReply(const ResultCallback& callback,
95                       uint32_t status, const Error& error);
96
97  void OnGetRegistrationStateReply(uint32_t state_1x, uint32_t state_evdo,
98                                   const Error& error);
99  void OnGetSignalQualityReply(uint32_t strength, const Error& error);
100
101  std::unique_ptr<ModemCDMAProxyInterface> proxy_;
102  base::WeakPtrFactory<CellularCapabilityCDMA> weak_ptr_factory_;
103
104  // Helper method to extract the online portal information from properties.
105  void UpdateOnlinePortal(const DBusPropertiesMap& properties);
106  void UpdateServiceOLP() override;
107
108  bool activation_starting_;
109  ResultCallback pending_activation_callback_;
110  std::string pending_activation_carrier_;
111  uint32_t activation_state_;
112  uint32_t registration_state_evdo_;
113  uint32_t registration_state_1x_;
114  std::string usage_url_;
115
116  DISALLOW_COPY_AND_ASSIGN(CellularCapabilityCDMA);
117};
118
119}  // namespace shill
120
121#endif  // SHILL_CELLULAR_CELLULAR_CAPABILITY_CDMA_H_
122