@@ -29,6 +29,7 @@ enum rtc_alarm_state {
29
29
RTC_ALARM_UNKNOWN ,
30
30
RTC_ALARM_ENABLED ,
31
31
RTC_ALARM_DISABLED ,
32
+ RTC_ALARM_RES_MINUTE ,
32
33
};
33
34
34
35
FIXTURE (rtc ) {
@@ -88,7 +89,7 @@ static void nanosleep_with_retries(long ns)
88
89
}
89
90
}
90
91
91
- static enum rtc_alarm_state get_rtc_alarm_state (int fd )
92
+ static enum rtc_alarm_state get_rtc_alarm_state (int fd , int need_seconds )
92
93
{
93
94
struct rtc_param param = { 0 };
94
95
int rc ;
@@ -103,6 +104,10 @@ static enum rtc_alarm_state get_rtc_alarm_state(int fd)
103
104
if ((param .uvalue & _BITUL (RTC_FEATURE_ALARM )) == 0 )
104
105
return RTC_ALARM_DISABLED ;
105
106
107
+ /* Check if alarm has desired granularity */
108
+ if (need_seconds && (param .uvalue & _BITUL (RTC_FEATURE_ALARM_RES_MINUTE )))
109
+ return RTC_ALARM_RES_MINUTE ;
110
+
106
111
return RTC_ALARM_ENABLED ;
107
112
}
108
113
@@ -227,9 +232,11 @@ TEST_F(rtc, alarm_alm_set) {
227
232
SKIP (return , "Skipping test since %s does not exist" , rtc_file );
228
233
ASSERT_NE (-1 , self -> fd );
229
234
230
- alarm_state = get_rtc_alarm_state (self -> fd );
235
+ alarm_state = get_rtc_alarm_state (self -> fd , 1 );
231
236
if (alarm_state == RTC_ALARM_DISABLED )
232
237
SKIP (return , "Skipping test since alarms are not supported." );
238
+ if (alarm_state == RTC_ALARM_RES_MINUTE )
239
+ SKIP (return , "Skipping test since alarms has only minute granularity." );
233
240
234
241
rc = ioctl (self -> fd , RTC_RD_TIME , & tm );
235
242
ASSERT_NE (-1 , rc );
@@ -295,9 +302,11 @@ TEST_F(rtc, alarm_wkalm_set) {
295
302
SKIP (return , "Skipping test since %s does not exist" , rtc_file );
296
303
ASSERT_NE (-1 , self -> fd );
297
304
298
- alarm_state = get_rtc_alarm_state (self -> fd );
305
+ alarm_state = get_rtc_alarm_state (self -> fd , 1 );
299
306
if (alarm_state == RTC_ALARM_DISABLED )
300
307
SKIP (return , "Skipping test since alarms are not supported." );
308
+ if (alarm_state == RTC_ALARM_RES_MINUTE )
309
+ SKIP (return , "Skipping test since alarms has only minute granularity." );
301
310
302
311
rc = ioctl (self -> fd , RTC_RD_TIME , & alarm .time );
303
312
ASSERT_NE (-1 , rc );
@@ -357,7 +366,7 @@ TEST_F_TIMEOUT(rtc, alarm_alm_set_minute, 65) {
357
366
SKIP (return , "Skipping test since %s does not exist" , rtc_file );
358
367
ASSERT_NE (-1 , self -> fd );
359
368
360
- alarm_state = get_rtc_alarm_state (self -> fd );
369
+ alarm_state = get_rtc_alarm_state (self -> fd , 0 );
361
370
if (alarm_state == RTC_ALARM_DISABLED )
362
371
SKIP (return , "Skipping test since alarms are not supported." );
363
372
@@ -425,7 +434,7 @@ TEST_F_TIMEOUT(rtc, alarm_wkalm_set_minute, 65) {
425
434
SKIP (return , "Skipping test since %s does not exist" , rtc_file );
426
435
ASSERT_NE (-1 , self -> fd );
427
436
428
- alarm_state = get_rtc_alarm_state (self -> fd );
437
+ alarm_state = get_rtc_alarm_state (self -> fd , 0 );
429
438
if (alarm_state == RTC_ALARM_DISABLED )
430
439
SKIP (return , "Skipping test since alarms are not supported." );
431
440
0 commit comments