Merge changes from topic "usage-setting-hal"

* changes:
  UsageSetting Compat Stubs
  Add UsageSetting to IRadioNetwork
This commit is contained in:
Nathan Harold
2021-12-14 00:29:04 +00:00
committed by Android (Google) Code Review
8 changed files with 151 additions and 0 deletions

View File

@@ -68,4 +68,6 @@ interface IRadioNetwork {
oneway void startNetworkScan(in int serial, in android.hardware.radio.network.NetworkScanRequest request);
oneway void stopNetworkScan(in int serial);
oneway void supplyNetworkDepersonalization(in int serial, in String netPin);
oneway void setUsageSetting(in int serial, in android.hardware.radio.network.UsageSetting usageSetting);
oneway void getUsageSetting(in int serial);
}

View File

@@ -67,4 +67,6 @@ interface IRadioNetworkResponse {
oneway void startNetworkScanResponse(in android.hardware.radio.RadioResponseInfo info);
oneway void stopNetworkScanResponse(in android.hardware.radio.RadioResponseInfo info);
oneway void supplyNetworkDepersonalizationResponse(in android.hardware.radio.RadioResponseInfo info, in int remainingRetries);
oneway void setUsageSettingResponse(in android.hardware.radio.RadioResponseInfo info);
oneway void getUsageSettingResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.network.UsageSetting usageSetting);
}

View File

@@ -0,0 +1,39 @@
/*
* Copyright (C) 2021 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.
*/
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
// two cases:
// 1). this is a frozen version file - do not edit this in any case.
// 2). this is a 'current' file. If you make a backwards compatible change to
// the interface (from the latest frozen version), the build system will
// prompt you to update this file with `m <name>-update-api`.
//
// You must not make a backward incompatible change to any AIDL file built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package android.hardware.radio.network;
@Backing(type="int") @VintfStability
enum UsageSetting {
VOICE_CENTRIC = 1,
DATA_CENTRIC = 2,
}

View File

@@ -27,6 +27,7 @@ import android.hardware.radio.network.NrDualConnectivityState;
import android.hardware.radio.network.RadioAccessSpecifier;
import android.hardware.radio.network.RadioBandMode;
import android.hardware.radio.network.SignalThresholdInfo;
import android.hardware.radio.network.UsageSetting;
/**
* This interface is used by telephony and telecom to talk to cellular radio for network APIs.
@@ -416,4 +417,25 @@ oneway interface IRadioNetwork {
* Response function is IRadioNetworkResponse.supplyNetworkDepersonalizationResponse()
*/
void supplyNetworkDepersonalization(in int serial, in String netPin);
/**
* Set the UE usage setting for data/voice centric usage.
*
* <p>Sets the usage setting in accordance with 3gpp 24.301 sec 4.3 and 3gpp 24.501 sec 4.3.
* <p>This value must be independently preserved for each SIM; (setting the value is not a
* "global" override).
*
* @param serial Serial number of request.
* @param usageSetting the usage setting for the current SIM.
*/
oneway void setUsageSetting(in int serial, in UsageSetting usageSetting);
/**
* Get the UE usage setting for data/voice centric usage.
*
* <p>Gets the usage setting in accordance with 3gpp 24.301 sec 4.3 and 3gpp 24.501 sec 4.3.
*
* @param serial Serial number of request.
*/
oneway void getUsageSetting(in int serial);
}

View File

@@ -31,6 +31,7 @@ import android.hardware.radio.network.RadioAccessSpecifier;
import android.hardware.radio.network.RadioBandMode;
import android.hardware.radio.network.RegStateResult;
import android.hardware.radio.network.SignalStrength;
import android.hardware.radio.network.UsageSetting;
/**
* Interface declaring response functions to solicited radio requests for network APIs.
@@ -549,4 +550,30 @@ oneway interface IRadioNetworkResponse {
* RadioError:SIM_ABSENT
*/
void supplyNetworkDepersonalizationResponse(in RadioResponseInfo info, in int remainingRetries);
/**
* @param info Response info struct containing response type, serial no. and error.
*
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:INVALID_STATE
* RadioError:INVALID_ARGUMENTS
* RadioError:INTERNAL_ERR
* RadioError:SIM_ABSENT
*/
oneway void setUsageSettingResponse(in RadioResponseInfo info);
/**
* @param info Response info struct containing response type, serial no. and error.
* @param usageSetting the usage setting for the current SIM.
*
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:INVALID_STATE
* RadioError:INTERNAL_ERR
* RadioError:SIM_ABSENT
*/
oneway void getUsageSettingResponse(in RadioResponseInfo info, in UsageSetting usageSetting);
}

View File

@@ -0,0 +1,40 @@
/*
* Copyright (C) 2021 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.radio.network;
/**
* Cellular usage setting with values according to 3gpp 24.301 sec 4.3 and 3gpp 24.501 sec 4.3.
*
* <p>Also refer to "UE's usage setting" as defined in 3gpp 24.301 section 3.1 and 3gpp 23.221
* Annex A.
*/
@VintfStability
@Backing(type="int")
enum UsageSetting {
/**
* UE operates in voice-centric mode. Generally speaking, in this mode of operation, the UE
* will not remain camped on a cell or attached to a network unless that cell/network provides
* voice service.
*/
VOICE_CENTRIC = 1,
/**
* UE operates in data-centric mode. Generally speaking, in this mode of operation, the UE
* will not reselect away from a cell/network that only provides data services.
*/
DATA_CENTRIC = 2,
}

View File

@@ -88,6 +88,10 @@ class RadioNetwork : public RadioCompatBase,
::ndk::ScopedAStatus stopNetworkScan(int32_t serial) override;
::ndk::ScopedAStatus supplyNetworkDepersonalization(int32_t serial,
const std::string& netPin) override;
::ndk::ScopedAStatus setUsageSetting(
int32_t serial,
::aidl::android::hardware::radio::network::UsageSetting usageSetting) override;
::ndk::ScopedAStatus getUsageSetting(int32_t serial) override;
public:
using RadioCompatBase::RadioCompatBase;

View File

@@ -278,4 +278,19 @@ ScopedAStatus RadioNetwork::supplyNetworkDepersonalization(int32_t ser, const st
return ok();
}
// TODO(b/210498497): is there a cleaner way to send a response back to Android, even though these
// methods must never be called?
ScopedAStatus RadioNetwork::setUsageSetting(
int32_t ser, ::aidl::android::hardware::radio::network::UsageSetting) {
LOG_CALL << ser;
LOG(ERROR) << "setUsageSetting is unsupported by HIDL HALs";
return ok();
}
ScopedAStatus RadioNetwork::getUsageSetting(int32_t ser) {
LOG_CALL << ser;
LOG(ERROR) << "getUsageSetting is unsupported by HIDL HALs";
return ok();
}
} // namespace android::hardware::radio::compat