• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * hidl interface for wpa_supplicant daemon
3  * Copyright (c) 2004-2016, Jouni Malinen <j@w1.fi>
4  * Copyright (c) 2004-2016, 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 WPA_SUPPLICANT_HIDL_SUPPLICANT_H
11 #define WPA_SUPPLICANT_HIDL_SUPPLICANT_H
12 
13 #include <android/hardware/wifi/supplicant/1.0/ISupplicantCallback.h>
14 #include <android/hardware/wifi/supplicant/1.0/ISupplicantIface.h>
15 #include <android/hardware/wifi/supplicant/1.0/types.h>
16 #include <android/hardware/wifi/supplicant/1.2/ISupplicant.h>
17 #include <android-base/macros.h>
18 #include <hidl/Status.h>
19 
20 extern "C"
21 {
22 #include "utils/common.h"
23 #include "utils/includes.h"
24 #include "utils/wpa_debug.h"
25 #include "wpa_supplicant_i.h"
26 }
27 
28 namespace android {
29 namespace hardware {
30 namespace wifi {
31 namespace supplicant {
32 namespace V1_2 {
33 namespace implementation {
34 using namespace android::hardware::wifi::supplicant::V1_0;
35 
36 /**
37  * Implementation of the supplicant hidl object. This hidl
38  * object is used core for global control operations on
39  * wpa_supplicant.
40  */
41 class Supplicant : public V1_2::ISupplicant
42 {
43 public:
44 	Supplicant(struct wpa_global* global);
45 	~Supplicant() override = default;
46 	bool isValid();
47 
48 	// Hidl methods exposed.
49 	Return<void> addInterface(
50 	    const IfaceInfo& iface_info, addInterface_cb _hidl_cb) override;
51 	Return<void> removeInterface(
52 	    const IfaceInfo& iface_info, removeInterface_cb _hidl_cb) override;
53 	Return<void> getInterface(
54 	    const IfaceInfo& iface_info, getInterface_cb _hidl_cb) override;
55 	Return<void> listInterfaces(listInterfaces_cb _hidl_cb) override;
56 	Return<void> registerCallback(
57 	    const sp<ISupplicantCallback>& callback,
58 	    registerCallback_cb _hidl_cb) override;
59 	Return<void> setDebugParams(
60 	    ISupplicant::DebugLevel level, bool show_timestamp, bool show_keys,
61 	    setDebugParams_cb _hidl_cb) override;
62 	Return<ISupplicant::DebugLevel> getDebugLevel() override;
63 	Return<bool> isDebugShowTimestampEnabled() override;
64 	Return<bool> isDebugShowKeysEnabled() override;
65 	Return<void> setConcurrencyPriority(
66 	    IfaceType type, setConcurrencyPriority_cb _hidl_cb) override;
67 	Return<void> terminate() override;
68 
69 private:
70 	// Corresponding worker functions for the HIDL methods.
71 	std::pair<SupplicantStatus, sp<ISupplicantIface>> getInterfaceInternal(
72 	    const IfaceInfo& iface_info);
73 	std::pair<SupplicantStatus, sp<ISupplicantIface>> addInterfaceInternal(
74 	    const IfaceInfo& iface_info);
75 	SupplicantStatus removeInterfaceInternal(const IfaceInfo& iface_info);
76 	std::pair<SupplicantStatus, std::vector<ISupplicant::IfaceInfo>>
77 	listInterfacesInternal();
78 	SupplicantStatus registerCallbackInternal(
79 	    const sp<ISupplicantCallback>& callback);
80 	SupplicantStatus setDebugParamsInternal(
81 	    ISupplicant::DebugLevel level, bool show_timestamp, bool show_keys);
82 	SupplicantStatus setConcurrencyPriorityInternal(IfaceType type);
83 
84 	// Raw pointer to the global structure maintained by the core.
85 	struct wpa_global* wpa_global_;
86 	// Driver name to be used for creating interfaces.
87 	static const char kDriverName[];
88 	// wpa_supplicant.conf file location on the device.
89 	static const char kConfigFilePath[];
90 
91 	DISALLOW_COPY_AND_ASSIGN(Supplicant);
92 };
93 
94 }  // namespace implementation
95 }  // namespace V1_2
96 }  // namespace supplicant
97 }  // namespace wifi
98 }  // namespace hardware
99 }  // namespace android
100 
101 #endif  // WPA_SUPPLICANT_HIDL_SUPPLICANT_H
102