aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Konotopov <ykonotopov@gnome.org>2017-12-14 20:45:08 +0000
committerMoyster <oysterized@gmail.com>2018-01-24 14:26:55 +0100
commite0ad22960f6c51ea5fd91b2b95cacacfda20961c (patch)
tree1f5068ee51393cbaa6f794f47bb9868d796a0ac4
parent816121673881080cd9eddac67c254c9794224b56 (diff)
wifi_hal: fixed scan
-rw-r--r--mtk/wifi_hal/common.h138
-rw-r--r--mtk/wifi_hal/gscan.cpp135
-rw-r--r--mtk/wifi_hal/wifi_hal.cpp8
3 files changed, 142 insertions, 139 deletions
diff --git a/mtk/wifi_hal/common.h b/mtk/wifi_hal/common.h
index 81ae161..150eaee 100644
--- a/mtk/wifi_hal/common.h
+++ b/mtk/wifi_hal/common.h
@@ -69,6 +69,144 @@ typedef enum {
} ANDROID_VENDOR_SUB_COMMAND;
typedef enum {
+ GSCAN_SUBCMD_GET_CAPABILITIES = ANDROID_NL80211_SUBCMD_GSCAN_RANGE_START,
+
+ GSCAN_SUBCMD_SET_CONFIG, /* 0x1001 */
+ GSCAN_SUBCMD_SET_SCAN_CONFIG, /* 0x1002 */
+ GSCAN_SUBCMD_ENABLE_GSCAN, /* 0x1003 */
+ GSCAN_SUBCMD_GET_SCAN_RESULTS, /* 0x1004 */
+ GSCAN_SUBCMD_SCAN_RESULTS, /* 0x1005 */
+
+ GSCAN_SUBCMD_SET_HOTLIST, /* 0x1006 */
+
+ GSCAN_SUBCMD_SET_SIGNIFICANT_CHANGE_CONFIG, /* 0x1007 */
+ GSCAN_SUBCMD_ENABLE_FULL_SCAN_RESULTS, /* 0x1008 */
+ GSCAN_SUBCMD_GET_CHANNEL_LIST, /* 0x1009 */
+
+ GSCAN_SUBCMD_SET_EPNO_SSID = 0x100F, /* 0x100F */
+
+ GSCAN_SUBCMD_SET_SSID_WHITE_LIST, /* 0x1010 */
+ GSCAN_SUBCMD_SET_ROAM_PARAMS, /* 0x1011 */
+ GSCAN_SUBCMD_ENABLE_LAZY_ROAM, /* 0x1012 */
+ GSCAN_SUBCMD_SET_BSSID_PREF, /* 0x1013 */
+ GSCAN_SUBCMD_SET_BSSID_BLACKLIST, /* 0x1014 */
+
+ GSCAN_SUBCMD_ANQPO_CONFIG, /* 0x1015 */
+ /* Add more sub commands here */
+
+} GSCAN_SUB_COMMAND;
+
+typedef enum {
+ GSCAN_ATTRIBUTE_CAPABILITIES = 1,
+
+ GSCAN_ATTRIBUTE_NUM_BUCKETS = 10,
+ GSCAN_ATTRIBUTE_BASE_PERIOD,
+ GSCAN_ATTRIBUTE_BUCKETS_BAND,
+ GSCAN_ATTRIBUTE_BUCKET_ID,
+ GSCAN_ATTRIBUTE_BUCKET_PERIOD,
+ GSCAN_ATTRIBUTE_BUCKET_NUM_CHANNELS,
+ GSCAN_ATTRIBUTE_BUCKET_CHANNELS,
+ GSCAN_ATTRIBUTE_NUM_AP_PER_SCAN,
+ GSCAN_ATTRIBUTE_REPORT_THRESHOLD,
+ GSCAN_ATTRIBUTE_NUM_SCANS_TO_CACHE,
+
+ GSCAN_ATTRIBUTE_ENABLE_FEATURE = 20,
+ GSCAN_ATTRIBUTE_SCAN_RESULTS_COMPLETE, /* indicates no more results */
+ GSCAN_ATTRIBUTE_FLUSH_FEATURE, /* Flush all the configs */
+ GSCAN_ENABLE_FULL_SCAN_RESULTS,
+ GSCAN_ATTRIBUTE_REPORT_EVENTS,
+ /* Adaptive scan attributes */
+ GSCAN_ATTRIBUTE_BUCKET_STEP_COUNT,
+ GSCAN_ATTRIBUTE_BUCKET_MAX_PERIOD,
+
+ GSCAN_ATTRIBUTE_NUM_OF_RESULTS = 30,
+ GSCAN_ATTRIBUTE_FLUSH_RESULTS,
+ GSCAN_ATTRIBUTE_SCAN_RESULTS, /* flat array of wifi_scan_result */
+ GSCAN_ATTRIBUTE_SCAN_ID, /* indicates scan number */
+ GSCAN_ATTRIBUTE_SCAN_FLAGS, /* indicates if scan was aborted */
+ GSCAN_ATTRIBUTE_AP_FLAGS, /* flags on significant change event */
+ GSCAN_ATTRIBUTE_NUM_CHANNELS,
+ GSCAN_ATTRIBUTE_CHANNEL_LIST,
+ GSCAN_ATTRIBUTE_CH_BUCKET_BITMASK,
+
+ GSCAN_ATTRIBUTE_SSID = 40,
+ GSCAN_ATTRIBUTE_BSSID,
+ GSCAN_ATTRIBUTE_CHANNEL,
+ GSCAN_ATTRIBUTE_RSSI,
+ GSCAN_ATTRIBUTE_TIMESTAMP,
+ GSCAN_ATTRIBUTE_RTT,
+ GSCAN_ATTRIBUTE_RTTSD,
+
+ GSCAN_ATTRIBUTE_HOTLIST_BSSIDS = 50,
+ GSCAN_ATTRIBUTE_RSSI_LOW,
+ GSCAN_ATTRIBUTE_RSSI_HIGH,
+ GSCAN_ATTRIBUTE_HOTLIST_ELEM,
+ GSCAN_ATTRIBUTE_HOTLIST_FLUSH,
+
+ GSCAN_ATTRIBUTE_RSSI_SAMPLE_SIZE = 60,
+ GSCAN_ATTRIBUTE_LOST_AP_SAMPLE_SIZE,
+ GSCAN_ATTRIBUTE_MIN_BREACHING,
+ GSCAN_ATTRIBUTE_NUM_AP, /* TBD */
+ GSCAN_ATTRIBUTE_SIGNIFICANT_CHANGE_BSSIDS,
+ GSCAN_ATTRIBUTE_SIGNIFICANT_CHANGE_FLUSH,
+
+ /* EPNO */
+ GSCAN_ATTRIBUTE_EPNO_SSID_LIST = 70,
+ GSCAN_ATTRIBUTE_EPNO_SSID,
+ GSCAN_ATTRIBUTE_EPNO_SSID_LEN,
+ GSCAN_ATTRIBUTE_EPNO_RSSI,
+ GSCAN_ATTRIBUTE_EPNO_FLAGS,
+ GSCAN_ATTRIBUTE_EPNO_AUTH,
+ GSCAN_ATTRIBUTE_EPNO_SSID_NUM,
+ GSCAN_ATTRIBUTE_EPNO_FLUSH,
+
+ GSCAN_ATTRIBUTE_WHITELIST_SSID = 80,
+ GSCAN_ATTRIBUTE_NUM_WL_SSID,
+ GSCAN_ATTRIBUTE_WL_SSID_LEN,
+ GSCAN_ATTRIBUTE_WL_SSID_FLUSH,
+ GSCAN_ATTRIBUTE_WHITELIST_SSID_ELEM,
+ GSCAN_ATTRIBUTE_NUM_BSSID,
+ GSCAN_ATTRIBUTE_BSSID_PREF_LIST,
+ GSCAN_ATTRIBUTE_BSSID_PREF_FLUSH,
+ GSCAN_ATTRIBUTE_BSSID_PREF,
+ GSCAN_ATTRIBUTE_RSSI_MODIFIER,
+
+ GSCAN_ATTRIBUTE_A_BAND_BOOST_THRESHOLD = 90,
+ GSCAN_ATTRIBUTE_A_BAND_PENALTY_THRESHOLD,
+ GSCAN_ATTRIBUTE_A_BAND_BOOST_FACTOR,
+ GSCAN_ATTRIBUTE_A_BAND_PENALTY_FACTOR,
+ GSCAN_ATTRIBUTE_A_BAND_MAX_BOOST,
+ GSCAN_ATTRIBUTE_LAZY_ROAM_HYSTERESIS,
+ GSCAN_ATTRIBUTE_ALERT_ROAM_RSSI_TRIGGER,
+ GSCAN_ATTRIBUTE_LAZY_ROAM_ENABLE,
+
+ /* BSSID blacklist */
+ GSCAN_ATTRIBUTE_BSSID_BLACKLIST_FLUSH = 100,
+ GSCAN_ATTRIBUTE_BLACKLIST_BSSID,
+
+ /* ANQPO */
+ GSCAN_ATTRIBUTE_ANQPO_HS_LIST = 110,
+ GSCAN_ATTRIBUTE_ANQPO_HS_LIST_SIZE,
+ GSCAN_ATTRIBUTE_ANQPO_HS_NETWORK_ID,
+ GSCAN_ATTRIBUTE_ANQPO_HS_NAI_REALM,
+ GSCAN_ATTRIBUTE_ANQPO_HS_ROAM_CONSORTIUM_ID,
+ GSCAN_ATTRIBUTE_ANQPO_HS_PLMN,
+
+ /* ePNO cfg */
+ GSCAN_ATTRIBUTE_EPNO_5G_RSSI_THR = 130,
+ GSCAN_ATTRIBUTE_EPNO_2G_RSSI_THR,
+ GSCAN_ATTRIBUTE_EPNO_INIT_SCORE_MAX,
+ GSCAN_ATTRIBUTE_EPNO_CUR_CONN_BONUS,
+ GSCAN_ATTRIBUTE_EPNO_SAME_NETWORK_BONUS,
+ GSCAN_ATTRIBUTE_EPNO_SECURE_BONUS,
+ GSCAN_ATTRIBUTE_EPNO_5G_BONUS,
+
+ GSCAN_ATTRIBUTE_MAX
+
+} GSCAN_ATTRIBUTE;
+
+
+typedef enum {
GSCAN_EVENT_SIGNIFICANT_CHANGE_RESULTS,
GSCAN_EVENT_HOTLIST_RESULTS_FOUND,
GSCAN_EVENT_SCAN_RESULTS_AVAILABLE,
diff --git a/mtk/wifi_hal/gscan.cpp b/mtk/wifi_hal/gscan.cpp
index bb19457..886d067 100644
--- a/mtk/wifi_hal/gscan.cpp
+++ b/mtk/wifi_hal/gscan.cpp
@@ -27,141 +27,6 @@
#include "common.h"
#include "cpp_bindings.h"
-typedef enum {
- GSCAN_SUBCMD_GET_CAPABILITIES = ANDROID_NL80211_SUBCMD_GSCAN_RANGE_START,
-
- GSCAN_SUBCMD_SET_CONFIG, /* 0x1001 */
- GSCAN_SUBCMD_SET_SCAN_CONFIG, /* 0x1002 */
- GSCAN_SUBCMD_ENABLE_GSCAN, /* 0x1003 */
- GSCAN_SUBCMD_GET_SCAN_RESULTS, /* 0x1004 */
- GSCAN_SUBCMD_SCAN_RESULTS, /* 0x1005 */
-
- GSCAN_SUBCMD_SET_HOTLIST, /* 0x1006 */
-
- GSCAN_SUBCMD_SET_SIGNIFICANT_CHANGE_CONFIG, /* 0x1007 */
- GSCAN_SUBCMD_ENABLE_FULL_SCAN_RESULTS, /* 0x1008 */
-
- GSCAN_SUBCMD_SET_EPNO_SSID = 0x100F, /* 0x100F */
-
- GSCAN_SUBCMD_SET_SSID_WHITE_LIST, /* 0x1010 */
- GSCAN_SUBCMD_SET_ROAM_PARAMS, /* 0x1011 */
- GSCAN_SUBCMD_ENABLE_LAZY_ROAM, /* 0x1012 */
- GSCAN_SUBCMD_SET_BSSID_PREF, /* 0x1013 */
- GSCAN_SUBCMD_SET_BSSID_BLACKLIST, /* 0x1014 */
-
- GSCAN_SUBCMD_ANQPO_CONFIG, /* 0x1015 */
- /* Add more sub commands here */
-
-} GSCAN_SUB_COMMAND;
-
-typedef enum {
- GSCAN_ATTRIBUTE_CAPABILITIES = 1,
-
- GSCAN_ATTRIBUTE_NUM_BUCKETS = 10,
- GSCAN_ATTRIBUTE_BASE_PERIOD,
- GSCAN_ATTRIBUTE_BUCKETS_BAND,
- GSCAN_ATTRIBUTE_BUCKET_ID,
- GSCAN_ATTRIBUTE_BUCKET_PERIOD,
- GSCAN_ATTRIBUTE_BUCKET_NUM_CHANNELS,
- GSCAN_ATTRIBUTE_BUCKET_CHANNELS,
- GSCAN_ATTRIBUTE_NUM_AP_PER_SCAN,
- GSCAN_ATTRIBUTE_REPORT_THRESHOLD,
- GSCAN_ATTRIBUTE_NUM_SCANS_TO_CACHE,
-
- GSCAN_ATTRIBUTE_ENABLE_FEATURE = 20,
- GSCAN_ATTRIBUTE_SCAN_RESULTS_COMPLETE, /* indicates no more results */
- GSCAN_ATTRIBUTE_FLUSH_FEATURE, /* Flush all the configs */
- GSCAN_ENABLE_FULL_SCAN_RESULTS,
- GSCAN_ATTRIBUTE_REPORT_EVENTS,
- /* Adaptive scan attributes */
- GSCAN_ATTRIBUTE_BUCKET_STEP_COUNT,
- GSCAN_ATTRIBUTE_BUCKET_MAX_PERIOD,
-
- GSCAN_ATTRIBUTE_NUM_OF_RESULTS = 30,
- GSCAN_ATTRIBUTE_FLUSH_RESULTS,
- GSCAN_ATTRIBUTE_SCAN_RESULTS, /* flat array of wifi_scan_result */
- GSCAN_ATTRIBUTE_SCAN_ID, /* indicates scan number */
- GSCAN_ATTRIBUTE_SCAN_FLAGS, /* indicates if scan was aborted */
- GSCAN_ATTRIBUTE_AP_FLAGS, /* flags on significant change event */
- GSCAN_ATTRIBUTE_CH_BUCKET_BITMASK,
-
- GSCAN_ATTRIBUTE_SSID = 40,
- GSCAN_ATTRIBUTE_BSSID,
- GSCAN_ATTRIBUTE_CHANNEL,
- GSCAN_ATTRIBUTE_RSSI,
- GSCAN_ATTRIBUTE_TIMESTAMP,
- GSCAN_ATTRIBUTE_RTT,
- GSCAN_ATTRIBUTE_RTTSD,
-
- GSCAN_ATTRIBUTE_HOTLIST_BSSIDS = 50,
- GSCAN_ATTRIBUTE_RSSI_LOW,
- GSCAN_ATTRIBUTE_RSSI_HIGH,
- GSCAN_ATTRIBUTE_HOTLIST_ELEM,
- GSCAN_ATTRIBUTE_HOTLIST_FLUSH,
-
- GSCAN_ATTRIBUTE_RSSI_SAMPLE_SIZE = 60,
- GSCAN_ATTRIBUTE_LOST_AP_SAMPLE_SIZE,
- GSCAN_ATTRIBUTE_MIN_BREACHING,
- GSCAN_ATTRIBUTE_NUM_AP, /* TBD */
- GSCAN_ATTRIBUTE_SIGNIFICANT_CHANGE_BSSIDS,
- GSCAN_ATTRIBUTE_SIGNIFICANT_CHANGE_FLUSH,
-
- /* EPNO */
- GSCAN_ATTRIBUTE_EPNO_SSID_LIST = 70,
- GSCAN_ATTRIBUTE_EPNO_SSID,
- GSCAN_ATTRIBUTE_EPNO_SSID_LEN,
- GSCAN_ATTRIBUTE_EPNO_RSSI,
- GSCAN_ATTRIBUTE_EPNO_FLAGS,
- GSCAN_ATTRIBUTE_EPNO_AUTH,
- GSCAN_ATTRIBUTE_EPNO_SSID_NUM,
- GSCAN_ATTRIBUTE_EPNO_FLUSH,
-
- GSCAN_ATTRIBUTE_WHITELIST_SSID = 80,
- GSCAN_ATTRIBUTE_NUM_WL_SSID,
- GSCAN_ATTRIBUTE_WL_SSID_LEN,
- GSCAN_ATTRIBUTE_WL_SSID_FLUSH,
- GSCAN_ATTRIBUTE_WHITELIST_SSID_ELEM,
- GSCAN_ATTRIBUTE_NUM_BSSID,
- GSCAN_ATTRIBUTE_BSSID_PREF_LIST,
- GSCAN_ATTRIBUTE_BSSID_PREF_FLUSH,
- GSCAN_ATTRIBUTE_BSSID_PREF,
- GSCAN_ATTRIBUTE_RSSI_MODIFIER,
-
- GSCAN_ATTRIBUTE_A_BAND_BOOST_THRESHOLD = 90,
- GSCAN_ATTRIBUTE_A_BAND_PENALTY_THRESHOLD,
- GSCAN_ATTRIBUTE_A_BAND_BOOST_FACTOR,
- GSCAN_ATTRIBUTE_A_BAND_PENALTY_FACTOR,
- GSCAN_ATTRIBUTE_A_BAND_MAX_BOOST,
- GSCAN_ATTRIBUTE_LAZY_ROAM_HYSTERESIS,
- GSCAN_ATTRIBUTE_ALERT_ROAM_RSSI_TRIGGER,
- GSCAN_ATTRIBUTE_LAZY_ROAM_ENABLE,
-
- /* BSSID blacklist */
- GSCAN_ATTRIBUTE_BSSID_BLACKLIST_FLUSH = 100,
- GSCAN_ATTRIBUTE_BLACKLIST_BSSID,
-
- /* ANQPO */
- GSCAN_ATTRIBUTE_ANQPO_HS_LIST = 110,
- GSCAN_ATTRIBUTE_ANQPO_HS_LIST_SIZE,
- GSCAN_ATTRIBUTE_ANQPO_HS_NETWORK_ID,
- GSCAN_ATTRIBUTE_ANQPO_HS_NAI_REALM,
- GSCAN_ATTRIBUTE_ANQPO_HS_ROAM_CONSORTIUM_ID,
- GSCAN_ATTRIBUTE_ANQPO_HS_PLMN,
-
- /* ePNO cfg */
- GSCAN_ATTRIBUTE_EPNO_5G_RSSI_THR = 130,
- GSCAN_ATTRIBUTE_EPNO_2G_RSSI_THR,
- GSCAN_ATTRIBUTE_EPNO_INIT_SCORE_MAX,
- GSCAN_ATTRIBUTE_EPNO_CUR_CONN_BONUS,
- GSCAN_ATTRIBUTE_EPNO_SAME_NETWORK_BONUS,
- GSCAN_ATTRIBUTE_EPNO_SECURE_BONUS,
- GSCAN_ATTRIBUTE_EPNO_5G_BONUS,
-
- GSCAN_ATTRIBUTE_MAX
-
-} GSCAN_ATTRIBUTE;
-
-
// helper methods
wifi_error wifi_enable_full_scan_results(wifi_request_id id, wifi_interface_handle iface,
wifi_scan_result_handler handler);
diff --git a/mtk/wifi_hal/wifi_hal.cpp b/mtk/wifi_hal/wifi_hal.cpp
index 8b746cc..9f09784 100644
--- a/mtk/wifi_hal/wifi_hal.cpp
+++ b/mtk/wifi_hal/wifi_hal.cpp
@@ -224,7 +224,7 @@ wifi_error wifi_initialize(wifi_handle *handle)
}
struct nl_cb *cb = nl_socket_get_cb(info->event_sock);
- // ALOGI("cb->refcnt = %d", cb->cb_refcnt);
+// ALOGI("cb->refcnt = %d", cb->cb_refcnt);
nl_cb_set(cb, NL_CB_SEQ_CHECK, NL_CB_CUSTOM, internal_no_seq_check, info);
nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, internal_valid_message_handler, info);
nl_cb_put(cb);
@@ -673,7 +673,7 @@ public:
virtual int create() {
int ret;
- ret = mMsg.create(GOOGLE_OUI, WIFI_SUBCMD_GET_CHANNEL_LIST);
+ ret = mMsg.create(GOOGLE_OUI, GSCAN_SUBCMD_GET_CHANNEL_LIST);
if (ret < 0) {
return ret;
}
@@ -713,13 +713,13 @@ protected:
int num_channels = 0;
for (nl_iterator it(vendor); it.has_next(); it.next()) {
- if (it.get_type() == WIFI_ATTRIBUTE_NUM_CHANNELS) {
+ if (it.get_type() == GSCAN_ATTRIBUTE_NUM_CHANNELS) {
num_channels = it.get_u32();
ALOGI("Get channel list with %d channels", num_channels);
if (num_channels > mMaxChannels)
num_channels = mMaxChannels;
*mNumOfChannel = num_channels;
- } else if (it.get_type() == WIFI_ATTRIBUTE_CHANNEL_LIST && num_channels) {
+ } else if (it.get_type() == GSCAN_ATTRIBUTE_CHANNEL_LIST && num_channels) {
memcpy(mChannels, it.get_data(), sizeof(wifi_channel) * num_channels);
} else {
ALOGW("Ignore invalid attribute type = %d, size = %d",