OSDN Git Service

wificond: Dump interface list am: 099ee0c764
[android-x86/system-connectivity-wificond.git] / ap_interface_impl.h
index 851f492..849efcf 100644 (file)
 #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"
 
@@ -30,6 +32,7 @@ namespace android {
 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
@@ -39,7 +42,9 @@ class ApInterfaceImpl {
  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.
@@ -53,13 +58,23 @@ class 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);
 };