summaryrefslogtreecommitdiffstats
path: root/service/jni
diff options
context:
space:
mode:
authorChristopher Wiley <wiley@google.com>2016-06-20 17:36:11 -0700
committerChristopher Wiley <wiley@google.com>2016-06-21 11:32:21 -0700
commitad1367edfa4bc735c46fa8919753cbd05575c4ef (patch)
tree047ee51c208dee291b514243424de77079118d37 /service/jni
parenteb2afa500742cabd033d0a2f8dd145809ee11ad9 (diff)
downloadandroid_frameworks_opt_net_wifi-ad1367edfa4bc735c46fa8919753cbd05575c4ef.tar.gz
android_frameworks_opt_net_wifi-ad1367edfa4bc735c46fa8919753cbd05575c4ef.tar.bz2
android_frameworks_opt_net_wifi-ad1367edfa4bc735c46fa8919753cbd05575c4ef.zip
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
Diffstat (limited to 'service/jni')
-rw-r--r--service/jni/com_android_server_wifi_WifiNative.cpp48
-rw-r--r--service/jni/wifi_hal_stub.h181
2 files changed, 21 insertions, 208 deletions
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 <nativehelper/jni.h>
#include <utils/String16.h>
#include <utils/misc.h>
+#include <wifi_system/hal.h>
#include <wifi_system/interface_utils.h>
#include <wifi_system/wifi.h>
#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__