#ifndef WIFICOND_AP_INTERFACE_IMPL_H_
#define WIFICOND_AP_INTERFACE_IMPL_H_
-#include <memory>
#include <string>
#include <vector>
#include <android-base/macros.h>
#include <wifi_system/hostapd_manager.h>
+#include <wifi_system/interface_tool.h>
+
+#include "wificond/net/netlink_manager.h"
#include "android/net/wifi/IApInterface.h"
namespace wificond {
class ApInterfaceBinder;
+class NetlinkUtils;
// Holds the guts of how we control network interfaces capable of exposing an AP
// via hostapd. Because remote processes may hold on to the corresponding
public:
ApInterfaceImpl(const std::string& interface_name,
uint32_t interface_index,
- std::unique_ptr<wifi_system::HostapdManager> hostapd_manager);
+ NetlinkUtils* netlink_utils,
+ wifi_system::InterfaceTool* if_tool,
+ wifi_system::HostapdManager* hostapd_manager);
~ApInterfaceImpl();
// Get a pointer to the binder representing this ApInterfaceImpl.
int32_t channel,
wifi_system::HostapdManager::EncryptionType encryption_type,
const std::vector<uint8_t>& passphrase);
+ std::string GetInterfaceName() { return interface_name_; }
+ int GetNumberOfAssociatedStations() const;
private:
const std::string interface_name_;
const uint32_t interface_index_;
- const std::unique_ptr<wifi_system::HostapdManager> hostapd_manager_;
+ NetlinkUtils* const netlink_utils_;
+ wifi_system::InterfaceTool* const if_tool_;
+ wifi_system::HostapdManager* const hostapd_manager_;
const android::sp<ApInterfaceBinder> binder_;
+ // Number of associated stations.
+ int number_of_associated_stations_;
+
+ void OnStationEvent(StationEvent event,
+ const std::vector<uint8_t>& mac_address);
+
DISALLOW_COPY_AND_ASSIGN(ApInterfaceImpl);
};