// // 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 #include #include #include #include #include // 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* ssids) = 0; virtual bool WaitForServiceStates(const std::string& ssid, const std::vector& 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* 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