@@ -43,14 +43,25 @@ impl From<Alarm> for Event {
4343 }
4444}
4545
46- #[ cfg_attr( feature = "defmt" , derive( defmt:: Format ) ) ]
4746#[ derive( Debug , Eq , PartialEq , Copy , Clone ) ]
4847pub enum AlarmDay {
4948 Date ( Date ) ,
5049 Weekday ( Weekday ) ,
5150 EveryDay ,
5251}
5352
53+ impl From < Date > for AlarmDay {
54+ fn from ( date : Date ) -> Self {
55+ Self :: Date ( date)
56+ }
57+ }
58+
59+ impl From < Weekday > for AlarmDay {
60+ fn from ( day : Weekday ) -> Self {
61+ Self :: Weekday ( day)
62+ }
63+ }
64+
5465/// RTC clock source LSE oscillator clock (type state)
5566pub struct Lse ;
5667/// RTC clock source LSI oscillator clock (type state)
@@ -599,7 +610,13 @@ impl<CS> Rtc<CS> {
599610
600611 /// Sets the time at which an alarm will be triggered
601612 /// This also clears the alarm flag if it is set
602- pub fn set_alarm ( & mut self , alarm : Alarm , date : AlarmDay , time : Time ) -> Result < ( ) , Error > {
613+ pub fn set_alarm (
614+ & mut self ,
615+ alarm : Alarm ,
616+ date : impl Into < AlarmDay > ,
617+ time : Time ,
618+ ) -> Result < ( ) , Error > {
619+ let date = date. into ( ) ;
603620 let ( daymask, wdsel, ( dt, du) ) = match date {
604621 AlarmDay :: Date ( date) => ( false , false , bcd2_encode ( date. day ( ) . into ( ) ) ?) ,
605622 AlarmDay :: Weekday ( weekday) => ( false , true , ( 0 , weekday. number_days_from_monday ( ) ) ) ,
0 commit comments