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