drivertest/rtc:fix rtc testcase.

deviation from (-10,0) to (-10,10)

Signed-off-by: yangguangcai <yangguangcai@xiaomi.com>
This commit is contained in:
yangguangcai 2023-05-30 19:50:19 +08:00 committed by Xiang Xiao
parent cd802f6a8f
commit 0c8579151f

@ -203,7 +203,7 @@ static void test_case_rtc_02(FAR void **state)
struct rtc_setalarm_s rtc_setalarm; struct rtc_setalarm_s rtc_setalarm;
struct rtc_rdalarm_s rtc_rdalarm; struct rtc_rdalarm_s rtc_rdalarm;
struct rtc_setrelative_s rtc_setrelative; struct rtc_setrelative_s rtc_setrelative;
struct rtc_time rd_time; struct rtc_time set_time;
uint32_t before_timestamp; uint32_t before_timestamp;
uint32_t range; uint32_t range;
sigset_t set; sigset_t set;
@ -217,8 +217,11 @@ static void test_case_rtc_02(FAR void **state)
fd = open(rtc_state->devpath, O_RDWR); fd = open(rtc_state->devpath, O_RDWR);
assert_return_code(fd, 0); assert_return_code(fd, 0);
ret = ioctl(fd, RTC_RD_TIME, &rd_time); memset(&set_time, 0, sizeof(set_time));
assert_return_code(ret, OK); set_time.tm_year = 2000 - TM_YEAR_BASE;
set_time.tm_mon = TM_JANUARY;
set_time.tm_mday = 1;
set_time.tm_wday = TM_SATURDAY;
/* Set rtc alarm */ /* Set rtc alarm */
@ -227,10 +230,13 @@ static void test_case_rtc_02(FAR void **state)
rtc_setalarm.event.sigev_notify = SIGEV_SIGNAL; rtc_setalarm.event.sigev_notify = SIGEV_SIGNAL;
rtc_setalarm.event.sigev_signo = RTC_SIGNO; rtc_setalarm.event.sigev_signo = RTC_SIGNO;
rtc_setalarm.event.sigev_value.sival_ptr = NULL; rtc_setalarm.event.sigev_value.sival_ptr = NULL;
rtc_setalarm.time = rd_time; rtc_setalarm.time = set_time;
add_timeout(&rtc_setalarm.time); add_timeout(&rtc_setalarm.time);
ret = ioctl(fd, RTC_SET_TIME, (unsigned long)((uintptr_t)&set_time));
assert_return_code(ret, OK);
ret = ioctl(fd, RTC_SET_ALARM, &rtc_setalarm); ret = ioctl(fd, RTC_SET_ALARM, &rtc_setalarm);
assert_return_code(ret, OK); assert_return_code(ret, OK);
@ -242,7 +248,7 @@ static void test_case_rtc_02(FAR void **state)
ret = ioctl(fd, RTC_RD_ALARM, &rtc_rdalarm); ret = ioctl(fd, RTC_RD_ALARM, &rtc_rdalarm);
assert_return_code(ret, OK); assert_return_code(ret, OK);
assert_int_equal(mktime((struct tm *)&rd_time) + DEFAULT_TIME_OUT, assert_int_equal(mktime((struct tm *)&rtc_rdalarm.time),
mktime((struct tm *)&rtc_setalarm.time)); mktime((struct tm *)&rtc_setalarm.time));
ret = sigwaitinfo(&set, NULL); ret = sigwaitinfo(&set, NULL);
@ -250,14 +256,14 @@ static void test_case_rtc_02(FAR void **state)
range = abs(get_timestamp() - before_timestamp); range = abs(get_timestamp() - before_timestamp);
assert_in_range(range, DEFAULT_TIME_OUT * 1000 - RTC_DEFAULT_DEVIATION, assert_in_range(range, DEFAULT_TIME_OUT * 1000 - RTC_DEFAULT_DEVIATION,
DEFAULT_TIME_OUT * 1000); DEFAULT_TIME_OUT * 1000 + RTC_DEFAULT_DEVIATION);
/* Cancel rtc alarm */ /* Cancel rtc alarm */
ret = ioctl(fd, RTC_RD_TIME, &rd_time); ret = ioctl(fd, RTC_SET_TIME, (unsigned long)((uintptr_t)&set_time));
assert_return_code(ret, OK); assert_return_code(ret, OK);
rtc_setalarm.time = rd_time; rtc_setalarm.time = set_time;
add_timeout(&rtc_setalarm.time); add_timeout(&rtc_setalarm.time);
ret = ioctl(fd, RTC_SET_ALARM, &rtc_setalarm); ret = ioctl(fd, RTC_SET_ALARM, &rtc_setalarm);
@ -285,7 +291,7 @@ static void test_case_rtc_02(FAR void **state)
range = abs(get_timestamp() - before_timestamp); range = abs(get_timestamp() - before_timestamp);
assert_in_range(range, DEFAULT_TIME_OUT * 1000 - RTC_DEFAULT_DEVIATION, assert_in_range(range, DEFAULT_TIME_OUT * 1000 - RTC_DEFAULT_DEVIATION,
DEFAULT_TIME_OUT * 1000); DEFAULT_TIME_OUT * 1000 + RTC_DEFAULT_DEVIATION);
close(fd); close(fd);
} }
#endif #endif
@ -300,7 +306,7 @@ static void rtc_periodic_callback(union sigval arg)
FAR int *tim = (int *)arg.sival_ptr; FAR int *tim = (int *)arg.sival_ptr;
int range = get_timestamp() - *tim; int range = get_timestamp() - *tim;
assert_in_range(range, DEFAULT_TIME_OUT * 1000 - RTC_DEFAULT_DEVIATION, assert_in_range(range, DEFAULT_TIME_OUT * 1000 - RTC_DEFAULT_DEVIATION,
DEFAULT_TIME_OUT * 1000); DEFAULT_TIME_OUT * 1000 + RTC_DEFAULT_DEVIATION);
syslog(LOG_DEBUG, "rtc periodic callback trigger!!!\n"); syslog(LOG_DEBUG, "rtc periodic callback trigger!!!\n");
*tim = get_timestamp(); *tim = get_timestamp();
} }