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

Commit 7a3f643f authored by Roshan Pius's avatar Roshan Pius Committed by android-build-merger
Browse files

wifi: Disallow iface creation based on mode

am: 073d5b9f

Change-Id: I5478cbfca44a12af66ce2f5fbb815fb09f776708
parents 5e9cdc5a 073d5b9f
Loading
Loading
Loading
Loading
+16 −4
Original line number Original line Diff line number Diff line
@@ -465,7 +465,9 @@ WifiChip::requestFirmwareDebugDumpInternal() {
}
}


std::pair<WifiStatus, sp<IWifiApIface>> WifiChip::createApIfaceInternal() {
std::pair<WifiStatus, sp<IWifiApIface>> WifiChip::createApIfaceInternal() {
  // TODO(b/31997422): Disallow this based on the chip combination.
  if (current_mode_id_ != kApChipModeId || ap_iface_.get()) {
    return {createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE), {}};
  }
  std::string ifname = legacy_hal_.lock()->getApIfaceName();
  std::string ifname = legacy_hal_.lock()->getApIfaceName();
  ap_iface_ = new WifiApIface(ifname, legacy_hal_);
  ap_iface_ = new WifiApIface(ifname, legacy_hal_);
  return {createWifiStatus(WifiStatusCode::SUCCESS), ap_iface_};
  return {createWifiStatus(WifiStatusCode::SUCCESS), ap_iface_};
@@ -490,7 +492,11 @@ std::pair<WifiStatus, sp<IWifiApIface>> WifiChip::getApIfaceInternal(
}
}


std::pair<WifiStatus, sp<IWifiNanIface>> WifiChip::createNanIfaceInternal() {
std::pair<WifiStatus, sp<IWifiNanIface>> WifiChip::createNanIfaceInternal() {
  // TODO(b/31997422): Disallow this based on the chip combination.
  // Only 1 of NAN or P2P iface can be active at a time.
  if (current_mode_id_ != kStaChipModeId || nan_iface_.get() ||
      p2p_iface_.get()) {
    return {createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE), {}};
  }
  std::string ifname = legacy_hal_.lock()->getNanIfaceName();
  std::string ifname = legacy_hal_.lock()->getNanIfaceName();
  nan_iface_ = new WifiNanIface(ifname, legacy_hal_);
  nan_iface_ = new WifiNanIface(ifname, legacy_hal_);
  return {createWifiStatus(WifiStatusCode::SUCCESS), nan_iface_};
  return {createWifiStatus(WifiStatusCode::SUCCESS), nan_iface_};
@@ -515,7 +521,11 @@ std::pair<WifiStatus, sp<IWifiNanIface>> WifiChip::getNanIfaceInternal(
}
}


std::pair<WifiStatus, sp<IWifiP2pIface>> WifiChip::createP2pIfaceInternal() {
std::pair<WifiStatus, sp<IWifiP2pIface>> WifiChip::createP2pIfaceInternal() {
  // TODO(b/31997422): Disallow this based on the chip combination.
  // Only 1 of NAN or P2P iface can be active at a time.
  if (current_mode_id_ != kStaChipModeId || p2p_iface_.get() ||
      nan_iface_.get()) {
    return {createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE), {}};
  }
  std::string ifname = legacy_hal_.lock()->getP2pIfaceName();
  std::string ifname = legacy_hal_.lock()->getP2pIfaceName();
  p2p_iface_ = new WifiP2pIface(ifname, legacy_hal_);
  p2p_iface_ = new WifiP2pIface(ifname, legacy_hal_);
  return {createWifiStatus(WifiStatusCode::SUCCESS), p2p_iface_};
  return {createWifiStatus(WifiStatusCode::SUCCESS), p2p_iface_};
@@ -540,7 +550,9 @@ std::pair<WifiStatus, sp<IWifiP2pIface>> WifiChip::getP2pIfaceInternal(
}
}


std::pair<WifiStatus, sp<IWifiStaIface>> WifiChip::createStaIfaceInternal() {
std::pair<WifiStatus, sp<IWifiStaIface>> WifiChip::createStaIfaceInternal() {
  // TODO(b/31997422): Disallow this based on the chip combination.
  if (current_mode_id_ != kStaChipModeId || sta_iface_.get()) {
    return {createWifiStatus(WifiStatusCode::ERROR_NOT_AVAILABLE), {}};
  }
  std::string ifname = legacy_hal_.lock()->getStaIfaceName();
  std::string ifname = legacy_hal_.lock()->getStaIfaceName();
  sta_iface_ = new WifiStaIface(ifname, legacy_hal_);
  sta_iface_ = new WifiStaIface(ifname, legacy_hal_);
  return {createWifiStatus(WifiStatusCode::SUCCESS), sta_iface_};
  return {createWifiStatus(WifiStatusCode::SUCCESS), sta_iface_};