1 /* 2 * hidl interface for wpa_hostapd daemon 3 * Copyright (c) 2004-2018, Jouni Malinen <j@w1.fi> 4 * Copyright (c) 2004-2018, Roshan Pius <rpius@google.com> 5 * 6 * This software may be distributed under the terms of the BSD license. 7 * See README for more details. 8 */ 9 10 #ifndef HOSTAPD_HIDL_SUPPLICANT_H 11 #define HOSTAPD_HIDL_SUPPLICANT_H 12 13 #include <string> 14 15 #include <android-base/macros.h> 16 17 #include <android/hardware/wifi/hostapd/1.2/IHostapd.h> 18 #include <android/hardware/wifi/hostapd/1.1/IHostapdCallback.h> 19 20 extern "C" 21 { 22 #include "utils/common.h" 23 #include "utils/includes.h" 24 #include "utils/wpa_debug.h" 25 #include "ap/hostapd.h" 26 #include "ap/sta_info.h" 27 } 28 29 namespace android { 30 namespace hardware { 31 namespace wifi { 32 namespace hostapd { 33 namespace V1_2 { 34 namespace implementation { 35 using namespace android::hardware::wifi::hostapd::V1_0; 36 37 /** 38 * Implementation of the hostapd hidl object. This hidl 39 * object is used core for global control operations on 40 * hostapd. 41 */ 42 class Hostapd : public V1_2::IHostapd 43 { 44 public: 45 Hostapd(hapd_interfaces* interfaces); 46 ~Hostapd() override = default; 47 48 // Hidl methods exposed. 49 Return<void> addAccessPoint( 50 const V1_0::IHostapd::IfaceParams& iface_params, 51 const V1_0::IHostapd::NetworkParams& nw_params, addAccessPoint_cb _hidl_cb) override; 52 Return<void> addAccessPoint_1_1( 53 const V1_1::IHostapd::IfaceParams& iface_params, 54 const V1_0::IHostapd::NetworkParams& nw_params, addAccessPoint_cb _hidl_cb) override; 55 Return<void> addAccessPoint_1_2( 56 const V1_2::IHostapd::IfaceParams& iface_params, const NetworkParams& nw_params, 57 addAccessPoint_1_2_cb _hidl_cb) override; 58 Return<void> removeAccessPoint( 59 const hidl_string& iface_name, 60 removeAccessPoint_cb _hidl_cb) override; 61 Return<void> terminate() override; 62 Return<void> registerCallback( 63 const sp<V1_1::IHostapdCallback>& callback, 64 registerCallback_cb _hidl_cb) override; 65 Return<void>forceClientDisconnect( 66 const hidl_string& iface_name, 67 const hidl_array<uint8_t, 6>& client_address, 68 V1_2::Ieee80211ReasonCode reason_code, forceClientDisconnect_cb _hidl_cb) override; 69 Return<void> setDebugParams( 70 DebugLevel level, setDebugParams_cb _hidl_cb) override; 71 private: 72 // Corresponding worker functions for the HIDL methods. 73 V1_0::HostapdStatus addAccessPointInternal( 74 const V1_0::IHostapd::IfaceParams& iface_params, 75 const V1_0::IHostapd::NetworkParams& nw_params); 76 V1_0::HostapdStatus addAccessPointInternal_1_1( 77 const V1_1::IHostapd::IfaceParams& IfaceParams, 78 const V1_0::IHostapd::NetworkParams& nw_params); 79 V1_2::HostapdStatus addAccessPointInternal_1_2( 80 const V1_2::IHostapd::IfaceParams& IfaceParams, 81 const V1_2::IHostapd::NetworkParams& nw_params); 82 V1_0::HostapdStatus removeAccessPointInternal(const std::string& iface_name); 83 V1_0::HostapdStatus registerCallbackInternal( 84 const sp<V1_1::IHostapdCallback>& callback); 85 V1_2::HostapdStatus forceClientDisconnectInternal( 86 const std::string& iface_name, 87 const std::array<uint8_t, 6>& client_address, 88 V1_2::Ieee80211ReasonCode reason_code); 89 V1_2::HostapdStatus setDebugParamsInternal(DebugLevel level); 90 // Raw pointer to the global structure maintained by the core. 91 struct hapd_interfaces* interfaces_; 92 // Callbacks registered. 93 std::vector<sp<V1_1::IHostapdCallback>> callbacks_; 94 DISALLOW_COPY_AND_ASSIGN(Hostapd); 95 }; 96 } // namespace implementation 97 } // namespace V1_2 98 } // namespace hostapd 99 } // namespace wifi 100 } // namespace hardware 101 } // namespace android 102 103 #endif // HOSTAPD_HIDL_SUPPLICANT_H 104