diff --git a/compatibility_matrices/compatibility_matrix.current.xml b/compatibility_matrices/compatibility_matrix.current.xml index ae5b736c02..392bec2ea5 100644 --- a/compatibility_matrices/compatibility_matrix.current.xml +++ b/compatibility_matrices/compatibility_matrix.current.xml @@ -452,6 +452,14 @@ default + + android.hardware.radio.config + 1 + + IRadioConfig + default + + android.hardware.radio.config 1.3 diff --git a/radio/config/aidl/Android.bp b/radio/config/aidl/Android.bp new file mode 100644 index 0000000000..801747a0a1 --- /dev/null +++ b/radio/config/aidl/Android.bp @@ -0,0 +1,55 @@ +package { + // See: http://go/android-license-faq + // A large-scale-change added 'default_applicable_licenses' to import + // all of the 'license_kinds' from "hardware_interfaces_license" + // to get the below license kinds: + // SPDX-license-identifier-Apache-2.0 + default_applicable_licenses: ["hardware_interfaces_license"], +} + +aidl_interface { + name: "android.hardware.radio.config", + vendor_available: true, + srcs: ["android/hardware/radio/config/*.aidl"], + stability: "vintf", + imports: ["android.hardware.radio"], + backend: { + cpp: { + enabled: false, + }, + java: { + sdk_version: "module_current", + }, + ndk: { + vndk: { + enabled: true, + }, + }, + }, +} + +cc_library { + name: "android.hardware.radio.config-translate-ndk", + vendor_available: true, + shared_libs: [ + "libbinder_ndk", + "libhidlbase", + "android.hardware.radio.config-V1-ndk_platform", + "android.hardware.radio.config@1.0", + "android.hardware.radio.config@1.1", + "android.hardware.radio.config@1.2", + "android.hardware.radio.config@1.3", + ], +} + +java_library { + name: "android.hardware.radio.config-translate-java", + libs: [ + "android.hardware.radio.config-V1-java", + "android.hardware.radio.config-V1.0-java", + "android.hardware.radio.config-V1.1-java", + "android.hardware.radio.config-V1.2-java", + "android.hardware.radio.config-V1.3-java", + ], + sdk_version: "module_current", +} diff --git a/radio/config/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/IRadioConfig.aidl b/radio/config/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/IRadioConfig.aidl new file mode 100644 index 0000000000..85106b82d0 --- /dev/null +++ b/radio/config/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/IRadioConfig.aidl @@ -0,0 +1,53 @@ +/* + * 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 interface is used by telephony and telecom to talk to cellular radio for the purpose of + * radio configuration, and it is not associated with any specific modem or slot. + * All the functions have minimum one parameter: + * serial: which corresponds to serial no. of request. Serial numbers must only be memorized for the + * duration of a method call. If clients provide colliding serials (including passing the same + * serial to different methods), multiple responses (one for each method call) must still be served. + */ +/////////////////////////////////////////////////////////////////////////////// +// 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 -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 +interface IRadioConfig { + oneway void getHalDeviceCapabilities(in int serial); + oneway void getNumOfLiveModems(in int serial); + oneway void getPhoneCapability(in int serial); + oneway void getSimSlotsStatus(in int serial); + oneway void setNumOfLiveModems(in int serial, in byte numOfLiveModems); + 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 setSimSlotsMapping(in int serial, in int[] slotMap); +} diff --git a/radio/config/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/IRadioConfigIndication.aidl b/radio/config/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/IRadioConfigIndication.aidl new file mode 100644 index 0000000000..994e337c04 --- /dev/null +++ b/radio/config/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/IRadioConfigIndication.aidl @@ -0,0 +1,38 @@ +/* + * 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 -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 +interface IRadioConfigIndication { + oneway void simSlotsStatusChanged(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.config.SimSlotStatus[] slotStatus); +} diff --git a/radio/config/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/IRadioConfigResponse.aidl b/radio/config/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/IRadioConfigResponse.aidl new file mode 100644 index 0000000000..038b0aeb58 --- /dev/null +++ b/radio/config/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/IRadioConfigResponse.aidl @@ -0,0 +1,44 @@ +/* + * 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 -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 +interface IRadioConfigResponse { + oneway void getHalDeviceCapabilitiesResponse(in android.hardware.radio.RadioResponseInfo info, in boolean modemReducedFeatureSet1); + oneway void getNumOfLiveModemsResponse(in android.hardware.radio.RadioResponseInfo info, in byte numOfLiveModems); + oneway void getPhoneCapabilityResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.config.PhoneCapability phoneCapability); + oneway void getSimSlotsStatusResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.config.SimSlotStatus[] slotStatus); + oneway void setNumOfLiveModemsResponse(in android.hardware.radio.RadioResponseInfo info); + oneway void setPreferredDataModemResponse(in android.hardware.radio.RadioResponseInfo info); + oneway void setSimSlotsMappingResponse(in android.hardware.radio.RadioResponseInfo info); +} diff --git a/radio/config/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/PhoneCapability.aidl b/radio/config/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/PhoneCapability.aidl new file mode 100644 index 0000000000..c60200ce13 --- /dev/null +++ b/radio/config/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/PhoneCapability.aidl @@ -0,0 +1,41 @@ +/* + * 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 -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 PhoneCapability { + byte maxActiveData; + byte maxActiveInternetData; + boolean isInternetLingeringSupported; + byte[] logicalModemIds; +} diff --git a/radio/config/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SimSlotStatus.aidl b/radio/config/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SimSlotStatus.aidl new file mode 100644 index 0000000000..3a716cf514 --- /dev/null +++ b/radio/config/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SimSlotStatus.aidl @@ -0,0 +1,44 @@ +/* + * 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 -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 SimSlotStatus { + boolean cardActive; + int cardState; + int slotState; + String atr; + int logicalSlotId; + String iccid; + String eid; +} diff --git a/radio/config/aidl/android/hardware/radio/config/IRadioConfig.aidl b/radio/config/aidl/android/hardware/radio/config/IRadioConfig.aidl new file mode 100644 index 0000000000..bfff16aa43 --- /dev/null +++ b/radio/config/aidl/android/hardware/radio/config/IRadioConfig.aidl @@ -0,0 +1,149 @@ +/* + * 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 interface is used by telephony and telecom to talk to cellular radio for the purpose of + * radio configuration, and it is not associated with any specific modem or slot. + * All the functions have minimum one parameter: + * serial: which corresponds to serial no. of request. Serial numbers must only be memorized for the + * duration of a method call. If clients provide colliding serials (including passing the same + * serial to different methods), multiple responses (one for each method call) must still be served. + */ + +package android.hardware.radio.config; + +import android.hardware.radio.config.IRadioConfigIndication; +import android.hardware.radio.config.IRadioConfigResponse; + +@VintfStability +oneway interface IRadioConfig { + /** + * Gets the available Radio Hal capabilities on the current device. + * + * This is called once per device boot up. + * + * @param serial Serial number of request + * + * Response callback is + * IRadioConfigResponse.getHalDeviceCapabilitiesResponse() + */ + void getHalDeviceCapabilities(in int serial); + + /** + * Get the number of live modems (i.e modems that are + * enabled and actively working as part of a working telephony stack) + * + * Note: in order to get the overall number of modems available on the phone, + * refer to getPhoneCapability API + * + * @param serial Serial number of request. + * + * Response callback is IRadioConfigResponse.getNumOfLiveModemsResponse() which + * will return . + */ + void getNumOfLiveModems(in int serial); + + /** + * Request current phone capability. + * + * @param serial Serial number of request. + * + * Response callback is IRadioResponse.getPhoneCapabilityResponse() which + * will return . + */ + void getPhoneCapability(in int serial); + + /** + * Get SIM Slot status. + * + * Request provides the slot status of all active and inactive SIM slots and whether card is + * present in the slots or not. + * + * @param serial Serial number of request. + * + * Response callback is IRadioConfigResponse.getSimSlotsStatusResponse() + */ + void getSimSlotsStatus(in int serial); + + /** + * Set modems configurations by specifying the number of live modems (i.e modems that are + * enabled and actively working as part of a working telephony stack). + * + * Example: this interface can be used to switch to single/multi sim mode by specifying + * the number of live modems as 1, 2, etc + * + * Note: by setting the number of live modems in this API, that number of modems will + * subsequently get enabled/disabled + * + * @param serial serial number of request. + * @param modemsConfig byte object including the number of live modems + * + * Response callback is IRadioResponse.setNumOfLiveModemsResponse() + */ + void setNumOfLiveModems(in int serial, in byte numOfLiveModems); + + /** + * Set preferred data modem Id. + * In a multi-SIM device, notify modem layer which logical modem will be used primarily + * for data. It helps modem with resource optimization and decisions of what data connections + * should be satisfied. + * + * @param serial Serial number of request. + * @param modem Id the logical modem ID, which should match one of modem IDs returned + * from getPhoneCapability(). + * + * Response callback is IRadioConfigResponse.setPreferredDataModemResponse() + */ + void setPreferredDataModem(in int serial, in byte modemId); + + /** + * Set response functions for radio config requests & radio config indications. + * + * @param radioConfigResponse Object containing radio config response functions + * @param radioConfigIndication Object containing radio config indications + */ + void setResponseFunctions(in IRadioConfigResponse radioConfigResponse, + in IRadioConfigIndication radioConfigIndication); + + /** + * Set SIM Slot mapping. + * + * Maps the logical slots to the physical slots. Logical slot is the slot that is seen by modem. + * Physical slot is the actual physical slot. Request maps the physical slot to logical slot. + * Logical slots that are already mapped to the requested physical slot are not impacted. + * + * Example no. of logical slots 1 and physical slots 2: + * 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: + * First logical slot (index 0) can be mapped to physical slot 1 or 2 and other logical slot + * can be mapped to other physical slot. Each logical slot must be mapped to a physical slot. + * slotMap[0] = 0 and slotMap[1] = 1 or slotMap[0] = 1 and slotMap[1] = 0 + * + * @param serial Serial number of request + * @param slotMap Logical to physical slot mapping, size == no. of radio instances. Index is + * mapping to logical slot and value to physical slot, need to provide all the slots + * mapping when sending request in case of multi slot device. + * EX: uint32_t slotMap[logical slot] = physical slot + * 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 + * getSimSlotsStatusResponse + * + * Response callback is IRadioConfigResponse.setSimSlotsMappingResponse() + */ + void setSimSlotsMapping(in int serial, in int[] slotMap); +} diff --git a/radio/config/aidl/android/hardware/radio/config/IRadioConfigIndication.aidl b/radio/config/aidl/android/hardware/radio/config/IRadioConfigIndication.aidl new file mode 100644 index 0000000000..abf55f1f80 --- /dev/null +++ b/radio/config/aidl/android/hardware/radio/config/IRadioConfigIndication.aidl @@ -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. + */ + +package android.hardware.radio.config; + +import android.hardware.radio.config.SimSlotStatus; + +/** + * Interface declaring unsolicited radio config indications. + */ +@VintfStability +oneway interface IRadioConfigIndication { + /** + * Indicates SIM slot status change. + * + * This indication must be sent by the modem whenever there is any slot status change, even the + * slot is inactive. For example, this indication must be triggered if a SIM card is inserted + * into an inactive slot. + * + * @param type Type of radio indication + * @param slotStatus new slot status info with size equals to the number of physical slots on + * the device + */ + void simSlotsStatusChanged( + in android.hardware.radio.RadioIndicationType type, in SimSlotStatus[] slotStatus); +} diff --git a/radio/config/aidl/android/hardware/radio/config/IRadioConfigResponse.aidl b/radio/config/aidl/android/hardware/radio/config/IRadioConfigResponse.aidl new file mode 100644 index 0000000000..929f02df0f --- /dev/null +++ b/radio/config/aidl/android/hardware/radio/config/IRadioConfigResponse.aidl @@ -0,0 +1,124 @@ +/* + * 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; + +import android.hardware.radio.config.PhoneCapability; +import android.hardware.radio.config.SimSlotStatus; + +/** + * Interface declaring response functions to solicited radio config requests. + */ +@VintfStability +oneway interface IRadioConfigResponse { + /** + * @param info Response info struct containing response type, serial no. and error + * @param modemReducedFeatureSet1 True indicates that the modem does NOT support the following + * features. + * - Providing either LinkCapacityEstimate:secondaryDownlinkCapacityKbps + * or LinkCapacityEstimate:secondaryUplinkCapacityKbps when given from + * RadioIndication:currentLinkCapacityEstimate + * - Calling IRadio.setNrDualConnectivityState or querying + * IRadio.isNrDualConnectivityEnabled + * - Requesting IRadio.setDataThrottling() + * - Providing SlicingConfig through getSlicingConfig() + * - Providing PhysicalChannelConfig through + * IRadioIndication.currentPhysicalChannelConfigs_1_6() + * + * Valid errors returned: + * RadioError:NONE + * RadioError:RADIO_NOT_AVAILABLE + * RadioError:INTERNAL_ERR + */ + void getHalDeviceCapabilitiesResponse( + in android.hardware.radio.RadioResponseInfo info, in boolean modemReducedFeatureSet1); + + /** + * @param info Response info struct containing response type, serial no. and error + * @param numOfLiveModems indicate the number of live modems i.e. modems that + * are enabled and actively working as part of a working connectivity stack + * + * Valid errors returned: + * RadioError:NONE + * RadioError:RADIO_NOT_AVAILABLE + * RadioError:REQUEST_NOT_SUPPORTED + */ + void getNumOfLiveModemsResponse( + in android.hardware.radio.RadioResponseInfo info, in byte numOfLiveModems); + + /** + * @param info Response info struct containing response type, serial no. and error + * @param phoneCapability it defines modem's capability for example + * how many logical modems it has, how many data connections it supports. + * + * Valid errors returned: + * RadioError:NONE + * RadioError:RADIO_NOT_AVAILABLE + * RadioError:INTERNAL_ERR + */ + void getPhoneCapabilityResponse( + in android.hardware.radio.RadioResponseInfo info, in PhoneCapability phoneCapability); + + /** + * @param info Response info struct containing response type, serial no. and error + * @param slotStatus Sim slot struct containing all the physical SIM slots info with size + * equal to the number of physical slots on the device + * + * Valid errors returned: + * RadioError:NONE + * RadioError:RADIO_NOT_AVAILABLE + * RadioError:NO_MEMORY + * RadioError:INTERNAL_ERR + * RadioError:MODEM_ERR + */ + void getSimSlotsStatusResponse( + in android.hardware.radio.RadioResponseInfo info, in SimSlotStatus[] slotStatus); + + /** + * @param info Response info struct containing response type, serial no. and error + * + * Valid errors returned: + * RadioError:NONE + * RadioError:RADIO_NOT_AVAILABLE + * RadioError:REQUEST_NOT_SUPPORTED + * RadioError:INVALID_ARGUMENTS + */ + void setNumOfLiveModemsResponse(in android.hardware.radio.RadioResponseInfo info); + + /** + * @param info Response info struct containing response type, serial no. and error + * + * Valid errors returned: + * RadioError:NONE + * RadioError:RADIO_NOT_AVAILABLE + * RadioError:INTERNAL_ERR + * RadioError:INVALID_ARGUMENTS + */ + void setPreferredDataModemResponse(in android.hardware.radio.RadioResponseInfo info); + + /** + * @param info Response info struct containing response type, serial no. and error + * + * Valid errors returned: + * RadioError:NONE + * RadioError:RADIO_NOT_AVAILABLE + * RadioError:NO_MEMORY + * RadioError:INTERNAL_ERR + * RadioError:MODEM_ERR + * RadioError:INVALID_ARGUMENTS + */ + void setSimSlotsMappingResponse(in android.hardware.radio.RadioResponseInfo info); +} diff --git a/radio/config/aidl/android/hardware/radio/config/PhoneCapability.aidl b/radio/config/aidl/android/hardware/radio/config/PhoneCapability.aidl new file mode 100644 index 0000000000..bc55e3924b --- /dev/null +++ b/radio/config/aidl/android/hardware/radio/config/PhoneCapability.aidl @@ -0,0 +1,48 @@ +/* + * 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; + +/** + * Phone capability which describes the data connection capability of modem. + * It's used to evaluate possible phone config change, for example from single + * SIM device to multi-SIM device. + */ +@VintfStability +parcelable PhoneCapability { + /** + * maxActiveData defines how many logical modems can have + * PS attached simultaneously. For example, for L+L modem it + * should be 2. + */ + byte maxActiveData; + /** + * maxActiveData defines how many logical modems can have + * internet PDN connections simultaneously. For example, for L+L + * DSDS modem it’s 1, and for DSDA modem it’s 2. + */ + byte maxActiveInternetData; + /** + * Whether modem supports both internet PDN up so + * that we can do ping test before tearing down the + * other one. + */ + boolean isInternetLingeringSupported; + /** + * List of logical modem IDs. + */ + byte[] logicalModemIds; +} diff --git a/radio/config/aidl/android/hardware/radio/config/SimSlotStatus.aidl b/radio/config/aidl/android/hardware/radio/config/SimSlotStatus.aidl new file mode 100644 index 0000000000..f5ea8f99ef --- /dev/null +++ b/radio/config/aidl/android/hardware/radio/config/SimSlotStatus.aidl @@ -0,0 +1,56 @@ +/* + * 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 SimSlotStatus { + boolean cardActive; + /** + * Card state in the physical slot. Values are CardStatus.[STATE_ABSENT, STATE_PRESENT, + * STATE_ERROR, STATE_RESTRICTED]. + */ + 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 + * standards, following electrical reset of the card's chip. The ATR conveys information about + * the communication parameters proposed by the card, and the card's nature and state. + * + * This data is applicable only when cardState is CardStatus.STATE_PRESENT. + */ + 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 + * retrieved by the Device at any time using the standard GlobalPlatform GET DATA command. + * + * This data is mandatory and applicable only when cardState is CardStatus.STATE_PRESENT and SIM + * card supports eUICC. + */ + String eid; +}