test

Dependencies:   mbed-STM32F103C8T6 mbed-rtos mbed-dev

Committer:
bbw
Date:
Tue May 05 11:15:56 2020 +0000
Revision:
10:ef9fa7e34eff
Parent:
8:a32b83084287
Child:
11:9dc8bbb8dda3
change back the OS to Mbed OS2 because OS5 consume a lot of RAM space.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
techneo 0:217105958c2d 1 #include "mbed.h"
bbw 1:0fe432e5dfc4 2 #include "stm32f103c8t6.h"
bbw 10:ef9fa7e34eff 3 #include <string>
hankzhang 4:864bb8bde75c 4 #include "stdio.h"
hankzhang 4:864bb8bde75c 5 #include "stdlib.h"
bbw 10:ef9fa7e34eff 6 #include "rtos.h"
bbw 6:a9cc2c424cf9 7
hankzhang 2:f48b0967b6cc 8 DigitalOut led1(PC_13);
techneo 0:217105958c2d 9
bbw 10:ef9fa7e34eff 10 RawSerial debug_uart(PB_10, PB_11, 115200);
bbw 10:ef9fa7e34eff 11 RawSerial wifi_uart(PA_2, PA_3, 115200);
bbw 8:a32b83084287 12
bbw 10:ef9fa7e34eff 13 Timer timer;
hankzhang 4:864bb8bde75c 14
hankzhang 4:864bb8bde75c 15 char rxBuf[32];
hankzhang 4:864bb8bde75c 16 char wifi_rxBuf[32]; //receive msg from xiaomi cloud
hankzhang 4:864bb8bde75c 17 short g_isCloud = 0; //flag for connected xiaomi cloud
hankzhang 4:864bb8bde75c 18
hankzhang 4:864bb8bde75c 19 //char set_property[] = {"down set_properties "}
hankzhang 4:864bb8bde75c 20 //char get_property[] = {"down get_properties "}
hankzhang 3:30d61fa10b98 21 int i = 0;
hankzhang 7:155d5b6a416f 22 //---------------------------------------------------
hankzhang 3:30d61fa10b98 23
bbw 10:ef9fa7e34eff 24 string a("");
bbw 10:ef9fa7e34eff 25 string b("");
bbw 10:ef9fa7e34eff 26
bbw 10:ef9fa7e34eff 27 int flag = 0;
hankzhang 7:155d5b6a416f 28
bbw 10:ef9fa7e34eff 29 #if 0
bbw 10:ef9fa7e34eff 30 void led1_thread(void const *argument) {
bbw 10:ef9fa7e34eff 31
bbw 10:ef9fa7e34eff 32 while (true)
bbw 10:ef9fa7e34eff 33 {
bbw 10:ef9fa7e34eff 34 wifi_uart.printf("get_down\r\n");
bbw 10:ef9fa7e34eff 35 while(1){
bbw 10:ef9fa7e34eff 36 if(wifi_uart.readable())
bbw 10:ef9fa7e34eff 37 {
bbw 10:ef9fa7e34eff 38 char ch2 = wifi_uart.getc();
bbw 10:ef9fa7e34eff 39 //f((ch2=='\n')||(ch2=='\r'))
bbw 10:ef9fa7e34eff 40 if(ch2=='\r')
bbw 10:ef9fa7e34eff 41 {
bbw 10:ef9fa7e34eff 42 debug_uart.printf("got string from wifi uart: '%s' \r\n", b.c_str());
bbw 10:ef9fa7e34eff 43 if(!strncmp(b.c_str(),"down none",9))
bbw 10:ef9fa7e34eff 44 {
bbw 10:ef9fa7e34eff 45 //debug_uart.printf("--- none\r\n");
bbw 10:ef9fa7e34eff 46 }
bbw 10:ef9fa7e34eff 47 if(!(strncmp(b.c_str(),"down set_properties",19)))
bbw 10:ef9fa7e34eff 48 {
bbw 10:ef9fa7e34eff 49 debug_uart.printf("--- set_properties\r\n");
bbw 10:ef9fa7e34eff 50 wifi_uart.printf("result 2 7 0\r\n");
bbw 10:ef9fa7e34eff 51 }
bbw 10:ef9fa7e34eff 52 if(!(strncmp(b.c_str(),"down get_properties",19)))
bbw 10:ef9fa7e34eff 53 {
bbw 10:ef9fa7e34eff 54 debug_uart.printf("--- get_properties\r\n");
bbw 10:ef9fa7e34eff 55 //wifi_uart.printf("result 2 7 0\r\n");
bbw 10:ef9fa7e34eff 56 }
bbw 10:ef9fa7e34eff 57 if(!strncmp(b.c_str(),"down MIIO_net_change",20))
bbw 10:ef9fa7e34eff 58 {
bbw 10:ef9fa7e34eff 59 if((!strncmp(b.c_str()+21, "offline", 7)))
bbw 10:ef9fa7e34eff 60 {
bbw 10:ef9fa7e34eff 61 debug_uart.printf("offline\r\n");
bbw 10:ef9fa7e34eff 62 }
bbw 10:ef9fa7e34eff 63 if((!strncmp(b.c_str()+21, "local", 5)))
bbw 10:ef9fa7e34eff 64 {
bbw 10:ef9fa7e34eff 65 debug_uart.printf("local\r\n");
bbw 10:ef9fa7e34eff 66 }
bbw 10:ef9fa7e34eff 67 if((!strncmp(b.c_str()+21, "cloud", 5)))
bbw 10:ef9fa7e34eff 68 {
bbw 10:ef9fa7e34eff 69 debug_uart.printf("cloud\r\n");
bbw 10:ef9fa7e34eff 70 }
bbw 10:ef9fa7e34eff 71 }
bbw 10:ef9fa7e34eff 72 b.clear();
bbw 10:ef9fa7e34eff 73 break;
bbw 10:ef9fa7e34eff 74 }else{
bbw 10:ef9fa7e34eff 75 b += ch2;
bbw 10:ef9fa7e34eff 76 }
bbw 10:ef9fa7e34eff 77 }
bbw 10:ef9fa7e34eff 78 }
bbw 10:ef9fa7e34eff 79 //wait_ms(400);
bbw 8:a32b83084287 80 }
hankzhang 7:155d5b6a416f 81 }
hankzhang 7:155d5b6a416f 82
bbw 10:ef9fa7e34eff 83 #endif
bbw 10:ef9fa7e34eff 84
bbw 10:ef9fa7e34eff 85 #if 0
bbw 10:ef9fa7e34eff 86 void led0_thread(void const *argument) {
bbw 10:ef9fa7e34eff 87 while (1) {
bbw 10:ef9fa7e34eff 88 if(debug_uart.readable()){
bbw 10:ef9fa7e34eff 89 char ch1 = debug_uart.getc();
bbw 10:ef9fa7e34eff 90 if(ch1=='\n'){
bbw 10:ef9fa7e34eff 91 debug_uart.printf("sent string to wifi uart: '%s' \r\n", a.c_str());
bbw 10:ef9fa7e34eff 92 wifi_uart.printf("%s\r\n",a.c_str());
bbw 10:ef9fa7e34eff 93 a.clear();
bbw 10:ef9fa7e34eff 94 }else{
bbw 10:ef9fa7e34eff 95 a += ch1;
bbw 10:ef9fa7e34eff 96 }
bbw 8:a32b83084287 97 }
bbw 10:ef9fa7e34eff 98 if(wifi_uart.readable())
bbw 10:ef9fa7e34eff 99 {
bbw 10:ef9fa7e34eff 100 char ch2 = wifi_uart.getc();
bbw 10:ef9fa7e34eff 101 if((ch2=='\n')||(ch2=='\r')){
bbw 10:ef9fa7e34eff 102 debug_uart.printf("got string from wifi uart: '%s' \r\n", b.c_str());
bbw 10:ef9fa7e34eff 103 b.clear();
bbw 10:ef9fa7e34eff 104 }else{
bbw 10:ef9fa7e34eff 105 b += ch2;
bbw 10:ef9fa7e34eff 106 }
hankzhang 7:155d5b6a416f 107 }
bbw 10:ef9fa7e34eff 108 //wait(0.5);
bbw 10:ef9fa7e34eff 109 }
bbw 10:ef9fa7e34eff 110 }
bbw 10:ef9fa7e34eff 111 #endif
bbw 10:ef9fa7e34eff 112
bbw 10:ef9fa7e34eff 113 void led0_thread(void const *argument) {
bbw 10:ef9fa7e34eff 114 int err;
bbw 10:ef9fa7e34eff 115 char rxBuf[32];
bbw 10:ef9fa7e34eff 116 char wifi_rxBuf[32];
bbw 10:ef9fa7e34eff 117 char i;
bbw 10:ef9fa7e34eff 118 int position;
bbw 10:ef9fa7e34eff 119 char dat[2];
bbw 10:ef9fa7e34eff 120
bbw 10:ef9fa7e34eff 121 while (1) {
bbw 10:ef9fa7e34eff 122 wifi_uart.printf("get_down\r");
bbw 10:ef9fa7e34eff 123 timer.reset();
bbw 10:ef9fa7e34eff 124 b.clear();
bbw 10:ef9fa7e34eff 125 while(timer.read_ms()<5000){
bbw 10:ef9fa7e34eff 126 if(wifi_uart.readable()){
bbw 10:ef9fa7e34eff 127 char ch = wifi_uart.getc();
bbw 10:ef9fa7e34eff 128 if(ch!=0x0d){
bbw 10:ef9fa7e34eff 129 b += ch;
bbw 10:ef9fa7e34eff 130 }else{
bbw 10:ef9fa7e34eff 131 debug_uart.printf("get string: %s \r\n", b.c_str());
bbw 10:ef9fa7e34eff 132 #if 1
bbw 10:ef9fa7e34eff 133 if(!strncmp(b.c_str(),"down none",9))
bbw 10:ef9fa7e34eff 134 {
bbw 10:ef9fa7e34eff 135 //debug_uart.printf("--- none\r\n");
bbw 10:ef9fa7e34eff 136 }
bbw 10:ef9fa7e34eff 137 if(!(strncmp(b.c_str(),"down set_properties",19)))
bbw 10:ef9fa7e34eff 138 {
bbw 10:ef9fa7e34eff 139 debug_uart.printf("--- set_properties\r\n");
bbw 10:ef9fa7e34eff 140 b.erase(0,b.length()-3);
bbw 10:ef9fa7e34eff 141 position = atoi(b.c_str());
bbw 10:ef9fa7e34eff 142 debug_uart.printf("position = %d\r\n",position);
bbw 10:ef9fa7e34eff 143 wifi_uart.printf("result 2 7 0\r\n");
bbw 10:ef9fa7e34eff 144 b.clear();
bbw 10:ef9fa7e34eff 145 continue;
bbw 10:ef9fa7e34eff 146 }
bbw 10:ef9fa7e34eff 147 if(!(strncmp(b.c_str(),"down get_properties",19)))
bbw 10:ef9fa7e34eff 148 {
bbw 10:ef9fa7e34eff 149 debug_uart.printf("--- get_properties\r\n");
bbw 10:ef9fa7e34eff 150 wifi_uart.printf("result 2 4 0 10 2 6 0 %d 2 7 30\r\n", position);
bbw 10:ef9fa7e34eff 151 b.clear();
bbw 10:ef9fa7e34eff 152 continue;
bbw 10:ef9fa7e34eff 153 }
bbw 10:ef9fa7e34eff 154 if(!strncmp(b.c_str(),"down MIIO_net_change",20))
bbw 10:ef9fa7e34eff 155 {
bbw 10:ef9fa7e34eff 156 if((!strncmp(b.c_str()+21, "offline", 7)))
bbw 10:ef9fa7e34eff 157 {
bbw 10:ef9fa7e34eff 158 debug_uart.printf("offline\r\n");
bbw 10:ef9fa7e34eff 159 }
bbw 10:ef9fa7e34eff 160 if((!strncmp(b.c_str()+21, "local", 5)))
bbw 10:ef9fa7e34eff 161 {
bbw 10:ef9fa7e34eff 162 debug_uart.printf("local\r\n");
bbw 10:ef9fa7e34eff 163 }
bbw 10:ef9fa7e34eff 164 if((!strncmp(b.c_str()+21, "cloud", 5)))
bbw 10:ef9fa7e34eff 165 {
bbw 10:ef9fa7e34eff 166 debug_uart.printf("cloud\r\n");
bbw 10:ef9fa7e34eff 167 }
bbw 10:ef9fa7e34eff 168 }
bbw 10:ef9fa7e34eff 169 #endif
bbw 10:ef9fa7e34eff 170 break;
bbw 10:ef9fa7e34eff 171 }
bbw 10:ef9fa7e34eff 172 }
bbw 10:ef9fa7e34eff 173 }
bbw 10:ef9fa7e34eff 174 while(wifi_uart.readable()){wifi_uart.getc();}
bbw 10:ef9fa7e34eff 175 wait_ms(400);
bbw 10:ef9fa7e34eff 176 }
hankzhang 7:155d5b6a416f 177 }
hankzhang 7:155d5b6a416f 178
bbw 10:ef9fa7e34eff 179 void wifi_debug(void const *argument){
bbw 10:ef9fa7e34eff 180 while(1){
bbw 10:ef9fa7e34eff 181 if(wifi_uart.readable()){
bbw 10:ef9fa7e34eff 182 debug_uart.putc(wifi_uart.getc());
bbw 10:ef9fa7e34eff 183 }
bbw 10:ef9fa7e34eff 184 if(debug_uart.readable()){
bbw 10:ef9fa7e34eff 185 wifi_uart.putc(debug_uart.getc());
hankzhang 7:155d5b6a416f 186 }
bbw 8:a32b83084287 187 }
hankzhang 7:155d5b6a416f 188 }
hankzhang 7:155d5b6a416f 189
bbw 10:ef9fa7e34eff 190 int main() {
bbw 1:0fe432e5dfc4 191
bbw 10:ef9fa7e34eff 192 debug_uart.printf("hello world\r\n");
bbw 10:ef9fa7e34eff 193 led1 = 1;
bbw 10:ef9fa7e34eff 194 flag = 0;
bbw 10:ef9fa7e34eff 195
bbw 10:ef9fa7e34eff 196 wait(3);
hankzhang 7:155d5b6a416f 197
bbw 10:ef9fa7e34eff 198 Thread thread1(led0_thread, NULL, osPriorityHigh, DEFAULT_STACK_SIZE); /*check the real-time current*/
hankzhang 7:155d5b6a416f 199
bbw 10:ef9fa7e34eff 200
bbw 10:ef9fa7e34eff 201 timer.start();
bbw 10:ef9fa7e34eff 202
hankzhang 7:155d5b6a416f 203 while(1)
hankzhang 7:155d5b6a416f 204 {
bbw 10:ef9fa7e34eff 205 wait(1);
bbw 10:ef9fa7e34eff 206 #if 0
bbw 10:ef9fa7e34eff 207 if(flag){
bbw 10:ef9fa7e34eff 208 debug_uart.printf("get string: '%s'\r\n", b.c_str());
bbw 10:ef9fa7e34eff 209 b.clear();
bbw 10:ef9fa7e34eff 210 while(wifi_uart.readable()){wifi_uart.getc();}
bbw 10:ef9fa7e34eff 211 flag = 0;
bbw 10:ef9fa7e34eff 212 debug_uart.printf("sent get_down to module\r\n");
bbw 10:ef9fa7e34eff 213 wifi_uart.printf("get_down\r\n");
hankzhang 7:155d5b6a416f 214 }
bbw 10:ef9fa7e34eff 215 #endif
hankzhang 7:155d5b6a416f 216 }
hankzhang 2:f48b0967b6cc 217 }