RTC lower half was missing call to F4 alarm cancel function

This commit is contained in:
Gregory Nutt 2016-04-04 08:23:09 -06:00
parent 531b9f6626
commit 1ea7b48677
2 changed files with 38 additions and 3 deletions

View File

@ -617,13 +617,30 @@ static int stm32_setrelative(FAR struct rtc_lowerhalf_s *lower,
static int stm32_cancelalarm(FAR struct rtc_lowerhalf_s *lower, int alarmid)
{
#ifdef CONFIG_STM32_STM32F40XX
/* ID0-> Alarm A; ID1 -> Alarm B */
FAR struct stm32_lowerhalf_s *priv;
FAR struct stm32_cbinfo_s *cbinfo;
int ret = -EINVAL;
DEBUGASSERT(lower != NULL);
DEBUGASSERT(alarmid == RTC_ALARMA || alarmid == RTC_ALARMB);
priv = (FAR struct stm32_lowerhalf_s *)lower;
# warning Missing logic
return -ENOSYS;
/* ID0-> Alarm A; ID1 -> Alarm B */
if (alarmid == RTC_ALARMA || alarmid == RTC_ALARMB)
{
/* Nullify callback information to reduce window for race conditions */
cbinfo = &priv->cbinfo[alarmid];
cbinfo->cb = NULL;
cbinfo->priv = NULL;
/* Then cancel the alarm */
ret = stm32_rtc_cancelalarm((enum alm_id_e)alarmid);
}
return ret;
#else
FAR struct stm32_lowerhalf_s *priv;
@ -639,6 +656,8 @@ static int stm32_cancelalarm(FAR struct rtc_lowerhalf_s *lower, int alarmid)
cbinfo->cb = NULL;
cbinfo->priv = NULL;
/* Then cancel the alarm */
return stm32_rtc_cancelalarm();
#endif
}

View File

@ -93,5 +93,21 @@ struct alm_setalarm_s
int stm32_rtc_setalarm(FAR struct alm_setalarm_s *alminfo);
/****************************************************************************
* Name: stm32_rtc_cancelalarm
*
* Description:
* Cancel an alaram.
*
* Input Parameters:
* alarmid - Identifies the alarm to be cancelled
*
* Returned Value:
* Zero (OK) on success; a negated errno on failure
*
****************************************************************************/
int stm32_rtc_cancelalarm(enum alm_id_e alarmid);
#endif /* CONFIG_RTC_ALARM */
#endif /* __ARCH_ARM_SRC_STM32_STM32F40XXX_ALARM_H */