Simple I2C test program. open/close/read/write supported.

Dependencies:   mbed vt100

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 ;
     }