platform_hardware_interfaces/wifi/1.1/IWifiChip.hal
Roshan Pius 735ff43197 wifi(hidl): Modify the SAR power levels interface
Modifying the interface used to lower the tx power level for meeting SAR
requirements based on recommendation from the nexus hardware team. The
previous interface passed in a single power value in dBm for meeting SAR
requirements. However, the SAR requirements are more complex than that.
Based on the connection mode (802.11 a,b,g,n,ac) and the number of
streams that are active (MIMO), the SAR power levels are very
different. Using the previous interface would mean that we will have to
use the lowest power level among all the connection modes to meet the SAR
requirements. This would however result in us lowering the power much
more than needed (~2 dBm) for many connection modes.
Instead, we're switching to a more generic interface where the framework
informs the wifi chip that we're entering a special tx power mode scenario
(today, there is only 1 for voice call). The chip can then lookup the
extensive table of power levels for different connection modes which are
pre-populated by the OEM's in the BDF file to set the power level (depending
on the scenario framework sends and the active connection mode).

Bug: 62437848
Test: Manual tests
Change-Id: I5ee3f0d2c130958dbeb352e3b5ad9407f432624f
2017-07-27 14:05:03 -07:00

91 lines
3 KiB
Text

/*
* Copyright 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.hardware.wifi@1.1;
import @1.0::IWifiChip;
import @1.0::WifiStatus;
/**
* Interface that represents a chip that must be configured as a single unit.
* The HAL/driver/firmware will be responsible for determining which phy is used
* to perform operations like NAN, RTT, etc.
*/
interface IWifiChip extends @1.0::IWifiChip {
/**
* Capabilities exposed by this chip.
*/
enum ChipCapabilityMask : @1.0::IWifiChip.ChipCapabilityMask {
/**
* Set/Reset Tx Power limits.
*/
SET_TX_POWER_LIMIT = 1 << 8,
/**
* Device to Device RTT.
*/
D2D_RTT = 1 << 9,
/**
* Device to AP RTT.
*/
D2AP_RTT = 1 << 10
};
/**
* List of preset wifi radio TX power levels for different scenarios.
* The actual power values (typically varies based on the channel,
* 802.11 connection type, number of MIMO streams, etc) for each scenario
* is defined by the OEM as a BDF file since it varies for each wifi chip
* vendor and device.
*/
enum TxPowerScenario : uint32_t {
VOICE_CALL = 0,
};
/**
* API to select one of the preset TX power scenarios.
*
* The framework must invoke this method with the appropriate scenario to let
* the wifi chip change it's transmitting power levels.
* OEM's should define various power profiles for each of the scenarios
* above (defined in |TxPowerScenario|).
*
* @param scenario One of the preselected scenarios defined in
* |TxPowerScenario|.
* @return status WifiStatus of the operation.
* Possible status codes:
* |WifiStatusCode.SUCCESS|,
* |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|,
* |WifiStatusCode.ERROR_NOT_SUPPORTED|,
* |WifiStatusCode.NOT_AVAILABLE|,
* |WifiStatusCode.UNKNOWN|
*/
selectTxPowerScenario(TxPowerScenario scenario) generates (WifiStatus status);
/**
* API to reset TX power levels.
* This is used to indicate the end of the previously selected TX power
* scenario and let the wifi chip fall back to the default power values.
*
* @return status WifiStatus of the operation.
* Possible status codes:
* |WifiStatusCode.SUCCESS|,
* |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|,
* |WifiStatusCode.ERROR_NOT_SUPPORTED|,
* |WifiStatusCode.NOT_AVAILABLE|,
* |WifiStatusCode.UNKNOWN|
*/
resetTxPowerScenario() generates (WifiStatus status);
};