Kazuki Yamamoto / Mbed 2 deprecated uart_i2c_conv

Dependencies:   mbed

Revision:
12:db621ae6a076
Parent:
11:0d8359a6e2c2
Child:
13:aa9e9a6fcef9
--- a/LPC824/main.cpp	Thu Dec 04 19:46:23 2014 +0900
+++ b/LPC824/main.cpp	Fri Dec 05 17:34:37 2014 +0900
@@ -33,20 +33,21 @@
 //[_] E 0x45 enable chip
 //[_] V 0x__ enable VDDIO output to chip
 
-//"C0P"
-//"C1P"
-//"C2P"
-//"C3P"
-//"S| 0x_8 _0| 0x_0 _4| 0x_D _E _A _D _B _E _A _F| P"
-//"S| 0x_8 _0| 0x_0 _4| 0x_D _E _A _D _B _E _A _F| S| 0x_8 _1| 0x_0 _4| P"
-//"S| 0x_8 _1| 0x_0 _4| P"
-//"R| '0'| P"
-//"R| '0'| '1'| ...| P"
-//"W| '0' 0x_a _a| P"
-//"W| '0' 0x_a _a| '1' 0x_b _b| ...| P"
-//"I| P"
-//"O| 0x_a _a| P"
-
+/**
+"C| '0'| P"
+"C| '1'| P"
+"C| '2'| P"
+"C| '3'| P"
+"S| 0x_8 _0| 0x_0 _4| 0x_D _E _A _D _B _E _A _F| P"
+"S| 0x_8 _0| 0x_0 _4| 0x_D _E _A _D _B _E _A _F| S| 0x_8 _1| 0x_0 _4| P"
+"S| 0x_8 _1| 0x_0 _4| P"
+"R| '0'| P"
+"R| '0'| '1'| ...| P"
+"W| '0' 0x_a _a| P"
+"W| '0' 0x_a _a| '1' 0x_b _b| ...| P"
+"I| P"
+"O| 0x_a _a| P"
+*/
 int main()
 {
     I2C* dev=&dev1;
@@ -74,17 +75,52 @@
         &_GPIO7,
         };
 */
-    int ack=0;
-    int plength=0;
-    char recieve[256];
-    char send[256];
-    char read=0;
-    int address=0;
-    int data=0;
-    int _data=0;
-    int length=0;
-    int channel=0;
-    bool CE=false;
+    int ack = 0;
+    int plength = 0;
+    char recieve[] = {
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+    };
+    char send[] = {
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+        0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0, 
+    };
+
+    char read = 0;
+    int address = 0;
+    int data = 0;
+    int _data = 0;
+    int length = 0;
+    int channel = 0;
+    bool CE = false;
     enum channel_e {
         CH0 = '0',
         CH1 = '1',
@@ -92,7 +128,7 @@
         CH3 = '3',
     };
     enum register_e {
-        CHIP_ID = '0'
+        CHIP_ID = '0',
         GPIO_STAT = '1',
         GPIO_CONF = '2',
     };
@@ -104,12 +140,16 @@
     uint8_t chip_id=ID_LPC824;
     uint8_t registers[]={
         chip_id,
-        0b00000000,
-        0b00000000,
+        0x00,
+        0x00,
+//        0b00000000, // all 0
+//        0b00000000, // all input
     };
 
     int i=0;
     while(1) {
+        i=0;
+        length=0;
         while(true) {
             read=pc.getc();
             recieve[i]=read;
@@ -212,7 +252,7 @@
                 {
                     length = plength - 2;
                     for(int j=0; j<length; j++){
-                        address = recieve[1+j];
+                        address = recieve[i+1+j];
                         switch(address){
                             case CHIP_ID:
                             {
@@ -231,12 +271,13 @@
                             }
                             default:
                             {
+                                *(send+j) = 0xAA;
                                 break;
                             }
                         }
                     }
-                    i += length;
-                    pc.printf("command R is not implemented\n\r");
+                    i += length+1;
+//                    pc.printf("command R is not implemented, ");
                     break;
                 }
                 case 'W':
@@ -258,14 +299,7 @@
                                 }
                                 case GPIO_STAT:
                                 {
-                                    for(int k=1; k<256; k<<=1){
-                                        if(registers[GPIO_CONF] & k){ //output
-                                            (data&k) ? _data|=k : _data&=~k;
-                                        }else{
-                                            ;
-                                        }
-                                    }
-                                    registers[GPIO_STAT] = _data;
+                                    //READ ONLY from this command: do nothing
                                     *(send+j) = registers[GPIO_STAT];
                                     break;
                                 }
@@ -282,8 +316,8 @@
                             }
                         }
                     }
-                    i += length;
-                    pc.printf("command W is not implemented\n\r");
+                    i += length+1;
+                    pc.printf("command W is not implemented, ");
                     break;
                 }
                 case 'I':
@@ -318,7 +352,7 @@
                 }
                 default:
                 {
-                    pc.printf("command ? is not implemented\n\r");
+                    pc.printf("command %s is not implemented\n\r", recieve[i]);
                     i=plength;
                     break;
                 }