Sample code for SIM States
//--------------------------------------------------------------------------------------------------/*** Print function.**///--------------------------------------------------------------------------------------------------void Print(char* string){bool sandboxed = (getuid() != 0);if(sandboxed){}else{fprintf(stderr, "%s\n", string);}}
//--------------------------------------------------------------------------------------------------/*** This function display the SIM state.**///--------------------------------------------------------------------------------------------------static void DisplaySimState(le_sim_States_t state,le_sim_Id_t simId){char string[100];memset(string,0,100);switch(state){case LE_SIM_INSERTED:sprintf(string, "\nSIM Card state LE_SIM_INSERTED for SIM card.%d \n", simId);break;case LE_SIM_ABSENT:sprintf(string, "\nSIM Card state LE_SIM_ABSENT for SIM card.%d \n", simId);break;case LE_SIM_READY:sprintf(string, "\nSIM Card state LE_SIM_READY for SIM card.%d \n", simId);break;case LE_SIM_BLOCKED:sprintf(string, "\nSIM Card state LE_SIM_BLOCKED for SIM card.%d \n", simId);break;case LE_SIM_BUSY:sprintf(string, "\nSIM Card state LE_SIM_BUSY for SIM card.%d \n", simId);break;case LE_SIM_STATE_UNKNOWN:sprintf(string, "\nSIM Card state LE_SIM_STATE_UNKNOWN for SIM card.%d \n", simId);break;default:sprintf(string, "\nSIM Card state %d for SIM card.%d \n", state, simId);break;}Print(string);}
//--------------------------------------------------------------------------------------------------/*** Handler function for SIM States Notifications.**///--------------------------------------------------------------------------------------------------static void TestSimStateHandler(le_sim_Id_t simId,le_sim_States_t simState,void* contextPtr){le_sim_States_t state;// Get SIM statestate = le_sim_GetState(simId);switch(state){case LE_SIM_INSERTED:LE_INFO("-TEST- New state LE_SIM_INSERTED for SIM card.%d", simId);break;case LE_SIM_ABSENT:LE_INFO("-TEST- New state LE_SIM_ABSENT for SIM card.%d", simId);break;case LE_SIM_READY:LE_INFO("-TEST- New state LE_SIM_READY for SIM card.%d", simId);break;case LE_SIM_BLOCKED:LE_INFO("-TEST- New state LE_SIM_BLOCKED for SIM card.%d", simId);break;case LE_SIM_BUSY:LE_INFO("-TEST- New state LE_SIM_BUSY for SIM card.%d", simId);break;case LE_SIM_STATE_UNKNOWN:LE_INFO("-TEST- New state LE_SIM_STATE_UNKNOWN for SIM card.%d", simId);break;default:LE_INFO("-TEST- New state %d for SIM card.%d", state, simId);break;}{LE_INFO("-TEST- Check le_sim_GetState passed.");}else{LE_ERROR("-TEST- Check le_sim_GetState failure !");}}
//--------------------------------------------------------------------------------------------------/*** Test: SIM State.**///--------------------------------------------------------------------------------------------------void simTest_State(le_sim_Id_t simId,const char* pinPtr){le_result_t res;le_sim_NewStateHandlerRef_t testHdlrRef;le_sim_States_t state;char string[100];memset(string, 0, 100);// Get SIM statestate = le_sim_GetState(simId);sprintf(string, "\nSIM Card.%d state:\n", simId);Print(string);DisplaySimState(state, simId);if(state == LE_SIM_INSERTED){// Enter PIN coderes = le_sim_EnterPIN(simId, pinPtr);LE_ASSERT(res==LE_OK);// Get SIM statestate = le_sim_GetState(simId);}// Add the state handlertestHdlrRef = le_sim_AddNewStateHandler(TestSimStateHandler, NULL);LE_ASSERT(testHdlrRef != NULL);}