// // Copyright (C) 2016 Google, Inc. // // 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. // #pragma once #include <rapidjson/document.h> #include <tuple> // WifiFacade provides simple wrappers to call Wi-Fi HAL APIs. // // Each public function returns a tuple: <result, code>, where: // result: result of HAL API or a dummy value (of the correct type) // on failure. // code: sl4n_error_codes::kPassInt or sl4n_error_codes::kFailInt on // success or failure respectively. // // The wrapper must check whether or not it is possible to call the API. // Note the function "SharedValidator()" should be used by wrapper to check // whether or not the HAL is configured correctly. class WifiFacade { public: WifiFacade(); std::tuple<bool, int> WifiInit(); std::tuple<int, int> WifiGetSupportedFeatureSet(); private: wifi_hal_fn hal_fn; wifi_handle wifi_hal_handle; wifi_interface_handle* wifi_iface_handles; int num_wifi_iface_handles; int wlan0_index; int p2p0_index; bool SharedValidator(); bool WifiStartHal(); bool WifiGetInterfaces(); int BringInterfaceUpDown(const char *ifname, int dev_up); };