|  | // Copyright 2015 The Weave 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 LIBWEAVE_SRC_PRIVET_WIFI_DELEGATE_H_ | 
|  | #define LIBWEAVE_SRC_PRIVET_WIFI_DELEGATE_H_ | 
|  |  | 
|  | #include <memory> | 
|  | #include <set> | 
|  | #include <string> | 
|  |  | 
|  | #include "src/privet/privet_types.h" | 
|  |  | 
|  | namespace weave { | 
|  | namespace privet { | 
|  |  | 
|  | // Interface to provide WiFi functionality for PrivetHandler. | 
|  | class WifiDelegate { | 
|  | public: | 
|  | WifiDelegate() = default; | 
|  | virtual ~WifiDelegate() = default; | 
|  |  | 
|  | // Returns status of the WiFi connection. | 
|  | virtual const ConnectionState& GetConnectionState() const = 0; | 
|  |  | 
|  | // Returns status of the last WiFi setup. | 
|  | virtual const SetupState& GetSetupState() const = 0; | 
|  |  | 
|  | // Starts WiFi setup. Device should try to connect to provided SSID and | 
|  | // password and store them on success. Result of setup should be available | 
|  | // using GetSetupState(). | 
|  | // Final setup state can be retrieved with GetSetupState(). | 
|  | virtual bool ConfigureCredentials(const std::string& ssid, | 
|  | const std::string& password, | 
|  | ErrorPtr* error) = 0; | 
|  |  | 
|  | // Returns SSID of the currently configured WiFi network. Empty string, if | 
|  | // WiFi has not been configured yet. | 
|  | virtual std::string GetCurrentlyConnectedSsid() const = 0; | 
|  |  | 
|  | // Returns SSID of the WiFi network hosted by this device. Empty if device is | 
|  | // not in setup or P2P modes. | 
|  | virtual std::string GetHostedSsid() const = 0; | 
|  |  | 
|  | // Returns list of supported WiFi types. Currently it's just frequencies. | 
|  | virtual std::set<WifiType> GetTypes() const = 0; | 
|  | }; | 
|  |  | 
|  | }  // namespace privet | 
|  | }  // namespace weave | 
|  |  | 
|  | #endif  // LIBWEAVE_SRC_PRIVET_WIFI_DELEGATE_H_ |