1 // 2 // Copyright (C) 2016 Google, Inc. 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at: 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 // 16 17 #pragma once 18 19 #include <rapidjson/document.h> 20 #include <tuple> 21 22 // WifiFacade provides simple wrappers to call Wi-Fi HAL APIs. 23 // 24 // Each public function returns a tuple: <result, code>, where: 25 // result: result of HAL API or a dummy value (of the correct type) 26 // on failure. 27 // code: sl4n_error_codes::kPassInt or sl4n_error_codes::kFailInt on 28 // success or failure respectively. 29 // 30 // The wrapper must check whether or not it is possible to call the API. 31 // Note the function "SharedValidator()" should be used by wrapper to check 32 // whether or not the HAL is configured correctly. 33 class WifiFacade { 34 public: 35 WifiFacade(); 36 std::tuple<bool, int> WifiInit(); 37 std::tuple<int, int> WifiGetSupportedFeatureSet(); 38 private: 39 wifi_hal_fn hal_fn; 40 wifi_handle wifi_hal_handle; 41 wifi_interface_handle* wifi_iface_handles; 42 int num_wifi_iface_handles; 43 int wlan0_index; 44 int p2p0_index; 45 46 bool SharedValidator(); 47 bool WifiStartHal(); 48 bool WifiGetInterfaces(); 49 int BringInterfaceUpDown(const char *ifname, int dev_up); 50 }; 51