# Multi-SIM

**Detailed Description**

This section contains APIs related to Multi SIM DSDA Configuration.

- *group* Telematics\_multi\_sim

    - Typedefs

- using HighCapabilityCallback = std::function&lt;void(int slotId, [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[ErrorCode](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6common9ErrorCodeE) error)&gt;

    - This function is called in the response to requestHighCapability API.

The callback can be invoked from multiple different threads. The implementation should be thread safe.

- Param slotId:

    - **[in]** SIM corresponding to slot identifier has high capability.

- Param error:

    - **[in]** Return code which indicates whether the operation succeeded or not ErrorCode

- using SlotStatusCallback = std::function&lt;void(std::map&lt;[SlotId](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv46SlotId), SlotStatus&gt; slotStatus, [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[ErrorCode](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6common9ErrorCodeE) error)&gt;

    - This function is called in response to requestSlotStatus API.

The callback can be invoked from multiple different threads. The implementation should be thread safe.

- Param slotStatus:

    - **[in]** list of slots status [SlotStatus](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00719)

- Param error:

    - **[in]** Return code which indicates whether the operation succeeded or not ErrorCode

Enums

- enum SlotState

    - Represents state of the physical SIM slot

*Values:*

- enumerator UNKNOWN

    - 

- enumerator INACTIVE

    - Slot is inactive

- enumerator ACTIVE

    - Slot is active

- enum PortState

    - Represents the state of the port associated with a physical SIM slot.

*Values:*

- enumerator UNKNOWN

    - Port state is unknown

- enumerator INACTIVE

    - Port is inactive

- enumerator ACTIVE

    - Port is active

- struct LogicalSlotMapInfo

    - Represents the mapping of logical slot to physical SIM slot and portId.

Public Members

- [PhysicalSlotId](https://docs.qualcomm.com/doc/80-PF458-10/topic/typedef_a00023_1ga8fcc44be28352ba0a7da535280d70860.html#_CPPv414PhysicalSlotId) physicalSlot

    - Physical slot identifier

- int portId

    - Port identifier for the mapped physical slot

- struct PortInfo

    - Represents the port information on a physical SIM slot.

Public Members

- [PortState](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux3tel9PortStateE) state

    - State of the port associated with a physical SIM slot

- std::string iccId

    - Integrated circuit card identifier (ICCID) of the profile mapped on
    Copy to clipboard

 the port

- [LogicalSlotId](https://docs.qualcomm.com/doc/80-PF458-10/topic/typedef_a00023_1ga445098b79da0ddb95dd8202bb5670464.html#_CPPv413LogicalSlotId) slotId

    - Logical slot identifier associated with the port

- struct MepSlotInfo

    - Represents MEP mode and port information of a physical SIM slot.

Public Members

- [Mode](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux3tel4ModeE) mode

    - MEP mode of the SIM card

- std::vector&lt;[PortInfo](https://docs.qualcomm.com/doc/80-PF458-10/topic/struct_a00716.html#_CPPv4N5telux3tel8PortInfoE)&gt; port

    - Port information of various ports for the physical slot

- struct SimSlotStatus

    - Represents the status of a physical SIM slot, which may contain either a MEP or non-MEP card.

Public Members

- bool isMep

    - Indicates whether the SIM card is a MEP card

- [MepSlotInfo](https://docs.qualcomm.com/doc/80-PF458-10/topic/struct_a00717.html#_CPPv4N5telux3tel11MepSlotInfoE) mepSlotInfo

    - Provides MEP information of the physical SIM slot

- [SlotState](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux3tel9SlotStateE) slotState

    - State of the physical SIM slot

- [CardState](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux3tel9CardStateE) cardState

    - Status of the card in the physical slot

- [CardError](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux3tel9CardErrorE) cardError

    - Indicates the reason for the card error, and is valid only
    Copy to clipboard

 when the card state is CARDSTATE\_ERROR.

- struct SlotStatus

    - Represents status of a physical SIM slot with a non MEP SIM card. Deprecated - Use [telux::tel::SimSlotStatus](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00718) instead.

Public Members

- [SlotState](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux3tel9SlotStateE) slotState

    - State of the physical SIM slot

- [CardState](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux3tel9CardStateE) cardState

    - Status of the card in the physical slot

- [CardError](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux3tel9CardErrorE) cardError

    - Indicates the reason for the card error, and is valid only
    Copy to clipboard

 when the card state is CARDSTATE\_ERROR.

- class IMultiSimManager

    - MultiSimManager allows to perform operation pertaining to devices which have more than one SIM/UICC card. Clients should check if the subsystem is ready before invoking any of the APIs as follows.

bool isReady = MultiSimManager-&gt;[isSubsystemReady()](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00720_1ad65e71882fe67a3cc26b4eb67a5e2b85);

Public Functions

- virtual bool isSubsystemReady() = 0

    - Checks the status of Multi SIM subsystem and returns the result.

- Returns:

    - If true MultiSimManager is ready. Deprecated Use [IMultiSimManager::getServiceStatus()](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00720_1a2025cb4e7e8e4e62a65cf5daaa9a63d2) API.

- virtual std::future&lt;bool&gt; onSubsystemReady() = 0

    - Wait for Multi SIM subsystem to be ready.

- Returns:

    - A future that caller can wait on to be notified when Multi SIM subsystem is ready. Deprecated Use InitResponseCb in [PhoneFactory::getMultiSimManager](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00742_1af9ee1602d0989d6f6af4c3bd8c967772) instead, to get notified about subsystem readiness.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[ServiceStatus](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6common13ServiceStatusE) getServiceStatus() = 0

    - This status indicates whether the [IMultiSimManager](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00720) object is in a usable state.

- Returns:

    - SERVICE\_AVAILABLE - If MultiSim manager is ready for service. SERVICE\_UNAVAILABLE - If MultiSim manager is temporarily unavailable. SERVICE\_FAILED - If MultiSim manager encountered an irrecoverable failure.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6common6StatusE) getSlotCount(int &count) = 0

    - Get SIM slot count. The count can be used to determine whether the device supports multi SIM.

- Parameters:

    - **count** – **[out]** Slot count.

- Returns:

    - Status of getSlotCount i.e. success or suitable error code.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6common6StatusE) requestHighCapability([HighCapabilityCallback](https://docs.qualcomm.com/doc/80-PF458-10/topic/typedef_a00040_1ga41f91dcac6a1ecf60521ee7313670a1a.html#_CPPv4N5telux3tel22HighCapabilityCallbackE) callback) = 0

    - Request to find out which SIM/slot is allowed to use advance Radio Technology like 5G at a time. For example SIM/slot with high capability may allowed to use RAT capabilities like 5G/4G/3G/2G while the SIM/slot with low capability may be allowed to use RAT capabilities like 4G/2G.

- Parameters:

    - **callback** – **[in]** Callback function to get the response of request high capability.

- Returns:

    - Status of requestHighCapability i.e. success or suitable error code.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6common6StatusE) setHighCapability(int slotId, [common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-10/topic/typedef_a00236_1a8f614f0a0eeca90c94dad1967ca93bcd.html#_CPPv4N5telux6common16ResponseCallbackE) callback = nullptr) = 0

    - Set SIM/slot with high capability asynchronously. On dual SIM devices, only one SIM may be allowed to use advanced Radio technology like 5G at a time. This API sets the SIM/slot that should be allowed the highest RAT capability. The other SIM/slot will be given lower RAT capabilities. For example, SIM in slot1 will be allowed 2G/3G/4G/5G and the SIM in slot2 will be allowed only 2G/4G.

On platforms with Access control enabled, Caller needs to have TELUX\_TEL\_MULTISIM\_MGMT permission to invoke this API successfully.

- Parameters:

    - - **slotId** – **[in]** Slot set with high capablity.
- **callback** – **[in]** Callback function to get the response of set high capability request.

- Returns:

    - Status of setHighCapability i.e. success or suitable error code.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6common6StatusE) switchActiveSlot([SlotId](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv46SlotId) slotId, [common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-10/topic/typedef_a00236_1a8f614f0a0eeca90c94dad1967ca93bcd.html#_CPPv4N5telux6common16ResponseCallbackE) callback = nullptr) = 0

    - Choose the physical SIM slot to be used by modem on Single-SIM TCU platforms. After switching the slot, only the SIM on chosen physical slot can be used for WWAN functionality.

On platforms with Access control enabled, Caller needs to have TELUX\_TEL\_MULTISIM\_MGMT permission to invoke this API successfully.

- Parameters:

    - - **slotId** – **[in]** physical slot to be made active
- **callback** – **[in]** Callback function to get the response of slot switch request

- Returns:

    - Status of switchActiveSlot i.e. success or suitable error code.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6common6StatusE) configureLogicalSlotMapping(std::map&lt;[LogicalSlotId](https://docs.qualcomm.com/doc/80-PF458-10/topic/typedef_a00023_1ga445098b79da0ddb95dd8202bb5670464.html#_CPPv413LogicalSlotId), [LogicalSlotMapInfo](https://docs.qualcomm.com/doc/80-PF458-10/topic/struct_a00715.html#_CPPv4N5telux3tel18LogicalSlotMapInfoE)&gt; mapInfo, [common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-10/topic/typedef_a00236_1a8f614f0a0eeca90c94dad1967ca93bcd.html#_CPPv4N5telux6common16ResponseCallbackE) callback = nullptr) = 0

    - Configure logical slot to physical slot and port.

Logical slot index [telux::common::LogicalSlotId](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00023_1ga445098b79da0ddb95dd8202bb5670464) - It refers to the logical modem stack that is mapped to a physical slot.

Physical slot index telux::tel::PhysicalToPort::physicalSlot - Unique index referring to a physical SIM slot on the device. This differs from the number of logical slots a device has, which corresponds to the number of active slots a device is capable of using. For example, if device has two physical slots but only one active slot, holding MEP card with two enabled profiles, it will have two logical slots telux::common::LogicalSlotId::SLOT\_ID\_1 and telux::common::LogicalSlotId::SLOT\_ID\_2 but only one physical slot [telux::common::PhysicalSlotId](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00023_1ga8fcc44be28352ba0a7da535280d70860).

Port index telux::tel::PhysicalToPort::portId - Unique index referring to a port belonging to the physical SIM slot. For UICC/ eUICC card with single enabled profile (SEP) the port information is not applicable. However, it’s port index value is 0 by default.

Currently device supports MEP mode telux::tel::Mode::MEP\_A1 and telux::tel::Mode::MEP\_B. MEP sim card telux::tel::Mode::MEP\_B : Port Index starts from 0 and the maximum number of supported ports is defined by the baseband’s capabilities. MEP sim card telux::tel::Mode::MEP\_A1 : Port Index starts from 1 and the maximum number of supported ports is defined by the baseband’s capabilities. It’s value is unique within a physical slot but can be identical across different physical slots.

This API should be used when the application needs to dynamically map logical modem stacks to physical SIM slots and ports based on MEP/SEP (eUICC) or traditional physical SIM (UICC) configurations.

a) Configure a MEP card with two enabled profiles.

b) Configure a SEP card with one enabled profile and MEP card with one enabled profile.

Application is expected to configure the device with dual-sim configuration with MULTISIM\_CONFIG=dsda or MULTISIM\_CONFIG=dsds in /etc/tel.conf file.

Configuration: mapInfo[0]= {telux::common::LogicalSlotId::SLOT\_ID\_1, {telux::common::PhysicalSlotId::SLOT\_ID\_1,1}} , mapInfo[1]= {telux::common::LogicalSlotId::SLOT\_ID\_2, {telux::common::PhysicalSlotId::SLOT\_ID\_1,2}}

The configuration remains persistent across device reboot. The information about this transition is notified using [telux::tel::IMultiSimListener::onSlotStatusChanged](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00721_1a66925dca9d46a400db52a36932ea3e71)(std::map&lt;PhysicalSlotId, [SimSlotStatus](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00718)&gt; slotStatus). Application must monitor the slotStatus::slotState and mepSlotInfo::port::state data to determine operation completeness has been achieved or not as the transition might take few seconds to complete.

Mapping Overview for MEP A1 card with two enabled profiles on physical slot 1:

- Both logical slots are mapped to the same physical slot (eUICC).
- Each logical slot uses a unique port to access a distinct profile.
- Enables dual-profile operation on a single MEP A1 card.
- Logical Slot 1 ↔ Port 1 ↔ Profile A
- Logical Slot 2 ↔ Port 2 ↔ Profile B +——————+——————+ | Logical Slot 1 | Logical Slot 2 | +——————+——————+ | Port 1 | Port 2 | +——————+——————+ | Physical Slot 1 | +——————+——————+ | Profile A | Profile B | +——————+——————+

Below are the sequence of steps to be followed to download, enable or disable profile for MEP card. 1.Download profile: Exchanging APDUs with the card using logical channel. 1.1 Open the logical channel by providing application identifier(AID) = A0000005591010FFFFFFFF8900000100 [telux::tel::ICard::openLogicalChannel](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00658_1ad2ef78cc9332da1a1b7a0bf36b451c6b). 1.2 Exchange the APDUs [telux::tel::ICard::transmitApduLogicalChannel](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00658_1af5c660155843723cff6eee67313a15fe) in the APDU request to download profile. 1.3 Close the channel once APDU exchange is complete telux::tel::ICard:: closeLogicalChannel. 2.Enable/disable profile: Exchanging APDUs with the card using logical channel. Follow the sequence below for exchanging the APDUs. 2.1 Open the logical channel by providing application identifier(AID) = A0000005591010FFFFFFFF8900000100 [telux::tel::ICard::openLogicalChannel](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00658_1ad2ef78cc9332da1a1b7a0bf36b451c6b). 2.2 Exchange the APDUs [telux::tel::ICard::transmitApduLogicalChannel](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00658_1af5c660155843723cff6eee67313a15fe) and specify the portId using [telux::tel::ICard::getMepInfo()](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00658_1a05d0fa25ffe15caf612ea7e9c1fff616)

in the APDU request to enable or disable profile.

On platforms with access control enabled, caller needs to have TELUX\_TEL\_CARD\_OPS permission to invoke this API successfully.

Note

PortId in a APDU transcations is required only in MEP A1 mode telux::tel::Mode::MEP\_A1 . 2.3 Close the channel once APDU exchange is complete telux::tel::ICard:: closeLogicalChannel.

- Parameters:

    - - **mapInfo** – **[in]** A map of logical to physical slot and port. For instance, consider a device with dual baseband support and application wishes to configure MEP A1 card with two enabled profiles.
- **callback** – **[in]** Callback function to get the response of configureLogicalSlotMapping request.

- Returns:

    - ErrorCode of configureLogicalSlotMapping i.e. success or suitable error code.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[ErrorCode](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6common9ErrorCodeE) getLogicalSlotMapping(std::map&lt;[LogicalSlotId](https://docs.qualcomm.com/doc/80-PF458-10/topic/typedef_a00023_1ga445098b79da0ddb95dd8202bb5670464.html#_CPPv413LogicalSlotId), [LogicalSlotMapInfo](https://docs.qualcomm.com/doc/80-PF458-10/topic/struct_a00715.html#_CPPv4N5telux3tel18LogicalSlotMapInfoE)&gt; &mapInfo) = 0

    - Retrieves the logical slot to physical slot and port.

On platforms with access control enabled, caller needs to have TELUX\_TEL\_CARD\_OPS permission to invoke this API successfully.

- Parameters:

    - **mapInfo** – **[out]** A map of logical to physical slot and port.

- Returns:

    - ErrorCode of getLogicalSlotMapping i.e. success or suitable error code.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[ErrorCode](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6common9ErrorCodeE) getPhysicalSlotStatus(std::map&lt;[PhysicalSlotId](https://docs.qualcomm.com/doc/80-PF458-10/topic/typedef_a00023_1ga8fcc44be28352ba0a7da535280d70860.html#_CPPv414PhysicalSlotId), [SimSlotStatus](https://docs.qualcomm.com/doc/80-PF458-10/topic/struct_a00718.html#_CPPv4N5telux3tel13SimSlotStatusE)&gt; &slotStatus) = 0

    - Retrieves the status of physical SIM slots for MEP or non-MEP SIM card.

On platforms with access control enabled, caller needs to have TELUX\_TEL\_CARD\_OPS permission to invoke this API successfully.

- Parameters:

    - **slotStatus** – **[out]** Map containing physical slot identifiers and their corresponding [telux::tel::SimSlotStatus](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00718) information.

- Returns:

    - ErrorCode of getPhysicalSlotStatus i.e. success or suitable error code.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6common6StatusE) registerListener(std::weak\_ptr&lt;[IMultiSimListener](https://docs.qualcomm.com/doc/80-PF458-10/topic/class_a00721.html#_CPPv4N5telux3tel17IMultiSimListenerE)&gt; listener) = 0

    - Register a listener for specific events in the Multi SIM subsystem.

- Parameters:

    - **listener** – **[in]** Pointer to [IMultiSimListener](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00721) object that processes the notification

- Returns:

    - Status of registerListener i.e. success or suitable error code.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6common6StatusE) deregisterListener(std::weak\_ptr&lt;[IMultiSimListener](https://docs.qualcomm.com/doc/80-PF458-10/topic/class_a00721.html#_CPPv4N5telux3tel17IMultiSimListenerE)&gt; listener) = 0

    - Deregister the previously added listener.

- Parameters:

    - **listener** – **[in]** Pointer to [IMultiSimListener](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00721) object that needs to be deregistered.

- Returns:

    - Status of deregisterListener i.e. success or suitable error code.

- inline virtual ~IMultiSimManager()

    - 

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6common6StatusE) requestSlotStatus([SlotStatusCallback](https://docs.qualcomm.com/doc/80-PF458-10/topic/typedef_a00040_1ga52964602d27e7b0b5aec7761fd233a67.html#_CPPv4N5telux3tel18SlotStatusCallbackE) callback) = 0

    - Request the status of physical slots.

Deprecated Use [IMultiSimManager::getPhysicalSlotStatus](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00720_1a1436eeb6c46c01d55d31c8e4716a21f1) instead.

- Parameters:

    - **callback** – **[in]** Callback function to get the response of slot status request

- Returns:

    - Status of requestSlotStatus i.e. success or suitable error code.

- class IMultiSimListener : public [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[IServiceStatusListener](https://docs.qualcomm.com/doc/80-PF458-10/topic/class_a00049.html#_CPPv4N5telux6common22IServiceStatusListenerE)

    - Listener class for getting high capability change notification. The listener method can be invoked from multiple different threads. Client needs to make sure that implementation is thread-safe.

Public Functions

- inline virtual void onHighCapabilityChanged(int slotId)

    - This function is called whenever there is change in high capability for SIM/slot.

- Parameters:

    - **slotId** – **[in]** SIM corresponding to slot identifier has high capability now.

- inline virtual void onSlotStatusChanged(std::map&lt;[PhysicalSlotId](https://docs.qualcomm.com/doc/80-PF458-10/topic/typedef_a00023_1ga8fcc44be28352ba0a7da535280d70860.html#_CPPv414PhysicalSlotId), [SimSlotStatus](https://docs.qualcomm.com/doc/80-PF458-10/topic/struct_a00718.html#_CPPv4N5telux3tel13SimSlotStatusE)&gt; slotStatus)

    - This function is called whenever there is change in physical SIM slots status for a MEP or Non MEP SIM card.

Physical slot status can change during below usecases: 1) When application configures physical to logical slot using [IMultiSimManager::configureLogicalSlotMapping](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00720_1a160fee3e70696f6b25abecb985707398) . 2) When application download, enable or disable the MEP profile using ICardManager::transmitApduLogicalChannel on a logical slot.

Note

: In SEP card, the contents of status.isMep is false , status.port.mep mode is NONE status.port.isActive is telux::tel::PortState::INACTIVE and status.port.iccid = 0 .

- Parameters:

    - **slotStatus** – **[in]** list of slots status [telux::tel::SimSlotStatus](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00718)

- inline virtual void onSlotStatusChanged(std::map&lt;[SlotId](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv46SlotId), [SlotStatus](https://docs.qualcomm.com/doc/80-PF458-10/topic/struct_a00719.html#_CPPv4N5telux3tel10SlotStatusE)&gt; slotStatus)

    - This function is called whenever there is change in physical SIM slots status.

Deprecated Use IMultiSimManager::onSlotStatusChanged(std::map&lt;SlotId, SimSlotStatus&gt; &slotStatus) instead.

- Parameters:

    - **slotStatus** – **[in]** list of slots status [SlotStatus](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00719)

- inline virtual ~IMultiSimListener()

    - Destructor of [IMultiSimListener](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#a00721)

Last Published: Mar 31, 2026

[Previous Topic
telux::tel::IImsSettingsListener](https://docs.qualcomm.com/bundle/publicresource/80-PF458-10/topics/ims_settings.md) [Next Topic
Subscription management](https://docs.qualcomm.com/bundle/publicresource/80-PF458-10/topics/subscription_management.md)