//-------------------------------------------------------------------------------------------------- static void StopCellNetTimerHandler ( le_timer_Ref_t timerRef ) { le_onoff_t radioState; le_result_t result; if(RequestCount != 0) { // Request has been requested in the meantime, I must cancel the Release command process le_timer_Delete(timerRef); } else { result=le_mrc_GetRadioPower(&radioState); if ((result == LE_OK) && (radioState == LE_OFF)) { // The radio is OFF, stop and delete the Timer. le_timer_Delete(timerRef); } else { le_mrc_SetRadioPower(LE_OFF); // TODO: find a solution to get off of this infinite loop } } }
int mqttClient_disconnect(mqttClient_t* clientData) { int rc = LE_OK; LE_ASSERT(clientData); if (le_timer_IsRunning(clientData->session.connTimer)) { rc = le_timer_Stop(clientData->session.connTimer); if (rc) { LE_ERROR("le_timer_Stop() failed(%d)", rc); goto cleanup; } } if (le_timer_IsRunning(clientData->session.cmdTimer)) { rc = le_timer_Stop(clientData->session.cmdTimer); if (rc) { LE_ERROR("le_timer_Stop() failed(%d)", rc); goto cleanup; } } rc = le_timer_Stop(clientData->session.pingTimer); if (rc) { LE_ERROR("le_timer_Stop() failed(%d)", rc); goto cleanup; } int len = MQTTSerialize_disconnect(clientData->session.tx.buf, sizeof(clientData->session.tx.buf)); if (len > 0) { rc = mqttClient_write(clientData, len); if (rc) { LE_ERROR("mqttClient_write() failed(%d)", rc); goto cleanup; } } le_timer_Delete(clientData->session.pingTimer); le_timer_Delete(clientData->session.cmdTimer); le_timer_Delete(clientData->session.connTimer); clientData->session.isConnected = 0; cleanup: return rc; }
//-------------------------------------------------------------------------------------------------- void ni_Release ( ni_IteratorRef_t iteratorRef ///< [IN] Free the resources used by this iterator. ) //-------------------------------------------------------------------------------------------------- { LE_ASSERT(iteratorRef != NULL); // Make sure that the transaction timer isn't still running. if (iteratorRef->timerRef != NULL) { if (le_timer_GetExpiryCount(iteratorRef->timerRef) == 0) { le_timer_Stop(iteratorRef->timerRef); } le_timer_Delete(iteratorRef->timerRef); iteratorRef->timerRef = NULL; } // Release the rest of the iterator's resources. LE_DEBUG("Releasing iterator, <%p> with a lifetime of %d seconds.", iteratorRef, (uint32_t)(le_clk_GetRelativeTime().sec - iteratorRef->creationTime.sec)); ni_Close(iteratorRef); tdb_UnregisterIterator(iteratorRef->treeRef, iteratorRef); le_pathIter_Delete(iteratorRef->pathIterRef); tdb_ReleaseTree(iteratorRef->treeRef); le_mem_Release(iteratorRef); }
//-------------------------------------------------------------------------------------------------- static void StartCellNetTimerHandler ( le_timer_Ref_t timerRef ) { le_onoff_t radioState; le_result_t result; if(RequestCount == 0) { // Release has been requested in the meantime, I must cancel the Request command process le_timer_Delete(timerRef); } else { result=le_mrc_GetRadioPower(&radioState); if ((result == LE_OK) && (radioState == LE_ON)) { // The radio is ON, stop and delete the Timer. le_timer_Delete(timerRef); // Load SIM configuration from secure storage le_sim_Id_t simSelected = le_sim_GetSelectedCard(); if (le_sim_IsPresent(simSelected)) { LoadSimFromSecStore(simSelected); } // Notify the applications even if the SIM is absent GetAndSendCellNetStateEvent(); } else { le_mrc_SetRadioPower(LE_ON); // TODO: find a solution to get off of this infinite loop } } }
//-------------------------------------------------------------------------------------------------- static void DeleteWatchdog ( pid_t dogOwner ///< The client (hash key) of the Watchdog that we want to dispose of ) { WatchdogObj_t* deadDogPtr = le_hashmap_Remove(WatchdogRefsContainer, &dogOwner); if (deadDogPtr != NULL) { // All good. The dog was in the hash LE_DEBUG("Cleaning up watchdog resources for %d", deadDogPtr->procId); le_timer_Delete(deadDogPtr->timer); le_mem_Release(deadDogPtr); } else { // else the dog MUST already be deleted. LE_DEBUG("Cleaning up watchdog resources for %d but already freed.", dogOwner); } }