//-------------------------------------------------------------------------------------------------- static void* CellNetThread ( void* contextPtr ) { // Connect to the services required by this thread le_cfg_ConnectService(); le_mrc_ConnectService(); le_sim_ConnectService(); LE_INFO("CellNet Thread Started"); // Register for command events le_event_AddHandler("ProcessCommand", CommandEvent, ProcessCommand); // Register for SIM state changes le_sim_AddNewStateHandler(SimStateHandler, NULL); // Register for MRC Network Registration state changes le_mrc_AddNetRegStateEventHandler(MrcNetRegHandler, NULL); // Run the event loop le_event_RunLoop(); return NULL; }
//-------------------------------------------------------------------------------------------------- static void* AppHandler ( void* ctxPtr ) { AppContext_t * appCtxPtr = (AppContext_t*) ctxPtr; LE_DEBUG("App id: %d", appCtxPtr->appId); // Subscribe to SIM state handler appCtxPtr->statHandler = le_sim_AddNewStateHandler(SimStateHandler, ctxPtr); LE_ASSERT(appCtxPtr->statHandler != NULL); // Semaphore is used to synchronize the task execution with the core test le_sem_Post(ThreadSemaphore); le_event_RunLoop(); }
//-------------------------------------------------------------------------------------------------- static void* SimPowerCycleIndThread ( void* context ///< Context ) { le_sim_ConnectService(); SimPowerCycleHdlrRef = le_sim_AddNewStateHandler(TestSimStateHandler, NULL); LE_ASSERT(SimPowerCycleHdlrRef); //First sem post and the "simPowerCycleStarted" flag indicate this thread is running le_sem_Post(SimPowerCycleSemaphore); SimPowerCycleStarted = true; LE_INFO("SimPowerCycleIndThread started ..."); le_event_RunLoop(); return NULL; }
//-------------------------------------------------------------------------------------------------- void Testle_sim_States() { le_result_t res; le_sim_NewStateHandlerRef_t testHdlrRef; le_sim_States_t state; le_sim_ObjRef_t simRef; uint32_t i=1; do { fprintf(stderr, "Insert SIM card.%d, wait for +WIND:1 (approx. 2s) and then press enter \n", i); while ( getchar() != '\n' ); simRef = le_sim_Create(i); CU_ASSERT_PTR_NOT_NULL(simRef); state = le_sim_GetState(simRef); CU_ASSERT_TRUE((state>=LE_SIM_INSERTED) && (state<=LE_SIM_BUSY)); fprintf(stderr, "\nSIM Card.%d state:\n", i); displaySIMState(state, i); // Enter PIN if(state == LE_SIM_INSERTED) { res = le_sim_EnterPIN(simRef, (char*)&PIN_TEST[i-1][0]); CU_ASSERT_EQUAL(res, LE_OK); state = le_sim_GetState(simRef); CU_ASSERT_TRUE((state>=LE_SIM_INSERTED) && (state<=LE_SIM_BUSY)); } le_sim_Delete(simRef); i++; } while (i<=le_sim_CountSlots()); testHdlrRef=le_sim_AddNewStateHandler(TestSimStateHandler, NULL); CU_ASSERT_PTR_NOT_NULL(testHdlrRef); }
//-------------------------------------------------------------------------------------------------- void simTest_State ( le_sim_Id_t simId, const char* pinPtr ) { le_sim_States_t state; le_sim_NewStateHandlerRef_t testHdlrRef; char string[100]; memset(string, 0, 100); // Add the state handler testHdlrRef = le_sim_AddNewStateHandler(TestSimStateHandler, NULL); LE_ASSERT(NULL != testHdlrRef); // Get SIM state state = le_sim_GetState(simId); LE_INFO("test: state %d", state); LE_ASSERT((state >= LE_SIM_INSERTED) && (state <= LE_SIM_BUSY)); sprintf(string, "\nSIM Card.%d state:\n", simId); Print(string); DisplaySimState(state, simId); if (LE_SIM_INSERTED == state) { // Enter PIN code LE_ASSERT_OK(le_sim_EnterPIN(simId, pinPtr)); // Get SIM state state = le_sim_GetState(simId); LE_ASSERT((state>=LE_SIM_INSERTED) && (state<=LE_SIM_BUSY)); } }
//-------------------------------------------------------------------------------------------------- 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 state state = le_sim_GetState(simId); LE_ASSERT((state >= LE_SIM_INSERTED) && (state <= LE_SIM_BUSY)); sprintf(string, "\nSIM Card.%d state:\n", simId); Print(string); DisplaySimState(state, simId); if(state == LE_SIM_INSERTED) { // Enter PIN code res = le_sim_EnterPIN(simId, pinPtr); LE_ASSERT(res==LE_OK); // Get SIM state state = le_sim_GetState(simId); LE_ASSERT((state>=LE_SIM_INSERTED) && (state<=LE_SIM_BUSY)); } // Add the state handler testHdlrRef = le_sim_AddNewStateHandler(TestSimStateHandler, NULL); LE_ASSERT(testHdlrRef != NULL); }