xref: /aosp_15_r20/external/wpa_supplicant_8/hostapd/aidl/hostapd.h (revision 03f9172ca588f91df233974f4258bab95191f931)
1*03f9172cSAndroid Build Coastguard Worker /*
2*03f9172cSAndroid Build Coastguard Worker  * aidl interface for wpa_hostapd daemon
3*03f9172cSAndroid Build Coastguard Worker  * Copyright (c) 2004-2018, Jouni Malinen <[email protected]>
4*03f9172cSAndroid Build Coastguard Worker  * Copyright (c) 2004-2018, Roshan Pius <[email protected]>
5*03f9172cSAndroid Build Coastguard Worker  *
6*03f9172cSAndroid Build Coastguard Worker  * This software may be distributed under the terms of the BSD license.
7*03f9172cSAndroid Build Coastguard Worker  * See README for more details.
8*03f9172cSAndroid Build Coastguard Worker  */
9*03f9172cSAndroid Build Coastguard Worker 
10*03f9172cSAndroid Build Coastguard Worker #pragma once
11*03f9172cSAndroid Build Coastguard Worker 
12*03f9172cSAndroid Build Coastguard Worker #include <map>
13*03f9172cSAndroid Build Coastguard Worker #include <string>
14*03f9172cSAndroid Build Coastguard Worker 
15*03f9172cSAndroid Build Coastguard Worker #include <android-base/macros.h>
16*03f9172cSAndroid Build Coastguard Worker 
17*03f9172cSAndroid Build Coastguard Worker #include <aidl/android/hardware/wifi/hostapd/BnHostapd.h>
18*03f9172cSAndroid Build Coastguard Worker 
19*03f9172cSAndroid Build Coastguard Worker extern "C"
20*03f9172cSAndroid Build Coastguard Worker {
21*03f9172cSAndroid Build Coastguard Worker #include "utils/common.h"
22*03f9172cSAndroid Build Coastguard Worker #include "utils/eloop.h"
23*03f9172cSAndroid Build Coastguard Worker #include "utils/includes.h"
24*03f9172cSAndroid Build Coastguard Worker #include "utils/wpa_debug.h"
25*03f9172cSAndroid Build Coastguard Worker #include "ap/hostapd.h"
26*03f9172cSAndroid Build Coastguard Worker #include "ap/sta_info.h"
27*03f9172cSAndroid Build Coastguard Worker }
28*03f9172cSAndroid Build Coastguard Worker 
29*03f9172cSAndroid Build Coastguard Worker namespace aidl {
30*03f9172cSAndroid Build Coastguard Worker namespace android {
31*03f9172cSAndroid Build Coastguard Worker namespace hardware {
32*03f9172cSAndroid Build Coastguard Worker namespace wifi {
33*03f9172cSAndroid Build Coastguard Worker namespace hostapd {
34*03f9172cSAndroid Build Coastguard Worker 
35*03f9172cSAndroid Build Coastguard Worker /**
36*03f9172cSAndroid Build Coastguard Worker  * Implementation of the hostapd aidl object. This aidl
37*03f9172cSAndroid Build Coastguard Worker  * object is used core for global control operations on
38*03f9172cSAndroid Build Coastguard Worker  * hostapd.
39*03f9172cSAndroid Build Coastguard Worker  */
40*03f9172cSAndroid Build Coastguard Worker class Hostapd : public BnHostapd
41*03f9172cSAndroid Build Coastguard Worker {
42*03f9172cSAndroid Build Coastguard Worker public:
43*03f9172cSAndroid Build Coastguard Worker 	Hostapd(hapd_interfaces* interfaces);
44*03f9172cSAndroid Build Coastguard Worker 	~Hostapd() override = default;
45*03f9172cSAndroid Build Coastguard Worker 
46*03f9172cSAndroid Build Coastguard Worker 	// Aidl methods exposed.
47*03f9172cSAndroid Build Coastguard Worker 	::ndk::ScopedAStatus addAccessPoint(
48*03f9172cSAndroid Build Coastguard Worker 	    const IfaceParams& iface_params, const NetworkParams& nw_params) override;
49*03f9172cSAndroid Build Coastguard Worker 	::ndk::ScopedAStatus removeAccessPoint(const std::string& iface_name) override;
50*03f9172cSAndroid Build Coastguard Worker 	::ndk::ScopedAStatus terminate() override;
51*03f9172cSAndroid Build Coastguard Worker 	::ndk::ScopedAStatus registerCallback(
52*03f9172cSAndroid Build Coastguard Worker 	    const std::shared_ptr<IHostapdCallback>& callback) override;
53*03f9172cSAndroid Build Coastguard Worker 	::ndk::ScopedAStatus forceClientDisconnect(
54*03f9172cSAndroid Build Coastguard Worker 	    const std::string& iface_name,
55*03f9172cSAndroid Build Coastguard Worker 	    const std::vector<uint8_t>& client_address,
56*03f9172cSAndroid Build Coastguard Worker 	    Ieee80211ReasonCode reason_code) override;
57*03f9172cSAndroid Build Coastguard Worker 	::ndk::ScopedAStatus setDebugParams(DebugLevel level) override;
58*03f9172cSAndroid Build Coastguard Worker 	::ndk::ScopedAStatus removeLinkFromMultipleLinkBridgedApIface(
59*03f9172cSAndroid Build Coastguard Worker 		const std::string& iface_name, const std::string& linkIdentity) override;
60*03f9172cSAndroid Build Coastguard Worker private:
61*03f9172cSAndroid Build Coastguard Worker 	// Corresponding worker functions for the AIDL methods.
62*03f9172cSAndroid Build Coastguard Worker 	::ndk::ScopedAStatus addAccessPointInternal(
63*03f9172cSAndroid Build Coastguard Worker 	    const IfaceParams& iface_params,
64*03f9172cSAndroid Build Coastguard Worker 	    const NetworkParams& nw_params);
65*03f9172cSAndroid Build Coastguard Worker 	::ndk::ScopedAStatus addSingleAccessPoint(
66*03f9172cSAndroid Build Coastguard Worker 	    const IfaceParams& IfaceParams,
67*03f9172cSAndroid Build Coastguard Worker 	    const ChannelParams& channelParams,
68*03f9172cSAndroid Build Coastguard Worker 	    const NetworkParams& nw_params,
69*03f9172cSAndroid Build Coastguard Worker 	    std::string br_name,
70*03f9172cSAndroid Build Coastguard Worker 	    std::string owe_transition_ifname);
71*03f9172cSAndroid Build Coastguard Worker 	::ndk::ScopedAStatus addConcurrentAccessPoints(
72*03f9172cSAndroid Build Coastguard Worker 	    const IfaceParams& IfaceParams,
73*03f9172cSAndroid Build Coastguard Worker 	    const NetworkParams& nw_params);
74*03f9172cSAndroid Build Coastguard Worker 	::ndk::ScopedAStatus removeAccessPointInternal(const std::string& iface_name);
75*03f9172cSAndroid Build Coastguard Worker 	::ndk::ScopedAStatus registerCallbackInternal(
76*03f9172cSAndroid Build Coastguard Worker 	    const std::shared_ptr<IHostapdCallback>& callback);
77*03f9172cSAndroid Build Coastguard Worker 	::ndk::ScopedAStatus forceClientDisconnectInternal(
78*03f9172cSAndroid Build Coastguard Worker 	    const std::string& iface_name,
79*03f9172cSAndroid Build Coastguard Worker 	    const std::vector<uint8_t>& client_address,
80*03f9172cSAndroid Build Coastguard Worker 	    Ieee80211ReasonCode reason_code);
81*03f9172cSAndroid Build Coastguard Worker 	::ndk::ScopedAStatus setDebugParamsInternal(DebugLevel level);
82*03f9172cSAndroid Build Coastguard Worker 	::ndk::ScopedAStatus removeLinkFromMultipleLinkBridgedApIfaceInternal(
83*03f9172cSAndroid Build Coastguard Worker 		const std::string& iface_name, const std::string& linkIdentity);
84*03f9172cSAndroid Build Coastguard Worker 	// Raw pointer to the global structure maintained by the core.
85*03f9172cSAndroid Build Coastguard Worker 	struct hapd_interfaces* interfaces_;
86*03f9172cSAndroid Build Coastguard Worker 	// Callbacks registered.
87*03f9172cSAndroid Build Coastguard Worker 	std::vector<std::shared_ptr<IHostapdCallback>> callbacks_;
88*03f9172cSAndroid Build Coastguard Worker 	// Death notifier.
89*03f9172cSAndroid Build Coastguard Worker 	AIBinder_DeathRecipient* death_notifier_;
90*03f9172cSAndroid Build Coastguard Worker 	// Bridge and its managed interfaces.
91*03f9172cSAndroid Build Coastguard Worker 	std::map<std::string, std::vector<std::string>> br_interfaces_;
92*03f9172cSAndroid Build Coastguard Worker 	DISALLOW_COPY_AND_ASSIGN(Hostapd);
93*03f9172cSAndroid Build Coastguard Worker };
94*03f9172cSAndroid Build Coastguard Worker }  // namespace hostapd
95*03f9172cSAndroid Build Coastguard Worker }  // namespace wifi
96*03f9172cSAndroid Build Coastguard Worker }  // namespace hardware
97*03f9172cSAndroid Build Coastguard Worker }  // namespace android
98*03f9172cSAndroid Build Coastguard Worker }  // namespace aidl
99