Just for testing
Dependencies: mbed
Fork of ESP8266_MDM by
Revision 3:a608548f63b1, committed 2016-06-10
- Comitter:
- magd4235
- Date:
- Fri Jun 10 08:56:50 2016 +0000
- Parent:
- 2:6c150720937c
- Commit message:
- server test;
Changed in this revision
main.cpp | Show diff for this revision Revisions of this file |
server.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Wed Jun 08 11:06:45 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,214 +0,0 @@ -#include "mbed.h" - -#define DEBUG -#define INFOMESSAGES -#define WARNMESSAGES -#define ERRMESSAGES - -#define FUNCNAME "MAIN" - -#ifdef NoDEBUG -#define DBG(x, ...) pc.printf(" ["FUNCNAME" : DBG] "x" <line %d>\r\n", ##__VA_ARGS__,__LINE__); -#else -#define DBG(x, ...) -#endif - -#ifdef ERRMESSAGES -#define ERR(x, ...) pc.printf(" ["FUNCNAME" : ERR] "x"\r\n", ##__VA_ARGS__); -#else -#define ERR(x, ...) -#endif - -#ifdef WARNMESSAGES -#define WARN(x, ...) printf("["FUNCNAME" : WARN] "x"\r\n", ##__VA_ARGS__); -#else -#define WARN(x, ...) -#endif - -#ifdef INFOMESSAGES -#define INFO(x, ...) pc.printf("["FUNCNAME" : INFO] "x"\r\n", ##__VA_ARGS__); -#else -#define INFO(x, ...) -#endif - -#define BUFF_SIZE 2048 -RawSerial pc(USBTX, USBRX); -//RawSerial dev(D1, D0); -RawSerial dev(p28, p27); //tx,rx -DigitalOut led1(LED1); -DigitalOut led4(LED4); -DigitalOut reset(p26,1); -volatile int state=0; -volatile int ready=0; - -char ipAddress[20]; -char macAddress[32]; -char *buffer; -unsigned int bufferPnt=0; - -void dev_recv() -{ - char c; - - int count = 0; - led1 = !led1; - if(bufferPnt==0) { - memset(buffer,0,BUFF_SIZE); - } - while(dev.readable()) { - c = (char)dev.getc(); -#ifdef DEBUG - // pc.putc(c); -#endif - buffer[bufferPnt]=c; - bufferPnt++; - if (bufferPnt>1024) { - ready=1; - } - if ((c==0x0a)||(c==0x0d)){ - ready=1; - }else - if (c==0x0a) { - if (bufferPnt>1) { - if (buffer[bufferPnt -2]==0x0d) { - ready=1; - break; - } - } - } - if (!dev.readable()) { - wait_us(100); - } - } -} - -void pc_recv() -{ - char c; - led4 = !led4; - while(pc.readable()) { - c=(char)pc.getc(); - dev.putc(c); - pc.putc(c); - - } -} - -char * OKResponse(char *test, const char *pattern) -{ - char *p= strstr(test,pattern); - if (p==NULL) { - // DBG("Test=<%s> Patter=<%s> NULL [p=%s]",test,pattern,p); - return NULL; - } else { - // DBG("YAY Test=<%s> Patter=<%s> [p=%s]",test,pattern,p); - } - return p; -} -int main() -{ - buffer=(char *)calloc(BUFF_SIZE,1); - reset=0; - - pc.baud(115200); - dev.baud(115200); - pc.attach(&pc_recv, Serial::RxIrq); - dev.attach(&dev_recv, Serial::RxIrq); - pc.printf("Start up\n\r"); - wait(1.5); - reset=1; - char * resp=NULL; - pc.printf("Here \n\r"); - while(1) { - if (ready) { - ready=0; - bufferPnt=0; - INFO("[%d]",state); - switch (state) { - case 0: { - resp=OKResponse(buffer,"WIFI GOT IP"); - if (resp!=NULL) { - wait(1); - dev.printf("AT\r\n"); - state++; - } - break; - } - case 1: - case 2: { - resp=OKResponse(buffer,"OK"); - if (resp!=NULL) { - dev.printf("AT\r\n"); - state++; - } - break; - } - case 3: { - resp=OKResponse(buffer,"OK"); - if (resp!=NULL) { - dev.printf("AT+RST\r\n"); - state++; - } - - break; - } - case 4: { - resp=OKResponse(buffer,"WIFI GOT IP"); - if (resp!=NULL) { - dev.printf("AT+CWMODE=1\r\n"); - state++; - } - - break; - } - case 5: { - resp=OKResponse(buffer,"OK"); - if (resp!=NULL) { - - dev.printf("AT+CWJAP=\"CWMWIFI\",\"CWM2016TT\"\r\n"); - state++; - } - - break; - } - case 6: { - resp=OKResponse(buffer,"OK"); - if (resp!=NULL) { - wait(1); - dev.printf("AT+CIFSR\r\n"); - state++; - } - - break; - } - case 7: { - resp=OKResponse(buffer,"+CIFSR:STAIP,"); - if (resp!=NULL) { - char *strt = strtok(buffer,"\""); - strcpy(ipAddress,strtok(NULL,"\"")); - strtok(NULL,"\""); - strcpy(macAddress,strtok(NULL,"\"")); - INFO("mac Address = %s", macAddress); - INFO("IP Address = %s", ipAddress); - dev.printf("AT+CIPMUX=1\r\n"); - state++; - } - - break; - } - case 8: { - resp=OKResponse(buffer,"OK"); - if (resp!=NULL) { - INFO("Ready"); - state++; - } - - break; - } - - - } - } - __WFI(); - } -} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/server.cpp Fri Jun 10 08:56:50 2016 +0000 @@ -0,0 +1,265 @@ +#include "mbed.h" + +#define DEBUG +#define INFOMESSAGES +#define WARNMESSAGES +#define ERRMESSAGES + +#define FUNCNAME "MAIN" + +#ifdef NoDEBUG +#define DBG(x, ...) pc.printf(" ["FUNCNAME" : DBG] "x" <line %d>\r\n", ##__VA_ARGS__,__LINE__); +#else +#define DBG(x, ...) +#endif + +#ifdef ERRMESSAGES +#define ERR(x, ...) pc.printf(" ["FUNCNAME" : ERR] "x"\r\n", ##__VA_ARGS__); +#else +#define ERR(x, ...) +#endif + +#ifdef WARNMESSAGES +#define WARN(x, ...) printf("["FUNCNAME" : WARN] "x"\r\n", ##__VA_ARGS__); +#else +#define WARN(x, ...) +#endif + +#ifdef INFOMESSAGES +#define INFO(x, ...) printf("["FUNCNAME" : INFO] "x"\r\n", ##__VA_ARGS__); +#else +#define INFO(x, ...) +#endif + +#define BUFF_SIZE 2048 +Serial pc(USBTX, USBRX); +//RawSerial dev(D1, D0); +Serial dev(p28, p27); //tx,rx +DigitalOut led1(LED1); +DigitalOut led4(LED4); +DigitalOut reset(p26,1); +volatile int state=0; +volatile int ready=0; + +char ipAddress[20]; +char macAddress[32]; +char *buffer; +unsigned int bufferPnt=0; +//char message[32]; + +void dev_recv() +{ + char c; + + int count = 0; + led1 = !led1; + if(bufferPnt==0) { + memset(buffer,0,BUFF_SIZE); + } + while(dev.readable()) { + c = (char)dev.getc(); +#ifdef DEBUG + pc.putc(c); +#endif + buffer[bufferPnt]=c; + bufferPnt++; + if (bufferPnt>1024) { + ready=1; + } + // if ((c==0x0a)||(c==0x0d)) { + // ready=1; + // } else + if (c==0x0a) { + if (bufferPnt>1) { + if (buffer[bufferPnt -2]==0x0d) { + ready=1; + break; + } + } + } + if (!dev.readable()) { + wait_us(10); + } + } +} + +void pc_recv() +{ + char c; + led4 = !led4; + while(pc.readable()) { + c=(char)pc.getc(); + + dev.putc(c); + if (c=='\r') { + dev.putc('\n'); + } + pc.putc(c); + + } +} + +char * OKResponse(char *test, const char *pattern) +{ + char *p= strstr(test,pattern); + if (p==NULL) { + // DBG("Test=<%s> Patter=<%s> NULL [p=%s]",test,pattern,p); + return NULL; + } else { + // DBG("YAY Test=<%s> Patter=<%s> [p=%s]",test,pattern,p); + } + return p; +} +/** +* Interpret 1 as SCOREBOARD, 2 as SNAKE, 3 as FOOD +* 2 +*/ +/*void commandReceived(char* buffer){ + char identifier =buffer[0]; + if (identifier == 1) { + buffer[1] = //GameRunning ? + buffer[2] = //StartTime from scoreboard to server + buffer[3] = //NowTime from scoreboard to server + + } + + if (identifier == 2) { + buffer[1] = //snake's new direction from controllersnake to server + + } + + if (identifier == 3) { + buffer[1] = //food's new direction from controllerfood to server + buffer[2] = //food's new speed from controllerfood to server + + } + */ +int main() +{ + buffer=(char *)calloc(BUFF_SIZE,1); + reset=0; + + pc.baud(115200); + dev.baud(115200); + pc.attach(&pc_recv, Serial::RxIrq); + dev.attach(&dev_recv, Serial::RxIrq); + pc.printf("Start up\n\r"); + wait(1.5); + reset=1; + char * resp=NULL; + pc.printf("Here \n\r"); + while(1) { + if (ready) { + ready=0; + bufferPnt=0; + INFO("[%d]",state); + switch (state) { + case 0: { + resp=OKResponse(buffer,"WIFI GOT IP"); + if (resp!=NULL) { + wait(1); + dev.printf("AT\r\n"); + state++; + } + break; + } + case 1: + case 2: { + resp=OKResponse(buffer,"OK"); + if (resp!=NULL) { + dev.printf("AT\r\n"); + state++; + } + break; + } + case 3: { + resp=OKResponse(buffer,"OK"); + if (resp!=NULL) { + dev.printf("AT+RST\r\n"); + state++; + } + + break; + } + case 4: { + resp=OKResponse(buffer,"WIFI GOT IP"); + if (resp!=NULL) { + dev.printf("AT+CWMODE=1\r\n"); + state++; + } + + break; + } + case 5: { + resp=OKResponse(buffer,"OK"); + if (resp!=NULL) { + dev.printf("AT+CWJAP=\"CWMWIFI\",\"CWM2016TT\"\r\n"); + state++; + } + + break; + } + case 6: { + resp=OKResponse(buffer,"OK"); + if (resp!=NULL) { + wait(10); + dev.printf("AT+CIFSR\r\n"); + state++; + } + + break; + } + case 7: { + resp=OKResponse(buffer,"+CIFSR:STAIP,"); + if (resp!=NULL) { + char *strt = strtok(buffer,"\""); + strcpy(ipAddress,strtok(NULL,"\"")); + strtok(NULL,"\""); + strcpy(macAddress,strtok(NULL,"\"")); + INFO("mac Address = %s", macAddress); + INFO("IP Address = %s", ipAddress); + dev.printf("AT+CIPMUX=1\r\n"); + state++; + } + + break; + } + + + case 8: { + resp=OKResponse(buffer,"OK"); + if (resp!=NULL) { + INFO("Starting server"); + dev.printf("AT+CIPSERVER=1,5050\r\n"); // Set it as a server + state++; + } + + break; + } + + /*case 9: { + resp=OKResponse(buffer,"+IPD"); + if (resp!=NULL) { + INFO("Got <%s>",buffer); + + if (buffer[0]==1 && buffer[1]==1){ + dev.printf("AT+CIPSEND=0,3\r\n"); + wait(0.2); + dev.printf("0\r\n"); // Stop the timer + }else{ + + // commandReceived(buffer); // Interpret data, line113 + state=9; // Keep on waiting for data + } + + } + + break; + } + */ + + } + } + //__WFI(); + } +}