le_sim_interface.h
Go to the documentation of this file.
22 * A subscriber identity module or subscriber identification module (SIM) is an integrated circuit23 * that securely stores the international mobile subscriber identity (IMSI) and related key used to42 * le_sim_SelectCard() function is used to select the SIM identifier. By default, the SIM in slot 145 * SIM identifier. le_sim_GetSelectedCard() returns the current selected card, not necessarily the48 * @note The SIM selection is not reset persistent; this function has to be called at each start-up.50 * @note It is recommended to wait for a SIM handler notification after a new SIM selection before59 * Each SIM is internationally identified by its integrated circuit card identifier (ICCID). ICCIDs71 * @note During the initialization phase of the service, each new subscription to the ICCID change73 * freshly registered clients to receive any ICCID changes that occured during the module start-up79 * The International Mobile Subscriber Identity or IMSI is a unique identification associated with85 * digits (European standard) or 3 digits (North American standard). The length of the MNC depends86 * on the value of the MCC. The remaining digits are the mobile subscription identification number92 * A eUICC is a SIM card with a remote provisioning function, and is designed to not be removed or93 * changed. It is able to store multiple communication profiles but only one is enabled (recognized94 * by the device and used for communication). With conventional SIM cards, the ICCID is used as the96 * profile, and a new identifier is defined, called the eUICCID (EID), which is used as the unique181 * typedef void(*le_sim_NewStateHandlerFunc_t)(@ref le_sim_Id_t simId, @c le_sim_States_t simState);187 * @note If two (or more) applications have registered a handler function for notifications, they190 * The application can uninstall the handler function by calling le_sim_RemoveNewStateHandler() API.204 * them is dedicated to emergency calls (ex: eCall, ERA-Glonass), local swap is needed to swap as210 * Local swap puts the eUICC in a temporary state, meaning the commercial subscription is replaced214 * The le_sim_LocalSwapToEmergencyCallSubscription() function requests the multi-profile eUICC to215 * swap to ECS and to refresh. The User's application must wait for eUICC reboot to be finished and218 * The le_sim_LocalSwapToCommercialSubscription() function requests the multi-profile eUICC to swap219 * back to commercial subscription and to refresh. The User's application must wait for eUICC reboot222 * eUICC allows support of multiple SIM profiles. These profiles can also be managed remotely from225 * switching SIM profiles is subject to a user agreement. This way, the customer application will226 * be able to properly finalize its current procedure (emergency call for instance) before accepting237 * The User's application can install a handler with le_sim_AddNewStateHandler() to receive eUICC's241 * - If you use a Morpho or Oberthur card, the SIM_REFRESH PRO-ACTIVE command must be accepted with244 * security restrictions for channel management APDU commands, otherwise local SIM profile switch278 * @note Some platforms do not support FPLMN APIs. Please refer to the @ref platformConstraintsSim287 * supports multiple subscription profiles, which can be remotely provisioned, updated or selected305 * - The le_sim_GetSimToolkitRefreshMode() API gets the mode of the Refresh command, as defined in333 * Some parameters are platform dependent, see @subpage platformConstraintsSim "SIM constraints" for338 * Logical channels are specified by the standard ETSI TS 102 221 in the section 8.7. If they are342 * - upon request, the card assigns a number to open a new channel. This channel remains open until380 * @snippet "apps/test/modemServices/sim/simIntegrationTest/simTestComp/simTest.c" Authentication386 * @snippet "apps/test/modemServices/sim/simIntegrationTest/simTestComp/simTest.c" Identification415 //--------------------------------------------------------------------------------------------------419 //--------------------------------------------------------------------------------------------------422 //--------------------------------------------------------------------------------------------------425 * Connect the current client thread to the service providing this API. Block until the service is428 * For each thread that wants to use this API, either ConnectService or TryConnectService must be429 * called before any other functions in this API. Normally, ConnectService is automatically called434 //--------------------------------------------------------------------------------------------------440 //--------------------------------------------------------------------------------------------------443 * Try to connect the current client thread to the service providing this API. Return with an error446 * For each thread that wants to use this API, either ConnectService or TryConnectService must be447 * called before any other functions in this API. Normally, ConnectService is automatically called456 * - LE_NOT_PERMITTED if the client interface is not bound to any service (doesn't have a binding).459 //--------------------------------------------------------------------------------------------------465 //--------------------------------------------------------------------------------------------------469 * When a server connection is lost, call this handler then exit with LE_FATAL. If a program wants472 //--------------------------------------------------------------------------------------------------479 //--------------------------------------------------------------------------------------------------485 * longer a connection to the service, and the functions in this API can't be used. For details, see490 //--------------------------------------------------------------------------------------------------497 //--------------------------------------------------------------------------------------------------501 //--------------------------------------------------------------------------------------------------504 //--------------------------------------------------------------------------------------------------508 //--------------------------------------------------------------------------------------------------511 //--------------------------------------------------------------------------------------------------516 //--------------------------------------------------------------------------------------------------519 //--------------------------------------------------------------------------------------------------523 //--------------------------------------------------------------------------------------------------526 //--------------------------------------------------------------------------------------------------531 //--------------------------------------------------------------------------------------------------534 //--------------------------------------------------------------------------------------------------539 //--------------------------------------------------------------------------------------------------542 //--------------------------------------------------------------------------------------------------547 //--------------------------------------------------------------------------------------------------550 //--------------------------------------------------------------------------------------------------554 //--------------------------------------------------------------------------------------------------557 //--------------------------------------------------------------------------------------------------562 //--------------------------------------------------------------------------------------------------565 //--------------------------------------------------------------------------------------------------569 //--------------------------------------------------------------------------------------------------572 //--------------------------------------------------------------------------------------------------576 //--------------------------------------------------------------------------------------------------579 //--------------------------------------------------------------------------------------------------583 //--------------------------------------------------------------------------------------------------586 //--------------------------------------------------------------------------------------------------591 //--------------------------------------------------------------------------------------------------594 //--------------------------------------------------------------------------------------------------599 //--------------------------------------------------------------------------------------------------602 //--------------------------------------------------------------------------------------------------606 //--------------------------------------------------------------------------------------------------609 //--------------------------------------------------------------------------------------------------614 //--------------------------------------------------------------------------------------------------617 //--------------------------------------------------------------------------------------------------621 //--------------------------------------------------------------------------------------------------624 //--------------------------------------------------------------------------------------------------629 //--------------------------------------------------------------------------------------------------632 //--------------------------------------------------------------------------------------------------636 //--------------------------------------------------------------------------------------------------640 //--------------------------------------------------------------------------------------------------645 //--------------------------------------------------------------------------------------------------666 //--------------------------------------------------------------------------------------------------671 //--------------------------------------------------------------------------------------------------688 //--------------------------------------------------------------------------------------------------693 //--------------------------------------------------------------------------------------------------712 //--------------------------------------------------------------------------------------------------716 //--------------------------------------------------------------------------------------------------733 //--------------------------------------------------------------------------------------------------737 //--------------------------------------------------------------------------------------------------750 //--------------------------------------------------------------------------------------------------754 //--------------------------------------------------------------------------------------------------784 //--------------------------------------------------------------------------------------------------788 //--------------------------------------------------------------------------------------------------803 //--------------------------------------------------------------------------------------------------807 //--------------------------------------------------------------------------------------------------811 //--------------------------------------------------------------------------------------------------815 //--------------------------------------------------------------------------------------------------819 //--------------------------------------------------------------------------------------------------823 //--------------------------------------------------------------------------------------------------827 //--------------------------------------------------------------------------------------------------831 //--------------------------------------------------------------------------------------------------835 //--------------------------------------------------------------------------------------------------840 //--------------------------------------------------------------------------------------------------842 (851 //--------------------------------------------------------------------------------------------------856 //--------------------------------------------------------------------------------------------------858 (867 //--------------------------------------------------------------------------------------------------872 //--------------------------------------------------------------------------------------------------874 (883 //--------------------------------------------------------------------------------------------------888 //--------------------------------------------------------------------------------------------------890 (899 //--------------------------------------------------------------------------------------------------906 //--------------------------------------------------------------------------------------------------915 //--------------------------------------------------------------------------------------------------919 //--------------------------------------------------------------------------------------------------926 //--------------------------------------------------------------------------------------------------933 //--------------------------------------------------------------------------------------------------942 //--------------------------------------------------------------------------------------------------946 //--------------------------------------------------------------------------------------------------953 //--------------------------------------------------------------------------------------------------960 //--------------------------------------------------------------------------------------------------969 //--------------------------------------------------------------------------------------------------973 //--------------------------------------------------------------------------------------------------980 //--------------------------------------------------------------------------------------------------987 //--------------------------------------------------------------------------------------------------996 //--------------------------------------------------------------------------------------------------1000 //--------------------------------------------------------------------------------------------------1007 //--------------------------------------------------------------------------------------------------1013 //--------------------------------------------------------------------------------------------------1019 //--------------------------------------------------------------------------------------------------1027 //--------------------------------------------------------------------------------------------------1034 //--------------------------------------------------------------------------------------------------1046 //--------------------------------------------------------------------------------------------------1057 //--------------------------------------------------------------------------------------------------1073 //--------------------------------------------------------------------------------------------------1084 //--------------------------------------------------------------------------------------------------1097 //--------------------------------------------------------------------------------------------------1108 //--------------------------------------------------------------------------------------------------1118 //--------------------------------------------------------------------------------------------------1125 //--------------------------------------------------------------------------------------------------1136 //--------------------------------------------------------------------------------------------------1143 //--------------------------------------------------------------------------------------------------1159 //--------------------------------------------------------------------------------------------------1168 //--------------------------------------------------------------------------------------------------1183 //--------------------------------------------------------------------------------------------------1194 //--------------------------------------------------------------------------------------------------1201 * @return A positive value The function succeeded. The number of remaining PIN insertion tries.1204 //--------------------------------------------------------------------------------------------------1211 //--------------------------------------------------------------------------------------------------1224 //--------------------------------------------------------------------------------------------------1233 //--------------------------------------------------------------------------------------------------1248 //--------------------------------------------------------------------------------------------------1257 //--------------------------------------------------------------------------------------------------1272 //--------------------------------------------------------------------------------------------------1281 //--------------------------------------------------------------------------------------------------1298 //--------------------------------------------------------------------------------------------------1309 //--------------------------------------------------------------------------------------------------1318 //--------------------------------------------------------------------------------------------------1325 //--------------------------------------------------------------------------------------------------1338 //--------------------------------------------------------------------------------------------------1349 //--------------------------------------------------------------------------------------------------1362 * @note The home network name can be given even if the device is not registered on the network.1364 //--------------------------------------------------------------------------------------------------1375 //--------------------------------------------------------------------------------------------------1387 //--------------------------------------------------------------------------------------------------1402 //--------------------------------------------------------------------------------------------------1404 * This function must be called to request the multi-profile eUICC to swap to ECS and to refresh.1415 * @note Please ensure that the eUICC is selected using le_sim_SelectCard() and in a ready state1422 //--------------------------------------------------------------------------------------------------1431 //--------------------------------------------------------------------------------------------------1445 * @note Please ensure that the eUICC is selected using le_sim_SelectCard() and in a ready state1452 //--------------------------------------------------------------------------------------------------1461 //--------------------------------------------------------------------------------------------------1475 //--------------------------------------------------------------------------------------------------1485 //--------------------------------------------------------------------------------------------------1493 //--------------------------------------------------------------------------------------------------1500 //--------------------------------------------------------------------------------------------------1508 //--------------------------------------------------------------------------------------------------1515 //--------------------------------------------------------------------------------------------------1527 //--------------------------------------------------------------------------------------------------1536 //--------------------------------------------------------------------------------------------------1546 //--------------------------------------------------------------------------------------------------1555 //--------------------------------------------------------------------------------------------------1565 //--------------------------------------------------------------------------------------------------1580 //--------------------------------------------------------------------------------------------------1593 //--------------------------------------------------------------------------------------------------1624 //--------------------------------------------------------------------------------------------------1632 //--------------------------------------------------------------------------------------------------1639 //--------------------------------------------------------------------------------------------------1647 //--------------------------------------------------------------------------------------------------1653 //--------------------------------------------------------------------------------------------------1656 * If the FPLMNListRef, mcc or mnc is not valid then this function will kill the calling client.1663 //--------------------------------------------------------------------------------------------------1674 //--------------------------------------------------------------------------------------------------1684 //--------------------------------------------------------------------------------------------------1693 //--------------------------------------------------------------------------------------------------1701 //--------------------------------------------------------------------------------------------------1708 //--------------------------------------------------------------------------------------------------1721 //--------------------------------------------------------------------------------------------------1736 //--------------------------------------------------------------------------------------------------1738 * Read the next FPLMN network from the list of FPLMN objects retrieved with le_sim_ReadFPLMNList().1748 //--------------------------------------------------------------------------------------------------1763 //--------------------------------------------------------------------------------------------------1772 //--------------------------------------------------------------------------------------------------1779 //--------------------------------------------------------------------------------------------------1788 //--------------------------------------------------------------------------------------------------1795 //--------------------------------------------------------------------------------------------------1803 //--------------------------------------------------------------------------------------------------1810 //--------------------------------------------------------------------------------------------------1820 //--------------------------------------------------------------------------------------------------1837 //--------------------------------------------------------------------------------------------------1847 //--------------------------------------------------------------------------------------------------le_sim_NewStateHandlerRef_t le_sim_AddNewStateHandler(le_sim_NewStateHandlerFunc_t handlerPtr, void *contextPtr)bool le_sim_IsPresent(le_sim_Id_t simId)le_result_t le_sim_GetHomeNetworkOperator(le_sim_Id_t simId, char *nameStr, size_t nameStrSize)le_result_t le_sim_GetRemainingPUKTries(le_sim_Id_t simId, uint32_t *remainingPukTriesPtrPtr)Initialization and Full File Change Notification.Definition: le_sim_interface.h:757le_result_t le_sim_LocalSwapToEmergencyCallSubscription(le_sim_Id_t simId, le_sim_Manufacturer_t manufacturer)le_result_t le_sim_ChangePIN(le_sim_Id_t simId, const char *LE_NONNULL oldpin, const char *LE_NONNULL newpin)le_result_t le_sim_SendApdu(le_sim_Id_t simId, const uint8_t *commandApduPtr, size_t commandApduSize, uint8_t *responseApduPtr, size_t *responseApduSizePtr)void(* le_sim_SimToolkitEventHandlerFunc_t)(le_sim_Id_t simId, le_sim_StkEvent_t stkEvent, void *contextPtr)Definition: le_sim_interface.h:874void le_sim_RemoveProfileUpdateHandler(le_sim_ProfileUpdateHandlerRef_t handlerRef)le_result_t le_sim_GetHomeNetworkMccMnc(le_sim_Id_t simId, char *mccPtr, size_t mccPtrSize, char *mncPtr, size_t mncPtrSize)struct le_sim_IccidChangeHandler * le_sim_IccidChangeHandlerRef_tDefinition: le_sim_interface.h:832le_result_t le_sim_GetFirstFPLMNOperator(le_sim_FPLMNListRef_t FPLMNListRef, char *mccPtr, size_t mccPtrSize, char *mncPtr, size_t mncPtrSize)le_result_t le_sim_OpenLogicalChannel(uint8_t *channelPtrPtr)le_result_t le_sim_GetSimToolkitRefreshMode(le_sim_Id_t simId, le_sim_StkRefreshMode_t *refreshModePtr)void(* le_sim_IccidChangeHandlerFunc_t)(le_sim_Id_t simId, const char *LE_NONNULL iccid, void *contextPtr)Definition: le_sim_interface.h:890le_sim_ProfileUpdateHandlerRef_t le_sim_AddProfileUpdateHandler(le_sim_ProfileUpdateHandlerFunc_t handlerPtr, void *contextPtr)void(* le_sim_NewStateHandlerFunc_t)(le_sim_Id_t simId, le_sim_States_t simState, void *contextPtr)Definition: le_sim_interface.h:842struct le_sim_SimToolkitEventHandler * le_sim_SimToolkitEventHandlerRef_tDefinition: le_sim_interface.h:824Steering of Roaming as defined in 3GPP TS 23.122.Definition: le_sim_interface.h:771le_result_t le_sim_GetICCID(le_sim_Id_t simId, char *iccid, size_t iccidSize)void le_sim_SetServerDisconnectHandler(le_sim_DisconnectHandler_t disconnectHandler, void *contextPtr)le_result_t le_sim_GetNextFPLMNOperator(le_sim_FPLMNListRef_t FPLMNListRef, char *mccPtr, size_t mccPtrSize, char *mncPtr, size_t mncPtrSize)le_result_t le_sim_AcceptSimToolkitCommand(le_sim_Id_t simId)le_result_t le_sim_SendApduOnChannel(le_sim_Id_t simId, uint8_t channel, const uint8_t *commandApduPtr, size_t commandApduSize, uint8_t *responseApduPtr, size_t *responseApduSizePtr)le_sim_FPLMNListRef_t le_sim_ReadFPLMNList(le_sim_Id_t simId)void le_sim_ConnectService(void)le_result_t le_sim_GetIMSI(le_sim_Id_t simId, char *imsi, size_t imsiSize)Definition: le_sim_interface.h:773le_result_t le_sim_CloseLogicalChannel(uint8_t channel)le_sim_IccidChangeHandlerRef_t le_sim_AddIccidChangeHandler(le_sim_IccidChangeHandlerFunc_t handlerPtr, void *contextPtr)void le_sim_DisconnectService(void)struct le_sim_NewStateHandler * le_sim_NewStateHandlerRef_tDefinition: le_sim_interface.h:808void le_sim_DeleteFPLMNList(le_sim_FPLMNListRef_t FPLMNListRef)le_result_t le_sim_Reset(le_sim_Id_t simId)le_result_t le_sim_SendCommand(le_sim_Id_t simId, le_sim_Command_t command, const char *LE_NONNULL fileIdentifier, uint8_t p1, uint8_t p2, uint8_t p3, const uint8_t *dataPtr, size_t dataSize, const char *LE_NONNULL path, uint8_t *sw1Ptr, uint8_t *sw2Ptr, uint8_t *responsePtr, size_t *responseSizePtr)le_result_t le_sim_WriteFPLMNList(le_sim_Id_t simId, le_sim_FPLMNListRef_t FPLMNListRef)le_result_t le_sim_AddFPLMNOperator(le_sim_FPLMNListRef_t FPLMNListRef, const char *LE_NONNULL mcc, const char *LE_NONNULL mnc)le_result_t le_sim_SelectCard(le_sim_Id_t simId)le_result_t le_sim_GetEID(le_sim_Id_t simId, char *eid, size_t eidSize)void(* le_sim_DisconnectHandler_t)(void *)Definition: le_sim_interface.h:420le_result_t le_sim_GetSimToolkitRefreshStage(le_sim_Id_t simId, le_sim_StkRefreshStage_t *refreshStagePtr)int32_t le_sim_GetRemainingPINTries(le_sim_Id_t simId)le_sim_FPLMNListRef_t le_sim_CreateFPLMNList(void)bool le_sim_IsReady(le_sim_Id_t simId)le_sim_SimToolkitEventHandlerRef_t le_sim_AddSimToolkitEventHandler(le_sim_SimToolkitEventHandlerFunc_t handlerPtr, void *contextPtr)void le_sim_RemoveSimToolkitEventHandler(le_sim_SimToolkitEventHandlerRef_t handlerRef)void le_sim_RemoveNewStateHandler(le_sim_NewStateHandlerRef_t handlerRef)le_result_t le_sim_RejectSimToolkitCommand(le_sim_Id_t simId)struct le_sim_FPLMNList * le_sim_FPLMNListRef_tDefinition: le_sim_interface.h:637le_result_t le_sim_SetPower(le_sim_Id_t simId, le_onoff_t power)le_result_t le_sim_GetSubscriberPhoneNumber(le_sim_Id_t simId, char *phoneNumberStr, size_t phoneNumberStrSize)void le_sim_RemoveIccidChangeHandler(le_sim_IccidChangeHandlerRef_t handlerRef)le_result_t le_sim_Unblock(le_sim_Id_t simId, const char *LE_NONNULL puk, const char *LE_NONNULL newpin)le_result_t le_sim_IsEmergencyCallSubscriptionSelected(le_sim_Id_t simId, bool *isEcsPtr)le_result_t le_sim_Unlock(le_sim_Id_t simId, const char *LE_NONNULL pin)le_result_t le_sim_Lock(le_sim_Id_t simId, const char *LE_NONNULL pin)Initialization and File Change Notification.Definition: le_sim_interface.h:761void(* le_sim_ProfileUpdateHandlerFunc_t)(le_sim_Id_t simId, le_sim_StkEvent_t stkEvent, void *contextPtr)Definition: le_sim_interface.h:858le_sim_Id_t le_sim_GetSelectedCard(void)le_result_t le_sim_EnterPIN(le_sim_Id_t simId, const char *LE_NONNULL pin)le_sim_States_t le_sim_GetState(le_sim_Id_t simId)le_result_t le_sim_LocalSwapToCommercialSubscription(le_sim_Id_t simId, le_sim_Manufacturer_t manufacturer)le_result_t le_sim_TryConnectService(void)struct le_sim_ProfileUpdateHandler * le_sim_ProfileUpdateHandlerRef_tDefinition: le_sim_interface.h:816