Just for testing
Dependencies: mbed
Fork of ESP8266_MDM by
server.cpp
- Committer:
- magd4235
- Date:
- 2016-06-10
- Revision:
- 3:a608548f63b1
File content as of revision 3:a608548f63b1:
#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(); } }