source: rtos_arduino/trunk/examples/WifiEcho/rca_app.cpp@ 200

Last change on this file since 200 was 200, checked in by ertl-honda, 8 years ago

マルチタスクのサンプルに変更

File size: 5.5 KB
Line 
1#include "rca.h"
2#include "ESP8266.h"
3
4#define SSID ""
5#define PASSWORD ""
6
7#define AP_SSID "M0_AP"
8#define AP_PASSWORD "none"
9
10#define WMODE_STATION
11
12ESP8266 wifi;
13
14#ifdef MULTI_ECHO_SERVER
15bool setup_done = false;
16#endif /* MULTI_ECHO_SERVER */
17
18void setup()
19{
20 int ret;
21
22 Serial.println("Web Server Task : Start!");
23
24 ret = wifi.begin(Serial5, 115200);
25
26 if(ret == 1) {
27 Serial.print("Cannot communicate with ESP8266.");
28 while(1);
29 } else if(ret == 2) {
30 Serial.println("FW Version mismatch.");
31 Serial.print("FW Version:");
32 Serial.println(wifi.getVersion().c_str());
33 Serial.print("Supported FW Version:");
34 Serial.println(ESP8266_SUPPORT_VERSION);
35 while(1);
36 } else {
37 Serial.print("begin ok\r\n");
38 }
39
40 Serial.print("FW Version:");
41 Serial.println(wifi.getVersion().c_str());
42
43#ifdef WMODE_STATION
44 if (wifi.setOprToStation()) {
45 Serial.print("to station ok\r\n");
46 } else {
47 Serial.print("to station err\r\n");
48 }
49
50 if (wifi.joinAP(SSID, PASSWORD)) {
51 Serial.print("Join AP success\r\n");
52 Serial.print("IP: ");
53 Serial.println(wifi.getLocalIP().c_str());
54 } else {
55 Serial.print("Join AP failure\r\n");
56 }
57#else /* !WMODE_STATION */
58 if (wifi.setOprToSoftAP()) {
59 Serial.print("to softap ok\r\n");
60 } else {
61 Serial.print("to softap err\r\n");
62 }
63 if(wifi.setSoftAPParam(AP_SSID, AP_PASSWORD, 7, 0)){
64 Serial.print("Set SoftAP success\r\n");
65 Serial.print("IP: ");
66 Serial.println(wifi.getLocalIP().c_str());
67 }
68 else {
69 Serial.print("Set SoftAP failure\r\n");
70 }
71#endif /* WMODE_STATION */
72
73 if (wifi.enableMUX()) {
74 Serial.print("multiple ok\r\n");
75 } else {
76 Serial.print("multiple err\r\n");
77 }
78
79 if (wifi.startTCPServer(80)) {
80 Serial.print("start tcp server ok\r\n");
81 } else {
82 Serial.print("start tcp server err\r\n");
83 }
84
85 if (wifi.setTCPServerTimeout(60)) {
86 Serial.print("set tcp server timout 60 seconds\r\n");
87 } else {
88 Serial.print("set tcp server timout err\r\n");
89 }
90
91 Serial.print("setup end\r\n");
92
93#ifdef MULTI_ECHO_SERVER
94 setup_done = true;
95#endif /* MULTI_ECHO_SERVER */
96}
97
98#define MUX_NULL 0xff
99
100uint8_t mux_id_ptn;
101
102uint8_t mux_id = MUX_NULL;
103uint8_t task1_mux_id = MUX_NULL;
104
105void loop()
106{
107 uint8_t buffer[128] = {0};
108 uint8_t pre_mux_id_ptn;
109 uint32_t len;
110 uint32_t i;
111
112 delay(1);
113 /* Check Connection Status */
114 pre_mux_id_ptn = mux_id_ptn;
115
116 if(!wifi.getMuxCStatus(&mux_id_ptn)) {
117 Serial.println("getMuxCStatus(&mux_id_ptn) : Error!");
118 }
119 else {
120 if (pre_mux_id_ptn != mux_id_ptn) {
121 Serial.print("Connection Status changed! : 0x");
122 Serial.println(mux_id_ptn, HEX);
123 if (mux_id_ptn & 0x01) {
124 mux_id = 0;
125 }
126 if (mux_id_ptn & 0x02) {
127 task1_mux_id = 1;
128 }
129 }
130 }
131
132 if (mux_id == MUX_NULL) {
133 return;
134 }
135
136 if (!wifi.isConnected(mux_id)) {
137 Serial.print("Echo Server : Port is closed: ");
138 Serial.println(mux_id);
139 mux_id = MUX_NULL;
140 return;
141 }
142
143 if((len = wifi.recv(mux_id, buffer, sizeof(buffer))) == 0) {
144 return;
145 }
146
147 /* Recived Data */
148
149 for(i = 0; i < len; i++) {
150 /* If Recive Ctrl-q(17) */
151 if(buffer[i] == 17) {
152 Serial.print("Echo Server : Close port : ");
153 Serial.println(mux_id);
154 wifi.releaseTCP(mux_id);
155 mux_id = MUX_NULL;
156 return;
157 }
158 }
159
160 Serial.print("Echo Server : Recive Data from mux : ");
161 Serial.println(mux_id);
162 Serial.print("Echo Server : Recive len : ");
163 Serial.println(len);
164 Serial.print("Echo Server : Recive Data : ");
165 Serial.println((char*)buffer);
166
167 if(!wifi.send(mux_id, buffer, len)) {
168 Serial.println("Echo Server : send(mux_id, cmd) : Error!");
169 }
170}
171
172#ifdef MULTI_ECHO_SERVER
173/*
174 * For TASK1
175 */
176void task1_setup() {
177 while(!setup_done) {
178 delay(1);
179 }
180 Serial.println("Echo Server Task1 : start");
181}
182
183void task1_loop() {
184 uint8_t buffer[128] = {0};
185 uint32_t len;
186 uint32_t i;
187
188 if (task1_mux_id == MUX_NULL) {
189 delay(1);
190 return;
191 }
192
193 if (!wifi.isConnected(task1_mux_id)) {
194 Serial.print("Echo Server Task1 : Port is closed: ");
195 Serial.println(task1_mux_id);
196 task1_mux_id = MUX_NULL;
197 return;
198 }
199 if((len = wifi.recv(task1_mux_id, buffer, sizeof(buffer))) == 0) {
200 return;
201 }
202
203 /* Recived Data */
204
205 for(i = 0; i < len; i++) {
206 /* If Recive Ctrl-q(17) */
207 if(buffer[i] == 17) {
208 Serial.print("Echo Server Task1 : Close port : ");
209 Serial.println(task1_mux_id);
210 wifi.releaseTCP(task1_mux_id);
211 task1_mux_id = MUX_NULL;
212 return;
213 }
214 }
215
216 Serial.print("Echo Server Task1 : Recive Data from mux : ");
217 Serial.println(task1_mux_id);
218 Serial.print("Echo Server Task1 : Recive len : ");
219 Serial.println(len);
220 Serial.print("Echo Server Task1 : Recive Data : ");
221 Serial.println((char*)buffer);
222
223 if(!wifi.send(task1_mux_id, buffer, len)) {
224 Serial.println("Echo Server Task1 : send(task1_mux_id, cmd) : Error!");
225 }
226 delay(1);
227}
228#endif /* MULTI_ECHO_SERVER */
Note: See TracBrowser for help on using the repository browser.