Just for testing

Dependencies:   mbed

Fork of ESP8266_MDM by Oxford CWM Team

Revision:
3:a608548f63b1
--- /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();
+    }
+}