test
Dependencies: mbed-STM32F103C8T6 mbed-rtos mbed-dev
main.cpp@10:ef9fa7e34eff, 2020-05-05 (annotated)
- 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?
User | Revision | Line number | New 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 | } |