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

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

クライアントの変更に対応

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