[IHostapd] Support vendor-specific AP config elem

Bug: 139204496
Test: mma -j
Change-Id: I059f6f8b1f9bb5916e49a95b670a815be5fa188b
diff --git a/hostapd/aidl/hostapd.cpp b/hostapd/aidl/hostapd.cpp
index da76a01..7874785 100644
--- a/hostapd/aidl/hostapd.cpp
+++ b/hostapd/aidl/hostapd.cpp
@@ -513,6 +513,18 @@
 		bridge_as_string = StringPrintf("bridge=%s", br_name.c_str());
 	}
 
+	// vendor_elements string
+	std::string vendor_elements_as_string;
+	if (nw_params.vendorElements.size() > 0) {
+		std::stringstream ss;
+		ss << std::hex;
+		ss << std::setfill('0');
+		for (uint8_t b : nw_params.vendorElements) {
+			ss << std::setw(2) << static_cast<unsigned int>(b);
+		}
+		vendor_elements_as_string = StringPrintf("vendor_elements=%s", ss.str().c_str());
+	}
+
 	return StringPrintf(
 		"interface=%s\n"
 		"driver=nl80211\n"
@@ -535,6 +547,7 @@
 		"%s\n"
 		"%s\n"
 		"%s\n"
+		"%s\n"
 		"%s\n",
 		iface_params.name.c_str(), ssid_as_string.c_str(),
 		channel_config_as_string.c_str(),
@@ -549,7 +562,8 @@
 		encryption_config_as_string.c_str(),
 		bridge_as_string.c_str(),
 		enable_edmg_as_string.c_str(),
-		edmg_channel_as_string.c_str());
+		edmg_channel_as_string.c_str(),
+		vendor_elements_as_string.c_str());
 }
 
 Generation getGeneration(hostapd_hw_modes *current_mode)