eConais EC19D AT command test serial interface, machine mode

Dependencies:   mbed

Committer:
ecfan
Date:
Tue Aug 12 06:54:38 2014 +0000
Revision:
0:661c91abde03
1st build;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ecfan 0:661c91abde03 1 /*
ecfan 0:661c91abde03 2 * eConais EC19D01
ecfan 0:661c91abde03 3 * AT command test
ecfan 0:661c91abde03 4 * serial interface, machine mode
ecfan 0:661c91abde03 5 */
ecfan 0:661c91abde03 6
ecfan 0:661c91abde03 7 #include "mbed.h"
ecfan 0:661c91abde03 8
ecfan 0:661c91abde03 9 DigitalOut led1(LED1), led2(LED2);
ecfan 0:661c91abde03 10 Serial pc(USBTX, USBRX);
ecfan 0:661c91abde03 11 Serial ec(p9, p10);
ecfan 0:661c91abde03 12 DigitalOut rts(p11), exton(p16);
ecfan 0:661c91abde03 13 DigitalIn cts(p12);
ecfan 0:661c91abde03 14
ecfan 0:661c91abde03 15 void command (char *cmd) {
ecfan 0:661c91abde03 16 int num, len = 0;
ecfan 0:661c91abde03 17 char *buf;
ecfan 0:661c91abde03 18 char c;
ecfan 0:661c91abde03 19
ecfan 0:661c91abde03 20 if (strncmp(cmd, "AT", 2)) return;
ecfan 0:661c91abde03 21
ecfan 0:661c91abde03 22 num = atoi(&cmd[2]);
ecfan 0:661c91abde03 23 buf = strstr(cmd, ",");
ecfan 0:661c91abde03 24 if (buf) {
ecfan 0:661c91abde03 25 buf ++;
ecfan 0:661c91abde03 26 len = strlen(buf);
ecfan 0:661c91abde03 27 }
ecfan 0:661c91abde03 28 printf("\r\nAT %d %d '%s'\r\n", num, len, buf);
ecfan 0:661c91abde03 29
ecfan 0:661c91abde03 30 rts = 1;
ecfan 0:661c91abde03 31 for (;;) {
ecfan 0:661c91abde03 32 if (ec.readable()) {
ecfan 0:661c91abde03 33 c = ec.getc();
ecfan 0:661c91abde03 34 if (c >= 0x20 && c < 0x80) {
ecfan 0:661c91abde03 35 pc.putc(c);
ecfan 0:661c91abde03 36 } else {
ecfan 0:661c91abde03 37 pc.printf(" %02x ",c);
ecfan 0:661c91abde03 38 }
ecfan 0:661c91abde03 39 if (c == 'Y') break;
ecfan 0:661c91abde03 40 }
ecfan 0:661c91abde03 41 }
ecfan 0:661c91abde03 42 ec.printf("%c%c%c", num, len & 0xff, (len >> 8) & 0xff);
ecfan 0:661c91abde03 43
ecfan 0:661c91abde03 44 if (len) {
ecfan 0:661c91abde03 45 for (;;) {
ecfan 0:661c91abde03 46 if (ec.readable()) {
ecfan 0:661c91abde03 47 c = ec.getc();
ecfan 0:661c91abde03 48 if (c >= 0x20 && c < 0x80) {
ecfan 0:661c91abde03 49 pc.putc(c);
ecfan 0:661c91abde03 50 } else {
ecfan 0:661c91abde03 51 pc.printf(" %02x ",c);
ecfan 0:661c91abde03 52 }
ecfan 0:661c91abde03 53 if (c == 'T') break;
ecfan 0:661c91abde03 54 }
ecfan 0:661c91abde03 55 }
ecfan 0:661c91abde03 56 ec.printf("%s", buf);
ecfan 0:661c91abde03 57 }
ecfan 0:661c91abde03 58 rts = 0;
ecfan 0:661c91abde03 59 pc.printf("\r\n----\r\n");
ecfan 0:661c91abde03 60 }
ecfan 0:661c91abde03 61
ecfan 0:661c91abde03 62 int main() {
ecfan 0:661c91abde03 63 char buf[80];
ecfan 0:661c91abde03 64 int count = 0;
ecfan 0:661c91abde03 65 unsigned char c;
ecfan 0:661c91abde03 66
ecfan 0:661c91abde03 67 rts = 0;
ecfan 0:661c91abde03 68 pc.baud(115200);
ecfan 0:661c91abde03 69 ec.baud(115200);
ecfan 0:661c91abde03 70 exton = 1;
ecfan 0:661c91abde03 71 wait_ms(100);
ecfan 0:661c91abde03 72 exton = 0;
ecfan 0:661c91abde03 73 wait_ms(300);
ecfan 0:661c91abde03 74
ecfan 0:661c91abde03 75 led1 = 1;
ecfan 0:661c91abde03 76 while(1) {
ecfan 0:661c91abde03 77 if (ec.readable()) {
ecfan 0:661c91abde03 78 c = ec.getc();
ecfan 0:661c91abde03 79 if ((c >= 0x20 && c < 0x80) || c == '\r' || c == '\n') {
ecfan 0:661c91abde03 80 pc.putc(c);
ecfan 0:661c91abde03 81 } else {
ecfan 0:661c91abde03 82 pc.printf(" %02x ",c);
ecfan 0:661c91abde03 83 }
ecfan 0:661c91abde03 84 }
ecfan 0:661c91abde03 85
ecfan 0:661c91abde03 86 if (pc.readable()) {
ecfan 0:661c91abde03 87 c = pc.getc();
ecfan 0:661c91abde03 88 if (c == '\r' || c == '\n') {
ecfan 0:661c91abde03 89 if (count) {
ecfan 0:661c91abde03 90 buf[count] = 0;
ecfan 0:661c91abde03 91 led2 = 1;
ecfan 0:661c91abde03 92 command(buf);
ecfan 0:661c91abde03 93 led2 = 0;
ecfan 0:661c91abde03 94 }
ecfan 0:661c91abde03 95 count = 0;
ecfan 0:661c91abde03 96 } else
ecfan 0:661c91abde03 97 if (count < 79) {
ecfan 0:661c91abde03 98 buf[count++] = c;
ecfan 0:661c91abde03 99 pc.putc(c);
ecfan 0:661c91abde03 100 }
ecfan 0:661c91abde03 101 }
ecfan 0:661c91abde03 102 }
ecfan 0:661c91abde03 103 }