summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'scanning/scanner_impl.h')
-rw-r--r--scanning/scanner_impl.h48
1 files changed, 28 insertions, 20 deletions
diff --git a/scanning/scanner_impl.h b/scanning/scanner_impl.h
index 2bb9262..8e1f832 100644
--- a/scanning/scanner_impl.h
+++ b/scanning/scanner_impl.h
@@ -24,7 +24,7 @@
24 24
25#include "android/net/wifi/BnWifiScannerImpl.h" 25#include "android/net/wifi/BnWifiScannerImpl.h"
26#include "wificond/net/netlink_utils.h" 26#include "wificond/net/netlink_utils.h"
27#include "wificond/scanning/offload/offload_scan_manager.h" 27#include "wificond/scanning/offload_scan_callback_interface.h"
28#include "wificond/scanning/scan_utils.h" 28#include "wificond/scanning/scan_utils.h"
29 29
30namespace android { 30namespace android {
@@ -32,16 +32,17 @@ namespace wificond {
32 32
33class ClientInterfaceImpl; 33class ClientInterfaceImpl;
34class OffloadServiceUtils; 34class OffloadServiceUtils;
35class ScanUtils;
36class OffloadScanCallbackInterfaceImpl;
37class OffloadScanManager;
35 38
36class ScannerImpl : public android::net::wifi::BnWifiScannerImpl { 39class ScannerImpl : public android::net::wifi::BnWifiScannerImpl {
37 public: 40 public:
38 ScannerImpl(uint32_t wiphy_index, 41 ScannerImpl(uint32_t wiphy_index, uint32_t interface_index,
39 uint32_t interface_index,
40 const ScanCapabilities& scan_capabilities, 42 const ScanCapabilities& scan_capabilities,
41 const WiphyFeatures& wiphy_features, 43 const WiphyFeatures& wiphy_features,
42 ClientInterfaceImpl* client_interface, 44 ClientInterfaceImpl* client_interface,
43 NetlinkUtils* netlink_utils, 45 NetlinkUtils* netlink_utils, ScanUtils* scan_utils,
44 ScanUtils* scan_utils,
45 std::weak_ptr<OffloadServiceUtils> offload_service_utils); 46 std::weak_ptr<OffloadServiceUtils> offload_service_utils);
46 ~ScannerImpl(); 47 ~ScannerImpl();
47 // Returns a vector of available frequencies for 2.4GHz channels. 48 // Returns a vector of available frequencies for 2.4GHz channels.
@@ -53,10 +54,15 @@ class ScannerImpl : public android::net::wifi::BnWifiScannerImpl {
53 // Returns a vector of available frequencies for DFS channels. 54 // Returns a vector of available frequencies for DFS channels.
54 ::android::binder::Status getAvailableDFSChannels( 55 ::android::binder::Status getAvailableDFSChannels(
55 ::std::unique_ptr<::std::vector<int32_t>>* out_frequencies) override; 56 ::std::unique_ptr<::std::vector<int32_t>>* out_frequencies) override;
56 // Get the latest scan results from kernel. 57 // Get the latest single scan results from kernel.
57 ::android::binder::Status getScanResults( 58 ::android::binder::Status getScanResults(
58 std::vector<com::android::server::wifi::wificond::NativeScanResult>* 59 std::vector<com::android::server::wifi::wificond::NativeScanResult>*
59 out_scan_results) override; 60 out_scan_results) override;
61 // Get the latest pno scan results from the interface that most recently
62 // completed PNO scans
63 ::android::binder::Status getPnoScanResults(
64 std::vector<com::android::server::wifi::wificond::NativeScanResult>*
65 out_scan_results) override;
60 ::android::binder::Status scan( 66 ::android::binder::Status scan(
61 const ::com::android::server::wifi::wificond::SingleScanSettings& 67 const ::com::android::server::wifi::wificond::SingleScanSettings&
62 scan_settings, 68 scan_settings,
@@ -71,19 +77,19 @@ class ScannerImpl : public android::net::wifi::BnWifiScannerImpl {
71 const ::android::sp<::android::net::wifi::IScanEvent>& handler) override; 77 const ::android::sp<::android::net::wifi::IScanEvent>& handler) override;
72 ::android::binder::Status unsubscribeScanEvents() override; 78 ::android::binder::Status unsubscribeScanEvents() override;
73 ::android::binder::Status subscribePnoScanEvents( 79 ::android::binder::Status subscribePnoScanEvents(
74 const ::android::sp<::android::net::wifi::IPnoScanEvent>& handler) override; 80 const ::android::sp<::android::net::wifi::IPnoScanEvent>& handler)
81 override;
75 ::android::binder::Status unsubscribePnoScanEvents() override; 82 ::android::binder::Status unsubscribePnoScanEvents() override;
83 void OnOffloadScanResult();
84 void OnOffloadError(
85 OffloadScanCallbackInterface::AsyncErrorReason error_code);
76 void Invalidate(); 86 void Invalidate();
77 87
78 private: 88 private:
79 bool CheckIsValid(); 89 bool CheckIsValid();
80 void OnOffloadScanResult( 90 void OnScanResultsReady(uint32_t interface_index, bool aborted,
81 std::vector<::com::android::server::wifi::wificond::NativeScanResult>); 91 std::vector<std::vector<uint8_t>>& ssids,
82 void OnScanResultsReady( 92 std::vector<uint32_t>& frequencies);
83 uint32_t interface_index,
84 bool aborted,
85 std::vector<std::vector<uint8_t>>& ssids,
86 std::vector<uint32_t>& frequencies);
87 void OnSchedScanResultsReady(uint32_t interface_index, bool scan_stopped); 93 void OnSchedScanResultsReady(uint32_t interface_index, bool scan_stopped);
88 void LogSsidList(std::vector<std::vector<uint8_t>>& ssid_list, 94 void LogSsidList(std::vector<std::vector<uint8_t>>& ssid_list,
89 std::string prefix); 95 std::string prefix);
@@ -94,11 +100,10 @@ class ScannerImpl : public android::net::wifi::BnWifiScannerImpl {
94 bool StopPnoScanDefault(); 100 bool StopPnoScanDefault();
95 bool StopPnoScanOffload(); 101 bool StopPnoScanOffload();
96 void ParsePnoSettings( 102 void ParsePnoSettings(
97 const ::com::android::server::wifi::wificond::PnoSettings& pno_settings, 103 const ::com::android::server::wifi::wificond::PnoSettings& pno_settings,
98 std::vector<std::vector<uint8_t>>* scan_ssids, 104 std::vector<std::vector<uint8_t>>* scan_ssids,
99 std::vector<std::vector<uint8_t>>* match_ssids, 105 std::vector<std::vector<uint8_t>>* match_ssids,
100 std::vector<uint32_t>* freqs, 106 std::vector<uint32_t>* freqs, std::vector<uint8_t>* match_security);
101 std::vector<uint8_t>* match_security);
102 SchedScanIntervalSetting GenerateIntervalSetting( 107 SchedScanIntervalSetting GenerateIntervalSetting(
103 const ::com::android::server::wifi::wificond::PnoSettings& pno_settings) const; 108 const ::com::android::server::wifi::wificond::PnoSettings& pno_settings) const;
104 109
@@ -107,6 +112,9 @@ class ScannerImpl : public android::net::wifi::BnWifiScannerImpl {
107 bool scan_started_; 112 bool scan_started_;
108 bool pno_scan_started_; 113 bool pno_scan_started_;
109 bool offload_scan_supported_; 114 bool offload_scan_supported_;
115 bool pno_scan_running_over_offload_;
116 bool pno_scan_results_from_offload_;
117 ::com::android::server::wifi::wificond::PnoSettings pno_settings_;
110 118
111 const uint32_t wiphy_index_; 119 const uint32_t wiphy_index_;
112 const uint32_t interface_index_; 120 const uint32_t interface_index_;
@@ -120,7 +128,7 @@ class ScannerImpl : public android::net::wifi::BnWifiScannerImpl {
120 ScanUtils* const scan_utils_; 128 ScanUtils* const scan_utils_;
121 ::android::sp<::android::net::wifi::IPnoScanEvent> pno_scan_event_handler_; 129 ::android::sp<::android::net::wifi::IPnoScanEvent> pno_scan_event_handler_;
122 ::android::sp<::android::net::wifi::IScanEvent> scan_event_handler_; 130 ::android::sp<::android::net::wifi::IScanEvent> scan_event_handler_;
123 std::unique_ptr<OffloadScanManager> offload_scan_manager_; 131 std::shared_ptr<OffloadScanManager> offload_scan_manager_;
124 132
125 DISALLOW_COPY_AND_ASSIGN(ScannerImpl); 133 DISALLOW_COPY_AND_ASSIGN(ScannerImpl);
126}; 134};