wifi_hal: fixed scan
This commit is contained in:
parent
8161216738
commit
e0ad22960f
|
@ -68,6 +68,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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue