wimax_service.h revision 8021e7f581b1d040fa8ff0a09ee9444bdb58bc86
199c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
299c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan// Use of this source code is governed by a BSD-style license that can be
399c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan// found in the LICENSE file.
499c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan
599c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan#ifndef SHILL_WIMAX_SERVICE_H_
699c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan#define SHILL_WIMAX_SERVICE_H_
799c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan
8e4b270274cba2a1976c7be6c733bd899e009c1d1Darin Petkov#include <gtest/gtest_prod.h>  // for FRIEND_TEST
9e4b270274cba2a1976c7be6c733bd899e009c1d1Darin Petkov
1099c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan#include "shill/refptr_types.h"
1199c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan#include "shill/service.h"
1299c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan
1399c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Channamespace shill {
1499c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan
1525665aa52da9f6e08a23fc462b09c2ae63a8a5f2Darin Petkovclass KeyValueStore;
169893d9c59f596e621463c8e97bb3933f8fa7edf6Darin Petkovclass WiMaxNetworkProxyInterface;
179893d9c59f596e621463c8e97bb3933f8fa7edf6Darin Petkov
1899c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chanclass WiMaxService : public Service {
1999c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan public:
2099c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan  WiMaxService(ControlInterface *control,
2199c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan               EventDispatcher *dispatcher,
2299c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan               Metrics *metrics,
2399c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan               Manager *manager,
2499c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan               const WiMaxRefPtr &wimax);
2599c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan  virtual ~WiMaxService();
2699c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan
274e5c1310a1c70445a473653bd37d06604c5d5f47Ben Chan  // Returns the parameters to be passed to WiMaxManager.Device.Connect() when
284e5c1310a1c70445a473653bd37d06604c5d5f47Ben Chan  // connecting to the network associated with this service.
2925665aa52da9f6e08a23fc462b09c2ae63a8a5f2Darin Petkov  void GetConnectParameters(KeyValueStore *parameters) const;
304e5c1310a1c70445a473653bd37d06604c5d5f47Ben Chan
311e52a1b85f387a5f81e01a6f9fc5196e073803caDarin Petkov  // Returns the RPC object path for the WiMaxManager.Network object associated
321e52a1b85f387a5f81e01a6f9fc5196e073803caDarin Petkov  // with this service. Must only be called after |proxy_| is set by Start().
331e52a1b85f387a5f81e01a6f9fc5196e073803caDarin Petkov  RpcIdentifier GetNetworkObjectPath() const;
344e5c1310a1c70445a473653bd37d06604c5d5f47Ben Chan
359893d9c59f596e621463c8e97bb3933f8fa7edf6Darin Petkov  // Returns true on success, false otherwise. Takes ownership of proxy,
369893d9c59f596e621463c8e97bb3933f8fa7edf6Darin Petkov  // regardless of the result of the operation.
379893d9c59f596e621463c8e97bb3933f8fa7edf6Darin Petkov  bool Start(WiMaxNetworkProxyInterface *proxy);
389893d9c59f596e621463c8e97bb3933f8fa7edf6Darin Petkov
399893d9c59f596e621463c8e97bb3933f8fa7edf6Darin Petkov  const std::string &network_name() const { return network_name_; }
409893d9c59f596e621463c8e97bb3933f8fa7edf6Darin Petkov  uint32 network_identifier() const { return network_identifier_; }
419893d9c59f596e621463c8e97bb3933f8fa7edf6Darin Petkov
4299c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan  // Inherited from Service.
4399c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan  virtual bool TechnologyIs(const Technology::Identifier type) const;
4499c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan  virtual void Connect(Error *error);
4599c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan  virtual void Disconnect(Error *error);
46c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan  virtual std::string GetStorageIdentifier() const;
478021e7f581b1d040fa8ff0a09ee9444bdb58bc86Darin Petkov  virtual bool Is8021x() const;
488021e7f581b1d040fa8ff0a09ee9444bdb58bc86Darin Petkov  virtual void set_eap(const EapCredentials &eap);
4999c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan
5099c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan private:
51e4b270274cba2a1976c7be6c733bd899e009c1d1Darin Petkov  FRIEND_TEST(WiMaxServiceTest, GetDeviceRpcId);
521e52a1b85f387a5f81e01a6f9fc5196e073803caDarin Petkov  FRIEND_TEST(WiMaxServiceTest, OnSignalStrengthChanged);
538021e7f581b1d040fa8ff0a09ee9444bdb58bc86Darin Petkov  FRIEND_TEST(WiMaxServiceTest, SetEAP);
54e4b270274cba2a1976c7be6c733bd899e009c1d1Darin Petkov
55c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan  virtual std::string GetDeviceRpcId(Error *error);
56c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan
571e52a1b85f387a5f81e01a6f9fc5196e073803caDarin Petkov  void OnSignalStrengthChanged(int strength);
581e52a1b85f387a5f81e01a6f9fc5196e073803caDarin Petkov
598021e7f581b1d040fa8ff0a09ee9444bdb58bc86Darin Petkov  void UpdateConnectable();
608021e7f581b1d040fa8ff0a09ee9444bdb58bc86Darin Petkov
6199c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan  WiMaxRefPtr wimax_;
629893d9c59f596e621463c8e97bb3933f8fa7edf6Darin Petkov  scoped_ptr<WiMaxNetworkProxyInterface> proxy_;
63e4b270274cba2a1976c7be6c733bd899e009c1d1Darin Petkov  std::string storage_id_;
6499c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan
659893d9c59f596e621463c8e97bb3933f8fa7edf6Darin Petkov  uint32 network_identifier_;
669893d9c59f596e621463c8e97bb3933f8fa7edf6Darin Petkov  std::string network_name_;
674e5c1310a1c70445a473653bd37d06604c5d5f47Ben Chan  bool need_passphrase_;
689893d9c59f596e621463c8e97bb3933f8fa7edf6Darin Petkov
6999c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan  DISALLOW_COPY_AND_ASSIGN(WiMaxService);
7099c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan};
7199c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan
7299c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan}  // namespace shill
7399c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan
7499c8a4d2e6b81b1c395b2e1054111b29c20a5189Ben Chan#endif  // SHILL_WIMAX_SERVICE_H_
75