wpa_supplicant: Remove create/remove iface methods from HIDL

Modify getNetwork & listNetworks to use the new IfaceInfo struct.

Bug: 32577464
Test: Compiles
Change-Id: I98980b774bbd533cf91e7d9df7492894cb065a3e
diff --git a/wpa_supplicant/hidl/supplicant.cpp b/wpa_supplicant/hidl/supplicant.cpp
index b9f6ce2..f32ceb9 100644
--- a/wpa_supplicant/hidl/supplicant.cpp
+++ b/wpa_supplicant/hidl/supplicant.cpp
@@ -24,88 +24,53 @@
     "/data/misc/wifi/wpa_supplicant.conf";
 
 Supplicant::Supplicant(struct wpa_global* global) : wpa_global_(global) {}
-Return<void> Supplicant::createInterface(
-    const hidl_string& ifname, createInterface_cb _hidl_cb)
-{
-	android::sp<ISupplicantIface> iface;
-
-	// Check if required |ifname| argument is empty.
-	if (ifname.size() == 0) {
-		HIDL_RETURN(SupplicantStatusCode::FAILURE_ARGS_INVALID, iface);
-	}
-	// Try to get the wpa_supplicant record for this iface, return
-	// an error if we already control it.
-	if (wpa_supplicant_get_iface(wpa_global_, ifname.c_str()) != NULL) {
-		HIDL_RETURN(SupplicantStatusCode::FAILURE_IFACE_EXISTS, iface);
-	}
-
-	// Otherwise, have wpa_supplicant attach to it.
-	struct wpa_supplicant* wpa_s = NULL;
-	struct wpa_interface iface_params;
-	os_memset(&iface_params, 0, sizeof(iface));
-	iface_params.ifname = ifname.c_str();
-	iface_params.confname = kConfigFilePath;
-	iface_params.driver = kDriverName;
-	wpa_s = wpa_supplicant_add_iface(wpa_global_, &iface_params, NULL);
-	if (!wpa_s) {
-		HIDL_RETURN(SupplicantStatusCode::FAILURE_UNKNOWN, iface);
-	}
-	// The supplicant core creates a corresponding hidl object via
-	// HidlManager when |wpa_supplicant_add_iface| is called.
-	HidlManager* hidl_manager = HidlManager::getInstance();
-	if (!hidl_manager ||
-	    hidl_manager->getIfaceHidlObjectByIfname(wpa_s->ifname, &iface)) {
-		HIDL_RETURN(SupplicantStatusCode::FAILURE_UNKNOWN, iface);
-	}
-
-	HIDL_RETURN(SupplicantStatusCode::SUCCESS, iface);
-}
-
-Return<void> Supplicant::removeInterface(
-    const hidl_string& ifname, removeInterface_cb _hidl_cb)
-{
-	struct wpa_supplicant* wpa_s;
-
-	wpa_s = wpa_supplicant_get_iface(wpa_global_, ifname.c_str());
-	if (!wpa_s) {
-		HIDL_RETURN(SupplicantStatusCode::FAILURE_IFACE_UNKNOWN);
-	}
-	if (wpa_supplicant_remove_iface(wpa_global_, wpa_s, 0)) {
-		HIDL_RETURN(SupplicantStatusCode::FAILURE_UNKNOWN);
-	}
-
-	HIDL_RETURN(SupplicantStatusCode::SUCCESS);
-}
-
 Return<void> Supplicant::getInterface(
-    const hidl_string& ifname, getInterface_cb _hidl_cb)
+    const IfaceInfo& iface_info, getInterface_cb _hidl_cb)
 {
-	android::sp<ISupplicantIface> iface;
-
 	struct wpa_supplicant* wpa_s =
-	    wpa_supplicant_get_iface(wpa_global_, ifname.c_str());
+	    wpa_supplicant_get_iface(wpa_global_, iface_info.name.c_str());
 	if (!wpa_s) {
-		HIDL_RETURN(SupplicantStatusCode::FAILURE_IFACE_UNKNOWN, iface);
+		HIDL_RETURN(
+		    SupplicantStatusCode::FAILURE_IFACE_UNKNOWN, nullptr);
 	}
 
 	HidlManager* hidl_manager = HidlManager::getInstance();
-	if (!hidl_manager ||
-	    hidl_manager->getIfaceHidlObjectByIfname(wpa_s->ifname, &iface)) {
-		HIDL_RETURN(SupplicantStatusCode::FAILURE_UNKNOWN, iface);
-	}
+	if (iface_info.type == IfaceType::P2P) {
+		android::sp<ISupplicantP2pIface> iface;
+		if (!hidl_manager ||
+		    hidl_manager->getP2pIfaceHidlObjectByIfname(
+			wpa_s->ifname, &iface)) {
+			HIDL_RETURN(
+			    SupplicantStatusCode::FAILURE_UNKNOWN, iface);
+		}
 
-	HIDL_RETURN(SupplicantStatusCode::SUCCESS, iface);
+		HIDL_RETURN(SupplicantStatusCode::SUCCESS, iface);
+	} else {
+		android::sp<ISupplicantStaIface> iface;
+		if (!hidl_manager ||
+		    hidl_manager->getStaIfaceHidlObjectByIfname(
+			wpa_s->ifname, &iface)) {
+			HIDL_RETURN(
+			    SupplicantStatusCode::FAILURE_UNKNOWN, iface);
+		}
+
+		HIDL_RETURN(SupplicantStatusCode::SUCCESS, iface);
+	}
 }
 
 Return<void> Supplicant::listInterfaces(listInterfaces_cb _hidl_cb)
 {
-	std::vector<hidl_string> ifnames;
+	std::vector<ISupplicant::IfaceInfo> ifaces;
 	for (struct wpa_supplicant* wpa_s = wpa_global_->ifaces; wpa_s;
 	     wpa_s = wpa_s->next) {
-		ifnames.emplace_back(wpa_s->ifname);
+		if (wpa_s->global->p2p_init_wpa_s == wpa_s) {
+			ifaces.emplace_back({IfaceType::P2P, wpa_s->ifname});
+		} else {
+			ifaces.emplace_back({IfaceType::STA, wpa_s->ifname});
+		}
 	}
 
-	HIDL_RETURN(SupplicantStatusCode::SUCCESS, ifnames);
+	HIDL_RETURN(SupplicantStatusCode::SUCCESS, ifaces);
 }
 
 Return<void> Supplicant::registerCallback(