• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright (C) 2015 The Android Open Source Project
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //      http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16 
17 #ifndef SHILL_DBUS_CHROMEOS_MODEM_CDMA_PROXY_H_
18 #define SHILL_DBUS_CHROMEOS_MODEM_CDMA_PROXY_H_
19 
20 #include <string>
21 
22 #include "cellular/dbus-proxies.h"
23 #include "shill/cellular/modem_cdma_proxy_interface.h"
24 
25 namespace shill {
26 
27 // A proxy to (old) ModemManager.Modem.CDMA.
28 class ChromeosModemCDMAProxy : public ModemCDMAProxyInterface {
29  public:
30   // Constructs a ModemManager.Modem.CDMA DBus object proxy at |path| owned by
31   // |service|.
32   ChromeosModemCDMAProxy(const scoped_refptr<dbus::Bus>& bus,
33                          const std::string& path,
34                          const std::string& service);
35   ~ChromeosModemCDMAProxy() override;
36 
37   // Inherited from ModemCDMAProxyInterface.
38   void Activate(const std::string& carrier,
39                 Error* error,
40                 const ActivationResultCallback& callback,
41                 int timeout) override;
42   void GetRegistrationState(Error* error,
43                             const RegistrationStateCallback& callback,
44                             int timeout) override;
45   void GetSignalQuality(Error* error,
46                         const SignalQualityCallback& callback,
47                         int timeout) override;
48   const std::string MEID() override;
49 
set_activation_state_callback(const ActivationStateSignalCallback & callback)50   void set_activation_state_callback(
51       const ActivationStateSignalCallback& callback) override {
52     activation_state_callback_ = callback;
53   }
set_signal_quality_callback(const SignalQualitySignalCallback & callback)54   void set_signal_quality_callback(
55       const SignalQualitySignalCallback& callback) override {
56     signal_quality_callback_ = callback;
57   }
set_registration_state_callback(const RegistrationStateSignalCallback & callback)58   void set_registration_state_callback(
59       const RegistrationStateSignalCallback& callback) override {
60     registration_state_callback_ = callback;
61   }
62 
63  private:
64   class PropertySet : public dbus::PropertySet {
65    public:
66     PropertySet(dbus::ObjectProxy* object_proxy,
67                 const std::string& interface_name,
68                 const PropertyChangedCallback& callback);
69     brillo::dbus_utils::Property<std::string> meid;
70 
71    private:
72     DISALLOW_COPY_AND_ASSIGN(PropertySet);
73   };
74 
75   static const char kPropertyMeid[];
76 
77   // Signal handlers.
78   void ActivationStateChanged(
79       uint32_t activation_state,
80       uint32_t activation_error,
81       const brillo::VariantDictionary& status_changes);
82   void SignalQuality(uint32_t quality);
83   void RegistrationStateChanged(uint32_t cdma_1x_state,
84                                 uint32_t evdo_state);
85 
86   // Callbacks for Activate async call.
87   void OnActivateSuccess(const ActivationResultCallback& callback,
88                          uint32_t status);
89   void OnActivateFailure(const ActivationResultCallback& callback,
90                          brillo::Error* dbus_error);
91 
92   // Callbacks for GetRegistrationState async call.
93   void OnGetRegistrationStateSuccess(const RegistrationStateCallback& callback,
94                                      uint32_t state_1x,
95                                      uint32_t state_evdo);
96   void OnGetRegistrationStateFailure(const RegistrationStateCallback& callback,
97                                      brillo::Error* dbus_error);
98 
99   // Callbacks for GetSignalQuality async call.
100   void OnGetSignalQualitySuccess(const SignalQualityCallback& callback,
101                                  uint32_t quality);
102   void OnGetSignalQualityFailure(const SignalQualityCallback& callback,
103                                  brillo::Error* dbus_error);
104 
105   // Called when signal is connected to the ObjectProxy.
106   void OnSignalConnected(const std::string& interface_name,
107                          const std::string& signal_name,
108                          bool success);
109 
110   // Callback invoked when the value of property |property_name| is changed.
111   void OnPropertyChanged(const std::string& property_name);
112 
113   ActivationStateSignalCallback activation_state_callback_;
114   SignalQualitySignalCallback signal_quality_callback_;
115   RegistrationStateSignalCallback registration_state_callback_;
116 
117   std::unique_ptr<org::freedesktop::ModemManager::Modem::CdmaProxy> proxy_;
118   std::unique_ptr<PropertySet> properties_;
119 
120   base::WeakPtrFactory<ChromeosModemCDMAProxy> weak_factory_{this};
121   DISALLOW_COPY_AND_ASSIGN(ChromeosModemCDMAProxy);
122 };
123 
124 }  // namespace shill
125 
126 #endif  // SHILL_DBUS_CHROMEOS_MODEM_CDMA_PROXY_H_
127