blob: c794b69ccf4ced26780263ea3d92952cbcd0f57c [file] [log] [blame]
// Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SHILL_CELLULAR_CAPABILITY_UNIVERSAL_CDMA_H_
#define SHILL_CELLULAR_CAPABILITY_UNIVERSAL_CDMA_H_
#include "shill/cellular_capability_universal.h"
#include "shill/cellular.h"
#include "shill/mm1_modem_modemcdma_proxy_interface.h"
#include <string>
#include <vector>
#include <gtest/gtest_prod.h> // for FRIEND_TEST
namespace shill {
class CellularCapabilityUniversalCDMA : public CellularCapabilityUniversal {
public:
CellularCapabilityUniversalCDMA(
Cellular *cellular,
ProxyFactory *proxy_factory,
ModemInfo *modem_info);
// Inherited from CellularCapability.
virtual void Activate(const std::string &carrier,
Error *error, const ResultCallback &callback);
virtual void CompleteActivation(Error *error);
virtual std::string CreateFriendlyServiceName();
virtual void DisconnectCleanup();
virtual void GetProperties();
virtual std::string GetRoamingStateString() const;
virtual bool IsRegistered();
virtual void OnDBusPropertiesChanged(
const std::string &interface,
const DBusPropertiesMap &changed_properties,
const std::vector<std::string> &invalidated_properties);
virtual void OnServiceCreated();
virtual void SetUnregistered(bool searching);
// TODO(armansito): Remove once 3GPP is implemented in its own class
virtual void Register(const ResultCallback &callback);
virtual void RegisterOnNetwork(const std::string &network_id,
Error *error,
const ResultCallback &callback);
virtual void RequirePIN(const std::string &pin, bool require,
Error *error, const ResultCallback &callback);
virtual void EnterPIN(const std::string &pin,
Error *error, const ResultCallback &callback);
virtual void UnblockPIN(const std::string &unblock_code,
const std::string &pin,
Error *error, const ResultCallback &callback);
virtual void ChangePIN(const std::string &old_pin,
const std::string &new_pin,
Error *error, const ResultCallback &callback);
virtual void Scan(Error *error, const ResultCallback &callback);
virtual void OnSimPathChanged(const std::string &sim_path);
protected:
virtual void InitProxies();
virtual void ReleaseProxies();
virtual void UpdateOLP();
private:
friend class CellularCapabilityUniversalCDMATest;
FRIEND_TEST(CellularCapabilityUniversalCDMATest, CreateFriendlyServiceName);
FRIEND_TEST(CellularCapabilityUniversalCDMATest, OnCDMARegistrationChanged);
FRIEND_TEST(CellularCapabilityUniversalCDMATest, PropertiesChanged);
FRIEND_TEST(CellularCapabilityUniversalCDMATest, UpdateOLP);
FRIEND_TEST(CellularCapabilityUniversalCDMATest, UpdateOperatorInfo);
// CDMA property change handlers
virtual void OnModemCDMAPropertiesChanged(
const DBusPropertiesMap &properties,
const std::vector<std::string> &invalidated_properties);
void OnCDMARegistrationChanged(
MMModemCdmaRegistrationState state_1x,
MMModemCdmaRegistrationState state_evdo,
uint32_t sid, uint32_t nid);
void UpdateOperatorInfo();
void UpdateServingOperator();
scoped_ptr<mm1::ModemModemCdmaProxyInterface> modem_cdma_proxy_;
MMModemCdmaRegistrationState cdma_1x_registration_state_;
MMModemCdmaRegistrationState cdma_evdo_registration_state_;
// Current network operator. Since CDMA operator information is acquired
// using the (SID, NID) pair, which itself is acquired OTA, |provider_|
// can both be the home provider or the serving operator for roaming.
Cellular::Operator provider_;
uint32_t nid_;
uint32_t sid_;
// TODO(armansito): Use the common name |friendly_service_name_id_| once
// CellularCapabilityUniversal gets broken up for 3GPP.
static unsigned int friendly_service_name_id_cdma_;
DISALLOW_COPY_AND_ASSIGN(CellularCapabilityUniversalCDMA);
};
} // namespace shill
#endif // SHILL_CELLULAR_CAPABILITY_UNIVERSAL_CDMA_H_