• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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