diff options
| author | Yuri Konotopov <ykonotopov@gnome.org> | 2017-12-14 20:45:08 +0000 |
|---|---|---|
| committer | Moyster <oysterized@gmail.com> | 2018-01-24 14:26:55 +0100 |
| commit | e0ad22960f6c51ea5fd91b2b95cacacfda20961c (patch) | |
| tree | 1f5068ee51393cbaa6f794f47bb9868d796a0ac4 | |
| parent | 816121673881080cd9eddac67c254c9794224b56 (diff) | |
wifi_hal: fixed scan
| -rw-r--r-- | mtk/wifi_hal/common.h | 138 | ||||
| -rw-r--r-- | mtk/wifi_hal/gscan.cpp | 135 | ||||
| -rw-r--r-- | mtk/wifi_hal/wifi_hal.cpp | 8 |
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", |
