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
RevLine 
[146]1#include "rca.h"
[200]2#include "ESP8266.h"
[146]3
[213]4#define STA_SSID ""
5#define STA_PASSWORD ""
[146]6
7#define AP_SSID "M0_AP"
8#define AP_PASSWORD "none"
9
[179]10#define WMODE_STATION
11
[200]12bool setup_done = false;
13
[146]14void setup()
15{
[179]16 int ret;
17
[201]18 Serial.println("Echo Server : Start!");
[146]19
[213]20 ret = WiFi.begin(Serial5, 115200);
[179]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:");
[213]28 Serial.println(WiFi.getVersion().c_str());
[179]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
[146]36 Serial.print("FW Version:");
[213]37 Serial.println(WiFi.getVersion().c_str());
[146]38
[179]39#ifdef WMODE_STATION
[213]40 if (WiFi.setOprToStation()) {
[146]41 Serial.print("to station ok\r\n");
42 } else {
43 Serial.print("to station err\r\n");
44 }
45
[213]46 if (WiFi.joinAP(STA_SSID, STA_PASSWORD)) {
[146]47 Serial.print("Join AP success\r\n");
48 Serial.print("IP: ");
[213]49 Serial.println(WiFi.getLocalIP().c_str());
[146]50 } else {
51 Serial.print("Join AP failure\r\n");
52 }
[179]53#else /* !WMODE_STATION */
[213]54 if (WiFi.setOprToSoftAP()) {
[146]55 Serial.print("to softap ok\r\n");
56 } else {
57 Serial.print("to softap err\r\n");
[179]58 }
[213]59 if(WiFi.setSoftAPParam(AP_SSID, AP_PASSWORD, 7, 0)){
[146]60 Serial.print("Set SoftAP success\r\n");
61 Serial.print("IP: ");
[213]62 Serial.println(WiFi.getLocalIP().c_str());
[146]63 }
64 else {
65 Serial.print("Set SoftAP failure\r\n");
66 }
[179]67#endif /* WMODE_STATION */
68
[213]69 if (WiFi.enableMUX()) {
[146]70 Serial.print("multiple ok\r\n");
71 } else {
72 Serial.print("multiple err\r\n");
73 }
[179]74
[213]75 if (WiFi.startTCPServer(80)) {
[146]76 Serial.print("start tcp server ok\r\n");
77 } else {
78 Serial.print("start tcp server err\r\n");
79 }
80
[213]81 if (WiFi.setTCPServerTimeout(60)) {
[200]82 Serial.print("set tcp server timout 60 seconds\r\n");
[146]83 } else {
84 Serial.print("set tcp server timout err\r\n");
85 }
[179]86
[146]87 Serial.print("setup end\r\n");
[200]88
89 setup_done = true;
[146]90}
91
[200]92#define MUX_NULL 0xff
93
[179]94uint8_t mux_id_ptn;
[146]95
[200]96uint8_t mux_id = MUX_NULL;
97uint8_t task1_mux_id = MUX_NULL;
98
[146]99void loop()
100{
101 uint8_t buffer[128] = {0};
[200]102 uint8_t pre_mux_id_ptn;
103 uint32_t len;
104 uint32_t i;
105
106 delay(1);
107 /* Check Connection Status */
[179]108 pre_mux_id_ptn = mux_id_ptn;
109
[213]110 if(!WiFi.getMuxCStatus(&mux_id_ptn)) {
[200]111 Serial.println("getMuxCStatus(&mux_id_ptn) : Error!");
[179]112 }
[200]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 }
[179]124 }
125
[200]126 if (mux_id == MUX_NULL) {
[146]127 return;
128 }
[200]129
[213]130 if (!WiFi.isConnected(mux_id)) {
[200]131 Serial.print("Echo Server : Port is closed: ");
132 Serial.println(mux_id);
133 mux_id = MUX_NULL;
[179]134 return;
135 }
[200]136
[213]137 if((len = WiFi.recv(mux_id, buffer, sizeof(buffer))) == 0) {
[200]138 return;
139 }
[179]140
[200]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);
[213]148 WiFi.releaseTCP(mux_id);
[200]149 mux_id = MUX_NULL;
150 return;
151 }
152 }
153
154 Serial.print("Echo Server : Recive Data from mux : ");
[179]155 Serial.println(mux_id);
[200]156 Serial.print("Echo Server : Recive len : ");
[179]157 Serial.println(len);
[200]158 Serial.print("Echo Server : Recive Data : ");
159 Serial.println((char*)buffer);
[179]160
[213]161 if(!WiFi.send(mux_id, buffer, len)) {
[200]162 Serial.println("Echo Server : send(mux_id, cmd) : Error!");
[179]163 }
[200]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
[203]182 delay(1);
183
[200]184 if (task1_mux_id == MUX_NULL) {
185 delay(1);
186 return;
187 }
[179]188
[213]189 if (!WiFi.isConnected(task1_mux_id)) {
[200]190 Serial.print("Echo Server Task1 : Port is closed: ");
191 Serial.println(task1_mux_id);
192 task1_mux_id = MUX_NULL;
193 return;
194 }
[213]195 if((len = WiFi.recv(task1_mux_id, buffer, sizeof(buffer))) == 0) {
[200]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);
[213]206 WiFi.releaseTCP(task1_mux_id);
[200]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
[213]219 if(!WiFi.send(task1_mux_id, buffer, len)) {
[200]220 Serial.println("Echo Server Task1 : send(task1_mux_id, cmd) : Error!");
221 }
[146]222}
[200]223#endif /* MULTI_ECHO_SERVER */
Note: See TracBrowser for help on using the repository browser.