diff options
Diffstat (limited to 'wifi/1.2/default/wifi_nan_iface.h')
-rw-r--r-- | wifi/1.2/default/wifi_nan_iface.h | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/wifi/1.2/default/wifi_nan_iface.h b/wifi/1.2/default/wifi_nan_iface.h new file mode 100644 index 00000000..34552eac --- /dev/null +++ b/wifi/1.2/default/wifi_nan_iface.h | |||
@@ -0,0 +1,141 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2016 The Android Open Source Project | ||
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 | #ifndef WIFI_NAN_IFACE_H_ | ||
18 | #define WIFI_NAN_IFACE_H_ | ||
19 | |||
20 | #include <android-base/macros.h> | ||
21 | #include <android/hardware/wifi/1.0/IWifiNanIface.h> | ||
22 | #include <android/hardware/wifi/1.0/IWifiNanIfaceEventCallback.h> | ||
23 | |||
24 | #include "hidl_callback_util.h" | ||
25 | #include "wifi_legacy_hal.h" | ||
26 | |||
27 | namespace android { | ||
28 | namespace hardware { | ||
29 | namespace wifi { | ||
30 | namespace V1_2 { | ||
31 | namespace implementation { | ||
32 | using namespace android::hardware::wifi::V1_0; | ||
33 | |||
34 | /** | ||
35 | * HIDL interface object used to control a NAN Iface instance. | ||
36 | */ | ||
37 | class WifiNanIface : public V1_0::IWifiNanIface { | ||
38 | public: | ||
39 | WifiNanIface(const std::string& ifname, | ||
40 | const std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal); | ||
41 | // Refer to |WifiChip::invalidate()|. | ||
42 | void invalidate(); | ||
43 | bool isValid(); | ||
44 | |||
45 | // HIDL methods exposed. | ||
46 | Return<void> getName(getName_cb hidl_status_cb) override; | ||
47 | Return<void> getType(getType_cb hidl_status_cb) override; | ||
48 | Return<void> registerEventCallback( | ||
49 | const sp<IWifiNanIfaceEventCallback>& callback, | ||
50 | registerEventCallback_cb hidl_status_cb) override; | ||
51 | Return<void> getCapabilitiesRequest(uint16_t cmd_id, | ||
52 | getCapabilitiesRequest_cb hidl_status_cb) override; | ||
53 | Return<void> enableRequest(uint16_t cmd_id, | ||
54 | const NanEnableRequest& msg, | ||
55 | enableRequest_cb hidl_status_cb) override; | ||
56 | Return<void> configRequest(uint16_t cmd_id, | ||
57 | const NanConfigRequest& msg, | ||
58 | configRequest_cb hidl_status_cb) override; | ||
59 | Return<void> disableRequest(uint16_t cmd_id, | ||
60 | disableRequest_cb hidl_status_cb) override; | ||
61 | Return<void> startPublishRequest(uint16_t cmd_id, | ||
62 | const NanPublishRequest& msg, | ||
63 | startPublishRequest_cb hidl_status_cb) override; | ||
64 | Return<void> stopPublishRequest(uint16_t cmd_id, | ||
65 | uint8_t sessionId, | ||
66 | stopPublishRequest_cb hidl_status_cb) override; | ||
67 | Return<void> startSubscribeRequest(uint16_t cmd_id, | ||
68 | const NanSubscribeRequest& msg, | ||
69 | startSubscribeRequest_cb hidl_status_cb) override; | ||
70 | Return<void> stopSubscribeRequest(uint16_t cmd_id, | ||
71 | uint8_t sessionId, | ||
72 | stopSubscribeRequest_cb hidl_status_cb) override; | ||
73 | Return<void> transmitFollowupRequest(uint16_t cmd_id, | ||
74 | const NanTransmitFollowupRequest& msg, | ||
75 | transmitFollowupRequest_cb hidl_status_cb) override; | ||
76 | Return<void> createDataInterfaceRequest(uint16_t cmd_id, | ||
77 | const hidl_string& iface_name, | ||
78 | createDataInterfaceRequest_cb hidl_status_cb) override; | ||
79 | Return<void> deleteDataInterfaceRequest(uint16_t cmd_id, | ||
80 | const hidl_string& iface_name, | ||
81 | deleteDataInterfaceRequest_cb hidl_status_cb) override; | ||
82 | Return<void> initiateDataPathRequest(uint16_t cmd_id, | ||
83 | const NanInitiateDataPathRequest& msg, | ||
84 | initiateDataPathRequest_cb hidl_status_cb) override; | ||
85 | Return<void> respondToDataPathIndicationRequest( | ||
86 | uint16_t cmd_id, | ||
87 | const NanRespondToDataPathIndicationRequest& msg, | ||
88 | respondToDataPathIndicationRequest_cb hidl_status_cb) override; | ||
89 | Return<void> terminateDataPathRequest(uint16_t cmd_id, | ||
90 | uint32_t ndpInstanceId, | ||
91 | terminateDataPathRequest_cb hidl_status_cb) override; | ||
92 | |||
93 | private: | ||
94 | // Corresponding worker functions for the HIDL methods. | ||
95 | std::pair<WifiStatus, std::string> getNameInternal(); | ||
96 | std::pair<WifiStatus, IfaceType> getTypeInternal(); | ||
97 | WifiStatus registerEventCallbackInternal( | ||
98 | const sp<IWifiNanIfaceEventCallback>& callback); | ||
99 | WifiStatus getCapabilitiesRequestInternal(uint16_t cmd_id); | ||
100 | WifiStatus enableRequestInternal(uint16_t cmd_id, | ||
101 | const NanEnableRequest& msg); | ||
102 | WifiStatus configRequestInternal(uint16_t cmd_id, | ||
103 | const NanConfigRequest& msg); | ||
104 | WifiStatus disableRequestInternal(uint16_t cmd_id); | ||
105 | WifiStatus startPublishRequestInternal(uint16_t cmd_id, | ||
106 | const NanPublishRequest& msg); | ||
107 | WifiStatus stopPublishRequestInternal(uint16_t cmd_id, uint8_t sessionId); | ||
108 | WifiStatus startSubscribeRequestInternal(uint16_t cmd_id, | ||
109 | const NanSubscribeRequest& msg); | ||
110 | WifiStatus stopSubscribeRequestInternal(uint16_t cmd_id, uint8_t sessionId); | ||
111 | WifiStatus transmitFollowupRequestInternal( | ||
112 | uint16_t cmd_id, const NanTransmitFollowupRequest& msg); | ||
113 | WifiStatus createDataInterfaceRequestInternal(uint16_t cmd_id, | ||
114 | const std::string& iface_name); | ||
115 | WifiStatus deleteDataInterfaceRequestInternal(uint16_t cmd_id, | ||
116 | const std::string& iface_name); | ||
117 | WifiStatus initiateDataPathRequestInternal( | ||
118 | uint16_t cmd_id, const NanInitiateDataPathRequest& msg); | ||
119 | WifiStatus respondToDataPathIndicationRequestInternal( | ||
120 | uint16_t cmd_id, const NanRespondToDataPathIndicationRequest& msg); | ||
121 | WifiStatus terminateDataPathRequestInternal( | ||
122 | uint16_t cmd_id, uint32_t ndpInstanceId); | ||
123 | |||
124 | std::set<sp<IWifiNanIfaceEventCallback>> getEventCallbacks(); | ||
125 | |||
126 | std::string ifname_; | ||
127 | std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_; | ||
128 | bool is_valid_; | ||
129 | hidl_callback_util::HidlCallbackHandler<IWifiNanIfaceEventCallback> | ||
130 | event_cb_handler_; | ||
131 | |||
132 | DISALLOW_COPY_AND_ASSIGN(WifiNanIface); | ||
133 | }; | ||
134 | |||
135 | } // namespace implementation | ||
136 | } // namespace V1_2 | ||
137 | } // namespace wifi | ||
138 | } // namespace hardware | ||
139 | } // namespace android | ||
140 | |||
141 | #endif // WIFI_NAN_IFACE_H_ | ||