void HAL_RTC_Set_UnixAlarm(time_t value) { RTC_AlarmTypeDef RTC_AlarmStructure; time_t alarm_time = HAL_RTC_Get_UnixTime() + value; struct tm *alarm_time_tm; alarm_time_tm = localtime(&alarm_time); /* Disable the Alarm A */ RTC_AlarmCmd(RTC_Alarm_A, DISABLE); RTC_AlarmStructure.RTC_AlarmTime.RTC_Hours = alarm_time_tm->tm_hour; RTC_AlarmStructure.RTC_AlarmTime.RTC_Minutes = alarm_time_tm->tm_min; RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds = alarm_time_tm->tm_sec; RTC_AlarmStructure.RTC_AlarmDateWeekDay = alarm_time_tm->tm_mday; RTC_AlarmStructure.RTC_AlarmDateWeekDaySel = RTC_AlarmDateWeekDaySel_Date; RTC_AlarmStructure.RTC_AlarmMask = RTC_AlarmMask_None; /* Configure the RTC Alarm A register */ RTC_SetAlarm(RTC_Format_BIN, RTC_Alarm_A, &RTC_AlarmStructure); /* Enable the RTC Alarm A Interrupt */ RTC_ITConfig(RTC_IT_ALRA, ENABLE); /* Enable the Alarm A */ RTC_AlarmCmd(RTC_Alarm_A, ENABLE); /* Clear RTC Alarm Flag */ RTC_ClearFlag(RTC_FLAG_ALRAF); }
time_t TimeClass::local() { return HAL_RTC_Get_UnixTime()+time_zone_cache+dst_current_cache; }
/* return the current time as seconds since Jan 1 1970 */ time_t TimeClass::now() { return HAL_RTC_Get_UnixTime(); }