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 void wifi_cleanup_stub(wifi_handle handle, wifi_cleaned_up_handler handler) {}
     30 
     31 void wifi_event_loop_stub(wifi_handle handle) {}
     32 
     33 void wifi_get_error_info_stub(wifi_error err, const char** msg) { *msg = NULL; }
     34 
     35 wifi_error wifi_get_supported_feature_set_stub(wifi_interface_handle handle,
     36                                                feature_set* set) {
     37   return WIFI_ERROR_UNINITIALIZED;
     38 }
     39 
     40 wifi_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 
     46 wifi_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 */
     52 wifi_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 */
     58 wifi_error wifi_is_epr_supported_stub(wifi_handle handle) {
     59   return WIFI_ERROR_UNINITIALIZED;
     60 }
     61 
     62 /* multiple interface support */
     63 wifi_error wifi_get_ifaces_stub(wifi_handle handle, int* num_ifaces,
     64                                 wifi_interface_handle** ifaces) {
     65   return WIFI_ERROR_UNINITIALIZED;
     66 }
     67 
     68 wifi_error wifi_get_iface_name_stub(wifi_interface_handle iface, char* name,
     69                                     size_t size) {
     70   return WIFI_ERROR_UNINITIALIZED;
     71 }
     72 
     73 wifi_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 
     79 wifi_error wifi_reset_iface_event_handler_stub(wifi_request_id id,
     80                                                wifi_interface_handle iface) {
     81   return WIFI_ERROR_UNINITIALIZED;
     82 }
     83 
     84 wifi_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 
     91 wifi_error wifi_stop_gscan_stub(wifi_request_id id,
     92                                 wifi_interface_handle iface) {
     93   return WIFI_ERROR_UNINITIALIZED;
     94 }
     95 
     96 wifi_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 
    103 wifi_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 
    110 wifi_error wifi_reset_bssid_hotlist_stub(wifi_request_id id,
    111                                          wifi_interface_handle iface) {
    112   return WIFI_ERROR_UNINITIALIZED;
    113 }
    114 
    115 wifi_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 
    122 wifi_error wifi_reset_significant_change_handler_stub(
    123     wifi_request_id id, wifi_interface_handle iface) {
    124   return WIFI_ERROR_UNINITIALIZED;
    125 }
    126 
    127 wifi_error wifi_get_gscan_capabilities_stub(
    128     wifi_interface_handle handle, wifi_gscan_capabilities* capabilities) {
    129   return WIFI_ERROR_UNINITIALIZED;
    130 }
    131 
    132 wifi_error wifi_set_link_stats_stub(wifi_interface_handle iface,
    133                                     wifi_link_layer_params params) {
    134   return WIFI_ERROR_UNINITIALIZED;
    135 }
    136 
    137 wifi_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 
    143 wifi_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 
    150 wifi_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 */
    158 wifi_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 */
    167 wifi_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 */
    174 wifi_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 */
    180 wifi_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 */
    189 wifi_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 */
    195 wifi_error wifi_rtt_get_available_channel_stub(wifi_interface_handle iface,
    196                                                wifi_channel_info* channel) {
    197   return WIFI_ERROR_NOT_SUPPORTED;
    198 }
    199 
    200 wifi_error wifi_set_nodfs_flag_stub(wifi_interface_handle iface, u32 nodfs) {
    201   return WIFI_ERROR_NOT_SUPPORTED;
    202 }
    203 
    204 wifi_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 
    211 wifi_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 
    217 wifi_error wifi_reset_epno_list_stub(int id, wifi_interface_info* iface) {
    218   return WIFI_ERROR_NOT_SUPPORTED;
    219 }
    220 
    221 wifi_error wifi_set_country_code_stub(wifi_interface_handle iface,
    222                                       const char* code) {
    223   return WIFI_ERROR_NOT_SUPPORTED;
    224 }
    225 
    226 wifi_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 
    231 wifi_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 
    237 wifi_error wifi_reset_log_handler_stub(wifi_request_id id,
    238                                        wifi_interface_handle iface) {
    239   return WIFI_ERROR_NOT_SUPPORTED;
    240 }
    241 
    242 wifi_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 
    248 wifi_error wifi_reset_alert_handler_stub(wifi_request_id id,
    249                                          wifi_interface_handle iface) {
    250   return WIFI_ERROR_NOT_SUPPORTED;
    251 }
    252 
    253 wifi_error wifi_get_firmware_version_stub(wifi_interface_handle iface,
    254                                           char* buffer, int buffer_size) {
    255   return WIFI_ERROR_NOT_SUPPORTED;
    256 }
    257 
    258 wifi_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 
    264 wifi_error wifi_get_logger_supported_feature_set_stub(
    265     wifi_interface_handle iface, unsigned int* support) {
    266   return WIFI_ERROR_NOT_SUPPORTED;
    267 }
    268 
    269 wifi_error wifi_get_ring_data_stub(wifi_interface_handle iface,
    270                                    char* ring_name) {
    271   return WIFI_ERROR_NOT_SUPPORTED;
    272 }
    273 
    274 wifi_error wifi_get_driver_version_stub(wifi_interface_handle iface,
    275                                         char* buffer, int buffer_size) {
    276   return WIFI_ERROR_NOT_SUPPORTED;
    277 }
    278 
    279 wifi_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 
    285 wifi_error wifi_disable_tdls_stub(wifi_interface_handle iface, mac_addr addr) {
    286   return WIFI_ERROR_NOT_SUPPORTED;
    287 }
    288 
    289 wifi_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 
    294 wifi_error wifi_get_tdls_capabilities_stub(
    295     wifi_interface_handle iface, wifi_tdls_capabilities* capabilities) {
    296   return WIFI_ERROR_NOT_SUPPORTED;
    297 }
    298 
    299 wifi_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 
    305 wifi_error wifi_stop_sending_offloaded_packet_stub(
    306     wifi_request_id id, wifi_interface_handle iface) {
    307   return WIFI_ERROR_NOT_SUPPORTED;
    308 }
    309 
    310 wifi_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 
    316 wifi_error wifi_configure_nd_offload_stub(wifi_interface_handle iface,
    317                                           u8 enable) {
    318   return WIFI_ERROR_NOT_SUPPORTED;
    319 }
    320 
    321 wifi_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 
    326 wifi_error wifi_start_pkt_fate_monitoring_stub(wifi_interface_handle iface) {
    327   return WIFI_ERROR_NOT_SUPPORTED;
    328 }
    329 
    330 wifi_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 
    337 wifi_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 }
    343 wifi_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 
    349 wifi_error wifi_nan_disable_request_stub(transaction_id id,
    350                                          wifi_interface_handle iface) {
    351   return WIFI_ERROR_NOT_SUPPORTED;
    352 }
    353 
    354 wifi_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 
    360 wifi_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 
    366 wifi_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 
    372 wifi_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 
    378 wifi_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 
    384 wifi_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 
    390 wifi_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 
    396 wifi_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 
    402 wifi_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 
    408 wifi_error wifi_nan_register_handler_stub(wifi_interface_handle iface,
    409                                           NanCallbackHandler handlers) {
    410   return WIFI_ERROR_NOT_SUPPORTED;
    411 }
    412 
    413 wifi_error wifi_nan_get_version_stub(wifi_handle handle, NanVersion* version) {
    414   return WIFI_ERROR_NOT_SUPPORTED;
    415 }
    416 
    417 wifi_error wifi_nan_get_capabilities_stub(transaction_id id,
    418                                           wifi_interface_handle iface) {
    419   return WIFI_ERROR_NOT_SUPPORTED;
    420 }
    421 
    422 wifi_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 
    428 wifi_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 
    434 wifi_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 
    440 wifi_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 
    446 wifi_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 
    452 wifi_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 
    457 wifi_error wifi_set_packet_filter_stub(wifi_interface_handle handle,
    458                                        const u8* program, u32 len) {
    459   return WIFI_ERROR_NOT_SUPPORTED;
    460 }
    461 
    462 bool 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 
    558 bool 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 
    572 bool 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