| /* |
| * Copyright (C) 2022 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef __WIFI_CACHED_SCAN_RESULTS_H__ |
| #define __WIFI_CACHED_SCAN_RESULTS_H__ |
| |
| #include "wifi_hal.h" |
| |
| #define WIFI_CACHED_SCAN_RESULT_FLAGS_NONE (0) |
| /* Element ID 61 (HT Operation) is present (see HT 7.3.2) */ |
| #define WIFI_CACHED_SCAN_RESULT_FLAGS_HT_OPS_PRESENT (1 << 0) |
| /* Element ID 192 (VHT Operation) is present (see VHT 8.4.2) */ |
| #define WIFI_CACHED_SCAN_RESULT_FLAGS_VHT_OPS_PRESENT (1 << 1) |
| /* Element ID 255 + Extension 36 (HE Operation) is present |
| * (see 802.11ax 9.4.2.1) |
| */ |
| #define WIFI_CACHED_SCAN_RESULT_FLAGS_HE_OPS_PRESENT (1 << 2) |
| /* Element ID 255 + Extension 106 (HE Operation) is present |
| * (see 802.11be D1.5 9.4.2.1) |
| */ |
| #define WIFI_CACHED_SCAN_RESULT_FLAGS_EHT_OPS_PRESENT (1 << 3) |
| /* Element ID 127 (Extended Capabilities) is present, and bit 70 |
| * (Fine Timing Measurement Responder) is set to 1 |
| * (see IEEE Std 802.11-2016 9.4.2.27) |
| */ |
| #define WIFI_CACHED_SCAN_RESULT_FLAGS_IS_FTM_RESPONDER (1 << 4) |
| |
| /** |
| * Provides information about a single access point (AP) detected in a scan. |
| */ |
| typedef struct { |
| /* Number of milliseconds prior to ts in the enclosing |
| * wifi_cached_scan_result_report struct when |
| * the probe response or beacon frame that |
| * was used to populate this structure was received. |
| */ |
| u32 age_ms; |
| /* The Capability Information field */ |
| u16 capability; |
| /* null terminated */ |
| u8 ssid[33]; |
| u8 ssid_len; |
| u8 bssid[6]; |
| /* A set of flags from WIFI_CACHED_SCAN_RESULT_FLAGS_* */ |
| u8 flags; |
| s8 rssi; |
| wifi_channel_spec chanspec; |
| }wifi_cached_scan_result; |
| |
| /* |
| * Data structure sent with events of type WifiCachedScanResult. |
| */ |
| typedef struct { |
| /* time since boot (in microsecond) when the result was retrieved */ |
| wifi_timestamp ts; |
| /* If 0, indicates that all frequencies in current regulation were |
| * scanned. Otherwise, indicates the number of frequencies scanned, as |
| * specified in scanned_freq_list. |
| */ |
| u16 scanned_freq_num; |
| /* Pointer to an array containing scanned_freq_num values comprising the |
| * set of frequencies that were scanned. Frequencies are specified as |
| * channel center frequencies in MHz. May be NULL if scannedFreqListLen is |
| * 0. |
| */ |
| const u32 *scanned_freq_list; |
| /* The total number of cached results returned. */ |
| u8 result_cnt; |
| /* Pointer to an array containing result_cnt entries. May be NULL if |
| * result_cnt is 0. |
| */ |
| const wifi_cached_scan_result *results; |
| } wifi_cached_scan_report; |
| |
| /* callback for reporting cached scan report */ |
| typedef struct { |
| void (*on_cached_scan_results) (wifi_cached_scan_report *cache_report); |
| } wifi_cached_scan_result_handler; |
| #endif |