| // 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 WIMAX_MANAGER_GDM_DEVICE_H_ |
| #define WIMAX_MANAGER_GDM_DEVICE_H_ |
| |
| extern "C" { |
| #include <gct/gctapi.h> |
| } // extern "C" |
| |
| #include <string> |
| |
| #include <base/macros.h> |
| #include <base/memory/weak_ptr.h> |
| #include <base/timer/timer.h> |
| #include <gtest/gtest_prod.h> |
| |
| #include "wimax_manager/device.h" |
| |
| namespace wimax_manager { |
| |
| class EAPParameters; |
| class GdmDriver; |
| |
| class GdmDevice : public Device { |
| public: |
| GdmDevice(Manager *manager, uint8_t index, const std::string &name, |
| const base::WeakPtr<GdmDriver> &driver); |
| ~GdmDevice() override; |
| |
| bool Enable() override; |
| bool Disable() override; |
| bool ScanNetworks() override; |
| bool Connect(const Network &network, |
| const base::DictionaryValue ¶meters) override; |
| bool Disconnect() override; |
| |
| void OnNetworkScan(); |
| bool UpdateStatus(); |
| void OnStatusUpdate(); |
| void OnDBusAdaptorStatusUpdate(); |
| void CancelConnectOnTimeout(); |
| void RestoreStatusUpdateInterval(); |
| |
| protected: |
| void UpdateNetworkScanInterval(uint32_t network_scan_interval) override; |
| void UpdateStatusUpdateInterval(uint32_t status_update_interval) override; |
| |
| private: |
| friend class GdmDriver; |
| FRIEND_TEST(GdmDeviceTest, ConstructEAPParametersUsingConnectParameters); |
| FRIEND_TEST(GdmDeviceTest, ConstructEAPParametersUsingOperatorEAPParameters); |
| FRIEND_TEST(GdmDeviceTest, |
| ConstructEAPParametersWithAnonymousIdentityUpdated); |
| FRIEND_TEST(GdmDeviceTest, ConstructEAPParametersWithInvalidEAPParameters); |
| FRIEND_TEST(GdmDeviceTest, ConstructEAPParametersWithoutEAPParameters); |
| |
| bool Open(); |
| bool Close(); |
| void ClearCurrentConnectionProfile(); |
| |
| static bool ConstructEAPParameters( |
| const base::DictionaryValue &connect_parameters, |
| const EAPParameters &operator_eap_parameters, |
| GCT_API_EAP_PARAM *eap_parameters); |
| |
| EAPParameters GetNetworkOperatorEAPParameters(const Network &network) const; |
| |
| void set_connection_progress( |
| WIMAX_API_CONNECTION_PROGRESS_INFO connection_progress) { |
| connection_progress_ = connection_progress; |
| } |
| |
| base::WeakPtr<GdmDriver> driver_; |
| bool open_; |
| WIMAX_API_CONNECTION_PROGRESS_INFO connection_progress_; |
| base::OneShotTimer connect_timeout_timer_; |
| base::OneShotTimer initial_network_scan_timer_; |
| base::RepeatingTimer network_scan_timer_; |
| base::RepeatingTimer status_update_timer_; |
| base::OneShotTimer dbus_adaptor_status_update_timer_; |
| base::OneShotTimer restore_status_update_interval_timer_; |
| bool restore_status_update_interval_; |
| Network::Identifier current_network_identifier_; |
| std::string current_user_identity_; |
| |
| DISALLOW_COPY_AND_ASSIGN(GdmDevice); |
| }; |
| |
| } // namespace wimax_manager |
| |
| #endif // WIMAX_MANAGER_GDM_DEVICE_H_ |