#include "android/net/wifi/IClientInterface.h"
#include "wificond/net/mlme_event_handler.h"
+#include "wificond/net/netlink_utils.h"
+#include "wificond/scanning/offload/offload_service_utils.h"
+#include "wificond/scanning/scanner_impl.h"
namespace android {
namespace wificond {
class ClientInterfaceBinder;
class ClientInterfaceImpl;
-class NetlinkUtils;
class ScanUtils;
class MlmeEventHandlerImpl : public MlmeEventHandler {
void OnConnect(std::unique_ptr<MlmeConnectEvent> event) override;
void OnRoam(std::unique_ptr<MlmeRoamEvent> event) override;
void OnAssociate(std::unique_ptr<MlmeAssociateEvent> event) override;
+ void OnDisconnect(std::unique_ptr<MlmeDisconnectEvent> event) override;
+ void OnDisassociate(std::unique_ptr<MlmeDisassociateEvent> event) override;
private:
ClientInterfaceImpl* client_interface_;
class ClientInterfaceImpl {
public:
ClientInterfaceImpl(
+ uint32_t wiphy_index,
const std::string& interface_name,
uint32_t interface_index,
const std::vector<uint8_t>& interface_mac_addr,
android::wifi_system::SupplicantManager* supplicant_manager,
NetlinkUtils* netlink_utils,
ScanUtils* scan_utils);
- ~ClientInterfaceImpl();
+ virtual ~ClientInterfaceImpl();
// Get a pointer to the binder representing this ClientInterfaceImpl.
android::sp<android::net::wifi::IClientInterface> GetBinder() const;
bool SignalPoll(std::vector<int32_t>* out_signal_poll_results);
const std::vector<uint8_t>& GetMacAddress();
const std::string& GetInterfaceName() const { return interface_name_; }
+ const android::sp<ScannerImpl> GetScanner() { return scanner_; };
bool requestANQP(
const ::std::vector<uint8_t>& bssid,
const ::android::sp<::android::net::wifi::IANQPDoneCallback>& callback);
+ virtual bool IsAssociated() const;
+ void Dump(std::stringstream* ss) const;
private:
- void OnScanResultsReady(uint32_t interface_index,
- bool aborted,
- std::vector<std::vector<uint8_t>>& ssids,
- std::vector<uint32_t>& frequencies);
- void OnSchedScanResultsReady(uint32_t interface_index);
bool RefreshAssociateFreq();
+ const uint32_t wiphy_index_;
const std::string interface_name_;
const uint32_t interface_index_;
const std::vector<uint8_t> interface_mac_addr_;
android::wifi_system::SupplicantManager* const supplicant_manager_;
NetlinkUtils* const netlink_utils_;
ScanUtils* const scan_utils_;
+ const std::shared_ptr<OffloadServiceUtils> offload_service_utils_;
const std::unique_ptr<MlmeEventHandlerImpl> mlme_event_handler_;
const android::sp<ClientInterfaceBinder> binder_;
+ android::sp<ScannerImpl> scanner_;
+ // Cached information for this connection.
+ bool is_associated_;
std::vector<uint8_t> bssid_;
uint32_t associate_freq_;
+ // Capability information for this wiphy/interface.
+ BandInfo band_info_;
+ ScanCapabilities scan_capabilities_;
+ WiphyFeatures wiphy_features_;
+
DISALLOW_COPY_AND_ASSIGN(ClientInterfaceImpl);
friend class MlmeEventHandlerImpl;
};