]> Untitled Git - hvrtc.git/commitdiff
Add time option
authorHugo Villeneuve <hvilleneuve@dimonoff.com>
Mon, 9 Mar 2026 21:03:15 +0000 (17:03 -0400)
committerHugo Villeneuve <hvilleneuve@dimonoff.com>
Tue, 10 Mar 2026 19:35:16 +0000 (15:35 -0400)
Change test option to "x"

Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
src/main.c
src/options.c
src/options.h

index 38c2d951ebb38f96bb2ae201298500f96e033d90..19a39d562d4fe3f9939a1a316832dfcf42159675 100644 (file)
@@ -137,6 +137,24 @@ static int rtc_param_clear_vl_backup(int fd)
        return 0;
 }
 
+/* Read the RTC time/date */
+static int rtc_get_time(int fd, struct rtc_time *rtc_tm)
+{
+       int rc;
+
+       rc = ioctl(fd, RTC_RD_TIME, rtc_tm);
+       if (rc == -1) {
+               perror("RTC_RD_TIME ioctl");
+               return -errno;
+       }
+
+       printf("Current RTC date/time: %04d-%02d-%02d %02d:%02d:%02d\n",
+              rtc_tm->tm_year + 1900, rtc_tm->tm_mon + 1, rtc_tm->tm_mday,
+              rtc_tm->tm_hour, rtc_tm->tm_min, rtc_tm->tm_sec);
+
+       return 0;
+}
+
 static int rtc_test_uie(int fd)
 {
        unsigned long data;
@@ -221,6 +239,10 @@ static int rtc_test_read(int fd)
        unsigned long data;
        int rc;
 
+       rc = rtc_get_time(fd, &rtc_tm);
+       if (rc < 0)
+               return rc;
+
        /* Read the RTC time/date */
        rc = ioctl(fd, RTC_RD_TIME, &rtc_tm);
        if (rc == -1) {
@@ -434,6 +456,14 @@ main(int argc, char **argv)
                        exit(rc);
        }
 
+       if (options.time) {
+               struct rtc_time rtc_tm;
+
+               rc = rtc_get_time(fd, &rtc_tm);
+               if (rc < 0)
+                       exit(rc);
+       }
+
        if (options.test) {
                rc = rtc_test(fd);
                if (rc < 0)
index 930ba0f0a5aa48c5074f9e68e14d03ad1d5449cf..68eb3d1e09675eb8be7fdb997c268264d2595caa 100644 (file)
@@ -61,7 +61,8 @@ static struct argp_option argp_options[] = {
        {0,       0,   0,         0,                   ARGP_BSM_STR, 0},
        {"clear", 'c', 0,         0, "Clear \"voltage low\" event", 0},
        {"dev",   'd', "path",    0, "RTC device path (optional)", 0},
-       {"test",  't', 0,         0, "Test RTC", 0},
+       {"test",  'x', 0,         0, "Test RTC", 0},
+       {"time",  't', 0,         0, "Get RTC time", 0},
        {"voltage-level", 'v', 0, 0, "Get battery backup voltage level", 0},
        /*
         * Add -h manually; OPTION_HIDDEN prevents it from appearing twice in --help.
@@ -138,6 +139,9 @@ parse_opt(int key, char *arg, struct argp_state *state)
                argp_usage(state);
                break;
        case 't':
+               options.time = true;
+               break;
+       case 'x':
                options.test = true;
                break;
        case 'v':
index c643ee57be6c3e666f1bb079ac5616a9aaeaa76d..97685e4c23bec0b9735959f2f2351a118fa45c29 100644 (file)
@@ -22,6 +22,7 @@ struct options_t {
        int vl_backup;
        int clear;
        int test;
+       int time;
 };
 
 int parse_command_line_options(int argc, char *argv[]);