Allow testing haptic devices by index.
authorEdgar Simo <bobbens@gmail.com>
Thu, 04 Sep 2008 13:43:39 +0000
changeset 2748 5668c3dfe7bc
parent 2747 47519ce71def
child 2749 1c5f440a60fe
Allow testing haptic devices by index.
test/testhaptic.c
--- a/test/testhaptic.c	Tue Sep 02 20:27:47 2008 +0000
+++ b/test/testhaptic.c	Thu Sep 04 13:43:39 2008 +0000
@@ -19,7 +19,7 @@
 
 #include <stdio.h>              /* printf */
 #include <string.h>             /* strstr */
-
+#include <ctype.h>              /* isdigit */
 
 
 static SDL_Haptic *haptic;
@@ -42,20 +42,29 @@
 {
     int i;
     char *name;
+    int index;
     SDL_HapticEffect efx[5];
     int id[5];
     int nefx;
     unsigned int supported;
 
     name = NULL;
+    index = -1;
     if (argc > 1) {
         name = argv[1];
         if ((strcmp(name, "--help") == 0) || (strcmp(name, "-h") == 0)) {
-            printf("USAGE: %s [device name]\n"
-                   "If device name is specified, it will try to find a device whose name\n"
-                   "contains device name for testing.\n", argv[0]);
+            printf("USAGE: %s [device]\n"
+                   "If device is a two-digit number it'll use it as an index, otherwise\n"
+                   "it'll use it as if it were part of the device's name.\n",
+                   argv[0]);
             return 0;
         }
+
+        i = strlen(name);
+        if ((i < 3) && isdigit(name[0]) && ((i == 1) || isdigit(name[1]))) {
+            index = atoi(name);
+            name = NULL;
+        }
     }
 
     /* Initialize the force feedbackness */
@@ -63,9 +72,9 @@
              SDL_INIT_HAPTIC);
     printf("%d Haptic devices detected.\n", SDL_NumHaptics());
     if (SDL_NumHaptics() > 0) {
-        /* We'll just use the first force feedback device found */
+        /* We'll just use index or the first force feedback device found */
         if (name == NULL) {
-            i = 0;
+            i = (index != -1) ? index : 0;
         }
         /* Try to find matching device */
         else {
@@ -83,7 +92,8 @@
 
         haptic = SDL_HapticOpen(i);
         if (haptic == NULL) {
-            perror("Unable to create the haptic device");
+            printf("Unable to create the haptic device: %s\n",
+                   SDL_GetError());
             return 1;
         }
         printf("Device: %s\n", SDL_HapticName(i));