mbed_robotcar / Mbed 2 deprecated WiFi_Finish

Dependencies:   mbed

Revision:
5:7133730d405f
Parent:
4:52361cf7f1d8
--- a/main.cpp	Tue Aug 04 07:47:49 2020 +0000
+++ b/main.cpp	Wed Aug 05 06:47:58 2020 +0000
@@ -1,7 +1,7 @@
 #include "mbed.h"
 
-Serial pc(USBTX, USBRX);
-Serial esp(p13, p14); // tx, rx
+RawSerial pc(USBTX, USBRX);
+RawSerial esp(p13, p14); // tx, rx
 
 enum MODE {
     READY = -1,
@@ -16,10 +16,10 @@
 };
 
 // Standard Mbed LED definitions
-DigitalOut  led1(LED1);    
-DigitalOut  led2(LED2);    
+DigitalOut  led1(LED1);
+DigitalOut  led2(LED2);
 DigitalOut  led3(LED3);
-DigitalOut  led4(LED4);     
+DigitalOut  led4(LED4);
 
 Timer t1;
 Timer t2;
@@ -83,23 +83,23 @@
     getreply();
     esp.baud(115200);   // ESP8266 baudrate. Maximum on KLxx' is 115200, 230400 works on K20 and K22F
     startserver();
-    
+
     while(1) {
         if(DataRX==1) {
             pc.printf("\f\n\r------------ main while > if --------------\n\r");
             click_flag = 1;
             ReadWebData();
-            pc.printf("\f\n\r------------ click_flag=%d --------------\n\r",click_flag); 
+            pc.printf("\f\n\r------------ click_flag=%d --------------\n\r",click_flag);
             //if ((servreq == 1 && weberror == 0) && click_flag == 1) {
             if (servreq == 1 && weberror == 0) {
-                pc.printf("\f\n\r------------ befor send page --------------\n\r");        
+                pc.printf("\f\n\r------------ befor send page --------------\n\r");
                 sendpage();
             }
-            pc.printf("\f\n\r------------ send_check begin --------------\n\r"); 
-            
+            pc.printf("\f\n\r------------ send_check begin --------------\n\r");
+
             //sendcheck();
-            pc.printf("\f\n\r------------ ssend_check end--------------\n\r"); 
-            
+            pc.printf("\f\n\r------------ ssend_check end--------------\n\r");
+
             esp.attach(&callback);
             pc.printf(" IPD Data:\r\n\n Link ID = %d,\r\n IPD Header Length = %d \r\n IPD Type = %s\r\n", linkID, ipdLen, type);
             pc.printf("\n\n  HTTP Packet: \n\n%s\n", webdata);
@@ -117,7 +117,7 @@
     strcpy(webbuff, "<!DOCTYPE html>");
     strcat(webbuff, "<html><head><title>RobotCar</title><meta name='viewport' content='width=device-width'/>");
     strcat(webbuff, "<style type=\"text/css\">.noselect{ width:100px;height:60px;}.light{ width:100px;height:60px;background-color:#00ff66;}</style>");
-    strcat(webbuff, "</head><body><center><p><strong>Robot Car Remot Controller");
+    strcat(webbuff, "</head><body><center><p><strong>Robot Car Remote Controller");
     strcat(webbuff, "</strong></p><td style='vertical-align:top;'><strong>Battery level ");
     strcat(webbuff, "<input type=\"text\" id=\"leftms\" size=4 value=250>%</strong>");
     strcat(webbuff, "</td></p>");
@@ -271,21 +271,21 @@
             strcat(webbuff, "</button></td><td>");
             strcat(webbuff, "<button id='sp2btn' type='button' class=\"light\" value=\"Fast\"  onClick='send_mes_spe(this.id,this.value)' >Fast");
             strcat(webbuff, "</button></td><td>");
-            strcat(webbuff, "<button id='sp3btn' type='button' class=\"noselect\" value=\"BeryFast\"  onClick='send_mes_spe(this.id,this.value)' >BeryFast");
+            strcat(webbuff, "<button id='sp3btn' type='button' class=\"noselect\" value=\"VeryFast\"  onClick='send_mes_spe(this.id,this.value)' >VeryFast");
             break;
         case 2:
             strcat(webbuff, "<button id='sp1btn' type='button' class=\"noselect\" value=\"Normal\"  onClick='send_mes_spe(this.id,this.value)' >Normal");
             strcat(webbuff, "</button></td><td>");
             strcat(webbuff, "<button id='sp2btn' type='button' class=\"noselect\" value=\"Fast\"  onClick='send_mes_spe(this.id,this.value)' >Fast");
             strcat(webbuff, "</button></td><td>");
-            strcat(webbuff, "<button id='sp3btn' type='button' class=\"light\" value=\"BeryFast\"  onClick='send_mes_spe(this.id,this.value)' >BeryFast");
+            strcat(webbuff, "<button id='sp3btn' type='button' class=\"light\" value=\"VeryFast\"  onClick='send_mes_spe(this.id,this.value)' >VeryFast");
             break;
         default:
             strcat(webbuff, "<button id='sp1btn' type='button' class=\"noselect\" value=\"Normal\"  onClick='send_mes_spe(this.id,this.value)' >Normal");
             strcat(webbuff, "</button></td><td>");
             strcat(webbuff, "<button id='sp2btn' type='button' class=\"noselect\" value=\"Fast\"  onClick='send_mes_spe(this.id,this.value)' >Fast");
             strcat(webbuff, "</button></td><td>");
-            strcat(webbuff, "<button id='sp3btn' type='button' class=\"noselect\" value=\"BeryFast\"  onClick='send_mes_spe(this.id,this.value)' >BeryFast");
+            strcat(webbuff, "<button id='sp3btn' type='button' class=\"noselect\" value=\"VeryFast\"  onClick='send_mes_spe(this.id,this.value)' >VeryFast");
             break;
     }
     strcat(webbuff, "</button></td></tr></table>");
@@ -294,125 +294,47 @@
     strcat(webbuff, "</body>");
     strcat(webbuff, "</html>");
     strcat(webbuff, "<script language=\"javascript\" type=\"text/javascript\">");
+    
     strcat(webbuff, "function htmlacs(url) {");
     strcat(webbuff, "var xhr = new XMLHttpRequest();");
     strcat(webbuff, "xhr.open(\"GET\", url);");
     strcat(webbuff, "xhr.send(\"\");");
     strcat(webbuff, "}");
+    
     strcat(webbuff, "function send_mes(btnmes,btnval){");
     strcat(webbuff, "console.log(btnval);");
-    
-    strcat(webbuff, "switch(btnval){");
-    strcat(webbuff, "case \"GO\"):");
-    strcat(webbuff, "document.getElementById(\"gobtn\").className=\"light\";");
-    strcat(webbuff, "document.getElementById(\"leftbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"stopbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"rightbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"backbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"avoidbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"tracebtn\").className=\"noselect\";");
-    strcat(webbuff, "break;");
-    strcat(webbuff, "case \"LEFT\"):");
-    strcat(webbuff, "document.getElementById(\"gobtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"leftbtn\").className=\"light\";");
-    strcat(webbuff, "document.getElementById(\"stopbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"rightbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"backbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"avoidbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"tracebtn\").className=\"noselect\";");
-    strcat(webbuff, "break;");
-    strcat(webbuff, "case \"STOP\"):");
-    strcat(webbuff, "document.getElementById(\"gobtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"leftbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"stopbtn\").className=\"light\";");
-    strcat(webbuff, "document.getElementById(\"rightbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"backbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"avoidbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"tracebtn\").className=\"noselect\";");
-    strcat(webbuff, "break;");
-    strcat(webbuff, "case \"RIGHT\"):");
-    strcat(webbuff, "document.getElementById(\"gobtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"leftbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"stopbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"rightbtn\").className=\"light\";");
-    strcat(webbuff, "document.getElementById(\"backbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"avoidbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"tracebtn\").className=\"noselect\";");
-    strcat(webbuff, "break;");
-    strcat(webbuff, "case \"BACK\"):");
-    strcat(webbuff, "document.getElementById(\"gobtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"leftbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"stopbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"rightbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"backbtn\").className=\"light\";");
-    strcat(webbuff, "document.getElementById(\"avoidbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"tracebtn\").className=\"noselect\";");
-    strcat(webbuff, "break;");
-    strcat(webbuff, "case \"AVOIDANCE\"):");
-    strcat(webbuff, "document.getElementById(\"gobtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"leftbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"stopbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"rightbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"backbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"avoidbtn\").className=\"light\";");
-    strcat(webbuff, "document.getElementById(\"tracebtn\").className=\"noselect\";");
-    strcat(webbuff, "break;");
-    strcat(webbuff, "case \"LINE_TRACE\"):");
-    strcat(webbuff, "document.getElementById(\"gobtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"leftbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"stopbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"rightbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"backbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"avoidbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"tracebtn\").className=\"light\";");
-    strcat(webbuff, "break;");
-    strcat(webbuff, "}");
-    strcat(webbuff, "default :");
-    strcat(webbuff, "document.getElementById(\"gobtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"leftbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"stopbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"rightbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"backbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"avoidbtn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"tracebtn\").className=\"noselect\";");
-    strcat(webbuff, "break;");
-    strcat(webbuff, "}");
+
     strcat(webbuff, "var url = \"http://\" + window.location.hostname + \"/cargo?a=\" + btnval;");
     strcat(webbuff, "htmlacs(url);");
     strcat(webbuff, "console.log(url);");
+    strcat(webbuff, "var buttons = document.getElementsByTagName(\"button\");");
+    strcat(webbuff, "for(var i=0;i<7;i++){");
+    strcat(webbuff, "if(buttons[i].value == btnval){");
+    strcat(webbuff, "buttons[i].className=\"light\";");
+    strcat(webbuff, "}else{");
+    strcat(webbuff, "buttons[i].className=\"noselect\";");
     strcat(webbuff, "}");
+    strcat(webbuff, "}");
+    strcat(webbuff, "}");
+    
     strcat(webbuff, "function send_mes_spe(btnmes,btnval){");
-    strcat(webbuff, "switch(btnval){");
-    strcat(webbuff, "case \"Normal\"):");
-    strcat(webbuff, "document.getElementById(\"sp1btn\").className=\"light\";");
-    strcat(webbuff, "document.getElementById(\"sp2btn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"sp3btn\").className=\"noselect\";");
-    strcat(webbuff, "break;");
-    strcat(webbuff, "case \"Fast\"):");
-    strcat(webbuff, "document.getElementById(\"sp1btn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"sp2btn\").className=\"light\";");
-    strcat(webbuff, "document.getElementById(\"sp3btn\").className=\"noselect\";");
-    strcat(webbuff, "break;");
-    strcat(webbuff, "case \"BeryFast\"):");
-    strcat(webbuff, "document.getElementById(\"sp1btn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"sp2btn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"sp3btn\").className=\"light\";");
-    strcat(webbuff, "break;");
-    strcat(webbuff, "default :");
-    strcat(webbuff, "document.getElementById(\"sp1btn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"sp2btn\").className=\"noselect\";");
-    strcat(webbuff, "document.getElementById(\"sp3btn\").className=\"noselect\";");
-    strcat(webbuff, "break;");
-    strcat(webbuff, "}");
     strcat(webbuff, "var url = \"http://\" + window.location.hostname + \"/cargo?a=\" + btnval;");
     strcat(webbuff, "htmlacs(url);");
     strcat(webbuff, "console.log(url);");
+    strcat(webbuff, "var buttons = document.getElementsByTagName(\"button\");");
+    strcat(webbuff, "for(var i=7;i<10;i++){");
+    strcat(webbuff, "if(buttons[i].value == btnval){");
+    strcat(webbuff, "buttons[i].className=\"light\";");
+    strcat(webbuff, "}else{");
+    strcat(webbuff, "buttons[i].className=\"noselect\";");
+    strcat(webbuff, "}");
+    strcat(webbuff, "}");
     strcat(webbuff, "}");
     strcat(webbuff, "</script>");
 // end of WEB page data
     bufl = strlen(webbuff); // get total page buffer length
     //sprintf(cmdbuff,"AT+CIPSEND=%d,%d\r\n", linkID, bufl); // send IPD link channel and buffer character length.
-    
+
     sprintf(cmdbuff,"AT+CIPSENDBUF=%d,%d\r\n", linkID, (bufl>2048?2048:bufl)); // send IPD link channel and buffer character length.
     timeout=500;
     getcount=40;
@@ -420,13 +342,13 @@
     getreply();
     pc.printf(replybuff);
     pc.printf("\n++++++++++ AT+CIPSENDBUF=%d,%d+++++++++\r\n", linkID, (bufl>2048?2048:bufl));
-    
+
     pc.printf("\n++++++++++ bufl is %d ++++++++++\r\n",bufl);
-    
+
     //pastthrough mode
     SendWEB();  // send web page
     pc.printf("\n++++++++++ webbuff clear  ++++++++++\r\n");
-  
+
     memset(webbuff, '\0', sizeof(webbuff));
     sendcheck();
 }
@@ -438,30 +360,30 @@
     if(esp.writeable()) {
         while(webbuff[i]!='\0') {
             esp.putc(webbuff[i]);
-                 
-          //****
-          //output at command when 2000 
-            if(((i%2047)==0) && (i>0)){    
-                    //wait_ms(10);
-                    sprintf(cmdbuff,"AT+CIPSENDBUF=%d,%d\r\n", linkID, (bufl-2048)>2048?2048:(bufl-2048)); // send IPD link channel and buffer character length.
-                    pc.printf("\r\n++++++++++ AT+CIPSENDBUF=%d,%d ++++++++++\r\n", linkID, (bufl-2048)>2048?2048:(bufl-2048));
-                    timeout=600;
-                    getcount=50;
-                    SendCMD();
-                    getreply();
-                    pc.printf(replybuff);
-                    pc.printf("\r\n+++++++++++++++++++\r\n");
-               }    
-    //****  
-            i++;     
+
+            //****
+            //output at command when 2000
+            if(((i%2047)==0) && (i>0)) {
+                //wait_ms(10);
+                sprintf(cmdbuff,"AT+CIPSENDBUF=%d,%d\r\n", linkID, (bufl-2048)>2048?2048:(bufl-2048)); // send IPD link channel and buffer character length.
+                pc.printf("\r\n++++++++++ AT+CIPSENDBUF=%d,%d ++++++++++\r\n", linkID, (bufl-2048)>2048?2048:(bufl-2048));
+                timeout=600;
+                getcount=50;
+                SendCMD();
+                getreply();
+                pc.printf(replybuff);
+                pc.printf("\r\n+++++++++++++++++++\r\n");
+            }
+            //****
+            i++;
             pc.printf("%c",webbuff[i]);
         }
     }
-     pc.printf("\n++++++++++ send web i= %dinfo ++++++++++\r\n",i);
+    pc.printf("\n++++++++++ send web i= %dinfo ++++++++++\r\n",i);
 }
 
 
-    
+
 void sendcheck()
 {
     weberror=1;
@@ -469,7 +391,7 @@
     getcount=24;
     t2.reset();
     t2.start();
-    
+
     /*
     while(weberror==1 && t2.read() <5) {
         getreply();
@@ -558,22 +480,26 @@
 
         if( strstr(webdata, "AVOIDANCE") != NULL ) {
             pc.printf("+++++++++++++++++AVOIDANCE+++++++++++++++++++++");
+            //if(avoi_thread->get_state() == Thread::Deleted) {
+            //    delete avoi_thread;
+            //    avoi_thread = new Thread(avoidance);
+            //    avoi_thread -> set_priority(osPriorityHigh);
+            //}
             mode=AVOIDANCE;
 //            run = ADVANCE;
 //            display();          // ディスプレイ表示
         }
         if( strstr(webdata, "LINE_TRACE") != NULL ) {
             pc.printf("+++++++++++++++++LINET RACE+++++++++++++++++++++");
+            pc.printf("mode = LINE_TRACE\r\n");
+            //if(trace_thread->get_state() == Thread::Deleted) {
+            //    delete trace_thread;
+            //    trace_thread = new Thread(trace);
+            //    trace_thread -> set_priority(osPriorityHigh);
+            //}
             mode=LINE_TRACE;
 //            display();          // ディスプレイ表示
         }
-        if( strstr(webdata, "DEFAULT") != NULL ) {//プログラムなくね
-            pc.printf("+++++++++++++++++DEFAULT+++++++++++++++++++++");
-//            run = STOP;
-            mode = READY;
-//            display();          // ディスプレイ表示
-
-        }
         if( strstr(webdata, "Normal") != NULL ) {
             pc.printf("++++++++++++++++++Normal++++++++++++++++++++");
             mode = SPEED;       // スピードモード
@@ -588,8 +514,8 @@
 //            display();          // ディスプレイ表示
             mode = beforeMode;  // 現在のモードに前回のモードを設定
         }
-        if( strstr(webdata, "BeryFast") != NULL ) {
-            pc.printf("+++++++++++++++++++BERYFast+++++++++++++++++++");
+        if( strstr(webdata, "VeryFast") != NULL ) {
+            pc.printf("+++++++++++++++++++VeryFast+++++++++++++++++++");
             mode = SPEED;       // スピードモード d
             flag_sp = 2;
 //            display();          // ディスプレイ表示