1b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 2b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde#include "wifi_hal.h" 3b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 4b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde#ifndef __WIFI_HAL_GSCAN_H__ 5b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde#define __WIFI_HAL_GSCAN_H__ 6b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 7b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde/* AP Scans */ 8b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 9b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndetypedef enum { 10b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde WIFI_BAND_UNSPECIFIED, 11fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande WIFI_BAND_BG = 1, // 2.4 GHz 12fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande WIFI_BAND_A = 2, // 5 GHz without DFS 13fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande WIFI_BAND_A_DFS = 4, // 5 GHz DFS only 14fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande WIFI_BAND_A_WITH_DFS = 6, // 5 GHz with DFS 15fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande WIFI_BAND_ABG = 3, // 2.4 GHz + 5 GHz; no DFS 16fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande WIFI_BAND_ABG_WITH_DFS = 7, // 2.4 GHz + 5 GHz with DFS 17b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde} wifi_band; 18b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 19fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpandeconst unsigned MAX_CHANNELS = 16; 20fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpandeconst unsigned MAX_BUCKETS = 16; 21fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpandeconst unsigned MAX_HOTLIST_APS = 128; 22fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpandeconst unsigned MAX_SIGNIFICANT_CHANGE_APS = 64; 23fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande 24b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndewifi_error wifi_get_valid_channels(wifi_interface_handle handle, 25fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande int band, int max_channels, wifi_channel *channels, int *num_channels); 26b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 27b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndetypedef struct { 28fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande int max_scan_cache_size; // total space allocated for scan (in bytes) 29fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande int max_scan_buckets; // maximum number of channel buckets 30fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande int max_ap_cache_per_scan; // maximum number of APs that can be stored per scan 31fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande int max_rssi_sample_size; // number of RSSI samples used for averaging RSSI 32fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande int max_scan_reporting_threshold; // max possible report_threshold as described 33fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande // in wifi_scan_cmd_params 34fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande int max_hotlist_aps; // maximum number of entries for hotlist APs 35fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande int max_significant_wifi_change_aps; // maximum number of entries for 36fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande // significant wifi change APs 37fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande int max_bssid_history_entries; // number of BSSID/RSSI entries that device can hold 38b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde} wifi_gscan_capabilities; 39b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 40b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndewifi_error wifi_get_gscan_capabilities(wifi_interface_handle handle, 41b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde wifi_gscan_capabilities *capabilities); 42b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 43fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpandetypedef enum { 44fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande WIFI_SCAN_BUFFER_FULL, 45fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande WIFI_SCAN_COMPLETE, 46fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande} wifi_scan_event; 47fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande 48fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande 49fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande/* Format of information elements found in the beacon */ 50fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpandetypedef struct { 51fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande byte id; // element identifier 52fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande byte len; // number of bytes to follow 53fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande byte data[]; 54fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande} wifi_information_element; 55fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande 56b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndetypedef struct { 57fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande wifi_timestamp ts; // time since boot (in microsecond) when the result was 58fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande // retrieved 59b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde char ssid[32+1]; // null terminated 60b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde mac_addr bssid; 61b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde wifi_channel channel; // channel frequency in MHz 62b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde wifi_rssi rssi; // in db 63b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde wifi_timespan rtt; // in nanoseconds 64b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde wifi_timespan rtt_sd; // standard deviation in rtt 65fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande unsigned short beacon_period; // period advertised in the beacon 66fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande unsigned short capability; // capabilities advertised in the beacon 67fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande unsigned int ie_length; // size of the ie_data blob 68fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande char ie_data[1]; // blob of all the information elements found in the 69fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande // beacon; this data should be a packed list of 70fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande // wifi_information_element objects, one after the other. 71b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde // other fields 72b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde} wifi_scan_result; 73b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 74b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndetypedef struct { 75fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande /* reported when report_threshold is reached in scan cache */ 76b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde void (*on_scan_results_available) (wifi_request_id id, unsigned num_results_available); 77fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande 78fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande /* reported when each probe response is received, if report_events 79fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande * enabled in wifi_scan_cmd_params */ 80b26e377bb1b2f5466438092cdc85cd0e8dc631caVinit Deshapnde void (*on_full_scan_result) (wifi_request_id id, wifi_scan_result *result); 81fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande 82fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande /* optional event - indicates progress of scanning statemachine */ 83fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande void (*on_scan_event) (wifi_scan_event event, unsigned status); 84fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande 85b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde} wifi_scan_result_handler; 86b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 87b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndetypedef struct { 88b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde wifi_channel channel; // frequency 89b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde int dwellTimeMs; // dwell time hint 90b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde int passive; // 0 => active, 1 => passive scan; ignored for DFS 91b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde /* Add channel class */ 92b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde} wifi_scan_channel_spec; 93b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 94fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande 95b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndetypedef struct { 96b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde int bucket; // bucket index, 0 based 97b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde wifi_band band; // when UNSPECIFIED, use channel list 98b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde int period; // desired period, in millisecond; if this is too 99b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde // low, the firmware should choose to generate results as 100b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde // fast as it can instead of failing the command 101fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande /* report_events semantics - 102fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande * 0 => report only when scan history is % full 103fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande * 1 => same as 0 + report a scan completion event after scanning this bucket 104fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande * 2 => same as 1 + forward scan results (beacons/probe responses + IEs) in real time to HAL 105fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande * 3 => same as 2 + forward scan results (beacons/probe responses + IEs) in real time to 106fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande supplicant as well (optional) . */ 107fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande byte report_events; 108fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande 109b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde int num_channels; 110fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande wifi_scan_channel_spec channels[MAX_CHANNELS]; // channels to scan; these may include DFS channels 111b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde} wifi_scan_bucket_spec; 112b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 113b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndetypedef struct { 114b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde int base_period; // base timer period in ms 115fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande int max_ap_per_scan; // number of APs to store in each scan in the 116fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande // BSSID/RSSI history buffer (keep the highest RSSI APs) 117fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande int report_threshold; // in %, when scan buffer is this much full, wake up AP 118fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande int num_buckets; 119fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande wifi_scan_bucket_spec buckets[MAX_BUCKETS]; 120b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde} wifi_scan_cmd_params; 121b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 122fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande/* Start periodic GSCAN */ 123b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndewifi_error wifi_start_gscan(wifi_request_id id, wifi_interface_handle iface, 124b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde wifi_scan_cmd_params params, wifi_scan_result_handler handler); 125fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande 126fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande/* Stop periodic GSCAN */ 127b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndewifi_error wifi_stop_gscan(wifi_request_id id, wifi_interface_handle iface); 128b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 129fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande/* Get the GSCAN cached scan results */ 130b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndewifi_error wifi_get_cached_gscan_results(wifi_interface_handle iface, byte flush, 131fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande int max, wifi_scan_result *results, int *num); 132b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 133b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde/* BSSID Hotlist */ 134b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndetypedef struct { 135b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde void (*on_hotlist_ap_found)(wifi_request_id id, 136b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde unsigned num_results, wifi_scan_result *results); 137726b5dada8055f705bb1ffb67d9acc3cad99457dAshwin void (*on_hotlist_ap_lost)(wifi_request_id id, 138726b5dada8055f705bb1ffb67d9acc3cad99457dAshwin unsigned num_results, wifi_scan_result *results); 139b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde} wifi_hotlist_ap_found_handler; 140b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 141b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndetypedef struct { 142b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde mac_addr bssid; // AP BSSID 143b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde wifi_rssi low; // low threshold 144b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde wifi_rssi high; // high threshold 145fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande wifi_channel channel; // channel hint 146b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde} ap_threshold_param; 147b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 148b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndetypedef struct { 149726b5dada8055f705bb1ffb67d9acc3cad99457dAshwin int lost_ap_sample_size; 150fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande int num_ap; // number of hotlist APs 151fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande ap_threshold_param ap[MAX_HOTLIST_APS]; // hotlist APs 152b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde} wifi_bssid_hotlist_params; 153b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 154fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande/* Set the BSSID Hotlist */ 155b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndewifi_error wifi_set_bssid_hotlist(wifi_request_id id, wifi_interface_handle iface, 156b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde wifi_bssid_hotlist_params params, wifi_hotlist_ap_found_handler handler); 157fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande 158fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande/* Clear the BSSID Hotlist */ 159b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndewifi_error wifi_reset_bssid_hotlist(wifi_request_id id, wifi_interface_handle iface); 160b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 161b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde/* Significant wifi change*/ 162fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpandetypedef struct { 163fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande mac_addr bssid; // BSSID 164fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande wifi_channel channel; // channel frequency in MHz 165fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande int num_rssi; // number of rssi samples 166fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande wifi_rssi rssi[]; // RSSI history in db 167fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande} wifi_significant_change_result; 168b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 169b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndetypedef struct { 170b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde void (*on_significant_change)(wifi_request_id id, 171fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande unsigned num_results, wifi_significant_change_result **results); 172b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde} wifi_significant_change_handler; 173b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 174b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndetypedef struct { 175b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde int rssi_sample_size; // number of samples for averaging RSSI 176b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde int lost_ap_sample_size; // number of samples to confirm AP loss 177b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde int min_breaching; // number of APs breaching threshold 178fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande int num_ap; // max 64 179fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande ap_threshold_param ap[MAX_SIGNIFICANT_CHANGE_APS]; 180b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde} wifi_significant_change_params; 181b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 182fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande/* Set the Signifcant AP change list */ 183b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndewifi_error wifi_set_significant_change_handler(wifi_request_id id, wifi_interface_handle iface, 184b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde wifi_significant_change_params params, wifi_significant_change_handler handler); 185fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande 186fdb49e3d2bcebc5549f93ea8687a56c9e55f1a2dVinit Deshpande/* Clear the Signifcant AP change list */ 187b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapndewifi_error wifi_reset_significant_change_handler(wifi_request_id id, wifi_interface_handle iface); 188b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 189726b5dada8055f705bb1ffb67d9acc3cad99457dAshwin/* Random MAC OUI for PNO */ 190726b5dada8055f705bb1ffb67d9acc3cad99457dAshwinwifi_error wifi_set_scanning_mac_oui(wifi_interface_handle handle, oui scan_oui); 191726b5dada8055f705bb1ffb67d9acc3cad99457dAshwin 192b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde#endif 193b80d32d2a1ba28f2b5dda7315e136a9ea14eda26Vinit Deshapnde 194