From ad1367edfa4bc735c46fa8919753cbd05575c4ef Mon Sep 17 00:00:00 2001 From: Christopher Wiley Date: Mon, 20 Jun 2016 17:36:11 -0700 Subject: Move basic HAL init code to libwifi_system While here, fix a bug where the conditional for "do we support getting valid channels" was reversed in the implementation. Bug: 29417819 Test: Compiles, Wifi continues to associate on angler Change-Id: Ife3eee3aa25dfaf62589b395c74c4f8473238758 --- service/jni/com_android_server_wifi_WifiNative.cpp | 48 +++--- service/jni/wifi_hal_stub.h | 181 --------------------- 2 files changed, 21 insertions(+), 208 deletions(-) delete mode 100644 service/jni/wifi_hal_stub.h (limited to 'service/jni') diff --git a/service/jni/com_android_server_wifi_WifiNative.cpp b/service/jni/com_android_server_wifi_WifiNative.cpp index 7037b3dbf..c5a268c45 100644 --- a/service/jni/com_android_server_wifi_WifiNative.cpp +++ b/service/jni/com_android_server_wifi_WifiNative.cpp @@ -38,11 +38,12 @@ #include #include #include +#include #include #include #include "jni_helper.h" -#include "wifi_hal_stub.h" + #define REPLY_BUF_SIZE (4096 + 1) // wpa_supplicant's maximum size + 1 for nul #define EVENT_BUF_SIZE 2048 #define WAKE_REASON_TYPE_MAX 10 @@ -248,35 +249,28 @@ static jboolean android_net_wifi_set_interface_up(JNIEnv* env, jclass cls, jbool static jboolean android_net_wifi_startHal(JNIEnv* env, jclass cls) { JNIHelper helper(env); wifi_handle halHandle = getWifiHandle(helper, cls); - if (halHandle == NULL) { - - if(init_wifi_stub_hal_func_table(&hal_fn) != 0 ) { - ALOGE("Can not initialize the basic function pointer table"); - return false; - } + if (halHandle != NULL) { + return wifi_system::set_wifi_iface_up(true); + } - wifi_error res = init_wifi_vendor_hal_func_table(&hal_fn); - if (res != WIFI_SUCCESS) { - ALOGE("Can not initialize the vendor function pointer table"); - return false; - } + if (!wifi_system::init_wifi_hal_function_table(&hal_fn)) { + return false; + } - if(!wifi_system::set_wifi_iface_up(true)) { - return false; - } + if(!wifi_system::set_wifi_iface_up(true)) { + ALOGE("Failed to set WiFi interface up"); + return false; + } - res = hal_fn.wifi_initialize(&halHandle); - if (res == WIFI_SUCCESS) { - helper.setStaticLongField(cls, WifiHandleVarName, (jlong)halHandle); - ALOGD("Did set static halHandle = %p", halHandle); - } - env->GetJavaVM(&mVM); - mCls = (jclass) env->NewGlobalRef(cls); - ALOGD("halHandle = %p, mVM = %p, mCls = %p", halHandle, mVM, mCls); - return res == WIFI_SUCCESS; - } else { - return wifi_system::set_wifi_iface_up(true); + const bool was_started = hal_fn.wifi_initialize(&halHandle) == WIFI_SUCCESS; + if (was_started) { + helper.setStaticLongField(cls, WifiHandleVarName, (jlong)halHandle); + ALOGD("Did set static halHandle = %p", halHandle); } + env->GetJavaVM(&mVM); + mCls = (jclass) env->NewGlobalRef(cls); + ALOGD("halHandle = %p, mVM = %p, mCls = %p", halHandle, mVM, mCls); + return was_started; } void android_net_wifi_hal_cleaned_up_handler(wifi_handle handle) { @@ -1338,7 +1332,7 @@ static jboolean android_net_wifi_setScanningMacOui(JNIEnv *env, jclass cls, } static jboolean android_net_wifi_is_get_channels_for_band_supported(JNIEnv *env, jclass cls){ - return (hal_fn.wifi_get_valid_channels == wifi_get_valid_channels_stub); + return wifi_system::wifi_hal_can_get_valid_channels(&hal_fn); } static jintArray android_net_wifi_getValidChannels(JNIEnv *env, jclass cls, diff --git a/service/jni/wifi_hal_stub.h b/service/jni/wifi_hal_stub.h deleted file mode 100644 index e853c0ce4..000000000 --- a/service/jni/wifi_hal_stub.h +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __WIFI_HAL_STUB_H__ -#define __WIFI_HAL_STUB_H__ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "hardware_legacy/wifi_hal.h" - -int init_wifi_stub_hal_func_table(wifi_hal_fn *hal_fn); - -/* declare all HAL stub API here*/ -wifi_error wifi_initialize_stub(wifi_handle *handle); -void wifi_cleanup_stub(wifi_handle handle, wifi_cleaned_up_handler handler); -void wifi_event_loop_stub(wifi_handle handle); -void wifi_get_error_info_stub(wifi_error err, const char **msg); -wifi_error wifi_get_supported_feature_set_stub(wifi_interface_handle handle, feature_set *set); -wifi_error wifi_get_concurrency_matrix_stub(wifi_interface_handle handle, int set_size_max, - feature_set set[], int *set_size); -wifi_error wifi_get_ifaces_stub(wifi_handle handle, int *num_ifaces, wifi_interface_handle **ifaces); -wifi_error wifi_get_iface_name_stub(wifi_interface_handle iface, char *name, size_t size); -wifi_error wifi_set_iface_event_handler_stub(wifi_request_id id, wifi_interface_handle iface, - wifi_event_handler eh); -wifi_error wifi_reset_iface_event_handler_stub(wifi_request_id id, wifi_interface_handle iface); -wifi_error wifi_set_nodfs_flag_stub(wifi_interface_handle handle, u32 nodfs); -wifi_error wifi_set_scanning_mac_oui_stub(wifi_interface_handle handle, unsigned char *oui); -wifi_error wifi_get_supported_channels_stub(wifi_handle handle, int *size, wifi_channel *list); -wifi_error wifi_is_epr_supported_stub(wifi_handle handle); -wifi_error wifi_start_gscan_stub(wifi_request_id id, wifi_interface_handle iface, - wifi_scan_cmd_params params, wifi_scan_result_handler handler); -wifi_error wifi_stop_gscan_stub(wifi_request_id id, wifi_interface_handle iface); -wifi_error wifi_get_cached_gscan_results_stub(wifi_interface_handle iface, byte flush, - int max, wifi_cached_scan_results *results, int *num); -wifi_error wifi_set_bssid_hotlist_stub(wifi_request_id id, wifi_interface_handle iface, - wifi_bssid_hotlist_params params, wifi_hotlist_ap_found_handler handler); -wifi_error wifi_reset_bssid_hotlist_stub(wifi_request_id id, wifi_interface_handle iface); -wifi_error wifi_set_significant_change_handler_stub(wifi_request_id id, wifi_interface_handle iface, - wifi_significant_change_params params, wifi_significant_change_handler handler); -wifi_error wifi_reset_significant_change_handler_stub(wifi_request_id id, - wifi_interface_handle iface); -wifi_error wifi_get_gscan_capabilities_stub(wifi_interface_handle handle, - wifi_gscan_capabilities *capabilities); -wifi_error wifi_set_link_stats_stub(wifi_interface_handle iface, wifi_link_layer_params params); -wifi_error wifi_get_link_stats_stub(wifi_request_id id, - wifi_interface_handle iface, wifi_stats_result_handler handler); -wifi_error wifi_clear_link_stats_stub(wifi_interface_handle iface, - u32 stats_clear_req_mask, u32 *stats_clear_rsp_mask, u8 stop_req, u8 *stop_rsp); -wifi_error wifi_get_valid_channels_stub(wifi_interface_handle handle, - int band, int max_channels, wifi_channel *channels, int *num_channels); -wifi_error wifi_rtt_range_request_stub(wifi_request_id id, wifi_interface_handle iface, - unsigned num_rtt_config, wifi_rtt_config rtt_config[], wifi_rtt_event_handler handler); -wifi_error wifi_rtt_range_cancel_stub(wifi_request_id id, wifi_interface_handle iface, - unsigned num_devices, mac_addr addr[]); -wifi_error wifi_get_rtt_capabilities_stub(wifi_interface_handle iface, - wifi_rtt_capabilities *capabilities); -wifi_error wifi_rtt_get_available_channel_stub(wifi_interface_handle iface, - wifi_channel_info* channel); -wifi_error wifi_enable_responder_stub(wifi_request_id id, wifi_interface_handle iface, - wifi_channel_info channel_hint, unsigned max_duration_seconds, - wifi_channel_info* channel_used); -wifi_error wifi_disable_responder_stub(wifi_request_id id, wifi_interface_handle iface); - -wifi_error wifi_set_nodfs_flag_stub(wifi_interface_handle iface, u32 nodfs); -wifi_error wifi_start_logging_stub(wifi_interface_handle iface, u32 verbose_level, u32 flags, - u32 max_interval_sec, u32 min_data_size, char *buffer_name); -wifi_error wifi_set_epno_list_stub(wifi_request_id id, wifi_interface_info *iface, - const wifi_epno_params *params, wifi_epno_handler handler); -wifi_error wifi_reset_epno_list_stub(wifi_request_id id, wifi_interface_info *iface); -wifi_error wifi_set_country_code_stub(wifi_interface_handle iface, const char *code); -wifi_error wifi_get_firmware_memory_dump_stub( wifi_interface_handle iface, - wifi_firmware_memory_dump_handler handler); -wifi_error wifi_set_log_handler_stub(wifi_request_id id, wifi_interface_handle iface, - wifi_ring_buffer_data_handler handler); -wifi_error wifi_reset_log_handler_stub(wifi_request_id id, wifi_interface_handle iface); -wifi_error wifi_set_alert_handler_stub(wifi_request_id id, wifi_interface_handle iface, - wifi_alert_handler handler); -wifi_error wifi_reset_alert_handler_stub(wifi_request_id id, wifi_interface_handle iface); -wifi_error wifi_get_firmware_version_stub(wifi_interface_handle iface, char *buffer, - int buffer_size); -wifi_error wifi_get_ring_buffers_status_stub(wifi_interface_handle iface, - u32 *num_rings, wifi_ring_buffer_status *status); -wifi_error wifi_get_logger_supported_feature_set_stub(wifi_interface_handle iface, - unsigned int *support); -wifi_error wifi_get_ring_data_stub(wifi_interface_handle iface, char *ring_name); -wifi_error wifi_enable_tdls_stub(wifi_interface_handle iface, mac_addr addr, - wifi_tdls_params *params, wifi_tdls_handler handler); -wifi_error wifi_disable_tdls_stub(wifi_interface_handle iface, mac_addr addr); -wifi_error wifi_get_tdls_status_stub(wifi_interface_handle iface, mac_addr addr, - wifi_tdls_status *status); -wifi_error wifi_get_tdls_capabilities_stub(wifi_interface_handle iface, - wifi_tdls_capabilities *capabilities); -wifi_error wifi_get_driver_version_stub(wifi_interface_handle iface, char *buffer, - int buffer_size); - wifi_error wifi_set_country_code_stub(wifi_interface_handle iface, const char *code); -wifi_error wifi_set_bssid_blacklist_stub(wifi_request_id id, wifi_interface_handle iface, - wifi_bssid_params params); -wifi_error wifi_start_sending_offloaded_packet_stub(wifi_request_id id, - wifi_interface_handle iface, u8 *ip_packet, u16 ip_packet_len, - u8 *src_mac_addr, u8 *dst_mac_addr, u32 period_msec); -wifi_error wifi_stop_sending_offloaded_packet_stub(wifi_request_id id, wifi_interface_handle iface); -wifi_error wifi_get_wake_reason_stats_stub(wifi_interface_handle iface, - WLAN_DRIVER_WAKE_REASON_CNT *wifi_wake_reason_cnt); -wifi_error wifi_configure_nd_offload_stub(wifi_interface_handle iface, u8 enable); -wifi_error wifi_nan_enable_request_stub(transaction_id id, - wifi_interface_handle iface, - NanEnableRequest* msg); -wifi_error wifi_nan_disable_request_stub(transaction_id id, - wifi_interface_handle iface); -wifi_error wifi_nan_publish_request_stub(transaction_id id, - wifi_interface_handle iface, - NanPublishRequest* msg); -wifi_error wifi_nan_publish_cancel_request_stub(transaction_id id, - wifi_interface_handle iface, - NanPublishCancelRequest* msg); -wifi_error wifi_nan_subscribe_request_stub(transaction_id id, - wifi_interface_handle iface, - NanSubscribeRequest* msg); -wifi_error wifi_nan_subscribe_cancel_request_stub(transaction_id id, - wifi_interface_handle iface, - NanSubscribeCancelRequest* msg); -wifi_error wifi_nan_transmit_followup_request_stub(transaction_id id, - wifi_interface_handle iface, - NanTransmitFollowupRequest* msg); -wifi_error wifi_nan_stats_request_stub(transaction_id id, - wifi_interface_handle iface, - NanStatsRequest* msg); -wifi_error wifi_nan_config_request_stub(transaction_id id, - wifi_interface_handle iface, - NanConfigRequest* msg); -wifi_error wifi_nan_tca_request_stub(transaction_id id, - wifi_interface_handle iface, - NanTCARequest* msg); -wifi_error wifi_nan_beacon_sdf_payload_request_stub(transaction_id id, - wifi_interface_handle iface, - NanBeaconSdfPayloadRequest* msg); -wifi_error wifi_nan_register_handler_stub(wifi_interface_handle iface, - NanCallbackHandler handlers); -wifi_error wifi_nan_get_version_stub(wifi_handle handle, - NanVersion* version); -wifi_error wifi_nan_get_capabilities_stub(transaction_id id, - wifi_interface_handle iface); -wifi_error wifi_nan_data_interface_create_stub(transaction_id id, - wifi_interface_handle iface, - char *iface_name); -wifi_error wifi_nan_data_interface_delete_stub(transaction_id id, - wifi_interface_handle iface, - char *iface_name); -wifi_error wifi_nan_data_request_initiator_stub(transaction_id id, - wifi_interface_handle iface, - NanDataPathInitiatorRequest *msg); -wifi_error wifi_nan_data_indication_response_stub( - transaction_id id, wifi_interface_handle iface, - NanDataPathIndicationResponse *msg); -wifi_error wifi_nan_data_end_stub(transaction_id id, wifi_interface_handle iface, - NanDataPathEndRequest *msg); -wifi_error wifi_get_packet_filter_capabilities_stub(wifi_interface_handle handle, - u32 *version, u32 *max_len); -wifi_error wifi_set_packet_filter_stub(wifi_interface_handle handle, - const u8 *program, u32 len); - -#ifdef __cplusplus -} -#endif -#endif //__WIFI_HAL_STUB_H__ -- cgit v1.2.3