update

Dependencies:   mbed-STM32F103C8T6_new

Revision:
4:864bb8bde75c
Parent:
3:30d61fa10b98
Child:
6:a9cc2c424cf9
--- a/main.cpp	Sat Apr 18 06:31:52 2020 +0000
+++ b/main.cpp	Sat Apr 18 13:02:03 2020 +0000
@@ -2,6 +2,8 @@
 #include "stm32f103c8t6.h"
 #include "string.h"
 #include "main.h"
+#include "stdio.h"
+#include "stdlib.h"
 
 DigitalOut led1(PC_13);
 
@@ -12,22 +14,100 @@
 UARTSerial debug_uart(PB_10, PB_11, 115200);
 UARTSerial wifi_uart(PA_2, PA_3, 115200);
 
-char      rxBuf[64];
+//Serial wifi_uart(PA_2, PA_3, 115200);
+//Serial debug_uart(PB_10, PB_11, 115200);
+
+char      rxBuf[32];
+char      wifi_rxBuf[32];  //receive msg from xiaomi cloud
+short     g_isCloud = 0;   //flag for connected xiaomi cloud
+
+//char      set_property[] = {"down set_properties "}
+//char      get_property[] = {"down get_properties "}
 int       i = 0;
 
 ATCmdParser *_parser;
- 
-void led2_thread() {
-    while (true) {
-        debug_uart.write("led2+++", 6);
-        thread_sleep_for(4000);
+     
+void led1_thread() {
+    int length;
+    char len[20];
+    char l;
+    int position = 0;
+    int error = 0;
+    
+    while (true) 
+    {
+        wifi_uart.write("get_down\r", 9);
+        if(wifi_uart.readable())
+        {
+            length = wifi_uart.read(wifi_rxBuf, sizeof(wifi_rxBuf));
+            if(!(strncmp(wifi_rxBuf,"down none",9)))
+            {
+                //if return "down none"
+                debug_uart.write("--- none",8);
+            }
+            else if(!(strncmp(wifi_rxBuf,"down set_properties ",20)))
+            {
+                //if return "down set_properties"
+                debug_uart.write("--- set:", 8);
+                debug_uart.write(wifi_rxBuf, length);
+                
+                //set properties
+                if(wifi_rxBuf[22] == '7')
+                {
+                    //set target-position
+                    position = atoi(&wifi_rxBuf[24]);
+                    sprintf(len, "position:%d", position);
+                    debug_uart.write(len, sizeof(len));
+                }
+                
+                //report result to cloud
+                wifi_uart.write("result 2 7 0\r", 13);
+                if(wifi_uart.readable())
+                {
+                    length = wifi_uart.read(wifi_rxBuf, sizeof(wifi_rxBuf));
+                    debug_uart.write(wifi_rxBuf, length);
+                }
+            }
+            else if(!(strncmp(wifi_rxBuf,"down get_properties ",20)))
+            {
+                //if return "down get_properties"
+                debug_uart.write("--- get:", 8);
+                debug_uart.write(wifi_rxBuf, length);
+                
+                //report result to cloud
+            }
+            else if(!(strncmp(wifi_rxBuf,"down MIIO_net_change ",21)))
+            {
+                //if return "down MIIO_net_change"
+                debug_uart.write(wifi_rxBuf, length);
+                debug_uart.write("--- net:",8);
+                if((!strncmp(&wifi_rxBuf[21], "offline", 7)))
+                {
+                    //连接中
+                    debug_uart.write("offline\r", 8);
+                }
+                else if((!strncmp(&wifi_rxBuf[21], "local", 5)))
+                {
+                    //连上路由器但未连上服务器
+                    debug_uart.write("local\r", 6);
+                }
+                else if((!strncmp(&wifi_rxBuf[21], "cloud", 5)))
+                {
+                    //连上小米云服务器
+                    debug_uart.write("cloud\r", 6);
+                    g_isCloud = 1;
+                }
+            }
+            else
+            {
+                debug_uart.write(wifi_rxBuf, length);
+            }
+            
+         }
+        thread_sleep_for(400);
     }
 }
 
-void debug_uart_recv() {
-    //rxBuf[i++] = debug_uart.getc();
-    debug_uart.read(rxBuf, 5);
-} 
 
 void led0_thread() {
     int length;
@@ -55,42 +135,18 @@
     int length;
     led1 = 1;
     
-    wait(2);
+    wait(1);
     
-    //debug_uart.printf("hello world\r\n");
     debug_uart.write("hello world",11);
     
-    WIFI_PWREN = 1;
-#if 0  
-    while(1){
-        if(debug_uart.readable())
-        {
-              length = debug_uart.read(rxBuf, sizeof(rxBuf)); 
-              debug_uart.write(rxBuf, length); 
-              debug_uart.write("test",4);
-        }
-        wait(0.5);
-   }
-    //wifi_debug();
-    
-
-    _serial = new UARTSerial(PA_2, PA_3, 115200);
-    _parser = new ATCmdParser(_serial);
-    _parser->debug_on( 1 );
-    _parser->set_delimiter("\r\n");
-    
-    debug_uart.printf("\nATCmdParser: Retrieving model");
-    _parser->send("model\\r");
-    
-    _parser->recv("%s", model);
-    debug_uart.printf("model:%s", model);
- #endif   
+    WIFI_PWREN = 1;   
  
-    Thread thread0(osPriorityNormal, 512, nullptr, nullptr);
-    //Thread thread1(osPriorityNormal, 512, nullptr, nullptr);
+    //Thread thread0(osPriorityNormal, 512, nullptr, nullptr);
+    Thread thread1(osPriorityNormal, 512, nullptr, nullptr);
     //Thread thread2(osPriorityNormal, 512, nullptr, nullptr);
     
-    thread0.start(led0_thread);
+    //thread0.start(led0_thread);
+    thread1.start(led1_thread);
     
     //wifi_serial.printf("model\r\n");
     //thread1.start(led1_thread);
@@ -98,6 +154,10 @@
     while(1)
     {
         debug_uart.write("--main--\r\n",10);
+        if(g_isCloud)
+        {
+            debug_uart.write("connect to xiaomi cloud\r\n",25);
+        }
         wait(3);
     }