Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 734fea0d authored by Roshan Pius's avatar Roshan Pius
Browse files

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
parent 5c05546f
Loading
Loading
Loading
Loading
+16 −7
Original line number Diff line number Diff line
@@ -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 @@ void WifiApIface::invalidate() {
  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
+2 −2
Original line number Diff line number Diff line
@@ -39,8 +39,8 @@ class WifiApIface : public IWifiApIface {
  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_;
+3 −3
Original line number Diff line number Diff line
@@ -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 @@ wifi_error WifiLegacyHal::retrieveWlanInterfaceHandle() {
      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 @@ wifi_error WifiLegacyHal::retrieveWlanInterfaceHandle() {
        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()) {
+1 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@

#include <functional>
#include <thread>
#include <vector>

#include <hardware_legacy/wifi_hal.h>

+16 −7
Original line number Diff line number Diff line
@@ -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 @@ void WifiNanIface::invalidate() {
  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
Loading