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