# Class ISimProfileManager - Defined in [File SimProfileManager.hpp](https://docs.qualcomm.com/doc/80-PF458-2/topic/api_rst_file_tel_SimProfileManager_hpp.html#file-tel-simprofilemanager-hpp) ## Class Documentation - class ISimProfileManager - [ISimProfileManager](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00753) is a primary interface for remote eUICCs (eSIMs or embedded SIMs) provisioning.This interface provides APIs to add, delete, set profile, update nickname, provide user consent, get Eid on the eUICC. Public Functions - virtual bool isSubsystemReady() = 0 - Checks if the eUICC subsystem is ready. Deprecated Use [ISimProfileManager::getServiceStatus()](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00753_1a47844f3e26e4706e416728c036bf0377) API. - Returns: - True if [ISimProfileManager](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00753) is ready for service, otherwise returns false. - virtual std::future<bool> onSubsystemReady() = 0 - Wait for eUICC subsystem to be ready. Deprecated Use InitResponseCb in [PhoneFactory::getSimProfileManager](https://docs.qualcomm.com/doc/80-PF458-2/topic/phone.html#a00737_1a89b9e56f493c4bb1069fc3347df6bfc6) instead, to get notified about subsystem readiness. - Returns: - A future that caller can wait on to be notified when card manager is ready. - virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ServiceStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common13ServiceStatusE) getServiceStatus() = 0 - This status indicates whether the [ISimProfileManager](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00753) object is in a usable state. - Returns: - SERVICE\_AVAILABLE - If [SimProfile](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00751) Manager is ready for service. SERVICE\_UNAVAILABLE - If [SimProfile](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00751) Manager is temporarily unavailable. SERVICE\_FAILED - If [SimProfile](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00751) Manager encountered an irrecoverable failure. - virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) addProfile([SlotId](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv46SlotId) slotId, const std::string &activationCode, const std::string &confirmationCode = "", bool userConsentSupported = false, [common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00236_1a8f614f0a0eeca90c94dad1967ca93bcd.html#_CPPv4N5telux6common16ResponseCallbackE) callback = nullptr) = 0 - Add new profile to eUICC card and download and install the profile on eUICC. On platforms with access control enabled, caller needs to have TELUX\_TEL\_SIM\_PROFILE\_OPS permission to invoke this API successfully. - Parameters: - - **slotId** – **[in]** Slot identifier corresponding to the card. - **activationCode** – **[in]** Activation code. - **confirmationCode** – **[in]** Optional confirmation code required for downloading the profile. - **userConsentSupported** – **[in]** Optional User consent supported or not. - **callback** – **[in]** Optional callback function to get the result of add profile. - Returns: - Status of add profile i.e. success or suitable error code. - virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) deleteProfile([SlotId](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv46SlotId) slotId, int profileId, [common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00236_1a8f614f0a0eeca90c94dad1967ca93bcd.html#_CPPv4N5telux6common16ResponseCallbackE) callback = nullptr) = 0 - Delete profile from eUICC card. 1. Deletion of enabled profile a) This API will disable the profile first and then delete it. b) The profile is associated with profile policy rules(PPRs) so before disabling the profile, this API checks if the PPRs [telux::tel::PolicyRuleType](https://docs.qualcomm.com/doc/80-PF458-2/topic/enum_a00022_1ga5ceda2fbeac5f3942de7824135495a42.html#a00022_1ga5ceda2fbeac5f3942de7824135495a42) allow the operation. c) If the policy rules are not set, then first disabling of profile happens followed by deletion of profile. d) If disable succeeds but deletion fails, then the API attempts to roll back the profile back to the original (enabled) state. e) If rollback fails due to any reason such as eUICC being in incompatabile state then the profile will be in disabled state and the API will return telux::common::ErrorCode::ROLLBACK\_FAILED 2. Deletion of disabled profile a) This API checks the PPR telux::tel::PolicyRuleType::PROFILE\_DELETE\_NOT\_ALLOWED before deletion of profile. b) If the PPR is not set, then deletion of profile is performed. If the PPR is set, then the API returns telux::common::ErrorCode::OPERATION\_NOT\_ALLOWED. On platforms with access control enabled, caller needs to have TELUX\_TEL\_SIM\_PROFILE\_OPS permission to invoke this API successfully. - Parameters: - - **slotId** – **[in]** Slot identifier corresponding to the card. - **profileId** – **[in]** Profile identifier - **callback** – **[in]** Optional callback function to get the result of delete profile. - Returns: - Status of delete profile i.e. success or suitable error code. - virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) setProfile([SlotId](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv46SlotId) slotId, int profileId, bool enable = false, [common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00236_1a8f614f0a0eeca90c94dad1967ca93bcd.html#_CPPv4N5telux6common16ResponseCallbackE) callback = nullptr) = 0 - Enable or disable profile which allows to switch to other profile on eUICC card. On platforms with access control enabled, caller needs to have TELUX\_TEL\_SIM\_PROFILE\_OPS permission to invoke this API successfully. - Parameters: - - **slotId** – **[in]** Slot identifier corresponding to the card. - **profileId** – **[in]** Profile identifier. - **enable** – **[in]** Indicates whether a profile must be enabled or disabled. true - Enable and false - Disable. - **callback** – **[in]** Optional callback function to get the result of set profile. - Returns: - Status of set profile i.e. success or suitable error code. - virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) updateNickName([SlotId](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv46SlotId) slotId, int profileId, const std::string &nickName, [common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00236_1a8f614f0a0eeca90c94dad1967ca93bcd.html#_CPPv4N5telux6common16ResponseCallbackE) callback = nullptr) = 0 - Update nick name of the profile. On platforms with access control enabled, caller needs to have TELUX\_TEL\_SIM\_PROFILE\_OPS permission to invoke this API successfully. - Parameters: - - **slotId** – **[in]** Slot identifier corresponding to the card. - **profileId** – **[in]** Profile identifier - **nickName** – **[in]** New nick name for profile. - **callback** – **[in]** Optional callback function to get the result of update nickname. - Returns: - Status of update nick name i.e. success or suitable error code. - virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) requestProfileList([SlotId](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv46SlotId) slotId, [ProfileListResponseCb](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00022_1ga8b4e4f46ca4f9f2465583cc0a29cf586.html#_CPPv4N5telux3tel21ProfileListResponseCbE) callback) = 0 - Request list of profiles supported by the eUICC card. On platforms with access control enabled, caller needs to have TELUX\_TEL\_SIM\_PROFILE\_READ permission to invoke this API successfully. - Parameters: - - **slotId** – **[in]** Slot identifier corresponding to the card. - **callback** – **[in]** Callback function to get the result of request profile list. - Returns: - Status of request profile list i.e. success or suitable error code. - virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) requestEid([SlotId](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv46SlotId) slotId, [EidResponseCb](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00022_1ga5f06f7057a56810bd788a62a8ff677e3.html#_CPPv4N5telux3tel13EidResponseCbE) callback) = 0 - Request eUICC identifier(EID) for the slot. On platforms with access control enabled, caller needs to have TELUX\_TEL\_SIM\_PROFILE\_READ permission to invoke this API successfully. Deprecated Use [telux::tel::ICard::requestEid](https://docs.qualcomm.com/doc/80-PF458-2/topic/sim_card_services.html#a00657_1ae7b09a5f811698a13a3b24cb4b50e7de) API instead - Parameters: - - **slotId** – **[in]** Slot identifier corresponding to the card. - **callback** – **[in]** Callback function to get the result of request EID. - Returns: - Status of request EID i.e. success or suitable error code. - virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) provideUserConsent([SlotId](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv46SlotId) slotId, bool userConsent, [UserConsentReasonType](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux3tel21UserConsentReasonTypeE) reason, [common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00236_1a8f614f0a0eeca90c94dad1967ca93bcd.html#_CPPv4N5telux6common16ResponseCallbackE) callback = nullptr) = 0 - Provide user consent required for downloading and installing profile. This API should be called in response to [telux::tel::ISimProfileListener::onUserDisplayInfo](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00752_1a48efe907eb07611a2f46af03ce581293). On platforms with access control enabled, caller needs to have TELUX\_TEL\_SIM\_PROFILE\_USER\_CONSENT permission to invoke this API successfully. - Parameters: - - **slotId** – **[in]** Slot identifier corresponding to the card. - **userConsent** – **[in]** Consent for profile download and install. True means user consent given to download and install. - **reason** – **[in]** Reason for not providing user consent to download and install. [telux::tel::UserConsentReasonType](https://docs.qualcomm.com/doc/80-PF458-2/topic/enum_a00022_1gaf1da9586e0a10370e6dd77a305a7162a.html#a00022_1gaf1da9586e0a10370e6dd77a305a7162a) - **callback** – **[in]** Optional callback function to get the result of user consent request. - Returns: - Status of user consent request i.e. success or suitable error code. - virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) provideConfirmationCode([SlotId](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv46SlotId) slotId, std::string code, [common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00236_1a8f614f0a0eeca90c94dad1967ca93bcd.html#_CPPv4N5telux6common16ResponseCallbackE) callback = nullptr) = 0 - Provide confirmation code required for downloading and installing profile. This API should be called in response to [telux::tel::ISimProfileListener::onConfirmationCodeRequired](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00752_1a3cf1ac237518dd0e3eb0bf4f5d97c622). On platforms with access control enabled, caller needs to have TELUX\_TEL\_SIM\_PROFILE\_OPS permission to invoke this API successfully. - Parameters: - - **slotId** – **[in]** Slot identifier corresponding to the card. - **code** – **[in]** Confirmation code for profile download and install. - **callback** – **[in]** Optional callback function to get the result of confirmation request. - Returns: - Status of provide confirmation code i.e. success or suitable error code. - virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) requestServerAddress([SlotId](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv46SlotId) slotId, [ServerAddressResponseCb](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00022_1ga2fc58f41ca990a0b714e30696333aeb3.html#_CPPv4N5telux3tel23ServerAddressResponseCbE) callback) = 0 - Get Subscription Manager Data Preparation (SM-DP+) address and the Subscription Manager Discovery Server (SMDS) address configured on the eUICC. On platforms with access control enabled, caller needs to have TELUX\_TEL\_SIM\_PROFILE\_READ permission to invoke this API successfully. - Parameters: - - **slotId** – **[in]** Slot identifier corresponding to the card. - **callback** – **[in]** Callback function to get the result of server address request. - Returns: - Status of server address request i.e. success or suitable error code. - virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) setServerAddress([SlotId](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv46SlotId) slotId, const std::string &smdpAddress, [common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00236_1a8f614f0a0eeca90c94dad1967ca93bcd.html#_CPPv4N5telux6common16ResponseCallbackE) callback = nullptr) = 0 - Set Subscription Manager Data Preparation (SM-DP+) address on the eUICC. If SMDP+ address length is zero then the existing SM-DP+ address on the eUICC is removed. On platforms with access control enabled, caller needs to have TELUX\_TEL\_SIM\_PROFILE\_CONFIG permission to invoke this API successfully. - Parameters: - - **slotId** – **[in]** Slot identifier corresponding to the card. - **smdpAddress** – **[in]** SM-DP+ address to be configured on the eUICC. - **callback** – **[in]** Optional Callback function to get the result of set SM-DP+ request. - Returns: - Status of set server address request i.e. success or suitable error code. - virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) memoryReset([SlotId](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv46SlotId) slotId, [ResetOptionMask](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00022_1ga10f45d8d513466dc3914323eeedb64d3.html#_CPPv4N5telux3tel15ResetOptionMaskE) mask, [common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00236_1a8f614f0a0eeca90c94dad1967ca93bcd.html#_CPPv4N5telux6common16ResponseCallbackE) callback = nullptr) = 0 - Resets the memory of the eUICC card based on [telux::tel::ResetOptionMask](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00022_1ga10f45d8d513466dc3914323eeedb64d3). On platforms with access control enabled, caller needs to have TELUX\_TEL\_SIM\_PROFILE\_OPS permission to invoke this API successfully. - Parameters: - - **slotId** – **[in]** Slot identifier corresponding to the card. - **mask** – **[in]** Memory reset options mask [telux::tel::ResetOptionMask](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00022_1ga10f45d8d513466dc3914323eeedb64d3) - **callback** – **[in]** Optional Callback function to get the result of memory reset request. - Returns: - Status of memory reset request i.e. success or suitable error code. - virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) registerListener(std::weak\_ptr<[ISimProfileListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00752.html#_CPPv4N5telux3tel19ISimProfileListenerE)> listener) = 0 - Register a listener to listen for status of specific events like download and installation of profile on eUICC. - Parameters: - **listener** – **[in]** Pointer of [ISimProfileListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00752) object that processes the notification. - Returns: - Status of registerListener success or suitable status code - virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) deregisterListener(std::weak\_ptr<[ISimProfileListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00752.html#_CPPv4N5telux3tel19ISimProfileListenerE)> listener) = 0 - De-register the listener. - Parameters: - **listener** – **[in]** Pointer of [ISimProfileListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00752) object that needs to be removed - Returns: - Status of deregisterListener success or suitable status code - inline virtual ~ISimProfileManager() - Destructor for [ISimProfileManager](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00753) Last Published: Jun 24, 2026 [Previous Topic Class ISimProfileListener](https://docs.qualcomm.com/bundle/publicresource/80-PF458-2/topics/class_a00752.md) [Next Topic Class ISmscAddressCallback](https://docs.qualcomm.com/bundle/publicresource/80-PF458-2/topics/class_a00761.md)