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#include "wifi_hal/hal_tool.h"
18
19#include <android-base/logging.h>
20
21namespace android {
22namespace wifi_system {
23namespace {
24
25wifi_error wifi_initialize_stub(wifi_handle* handle) {
26  return WIFI_ERROR_NOT_SUPPORTED;
27}
28
29void wifi_cleanup_stub(wifi_handle handle, wifi_cleaned_up_handler handler) {}
30
31void wifi_event_loop_stub(wifi_handle handle) {}
32
33void wifi_get_error_info_stub(wifi_error err, const char** msg) { *msg = NULL; }
34
35wifi_error wifi_get_supported_feature_set_stub(wifi_interface_handle handle,
36                                               feature_set* set) {
37  return WIFI_ERROR_UNINITIALIZED;
38}
39
40wifi_error wifi_get_concurrency_matrix_stub(wifi_interface_handle handle,
41                                            int max_size, feature_set* matrix,
42                                            int* size) {
43  return WIFI_ERROR_UNINITIALIZED;
44}
45
46wifi_error wifi_set_scanning_mac_oui_stub(wifi_interface_handle handle,
47                                          unsigned char* oui_data) {
48  return WIFI_ERROR_UNINITIALIZED;
49}
50
51/* List of all supported channels, including 5GHz channels */
52wifi_error wifi_get_supported_channels_stub(wifi_handle handle, int* size,
53                                            wifi_channel* list) {
54  return WIFI_ERROR_UNINITIALIZED;
55}
56
57/* Enhanced power reporting */
58wifi_error wifi_is_epr_supported_stub(wifi_handle handle) {
59  return WIFI_ERROR_UNINITIALIZED;
60}
61
62/* multiple interface support */
63wifi_error wifi_get_ifaces_stub(wifi_handle handle, int* num_ifaces,
64                                wifi_interface_handle** ifaces) {
65  return WIFI_ERROR_UNINITIALIZED;
66}
67
68wifi_error wifi_get_iface_name_stub(wifi_interface_handle iface, char* name,
69                                    size_t size) {
70  return WIFI_ERROR_UNINITIALIZED;
71}
72
73wifi_error wifi_set_iface_event_handler_stub(wifi_request_id id,
74                                             wifi_interface_handle iface,
75                                             wifi_event_handler eh) {
76  return WIFI_ERROR_UNINITIALIZED;
77}
78
79wifi_error wifi_reset_iface_event_handler_stub(wifi_request_id id,
80                                               wifi_interface_handle iface) {
81  return WIFI_ERROR_UNINITIALIZED;
82}
83
84wifi_error wifi_start_gscan_stub(wifi_request_id id,
85                                 wifi_interface_handle iface,
86                                 wifi_scan_cmd_params params,
87                                 wifi_scan_result_handler handler) {
88  return WIFI_ERROR_UNINITIALIZED;
89}
90
91wifi_error wifi_stop_gscan_stub(wifi_request_id id,
92                                wifi_interface_handle iface) {
93  return WIFI_ERROR_UNINITIALIZED;
94}
95
96wifi_error wifi_get_cached_gscan_results_stub(wifi_interface_handle iface,
97                                              byte flush, int max,
98                                              wifi_cached_scan_results* results,
99                                              int* num) {
100  return WIFI_ERROR_UNINITIALIZED;
101}
102
103wifi_error wifi_set_bssid_hotlist_stub(wifi_request_id id,
104                                       wifi_interface_handle iface,
105                                       wifi_bssid_hotlist_params params,
106                                       wifi_hotlist_ap_found_handler handler) {
107  return WIFI_ERROR_UNINITIALIZED;
108}
109
110wifi_error wifi_reset_bssid_hotlist_stub(wifi_request_id id,
111                                         wifi_interface_handle iface) {
112  return WIFI_ERROR_UNINITIALIZED;
113}
114
115wifi_error wifi_set_significant_change_handler_stub(
116    wifi_request_id id, wifi_interface_handle iface,
117    wifi_significant_change_params params,
118    wifi_significant_change_handler handler) {
119  return WIFI_ERROR_UNINITIALIZED;
120}
121
122wifi_error wifi_reset_significant_change_handler_stub(
123    wifi_request_id id, wifi_interface_handle iface) {
124  return WIFI_ERROR_UNINITIALIZED;
125}
126
127wifi_error wifi_get_gscan_capabilities_stub(
128    wifi_interface_handle handle, wifi_gscan_capabilities* capabilities) {
129  return WIFI_ERROR_UNINITIALIZED;
130}
131
132wifi_error wifi_set_link_stats_stub(wifi_interface_handle iface,
133                                    wifi_link_layer_params params) {
134  return WIFI_ERROR_UNINITIALIZED;
135}
136
137wifi_error wifi_get_link_stats_stub(wifi_request_id id,
138                                    wifi_interface_handle iface,
139                                    wifi_stats_result_handler handler) {
140  return WIFI_ERROR_UNINITIALIZED;
141}
142
143wifi_error wifi_clear_link_stats_stub(wifi_interface_handle iface,
144                                      u32 stats_clear_req_mask,
145                                      u32* stats_clear_rsp_mask, u8 stop_req,
146                                      u8* stop_rsp) {
147  return WIFI_ERROR_UNINITIALIZED;
148}
149
150wifi_error wifi_get_valid_channels_stub(wifi_interface_handle handle, int band,
151                                        int max_channels,
152                                        wifi_channel* channels,
153                                        int* num_channels) {
154  return WIFI_ERROR_UNINITIALIZED;
155}
156
157/* API to request RTT measurement */
158wifi_error wifi_rtt_range_request_stub(wifi_request_id id,
159                                       wifi_interface_handle iface,
160                                       unsigned num_rtt_config,
161                                       wifi_rtt_config rtt_config[],
162                                       wifi_rtt_event_handler handler) {
163  return WIFI_ERROR_NOT_SUPPORTED;
164}
165
166/* API to cancel RTT measurements */
167wifi_error wifi_rtt_range_cancel_stub(wifi_request_id id,
168                                      wifi_interface_handle iface,
169                                      unsigned num_devices, mac_addr addr[]) {
170  return WIFI_ERROR_NOT_SUPPORTED;
171}
172
173/* API to get RTT capability */
174wifi_error wifi_get_rtt_capabilities_stub(wifi_interface_handle iface,
175                                          wifi_rtt_capabilities* capabilities) {
176  return WIFI_ERROR_NOT_SUPPORTED;
177}
178
179/* API to enable RTT responder role */
180wifi_error wifi_enable_responder_stub(wifi_request_id id,
181                                      wifi_interface_handle iface,
182                                      wifi_channel_info channel_hint,
183                                      unsigned max_duration_seconds,
184                                      wifi_channel_info* channel_used) {
185  return WIFI_ERROR_NOT_SUPPORTED;
186}
187
188/* API to disable RTT responder role */
189wifi_error wifi_disable_responder_stub(wifi_request_id id,
190                                       wifi_interface_handle iface) {
191  return WIFI_ERROR_NOT_SUPPORTED;
192}
193
194/* API to get available channel for RTT responder role */
195wifi_error wifi_rtt_get_available_channel_stub(wifi_interface_handle iface,
196                                               wifi_channel_info* channel) {
197  return WIFI_ERROR_NOT_SUPPORTED;
198}
199
200wifi_error wifi_set_nodfs_flag_stub(wifi_interface_handle iface, u32 nodfs) {
201  return WIFI_ERROR_NOT_SUPPORTED;
202}
203
204wifi_error wifi_start_logging_stub(wifi_interface_handle iface,
205                                   u32 verbose_level, u32 flags,
206                                   u32 max_interval_sec, u32 min_data_size,
207                                   char* buffer_name) {
208  return WIFI_ERROR_NOT_SUPPORTED;
209}
210
211wifi_error wifi_set_epno_list_stub(int id, wifi_interface_info* iface,
212                                   const wifi_epno_params* params,
213                                   wifi_epno_handler handler) {
214  return WIFI_ERROR_NOT_SUPPORTED;
215}
216
217wifi_error wifi_reset_epno_list_stub(int id, wifi_interface_info* iface) {
218  return WIFI_ERROR_NOT_SUPPORTED;
219}
220
221wifi_error wifi_set_country_code_stub(wifi_interface_handle iface,
222                                      const char* code) {
223  return WIFI_ERROR_NOT_SUPPORTED;
224}
225
226wifi_error wifi_get_firmware_memory_dump_stub(
227    wifi_interface_handle iface, wifi_firmware_memory_dump_handler handler) {
228  return WIFI_ERROR_NOT_SUPPORTED;
229}
230
231wifi_error wifi_set_log_handler_stub(wifi_request_id id,
232                                     wifi_interface_handle iface,
233                                     wifi_ring_buffer_data_handler handler) {
234  return WIFI_ERROR_NOT_SUPPORTED;
235}
236
237wifi_error wifi_reset_log_handler_stub(wifi_request_id id,
238                                       wifi_interface_handle iface) {
239  return WIFI_ERROR_NOT_SUPPORTED;
240}
241
242wifi_error wifi_set_alert_handler_stub(wifi_request_id id,
243                                       wifi_interface_handle iface,
244                                       wifi_alert_handler handler) {
245  return WIFI_ERROR_NOT_SUPPORTED;
246}
247
248wifi_error wifi_reset_alert_handler_stub(wifi_request_id id,
249                                         wifi_interface_handle iface) {
250  return WIFI_ERROR_NOT_SUPPORTED;
251}
252
253wifi_error wifi_get_firmware_version_stub(wifi_interface_handle iface,
254                                          char* buffer, int buffer_size) {
255  return WIFI_ERROR_NOT_SUPPORTED;
256}
257
258wifi_error wifi_get_ring_buffers_status_stub(wifi_interface_handle iface,
259                                             u32* num_rings,
260                                             wifi_ring_buffer_status* status) {
261  return WIFI_ERROR_NOT_SUPPORTED;
262}
263
264wifi_error wifi_get_logger_supported_feature_set_stub(
265    wifi_interface_handle iface, unsigned int* support) {
266  return WIFI_ERROR_NOT_SUPPORTED;
267}
268
269wifi_error wifi_get_ring_data_stub(wifi_interface_handle iface,
270                                   char* ring_name) {
271  return WIFI_ERROR_NOT_SUPPORTED;
272}
273
274wifi_error wifi_get_driver_version_stub(wifi_interface_handle iface,
275                                        char* buffer, int buffer_size) {
276  return WIFI_ERROR_NOT_SUPPORTED;
277}
278
279wifi_error wifi_enable_tdls_stub(wifi_interface_handle iface, mac_addr addr,
280                                 wifi_tdls_params* params,
281                                 wifi_tdls_handler handler) {
282  return WIFI_ERROR_NOT_SUPPORTED;
283}
284
285wifi_error wifi_disable_tdls_stub(wifi_interface_handle iface, mac_addr addr) {
286  return WIFI_ERROR_NOT_SUPPORTED;
287}
288
289wifi_error wifi_get_tdls_status_stub(wifi_interface_handle iface, mac_addr addr,
290                                     wifi_tdls_status* status) {
291  return WIFI_ERROR_NOT_SUPPORTED;
292}
293
294wifi_error wifi_get_tdls_capabilities_stub(
295    wifi_interface_handle iface, wifi_tdls_capabilities* capabilities) {
296  return WIFI_ERROR_NOT_SUPPORTED;
297}
298
299wifi_error wifi_start_sending_offloaded_packet_stub(
300    wifi_request_id id, wifi_interface_handle iface, u8* ip_packet,
301    u16 ip_packet_len, u8* src_mac_addr, u8* dst_mac_addr, u32 period_msec) {
302  return WIFI_ERROR_NOT_SUPPORTED;
303}
304
305wifi_error wifi_stop_sending_offloaded_packet_stub(
306    wifi_request_id id, wifi_interface_handle iface) {
307  return WIFI_ERROR_NOT_SUPPORTED;
308}
309
310wifi_error wifi_get_wake_reason_stats_stub(
311    wifi_interface_handle iface,
312    WLAN_DRIVER_WAKE_REASON_CNT* wifi_wake_reason_cnt) {
313  return WIFI_ERROR_NOT_SUPPORTED;
314}
315
316wifi_error wifi_configure_nd_offload_stub(wifi_interface_handle iface,
317                                          u8 enable) {
318  return WIFI_ERROR_NOT_SUPPORTED;
319}
320
321wifi_error wifi_get_driver_memory_dump_stub(
322    wifi_interface_handle iface, wifi_driver_memory_dump_callbacks callbacks) {
323  return WIFI_ERROR_NOT_SUPPORTED;
324}
325
326wifi_error wifi_start_pkt_fate_monitoring_stub(wifi_interface_handle iface) {
327  return WIFI_ERROR_NOT_SUPPORTED;
328}
329
330wifi_error wifi_get_tx_pkt_fates_stub(wifi_interface_handle handle,
331                                      wifi_tx_report* tx_report_bufs,
332                                      size_t n_requested_fates,
333                                      size_t* n_provided_fates) {
334  return WIFI_ERROR_NOT_SUPPORTED;
335}
336
337wifi_error wifi_get_rx_pkt_fates_stub(wifi_interface_handle handle,
338                                      wifi_rx_report* rx_report_bufs,
339                                      size_t n_requested_fates,
340                                      size_t* n_provided_fates) {
341  return WIFI_ERROR_NOT_SUPPORTED;
342}
343wifi_error wifi_nan_enable_request_stub(transaction_id id,
344                                        wifi_interface_handle iface,
345                                        NanEnableRequest* msg) {
346  return WIFI_ERROR_NOT_SUPPORTED;
347}
348
349wifi_error wifi_nan_disable_request_stub(transaction_id id,
350                                         wifi_interface_handle iface) {
351  return WIFI_ERROR_NOT_SUPPORTED;
352}
353
354wifi_error wifi_nan_publish_request_stub(transaction_id id,
355                                         wifi_interface_handle iface,
356                                         NanPublishRequest* msg) {
357  return WIFI_ERROR_NOT_SUPPORTED;
358}
359
360wifi_error wifi_nan_publish_cancel_request_stub(transaction_id id,
361                                                wifi_interface_handle iface,
362                                                NanPublishCancelRequest* msg) {
363  return WIFI_ERROR_NOT_SUPPORTED;
364}
365
366wifi_error wifi_nan_subscribe_request_stub(transaction_id id,
367                                           wifi_interface_handle iface,
368                                           NanSubscribeRequest* msg) {
369  return WIFI_ERROR_NOT_SUPPORTED;
370}
371
372wifi_error wifi_nan_subscribe_cancel_request_stub(
373    transaction_id id, wifi_interface_handle iface,
374    NanSubscribeCancelRequest* msg) {
375  return WIFI_ERROR_NOT_SUPPORTED;
376}
377
378wifi_error wifi_nan_transmit_followup_request_stub(
379    transaction_id id, wifi_interface_handle iface,
380    NanTransmitFollowupRequest* msg) {
381  return WIFI_ERROR_NOT_SUPPORTED;
382}
383
384wifi_error wifi_nan_stats_request_stub(transaction_id id,
385                                       wifi_interface_handle iface,
386                                       NanStatsRequest* msg) {
387  return WIFI_ERROR_NOT_SUPPORTED;
388}
389
390wifi_error wifi_nan_config_request_stub(transaction_id id,
391                                        wifi_interface_handle iface,
392                                        NanConfigRequest* msg) {
393  return WIFI_ERROR_NOT_SUPPORTED;
394}
395
396wifi_error wifi_nan_tca_request_stub(transaction_id id,
397                                     wifi_interface_handle iface,
398                                     NanTCARequest* msg) {
399  return WIFI_ERROR_NOT_SUPPORTED;
400}
401
402wifi_error wifi_nan_beacon_sdf_payload_request_stub(
403    transaction_id id, wifi_interface_handle iface,
404    NanBeaconSdfPayloadRequest* msg) {
405  return WIFI_ERROR_NOT_SUPPORTED;
406}
407
408wifi_error wifi_nan_register_handler_stub(wifi_interface_handle iface,
409                                          NanCallbackHandler handlers) {
410  return WIFI_ERROR_NOT_SUPPORTED;
411}
412
413wifi_error wifi_nan_get_version_stub(wifi_handle handle, NanVersion* version) {
414  return WIFI_ERROR_NOT_SUPPORTED;
415}
416
417wifi_error wifi_nan_get_capabilities_stub(transaction_id id,
418                                          wifi_interface_handle iface) {
419  return WIFI_ERROR_NOT_SUPPORTED;
420}
421
422wifi_error wifi_nan_data_interface_create_stub(transaction_id id,
423                                               wifi_interface_handle iface,
424                                               char* iface_name) {
425  return WIFI_ERROR_NOT_SUPPORTED;
426}
427
428wifi_error wifi_nan_data_interface_delete_stub(transaction_id id,
429                                               wifi_interface_handle iface,
430                                               char* iface_name) {
431  return WIFI_ERROR_NOT_SUPPORTED;
432}
433
434wifi_error wifi_nan_data_request_initiator_stub(
435    transaction_id id, wifi_interface_handle iface,
436    NanDataPathInitiatorRequest* msg) {
437  return WIFI_ERROR_NOT_SUPPORTED;
438}
439
440wifi_error wifi_nan_data_indication_response_stub(
441    transaction_id id, wifi_interface_handle iface,
442    NanDataPathIndicationResponse* msg) {
443  return WIFI_ERROR_NOT_SUPPORTED;
444}
445
446wifi_error wifi_nan_data_end_stub(transaction_id id,
447                                  wifi_interface_handle iface,
448                                  NanDataPathEndRequest* msg) {
449  return WIFI_ERROR_NOT_SUPPORTED;
450}
451
452wifi_error wifi_get_packet_filter_capabilities_stub(
453    wifi_interface_handle handle, u32* version, u32* max_len) {
454  return WIFI_ERROR_NOT_SUPPORTED;
455}
456
457wifi_error wifi_set_packet_filter_stub(wifi_interface_handle handle,
458                                       const u8* program, u32 len) {
459  return WIFI_ERROR_NOT_SUPPORTED;
460}
461
462bool init_wifi_stub_hal_func_table(wifi_hal_fn* hal_fn) {
463  if (hal_fn == NULL) {
464    return false;
465  }
466  hal_fn->wifi_initialize = wifi_initialize_stub;
467  hal_fn->wifi_cleanup = wifi_cleanup_stub;
468  hal_fn->wifi_event_loop = wifi_event_loop_stub;
469  hal_fn->wifi_get_error_info = wifi_get_error_info_stub;
470  hal_fn->wifi_get_supported_feature_set = wifi_get_supported_feature_set_stub;
471  hal_fn->wifi_get_concurrency_matrix = wifi_get_concurrency_matrix_stub;
472  hal_fn->wifi_set_scanning_mac_oui = wifi_set_scanning_mac_oui_stub;
473  hal_fn->wifi_get_supported_channels = wifi_get_supported_channels_stub;
474  hal_fn->wifi_is_epr_supported = wifi_is_epr_supported_stub;
475  hal_fn->wifi_get_ifaces = wifi_get_ifaces_stub;
476  hal_fn->wifi_get_iface_name = wifi_get_iface_name_stub;
477  hal_fn->wifi_reset_iface_event_handler = wifi_reset_iface_event_handler_stub;
478  hal_fn->wifi_start_gscan = wifi_start_gscan_stub;
479  hal_fn->wifi_stop_gscan = wifi_stop_gscan_stub;
480  hal_fn->wifi_get_cached_gscan_results = wifi_get_cached_gscan_results_stub;
481  hal_fn->wifi_set_bssid_hotlist = wifi_set_bssid_hotlist_stub;
482  hal_fn->wifi_reset_bssid_hotlist = wifi_reset_bssid_hotlist_stub;
483  hal_fn->wifi_set_significant_change_handler =
484      wifi_set_significant_change_handler_stub;
485  hal_fn->wifi_reset_significant_change_handler =
486      wifi_reset_significant_change_handler_stub;
487  hal_fn->wifi_get_gscan_capabilities = wifi_get_gscan_capabilities_stub;
488  hal_fn->wifi_set_link_stats = wifi_set_link_stats_stub;
489  hal_fn->wifi_get_link_stats = wifi_get_link_stats_stub;
490  hal_fn->wifi_clear_link_stats = wifi_clear_link_stats_stub;
491  hal_fn->wifi_get_valid_channels = wifi_get_valid_channels_stub;
492  hal_fn->wifi_rtt_range_request = wifi_rtt_range_request_stub;
493  hal_fn->wifi_rtt_range_cancel = wifi_rtt_range_cancel_stub;
494  hal_fn->wifi_get_rtt_capabilities = wifi_get_rtt_capabilities_stub;
495  hal_fn->wifi_start_logging = wifi_start_logging_stub;
496  hal_fn->wifi_set_epno_list = wifi_set_epno_list_stub;
497  hal_fn->wifi_set_country_code = wifi_set_country_code_stub;
498  hal_fn->wifi_enable_tdls = wifi_enable_tdls_stub;
499  hal_fn->wifi_disable_tdls = wifi_disable_tdls_stub;
500  hal_fn->wifi_get_tdls_status = wifi_get_tdls_status_stub;
501  hal_fn->wifi_get_tdls_capabilities = wifi_get_tdls_capabilities_stub;
502  hal_fn->wifi_set_nodfs_flag = wifi_set_nodfs_flag_stub;
503  hal_fn->wifi_get_firmware_memory_dump = wifi_get_firmware_memory_dump_stub;
504  hal_fn->wifi_set_log_handler = wifi_set_log_handler_stub;
505  hal_fn->wifi_reset_log_handler = wifi_reset_log_handler_stub;
506  hal_fn->wifi_set_alert_handler = wifi_set_alert_handler_stub;
507  hal_fn->wifi_reset_alert_handler = wifi_reset_alert_handler_stub;
508  hal_fn->wifi_get_firmware_version = wifi_get_firmware_version_stub;
509  hal_fn->wifi_get_ring_buffers_status = wifi_get_ring_buffers_status_stub;
510  hal_fn->wifi_get_logger_supported_feature_set =
511      wifi_get_logger_supported_feature_set_stub;
512  hal_fn->wifi_get_ring_data = wifi_get_ring_data_stub;
513  hal_fn->wifi_get_driver_version = wifi_get_driver_version_stub;
514  hal_fn->wifi_start_sending_offloaded_packet =
515      wifi_start_sending_offloaded_packet_stub;
516  hal_fn->wifi_stop_sending_offloaded_packet =
517      wifi_stop_sending_offloaded_packet_stub;
518  hal_fn->wifi_get_wake_reason_stats = wifi_get_wake_reason_stats_stub;
519  hal_fn->wifi_configure_nd_offload = wifi_configure_nd_offload_stub;
520  hal_fn->wifi_get_driver_memory_dump = wifi_get_driver_memory_dump_stub;
521  hal_fn->wifi_start_pkt_fate_monitoring = wifi_start_pkt_fate_monitoring_stub;
522  hal_fn->wifi_get_tx_pkt_fates = wifi_get_tx_pkt_fates_stub;
523  hal_fn->wifi_get_rx_pkt_fates = wifi_get_rx_pkt_fates_stub;
524  hal_fn->wifi_nan_enable_request = wifi_nan_enable_request_stub;
525  hal_fn->wifi_nan_disable_request = wifi_nan_disable_request_stub;
526  hal_fn->wifi_nan_publish_request = wifi_nan_publish_request_stub;
527  hal_fn->wifi_nan_publish_cancel_request =
528      wifi_nan_publish_cancel_request_stub;
529  hal_fn->wifi_nan_subscribe_request = wifi_nan_subscribe_request_stub;
530  hal_fn->wifi_nan_subscribe_cancel_request =
531      wifi_nan_subscribe_cancel_request_stub;
532  hal_fn->wifi_nan_transmit_followup_request =
533      wifi_nan_transmit_followup_request_stub;
534  hal_fn->wifi_nan_stats_request = wifi_nan_stats_request_stub;
535  hal_fn->wifi_nan_config_request = wifi_nan_config_request_stub;
536  hal_fn->wifi_nan_tca_request = wifi_nan_tca_request_stub;
537  hal_fn->wifi_nan_beacon_sdf_payload_request =
538      wifi_nan_beacon_sdf_payload_request_stub;
539  hal_fn->wifi_nan_register_handler = wifi_nan_register_handler_stub;
540  hal_fn->wifi_nan_get_version = wifi_nan_get_version_stub;
541  hal_fn->wifi_nan_get_capabilities = wifi_nan_get_capabilities_stub;
542  hal_fn->wifi_nan_data_interface_create = wifi_nan_data_interface_create_stub;
543  hal_fn->wifi_nan_data_interface_delete = wifi_nan_data_interface_delete_stub;
544  hal_fn->wifi_nan_data_request_initiator =
545      wifi_nan_data_request_initiator_stub;
546  hal_fn->wifi_nan_data_indication_response =
547      wifi_nan_data_indication_response_stub;
548  hal_fn->wifi_nan_data_end = wifi_nan_data_end_stub;
549  hal_fn->wifi_get_packet_filter_capabilities =
550      wifi_get_packet_filter_capabilities_stub;
551  hal_fn->wifi_set_packet_filter = wifi_set_packet_filter_stub;
552
553  return true;
554}
555
556}  // namespace
557
558bool HalTool::InitFunctionTable(wifi_hal_fn* hal_fn) {
559  if (!init_wifi_stub_hal_func_table(hal_fn)) {
560    LOG(ERROR) << "Can not initialize the basic function pointer table";
561    return false;
562  }
563
564  if (init_wifi_vendor_hal_func_table(hal_fn) != WIFI_SUCCESS) {
565    LOG(ERROR) << "Can not initialize the vendor function pointer table";
566    return false;
567  }
568
569  return true;
570}
571
572bool HalTool::CanGetValidChannels(wifi_hal_fn* hal_fn) {
573  return hal_fn &&
574         (hal_fn->wifi_get_valid_channels != wifi_get_valid_channels_stub);
575}
576
577}  // namespace wifi_system
578}  // namespace android
579