# Remote SIM provisioning

**Detailed Description**

This section contains APIs related to Remote SIM provisioning.

- *group* Telematics\_rsp

    - Typedefs

- using PolicyRuleMask = std::bitset&lt;16&gt;

    - 16 bit mask that denotes which of the profile policy rules(PPR) defined in Policy Rule Type enum are used.

- using ResetOptionMask = std::bitset&lt;64&gt;

    - 64 bit mask that denotes which of the reset options defined in @ ref ResetOption enum are used.

- using ProfileListResponseCb = std::function&lt;void(const std::vector&lt;std::shared\_ptr&lt;SimProfile&gt;&gt; &profiles, telux::common::[ErrorCode](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga84acdb74b7d34616b1ca497c7369810d.html#_CPPv4N5telux6common9ErrorCodeE) error)&gt;

    - This function is called with the response to requestProfileList API.

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

- Param info:

    - **[in]** Profiles information [telux::tel::SimProfile](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00746).

- Param error:

    - **[in]** Return code which indicates whether the operation succeeded or not. [telux::common::ErrorCode](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga84acdb74b7d34616b1ca497c7369810d.html#a00023_1ga84acdb74b7d34616b1ca497c7369810d).

- using EidResponseCb = std::function&lt;void(std::string eid, telux::common::[ErrorCode](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga84acdb74b7d34616b1ca497c7369810d.html#_CPPv4N5telux6common9ErrorCodeE) error)&gt;

    - This function is called with the response to requestEid API.

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

- Param eid:

    - **[in]** eUICC identifier.

- Param error:

    - **[in]** Return code which indicates whether the operation succeeded or not. [telux::common::ErrorCode](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga84acdb74b7d34616b1ca497c7369810d.html#a00023_1ga84acdb74b7d34616b1ca497c7369810d).

- using ServerAddressResponseCb = std::function&lt;void(std::string smdpAddress, std::string smdsAddress, telux::common::[ErrorCode](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga84acdb74b7d34616b1ca497c7369810d.html#_CPPv4N5telux6common9ErrorCodeE) error)&gt;

    - This function is called with the response to requestServerAddress API.

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

- Param smdpAddress:

    - **[in]** Configured SM-DP+ address on the eUICC.

- Param smdsAddress:

    - **[in]** Configured SMDS address on the eUICC.

- Param error:

    - **[in]** Return code which indicates whether the operation succeeded or not. [telux::common::ErrorCode](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga84acdb74b7d34616b1ca497c7369810d.html#a00023_1ga84acdb74b7d34616b1ca497c7369810d).

Enums

- enum ApduExchangeStatus

    - Indicates Application Protocol Data Unit (APDU) exchange status.

*Values:*

- enumerator SUCCESS

    - APDU exchange is success

- enumerator FAILURE

    - APDU exchange is failed

- enum HttpResult

    - Defines the HTTP request result.

*Values:*

- enumerator TRANSACTION\_SUCCESSFUL

    - HTTP request successful

- enumerator UNKNOWN\_ERROR

    - Unknown error

- enumerator HTTP\_SERVER\_ERROR

    - Server error

- enumerator HTTP\_TLS\_ERROR

    - TLS error

- enumerator HTTP\_NETWORK\_ERROR

    - Network error

- enum ProfileType

    - Indicates profile type of card

*Values:*

- enumerator UNKNOWN

    - 

- enumerator REGULAR

    - Regular profile

- enumerator EMERGENCY

    - Emergency profile

- enum IconType

    - Indicates profile icon type.

*Values:*

- enumerator NONE

    - No icon information

- enumerator JPEG

    - JPEG icon

- enumerator PNG

    - PNG icon

- enum ProfileClass

    - Indicates profile class.

*Values:*

- enumerator UNKNOWN

    - No info about profile class

- enumerator TEST

    - Test profile

- enumerator PROVISIONING

    - Provisioning profile

- enumerator OPERATIONAL

    - Operational profile

- enum DownloadStatus

    - Indicates profile download status.

*Values:*

- enumerator DOWNLOAD\_ERROR

    - Profile download error

- enumerator DOWNLOAD\_INSTALLATION\_COMPLETE

    - Profile download and installation is complete

- enum DownloadErrorCause

    - Indicates profile download error cause.

*Values:*

- enumerator GENERIC

    - Generic error

- enumerator SIM

    - Error from the SIM card

- enumerator NETWORK

    - Error from the network

- enumerator MEMORY

    - Error due to no memory

- enumerator UNSUPPORTED\_PROFILE\_CLASS

    - Unsupported profile class

- enumerator PPR\_NOT\_ALLOWED

    - Profile policy rules not allowed

- enumerator END\_USER\_REJECTION

    - End user rejection

- enumerator END\_USER\_POSTPONED

    - End user postponed

- enum UserConsentReasonType

    - Indicates the reason for user consent not provided.

*Values:*

- enumerator END\_USER\_REJECTION

    - End user rejection

- enumerator END\_USER\_POSTPONED

    - End user postponed

- enum PolicyRuleType

    - Defines profile policy rules(PPR). Each value represents corresponding bit for PprMask bitset.

*Values:*

- enumerator PROFILE\_DISABLE\_NOT\_ALLOWED

    - Disabling of the profile is not allowed

- enumerator PROFILE\_DELETE\_NOT\_ALLOWED

    - Deletion of the profile is not allowed

- enumerator PROFILE\_DELETE\_ON\_DISABLE

    - Deletion of the profile is required on successful disabling

- enum ResetOption

    - Defines memory reset options. Each value represents corresponding bit for ResetOptionMask bitset.

*Values:*

- enumerator TEST\_PROFILES

    - Delete all the test profiles

- enumerator OPERATIONAL\_PROFILE

    - Delete all operational profiles

- enumerator DEFAULT\_SMDP\_ADDRESS

    - Reset the default SM-DP+ address

- class IApSimProfileManager

    - [IApSimProfileManager](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00633) is the primary interface that enables the modem to interact with a Local Profile Assistant (LPA) running on the application processor (AP). The modem initiates profile-related operations such as retrieving profiles and enabling or disabling profile. When an AP-based LPA is enabled, LPA on AP will respond to the modem’s notifications regarding these profile-related operation request. The LPA on AP can use the APIs in this class to handle requests from the modem for various SIM profile operations, including:

1. Retrieving profile details
2. Enabling profile on the eUICC
3. Disabling profile on the eUICC

Public Functions

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

    - This status indicates whether the [IApSimProfileManager](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00633) object is in a usable state.

Note

Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility.

- Returns:

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

- virtual telux::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) sendRetrieveProfileListResponse([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, [ApduExchangeStatus](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00022_1gaf127dec53d986b33814b643604e07465.html#_CPPv4N5telux3tel18ApduExchangeStatusE) result, uint32\_t referenceId, std::vector&lt;std::string&gt; profileIccIds, common::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-8/topic/typedef_a00235_1a8f614f0a0eeca90c94dad1967ca93bcd.html#_CPPv4N5telux6common16ResponseCallbackE) callback = nullptr) = 0

    - Sends the list of ICCIDs for the profiles requested by the modem. This API should be called in response to notification telux::tel::IApSimProfileListener:: onRetrieveProfileListRequest received to retrieve profiles information request. The LPA on the AP retrieves the list of ICCIDs for the profiles by exchanging the APDUs with the card using logical channel [telux::tel::ICard::transmitApduLogicalChannel](https://docs.qualcomm.com/doc/80-PF458-8/topic/sim_card_services.html#a00652_1a1f73212ff36f4ea71ed0b27d32610f46) and sends them back to the modem.

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

Note

Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility.

- Parameters:

    - - **slotId** – **[in]** Logical slot identifier corresponding to the card.
- **result** – **[in]** Status indicating whether the LPA on AP was able to service the request from the modem to retrieve the ICCIDs.
- **referenceId** – **[in]** Serves as a token, the LPA on the AP must pass the same reference ID provided in the [telux::tel::IApSimProfileListener](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00632) ::onRetrieveProfileListRequest notification. This identifies the specific notification request to which the profile operation response pertains.
- **profileIccIds** – **[in]** List of ICCIDs for the profiles.
- **callback** – **[in]** Optional callback function to get the result of profile list response send to modem.

- Returns:

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

- virtual telux::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) sendProfileOperationResponse([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, [ApduExchangeStatus](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00022_1gaf127dec53d986b33814b643604e07465.html#_CPPv4N5telux3tel18ApduExchangeStatusE) result, uint32\_t referenceId, common::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-8/topic/typedef_a00235_1a8f614f0a0eeca90c94dad1967ca93bcd.html#_CPPv4N5telux6common16ResponseCallbackE) callback = nullptr) = 0

    - Sends a response to the modem request received for enabling or disabling the profile. This API should be called in response to notification telux::tel:: [IApSimProfileListener::onProfileOperationRequest](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00632_1af3bc65ca4b4c108f6cdefaf268c8f50c) received to perform operation on the the profile. The LPA on the AP enables or disables profile by exchanging APDUs with the card using logical channel [telux::tel::ICard::transmitApduLogicalChannel](https://docs.qualcomm.com/doc/80-PF458-8/topic/sim_card_services.html#a00652_1a1f73212ff36f4ea71ed0b27d32610f46)

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

Note

Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility.

- Parameters:

    - - **slotId** – **[in]** Logical slot identifier corresponding to the card.
- **result** – **[in]** Status indicating whether the LPA on AP was able to service the request from the modem to enable or disable the profile.
- **referenceId** – **[in]** Serves as a token, the LPA on the AP must pass the same reference ID provided in the [telux::tel::IApSimProfileListener](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00632) ::onProfileOperationRequest notification. This identifies the specific notification request to which the profile operation response pertains.
- **callback** – **[in]** Optional callback function to get the result of profile operation response send to the modem.

- Returns:

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

- virtual telux::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) registerListener(std::weak\_ptr&lt;[IApSimProfileListener](https://docs.qualcomm.com/doc/80-PF458-8/topic/class_a00632.html#_CPPv4N5telux3tel21IApSimProfileListenerE)&gt; listener) = 0

    - Register a listener to listen for requests to retrieve profile list, enable or disable profile on eUICC triggered by the modem.

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

Note

Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility.

- Parameters:

    - **listener** – **[in]** Pointer of [IApSimProfileListener](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00632) object that processes the notification.

- Returns:

    - Status of registerListener success or suitable status code.

- virtual telux::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) deregisterListener(std::weak\_ptr&lt;[IApSimProfileListener](https://docs.qualcomm.com/doc/80-PF458-8/topic/class_a00632.html#_CPPv4N5telux3tel21IApSimProfileListenerE)&gt; listener) = 0

    - De-register the listener.

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

Note

Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility.

- Parameters:

    - **listener** – **[in]** Pointer of [IApSimProfileListener](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00632) object that needs to be removed.

- Returns:

    - Status of deregisterListener success or suitable status code.

- inline virtual ~IApSimProfileManager()

    - Destructor for [IApSimProfileManager](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00633)

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

    - Listener class that receives requests for profile-related operations from the modem. When one of the listener’s APIs is invoked, the LPA on the AP is expected to perform the operation by exchanging the APDUs with the card.

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 onRetrieveProfileListRequest([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, uint32\_t referenceId)

    - This function is called when available profiles information is requested by the modem.

Below are the sequence of steps to be followed. 1.Receive Notification: The LPA on AP receives the onRetrieveProfileListRequest notification. 2.Fetch ICCIDs: After receiving the request from the modem, the LPA on the AP retrieves the list of ICCIDs for the profiles by exchanging the 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) telux::tel::

[ICard::openLogicalChannel](https://docs.qualcomm.com/doc/80-PF458-8/topic/sim_card_services.html#a00652_1ad2ef78cc9332da1a1b7a0bf36b451c6b). To retrieve AID, [telux::tel::ICard::getApplications()](https://docs.qualcomm.com/doc/80-PF458-8/topic/sim_card_services.html#a00652_1ad4de6ff3cba5d5e003796fda0b6e920a), this will return card applications, from card application get the AID [telux::tel::ICardApp::getAppId()](https://docs.qualcomm.com/doc/80-PF458-8/topic/sim_card_services.html#a00645_1ac86430b8fb771db8d379c6fe2e5f26bc) 2.2 Exchange the APDUs [telux::tel::ICard::transmitApduLogicalChannel](https://docs.qualcomm.com/doc/80-PF458-8/topic/sim_card_services.html#a00652_1a1f73212ff36f4ea71ed0b27d32610f46) 2.3 Close the channel once APDU exchange is complete telux::tel::ICard:: closeLogicalChannel 3.Send Response: Upon receiving a successful result for the APDUs exchange, the LPA on the AP sends a response to the modem using telux::tel::IApSimProfileManager:: sendRetrieveProfileListResponse 4.Acknowledge Response: The modem should acknowledge the LPA’s response by sending the result (status of sendRetrieveProfileListResponse i.e. success or suitable error code) back to the LPA on the AP in a callback.

Note

AP has to respond within the timer(30 seconds) expires for the profile switch.

Note

Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility.

- Parameters:

    - - **slotId** – **[in]** Logical slot on which profiles need to be requested.
- **referenceId** – **[in]** Acts as a token, and the LPA on the AP needs to pass the same reference id in a subsequent profiles list response. telux::tel::IApSimProfileManager:: sendRetrieveProfileListResponse

- inline virtual void onProfileOperationRequest([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, uint32\_t referenceId, std::string iccid, bool isEnable)

    - This function is called when profile needs to be enabled or disabled on the card based on the ICCID. The LPA on the AP is expected to provide same reference identifier when sending profile operation response using telux::tel::IApSimProfileManager:: sendProfileOperationResponse

Below are the sequence of steps to be followed. 1.Receive Notification: The LPA on AP receives the onProfileOperationRequest notification. 2.Enable/disable profile: After receiving the request from the modem, the LPA on the AP enables or disables profile by 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) telux::tel:: [ICard::openLogicalChannel](https://docs.qualcomm.com/doc/80-PF458-8/topic/sim_card_services.html#a00652_1ad2ef78cc9332da1a1b7a0bf36b451c6b). To retrieve AID, [telux::tel::ICard::getApplications()](https://docs.qualcomm.com/doc/80-PF458-8/topic/sim_card_services.html#a00652_1ad4de6ff3cba5d5e003796fda0b6e920a), this will return card applications, from card application get the AID [telux::tel::ICardApp::getAppId()](https://docs.qualcomm.com/doc/80-PF458-8/topic/sim_card_services.html#a00645_1ac86430b8fb771db8d379c6fe2e5f26bc) 2.2 Exchange the APDUs [telux::tel::ICard::transmitApduLogicalChannel](https://docs.qualcomm.com/doc/80-PF458-8/topic/sim_card_services.html#a00652_1a1f73212ff36f4ea71ed0b27d32610f46) 2.3 Close the channel once APDU exchange is complete telux::tel::ICard:: closeLogicalChannel 3.Send Response: Upon receiving a successful result for the APDUs exchange, the LPA on the AP sends a response to the modem using telux::tel::IApSimProfileManager:: sendProfileOperationResponse 4.Acknowledge Response: The modem should acknowledge the LPA’s response by sending the result (status of sendProfileOperationResponse i.e. success or suitable error code) back to the LPA on the AP in a callback.

Note

AP has to respond within the timer(30 seconds) expires for the profile switch.

Note

Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility.

- Parameters:

    - - **slotId** – **[in]** Logical slot on which profile to be modified.
- **referenceId** – **[in]** Acts as a token, and the LPA on the AP needs to pass the same reference id in a subsequent profile operation response telux::tel::IApSimProfileManager:: sendProfileOperationResponse
- **iccid** – **[in]** ICCID for the profile to enable or disable.
- **isEnable** – **[in]** Indicates whether the profile should be enabled or disabled. true - Enable and false - Disable.

- inline virtual ~IApSimProfileListener()

    - Destructor of [IApSimProfileListener](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00632)

- struct CustomHeader

    - \*Header information to be sent along with HTTP post request.

Public Members

- std::string name

    - Header name

- std::string value

    - Header value

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

    - The interface listens for indication to perform HTTP request and send back the response for HTTP request to modem.

The methods in the listener can be invoked from multiple threads. It is client’s responsibility to make sure the implementation is thread safe.

Public Functions

- inline virtual void onNewHttpRequest(const std::string &url, uint32\_t tokenId, const std::vector&lt;[CustomHeader](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#_CPPv4N5telux3tel12CustomHeaderE)&gt; &headers, const std::vector&lt;uint8\_t&gt; &reqPayload)

    - An application handling this indication should perform the HTTP request and call the IHttpTransactionManager::sendHttpTransactionReq to provide the result of the HTTP transaction.

On platforms with access control enabled, the client needs to have TELUX\_TEL\_SIM\_PROFILE\_HTTP\_PROXY permission to invoke this API successfully.

- Parameters:

    - - **url** – **[in]** URL to sent HTTP post request.
- **tokenId** – **[in]** Token identifier.
- **headers** – **[in]** Header information to be sent along with HTTP post request.
- **reqPayload** – **[in]** Request payload.

- inline virtual ~IHttpTransactionListener()

    - Destructor of [IHttpTransactionListener](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00701)

- class IHttpTransactionManager

    - [IHttpTransactionManager](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00702) is the interface to service HTTP related requests from the modem for SIM profile update related operations.

Public Functions

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

    - This status indicates whether the [IHttpTransactionManager](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00702) object is in a usable state.

- Returns:

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

- virtual telux::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) sendHttpTransactionResult(uint32\_t token, [HttpResult](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00022_1ga2808a3858ac86b6a920a6690be8028dc.html#_CPPv4N5telux3tel10HttpResultE) result, const std::vector&lt;[CustomHeader](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#_CPPv4N5telux3tel12CustomHeaderE)&gt; &headers, const std::vector&lt;uint8\_t&gt; &response, common::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-8/topic/typedef_a00235_1a8f614f0a0eeca90c94dad1967ca93bcd.html#_CPPv4N5telux6common16ResponseCallbackE) callback = nullptr) = 0

    - Send the result of HTTP Post request transaction to modem.

On platforms with access control enabled, caller needs to have TELUX\_TEL\_SIM\_PROFILE\_HTTP\_PROXY permission to invoke this API successfully.

- Parameters:

    - - **token** – **[in]** Token identifier for request and response pair.
- **result** – **[in]** HTTP transaction request result.
- **headers** – **[in]** Custom Headers in HTTP Response.
- **response** – **[in]** HTTP response payload.
- **callback** – **[in]** Callback function to get the result of send HTTP transaction request.

- Returns:

    - Status of send HTTP transaction result i.e. success or suitable error code.

- virtual telux::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) registerListener(std::weak\_ptr&lt;[IHttpTransactionListener](https://docs.qualcomm.com/doc/80-PF458-8/topic/class_a00701.html#_CPPv4N5telux3tel24IHttpTransactionListenerE)&gt; listener) = 0

    - Register a listener for specific events like perform HTTP Post request.

- Parameters:

    - **listener** – **[in]** Pointer of [IHttpTransactionListener](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00701) object that processes the notification.

- Returns:

    - Status of registerHttpListener success or suitable status code.

- virtual telux::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) deregisterListener(std::weak\_ptr&lt;[IHttpTransactionListener](https://docs.qualcomm.com/doc/80-PF458-8/topic/class_a00701.html#_CPPv4N5telux3tel24IHttpTransactionListenerE)&gt; listener) = 0

    - De-register the listener.

- Parameters:

    - **listener** – **[in]** Pointer of [IHttpTransactionListener](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00701) object that needs to be deregistered.

- Returns:

    - Status of deregisterHttpListener success or suitable status code.

- inline virtual ~IHttpTransactionManager()

    - Destructor for [IHttpTransactionManager](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00702)

- class SimProfile

    - [SimProfile](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00746) class represents single eUICC profile on the card.

Public Functions

- SimProfile(int profileId, [ProfileType](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00022_1gae0215b11ee0b6eb88a0f849d3ceb4646.html#_CPPv4N5telux3tel11ProfileTypeE) profileType, const std::string &iccid, bool isActive, const std::string &nickName, const std::string &spn, const std::string &name, [IconType](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00022_1gac73055e2322539538fc2c10d7a041d16.html#_CPPv4N5telux3tel8IconTypeE) iconType, std::vector&lt;uint8\_t&gt; icon, [ProfileClass](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00022_1ga5437713cf4fa9e8b358f85c1c3c2c2b8.html#_CPPv4N5telux3tel12ProfileClassE) profileClass, [PolicyRuleMask](https://docs.qualcomm.com/doc/80-PF458-8/topic/typedef_a00022_1gaefa70cd6fc01cf2148675dfb3dff5eaf.html#_CPPv4N5telux3tel14PolicyRuleMaskE) policyRuleMask, int slotId = [DEFAULT\_SLOT\_ID](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv4N6SlotId15DEFAULT_SLOT_IDE))

    - 

- int getSlotId()

    - Get slot id associated for this profile

- Returns:

    - SlotId

- int getProfileId()

    - Get profile identifier. The profile identifier is not persistently unique. It is unique for given snapshot of SIM profiles state. The profile identifier could change when any profile is deleted and added.

- Returns:

    - unique identifier for the profile

- [ProfileType](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00022_1gae0215b11ee0b6eb88a0f849d3ceb4646.html#_CPPv4N5telux3tel11ProfileTypeE) getType()

    - Get profile Type.

- Returns:

    - profile type

- const std::string &getIccid()

    - Get profile ICCID.

- Returns:

    - profile ICCID coded as in EF-ICCID

- bool isActive()

    - Indicates the profile state whether active or not.

- Returns:

    - true if profile is Active

- const std::string &getNickName()

    - Get profile nick name.

- Returns:

    - profile nick name

- const std::string &getSPN()

    - Get profile service provider name.

- Returns:

    - profile service provider name.

- const std::string &getName()

    - Get profile name.

- Returns:

    - profile name

- [IconType](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00022_1gac73055e2322539538fc2c10d7a041d16.html#_CPPv4N5telux3tel8IconTypeE) getIconType()

    - Get profile icon type.

- Returns:

    - profile icon type

- std::vector&lt;uint8\_t&gt; getIcon()

    - Get profile icon content.

- Returns:

    - profile icon content

- [ProfileClass](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00022_1ga5437713cf4fa9e8b358f85c1c3c2c2b8.html#_CPPv4N5telux3tel12ProfileClassE) getClass()

    - Get profile class.

- Returns:

    - profile class

- [PolicyRuleMask](https://docs.qualcomm.com/doc/80-PF458-8/topic/typedef_a00022_1gaefa70cd6fc01cf2148675dfb3dff5eaf.html#_CPPv4N5telux3tel14PolicyRuleMaskE) getPolicyRule()

    - Get profile policy rules.

- Returns:

    - mask of profile policy rules

- std::string toString()

    - Get the text related informative representation of this object.

- Returns:

    - String containing informative string.

Private Members

- int profileId\_

    - 

- [ProfileType](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00022_1gae0215b11ee0b6eb88a0f849d3ceb4646.html#_CPPv4N5telux3tel11ProfileTypeE) profileType\_

    - 

- std::string iccid\_

    - 

- bool isActive\_

    - 

- std::string nickName\_

    - 

- std::string spn\_

    - 

- std::string name\_

    - 

- [IconType](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00022_1gac73055e2322539538fc2c10d7a041d16.html#_CPPv4N5telux3tel8IconTypeE) iconType\_

    - 

- std::vector&lt;uint8\_t&gt; icon\_

    - 

- [ProfileClass](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00022_1ga5437713cf4fa9e8b358f85c1c3c2c2b8.html#_CPPv4N5telux3tel12ProfileClassE) profileClass\_

    - 

- [PolicyRuleMask](https://docs.qualcomm.com/doc/80-PF458-8/topic/typedef_a00022_1gaefa70cd6fc01cf2148675dfb3dff5eaf.html#_CPPv4N5telux3tel14PolicyRuleMaskE) policyRuleMask\_

    - 

- int slotId\_

    -

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

    - The interface listens for profile download indication and keep track of download and install progress of profile.

The methods in the listener can be invoked from multiple threads. It is client’s responsibility to make sure the implementation is thread safe.

Public Functions

- inline virtual void onDownloadStatus([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, [DownloadStatus](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00022_1ga2fa83905400523ae1a62286b03ef69a0.html#_CPPv4N5telux3tel14DownloadStatusE) status, [DownloadErrorCause](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00022_1gaa54bf4e83629e2b8b1f9930848f3c10d.html#_CPPv4N5telux3tel18DownloadErrorCauseE) cause)

    - This function is called when indication about status of profile download and installation comes.

On platforms with access control enabled, the client needs to have TELUX\_TEL\_SIM\_PROFILE\_OPS permission to invoke this API successfully.

- Parameters:

    - - **slotId** – **[in]** Slot on which profile get downloaded and installed.
- **status** – **[in]** [telux::tel::DownloadStatus](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00022_1ga2fa83905400523ae1a62286b03ef69a0.html#a00022_1ga2fa83905400523ae1a62286b03ef69a0).
- **cause** – **[in]** [telux::tel::DownloadErrorCause](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00022_1gaa54bf4e83629e2b8b1f9930848f3c10d.html#a00022_1gaa54bf4e83629e2b8b1f9930848f3c10d).

- inline virtual void onUserDisplayInfo([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, bool userConsentRequired, [PolicyRuleMask](https://docs.qualcomm.com/doc/80-PF458-8/topic/typedef_a00022_1gaefa70cd6fc01cf2148675dfb3dff5eaf.html#_CPPv4N5telux3tel14PolicyRuleMaskE) mask)

    - This function is invoked when information about user consent and profile policy rules is received. The client application is expected to provide user consent for download and install profile by calling [telux::tel::ISimProfileManager::provideUserConsent](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00748_1ac699a407d9ab51224f3b5c139e85fdd3) if user consent is expected.

On platforms with access control enabled, the client needs to have TELUX\_TEL\_SIM\_PROFILE\_OPS permission to invoke this API successfully.

- Parameters:

    - - **slotId** – **[in]** Slot on which profile get downloaded and installed.
- **userConsentRequired** – **[in]** User consent required or not. If true it means user is expected to provide consent for download and install.
- **mask** – **[in]** [telux::tel::PolicyRuleMask](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00022_1gaefa70cd6fc01cf2148675dfb3dff5eaf) (Profile policy rules Mask)

- inline virtual void onConfirmationCodeRequired([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, std::string profileName)

    - This function is invoked when confirmation code is required. The client application is expected to provide confirmation code for download and install profile by calling [telux::tel::ISimProfileManager::provideConfirmationCode](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00748_1a64085b64757a370a1d265c76c70cb3dd).

On platforms with access control enabled, the client needs to have TELUX\_TEL\_SIM\_PROFILE\_OPS permission to invoke this API successfully.

- Parameters:

    - - **slotId** – **[in]** Slot on which profile get downloaded and installed.
- **profileName** – **[in]** Profile name corresponding to which confirmation code is required.

- inline virtual ~ISimProfileListener()

    - Destructor of [ISimProfileListener](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00747)

- class ISimProfileManager

    - [ISimProfileManager](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00748) 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-8/topic/remote_sim_provisioning.html#a00748_1a47844f3e26e4706e416728c036bf0377) API.

- Returns:

    - True if [ISimProfileManager](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00748) is ready for service, otherwise returns false.

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

    - Wait for eUICC subsystem to be ready.

Deprecated Use InitResponseCb in [PhoneFactory::getSimProfileManager](https://docs.qualcomm.com/doc/80-PF458-8/topic/phone.html#a00732_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::common::[ServiceStatus](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga7063b4a1071b6581022e30b730684e4d.html#_CPPv4N5telux6common13ServiceStatusE) getServiceStatus() = 0

    - This status indicates whether the [ISimProfileManager](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00748) object is in a usable state.

- Returns:

    - SERVICE\_AVAILABLE - If [SimProfile](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00746) Manager is ready for service. SERVICE\_UNAVAILABLE - If [SimProfile](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00746) Manager is temporarily unavailable. SERVICE\_FAILED - If [SimProfile](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00746) Manager encountered an irrecoverable failure.

- virtual telux::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) addProfile([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, const std::string &activationCode, const std::string &confirmationCode = "", bool userConsentSupported = false, common::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-8/topic/typedef_a00235_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::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) deleteProfile([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, int profileId, common::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-8/topic/typedef_a00235_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-8/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::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) setProfile([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, int profileId, bool enable = false, common::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-8/topic/typedef_a00235_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::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) updateNickName([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, int profileId, const std::string &nickName, common::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-8/topic/typedef_a00235_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::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) requestProfileList([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, [ProfileListResponseCb](https://docs.qualcomm.com/doc/80-PF458-8/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::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) requestEid([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, [EidResponseCb](https://docs.qualcomm.com/doc/80-PF458-8/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-8/topic/sim_card_services.html#a00652_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::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) provideUserConsent([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, bool userConsent, [UserConsentReasonType](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00022_1gaf1da9586e0a10370e6dd77a305a7162a.html#_CPPv4N5telux3tel21UserConsentReasonTypeE) reason, common::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-8/topic/typedef_a00235_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-8/topic/remote_sim_provisioning.html#a00747_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 proﬁle 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-8/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::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) provideConfirmationCode([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, std::string code, common::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-8/topic/typedef_a00235_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-8/topic/remote_sim_provisioning.html#a00747_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::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) requestServerAddress([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, [ServerAddressResponseCb](https://docs.qualcomm.com/doc/80-PF458-8/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::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) setServerAddress([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, const std::string &smdpAddress, common::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-8/topic/typedef_a00235_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::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) memoryReset([SlotId](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00074_1a04bc541ec544188a3bc649001a8a0111.html#_CPPv46SlotId) slotId, [ResetOptionMask](https://docs.qualcomm.com/doc/80-PF458-8/topic/typedef_a00022_1ga10f45d8d513466dc3914323eeedb64d3.html#_CPPv4N5telux3tel15ResetOptionMaskE) mask, common::[ResponseCallback](https://docs.qualcomm.com/doc/80-PF458-8/topic/typedef_a00235_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-8/topic/remote_sim_provisioning.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-8/topic/remote_sim_provisioning.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::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) registerListener(std::weak\_ptr&lt;[ISimProfileListener](https://docs.qualcomm.com/doc/80-PF458-8/topic/class_a00747.html#_CPPv4N5telux3tel19ISimProfileListenerE)&gt; 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-8/topic/remote_sim_provisioning.html#a00747) object that processes the notification.

- Returns:

    - Status of registerListener success or suitable status code

- virtual telux::common::[Status](https://docs.qualcomm.com/doc/80-PF458-8/topic/enum_a00023_1ga45eeeff7c2860e02ae447d588d3d6e4d.html#_CPPv4N5telux6common6StatusE) deregisterListener(std::weak\_ptr&lt;[ISimProfileListener](https://docs.qualcomm.com/doc/80-PF458-8/topic/class_a00747.html#_CPPv4N5telux3tel19ISimProfileListenerE)&gt; listener) = 0

    - De-register the listener.

- Parameters:

    - **listener** – **[in]** Pointer of [ISimProfileListener](https://docs.qualcomm.com/doc/80-PF458-8/topic/remote_sim_provisioning.html#a00747) 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-8/topic/remote_sim_provisioning.html#a00748)

Last Published: May 20, 2026

[Previous Topic
telux::tel::IServingSystemListener](https://docs.qualcomm.com/bundle/publicresource/80-PF458-8/topics/serving_system.md) [Next Topic
Remote SIM](https://docs.qualcomm.com/bundle/publicresource/80-PF458-8/topics/remote_sim.md)