cellular_capability_cdma.h revision 9a24553461df7036755060423f90804011612249
1ac635a8fb539fd44f3e24c33872b61fd064c0d60Darin Petkov// Copyright (c) 2012 The Chromium OS Authors. All rights reserved. 2daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov// Use of this source code is governed by a BSD-style license that can be 3daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov// found in the LICENSE file. 4daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov 5daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov#ifndef SHILL_CELLULAR_CAPABILITY_CDMA_ 6daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov#define SHILL_CELLULAR_CAPABILITY_CDMA_ 7daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov 8184c54e6091b21fc2a8ba40d8957ca6c84c37d6eDarin Petkov#include <base/memory/scoped_ptr.h> 93e20a2341d0aeb7681e4ee0f89eae6817ade2b3bEric Shienbrood#include <base/memory/weak_ptr.h> 10ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov#include <gtest/gtest_prod.h> // for FRIEND_TEST 11a3d3be5100a0931273cdfc08b364efe03322e3caDarin Petkov 12daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov#include "shill/cellular_capability.h" 13381928f996d23a21d4cfbed70d07cbf9029f625dDarin Petkov#include "shill/cellular_service.h" 14184c54e6091b21fc2a8ba40d8957ca6c84c37d6eDarin Petkov#include "shill/modem_cdma_proxy_interface.h" 15daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov 16daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkovnamespace shill { 17daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov 189a24553461df7036755060423f90804011612249Eric Shienbroodclass CellularCapabilityCDMA : public CellularCapability { 19daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov public: 205de44ab664b7cbb7619e31431e346ec8309548a6Eric Shienbrood CellularCapabilityCDMA(Cellular *cellular, ProxyFactory *proxy_factory); 21daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov 22b05315fa7beab387bcbfd9330215aa50cdd6c8f4Darin Petkov // Inherited from CellularCapability. 239a24553461df7036755060423f90804011612249Eric Shienbrood virtual void StartModem(Error *error, const ResultCallback &callback); 249a24553461df7036755060423f90804011612249Eric Shienbrood virtual void StopModem(Error *error, const ResultCallback &callback); 255f316f65dd63b21c050f48410170482bfe92e286Darin Petkov virtual void OnServiceCreated(); 26ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov virtual void UpdateStatus(const DBusPropertiesMap &properties); 27ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov virtual void SetupConnectProperties(DBusPropertiesMap *properties); 289a24553461df7036755060423f90804011612249Eric Shienbrood virtual void Activate(const std::string &carrier, Error *error, 299a24553461df7036755060423f90804011612249Eric Shienbrood const ResultCallback &callback); 30b72cf40dc315f9ae3537980f4fd85e737c125a03Darin Petkov virtual bool IsRegistered(); 31ac635a8fb539fd44f3e24c33872b61fd064c0d60Darin Petkov virtual std::string CreateFriendlyServiceName(); 3220c13ec645faacb9c517fd2c574aa7fa30d890d0Darin Petkov virtual std::string GetNetworkTechnologyString() const; 3320c13ec645faacb9c517fd2c574aa7fa30d890d0Darin Petkov virtual std::string GetRoamingStateString() const; 343e509242f1a0e2e018a5c18a8d7b9224c6044d9aDarin Petkov virtual void GetSignalQuality(); 359a24553461df7036755060423f90804011612249Eric Shienbrood virtual void GetRegistrationState(); 369a24553461df7036755060423f90804011612249Eric Shienbrood virtual void GetProperties(const ResultCallback &callback); 37ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov virtual void OnModemManagerPropertiesChanged( 38ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov const DBusPropertiesMap &properties); 39daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov 409a24553461df7036755060423f90804011612249Eric Shienbrood virtual void GetMEID(const ResultCallback &callback); 41cb547737d288052935052eeb341b30922b4022a0Darin Petkov 42ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov uint32 activation_state() const { return activation_state_; } 43184c54e6091b21fc2a8ba40d8957ca6c84c37d6eDarin Petkov uint32 registration_state_evdo() const { return registration_state_evdo_; } 44184c54e6091b21fc2a8ba40d8957ca6c84c37d6eDarin Petkov uint32 registration_state_1x() const { return registration_state_1x_; } 45184c54e6091b21fc2a8ba40d8957ca6c84c37d6eDarin Petkov 469a24553461df7036755060423f90804011612249Eric Shienbrood protected: 479a24553461df7036755060423f90804011612249Eric Shienbrood virtual void InitProxies(); 489a24553461df7036755060423f90804011612249Eric Shienbrood virtual void ReleaseProxies(); 499a24553461df7036755060423f90804011612249Eric Shienbrood 50daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov private: 51184c54e6091b21fc2a8ba40d8957ca6c84c37d6eDarin Petkov friend class CellularCapabilityCDMATest; 529a24553461df7036755060423f90804011612249Eric Shienbrood friend class CellularTest; 535de44ab664b7cbb7619e31431e346ec8309548a6Eric Shienbrood FRIEND_TEST(CellularCapabilityCDMATest, Activate); 545de44ab664b7cbb7619e31431e346ec8309548a6Eric Shienbrood FRIEND_TEST(CellularCapabilityCDMATest, ActivateError); 55ac635a8fb539fd44f3e24c33872b61fd064c0d60Darin Petkov FRIEND_TEST(CellularCapabilityCDMATest, CreateFriendlyServiceName); 56ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov FRIEND_TEST(CellularCapabilityCDMATest, GetActivationStateString); 57ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov FRIEND_TEST(CellularCapabilityCDMATest, GetActivationErrorString); 58ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov FRIEND_TEST(CellularTest, CreateService); 59ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov 60ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov static const char kPhoneNumber[]; 61184c54e6091b21fc2a8ba40d8957ca6c84c37d6eDarin Petkov 62ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov void HandleNewActivationState(uint32 error); 63ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov 64ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov // Updates the serving operator on the active service. 65ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov void UpdateServingOperator(); 66ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov 67ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov static std::string GetActivationStateString(uint32 state); 68ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov static std::string GetActivationErrorString(uint32 error); 69ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov 709a24553461df7036755060423f90804011612249Eric Shienbrood // Signal callbacks from the Modem.CDMA interface 719a24553461df7036755060423f90804011612249Eric Shienbrood virtual void OnActivationStateChangedSignal( 72184c54e6091b21fc2a8ba40d8957ca6c84c37d6eDarin Petkov uint32 activation_state, 73184c54e6091b21fc2a8ba40d8957ca6c84c37d6eDarin Petkov uint32 activation_error, 74184c54e6091b21fc2a8ba40d8957ca6c84c37d6eDarin Petkov const DBusPropertiesMap &status_changes); 759a24553461df7036755060423f90804011612249Eric Shienbrood virtual void OnRegistrationStateChangedSignal( 769a24553461df7036755060423f90804011612249Eric Shienbrood uint32 state_1x, uint32 state_evdo); 779a24553461df7036755060423f90804011612249Eric Shienbrood virtual void OnSignalQualitySignal(uint32 strength); 789a24553461df7036755060423f90804011612249Eric Shienbrood 799a24553461df7036755060423f90804011612249Eric Shienbrood // Method reply callbacks from the Modem.CDMA interface 809a24553461df7036755060423f90804011612249Eric Shienbrood virtual void OnActivateReply(const ResultCallback &callback, 819a24553461df7036755060423f90804011612249Eric Shienbrood uint32 status, const Error &error); 829a24553461df7036755060423f90804011612249Eric Shienbrood 839a24553461df7036755060423f90804011612249Eric Shienbrood virtual void OnGetRegistrationStateReply(uint32 state_1x, uint32 state_evdo, 849a24553461df7036755060423f90804011612249Eric Shienbrood const Error &error); 859a24553461df7036755060423f90804011612249Eric Shienbrood virtual void OnGetSignalQualityReply(uint32 strength, 869a24553461df7036755060423f90804011612249Eric Shienbrood const Error &error); 87184c54e6091b21fc2a8ba40d8957ca6c84c37d6eDarin Petkov 88184c54e6091b21fc2a8ba40d8957ca6c84c37d6eDarin Petkov scoped_ptr<ModemCDMAProxyInterface> proxy_; 893e20a2341d0aeb7681e4ee0f89eae6817ade2b3bEric Shienbrood base::WeakPtrFactory<CellularCapabilityCDMA> weak_ptr_factory_; 90a3d3be5100a0931273cdfc08b364efe03322e3caDarin Petkov 91ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov uint32 activation_state_; 92184c54e6091b21fc2a8ba40d8957ca6c84c37d6eDarin Petkov uint32 registration_state_evdo_; 93184c54e6091b21fc2a8ba40d8957ca6c84c37d6eDarin Petkov uint32 registration_state_1x_; 94ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov uint16 prl_version_; 95381928f996d23a21d4cfbed70d07cbf9029f625dDarin Petkov CellularService::OLP olp_; 96ae0c64ea644748f28b7a320e9663f30cd69e344eDarin Petkov std::string usage_url_; 97184c54e6091b21fc2a8ba40d8957ca6c84c37d6eDarin Petkov 98ac635a8fb539fd44f3e24c33872b61fd064c0d60Darin Petkov static unsigned int friendly_service_name_id_; 99ac635a8fb539fd44f3e24c33872b61fd064c0d60Darin Petkov 100daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov DISALLOW_COPY_AND_ASSIGN(CellularCapabilityCDMA); 101daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov}; 102daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov 103daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov} // namespace shill 104daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov 105daf4386a4775be7c965493749ccfe2fecc2e4167Darin Petkov#endif // SHILL_CELLULAR_CAPABILITY_CDMA_ 106