Add a new -g/--gettemp option to watchdog-test and exercise
WDIOC_GETTEMP, printing the returned temperature in Fahrenheit
as documented by the watchdog API.

Signed-off-by: MigMarGil <[email protected]>
---
 .../testing/selftests/watchdog/watchdog-test.c  | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/watchdog/watchdog-test.c 
b/tools/testing/selftests/watchdog/watchdog-test.c
index 4f09c5db0..e048bf21a 100644
--- a/tools/testing/selftests/watchdog/watchdog-test.c
+++ b/tools/testing/selftests/watchdog/watchdog-test.c
@@ -5,8 +5,6 @@
 * - Tests Magic Close - CONFIG_WATCHDOG_NOWAYOUT
 * - Could be tested against softdog driver on systems that
 *   don't have watchdog hardware.
-* - TODO:
-* - Enhance test to add coverage for WDIOC_GETTEMP.
 *
 * Reference: Documentation/watchdog/watchdog-api.rst
  */
@@ -27,11 +25,12 @@
 
 int fd;
 const char v = 'V';
-static const char sopts[] = "bdehp:st:Tn:NLf:i";
+static const char sopts[] = "bdeghp:st:Tn:NLf:i";
 static const struct option lopts[] = {
        {"bootstatus",          no_argument, NULL, 'b'},
        {"disable",             no_argument, NULL, 'd'},
        {"enable",              no_argument, NULL, 'e'},
+       {"gettemp",             no_argument, NULL, 'g'},
        {"help",                no_argument, NULL, 'h'},
        {"pingrate",      required_argument, NULL, 'p'},
        {"status",              no_argument, NULL, 's'},
@@ -87,6 +86,7 @@ static void usage(char *progname)
        printf(" -b, --bootstatus\tGet last boot status (Watchdog/POR)\n");
        printf(" -d, --disable\t\tTurn off the watchdog timer\n");
        printf(" -e, --enable\t\tTurn on the watchdog timer\n");
+       printf(" -g, --gettemp\t\tGet current temperature (Fahrenheit)\n");
        printf(" -h, --help\t\tPrint the help message\n");
        printf(" -p, --pingrate=P\tSet ping rate to P seconds (default %d)\n",
               DEFAULT_PING_RATE);
@@ -222,6 +222,17 @@ int main(int argc, char *argv[])
                        else
                                printf("WDIOC_GETBOOTSTATUS error '%s'\n", 
strerror(errno));
                        break;
+               case 'g':
+                       oneshot = 1;
+                       temperature = 0;
+                       ret = ioctl(fd, WDIOC_GETTEMP, &temperature);
+                       if (ret)
+                               printf("WDIOC_GETTEMP error '%s'\n",
+                                      strerror(errno));
+                       else
+                               printf("Watchdog temperature is: %d F\n",
+                                      temperature);
+                       break;
                case 'd':
                        flags = WDIOS_DISABLECARD;
                        ret = ioctl(fd, WDIOC_SETOPTIONS, &flags);
-- 
2.43.0


Reply via email to