@@ -71,6 +71,7 @@ void STM32RTC::begin(bool resetTime, Hour_Format format)
7171void STM32RTC::begin (Hour_Format format)
7272{
7373 if (_configured == false ) {
74+ _format = format;
7475 RTC_init ((format == HOUR_12) ? HOUR_FORMAT_12 : HOUR_FORMAT_24,
7576 (_clockSource == LSE_CLOCK) ? ::LSE_CLOCK :
7677 (_clockSource == HSE_CLOCK) ? ::HSE_CLOCK : ::LSI_CLOCK
@@ -143,7 +144,7 @@ void STM32RTC::setClockSource(Source_Clock source)
143144 */
144145void STM32RTC::getPrediv (int8_t *predivA, int16_t *predivS)
145146{
146- if ((predivA != NULL ) && (predivS != NULL )) {
147+ if ((predivA != nullptr ) && (predivS != nullptr )) {
147148 RTC_getPrediv (predivA, predivS);
148149 }
149150}
@@ -263,14 +264,14 @@ uint8_t STM32RTC::getMinutes(void)
263264
264265/* *
265266 * @brief get RTC hours.
266- * @param format: optional (default: NULL )
267+ * @param format: optional (default: nullptr )
267268 * pointer to the current hour period set in the RTC: AM or PM
268269 * @retval return the current hours from the RTC.
269270 */
270271uint8_t STM32RTC::getHours (AM_PM *period)
271272{
272273 syncTime ();
273- if (period != NULL ) {
274+ if (period != nullptr ) {
274275 *period = _hoursPeriod;
275276 }
276277 return _hours;
@@ -282,26 +283,26 @@ uint8_t STM32RTC::getHours(AM_PM *period)
282283 * @param minutes: pointer to the current minutes
283284 * @param seconds: pointer to the current seconds
284285 * @param subSeconds: pointer to the current subSeconds
285- * @param period: optional (default: NULL )
286+ * @param period: optional (default: nullptr )
286287 * pointer to the current hour period set in the RTC: AM or PM
287288 * @retval none
288289 */
289290void STM32RTC::getTime (uint8_t *hours, uint8_t *minutes, uint8_t *seconds, uint32_t *subSeconds, AM_PM *period)
290291{
291292 syncTime ();
292- if (hours != NULL ) {
293+ if (hours != nullptr ) {
293294 *hours = _hours;
294295 }
295- if (minutes != NULL ) {
296+ if (minutes != nullptr ) {
296297 *minutes = _minutes;
297298 }
298- if (seconds != NULL ) {
299+ if (seconds != nullptr ) {
299300 *seconds = _seconds;
300301 }
301- if (subSeconds != NULL ) {
302+ if (subSeconds != nullptr ) {
302303 *subSeconds = _subSeconds;
303304 }
304- if (period != NULL ) {
305+ if (period != nullptr ) {
305306 *period = _hoursPeriod;
306307 }
307308}
@@ -357,16 +358,16 @@ uint8_t STM32RTC::getYear(void)
357358void STM32RTC::getDate (uint8_t *weekDay, uint8_t *day, uint8_t *month, uint8_t *year)
358359{
359360 syncDate ();
360- if (weekDay != NULL ) {
361+ if (weekDay != nullptr ) {
361362 *weekDay = _wday;
362363 }
363- if (day != NULL ) {
364+ if (day != nullptr ) {
364365 *day = _day;
365366 }
366- if (month != NULL ) {
367+ if (month != nullptr ) {
367368 *month = _month;
368369 }
369- if (year != NULL ) {
370+ if (year != nullptr ) {
370371 *year = _year;
371372 }
372373}
@@ -403,14 +404,14 @@ uint8_t STM32RTC::getAlarmMinutes(void)
403404
404405/* *
405406 * @brief get RTC alarm hour.
406- * @param format: optional (default: NULL )
407+ * @param format: optional (default: nullptr )
407408 * pointer to the current hour format set in the RTC: AM or PM
408409 * @retval return the current alarm hour.
409410 */
410411uint8_t STM32RTC::getAlarmHours (AM_PM *period)
411412{
412413 syncAlarmTime ();
413- if (period != NULL ) {
414+ if (period != nullptr ) {
414415 *period = _alarmPeriod;
415416 }
416417 return _alarmHours;
@@ -503,23 +504,7 @@ void STM32RTC::setMinutes(uint8_t minutes)
503504/* *
504505 * @brief set RTC hours.
505506 * @param hours: 0-23
506- * @retval none
507- */
508- void STM32RTC::setHours (uint8_t hours)
509- {
510- if (_configured) {
511- syncTime ();
512- if (hours < 24 ) {
513- _hours = hours;
514- }
515- RTC_SetTime (_hours, _minutes, _seconds, _subSeconds, (_hoursPeriod == AM) ? HOUR_AM : HOUR_PM);
516- }
517- }
518-
519- /* *
520- * @brief set RTC hours.
521- * @param hours: 0-23 or 0-12
522- * @param hours format: AM or PM
507+ * @param period: hour format AM or PM (optional)
523508 * @retval none
524509 */
525510void STM32RTC::setHours (uint8_t hours, AM_PM period)
@@ -529,41 +514,20 @@ void STM32RTC::setHours(uint8_t hours, AM_PM period)
529514 if (hours < 24 ) {
530515 _hours = hours;
531516 }
532- _hoursPeriod = period;
533- RTC_SetTime (_hours, _minutes, _seconds, _subSeconds, (_hoursPeriod == AM) ? HOUR_AM : HOUR_PM);
534- }
535- }
536-
537- /* *
538- * @brief set RTC time.
539- * @param hours: 0-23
540- * @param minutes: 0-59
541- * @param seconds: 0-59
542- * @retval none
543- */
544- void STM32RTC::setTime (uint8_t hours, uint8_t minutes, uint8_t seconds)
545- {
546- if (_configured) {
547- syncTime ();
548- if (seconds < 60 ) {
549- _seconds = seconds;
550- }
551- if (minutes < 60 ) {
552- _minutes = minutes;
553- }
554- if (hours < 24 ) {
555- _hours = hours;
517+ if (_format == HOUR_12) {
518+ _hoursPeriod = period;
556519 }
557520 RTC_SetTime (_hours, _minutes, _seconds, _subSeconds, (_hoursPeriod == AM) ? HOUR_AM : HOUR_PM);
558521 }
559522}
560523
561524/* *
562525 * @brief set RTC time.
563- * @param hours: 0-23 or 0-12
526+ * @param hours: 0-23
564527 * @param minutes: 0-59
565528 * @param seconds: 0-59
566- * @param hour format: AM or PM
529+ * @param subSeconds: 0-999 (optional)
530+ * @param period: hour format AM or PM (optional)
567531 * @retval none
568532 */
569533void STM32RTC::setTime (uint8_t hours, uint8_t minutes, uint8_t seconds, uint32_t subSeconds, AM_PM period)
@@ -582,7 +546,9 @@ void STM32RTC::setTime(uint8_t hours, uint8_t minutes, uint8_t seconds, uint32_t
582546 if (hours < 24 ) {
583547 _hours = hours;
584548 }
585- _hoursPeriod = period;
549+ if (_format == HOUR_12) {
550+ _hoursPeriod = period;
551+ }
586552 RTC_SetTime (_hours, _minutes, _seconds, _subSeconds, (_hoursPeriod == AM) ? HOUR_AM : HOUR_PM);
587553 }
588554}
@@ -745,24 +711,10 @@ void STM32RTC::setAlarmMinutes(uint8_t minutes)
745711 }
746712}
747713
748- /* *
749- * @brief set RTC alarm hour.
750- * @param hour: 0-23
751- * @retval none
752- */
753- void STM32RTC::setAlarmHours (uint8_t hours)
754- {
755- if (_configured) {
756- if (hours < 24 ) {
757- _alarmHours = hours;
758- }
759- }
760- }
761-
762714/* *
763715 * @brief set RTC alarm hour.
764716 * @param hour: 0-23 or 0-12
765- * @param hour format: AM or PM
717+ * @param period: hour format AM or PM (optional)
766718 * @retval none
767719 */
768720void STM32RTC::setAlarmHours (uint8_t hours, AM_PM period)
@@ -771,24 +723,9 @@ void STM32RTC::setAlarmHours(uint8_t hours, AM_PM period)
771723 if (hours < 24 ) {
772724 _alarmHours = hours;
773725 }
774- _alarmPeriod = period;
775- }
776- }
777-
778- /* *
779- * @brief set RTC alarm time.
780- * @param hours: 0-23
781- * @param minutes: 0-59
782- * @param seconds: 0-59
783- * @retval none
784- */
785- void STM32RTC::setAlarmTime (uint8_t hours, uint8_t minutes, uint8_t seconds, uint32_t subSeconds)
786- {
787- if (_configured) {
788- setAlarmHours (hours);
789- setAlarmMinutes (minutes);
790- setAlarmSeconds (seconds);
791- setAlarmSubSeconds (subSeconds);
726+ if (_format == HOUR_12) {
727+ _alarmPeriod = period;
728+ }
792729 }
793730}
794731
@@ -797,15 +734,17 @@ void STM32RTC::setAlarmTime(uint8_t hours, uint8_t minutes, uint8_t seconds, uin
797734 * @param hours: 0-23
798735 * @param minutes: 0-59
799736 * @param seconds: 0-59
800- * @param hour format: AM or PM
737+ * @param subSeconds: 0-999 (optional)
738+ * @param period: hour format AM or PM (optional)
801739 * @retval none
802740 */
803- void STM32RTC::setAlarmTime (uint8_t hours, uint8_t minutes, uint8_t seconds, AM_PM period)
741+ void STM32RTC::setAlarmTime (uint8_t hours, uint8_t minutes, uint8_t seconds, uint32_t subSeconds, AM_PM period)
804742{
805743 if (_configured) {
806744 setAlarmHours (hours, period);
807745 setAlarmMinutes (minutes);
808746 setAlarmSeconds (seconds);
747+ setAlarmSubSeconds (subSeconds);
809748 }
810749}
811750
0 commit comments