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
Diff: testSensor.cpp
- 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)