![](/media/cache/group/IMG_1289.JPG.50x50_q85.jpg)
Simple I2C test program. open/close/read/write supported.
Diff: main.cpp
- Revision:
- 1:e105ceaee6ac
- Parent:
- 0:1a2637f8e2dd
- Child:
- 2:218e22a54982
--- a/main.cpp Tue Feb 09 00:23:22 2016 +0000 +++ b/main.cpp Tue Apr 05 02:11:20 2016 +0000 @@ -35,6 +35,10 @@ int addr ; int len ; uint8_t *data ; + if (i2c == 0) { + printf("I2C is not opened\n") ; + return ; + } scanf("%X %X", &addr, &len) ; if (len > 0) { data = new uint8_t[len] ; @@ -56,9 +60,13 @@ { int addr ; uint8_t len ; - uint8_t *data ; - scanf("%X %X", addr, &data) ; - i2c->write(addr, data, 1) ; + uint8_t data ; + if (i2c == 0) { + printf("I2C is not opened\n") ; + return ; + } + scanf("%X %X", &addr, &data) ; + i2c->write(addr, &data, 1) ; } void doStatus(void) @@ -66,7 +74,8 @@ if (i2c == 0) { printf("i2c is not opened\n") ; } else { - printf("i2c device at 0x%02X is opened\n", i2c->address()) ; + printf("i2c device at 0x%02X is opened at %d Hz\n", + i2c->address(), i2c->frequency()) ; } } @@ -78,25 +87,37 @@ printf("close : close currently opened i2c\n") ; printf("read <addr> <len> : read <len> data from <addr>\n") ; printf("write <addr> <data> : write <data> to register <addr>\n") ; + printf("frequency <freq> : change frequency to <freq> Hz\n") ; printf("status : print current status\n") ; printf("help : print this help\n") ; printf("\nPlease set local-echo to see what you are typing.\n") ; printf("\n") ; } +void doFreq(void) +{ + int freq = 0 ; + scanf("%d", &freq) ; + if (i2c != 0) { + i2c->frequency(freq) ; + } +} + void doCommand(char *str) { switch(*str) { case 'o': case 'O': /* open */ - doOpen() ; break ; + doOpen() ; break ; case 'c': case 'C': /* close */ - doClose() ; break ; + doClose() ; break ; case 'r': case 'R': /* read */ - doRead() ; break ; + doRead() ; break ; case 'w': case 'W': /* write */ - doWrite() ; break ; + doWrite() ; break ; case 's': case 'S': /* status */ doStatus() ; break ; + case 'f': case 'F': /* Frequency */ + doFreq() ; break ; default: doHelp() ; break ; }