source: rtos_arduino/trunk/arduino_lib/libraries/ESP8266/doc/API-html/_e_s_p8266_8cpp_source.html@ 136

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

ライブラリとOS及びベーシックなサンプルの追加.

File size: 110.5 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6<meta name="generator" content="Doxygen 1.8.7"/>
7<title>API: ESP8266.cpp Source File</title>
8<link href="tabs.css" rel="stylesheet" type="text/css"/>
9<script type="text/javascript" src="jquery.js"></script>
10<script type="text/javascript" src="dynsections.js"></script>
11<link href="doxygen.css" rel="stylesheet" type="text/css" />
12</head>
13<body>
14<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
15<div id="titlearea">
16<table cellspacing="0" cellpadding="0">
17 <tbody>
18 <tr style="height: 56px;">
19 <td id="projectlogo"><img alt="Logo" src="ITEAD-logo.JPG"/></td>
20 <td style="padding-left: 0.5em;">
21 <div id="projectname">API
22 </div>
23 <div id="projectbrief">For Arduino developers</div>
24 </td>
25 </tr>
26 </tbody>
27</table>
28</div>
29<!-- end header part -->
30<!-- Generated by Doxygen 1.8.7 -->
31 <div id="navrow1" class="tabs">
32 <ul class="tablist">
33 <li><a href="index.html"><span>Main&#160;Page</span></a></li>
34 <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
35 <li><a href="annotated.html"><span>Classes</span></a></li>
36 <li class="current"><a href="files.html"><span>Files</span></a></li>
37 <li><a href="examples.html"><span>Examples</span></a></li>
38 </ul>
39 </div>
40 <div id="navrow2" class="tabs2">
41 <ul class="tablist">
42 <li><a href="files.html"><span>File&#160;List</span></a></li>
43 </ul>
44 </div>
45</div><!-- top -->
46<div class="header">
47 <div class="headertitle">
48<div class="title">ESP8266.cpp</div> </div>
49</div><!--header-->
50<div class="contents">
51<a href="_e_s_p8266_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
52<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_e_s_p8266_8h.html">ESP8266.h</a>&quot;</span></div>
53<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
54<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#define LOG_OUTPUT_DEBUG (1)</span></div>
55<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#define LOG_OUTPUT_DEBUG_PREFIX (1)</span></div>
56<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
57<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#define logDebug(arg)\</span></div>
58<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"> do {\</span></div>
59<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor"> if (LOG_OUTPUT_DEBUG)\</span></div>
60<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"> {\</span></div>
61<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor"> if (LOG_OUTPUT_DEBUG_PREFIX)\</span></div>
62<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor"> {\</span></div>
63<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor"> Serial.print(&quot;[LOG Debug: &quot;);\</span></div>
64<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor"> Serial.print((const char*)__FILE__);\</span></div>
65<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor"> Serial.print(&quot;,&quot;);\</span></div>
66<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor"> Serial.print((unsigned int)__LINE__);\</span></div>
67<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor"> Serial.print(&quot;,&quot;);\</span></div>
68<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor"> Serial.print((const char*)__FUNCTION__);\</span></div>
69<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor"> Serial.print(&quot;] &quot;);\</span></div>
70<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor"> }\</span></div>
71<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor"> Serial.print(arg);\</span></div>
72<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor"> }\</span></div>
73<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor"> } while(0)</span></div>
74<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
75<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#ifdef ESP8266_USE_SOFTWARE_SERIAL</span></div>
76<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;ESP8266::ESP8266(SoftwareSerial &amp;uart, uint32_t baud): m_puart(&amp;uart)</div>
77<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div>
78<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; m_puart-&gt;begin(baud);</div>
79<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; rx_empty();</div>
80<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div>
81<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#else</span></div>
82<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;ESP8266::ESP8266(HardwareSerial &amp;uart, uint32_t baud): m_puart(&amp;uart)</div>
83<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div>
84<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; m_puart-&gt;begin(baud);</div>
85<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; rx_empty();</div>
86<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;}</div>
87<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#endif</span></div>
88<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
89<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a5ed71947606435c3b03b73efdaf810a5"> 58</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#a5ed71947606435c3b03b73efdaf810a5">ESP8266::kick</a>(<span class="keywordtype">void</span>)</div>
90<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;{</div>
91<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> eAT();</div>
92<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div>
93<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div>
94<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a04b61a01af4ee5e8820c9de79b4b3c39"> 63</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#a04b61a01af4ee5e8820c9de79b4b3c39">ESP8266::restart</a>(<span class="keywordtype">void</span>)</div>
95<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;{</div>
96<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> start;</div>
97<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span> (eATRST()) {</div>
98<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; delay(2000);</div>
99<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; start = millis();</div>
100<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">while</span> (millis() - start &lt; 3000) {</div>
101<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">if</span> (eAT()) {</div>
102<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; delay(1500); <span class="comment">/* Waiting for stable */</span></div>
103<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
104<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div>
105<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; delay(100);</div>
106<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div>
107<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div>
108<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
109<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;}</div>
110<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
111<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a4e2d8a0637b437d4b03209cebfa5b750"> 80</a></span>&#160;String <a class="code" href="class_e_s_p8266.html#a4e2d8a0637b437d4b03209cebfa5b750">ESP8266::getVersion</a>(<span class="keywordtype">void</span>)</div>
112<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;{</div>
113<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; String version;</div>
114<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; eATGMR(version);</div>
115<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> version;</div>
116<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;}</div>
117<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
118<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a572c6f855d70078fdbff9ac2c4b1ce99"> 87</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#a572c6f855d70078fdbff9ac2c4b1ce99">ESP8266::setOprToStation</a>(<span class="keywordtype">void</span>)</div>
119<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div>
120<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; uint8_t mode;</div>
121<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">if</span> (!qATCWMODE(&amp;mode)) {</div>
122<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
123<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div>
124<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span> (mode == 1) {</div>
125<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
126<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; } <span class="keywordflow">else</span> {</div>
127<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">if</span> (sATCWMODE(1) &amp;&amp; <a class="code" href="class_e_s_p8266.html#a04b61a01af4ee5e8820c9de79b4b3c39">restart</a>()) {</div>
128<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
129<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; } <span class="keywordflow">else</span> {</div>
130<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
131<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div>
132<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div>
133<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div>
134<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div>
135<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a247706884d60e85c8983bb65de26d346"> 104</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#a247706884d60e85c8983bb65de26d346">ESP8266::setOprToSoftAP</a>(<span class="keywordtype">void</span>)</div>
136<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;{</div>
137<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; uint8_t mode;</div>
138<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span> (!qATCWMODE(&amp;mode)) {</div>
139<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
140<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div>
141<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">if</span> (mode == 2) {</div>
142<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
143<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; } <span class="keywordflow">else</span> {</div>
144<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">if</span> (sATCWMODE(2) &amp;&amp; <a class="code" href="class_e_s_p8266.html#a04b61a01af4ee5e8820c9de79b4b3c39">restart</a>()) {</div>
145<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
146<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; } <span class="keywordflow">else</span> {</div>
147<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
148<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div>
149<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div>
150<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;}</div>
151<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div>
152<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#ac179183a46b218609a481747bcfd5a61"> 121</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#ac179183a46b218609a481747bcfd5a61">ESP8266::setOprToStationSoftAP</a>(<span class="keywordtype">void</span>)</div>
153<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;{</div>
154<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; uint8_t mode;</div>
155<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">if</span> (!qATCWMODE(&amp;mode)) {</div>
156<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
157<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div>
158<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (mode == 3) {</div>
159<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
160<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; } <span class="keywordflow">else</span> {</div>
161<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">if</span> (sATCWMODE(3) &amp;&amp; <a class="code" href="class_e_s_p8266.html#a04b61a01af4ee5e8820c9de79b4b3c39">restart</a>()) {</div>
162<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
163<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; } <span class="keywordflow">else</span> {</div>
164<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
165<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div>
166<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div>
167<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;}</div>
168<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div>
169<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#af0cafe8a994349e81e75a35af9645a76"> 138</a></span>&#160;String <a class="code" href="class_e_s_p8266.html#af0cafe8a994349e81e75a35af9645a76">ESP8266::getAPList</a>(<span class="keywordtype">void</span>)</div>
170<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;{</div>
171<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; String list;</div>
172<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; eATCWLAP(list);</div>
173<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">return</span> list;</div>
174<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;}</div>
175<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div>
176<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a300535b4b5f001b74058ebcc694a749f"> 145</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#a300535b4b5f001b74058ebcc694a749f">ESP8266::joinAP</a>(String ssid, String pwd)</div>
177<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;{</div>
178<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">return</span> sATCWJAP(ssid, pwd);</div>
179<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;}</div>
180<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div>
181<div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#aeda29748e0d28efa9d82c9c7fab1859b"> 150</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#aeda29748e0d28efa9d82c9c7fab1859b">ESP8266::leaveAP</a>(<span class="keywordtype">void</span>)</div>
182<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;{</div>
183<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> eATCWQAP();</div>
184<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div>
185<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div>
186<div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#aacce786dc0ef289cd37a48642d2efef1"> 155</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#aacce786dc0ef289cd37a48642d2efef1">ESP8266::setSoftAPParam</a>(String ssid, String pwd, uint8_t chl, uint8_t ecn)</div>
187<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;{</div>
188<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> sATCWSAP(ssid, pwd, chl, ecn);</div>
189<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;}</div>
190<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
191<div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a10c82a5196a8f349720a9c9ba7209a6e"> 160</a></span>&#160;String <a class="code" href="class_e_s_p8266.html#a10c82a5196a8f349720a9c9ba7209a6e">ESP8266::getJoinedDeviceIP</a>(<span class="keywordtype">void</span>)</div>
192<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;{</div>
193<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; String list;</div>
194<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; eATCWLIF(list);</div>
195<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">return</span> list;</div>
196<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;}</div>
197<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div>
198<div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#ad273286fbb8627a612249a232d53ca22"> 167</a></span>&#160;String <a class="code" href="class_e_s_p8266.html#ad273286fbb8627a612249a232d53ca22">ESP8266::getIPStatus</a>(<span class="keywordtype">void</span>)</div>
199<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;{</div>
200<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; String list;</div>
201<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; eATCIPSTATUS(list);</div>
202<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> list;</div>
203<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;}</div>
204<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div>
205<div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a20819d4dabf19fed6e3dcb3fd04ee49d"> 174</a></span>&#160;String <a class="code" href="class_e_s_p8266.html#a20819d4dabf19fed6e3dcb3fd04ee49d">ESP8266::getLocalIP</a>(<span class="keywordtype">void</span>)</div>
206<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;{</div>
207<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; String list;</div>
208<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; eATCIFSR(list);</div>
209<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> list;</div>
210<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;}</div>
211<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div>
212<div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a16963a076b80906563d2269c0cd52007"> 181</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#a16963a076b80906563d2269c0cd52007">ESP8266::enableMUX</a>(<span class="keywordtype">void</span>)</div>
213<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;{</div>
214<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> sATCIPMUX(1);</div>
215<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;}</div>
216<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div>
217<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a2bc64145329ea45018e956b97ced030a"> 186</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#a2bc64145329ea45018e956b97ced030a">ESP8266::disableMUX</a>(<span class="keywordtype">void</span>)</div>
218<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;{</div>
219<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">return</span> sATCIPMUX(0);</div>
220<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;}</div>
221<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div>
222<div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#aa927b7b8aaef163011015c22da1f07e2"> 191</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#aa927b7b8aaef163011015c22da1f07e2">ESP8266::createTCP</a>(String addr, uint32_t port)</div>
223<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;{</div>
224<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> sATCIPSTARTSingle(<span class="stringliteral">&quot;TCP&quot;</span>, addr, port);</div>
225<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;}</div>
226<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div>
227<div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#ac15ce9df69dc566c37b3fa2c3c869337"> 196</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#ac15ce9df69dc566c37b3fa2c3c869337">ESP8266::releaseTCP</a>(<span class="keywordtype">void</span>)</div>
228<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;{</div>
229<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> eATCIPCLOSESingle();</div>
230<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;}</div>
231<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div>
232<div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#af8d3305a28d862c0cf353d0d758b96d4"> 201</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#af8d3305a28d862c0cf353d0d758b96d4">ESP8266::registerUDP</a>(String addr, uint32_t port)</div>
233<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;{</div>
234<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> sATCIPSTARTSingle(<span class="stringliteral">&quot;UDP&quot;</span>, addr, port);</div>
235<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;}</div>
236<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div>
237<div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#aa355332a78aa5f2b58cb11b0daa05cf5"> 206</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#aa355332a78aa5f2b58cb11b0daa05cf5">ESP8266::unregisterUDP</a>(<span class="keywordtype">void</span>)</div>
238<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;{</div>
239<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> eATCIPCLOSESingle();</div>
240<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;}</div>
241<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div>
242<div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a73d18b488d7f426a62e62b947f297b0d"> 211</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#aa927b7b8aaef163011015c22da1f07e2">ESP8266::createTCP</a>(uint8_t mux_id, String addr, uint32_t port)</div>
243<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;{</div>
244<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> sATCIPSTARTMultiple(mux_id, <span class="stringliteral">&quot;TCP&quot;</span>, addr, port);</div>
245<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;}</div>
246<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div>
247<div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a96fd1a01f8f52dd80ae7f7a267005300"> 216</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#ac15ce9df69dc566c37b3fa2c3c869337">ESP8266::releaseTCP</a>(uint8_t mux_id)</div>
248<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;{</div>
249<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> sATCIPCLOSEMulitple(mux_id);</div>
250<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;}</div>
251<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div>
252<div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#af70a0a7c963c6411948622d802b31b2d"> 221</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#af8d3305a28d862c0cf353d0d758b96d4">ESP8266::registerUDP</a>(uint8_t mux_id, String addr, uint32_t port)</div>
253<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;{</div>
254<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> sATCIPSTARTMultiple(mux_id, <span class="stringliteral">&quot;UDP&quot;</span>, addr, port);</div>
255<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;}</div>
256<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div>
257<div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a0a48619ad157fd2bd9c7f2e9c151f9b3"> 226</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#aa355332a78aa5f2b58cb11b0daa05cf5">ESP8266::unregisterUDP</a>(uint8_t mux_id)</div>
258<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;{</div>
259<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> sATCIPCLOSEMulitple(mux_id);</div>
260<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;}</div>
261<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div>
262<div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a71f76c76d23fc66c26f1c7b357f58ac2"> 231</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#a71f76c76d23fc66c26f1c7b357f58ac2">ESP8266::setTCPServerTimeout</a>(uint32_t timeout)</div>
263<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;{</div>
264<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">return</span> sATCIPSTO(timeout);</div>
265<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;}</div>
266<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div>
267<div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a22a7768a76709c8d8f0b9809158b7ec9"> 236</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#a22a7768a76709c8d8f0b9809158b7ec9">ESP8266::startTCPServer</a>(uint32_t port)</div>
268<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;{</div>
269<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span> (sATCIPSERVER(1, port)) {</div>
270<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
271<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div>
272<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
273<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;}</div>
274<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div>
275<div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#aa5355dce05aa59b92ce9f7ea76d86eef"> 244</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#aa5355dce05aa59b92ce9f7ea76d86eef">ESP8266::stopTCPServer</a>(<span class="keywordtype">void</span>)</div>
276<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;{</div>
277<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; sATCIPSERVER(0);</div>
278<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="class_e_s_p8266.html#a04b61a01af4ee5e8820c9de79b4b3c39">restart</a>();</div>
279<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
280<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;}</div>
281<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div>
282<div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a88d9a6b130b6c278fd6cd2e6cda816d7"> 251</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#a88d9a6b130b6c278fd6cd2e6cda816d7">ESP8266::startServer</a>(uint32_t port)</div>
283<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;{</div>
284<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> <a class="code" href="class_e_s_p8266.html#a22a7768a76709c8d8f0b9809158b7ec9">startTCPServer</a>(port);</div>
285<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;}</div>
286<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div>
287<div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#af272f2f57b7b99434e257f06c276acfc"> 256</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#af272f2f57b7b99434e257f06c276acfc">ESP8266::stopServer</a>(<span class="keywordtype">void</span>)</div>
288<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;{</div>
289<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">return</span> <a class="code" href="class_e_s_p8266.html#aa5355dce05aa59b92ce9f7ea76d86eef">stopTCPServer</a>();</div>
290<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;}</div>
291<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div>
292<div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a6ba21b921a7afc79a36d0e41c20d59bc"> 261</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#a6ba21b921a7afc79a36d0e41c20d59bc">ESP8266::send</a>(<span class="keyword">const</span> uint8_t *buffer, uint32_t len)</div>
293<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;{</div>
294<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">return</span> sATCIPSENDSingle(buffer, len);</div>
295<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;}</div>
296<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div>
297<div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#afb7d7b4e281d4c4699a33e1d086e6d54"> 266</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_e_s_p8266.html#a6ba21b921a7afc79a36d0e41c20d59bc">ESP8266::send</a>(uint8_t mux_id, <span class="keyword">const</span> uint8_t *buffer, uint32_t len)</div>
298<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;{</div>
299<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> sATCIPSENDMultiple(mux_id, buffer, len);</div>
300<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;}</div>
301<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div>
302<div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#af8ce40bd14556bcfb5d4c521047fc821"> 271</a></span>&#160;uint32_t <a class="code" href="class_e_s_p8266.html#af8ce40bd14556bcfb5d4c521047fc821">ESP8266::recv</a>(uint8_t *buffer, uint32_t buffer_size, uint32_t timeout)</div>
303<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;{</div>
304<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">return</span> recvPkg(buffer, buffer_size, NULL, timeout, NULL);</div>
305<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;}</div>
306<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div>
307<div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a0d6429057e090be1a6f4da91eff92d82"> 276</a></span>&#160;uint32_t <a class="code" href="class_e_s_p8266.html#af8ce40bd14556bcfb5d4c521047fc821">ESP8266::recv</a>(uint8_t mux_id, uint8_t *buffer, uint32_t buffer_size, uint32_t timeout)</div>
308<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;{</div>
309<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; uint8_t id;</div>
310<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; uint32_t ret;</div>
311<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; ret = recvPkg(buffer, buffer_size, NULL, timeout, &amp;<span class="keywordtype">id</span>);</div>
312<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">if</span> (ret &gt; 0 &amp;&amp; <span class="keywordtype">id</span> == mux_id) {</div>
313<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> ret;</div>
314<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div>
315<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> 0;</div>
316<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;}</div>
317<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div>
318<div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="class_e_s_p8266.html#a7d68591021e6ddc6919cb5865827856f"> 287</a></span>&#160;uint32_t <a class="code" href="class_e_s_p8266.html#af8ce40bd14556bcfb5d4c521047fc821">ESP8266::recv</a>(uint8_t *coming_mux_id, uint8_t *buffer, uint32_t buffer_size, uint32_t timeout)</div>
319<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;{</div>
320<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span> recvPkg(buffer, buffer_size, NULL, timeout, coming_mux_id);</div>
321<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;}</div>
322<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div>
323<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="comment">/*----------------------------------------------------------------------------*/</span></div>
324<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div>
325<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;uint32_t ESP8266::recvPkg(uint8_t *buffer, uint32_t buffer_size, uint32_t *data_len, uint32_t timeout, uint8_t *coming_mux_id)</div>
326<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;{</div>
327<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; String data;</div>
328<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordtype">char</span> a;</div>
329<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; int32_t index_PIPDcomma = -1;</div>
330<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; int32_t index_colon = -1; <span class="comment">/* : */</span></div>
331<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; int32_t index_comma = -1; <span class="comment">/* , */</span></div>
332<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; int32_t len = -1;</div>
333<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; int8_t <span class="keywordtype">id</span> = -1;</div>
334<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordtype">bool</span> has_data = <span class="keyword">false</span>;</div>
335<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="comment">//logDebug(&quot;start recv pkg&quot;);</span></div>
336<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; </div>
337<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> start = millis();</div>
338<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">while</span> (millis() - start &lt; timeout) {</div>
339<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">while</span>(m_puart-&gt;available() &gt; 0) {</div>
340<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; a = m_puart-&gt;read();</div>
341<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; data += a;</div>
342<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div>
343<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; </div>
344<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; index_PIPDcomma = data.indexOf(<span class="stringliteral">&quot;+IPD,&quot;</span>);</div>
345<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">if</span> (index_PIPDcomma != -1) {</div>
346<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="comment">//logDebug(&quot;index_PIPDcomma found = %d&quot;, index_PIPDcomma);</span></div>
347<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; index_colon = data.indexOf(<span class="charliteral">&#39;:&#39;</span>, index_PIPDcomma + 5);</div>
348<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">if</span> (index_colon != -1) {</div>
349<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="comment">//logDebug(&quot;data1 = %s\r\n&quot;, data.c_str());</span></div>
350<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="comment">//logDebug(&quot;index_colon found = %d&quot;, index_colon);</span></div>
351<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; </div>
352<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; index_comma = data.indexOf(<span class="charliteral">&#39;,&#39;</span>, index_PIPDcomma + 5);</div>
353<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="comment">//logDebug(&quot;index_comma found = %d&quot;, index_comma);</span></div>
354<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; </div>
355<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">if</span> (index_comma != -1 &amp;&amp; index_comma &lt; index_colon) { <span class="comment">/* +IPD,id,len:data */</span></div>
356<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="comment">//logDebug(&quot;id = %d&quot;, id);</span></div>
357<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordtype">id</span> = data.substring(index_PIPDcomma + 5, index_comma).toInt();</div>
358<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="comment">//logDebug(&quot;id = %d&quot;, id);</span></div>
359<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">if</span> (id &lt; 0 || id &gt; 4) {</div>
360<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> 0;</div>
361<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div>
362<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="comment">//logDebug(&quot;len = %d&quot;, len);</span></div>
363<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; len = data.substring(index_comma + 1, index_colon).toInt();</div>
364<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="comment">//logDebug(&quot;len = %d&quot;, len);</span></div>
365<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span> (len &lt;= 0) {</div>
366<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span> 0;</div>
367<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div>
368<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="comment">//logDebug(&quot;has id&quot;);</span></div>
369<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; } <span class="keywordflow">else</span> { <span class="comment">/* +IPD,len:data */</span></div>
370<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; len = data.substring(index_PIPDcomma + 5, index_colon).toInt();</div>
371<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="comment">//logDebug(&quot;len = %d&quot;, len);</span></div>
372<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">if</span> (len &lt;= 0) {</div>
373<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> 0;</div>
374<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div>
375<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="comment">//logDebug(&quot;no id&quot;);</span></div>
376<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div>
377<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; has_data = <span class="keyword">true</span>;</div>
378<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="comment">//logDebug(&quot;has_data true&quot;);</span></div>
379<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">break</span>;</div>
380<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div>
381<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div>
382<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div>
383<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="comment">//logDebug(&quot;has_data = %u\r\n&quot;, has_data);</span></div>
384<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="comment">//logDebug(&quot;data2 = %s\r\n&quot;, data.c_str());</span></div>
385<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; </div>
386<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">if</span> (has_data) {</div>
387<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; start = millis();</div>
388<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">while</span> (millis() - start &lt; 3000) {</div>
389<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">while</span>(m_puart-&gt;available() &gt; 0) {</div>
390<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; a = m_puart-&gt;read();</div>
391<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; data += a;</div>
392<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div>
393<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="comment">//logDebug(&quot;data3 = %s\r\n&quot;, data.c_str());</span></div>
394<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">if</span> (data.length() &gt;= index_colon + 1 + len) {</div>
395<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">if</span> (data_len) {</div>
396<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; *data_len = len; </div>
397<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div>
398<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">if</span> (index_comma != -1 &amp;&amp; coming_mux_id) {</div>
399<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; *coming_mux_id = id;</div>
400<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div>
401<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="comment">//logDebug(&quot;len = %d&quot;, len);</span></div>
402<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="comment">//logDebug(&quot;buffer_size = %d&quot;, buffer_size);</span></div>
403<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; uint32_t ret = len &gt; buffer_size ? buffer_size : len;</div>
404<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; </div>
405<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; memcpy(buffer, </div>
406<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; data.substring(index_colon + 1, index_colon + 1 + len).c_str(), </div>
407<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; ret);</div>
408<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="comment">//logDebug(&quot;ret = %u\r\n&quot;, ret);</span></div>
409<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">return</span> ret;</div>
410<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div>
411<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div>
412<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div>
413<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="comment">//logDebug(&quot;end recv pkg&quot;);</span></div>
414<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">return</span> 0;</div>
415<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;}</div>
416<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div>
417<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="keywordtype">void</span> ESP8266::rx_empty(<span class="keywordtype">void</span>) </div>
418<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;{</div>
419<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">while</span>(m_puart-&gt;available() &gt; 0) {</div>
420<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; m_puart-&gt;read();</div>
421<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div>
422<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;}</div>
423<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div>
424<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;String ESP8266::recvString(String target, uint32_t timeout)</div>
425<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;{</div>
426<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; String data;</div>
427<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordtype">char</span> a;</div>
428<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> start = millis();</div>
429<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">while</span> (millis() - start &lt; timeout) {</div>
430<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">while</span>(m_puart-&gt;available() &gt; 0) {</div>
431<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; a = m_puart-&gt;read();</div>
432<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">if</span>(a == <span class="charliteral">&#39;\0&#39;</span>) <span class="keywordflow">continue</span>;</div>
433<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; data += a;</div>
434<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div>
435<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">if</span> (data.indexOf(target) != -1) {</div>
436<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">break</span>;</div>
437<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; } </div>
438<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div>
439<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">return</span> data;</div>
440<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;}</div>
441<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;</div>
442<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;String ESP8266::recvString(String target1, String target2, uint32_t timeout)</div>
443<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;{</div>
444<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; String data;</div>
445<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordtype">char</span> a;</div>
446<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> start = millis();</div>
447<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">while</span> (millis() - start &lt; timeout) {</div>
448<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">while</span>(m_puart-&gt;available() &gt; 0) {</div>
449<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; a = m_puart-&gt;read();</div>
450<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">if</span>(a == <span class="charliteral">&#39;\0&#39;</span>) <span class="keywordflow">continue</span>;</div>
451<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; data += a;</div>
452<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div>
453<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span> (data.indexOf(target1) != -1) {</div>
454<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">break</span>;</div>
455<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (data.indexOf(target2) != -1) {</div>
456<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">break</span>;</div>
457<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div>
458<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div>
459<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">return</span> data;</div>
460<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;}</div>
461<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div>
462<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;String ESP8266::recvString(String target1, String target2, String target3, uint32_t timeout)</div>
463<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;{</div>
464<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; String data;</div>
465<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordtype">char</span> a;</div>
466<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> start = millis();</div>
467<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">while</span> (millis() - start &lt; timeout) {</div>
468<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">while</span>(m_puart-&gt;available() &gt; 0) {</div>
469<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; a = m_puart-&gt;read();</div>
470<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">if</span>(a == <span class="charliteral">&#39;\0&#39;</span>) <span class="keywordflow">continue</span>;</div>
471<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; data += a;</div>
472<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div>
473<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">if</span> (data.indexOf(target1) != -1) {</div>
474<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">break</span>;</div>
475<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (data.indexOf(target2) != -1) {</div>
476<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">break</span>;</div>
477<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (data.indexOf(target3) != -1) {</div>
478<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">break</span>;</div>
479<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; }</div>
480<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; }</div>
481<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">return</span> data;</div>
482<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;}</div>
483<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;</div>
484<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="keywordtype">bool</span> ESP8266::recvFind(String target, uint32_t timeout)</div>
485<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;{</div>
486<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; String data_tmp;</div>
487<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; data_tmp = recvString(target, timeout);</div>
488<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">if</span> (data_tmp.indexOf(target) != -1) {</div>
489<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
490<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div>
491<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
492<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;}</div>
493<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;</div>
494<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="keywordtype">bool</span> ESP8266::recvFindAndFilter(String target, String begin, String end, String &amp;data, uint32_t timeout)</div>
495<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;{</div>
496<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; String data_tmp;</div>
497<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; data_tmp = recvString(target, timeout);</div>
498<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">if</span> (data_tmp.indexOf(target) != -1) {</div>
499<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; int32_t index1 = data_tmp.indexOf(begin);</div>
500<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; int32_t index2 = data_tmp.indexOf(end);</div>
501<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">if</span> (index1 != -1 &amp;&amp; index2 != -1) {</div>
502<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; index1 += begin.length();</div>
503<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; data = data_tmp.substring(index1, index2);</div>
504<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
505<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; }</div>
506<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; }</div>
507<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; data = <span class="stringliteral">&quot;&quot;</span>;</div>
508<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
509<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;}</div>
510<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div>
511<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="keywordtype">bool</span> ESP8266::eAT(<span class="keywordtype">void</span>)</div>
512<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;{</div>
513<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; rx_empty();</div>
514<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; m_puart-&gt;println(<span class="stringliteral">&quot;AT&quot;</span>);</div>
515<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">return</span> recvFind(<span class="stringliteral">&quot;OK&quot;</span>);</div>
516<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;}</div>
517<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;</div>
518<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="keywordtype">bool</span> ESP8266::eATRST(<span class="keywordtype">void</span>) </div>
519<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;{</div>
520<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; rx_empty();</div>
521<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; m_puart-&gt;println(<span class="stringliteral">&quot;AT+RST&quot;</span>);</div>
522<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">return</span> recvFind(<span class="stringliteral">&quot;OK&quot;</span>);</div>
523<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;}</div>
524<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;</div>
525<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="keywordtype">bool</span> ESP8266::eATGMR(String &amp;version)</div>
526<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;{</div>
527<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; rx_empty();</div>
528<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; m_puart-&gt;println(<span class="stringliteral">&quot;AT+GMR&quot;</span>);</div>
529<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">return</span> recvFindAndFilter(<span class="stringliteral">&quot;OK&quot;</span>, <span class="stringliteral">&quot;\r\r\n&quot;</span>, <span class="stringliteral">&quot;\r\n\r\nOK&quot;</span>, version); </div>
530<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;}</div>
531<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div>
532<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="keywordtype">bool</span> ESP8266::qATCWMODE(uint8_t *mode) </div>
533<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;{</div>
534<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; String str_mode;</div>
535<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordtype">bool</span> ret;</div>
536<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span> (!mode) {</div>
537<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
538<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div>
539<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; rx_empty();</div>
540<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; m_puart-&gt;println(<span class="stringliteral">&quot;AT+CWMODE?&quot;</span>);</div>
541<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; ret = recvFindAndFilter(<span class="stringliteral">&quot;OK&quot;</span>, <span class="stringliteral">&quot;+CWMODE:&quot;</span>, <span class="stringliteral">&quot;\r\n\r\nOK&quot;</span>, str_mode); </div>
542<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">if</span> (ret) {</div>
543<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; *mode = (uint8_t)str_mode.toInt();</div>
544<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
545<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; } <span class="keywordflow">else</span> {</div>
546<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
547<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div>
548<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;}</div>
549<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;</div>
550<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="keywordtype">bool</span> ESP8266::sATCWMODE(uint8_t mode)</div>
551<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;{</div>
552<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; String data;</div>
553<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; rx_empty();</div>
554<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;AT+CWMODE=&quot;</span>);</div>
555<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; m_puart-&gt;println(mode);</div>
556<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; </div>
557<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; data = recvString(<span class="stringliteral">&quot;OK&quot;</span>, <span class="stringliteral">&quot;no change&quot;</span>);</div>
558<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">if</span> (data.indexOf(<span class="stringliteral">&quot;OK&quot;</span>) != -1 || data.indexOf(<span class="stringliteral">&quot;no change&quot;</span>) != -1) {</div>
559<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
560<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div>
561<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
562<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;}</div>
563<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;</div>
564<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="keywordtype">bool</span> ESP8266::sATCWJAP(String ssid, String pwd)</div>
565<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;{</div>
566<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; String data;</div>
567<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; rx_empty();</div>
568<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;AT+CWJAP=\&quot;&quot;</span>);</div>
569<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; m_puart-&gt;print(ssid);</div>
570<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;\&quot;,\&quot;&quot;</span>);</div>
571<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; m_puart-&gt;print(pwd);</div>
572<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; m_puart-&gt;println(<span class="stringliteral">&quot;\&quot;&quot;</span>);</div>
573<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; </div>
574<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; data = recvString(<span class="stringliteral">&quot;OK&quot;</span>, <span class="stringliteral">&quot;FAIL&quot;</span>, 10000);</div>
575<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">if</span> (data.indexOf(<span class="stringliteral">&quot;OK&quot;</span>) != -1) {</div>
576<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
577<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div>
578<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
579<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;}</div>
580<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;</div>
581<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="keywordtype">bool</span> ESP8266::eATCWLAP(String &amp;list)</div>
582<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;{</div>
583<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; String data;</div>
584<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; rx_empty();</div>
585<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; m_puart-&gt;println(<span class="stringliteral">&quot;AT+CWLAP&quot;</span>);</div>
586<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">return</span> recvFindAndFilter(<span class="stringliteral">&quot;OK&quot;</span>, <span class="stringliteral">&quot;\r\r\n&quot;</span>, <span class="stringliteral">&quot;\r\n\r\nOK&quot;</span>, list, 10000);</div>
587<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;}</div>
588<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;</div>
589<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;<span class="keywordtype">bool</span> ESP8266::eATCWQAP(<span class="keywordtype">void</span>)</div>
590<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;{</div>
591<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; String data;</div>
592<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; rx_empty();</div>
593<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; m_puart-&gt;println(<span class="stringliteral">&quot;AT+CWQAP&quot;</span>);</div>
594<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">return</span> recvFind(<span class="stringliteral">&quot;OK&quot;</span>);</div>
595<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;}</div>
596<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;</div>
597<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;<span class="keywordtype">bool</span> ESP8266::sATCWSAP(String ssid, String pwd, uint8_t chl, uint8_t ecn)</div>
598<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;{</div>
599<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; String data;</div>
600<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; rx_empty();</div>
601<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;AT+CWSAP=\&quot;&quot;</span>);</div>
602<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; m_puart-&gt;print(ssid);</div>
603<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;\&quot;,\&quot;&quot;</span>);</div>
604<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; m_puart-&gt;print(pwd);</div>
605<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;\&quot;,&quot;</span>);</div>
606<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; m_puart-&gt;print(chl);</div>
607<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;,&quot;</span>);</div>
608<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; m_puart-&gt;println(ecn);</div>
609<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; </div>
610<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; data = recvString(<span class="stringliteral">&quot;OK&quot;</span>, <span class="stringliteral">&quot;ERROR&quot;</span>, 5000);</div>
611<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">if</span> (data.indexOf(<span class="stringliteral">&quot;OK&quot;</span>) != -1) {</div>
612<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
613<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; }</div>
614<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
615<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;}</div>
616<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;</div>
617<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;<span class="keywordtype">bool</span> ESP8266::eATCWLIF(String &amp;list)</div>
618<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;{</div>
619<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; String data;</div>
620<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; rx_empty();</div>
621<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; m_puart-&gt;println(<span class="stringliteral">&quot;AT+CWLIF&quot;</span>);</div>
622<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">return</span> recvFindAndFilter(<span class="stringliteral">&quot;OK&quot;</span>, <span class="stringliteral">&quot;\r\r\n&quot;</span>, <span class="stringliteral">&quot;\r\n\r\nOK&quot;</span>, list);</div>
623<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;}</div>
624<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;<span class="keywordtype">bool</span> ESP8266::eATCIPSTATUS(String &amp;list)</div>
625<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;{</div>
626<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; String data;</div>
627<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; delay(100);</div>
628<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; rx_empty();</div>
629<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; m_puart-&gt;println(<span class="stringliteral">&quot;AT+CIPSTATUS&quot;</span>);</div>
630<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">return</span> recvFindAndFilter(<span class="stringliteral">&quot;OK&quot;</span>, <span class="stringliteral">&quot;\r\r\n&quot;</span>, <span class="stringliteral">&quot;\r\n\r\nOK&quot;</span>, list);</div>
631<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;}</div>
632<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="keywordtype">bool</span> ESP8266::sATCIPSTARTSingle(String type, String addr, uint32_t port)</div>
633<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;{</div>
634<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; String data;</div>
635<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; rx_empty();</div>
636<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;AT+CIPSTART=\&quot;&quot;</span>);</div>
637<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; m_puart-&gt;print(type);</div>
638<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;\&quot;,\&quot;&quot;</span>);</div>
639<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; m_puart-&gt;print(addr);</div>
640<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;\&quot;,&quot;</span>);</div>
641<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; m_puart-&gt;println(port);</div>
642<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; </div>
643<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; data = recvString(<span class="stringliteral">&quot;OK&quot;</span>, <span class="stringliteral">&quot;ERROR&quot;</span>, <span class="stringliteral">&quot;ALREADY CONNECT&quot;</span>, 10000);</div>
644<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">if</span> (data.indexOf(<span class="stringliteral">&quot;OK&quot;</span>) != -1 || data.indexOf(<span class="stringliteral">&quot;ALREADY CONNECT&quot;</span>) != -1) {</div>
645<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
646<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; }</div>
647<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
648<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;}</div>
649<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;<span class="keywordtype">bool</span> ESP8266::sATCIPSTARTMultiple(uint8_t mux_id, String type, String addr, uint32_t port)</div>
650<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;{</div>
651<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; String data;</div>
652<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; rx_empty();</div>
653<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;AT+CIPSTART=&quot;</span>);</div>
654<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; m_puart-&gt;print(mux_id);</div>
655<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;,\&quot;&quot;</span>);</div>
656<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; m_puart-&gt;print(type);</div>
657<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;\&quot;,\&quot;&quot;</span>);</div>
658<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; m_puart-&gt;print(addr);</div>
659<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;\&quot;,&quot;</span>);</div>
660<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; m_puart-&gt;println(port);</div>
661<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; </div>
662<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; data = recvString(<span class="stringliteral">&quot;OK&quot;</span>, <span class="stringliteral">&quot;ERROR&quot;</span>, <span class="stringliteral">&quot;ALREADY CONNECT&quot;</span>, 10000);</div>
663<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">if</span> (data.indexOf(<span class="stringliteral">&quot;OK&quot;</span>) != -1 || data.indexOf(<span class="stringliteral">&quot;ALREADY CONNECT&quot;</span>) != -1) {</div>
664<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
665<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; }</div>
666<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
667<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;}</div>
668<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;<span class="keywordtype">bool</span> ESP8266::sATCIPSENDSingle(<span class="keyword">const</span> uint8_t *buffer, uint32_t len)</div>
669<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;{</div>
670<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; rx_empty();</div>
671<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;AT+CIPSEND=&quot;</span>);</div>
672<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; m_puart-&gt;println(len);</div>
673<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">if</span> (recvFind(<span class="stringliteral">&quot;&gt;&quot;</span>, 5000)) {</div>
674<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; rx_empty();</div>
675<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">for</span> (uint32_t i = 0; i &lt; len; i++) {</div>
676<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; m_puart-&gt;write(buffer[i]);</div>
677<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; }</div>
678<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">return</span> recvFind(<span class="stringliteral">&quot;SEND OK&quot;</span>, 10000);</div>
679<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div>
680<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
681<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;}</div>
682<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;<span class="keywordtype">bool</span> ESP8266::sATCIPSENDMultiple(uint8_t mux_id, <span class="keyword">const</span> uint8_t *buffer, uint32_t len)</div>
683<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;{</div>
684<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; rx_empty();</div>
685<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;AT+CIPSEND=&quot;</span>);</div>
686<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; m_puart-&gt;print(mux_id);</div>
687<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;,&quot;</span>);</div>
688<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; m_puart-&gt;println(len);</div>
689<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">if</span> (recvFind(<span class="stringliteral">&quot;&gt;&quot;</span>, 5000)) {</div>
690<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; rx_empty();</div>
691<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">for</span> (uint32_t i = 0; i &lt; len; i++) {</div>
692<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; m_puart-&gt;write(buffer[i]);</div>
693<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; }</div>
694<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">return</span> recvFind(<span class="stringliteral">&quot;SEND OK&quot;</span>, 10000);</div>
695<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; }</div>
696<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
697<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;}</div>
698<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;<span class="keywordtype">bool</span> ESP8266::sATCIPCLOSEMulitple(uint8_t mux_id)</div>
699<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;{</div>
700<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; String data;</div>
701<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; rx_empty();</div>
702<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;AT+CIPCLOSE=&quot;</span>);</div>
703<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; m_puart-&gt;println(mux_id);</div>
704<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; </div>
705<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; data = recvString(<span class="stringliteral">&quot;OK&quot;</span>, <span class="stringliteral">&quot;link is not&quot;</span>, 5000);</div>
706<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">if</span> (data.indexOf(<span class="stringliteral">&quot;OK&quot;</span>) != -1 || data.indexOf(<span class="stringliteral">&quot;link is not&quot;</span>) != -1) {</div>
707<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
708<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; }</div>
709<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
710<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;}</div>
711<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;<span class="keywordtype">bool</span> ESP8266::eATCIPCLOSESingle(<span class="keywordtype">void</span>)</div>
712<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;{</div>
713<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; rx_empty();</div>
714<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; m_puart-&gt;println(<span class="stringliteral">&quot;AT+CIPCLOSE&quot;</span>);</div>
715<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">return</span> recvFind(<span class="stringliteral">&quot;OK&quot;</span>, 5000);</div>
716<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;}</div>
717<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="keywordtype">bool</span> ESP8266::eATCIFSR(String &amp;list)</div>
718<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;{</div>
719<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; rx_empty();</div>
720<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; m_puart-&gt;println(<span class="stringliteral">&quot;AT+CIFSR&quot;</span>);</div>
721<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">return</span> recvFindAndFilter(<span class="stringliteral">&quot;OK&quot;</span>, <span class="stringliteral">&quot;\r\r\n&quot;</span>, <span class="stringliteral">&quot;\r\n\r\nOK&quot;</span>, list);</div>
722<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;}</div>
723<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;<span class="keywordtype">bool</span> ESP8266::sATCIPMUX(uint8_t mode)</div>
724<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;{</div>
725<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; String data;</div>
726<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; rx_empty();</div>
727<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;AT+CIPMUX=&quot;</span>);</div>
728<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; m_puart-&gt;println(mode);</div>
729<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; </div>
730<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; data = recvString(<span class="stringliteral">&quot;OK&quot;</span>, <span class="stringliteral">&quot;Link is builded&quot;</span>);</div>
731<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">if</span> (data.indexOf(<span class="stringliteral">&quot;OK&quot;</span>) != -1) {</div>
732<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
733<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; }</div>
734<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
735<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;}</div>
736<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;<span class="keywordtype">bool</span> ESP8266::sATCIPSERVER(uint8_t mode, uint32_t port)</div>
737<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;{</div>
738<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; String data;</div>
739<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">if</span> (mode) {</div>
740<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; rx_empty();</div>
741<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;AT+CIPSERVER=1,&quot;</span>);</div>
742<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; m_puart-&gt;println(port);</div>
743<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; </div>
744<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; data = recvString(<span class="stringliteral">&quot;OK&quot;</span>, <span class="stringliteral">&quot;no change&quot;</span>);</div>
745<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">if</span> (data.indexOf(<span class="stringliteral">&quot;OK&quot;</span>) != -1 || data.indexOf(<span class="stringliteral">&quot;no change&quot;</span>) != -1) {</div>
746<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
747<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; }</div>
748<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
749<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; } <span class="keywordflow">else</span> {</div>
750<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; rx_empty();</div>
751<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; m_puart-&gt;println(<span class="stringliteral">&quot;AT+CIPSERVER=0&quot;</span>);</div>
752<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">return</span> recvFind(<span class="stringliteral">&quot;\r\r\n&quot;</span>);</div>
753<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div>
754<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;}</div>
755<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;<span class="keywordtype">bool</span> ESP8266::sATCIPSTO(uint32_t timeout)</div>
756<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;{</div>
757<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; rx_empty();</div>
758<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; m_puart-&gt;print(<span class="stringliteral">&quot;AT+CIPSTO=&quot;</span>);</div>
759<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; m_puart-&gt;println(timeout);</div>
760<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">return</span> recvFind(<span class="stringliteral">&quot;OK&quot;</span>);</div>
761<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;}</div>
762<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;</div>
763<div class="ttc" id="class_e_s_p8266_html_a6ba21b921a7afc79a36d0e41c20d59bc"><div class="ttname"><a href="class_e_s_p8266.html#a6ba21b921a7afc79a36d0e41c20d59bc">ESP8266::send</a></div><div class="ttdeci">bool send(const uint8_t *buffer, uint32_t len)</div><div class="ttdoc">Send data based on TCP or UDP builded already in single mode. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00261">ESP8266.cpp:261</a></div></div>
764<div class="ttc" id="class_e_s_p8266_html_a4e2d8a0637b437d4b03209cebfa5b750"><div class="ttname"><a href="class_e_s_p8266.html#a4e2d8a0637b437d4b03209cebfa5b750">ESP8266::getVersion</a></div><div class="ttdeci">String getVersion(void)</div><div class="ttdoc">Get the version of AT Command Set. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00080">ESP8266.cpp:80</a></div></div>
765<div class="ttc" id="class_e_s_p8266_html_ac15ce9df69dc566c37b3fa2c3c869337"><div class="ttname"><a href="class_e_s_p8266.html#ac15ce9df69dc566c37b3fa2c3c869337">ESP8266::releaseTCP</a></div><div class="ttdeci">bool releaseTCP(void)</div><div class="ttdoc">Release TCP connection in single mode. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00196">ESP8266.cpp:196</a></div></div>
766<div class="ttc" id="class_e_s_p8266_html_af8ce40bd14556bcfb5d4c521047fc821"><div class="ttname"><a href="class_e_s_p8266.html#af8ce40bd14556bcfb5d4c521047fc821">ESP8266::recv</a></div><div class="ttdeci">uint32_t recv(uint8_t *buffer, uint32_t buffer_size, uint32_t timeout=1000)</div><div class="ttdoc">Receive data from TCP or UDP builded already in single mode. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00271">ESP8266.cpp:271</a></div></div>
767<div class="ttc" id="class_e_s_p8266_html_a16963a076b80906563d2269c0cd52007"><div class="ttname"><a href="class_e_s_p8266.html#a16963a076b80906563d2269c0cd52007">ESP8266::enableMUX</a></div><div class="ttdeci">bool enableMUX(void)</div><div class="ttdoc">Enable IP MUX(multiple connection mode). </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00181">ESP8266.cpp:181</a></div></div>
768<div class="ttc" id="class_e_s_p8266_html_a20819d4dabf19fed6e3dcb3fd04ee49d"><div class="ttname"><a href="class_e_s_p8266.html#a20819d4dabf19fed6e3dcb3fd04ee49d">ESP8266::getLocalIP</a></div><div class="ttdeci">String getLocalIP(void)</div><div class="ttdoc">Get the IP address of ESP8266. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00174">ESP8266.cpp:174</a></div></div>
769<div class="ttc" id="class_e_s_p8266_html_a247706884d60e85c8983bb65de26d346"><div class="ttname"><a href="class_e_s_p8266.html#a247706884d60e85c8983bb65de26d346">ESP8266::setOprToSoftAP</a></div><div class="ttdeci">bool setOprToSoftAP(void)</div><div class="ttdoc">Set operation mode to softap. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00104">ESP8266.cpp:104</a></div></div>
770<div class="ttc" id="_e_s_p8266_8h_html"><div class="ttname"><a href="_e_s_p8266_8h.html">ESP8266.h</a></div><div class="ttdoc">The definition of class ESP8266. </div></div>
771<div class="ttc" id="class_e_s_p8266_html_ac179183a46b218609a481747bcfd5a61"><div class="ttname"><a href="class_e_s_p8266.html#ac179183a46b218609a481747bcfd5a61">ESP8266::setOprToStationSoftAP</a></div><div class="ttdeci">bool setOprToStationSoftAP(void)</div><div class="ttdoc">Set operation mode to station + softap. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00121">ESP8266.cpp:121</a></div></div>
772<div class="ttc" id="class_e_s_p8266_html_aa927b7b8aaef163011015c22da1f07e2"><div class="ttname"><a href="class_e_s_p8266.html#aa927b7b8aaef163011015c22da1f07e2">ESP8266::createTCP</a></div><div class="ttdeci">bool createTCP(String addr, uint32_t port)</div><div class="ttdoc">Create TCP connection in single mode. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00191">ESP8266.cpp:191</a></div></div>
773<div class="ttc" id="class_e_s_p8266_html_aa355332a78aa5f2b58cb11b0daa05cf5"><div class="ttname"><a href="class_e_s_p8266.html#aa355332a78aa5f2b58cb11b0daa05cf5">ESP8266::unregisterUDP</a></div><div class="ttdeci">bool unregisterUDP(void)</div><div class="ttdoc">Unregister UDP port number in single mode. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00206">ESP8266.cpp:206</a></div></div>
774<div class="ttc" id="class_e_s_p8266_html_a88d9a6b130b6c278fd6cd2e6cda816d7"><div class="ttname"><a href="class_e_s_p8266.html#a88d9a6b130b6c278fd6cd2e6cda816d7">ESP8266::startServer</a></div><div class="ttdeci">bool startServer(uint32_t port=333)</div><div class="ttdoc">Start Server(Only in multiple mode). </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00251">ESP8266.cpp:251</a></div></div>
775<div class="ttc" id="class_e_s_p8266_html_aa5355dce05aa59b92ce9f7ea76d86eef"><div class="ttname"><a href="class_e_s_p8266.html#aa5355dce05aa59b92ce9f7ea76d86eef">ESP8266::stopTCPServer</a></div><div class="ttdeci">bool stopTCPServer(void)</div><div class="ttdoc">Stop TCP Server(Only in multiple mode). </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00244">ESP8266.cpp:244</a></div></div>
776<div class="ttc" id="class_e_s_p8266_html_af272f2f57b7b99434e257f06c276acfc"><div class="ttname"><a href="class_e_s_p8266.html#af272f2f57b7b99434e257f06c276acfc">ESP8266::stopServer</a></div><div class="ttdeci">bool stopServer(void)</div><div class="ttdoc">Stop Server(Only in multiple mode). </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00256">ESP8266.cpp:256</a></div></div>
777<div class="ttc" id="class_e_s_p8266_html_a2bc64145329ea45018e956b97ced030a"><div class="ttname"><a href="class_e_s_p8266.html#a2bc64145329ea45018e956b97ced030a">ESP8266::disableMUX</a></div><div class="ttdeci">bool disableMUX(void)</div><div class="ttdoc">Disable IP MUX(single connection mode). </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00186">ESP8266.cpp:186</a></div></div>
778<div class="ttc" id="class_e_s_p8266_html_a04b61a01af4ee5e8820c9de79b4b3c39"><div class="ttname"><a href="class_e_s_p8266.html#a04b61a01af4ee5e8820c9de79b4b3c39">ESP8266::restart</a></div><div class="ttdeci">bool restart(void)</div><div class="ttdoc">Restart ESP8266 by "AT+RST". </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00063">ESP8266.cpp:63</a></div></div>
779<div class="ttc" id="class_e_s_p8266_html_a5ed71947606435c3b03b73efdaf810a5"><div class="ttname"><a href="class_e_s_p8266.html#a5ed71947606435c3b03b73efdaf810a5">ESP8266::kick</a></div><div class="ttdeci">bool kick(void)</div><div class="ttdoc">Verify ESP8266 whether live or not. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00058">ESP8266.cpp:58</a></div></div>
780<div class="ttc" id="class_e_s_p8266_html_a300535b4b5f001b74058ebcc694a749f"><div class="ttname"><a href="class_e_s_p8266.html#a300535b4b5f001b74058ebcc694a749f">ESP8266::joinAP</a></div><div class="ttdeci">bool joinAP(String ssid, String pwd)</div><div class="ttdoc">Join in AP. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00145">ESP8266.cpp:145</a></div></div>
781<div class="ttc" id="class_e_s_p8266_html_af8d3305a28d862c0cf353d0d758b96d4"><div class="ttname"><a href="class_e_s_p8266.html#af8d3305a28d862c0cf353d0d758b96d4">ESP8266::registerUDP</a></div><div class="ttdeci">bool registerUDP(String addr, uint32_t port)</div><div class="ttdoc">Register UDP port number in single mode. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00201">ESP8266.cpp:201</a></div></div>
782<div class="ttc" id="class_e_s_p8266_html_aeda29748e0d28efa9d82c9c7fab1859b"><div class="ttname"><a href="class_e_s_p8266.html#aeda29748e0d28efa9d82c9c7fab1859b">ESP8266::leaveAP</a></div><div class="ttdeci">bool leaveAP(void)</div><div class="ttdoc">Leave AP joined before. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00150">ESP8266.cpp:150</a></div></div>
783<div class="ttc" id="class_e_s_p8266_html_a71f76c76d23fc66c26f1c7b357f58ac2"><div class="ttname"><a href="class_e_s_p8266.html#a71f76c76d23fc66c26f1c7b357f58ac2">ESP8266::setTCPServerTimeout</a></div><div class="ttdeci">bool setTCPServerTimeout(uint32_t timeout=180)</div><div class="ttdoc">Set the timeout of TCP Server. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00231">ESP8266.cpp:231</a></div></div>
784<div class="ttc" id="class_e_s_p8266_html_a22a7768a76709c8d8f0b9809158b7ec9"><div class="ttname"><a href="class_e_s_p8266.html#a22a7768a76709c8d8f0b9809158b7ec9">ESP8266::startTCPServer</a></div><div class="ttdeci">bool startTCPServer(uint32_t port=333)</div><div class="ttdoc">Start TCP Server(Only in multiple mode). </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00236">ESP8266.cpp:236</a></div></div>
785<div class="ttc" id="class_e_s_p8266_html_aacce786dc0ef289cd37a48642d2efef1"><div class="ttname"><a href="class_e_s_p8266.html#aacce786dc0ef289cd37a48642d2efef1">ESP8266::setSoftAPParam</a></div><div class="ttdeci">bool setSoftAPParam(String ssid, String pwd, uint8_t chl=7, uint8_t ecn=4)</div><div class="ttdoc">Set SoftAP parameters. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00155">ESP8266.cpp:155</a></div></div>
786<div class="ttc" id="class_e_s_p8266_html_a572c6f855d70078fdbff9ac2c4b1ce99"><div class="ttname"><a href="class_e_s_p8266.html#a572c6f855d70078fdbff9ac2c4b1ce99">ESP8266::setOprToStation</a></div><div class="ttdeci">bool setOprToStation(void)</div><div class="ttdoc">Set operation mode to staion. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00087">ESP8266.cpp:87</a></div></div>
787<div class="ttc" id="class_e_s_p8266_html_af0cafe8a994349e81e75a35af9645a76"><div class="ttname"><a href="class_e_s_p8266.html#af0cafe8a994349e81e75a35af9645a76">ESP8266::getAPList</a></div><div class="ttdeci">String getAPList(void)</div><div class="ttdoc">Search available AP list and return it. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00138">ESP8266.cpp:138</a></div></div>
788<div class="ttc" id="class_e_s_p8266_html_ad273286fbb8627a612249a232d53ca22"><div class="ttname"><a href="class_e_s_p8266.html#ad273286fbb8627a612249a232d53ca22">ESP8266::getIPStatus</a></div><div class="ttdeci">String getIPStatus(void)</div><div class="ttdoc">Get the current status of connection(UDP and TCP). </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00167">ESP8266.cpp:167</a></div></div>
789<div class="ttc" id="class_e_s_p8266_html_a10c82a5196a8f349720a9c9ba7209a6e"><div class="ttname"><a href="class_e_s_p8266.html#a10c82a5196a8f349720a9c9ba7209a6e">ESP8266::getJoinedDeviceIP</a></div><div class="ttdeci">String getJoinedDeviceIP(void)</div><div class="ttdoc">Get the IP list of devices connected to SoftAP. </div><div class="ttdef"><b>Definition:</b> <a href="_e_s_p8266_8cpp_source.html#l00160">ESP8266.cpp:160</a></div></div>
790</div><!-- fragment --></div><!-- contents -->
791<!-- start footer part -->
792<hr class="footer"/><address class="footer"><small>
793Generated on Tue Mar 17 2015 10:34:17 for API by &#160;<a href="http://www.doxygen.org/index.html">
794<img class="footer" src="doxygen.png" alt="doxygen"/>
795</a> 1.8.7
796</small></address>
797</body>
798</html>
Note: See TracBrowser for help on using the repository browser.