/** * @brief Starts the timer in one shot mode and waits for completion. * @details This function specifically polls the timer waiting for completion * in order to not have extra delays caused by interrupt servicing, * this function is only recommended for short delays. * * @param[in] gptp pointer to the @p GPTDriver object * @param[in] interval time interval in ticks * * @notapi */ void gpt_lld_polled_delay(GPTDriver *gptp, gptcnt_t interval) { gptp->callback = gpt_lld_dummy_callback; gpt_lld_start_timer(gptp, interval); //FIX while (gptp->state != GPT_READY) {} }
/** * @brief Starts the timer in continuous mode. * * @param[in] gptp pointer to the @p GPTDriver object * @param[in] interval period in ticks * * @iclass */ void gptStartContinuousI(GPTDriver *gptp, gptcnt_t interval) { osalDbgCheckClassI(); osalDbgCheck(gptp != NULL); osalDbgAssert(gptp->state == GPT_READY, "invalid state"); gptp->state = GPT_CONTINUOUS; gpt_lld_start_timer(gptp, interval); }
/** * @brief Starts the timer in one shot mode. * * @param[in] gptp pointer to the @p GPTDriver object * @param[in] interval time interval in ticks * * @api */ void gptStartOneShotI(GPTDriver *gptp, gptcnt_t interval) { chDbgCheckClassI(); chDbgCheck(gptp != NULL, "gptStartOneShotI"); chDbgAssert(gptp->state == GPT_READY, "gptStartOneShotI(), #1", "invalid state"); gptp->state = GPT_ONESHOT; gpt_lld_start_timer(gptp, interval); }
/** * @brief Starts the timer in one shot mode. * * @param[in] gptp pointer to the @p GPTDriver object * @param[in] interval time interval in ticks * * @api */ void gptStartOneShotI(GPTDriver *gptp, gptcnt_t interval) { osalDbgCheckClassI(); osalDbgCheck(gptp != NULL); osalDbgCheck(gptp->config->callback != NULL); osalDbgAssert(gptp->state == GPT_READY, "invalid state"); gptp->state = GPT_ONESHOT; gpt_lld_start_timer(gptp, interval); }