blob: a4e77accf51f37d122cbfb9ce834c4448ed38ca5 [file] [log] [blame]
// Copyright (c) 2012 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_MODEM_GSM_NETWORK_PROXY_INTERFACE_
#define SHILL_MODEM_GSM_NETWORK_PROXY_INTERFACE_
#include <map>
#include <string>
#include <vector>
#include <base/basictypes.h>
#include <dbus-c++/types.h>
#include "shill/callbacks.h"
namespace shill {
class Error;
typedef DBus::Struct<unsigned int, std::string, std::string>
GSMRegistrationInfo;
typedef std::map<std::string, std::string> GSMScanResult;
typedef std::vector<GSMScanResult> GSMScanResults;
typedef base::Callback<void(uint32)> SignalQualitySignalCallback;
typedef base::Callback<void(
uint32_t,
const std::string &,
const std::string &)> RegistrationInfoSignalCallback;
typedef base::Callback<void(uint32_t)> NetworkModeSignalCallback;
typedef base::Callback<void(uint32, const Error &)> SignalQualityCallback;
typedef base::Callback<void(uint32_t,
const std::string &,
const std::string &,
const Error &)> RegistrationInfoCallback;
typedef base::Callback<void(const GSMScanResults &,
const Error &)> ScanResultsCallback;
// These are the methods that a ModemManager.Modem.Gsm.Network proxy must
// support. The interface is provided so that it can be mocked in tests.
// All calls are made asynchronously.
// XXX fixup comment to reflect new reality
class ModemGSMNetworkProxyInterface {
public:
virtual ~ModemGSMNetworkProxyInterface() {}
virtual void GetRegistrationInfo(Error *error,
const RegistrationInfoCallback &callback,
int timeout) = 0;
virtual void GetSignalQuality(Error *error,
const SignalQualityCallback &callback,
int timeout) = 0;
virtual void Register(const std::string &network_id,
Error *error, const ResultCallback &callback,
int timeout) = 0;
virtual void Scan(Error *error, const ScanResultsCallback &callback,
int timeout) = 0;
// Properties.
virtual uint32 AccessTechnology() = 0;
// Signal callbacks
virtual void set_signal_quality_callback(
const SignalQualitySignalCallback &callback) = 0;
virtual void set_network_mode_callback(
const NetworkModeSignalCallback &callback) = 0;
virtual void set_registration_info_callback(
const RegistrationInfoSignalCallback &callback) = 0;
};
} // namespace shill
#endif // SHILL_MODEM_GSM_NETWORK_PROXY_INTERFACE_