Merge "[Android T][MEP]: HAL changes for MEP feature" am: d45fd704fe am: 7ab5066b55

Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/1839796

Change-Id: I4e072734ed53c886dbdce260b8828f97128bd004
This commit is contained in:
Sandeep Jawalkar
2021-10-07 17:06:21 +00:00
committed by Automerger Merge Worker
11 changed files with 230 additions and 36 deletions

View File

@@ -137,7 +137,10 @@ aidl_interface {
vendor_available: true, vendor_available: true,
srcs: ["android/hardware/radio/sim/*.aidl"], srcs: ["android/hardware/radio/sim/*.aidl"],
stability: "vintf", stability: "vintf",
imports: ["android.hardware.radio"], imports: [
"android.hardware.radio",
"android.hardware.radio.config",
],
backend: { backend: {
cpp: { cpp: {
enabled: false, enabled: false,

View File

@@ -49,5 +49,5 @@ interface IRadioConfig {
oneway void setNumOfLiveModems(in int serial, in byte numOfLiveModems); oneway void setNumOfLiveModems(in int serial, in byte numOfLiveModems);
oneway void setPreferredDataModem(in int serial, in byte modemId); oneway void setPreferredDataModem(in int serial, in byte modemId);
oneway void setResponseFunctions(in android.hardware.radio.config.IRadioConfigResponse radioConfigResponse, in android.hardware.radio.config.IRadioConfigIndication radioConfigIndication); oneway void setResponseFunctions(in android.hardware.radio.config.IRadioConfigResponse radioConfigResponse, in android.hardware.radio.config.IRadioConfigIndication radioConfigIndication);
oneway void setSimSlotsMapping(in int serial, in int[] slotMap); oneway void setSimSlotsMapping(in int serial, in android.hardware.radio.config.SlotPortMapping[] slotMap);
} }

View File

@@ -0,0 +1,42 @@
/*
* 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.config;
@VintfStability
parcelable SimPortInfo {
String iccId;
int logicalSlotId;
int portState;
const int PORT_STATE_INACTIVE = 0;
const int PORT_STATE_ACTIVE = 1;
}

View File

@@ -36,9 +36,7 @@ package android.hardware.radio.config;
parcelable SimSlotStatus { parcelable SimSlotStatus {
boolean cardActive; boolean cardActive;
int cardState; int cardState;
int slotState;
String atr; String atr;
int logicalSlotId;
String iccid;
String eid; String eid;
android.hardware.radio.config.SimPortInfo[] portInfo;
} }

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.config;
@VintfStability
parcelable SlotPortMapping {
int physicalSlotId;
int portId;
}

View File

@@ -40,10 +40,10 @@ parcelable CardStatus {
int cdmaSubscriptionAppIndex; int cdmaSubscriptionAppIndex;
int imsSubscriptionAppIndex; int imsSubscriptionAppIndex;
android.hardware.radio.sim.AppStatus[] applications; android.hardware.radio.sim.AppStatus[] applications;
int physicalSlotId;
String atr; String atr;
String iccid; String iccid;
String eid; String eid;
android.hardware.radio.config.SlotPortMapping slotMap;
const int STATE_ABSENT = 0; const int STATE_ABSENT = 0;
const int STATE_PRESENT = 1; const int STATE_PRESENT = 1;
const int STATE_ERROR = 2; const int STATE_ERROR = 2;

View File

@@ -26,6 +26,7 @@ package android.hardware.radio.config;
import android.hardware.radio.config.IRadioConfigIndication; import android.hardware.radio.config.IRadioConfigIndication;
import android.hardware.radio.config.IRadioConfigResponse; import android.hardware.radio.config.IRadioConfigResponse;
import android.hardware.radio.config.SlotPortMapping;
@VintfStability @VintfStability
oneway interface IRadioConfig { oneway interface IRadioConfig {
@@ -120,30 +121,57 @@ oneway interface IRadioConfig {
/** /**
* Set SIM Slot mapping. * Set SIM Slot mapping.
* *
* Maps the logical slots to the physical slots. Logical slot is the slot that is seen by modem. * Maps the logical slots to the SlotPortMapping which consist of both physical slot id and port
* Physical slot is the actual physical slot. Request maps the physical slot to logical slot. * id. Logical slot is the slot that is seen by modem. Physical slot is the actual physical
* Logical slots that are already mapped to the requested physical slot are not impacted. * slot. PortId is the id (enumerated value) for the associated port available on the SIM. Each
* physical slot can have multiple ports which enables multi-enabled profile(MEP). If eUICC
* physical slot supports 2 ports, then the portId is numbered 0,1 and if eUICC2 supports 4
* ports then the portID is numbered 0,1,2,3. Each portId is unique within a UICC physical slot
* but not necessarily unique across UICCs. SEP(Single enabled profile) eUICC and non-eUICC
* will only have portId 0.
* *
* Example no. of logical slots 1 and physical slots 2: * Logical slots that are already mapped to the requested SlotPortMapping are not impacted.
* The only logical slot (index 0) can be mapped to first physical slot (value 0) or second
* physical slot(value 1), while the other physical slot remains unmapped and inactive.
* slotMap[0] = 1 or slotMap[0] = 0
* *
* Example no. of logical slots 2 and physical slots 2: * Example no. of logical slots 1 and physical slots 2 do not support MEP, each physical slot
* First logical slot (index 0) can be mapped to physical slot 1 or 2 and other logical slot * has one port:
* can be mapped to other physical slot. Each logical slot must be mapped to a physical slot. * The only logical slot (index 0) can be mapped to first physical slot (value 0), port(index
* slotMap[0] = 0 and slotMap[1] = 1 or slotMap[0] = 1 and slotMap[1] = 0 * 0). or second
* physical slot(value 1), port (index 0), while the other physical slot remains unmapped and
* inactive.
* slotMap[0] = SlotPortMapping{0 //physical slot//, 0 //port//}
* slotMap[0] = SlotPortMapping{1 //physical slot//, 0 //port//}
*
* Example no. of logical slots 2 and physical slots 2 supports MEP with 2 ports available:
* Each logical slot must be mapped to a port (physical slot and port combination).
* First logical slot (index 0) can be mapped to physical slot 1 and the second logical slot
* can be mapped to either port from physical slot 2.
*
* slotMap[0] = SlotPortMapping{0, 0} and slotMap[1] = SlotPortMapping{1, 0} or
* slotMap[0] = SlotPortMapping{0, 0} and slotMap[1] = SlotPortMapping{1, 1}
*
* or the other way around, the second logical slot(index 1) can be mapped to physical slot 1
* and the first logical slot can be mapped to either port from physical slot 2.
*
* slotMap[1] = SlotPortMapping{0, 0} and slotMap[0] = SlotPortMapping{1, 0} or
* slotMap[1] = SlotPortMapping{0, 0} and slotMap[0] = SlotPortMapping{1, 1}
*
* another possible mapping is each logical slot maps to each port of physical slot 2 and there
* is no active logical modem mapped to physical slot 1.
*
* slotMap[0] = SlotPortMapping{1, 0} and slotMap[1] = SlotPortMapping{1, 1} or
* slotMap[0] = SlotPortMapping{1, 1} and slotMap[1] = SlotPortMapping{1, 0}
* *
* @param serial Serial number of request * @param serial Serial number of request
* @param slotMap Logical to physical slot mapping, size == no. of radio instances. Index is * @param slotMap Logical to physical slot and port mapping.
* mapping to logical slot and value to physical slot, need to provide all the slots * Index is mapping to logical slot and value to physical slot and port id, need to
* mapping when sending request in case of multi slot device. * provide all the slots mapping when sending request in case of multi slot device.
* EX: uint32_t slotMap[logical slot] = physical slot *
* EX: SlotPortMapping(physical slot, port id)
* index 0 is the first logical_slot number of logical slots is equal to number of Radio * index 0 is the first logical_slot number of logical slots is equal to number of Radio
* instances and number of physical slots is equal to size of slotStatus in * instances and number of physical slots is equal to size of slotStatus in
* getSimSlotsStatusResponse * getSimSlotsStatusResponse
* *
* Response callback is IRadioConfigResponse.setSimSlotsMappingResponse() * Response callback is IRadioConfigResponse.setSimSlotsMappingResponse()
*/ */
void setSimSlotsMapping(in int serial, in int[] slotMap); void setSimSlotsMapping(in int serial, in SlotPortMapping[] slotMap);
} }

View File

@@ -0,0 +1,51 @@
/*
* 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.config;
@VintfStability
parcelable SimPortInfo {
/**
* Integrated Circuit Card IDentifier (ICCID) is unique identifier of the SIM card. File is
* located in the SIM card at EFiccid (0x2FE2) as per ETSI 102.221. The ICCID is defined by
* the ITU-T recommendation E.118 ISO/IEC 7816.
*
* This data is applicable only when cardState is CardStatus.STATE_PRESENT.
*
* This is the ICCID of the currently enabled profile. If no profile is enabled,
* then it will contain the default boot profiles ICCID.
* If the EFiccid does not exist in the default boot profile, it will be null.
*/
String iccId;
/**
* Logical slot id is identifier of the active slot
*/
int logicalSlotId;
/*
* Port is Inactive
* Inactive means logical modem is no longer associated to the port
*/
const int PORT_STATE_INACTIVE = 0;
/*
* Port is Active
* Active means logical modem is associated to the port
*/
const int PORT_STATE_ACTIVE = 1;
/**
* Port state in the slot. Values are portState.[PORT_STATE_INACTIVE, PORT_STATE_ACTIVE].
*/
int portState;
}

View File

@@ -16,6 +16,8 @@
package android.hardware.radio.config; package android.hardware.radio.config;
import android.hardware.radio.config.SimPortInfo;
@VintfStability @VintfStability
parcelable SimSlotStatus { parcelable SimSlotStatus {
boolean cardActive; boolean cardActive;
@@ -24,10 +26,6 @@ parcelable SimSlotStatus {
* STATE_ERROR, STATE_RESTRICTED]. * STATE_ERROR, STATE_RESTRICTED].
*/ */
int cardState; int cardState;
/**
* Slot state Active/Inactive
*/
int slotState;
/** /**
* An Answer To Reset (ATR) is a message output by a Smart Card conforming to ISO/IEC 7816 * An Answer To Reset (ATR) is a message output by a Smart Card conforming to ISO/IEC 7816
* standards, following electrical reset of the card's chip. The ATR conveys information about * standards, following electrical reset of the card's chip. The ATR conveys information about
@@ -36,15 +34,6 @@ parcelable SimSlotStatus {
* This data is applicable only when cardState is CardStatus.STATE_PRESENT. * This data is applicable only when cardState is CardStatus.STATE_PRESENT.
*/ */
String atr; String atr;
int logicalSlotId;
/**
* Integrated Circuit Card IDentifier (ICCID) is Unique Identifier of the SIM CARD. File is
* located in the SIM card at EFiccid (0x2FE2) as per ETSI 102.221. The ICCID is defined by
* the ITU-T recommendation E.118 ISO/IEC 7816.
*
* This data is applicable only when cardState is CardStatus.STATE_PRESENT.
*/
String iccid;
/** /**
* The EID is the eUICC identifier. The EID shall be stored within the ECASD and can be * The EID is the eUICC identifier. The EID shall be stored within the ECASD and can be
* retrieved by the Device at any time using the standard GlobalPlatform GET DATA command. * retrieved by the Device at any time using the standard GlobalPlatform GET DATA command.
@@ -53,4 +42,8 @@ parcelable SimSlotStatus {
* card supports eUICC. * card supports eUICC.
*/ */
String eid; String eid;
/**
* PortInfo contains the ICCID, logical slot ID, and port state
*/
SimPortInfo[] portInfo;
} }

View File

@@ -0,0 +1,34 @@
/*
* 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.config;
@VintfStability
parcelable SlotPortMapping {
/**
* Physical slot id is the index of the slots
**/
int physicalSlotId;
/**
* PortId is the id (enumerated value) for the associated port available on the SIM.
* Example:
* if eUICC1 supports 2 ports, then the portId is numbered 0,1.
* if eUICC2 supports 4 ports, then the portId is numbered: 0,1,2,3.
* Each portId is unique within a UICC, but not necessarily unique across UICCs.
* SEP(Single enabled profile) eUICC and non-eUICC will only have portId 0.
**/
int portId;
}

View File

@@ -16,6 +16,7 @@
package android.hardware.radio.sim; package android.hardware.radio.sim;
import android.hardware.radio.config.SlotPortMapping;
import android.hardware.radio.sim.AppStatus; import android.hardware.radio.sim.AppStatus;
import android.hardware.radio.sim.PinState; import android.hardware.radio.sim.PinState;
@@ -61,7 +62,6 @@ parcelable CardStatus {
* size <= RadioConst::CARD_MAX_APPS * size <= RadioConst::CARD_MAX_APPS
*/ */
AppStatus[] applications; AppStatus[] applications;
int physicalSlotId;
/** /**
* An Answer To Reset (ATR) is a message output by a Smart Card conforming to ISO/IEC 7816 * An Answer To Reset (ATR) is a message output by a Smart Card conforming to ISO/IEC 7816
* standards, following electrical reset of the card's chip. The ATR conveys information about * standards, following electrical reset of the card's chip. The ATR conveys information about
@@ -86,4 +86,10 @@ parcelable CardStatus {
* supports eUICC. * supports eUICC.
*/ */
String eid; String eid;
/* SlotPortMapping:
* SlotPortMapping consists of physical slot id and port id.
* Physical slot is the actual physical slot.
* PortId is the id (enumerated value) for the associated port available on the SIM.
*/
SlotPortMapping slotMap;
} }