C++程序  |  129行  |  6.58 KB

//
// Copyright (C) 2015 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

#ifndef PROXY_SHILL_WIFI_CLIENT_H
#define PROXY_SHILL_WIFI_CLIENT_H

#include <stdio.h>
#include <stdlib.h>
#include <sysexits.h>

#include <string>

#include <brillo/any.h>
#include <brillo/variant_dictionary.h>
// Abstract class which defines the interface for the RPC server to talk to Shill.
// This helps in abstracting out the underlying protocol that Shill client
// needs to use: Dbus, Binder, etc.
// TODO: Need to come up with comments explaining what each method needs to do here.
class ProxyShillWifiClient {
 public:
  enum AutoConnectType {
    kAutoConnectTypeDisabled = 0,
    kAutoConnectTypeEnabled = 1,
    kAutoConnectTypeUnspecified
  };
  enum StationType {
    kStationTypeIBSS,
    kStationTypeManaged,
    kStationTypeUnknown,
    kStationTypeDefault = kStationTypeManaged
  };

  ProxyShillWifiClient() = default;
  virtual ~ProxyShillWifiClient() = default;
  virtual bool SetLogging() = 0;
  virtual bool RemoveAllWifiEntries() = 0;
  virtual bool ConfigureServiceByGuid(const std::string& guid,
                                      AutoConnectType autoconnect,
                                      const std::string& passphrase) = 0;
  virtual bool ConfigureWifiService(const std::string& ssid,
                                    const std::string& security,
                                    const brillo::VariantDictionary& security_params,
                                    bool save_credentials,
                                    StationType station_type,
                                    bool hidden_network,
                                    const std::string& guid,
                                    AutoConnectType autoconnect) = 0;
  virtual bool ConnectToWifiNetwork(const std::string& ssid,
                                    const std::string& security,
                                    const brillo::VariantDictionary& security_params,
                                    bool save_credentials,
                                    StationType station_type,
                                    bool hidden_network,
                                    const std::string& guid,
                                    AutoConnectType autoconnect,
                                    long discovery_timeout_milliseconds,
                                    long association_timeout_milliseconds,
                                    long configuration_timeout_milliseconds,
                                    long* discovery_time_milliseconds,
                                    long* association_time_milliseconds,
                                    long* configuration_time_milliseconds,
                                    std::string* failure_reason) = 0;
  virtual bool DisconnectFromWifiNetwork(const std::string& ssid,
                                         long disconnect_timeout_milliseconds,
                                         long* disconnect_time_milliseconds,
                                         std::string* failure_reason) = 0;
  virtual bool ConfigureBgScan(const std::string& interface_name,
                               const std::string& method_name,
                               uint16_t short_interval,
                               uint16_t long_interval,
                               int signal_threshold) = 0;
  virtual bool GetActiveWifiSsids(std::vector<std::string>* ssids) = 0;
  virtual bool WaitForServiceStates(const std::string& ssid,
                                    const std::vector<std::string>& expected_states,
                                    long wait_timeout_milliseconds,
                                    std::string* final_state,
                                    long* wait_time_milliseconds) = 0;
  virtual bool CreateProfile(const std::string& profile_name) = 0;
  virtual bool PushProfile(const std::string& profile_name) = 0;
  virtual bool PopProfile(const std::string& profile_name) = 0;
  virtual bool RemoveProfile(const std::string& profile_name) = 0;
  virtual bool CleanProfiles() = 0;
  virtual bool DeleteEntriesForSsid(const std::string& ssid) = 0;
  virtual bool ListControlledWifiInterfaces(std::vector<std::string>* interface_names) = 0;
  virtual bool Disconnect(const std::string& ssid) = 0;
  virtual bool GetServiceOrder(std::string* service_order) = 0;
  virtual bool SetServiceOrder(const std::string& service_order) = 0;
  virtual bool GetServiceProperties(const std::string& ssid,
                                    brillo::VariantDictionary* properties) = 0;
  virtual bool SetSchedScan(bool enable) = 0;
  virtual bool GetPropertyOnDevice(const std::string& interface_name,
                                   const std::string& property_name,
                                   brillo::Any* property_value) = 0;
  virtual bool SetPropertyOnDevice(const std::string& interface_name,
                                   const std::string& property_name,
                                   const brillo::Any& property_value) = 0;
  virtual bool RequestRoam(const std::string& interface_name, const std::string& bssid) = 0;
  virtual bool SetDeviceEnabled(const std::string& interface_name, bool enable) = 0;
  virtual bool DiscoverTdlsLink(const std::string& interface_name,
                                const std::string& peer_mac_address) = 0;
  virtual bool EstablishTdlsLink(const std::string& interface_name,
                                 const std::string& peer_mac_address) = 0;
  virtual bool QueryTdlsLink(const std::string& interface_name,
                             const std::string& peer_mac_address,
                             std::string* status) = 0;
  virtual bool AddWakePacketSource(const std::string& interface_name,
                                   const std::string& source_ip_address) = 0;
  virtual bool RemoveWakePacketSource(const std::string& interface_name,
                                      const std::string& source_ip_address) = 0;
  virtual bool RemoveAllWakePacketSources(const std::string& interface_name) = 0;

  std::string GetModeFromStationType(StationType station_type);
};

#endif // PROXY_SHILL_WIFI_CLIENT_H