// 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() {}
// 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_