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