@@ -18,6 +18,8 @@ use rtcc::{DateTimeAccess, Datelike, Hours, NaiveDate, NaiveDateTime, NaiveTime,
18
18
pub enum Error {
19
19
/// Invalid input error
20
20
InvalidInputData ,
21
+ /// Invalid register data, failed to convert to rtcc Type
22
+ InvalidRtcData ,
21
23
}
22
24
23
25
/// Real Time Clock peripheral
@@ -178,13 +180,10 @@ impl DateTimeAccess for Rtc {
178
180
let minutes = self . minutes ( ) ?;
179
181
let hours = hours_to_u8 ( self . hours ( ) ?) ?;
180
182
181
- Ok (
182
- NaiveDate :: from_ymd ( year. into ( ) , month. into ( ) , day. into ( ) ) . and_hms (
183
- hours. into ( ) ,
184
- minutes. into ( ) ,
185
- seconds. into ( ) ,
186
- ) ,
187
- )
183
+ NaiveDate :: from_ymd_opt ( year. into ( ) , month. into ( ) , day. into ( ) )
184
+ . ok_or ( Error :: InvalidRtcData ) ?
185
+ . and_hms_opt ( hours. into ( ) , minutes. into ( ) , seconds. into ( ) )
186
+ . ok_or ( Error :: InvalidRtcData )
188
187
}
189
188
}
190
189
@@ -333,11 +332,8 @@ impl Rtcc for Rtc {
333
332
let minutes = self . minutes ( ) ?;
334
333
let hours = hours_to_u8 ( self . hours ( ) ?) ?;
335
334
336
- Ok ( NaiveTime :: from_hms (
337
- hours. into ( ) ,
338
- minutes. into ( ) ,
339
- seconds. into ( ) ,
340
- ) )
335
+ NaiveTime :: from_hms_opt ( hours. into ( ) , minutes. into ( ) , seconds. into ( ) )
336
+ . ok_or ( Error :: InvalidRtcData )
341
337
}
342
338
343
339
fn weekday ( & mut self ) -> Result < u8 , Self :: Error > {
@@ -370,7 +366,7 @@ impl Rtcc for Rtc {
370
366
let month = self . month ( ) ?;
371
367
let year = self . year ( ) ?;
372
368
373
- Ok ( NaiveDate :: from_ymd ( year. into ( ) , month. into ( ) , day. into ( ) ) )
369
+ NaiveDate :: from_ymd_opt ( year. into ( ) , month. into ( ) , day. into ( ) ) . ok_or ( Error :: InvalidRtcData )
374
370
}
375
371
}
376
372
@@ -384,13 +380,13 @@ fn bcd2_encode(word: u32) -> Result<(u8, u8), Error> {
384
380
let l = match ( word / 10 ) . try_into ( ) {
385
381
Ok ( v) => v,
386
382
Err ( _) => {
387
- return Err ( Error :: InvalidInputData ) ;
383
+ return Err ( Error :: InvalidRtcData ) ;
388
384
}
389
385
} ;
390
386
let r = match ( word % 10 ) . try_into ( ) {
391
387
Ok ( v) => v,
392
388
Err ( _) => {
393
- return Err ( Error :: InvalidInputData ) ;
389
+ return Err ( Error :: InvalidRtcData ) ;
394
390
}
395
391
} ;
396
392
0 commit comments