Kazuki Yamamoto / Mbed 2 deprecated uart_i2c_conv

Dependencies:   mbed

Committer:
Kazuki Yamamoto
Date:
Fri Dec 12 02:56:24 2014 +0900
Revision:
22:946c08f6daff
Parent:
19:93814b431bf5
Child:
24:223a68f33f09
ifdef switch added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kazuki Yamamoto 9:844e301ab0fd 1 /** uart_i2c_conv for LPC824
Kazuki Yamamoto 9:844e301ab0fd 2 */
Kazuki Yamamoto 9:844e301ab0fd 3
Kazuki Yamamoto 5:07f7000ec747 4 #include "mbed.h"
Kazuki Yamamoto 22:946c08f6daff 5 #define QUAD_I2C
Kazuki Yamamoto 5:07f7000ec747 6
Kazuki Yamamoto 5:07f7000ec747 7 Serial pc(USBTX,USBRX);
Kazuki Yamamoto 22:946c08f6daff 8 /** replace
Kazuki Yamamoto 19:93814b431bf5 9 Serial pc(P0_4, P0_0);
Kazuki Yamamoto 19:93814b431bf5 10 */
Kazuki Yamamoto 22:946c08f6daff 11
Kazuki Yamamoto 9:844e301ab0fd 12 I2C dev1(I2C_SDA, I2C_SCL);//11,10 hard coded
Kazuki Yamamoto 9:844e301ab0fd 13
Kazuki Yamamoto 22:946c08f6daff 14 #ifdef QUAD_I2C
Kazuki Yamamoto 18:e3286a42cf0e 15 I2C dev2(P0_6, P0_14);//6,14 | A0, A1
Kazuki Yamamoto 18:e3286a42cf0e 16 I2C dev3(P0_23, P0_22);//23,22 | A2, A3
Kazuki Yamamoto 18:e3286a42cf0e 17 I2C dev4(P0_21, P0_20);//21,20 | A4, A5
Kazuki Yamamoto 22:946c08f6daff 18 /** replace
Kazuki Yamamoto 18:e3286a42cf0e 19 I2C dev2(P0_16, P0_27);
Kazuki Yamamoto 18:e3286a42cf0e 20 I2C dev3(P0_26, P0_25);
Kazuki Yamamoto 18:e3286a42cf0e 21 I2C dev4(P0_24, P0_15);
Kazuki Yamamoto 18:e3286a42cf0e 22 */
Kazuki Yamamoto 22:946c08f6daff 23 #else
Kazuki Yamamoto 22:946c08f6daff 24 DigitalInOut _GPIO10(P0_15);
Kazuki Yamamoto 22:946c08f6daff 25 DigitalInOut _GPIO11(P0_24);
Kazuki Yamamoto 22:946c08f6daff 26 DigitalInOut _GPIO12(P0_25);
Kazuki Yamamoto 22:946c08f6daff 27 DigitalInOut _GPIO13(P0_26);
Kazuki Yamamoto 22:946c08f6daff 28 DigitalInOut _GPIO14(P0_27);
Kazuki Yamamoto 22:946c08f6daff 29 DigitalInOut _GPIO15(P0_16);
Kazuki Yamamoto 22:946c08f6daff 30 DigitalInOut _GPIO16(P0_28);
Kazuki Yamamoto 22:946c08f6daff 31 DigitalInOut _GPIO17(P0_12);
Kazuki Yamamoto 22:946c08f6daff 32 #endif
Kazuki Yamamoto 22:946c08f6daff 33
Kazuki Yamamoto 19:93814b431bf5 34 DigitalInOut _GPIO0(D0); // P0_0
Kazuki Yamamoto 19:93814b431bf5 35 DigitalInOut _GPIO1(D1); // P0_4
Kazuki Yamamoto 19:93814b431bf5 36 DigitalInOut _GPIO2(D2); // P0_19
Kazuki Yamamoto 19:93814b431bf5 37 DigitalInOut _GPIO3(D4); // P0_18
Kazuki Yamamoto 19:93814b431bf5 38 DigitalInOut _GPIO4(D5); // P0_28
Kazuki Yamamoto 19:93814b431bf5 39 DigitalInOut _GPIO5(D7); // P0_17
Kazuki Yamamoto 19:93814b431bf5 40 DigitalInOut _GPIO6(D8); // P0_13
Kazuki Yamamoto 19:93814b431bf5 41 DigitalInOut _GPIO7(D10); // P0_15
Kazuki Yamamoto 22:946c08f6daff 42 /** replace
Kazuki Yamamoto 22:946c08f6daff 43 DigitalInOut _GPIO00(P0_17);
Kazuki Yamamoto 22:946c08f6daff 44 DigitalInOut _GPIO01(P0_18);
Kazuki Yamamoto 22:946c08f6daff 45 DigitalInOut _GPIO02(P0_19);
Kazuki Yamamoto 22:946c08f6daff 46 DigitalInOut _GPIO03(P0_20);
Kazuki Yamamoto 22:946c08f6daff 47 DigitalInOut _GPIO04(P0_21);
Kazuki Yamamoto 22:946c08f6daff 48 DigitalInOut _GPIO05(P0_22);
Kazuki Yamamoto 22:946c08f6daff 49 DigitalInOut _GPIO06(P0_23);
Kazuki Yamamoto 22:946c08f6daff 50 DigitalInOut _GPIO07(P0_14);
Kazuki Yamamoto 18:e3286a42cf0e 51 */
Kazuki Yamamoto 5:07f7000ec747 52
Kazuki Yamamoto 18:e3286a42cf0e 53 SPI _spi(D11, D12, D13); // mosi, miso, sclk
Kazuki Yamamoto 18:e3286a42cf0e 54 /*
Kazuki Yamamoto 18:e3286a42cf0e 55 SPI _spi(P0_6, P0_7, P0_8); // mosi, miso, sclk
Kazuki Yamamoto 18:e3286a42cf0e 56 DigitalOut _cs(P0_9) // CS
Kazuki Yamamoto 18:e3286a42cf0e 57 */
Kazuki Yamamoto 19:93814b431bf5 58
Kazuki Yamamoto 5:07f7000ec747 59 //Table 3. ASCII commands supported by SC18IM700
Kazuki Yamamoto 5:07f7000ec747 60 //ASCII command Hex value Command function
Kazuki Yamamoto 5:07f7000ec747 61 //[X] S 0x53 I2C-bus START
Kazuki Yamamoto 5:07f7000ec747 62 //[X] P 0x50 I2C-bus STOP
Kazuki Yamamoto 9:844e301ab0fd 63 //[?] R 0x52 read SC18IM700 internal register
Kazuki Yamamoto 9:844e301ab0fd 64 //[?] W 0x57 write to SC18IM700 internal register
Kazuki Yamamoto 9:844e301ab0fd 65 //[?] I 0x49 read GPIO port
Kazuki Yamamoto 9:844e301ab0fd 66 //[?] O 0x4F write to GPIO port
Kazuki Yamamoto 5:07f7000ec747 67 //[_] Z 0x5A power down
Kazuki Yamamoto 5:07f7000ec747 68 //[X] C 0x43 change channel
Kazuki Yamamoto 9:844e301ab0fd 69 //[_] E 0x45 enable chip
Kazuki Yamamoto 9:844e301ab0fd 70 //[_] V 0x__ enable VDDIO output to chip
Kazuki Yamamoto 5:07f7000ec747 71
Kazuki Yamamoto 12:db621ae6a076 72 /**
Kazuki Yamamoto 12:db621ae6a076 73 "C| '0'| P"
Kazuki Yamamoto 12:db621ae6a076 74 "C| '1'| P"
Kazuki Yamamoto 12:db621ae6a076 75 "C| '2'| P"
Kazuki Yamamoto 12:db621ae6a076 76 "C| '3'| P"
Kazuki Yamamoto 12:db621ae6a076 77 "S| 0x_8 _0| 0x_0 _4| 0x_D _E _A _D _B _E _A _F| P"
Kazuki Yamamoto 12:db621ae6a076 78 "S| 0x_8 _0| 0x_0 _4| 0x_D _E _A _D _B _E _A _F| S| 0x_8 _1| 0x_0 _4| P"
Kazuki Yamamoto 12:db621ae6a076 79 "S| 0x_8 _1| 0x_0 _4| P"
Kazuki Yamamoto 12:db621ae6a076 80 "R| '0'| P"
Kazuki Yamamoto 12:db621ae6a076 81 "R| '0'| '1'| ...| P"
Kazuki Yamamoto 12:db621ae6a076 82 "W| '0' 0x_a _a| P"
Kazuki Yamamoto 12:db621ae6a076 83 "W| '0' 0x_a _a| '1' 0x_b _b| ...| P"
Kazuki Yamamoto 22:946c08f6daff 84 "I| '0'| P"
Kazuki Yamamoto 22:946c08f6daff 85 "O| '0'| 0x_a _a| P"
Kazuki Yamamoto 12:db621ae6a076 86 */
Kazuki Yamamoto 5:07f7000ec747 87 int main()
Kazuki Yamamoto 5:07f7000ec747 88 {
Kazuki Yamamoto 5:07f7000ec747 89 I2C* dev=&dev1;
Kazuki Yamamoto 5:07f7000ec747 90 pc.baud(115200);
Kazuki Yamamoto 9:844e301ab0fd 91
Kazuki Yamamoto 9:844e301ab0fd 92 LPC_IOCON->PIO0_11 &= ~(0x02<<8);
Kazuki Yamamoto 9:844e301ab0fd 93 LPC_IOCON->PIO0_11 |= (0x02<<8);
Kazuki Yamamoto 9:844e301ab0fd 94 LPC_IOCON->PIO0_10 &= ~(0x02<<8);
Kazuki Yamamoto 9:844e301ab0fd 95 LPC_IOCON->PIO0_10 |= (0x02<<8);
Kazuki Yamamoto 5:07f7000ec747 96
Kazuki Yamamoto 9:844e301ab0fd 97 bool s = false;
Kazuki Yamamoto 9:844e301ab0fd 98 dev1.frequency(800000);//800k not work at 1M? too large pullup?
Kazuki Yamamoto 22:946c08f6daff 99 #ifdef QUAD_I2C
Kazuki Yamamoto 9:844e301ab0fd 100 dev2.frequency(400000);//400k
Kazuki Yamamoto 9:844e301ab0fd 101 dev3.frequency(400000);//400k
Kazuki Yamamoto 9:844e301ab0fd 102 dev4.frequency(400000);//400k
Kazuki Yamamoto 22:946c08f6daff 103 #else
Kazuki Yamamoto 22:946c08f6daff 104 DigitalInOut* gpio1[]={
Kazuki Yamamoto 22:946c08f6daff 105 &_GPI10,
Kazuki Yamamoto 22:946c08f6daff 106 &_GPI11,
Kazuki Yamamoto 22:946c08f6daff 107 &_GPI12,
Kazuki Yamamoto 22:946c08f6daff 108 &_GPI13,
Kazuki Yamamoto 22:946c08f6daff 109 &_GPI14,
Kazuki Yamamoto 22:946c08f6daff 110 &_GPI15,
Kazuki Yamamoto 22:946c08f6daff 111 &_GPI16,
Kazuki Yamamoto 22:946c08f6daff 112 &_GPI17,
Kazuki Yamamoto 22:946c08f6daff 113 };
Kazuki Yamamoto 22:946c08f6daff 114 for(int k=0; k<8; k++){
Kazuki Yamamoto 22:946c08f6daff 115 gpio1[k]->input();
Kazuki Yamamoto 22:946c08f6daff 116 gpio1[k]->mode(PullUp);
Kazuki Yamamoto 22:946c08f6daff 117 }
Kazuki Yamamoto 22:946c08f6daff 118 #endif
Kazuki Yamamoto 18:e3286a42cf0e 119 DigitalInOut* gpio0[]={
Kazuki Yamamoto 11:0d8359a6e2c2 120 &_GPIO0,
Kazuki Yamamoto 11:0d8359a6e2c2 121 &_GPIO1,
Kazuki Yamamoto 11:0d8359a6e2c2 122 &_GPIO2,
Kazuki Yamamoto 11:0d8359a6e2c2 123 &_GPIO3,
Kazuki Yamamoto 11:0d8359a6e2c2 124 &_GPIO4,
Kazuki Yamamoto 11:0d8359a6e2c2 125 &_GPIO5,
Kazuki Yamamoto 11:0d8359a6e2c2 126 &_GPIO6,
Kazuki Yamamoto 11:0d8359a6e2c2 127 &_GPIO7,
Kazuki Yamamoto 18:e3286a42cf0e 128 };
Kazuki Yamamoto 16:ba11339fd9c6 129 for(int k=0; k<8; k++){
Kazuki Yamamoto 18:e3286a42cf0e 130 gpio0[k]->input();
Kazuki Yamamoto 18:e3286a42cf0e 131 gpio0[k]->mode(PullUp);
Kazuki Yamamoto 16:ba11339fd9c6 132 }
Kazuki Yamamoto 16:ba11339fd9c6 133
Kazuki Yamamoto 12:db621ae6a076 134 int ack = 0;
Kazuki Yamamoto 12:db621ae6a076 135 int plength = 0;
Kazuki Yamamoto 12:db621ae6a076 136 char recieve[] = {
Kazuki Yamamoto 12:db621ae6a076 137 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 138 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 139 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 140 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 141 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 142 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 143 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 144 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 145 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 146 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 147 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 148 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 149 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 150 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 151 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 152 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 153 };
Kazuki Yamamoto 12:db621ae6a076 154 char send[] = {
Kazuki Yamamoto 12:db621ae6a076 155 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 156 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 157 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 158 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 159 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 160 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 161 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 162 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 163 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 164 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 165 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 166 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 167 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 168 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 169 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 170 0x0D, 0x0E, 0x0A, 0x0D, 0x0B, 0x0E, 0x0A, 0x0F, 0xD0, 0xE0, 0xA0, 0xD0, 0xB0, 0xE0, 0xA0, 0xF0,
Kazuki Yamamoto 12:db621ae6a076 171 };
Kazuki Yamamoto 12:db621ae6a076 172
Kazuki Yamamoto 12:db621ae6a076 173 char read = 0;
Kazuki Yamamoto 12:db621ae6a076 174 int address = 0;
Kazuki Yamamoto 12:db621ae6a076 175 int data = 0;
Kazuki Yamamoto 12:db621ae6a076 176 int _data = 0;
Kazuki Yamamoto 12:db621ae6a076 177 int length = 0;
Kazuki Yamamoto 12:db621ae6a076 178 int channel = 0;
Kazuki Yamamoto 12:db621ae6a076 179 bool CE = false;
Kazuki Yamamoto 13:aa9e9a6fcef9 180 enum command_e {
Kazuki Yamamoto 13:aa9e9a6fcef9 181 CMD_S='S',
Kazuki Yamamoto 13:aa9e9a6fcef9 182 CMD_P='P',
Kazuki Yamamoto 13:aa9e9a6fcef9 183 CMD_C='C',
Kazuki Yamamoto 13:aa9e9a6fcef9 184 CMD_R='R',
Kazuki Yamamoto 13:aa9e9a6fcef9 185 CMD_W='W',
Kazuki Yamamoto 13:aa9e9a6fcef9 186 CMD_I='I',
Kazuki Yamamoto 13:aa9e9a6fcef9 187 CMD_O='O',
Kazuki Yamamoto 13:aa9e9a6fcef9 188 };
Kazuki Yamamoto 9:844e301ab0fd 189 enum channel_e {
Kazuki Yamamoto 9:844e301ab0fd 190 CH0 = '0',
Kazuki Yamamoto 9:844e301ab0fd 191 CH1 = '1',
Kazuki Yamamoto 9:844e301ab0fd 192 CH2 = '2',
Kazuki Yamamoto 9:844e301ab0fd 193 CH3 = '3',
Kazuki Yamamoto 5:07f7000ec747 194 };
Kazuki Yamamoto 9:844e301ab0fd 195 enum register_e {
Kazuki Yamamoto 12:db621ae6a076 196 CHIP_ID = '0',
Kazuki Yamamoto 22:946c08f6daff 197 GPIO0_STAT = '1',
Kazuki Yamamoto 22:946c08f6daff 198 GPIO1_STAT = '2',
Kazuki Yamamoto 22:946c08f6daff 199 GPIO0_CONF = '3',
Kazuki Yamamoto 22:946c08f6daff 200 GPIO1_CONF = '4',
Kazuki Yamamoto 22:946c08f6daff 201 REG5,
Kazuki Yamamoto 22:946c08f6daff 202 REG6,
Kazuki Yamamoto 22:946c08f6daff 203 REG7,
Kazuki Yamamoto 22:946c08f6daff 204 REG8,
Kazuki Yamamoto 22:946c08f6daff 205 REG9,
Kazuki Yamamoto 9:844e301ab0fd 206 };
Kazuki Yamamoto 9:844e301ab0fd 207 enum chipID_e {
Kazuki Yamamoto 9:844e301ab0fd 208 ID_LPC824 = '0',
Kazuki Yamamoto 9:844e301ab0fd 209 ID_LPC1768 = '1',
Kazuki Yamamoto 9:844e301ab0fd 210 ID_LPC11UXX = '2',
Kazuki Yamamoto 9:844e301ab0fd 211 };
Kazuki Yamamoto 14:5319d562834e 212 static const uint8_t chip_id=ID_LPC824;
Kazuki Yamamoto 14:5319d562834e 213 static uint8_t registers[]={
Kazuki Yamamoto 14:5319d562834e 214 chip_id,
Kazuki Yamamoto 13:aa9e9a6fcef9 215 0xBB,
Kazuki Yamamoto 14:5319d562834e 216 0xCC,
Kazuki Yamamoto 22:946c08f6daff 217 0xDD,
Kazuki Yamamoto 22:946c08f6daff 218 0xEE,
Kazuki Yamamoto 9:844e301ab0fd 219 };
Kazuki Yamamoto 9:844e301ab0fd 220
Kazuki Yamamoto 5:07f7000ec747 221 int i=0;
Kazuki Yamamoto 5:07f7000ec747 222 while(1) {
Kazuki Yamamoto 12:db621ae6a076 223 i=0;
Kazuki Yamamoto 12:db621ae6a076 224 length=0;
Kazuki Yamamoto 5:07f7000ec747 225 while(true) {
Kazuki Yamamoto 5:07f7000ec747 226 read=pc.getc();
Kazuki Yamamoto 5:07f7000ec747 227 recieve[i]=read;
Kazuki Yamamoto 5:07f7000ec747 228 i++;
Kazuki Yamamoto 5:07f7000ec747 229 if(read == 'P') {
Kazuki Yamamoto 5:07f7000ec747 230 plength=i;
Kazuki Yamamoto 5:07f7000ec747 231 break;
Kazuki Yamamoto 5:07f7000ec747 232 }
Kazuki Yamamoto 5:07f7000ec747 233 }
Kazuki Yamamoto 5:07f7000ec747 234 i=0;
Kazuki Yamamoto 9:844e301ab0fd 235 while(i < plength) {
Kazuki Yamamoto 5:07f7000ec747 236 switch(recieve[i]) {
Kazuki Yamamoto 13:aa9e9a6fcef9 237 case CMD_C:
Kazuki Yamamoto 5:07f7000ec747 238 {
Kazuki Yamamoto 5:07f7000ec747 239 channel=recieve[i+1];
Kazuki Yamamoto 5:07f7000ec747 240 switch(channel) {
Kazuki Yamamoto 9:844e301ab0fd 241 case CH0:
Kazuki Yamamoto 5:07f7000ec747 242 {
Kazuki Yamamoto 18:e3286a42cf0e 243 channel = CH0;
Kazuki Yamamoto 5:07f7000ec747 244 dev=&dev1;
Kazuki Yamamoto 5:07f7000ec747 245 break;
Kazuki Yamamoto 5:07f7000ec747 246 }
Kazuki Yamamoto 22:946c08f6daff 247 #ifdef QUAD_I2C
Kazuki Yamamoto 9:844e301ab0fd 248 case CH1:
Kazuki Yamamoto 5:07f7000ec747 249 {
Kazuki Yamamoto 18:e3286a42cf0e 250 channel = CH1;
Kazuki Yamamoto 5:07f7000ec747 251 dev=&dev2;
Kazuki Yamamoto 5:07f7000ec747 252 break;
Kazuki Yamamoto 5:07f7000ec747 253 }
Kazuki Yamamoto 9:844e301ab0fd 254 case CH2:
Kazuki Yamamoto 5:07f7000ec747 255 {
Kazuki Yamamoto 18:e3286a42cf0e 256 channel = CH2;
Kazuki Yamamoto 5:07f7000ec747 257 dev=&dev3;
Kazuki Yamamoto 5:07f7000ec747 258 break;
Kazuki Yamamoto 5:07f7000ec747 259 }
Kazuki Yamamoto 9:844e301ab0fd 260 case CH3:
Kazuki Yamamoto 5:07f7000ec747 261 {
Kazuki Yamamoto 18:e3286a42cf0e 262 channel = CH3;
Kazuki Yamamoto 5:07f7000ec747 263 dev=&dev4;
Kazuki Yamamoto 5:07f7000ec747 264 break;
Kazuki Yamamoto 5:07f7000ec747 265 }
Kazuki Yamamoto 22:946c08f6daff 266 #endif
Kazuki Yamamoto 5:07f7000ec747 267 default:
Kazuki Yamamoto 5:07f7000ec747 268 {
Kazuki Yamamoto 18:e3286a42cf0e 269 channel = CH0;
Kazuki Yamamoto 5:07f7000ec747 270 dev=&dev1;
Kazuki Yamamoto 5:07f7000ec747 271 break;
Kazuki Yamamoto 5:07f7000ec747 272 }
Kazuki Yamamoto 5:07f7000ec747 273 }
Kazuki Yamamoto 5:07f7000ec747 274 i+=(2);
Kazuki Yamamoto 5:07f7000ec747 275 break;
Kazuki Yamamoto 5:07f7000ec747 276 }
Kazuki Yamamoto 13:aa9e9a6fcef9 277 case CMD_S:
Kazuki Yamamoto 5:07f7000ec747 278 {
Kazuki Yamamoto 9:844e301ab0fd 279 s = true;
Kazuki Yamamoto 9:844e301ab0fd 280 ack = plength - 2 - (i+1) + (recieve[i+2] & 0x01);
Kazuki Yamamoto 18:e3286a42cf0e 281 if(ack >= 4){ //valid packet
Kazuki Yamamoto 9:844e301ab0fd 282 address = 0xff & (recieve[i+1] << 4 | (recieve[i+2] & 0x0F));
Kazuki Yamamoto 9:844e301ab0fd 283 length = 0xff & (recieve[i+3] << 4 | (recieve[i+4] & 0x0F));
Kazuki Yamamoto 18:e3286a42cf0e 284
Kazuki Yamamoto 22:946c08f6daff 285 if(address & 0x01) { //read
Kazuki Yamamoto 11:0d8359a6e2c2 286 dev->read(address, send, length, false); //added
Kazuki Yamamoto 11:0d8359a6e2c2 287 i+=(5);
Kazuki Yamamoto 18:e3286a42cf0e 288 } else { // write
Kazuki Yamamoto 11:0d8359a6e2c2 289 for(int j=0; j < (length * 2); j+=2) {
Kazuki Yamamoto 15:98ec6b372a2b 290 ack = 0xff&((recieve[5+j] << 4) | (recieve[6+j] & 0x0F));
Kazuki Yamamoto 11:0d8359a6e2c2 291 *(send+(j/2)) = ack; //added
Kazuki Yamamoto 11:0d8359a6e2c2 292 }
Kazuki Yamamoto 11:0d8359a6e2c2 293 dev->write(address, send, length, true); //added
Kazuki Yamamoto 11:0d8359a6e2c2 294 i+=(5 + length * 2);
Kazuki Yamamoto 11:0d8359a6e2c2 295 length=0;
Kazuki Yamamoto 11:0d8359a6e2c2 296 }
Kazuki Yamamoto 9:844e301ab0fd 297 }else{
Kazuki Yamamoto 9:844e301ab0fd 298 pc.printf("bad packet! %d, %d, %02X, %d\n\r",plength,i,recieve[(i+2)]&0x0F,ack);
Kazuki Yamamoto 11:0d8359a6e2c2 299 i = plength;
Kazuki Yamamoto 5:07f7000ec747 300 }
Kazuki Yamamoto 5:07f7000ec747 301 break;
Kazuki Yamamoto 5:07f7000ec747 302 }
Kazuki Yamamoto 13:aa9e9a6fcef9 303 case CMD_P:
Kazuki Yamamoto 9:844e301ab0fd 304 {
Kazuki Yamamoto 5:07f7000ec747 305 if(s){
Kazuki Yamamoto 5:07f7000ec747 306 dev->stop();
Kazuki Yamamoto 11:0d8359a6e2c2 307 s = false;
Kazuki Yamamoto 5:07f7000ec747 308 }
Kazuki Yamamoto 11:0d8359a6e2c2 309 i = plength;
Kazuki Yamamoto 5:07f7000ec747 310 for(int j=0; j<length; j++) {
Kazuki Yamamoto 5:07f7000ec747 311 pc.printf("%02X,",send[j]);
Kazuki Yamamoto 5:07f7000ec747 312 }
Kazuki Yamamoto 5:07f7000ec747 313 pc.printf("ok\n\r");
Kazuki Yamamoto 5:07f7000ec747 314 break;
Kazuki Yamamoto 9:844e301ab0fd 315 }
Kazuki Yamamoto 13:aa9e9a6fcef9 316 case CMD_R:
Kazuki Yamamoto 9:844e301ab0fd 317 {
Kazuki Yamamoto 11:0d8359a6e2c2 318 length = plength - 2;
Kazuki Yamamoto 16:ba11339fd9c6 319 if(length<1){
Kazuki Yamamoto 16:ba11339fd9c6 320 pc.printf("bad packet! %d\n\r",length);
Kazuki Yamamoto 16:ba11339fd9c6 321 i = plength + 1;
Kazuki Yamamoto 16:ba11339fd9c6 322 length = 0;
Kazuki Yamamoto 16:ba11339fd9c6 323 }else{
Kazuki Yamamoto 16:ba11339fd9c6 324 for(int j=0; j<length; j++){
Kazuki Yamamoto 16:ba11339fd9c6 325 address = recieve[i+1+j];
Kazuki Yamamoto 16:ba11339fd9c6 326 switch(address){
Kazuki Yamamoto 16:ba11339fd9c6 327 case CHIP_ID:
Kazuki Yamamoto 16:ba11339fd9c6 328 {
Kazuki Yamamoto 16:ba11339fd9c6 329 data = chip_id;
Kazuki Yamamoto 22:946c08f6daff 330 break;
Kazuki Yamamoto 22:946c08f6daff 331 }
Kazuki Yamamoto 22:946c08f6daff 332 case GPIO0_STAT:
Kazuki Yamamoto 22:946c08f6daff 333 {
Kazuki Yamamoto 22:946c08f6daff 334 data = registers[GPIO0_STAT-'0'];
Kazuki Yamamoto 16:ba11339fd9c6 335 break;
Kazuki Yamamoto 16:ba11339fd9c6 336 }
Kazuki Yamamoto 22:946c08f6daff 337 case GPIO0_CONF:
Kazuki Yamamoto 16:ba11339fd9c6 338 {
Kazuki Yamamoto 22:946c08f6daff 339 data = registers[GPIO0_CONF-'0'];
Kazuki Yamamoto 16:ba11339fd9c6 340 break;
Kazuki Yamamoto 16:ba11339fd9c6 341 }
Kazuki Yamamoto 22:946c08f6daff 342 case GPIO1_STAT:
Kazuki Yamamoto 16:ba11339fd9c6 343 {
Kazuki Yamamoto 22:946c08f6daff 344 data = registers[GPIO1_STAT-'0'];
Kazuki Yamamoto 22:946c08f6daff 345 break;
Kazuki Yamamoto 22:946c08f6daff 346 }
Kazuki Yamamoto 22:946c08f6daff 347 case GPIO1_CONF:
Kazuki Yamamoto 22:946c08f6daff 348 {
Kazuki Yamamoto 22:946c08f6daff 349 data = registers[GPIO1_CONF-'0'];
Kazuki Yamamoto 16:ba11339fd9c6 350 break;
Kazuki Yamamoto 16:ba11339fd9c6 351 }
Kazuki Yamamoto 16:ba11339fd9c6 352 default:
Kazuki Yamamoto 16:ba11339fd9c6 353 {
Kazuki Yamamoto 16:ba11339fd9c6 354 data = 0xAA;
Kazuki Yamamoto 16:ba11339fd9c6 355 break;
Kazuki Yamamoto 16:ba11339fd9c6 356 }
Kazuki Yamamoto 11:0d8359a6e2c2 357 }
Kazuki Yamamoto 16:ba11339fd9c6 358 send[j] = (char)data;
Kazuki Yamamoto 11:0d8359a6e2c2 359 }
Kazuki Yamamoto 16:ba11339fd9c6 360 i += (length+1);
Kazuki Yamamoto 11:0d8359a6e2c2 361 }
Kazuki Yamamoto 5:07f7000ec747 362 break;
Kazuki Yamamoto 9:844e301ab0fd 363 }
Kazuki Yamamoto 13:aa9e9a6fcef9 364 case CMD_W:
Kazuki Yamamoto 9:844e301ab0fd 365 {
Kazuki Yamamoto 11:0d8359a6e2c2 366 length = plength - 2;
Kazuki Yamamoto 11:0d8359a6e2c2 367 if(length < 3){
Kazuki Yamamoto 11:0d8359a6e2c2 368 pc.printf("bad packet! %d\n\r",length);
Kazuki Yamamoto 11:0d8359a6e2c2 369 i = plength + 1;
Kazuki Yamamoto 16:ba11339fd9c6 370 length = 0;
Kazuki Yamamoto 11:0d8359a6e2c2 371 }else{
Kazuki Yamamoto 11:0d8359a6e2c2 372 for(int j=0; j<length; j+=3){
Kazuki Yamamoto 11:0d8359a6e2c2 373 address = recieve[i+1+j];
Kazuki Yamamoto 15:98ec6b372a2b 374 data = 0xff & (recieve[i+2+j] << 4 | (recieve[i+3+j] & 0x0F));
Kazuki Yamamoto 11:0d8359a6e2c2 375 switch(address){
Kazuki Yamamoto 11:0d8359a6e2c2 376 case CHIP_ID:
Kazuki Yamamoto 11:0d8359a6e2c2 377 {
Kazuki Yamamoto 11:0d8359a6e2c2 378 //READ ONLY: do nothing
Kazuki Yamamoto 16:ba11339fd9c6 379 data = registers[CHIP_ID-'0'];
Kazuki Yamamoto 11:0d8359a6e2c2 380 break;
Kazuki Yamamoto 11:0d8359a6e2c2 381 }
Kazuki Yamamoto 22:946c08f6daff 382 case GPIO0_STAT:
Kazuki Yamamoto 11:0d8359a6e2c2 383 {
Kazuki Yamamoto 12:db621ae6a076 384 //READ ONLY from this command: do nothing
Kazuki Yamamoto 22:946c08f6daff 385 data = registers[GPIO0_STAT-'0'];
Kazuki Yamamoto 11:0d8359a6e2c2 386 break;
Kazuki Yamamoto 11:0d8359a6e2c2 387 }
Kazuki Yamamoto 22:946c08f6daff 388 case GPIO0_CONF:
Kazuki Yamamoto 11:0d8359a6e2c2 389 {
Kazuki Yamamoto 22:946c08f6daff 390 registers[GPIO0_CONF-'0'] = data;
Kazuki Yamamoto 16:ba11339fd9c6 391 for(int k=0; k<8; k++){
Kazuki Yamamoto 16:ba11339fd9c6 392 if(data&0x01){//output
Kazuki Yamamoto 18:e3286a42cf0e 393 gpio0[k]->output();
Kazuki Yamamoto 16:ba11339fd9c6 394 }else{//input
Kazuki Yamamoto 18:e3286a42cf0e 395 gpio0[k]->input();
Kazuki Yamamoto 18:e3286a42cf0e 396 gpio0[k]->mode(PullUp);
Kazuki Yamamoto 16:ba11339fd9c6 397 }
Kazuki Yamamoto 16:ba11339fd9c6 398 data >>= 1;
Kazuki Yamamoto 16:ba11339fd9c6 399 }
Kazuki Yamamoto 22:946c08f6daff 400 data = registers[GPIO0_CONF-'0'];
Kazuki Yamamoto 22:946c08f6daff 401 break;
Kazuki Yamamoto 22:946c08f6daff 402 }
Kazuki Yamamoto 22:946c08f6daff 403 case GPIO1_STAT:
Kazuki Yamamoto 22:946c08f6daff 404 {
Kazuki Yamamoto 22:946c08f6daff 405 //READ ONLY from this command: do nothing
Kazuki Yamamoto 22:946c08f6daff 406 data = registers[GPIO1_STAT-'0'];
Kazuki Yamamoto 22:946c08f6daff 407 break;
Kazuki Yamamoto 22:946c08f6daff 408 }
Kazuki Yamamoto 22:946c08f6daff 409 case GPIO1_CONF:
Kazuki Yamamoto 22:946c08f6daff 410 {
Kazuki Yamamoto 22:946c08f6daff 411 registers[GPIO1_CONF-'0'] = data;
Kazuki Yamamoto 22:946c08f6daff 412 #ifndef QUAD_I2C
Kazuki Yamamoto 22:946c08f6daff 413 for(int k=0; k<6; k++){
Kazuki Yamamoto 22:946c08f6daff 414 if(data&0x01){//output
Kazuki Yamamoto 22:946c08f6daff 415 gpio1[k]->output();
Kazuki Yamamoto 22:946c08f6daff 416 }else{//input
Kazuki Yamamoto 22:946c08f6daff 417 gpio1[k]->input();
Kazuki Yamamoto 22:946c08f6daff 418 gpio1[k]->mode(PullUp);
Kazuki Yamamoto 22:946c08f6daff 419 }
Kazuki Yamamoto 22:946c08f6daff 420 data >>= 1;
Kazuki Yamamoto 22:946c08f6daff 421 }
Kazuki Yamamoto 22:946c08f6daff 422 #endif
Kazuki Yamamoto 22:946c08f6daff 423 data = registers[GPIO1_CONF-'0'];
Kazuki Yamamoto 11:0d8359a6e2c2 424 break;
Kazuki Yamamoto 11:0d8359a6e2c2 425 }
Kazuki Yamamoto 11:0d8359a6e2c2 426 default:
Kazuki Yamamoto 11:0d8359a6e2c2 427 {
Kazuki Yamamoto 11:0d8359a6e2c2 428 break;
Kazuki Yamamoto 11:0d8359a6e2c2 429 }
Kazuki Yamamoto 11:0d8359a6e2c2 430 }
Kazuki Yamamoto 16:ba11339fd9c6 431 send[j/3] = (char)data;
Kazuki Yamamoto 11:0d8359a6e2c2 432 }
Kazuki Yamamoto 16:ba11339fd9c6 433 i += length+1;
Kazuki Yamamoto 16:ba11339fd9c6 434 length /= 3;
Kazuki Yamamoto 11:0d8359a6e2c2 435 }
Kazuki Yamamoto 9:844e301ab0fd 436 break;
Kazuki Yamamoto 9:844e301ab0fd 437 }
Kazuki Yamamoto 13:aa9e9a6fcef9 438 case CMD_I:
Kazuki Yamamoto 9:844e301ab0fd 439 {
Kazuki Yamamoto 18:e3286a42cf0e 440 length = plength - 2;
Kazuki Yamamoto 18:e3286a42cf0e 441 data = 0;
Kazuki Yamamoto 18:e3286a42cf0e 442 if(length != 0){
Kazuki Yamamoto 18:e3286a42cf0e 443 pc.printf("bad packet! %d\n\r",length);
Kazuki Yamamoto 18:e3286a42cf0e 444 i = plength + 1;
Kazuki Yamamoto 18:e3286a42cf0e 445 length = 0;
Kazuki Yamamoto 18:e3286a42cf0e 446 }else{
Kazuki Yamamoto 18:e3286a42cf0e 447 for(int j=0; j<8; j++){
Kazuki Yamamoto 18:e3286a42cf0e 448 _data = gpio0[j]->read();
Kazuki Yamamoto 18:e3286a42cf0e 449 data |= (_data << j);
Kazuki Yamamoto 18:e3286a42cf0e 450 }
Kazuki Yamamoto 22:946c08f6daff 451 registers[GPIO0_STAT-'0'] = data;
Kazuki Yamamoto 18:e3286a42cf0e 452 send[0] = data;
Kazuki Yamamoto 18:e3286a42cf0e 453 length = 1;
Kazuki Yamamoto 18:e3286a42cf0e 454 }
Kazuki Yamamoto 18:e3286a42cf0e 455 // pc.printf("command I is not implemented, ");
Kazuki Yamamoto 18:e3286a42cf0e 456 i+=length;
Kazuki Yamamoto 5:07f7000ec747 457 break;
Kazuki Yamamoto 9:844e301ab0fd 458 }
Kazuki Yamamoto 13:aa9e9a6fcef9 459 case CMD_O:
Kazuki Yamamoto 9:844e301ab0fd 460 {
Kazuki Yamamoto 18:e3286a42cf0e 461 length = plength - 2;
Kazuki Yamamoto 18:e3286a42cf0e 462 if(length != 2){
Kazuki Yamamoto 18:e3286a42cf0e 463 pc.printf("bad packet! %d\n\r",length);
Kazuki Yamamoto 18:e3286a42cf0e 464 i = plength + 1;
Kazuki Yamamoto 18:e3286a42cf0e 465 length = 0;
Kazuki Yamamoto 18:e3286a42cf0e 466 }else{
Kazuki Yamamoto 18:e3286a42cf0e 467 data = 0xff & (recieve[i+1] << 4 | (recieve[i+2] & 0x0F));
Kazuki Yamamoto 22:946c08f6daff 468 _data = registers[GPIO0_CONF-'0'];
Kazuki Yamamoto 18:e3286a42cf0e 469 send[0] = (char)data;
Kazuki Yamamoto 18:e3286a42cf0e 470 for(int j=0; j<8; j++){
Kazuki Yamamoto 18:e3286a42cf0e 471 if(_data&0x01){ // output
Kazuki Yamamoto 18:e3286a42cf0e 472 gpio0[j]->write(data&0x01);
Kazuki Yamamoto 18:e3286a42cf0e 473 }else{ // input
Kazuki Yamamoto 18:e3286a42cf0e 474 ; // do nothing
Kazuki Yamamoto 18:e3286a42cf0e 475 }
Kazuki Yamamoto 18:e3286a42cf0e 476 data >>= 1;
Kazuki Yamamoto 18:e3286a42cf0e 477 _data >>= 1;
Kazuki Yamamoto 18:e3286a42cf0e 478 }
Kazuki Yamamoto 18:e3286a42cf0e 479 i += length+1;
Kazuki Yamamoto 18:e3286a42cf0e 480 length = 1;
Kazuki Yamamoto 18:e3286a42cf0e 481 }
Kazuki Yamamoto 18:e3286a42cf0e 482 // pc.printf("command O is not implemented, ");
Kazuki Yamamoto 5:07f7000ec747 483 break;
Kazuki Yamamoto 9:844e301ab0fd 484 }
Kazuki Yamamoto 9:844e301ab0fd 485 case 'Z':
Kazuki Yamamoto 9:844e301ab0fd 486 {
Kazuki Yamamoto 9:844e301ab0fd 487 pc.printf("command Z is not implemented\n\r");
Kazuki Yamamoto 5:07f7000ec747 488 i=plength;
Kazuki Yamamoto 5:07f7000ec747 489 break;
Kazuki Yamamoto 9:844e301ab0fd 490 }
Kazuki Yamamoto 9:844e301ab0fd 491 case 'E':
Kazuki Yamamoto 9:844e301ab0fd 492 {
Kazuki Yamamoto 9:844e301ab0fd 493 pc.printf("command E is not implemented\n\r");
Kazuki Yamamoto 5:07f7000ec747 494 i=plength;
Kazuki Yamamoto 5:07f7000ec747 495 break;
Kazuki Yamamoto 9:844e301ab0fd 496 }
Kazuki Yamamoto 9:844e301ab0fd 497 case 'V':
Kazuki Yamamoto 9:844e301ab0fd 498 {
Kazuki Yamamoto 9:844e301ab0fd 499 pc.printf("command V is not implemented\n\r");
Kazuki Yamamoto 5:07f7000ec747 500 i=plength;
Kazuki Yamamoto 5:07f7000ec747 501 break;
Kazuki Yamamoto 9:844e301ab0fd 502 }
Kazuki Yamamoto 9:844e301ab0fd 503 default:
Kazuki Yamamoto 9:844e301ab0fd 504 {
Kazuki Yamamoto 16:ba11339fd9c6 505 pc.printf("command %c is not implemented\n\r", recieve[i]);
Kazuki Yamamoto 9:844e301ab0fd 506 i=plength;
Kazuki Yamamoto 9:844e301ab0fd 507 break;
Kazuki Yamamoto 9:844e301ab0fd 508 }
Kazuki Yamamoto 5:07f7000ec747 509 }
Kazuki Yamamoto 5:07f7000ec747 510 }
Kazuki Yamamoto 5:07f7000ec747 511 i=0;
Kazuki Yamamoto 5:07f7000ec747 512 length=0;
Kazuki Yamamoto 5:07f7000ec747 513 }
Kazuki Yamamoto 5:07f7000ec747 514 }