I2C sensor test program, derived from testI2C program. Simple test for FXOS8700CQ, HIH6130, MAG3110, MMA8451Q, MMA8452Q, MPL3115A2, MAX44000, MAX44005, MAX44008, MAX30101 included beside simple I2C read/write from testI2C.

Dependencies:   FXOS8700CQ HIH6130 IS31SE5000 MAG3110 MAX44000 MAX44005 MAX44008 MMA8451Q MMA8452Q MPL3115A2 VEML6040 VEML6075 mbed vt100 LM75B FXAS21002 MAX30101 VCNL4020 VCNL4100

Revision:
12:b3dff3bbb1eb
Parent:
9:d4f76e6fa35f
Child:
13:91e4be27e7c1
--- a/testSensor.cpp	Tue Feb 21 08:07:12 2017 +0000
+++ b/testSensor.cpp	Fri Feb 24 04:25:10 2017 +0000
@@ -125,7 +125,7 @@
     printf("write <addr> <data> : write <data> to register <addr>\n") ;
     printf("frequency <freq>    : change frequency to <freq> Hz\n") ;
     printf("bus                 : bus scan for existing I2C addresses\n") ;
-    printf("test <sensor>       : test a sensor\n") ;
+    printf("test <sensor or address>  : test a sensor\n") ;
     printf("loop <number>       : specify loop count for test\n") ;
     printf("interval <numver>   : ms interval for each loop\n") ;
     printf("status              : print current status\n") ;
@@ -218,15 +218,29 @@
 void doTestSensor(void) 
 {
     int i ;
+    int address = 0 ;
     char name[32] ;
     scanf("%s", name) ;
     str2upper(name) ;
-    for (i = 0 ; i2c_sensor[i].address != 0 ; i++) {
-        if (strcmp(name, i2c_sensor[i].name) == 0) { /* found */
-            i2c_sensor[i].test_func() ;
-            break ;
+    if (('0' <= *name)&&(*name <= '9')) { /* assume it's the address */
+        sscanf(name, "%X", &address) ;
+        for (i = 0 ; i < *(i2c_sensor[i].name) != 0 ; i++ ) {
+            if (i2c_sensor[i].address == address) {
+                strcpy(name, i2c_sensor[i].name) ;
+                break ;
+            }
+        }
+    } else {
+        for (i = 0 ; i2c_sensor[i].address != 0 ; i++) {
+            if (strcmp(name, i2c_sensor[i].name) == 0) { /* found */
+                break ;
+            }
         }
     }
+    if (i2c_sensor[i].name != 0) { /* name found */
+        i2c_sensor[i].test_func() ;
+    }
+
 }
     
 void doCommand(char *str)