diff --git a/wifi/1.0/default/wifi_chip.cpp b/wifi/1.0/default/wifi_chip.cpp index 4f3c192c1a..af194912a3 100644 --- a/wifi/1.0/default/wifi_chip.cpp +++ b/wifi/1.0/default/wifi_chip.cpp @@ -465,7 +465,9 @@ WifiChip::requestFirmwareDebugDumpInternal() { } std::pair> 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(); ap_iface_ = new WifiApIface(ifname, legacy_hal_); return {createWifiStatus(WifiStatusCode::SUCCESS), ap_iface_}; @@ -490,7 +492,11 @@ std::pair> WifiChip::getApIfaceInternal( } std::pair> 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(); nan_iface_ = new WifiNanIface(ifname, legacy_hal_); return {createWifiStatus(WifiStatusCode::SUCCESS), nan_iface_}; @@ -515,7 +521,11 @@ std::pair> WifiChip::getNanIfaceInternal( } std::pair> 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(); p2p_iface_ = new WifiP2pIface(ifname, legacy_hal_); return {createWifiStatus(WifiStatusCode::SUCCESS), p2p_iface_}; @@ -540,7 +550,9 @@ std::pair> WifiChip::getP2pIfaceInternal( } std::pair> 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(); sta_iface_ = new WifiStaIface(ifname, legacy_hal_); return {createWifiStatus(WifiStatusCode::SUCCESS), sta_iface_}; diff --git a/wifi/supplicant/1.0/ISupplicantP2pIface.hal b/wifi/supplicant/1.0/ISupplicantP2pIface.hal index 48a4f5b41d..0cdac2dce2 100644 --- a/wifi/supplicant/1.0/ISupplicantP2pIface.hal +++ b/wifi/supplicant/1.0/ISupplicantP2pIface.hal @@ -37,11 +37,7 @@ interface ISupplicantP2pIface extends ISupplicantIface { /** * Keypad pin method configuration - pin is entered on device. */ - KEYPAD, - /** - * Label pin method configuration - pin is labelled on device. - */ - LABEL + KEYPAD }; enum GroupCapabilityMask : uint32_t { @@ -54,6 +50,15 @@ interface ISupplicantP2pIface extends ISupplicantIface { GROUP_FORMATION = 1 << 6 }; + /** + * Use to specify a range of frequencies. + * For example: 2412-2432,2462,5000-6000, etc. + */ + struct FreqRange { + uint32_t min; + uint32_t max; + }; + /** * Register for callbacks from this interface. * @@ -97,7 +102,7 @@ interface ISupplicantP2pIface extends ISupplicantIface { * |SupplicantStatusCode.FAILURE_UNKNOWN|, * |SupplicantStatusCode.FAILURE_IFACE_INVALID| */ - setSsidPostfix(string postfix) generates (SupplicantStatus status); + setSsidPostfix(vec postfix) generates (SupplicantStatus status); /** * Set the Maximum idle time in seconds for P2P groups. @@ -106,6 +111,7 @@ interface ISupplicantP2pIface extends ISupplicantIface { * associated stations in the group. As a P2P client, this means no * group owner seen in scan results. * + * @param groupIfName Group interface name to use. * @param timeoutInSec Timeout value in seconds. * @return status Status of the operation. * Possible status codes: @@ -113,11 +119,13 @@ interface ISupplicantP2pIface extends ISupplicantIface { * |SupplicantStatusCode.FAILURE_UNKNOWN|, * |SupplicantStatusCode.FAILURE_IFACE_INVALID| */ - setGroupIdle(uint32_t timeoutInSec) generates (SupplicantStatus status); + setGroupIdle(string groupIfName, uint32_t timeoutInSec) + generates (SupplicantStatus status); /** * Turn on/off power save mode for the interface. * + * @param groupIfName Group interface name to use. * @param enable Indicate if power save is to be turned on/off. * @return status Status of the operation. * Possible status codes: @@ -126,7 +134,8 @@ interface ISupplicantP2pIface extends ISupplicantIface { * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, * |SupplicantStatusCode.FAILURE_IFACE_DISABLED| */ - setPowerSave(bool enable) generates (SupplicantStatus status); + setPowerSave(string groupIfName, bool enable) + generates (SupplicantStatus status); /** * Initiate a P2P service discovery with an optional timeout. @@ -192,11 +201,11 @@ interface ISupplicantP2pIface extends ISupplicantIface { */ connect(MacAddress peerAddress, WpsProvisionMethod provisionMethod, - vec preSelectedPin, + string preSelectedPin, bool joinExistingGroup, bool persistent, uint32_t goIntent) - generates (SupplicantStatus status, vec generatedPin); + generates (SupplicantStatus status, string generatedPin); /** * Cancel an ongoing P2P group formation and joining-a-group related @@ -357,6 +366,21 @@ interface ISupplicantP2pIface extends ISupplicantIface { setListenChannel(uint32_t channel, uint32_t operatingClass) generates (SupplicantStatus status); + /** + * Set P2P disallowed frequency ranges. + * + * Specify ranges of frequencies that are disallowed for any p2p operations. + + * @param ranges List of ranges which needs to be disallowed. + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + setDisallowedFrequencies(vec ranges) + generates (SupplicantStatus status); + /** * Gets the operational SSID of the device. * diff --git a/wifi/supplicant/1.0/ISupplicantStaIface.hal b/wifi/supplicant/1.0/ISupplicantStaIface.hal index 868758ec9d..31706cd610 100644 --- a/wifi/supplicant/1.0/ISupplicantStaIface.hal +++ b/wifi/supplicant/1.0/ISupplicantStaIface.hal @@ -28,7 +28,7 @@ interface ISupplicantStaIface extends ISupplicantIface { * Access Network Query Protocol info ID elements * for IEEE Std 802.11u-2011. */ - enum AnqpInfoId : uint32_t { + enum AnqpInfoId : uint16_t { VENUE_NAME = 258, ROAMING_CONSORTIUM = 261, IP_ADDR_TYPE_AVAILABILITY = 262, @@ -42,7 +42,7 @@ interface ISupplicantStaIface extends ISupplicantIface { * for Hotspot 2.0. */ enum Hs20AnqpSubtypes : uint32_t { - OPERATOR_FRIENDLY_NAME = 2, + OPERATOR_FRIENDLY_NAME = 3, WAN_METRICS = 4, CONNECTION_CAPABILITY = 5, OSU_PROVIDERS_LIST = 8,