コード例 #1
0
//--------------------------------------------------------------------------------------------------
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
        }
    }
}
コード例 #2
0
ファイル: mqttClient.c プロジェクト: CoRfr/mangOH-MqttClient
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;
}
コード例 #3
0
ファイル: nodeIterator.c プロジェクト: H-H-bin/legato-af
//--------------------------------------------------------------------------------------------------
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);
}
コード例 #4
0
//--------------------------------------------------------------------------------------------------
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
        }
    }
}
コード例 #5
0
ファイル: watchdog.c プロジェクト: mbaglin/legato-af
//--------------------------------------------------------------------------------------------------
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);
    }
}