wifi: Make methods deliver status synchronously (3/3)

Make all the |IWifiIface|/|IWifiRttController| HIDL interface
methods return a synchronous status code. Change from using the event
callbacks to the synchronous callbacks for delivering status.

While there,
Use the default std::string to hidl_string constructor in status
callbacks.

Bug: 32056230
Bug: 32061909
Test: Compiles
Change-Id: Ifa06a11afb085bfd6684f7b997fb730d192018ea
diff --git a/wifi/1.0/default/wifi_ap_iface.cpp b/wifi/1.0/default/wifi_ap_iface.cpp
index aded04d..1b59b18 100644
--- a/wifi/1.0/default/wifi_ap_iface.cpp
+++ b/wifi/1.0/default/wifi_ap_iface.cpp
@@ -18,7 +18,7 @@
 
 #include <android-base/logging.h>
 
-#include "failure_reason_util.h"
+#include "wifi_status_util.h"
 
 namespace android {
 namespace hardware {
@@ -35,15 +35,24 @@
   is_valid_ = false;
 }
 
-Return<void> WifiApIface::getName(getName_cb cb) {
-  hidl_string hidl_ifname;
-  hidl_ifname.setToExternal(ifname_.c_str(), ifname_.size());
-  cb(hidl_ifname);
+Return<void> WifiApIface::getName(getName_cb hidl_status_cb) {
+  if (!is_valid_) {
+    hidl_status_cb(createWifiStatus(WifiStatusCode::ERROR_WIFI_IFACE_INVALID),
+                   hidl_string());
+    return Void();
+  }
+  hidl_status_cb(createWifiStatus(WifiStatusCode::SUCCESS), ifname_);
   return Void();
 }
 
-Return<IfaceType> WifiApIface::getType() {
-  return IfaceType::AP;
+Return<void> WifiApIface::getType(getType_cb hidl_status_cb) {
+  if (!is_valid_) {
+    hidl_status_cb(createWifiStatus(WifiStatusCode::ERROR_WIFI_IFACE_INVALID),
+                   IfaceType::AP);
+    return Void();
+  }
+  hidl_status_cb(createWifiStatus(WifiStatusCode::SUCCESS), IfaceType::AP);
+  return Void();
 }
 
 }  // namespace implementation
diff --git a/wifi/1.0/default/wifi_ap_iface.h b/wifi/1.0/default/wifi_ap_iface.h
index b95a3d8..1382112 100644
--- a/wifi/1.0/default/wifi_ap_iface.h
+++ b/wifi/1.0/default/wifi_ap_iface.h
@@ -39,8 +39,8 @@
   void invalidate();
 
   // HIDL methods exposed.
-  Return<void> getName(getName_cb cb) override;
-  Return<IfaceType> getType() override;
+  Return<void> getName(getName_cb hidl_status_cb) override;
+  Return<void> getType(getType_cb hidl_status_cb) override;
 
  private:
   std::string ifname_;
diff --git a/wifi/1.0/default/wifi_legacy_hal.cpp b/wifi/1.0/default/wifi_legacy_hal.cpp
index 553a058..65c0782 100644
--- a/wifi/1.0/default/wifi_legacy_hal.cpp
+++ b/wifi/1.0/default/wifi_legacy_hal.cpp
@@ -16,8 +16,8 @@
 
 #include <array>
 
-#include "failure_reason_util.h"
 #include "wifi_legacy_hal.h"
+#include "wifi_status_util.h"
 
 #include <android-base/logging.h>
 #include <cutils/properties.h>
@@ -188,7 +188,7 @@
       global_handle_, &num_iface_handles, &iface_handles);
   if (status != WIFI_SUCCESS) {
     LOG(ERROR) << "Failed to enumerate interface handles: "
-               << LegacyErrorToString(status);
+               << legacyErrorToString(status);
     return status;
   }
   for (int i = 0; i < num_iface_handles; ++i) {
@@ -198,7 +198,7 @@
         iface_handles[i], current_ifname.data(), current_ifname.size());
     if (status != WIFI_SUCCESS) {
       LOG(WARNING) << "Failed to get interface handle name: "
-                   << LegacyErrorToString(status);
+                   << legacyErrorToString(status);
       continue;
     }
     if (ifname_to_find == current_ifname.data()) {
diff --git a/wifi/1.0/default/wifi_legacy_hal.h b/wifi/1.0/default/wifi_legacy_hal.h
index 3585975..367ff15 100644
--- a/wifi/1.0/default/wifi_legacy_hal.h
+++ b/wifi/1.0/default/wifi_legacy_hal.h
@@ -19,6 +19,7 @@
 
 #include <functional>
 #include <thread>
+#include <vector>
 
 #include <hardware_legacy/wifi_hal.h>
 
diff --git a/wifi/1.0/default/wifi_nan_iface.cpp b/wifi/1.0/default/wifi_nan_iface.cpp
index 3c7ae4b..da15cf6 100644
--- a/wifi/1.0/default/wifi_nan_iface.cpp
+++ b/wifi/1.0/default/wifi_nan_iface.cpp
@@ -18,7 +18,7 @@
 
 #include <android-base/logging.h>
 
-#include "failure_reason_util.h"
+#include "wifi_status_util.h"
 
 namespace android {
 namespace hardware {
@@ -35,15 +35,24 @@
   is_valid_ = false;
 }
 
-Return<void> WifiNanIface::getName(getName_cb cb) {
-  hidl_string hidl_ifname;
-  hidl_ifname.setToExternal(ifname_.c_str(), ifname_.size());
-  cb(hidl_ifname);
+Return<void> WifiNanIface::getName(getName_cb hidl_status_cb) {
+  if (!is_valid_) {
+    hidl_status_cb(createWifiStatus(WifiStatusCode::ERROR_WIFI_IFACE_INVALID),
+                   hidl_string());
+    return Void();
+  }
+  hidl_status_cb(createWifiStatus(WifiStatusCode::SUCCESS), ifname_);
   return Void();
 }
 
-Return<IfaceType> WifiNanIface::getType() {
-  return IfaceType::NAN;
+Return<void> WifiNanIface::getType(getType_cb hidl_status_cb) {
+  if (!is_valid_) {
+    hidl_status_cb(createWifiStatus(WifiStatusCode::ERROR_WIFI_IFACE_INVALID),
+                   IfaceType::NAN);
+    return Void();
+  }
+  hidl_status_cb(createWifiStatus(WifiStatusCode::SUCCESS), IfaceType::NAN);
+  return Void();
 }
 
 }  // namespace implementation
diff --git a/wifi/1.0/default/wifi_nan_iface.h b/wifi/1.0/default/wifi_nan_iface.h
index 93e2e77..a97c38a 100644
--- a/wifi/1.0/default/wifi_nan_iface.h
+++ b/wifi/1.0/default/wifi_nan_iface.h
@@ -39,8 +39,8 @@
   void invalidate();
 
   // HIDL methods exposed.
-  Return<void> getName(getName_cb cb) override;
-  Return<IfaceType> getType() override;
+  Return<void> getName(getName_cb hidl_status_cb) override;
+  Return<void> getType(getType_cb hidl_status_cb) override;
 
  private:
   std::string ifname_;
diff --git a/wifi/1.0/default/wifi_p2p_iface.cpp b/wifi/1.0/default/wifi_p2p_iface.cpp
index 349a158..9ffb48c 100644
--- a/wifi/1.0/default/wifi_p2p_iface.cpp
+++ b/wifi/1.0/default/wifi_p2p_iface.cpp
@@ -18,7 +18,7 @@
 
 #include <android-base/logging.h>
 
-#include "failure_reason_util.h"
+#include "wifi_status_util.h"
 
 namespace android {
 namespace hardware {
@@ -35,15 +35,24 @@
   is_valid_ = false;
 }
 
-Return<void> WifiP2pIface::getName(getName_cb cb) {
-  hidl_string hidl_ifname;
-  hidl_ifname.setToExternal(ifname_.c_str(), ifname_.size());
-  cb(hidl_ifname);
+Return<void> WifiP2pIface::getName(getName_cb hidl_status_cb) {
+  if (!is_valid_) {
+    hidl_status_cb(createWifiStatus(WifiStatusCode::ERROR_WIFI_IFACE_INVALID),
+                   hidl_string());
+    return Void();
+  }
+  hidl_status_cb(createWifiStatus(WifiStatusCode::SUCCESS), ifname_);
   return Void();
 }
 
-Return<IfaceType> WifiP2pIface::getType() {
-  return IfaceType::P2P;
+Return<void> WifiP2pIface::getType(getType_cb hidl_status_cb) {
+  if (!is_valid_) {
+    hidl_status_cb(createWifiStatus(WifiStatusCode::ERROR_WIFI_IFACE_INVALID),
+                   IfaceType::P2P);
+    return Void();
+  }
+  hidl_status_cb(createWifiStatus(WifiStatusCode::SUCCESS), IfaceType::P2P);
+  return Void();
 }
 
 }  // namespace implementation
diff --git a/wifi/1.0/default/wifi_p2p_iface.h b/wifi/1.0/default/wifi_p2p_iface.h
index d70415d..ba02212 100644
--- a/wifi/1.0/default/wifi_p2p_iface.h
+++ b/wifi/1.0/default/wifi_p2p_iface.h
@@ -39,8 +39,8 @@
   void invalidate();
 
   // HIDL methods exposed.
-  Return<void> getName(getName_cb cb) override;
-  Return<IfaceType> getType() override;
+  Return<void> getName(getName_cb hidl_status_cb) override;
+  Return<void> getType(getType_cb hidl_status_cb) override;
 
  private:
   std::string ifname_;
diff --git a/wifi/1.0/default/wifi_rtt_controller.cpp b/wifi/1.0/default/wifi_rtt_controller.cpp
index e2df1a8..c0d0a00 100644
--- a/wifi/1.0/default/wifi_rtt_controller.cpp
+++ b/wifi/1.0/default/wifi_rtt_controller.cpp
@@ -18,7 +18,7 @@
 
 #include <android-base/logging.h>
 
-#include "failure_reason_util.h"
+#include "wifi_status_util.h"
 
 namespace android {
 namespace hardware {
@@ -36,8 +36,14 @@
   is_valid_ = false;
 }
 
-Return<void> WifiRttController::getBoundIface(getBoundIface_cb cb) {
-  cb(bound_iface_);
+Return<void> WifiRttController::getBoundIface(getBoundIface_cb hidl_status_cb) {
+  if (!is_valid_) {
+    hidl_status_cb(
+        createWifiStatus(WifiStatusCode::ERROR_WIFI_RTT_CONTROLLER_INVALID),
+        nullptr);
+    return Void();
+  }
+  hidl_status_cb(createWifiStatus(WifiStatusCode::SUCCESS), bound_iface_);
   return Void();
 }
 
diff --git a/wifi/1.0/default/wifi_rtt_controller.h b/wifi/1.0/default/wifi_rtt_controller.h
index 8d78b93..51b1557 100644
--- a/wifi/1.0/default/wifi_rtt_controller.h
+++ b/wifi/1.0/default/wifi_rtt_controller.h
@@ -40,7 +40,7 @@
   void invalidate();
 
   // HIDL methods exposed.
-  Return<void> getBoundIface(getBoundIface_cb cb) override;
+  Return<void> getBoundIface(getBoundIface_cb hidl_status_cb) override;
 
  private:
   sp<IWifiIface> bound_iface_;
diff --git a/wifi/1.0/default/wifi_sta_iface.cpp b/wifi/1.0/default/wifi_sta_iface.cpp
index 225cec4..e3ae111 100644
--- a/wifi/1.0/default/wifi_sta_iface.cpp
+++ b/wifi/1.0/default/wifi_sta_iface.cpp
@@ -18,7 +18,7 @@
 
 #include <android-base/logging.h>
 
-#include "failure_reason_util.h"
+#include "wifi_status_util.h"
 
 namespace android {
 namespace hardware {
@@ -35,15 +35,24 @@
   is_valid_ = false;
 }
 
-Return<void> WifiStaIface::getName(getName_cb cb) {
-  hidl_string hidl_ifname;
-  hidl_ifname.setToExternal(ifname_.c_str(), ifname_.size());
-  cb(hidl_ifname);
+Return<void> WifiStaIface::getName(getName_cb hidl_status_cb) {
+  if (!is_valid_) {
+    hidl_status_cb(createWifiStatus(WifiStatusCode::ERROR_WIFI_IFACE_INVALID),
+                   hidl_string());
+    return Void();
+  }
+  hidl_status_cb(createWifiStatus(WifiStatusCode::SUCCESS), ifname_);
   return Void();
 }
 
-Return<IfaceType> WifiStaIface::getType() {
-  return IfaceType::STA;
+Return<void> WifiStaIface::getType(getType_cb hidl_status_cb) {
+  if (!is_valid_) {
+    hidl_status_cb(createWifiStatus(WifiStatusCode::ERROR_WIFI_IFACE_INVALID),
+                   IfaceType::STA);
+    return Void();
+  }
+  hidl_status_cb(createWifiStatus(WifiStatusCode::SUCCESS), IfaceType::STA);
+  return Void();
 }
 
 }  // namespace implementation
diff --git a/wifi/1.0/default/wifi_sta_iface.h b/wifi/1.0/default/wifi_sta_iface.h
index fc5efec..29c5f06 100644
--- a/wifi/1.0/default/wifi_sta_iface.h
+++ b/wifi/1.0/default/wifi_sta_iface.h
@@ -39,8 +39,8 @@
   void invalidate();
 
   // HIDL methods exposed.
-  Return<void> getName(getName_cb cb) override;
-  Return<IfaceType> getType() override;
+  Return<void> getName(getName_cb hidl_status_cb) override;
+  Return<void> getType(getType_cb hidl_status_cb) override;
 
  private:
   std::string ifname_;
diff --git a/wifi/1.0/default/wifi_status_util.h b/wifi/1.0/default/wifi_status_util.h
index ec4b3f0..c988b05 100644
--- a/wifi/1.0/default/wifi_status_util.h
+++ b/wifi/1.0/default/wifi_status_util.h
@@ -27,7 +27,6 @@
 namespace implementation {
 
 std::string legacyErrorToString(wifi_error error);
-
 WifiStatus createWifiStatus(WifiStatusCode code,
                             const std::string& description);
 WifiStatus createWifiStatus(WifiStatusCode code);