@@ -11,6 +11,7 @@ class NetworkServer : public Server
1111 Server * _server; // Ethernet or WiFi server
1212 uint8_t _networkType;
1313 uint16_t _port;
14+ Client * _client;
1415
1516 public:
1617
@@ -23,6 +24,10 @@ class NetworkServer : public Server
2324 _server = server;
2425 _networkType = networkType;
2526 _port = port;
27+ if (_networkType == NETWORK_TYPE_ETHERNET)
28+ _client = new EthernetClient;
29+ else
30+ _client = new WiFiClient;
2631 }
2732
2833 // ------------------------------
@@ -40,8 +45,7 @@ class NetworkServer : public Server
4045#if defined(COMPILE_WIFI)
4146 if (_networkType == NETWORK_TYPE_WIFI)
4247 {
43- WiFiServer *aWiFiServer = (WiFiServer *)_server;
44- aWiFiServer->stop ();
48+ ((WiFiServer *)_server)->stop ();
4549 }
4650#endif // COMPILE_WIFI
4751 if (!_friendClass)
@@ -54,60 +58,72 @@ class NetworkServer : public Server
5458 // Begin the network server
5559 // ------------------------------
5660
57- void begin ()
61+ void beginMe ()
5862 {
59- if (_server)
60- _server->begin ();
63+ Serial.println (" beginMe start" ); Serial.flush ();
64+ #if defined(COMPILE_ETHERNET)
65+ if (_networkType == NETWORK_TYPE_ETHERNET)
66+ if (_server)
67+ ((EthernetServer *)_server)->begin ();
68+ #endif // COMPILE_WIFI
69+ #if defined(COMPILE_WIFI)
70+ if (_networkType == NETWORK_TYPE_WIFI)
71+ if (_server)
72+ ((WiFiServer *)_server)->begin ();
73+ #endif // COMPILE_WIFI
74+ Serial.println (" beginMe end" ); Serial.flush ();
6175 }
6276
6377 // ------------------------------
6478 // Determine if new client is available
6579 // ------------------------------
6680
67- NetworkClient available ()
81+ Client * available ()
6882 {
6983#if defined(COMPILE_ETHERNET)
7084 if (_networkType == NETWORK_TYPE_ETHERNET)
7185 if (_server)
7286 {
73- EthernetServer *aServer = (EthernetServer *)_server;
74- return (NetworkClient)aServer->available ();
87+ Serial.printf (" _server : %p\r\n " , (void *)_server);
88+ Serial.flush ();
89+ *_client = ((EthernetServer *)_server)->available ();
90+ return _client;
7591 }
7692#endif // COMPILE_WIFI
7793#if defined(COMPILE_WIFI)
7894 if (_networkType == NETWORK_TYPE_WIFI)
7995 if (_server)
8096 {
81- WiFiServer *aServer = (WiFiServer *)_server;
82- return (NetworkClient)aServer-> available () ;
97+ *_client = (( WiFiServer *)_server)-> available () ;
98+ return _client ;
8399 }
84100#endif // COMPILE_WIFI
85- return 0 ;
101+ return nullptr ;
86102 }
87103
88104 // ------------------------------
89105 // Accept new client
90106 // ------------------------------
91107
92- NetworkClient accept ()
108+ Client * accept ()
93109 {
94110#if defined(COMPILE_ETHERNET)
95111 if (_networkType == NETWORK_TYPE_ETHERNET)
96112 if (_server)
97113 {
98- EthernetServer *aServer = (EthernetServer *)_server;
99- return (NetworkClient)aServer-> accept () ;
114+ *_client = (( EthernetServer *)_server)-> accept () ;
115+ return _client ;
100116 }
101117#endif // COMPILE_WIFI
102118#if defined(COMPILE_WIFI)
103119 if (_networkType == NETWORK_TYPE_WIFI)
104120 if (_server)
105121 {
106- WiFiServer *aServer = (WiFiServer *)_server;
107- return (NetworkClient)aServer-> accept () ;
122+ *_client = (( WiFiServer *)_server)-> accept () ;
123+ return _client ;
108124 }
109125#endif // COMPILE_WIFI
110- return 0 ;
126+ return nullptr ;
111127 }
112128
113129 // ------------------------------
@@ -116,7 +132,17 @@ class NetworkServer : public Server
116132
117133 operator bool ()
118134 {
119- return _server;
135+ #if defined(COMPILE_ETHERNET)
136+ if (_networkType == NETWORK_TYPE_ETHERNET)
137+ if (_server)
138+ return ((EthernetServer *)_server);
139+ #endif // COMPILE_WIFI
140+ #if defined(COMPILE_WIFI)
141+ if (_networkType == NETWORK_TYPE_WIFI)
142+ if (_server)
143+ return ((WiFiServer *)_server);
144+ #endif // COMPILE_WIFI
145+ return false ;
120146 }
121147
122148 // ------------------------------
@@ -128,10 +154,7 @@ class NetworkServer : public Server
128154#if defined(COMPILE_WIFI)
129155 if (_networkType == NETWORK_TYPE_WIFI)
130156 if (_server)
131- {
132- WiFiServer *aWiFiServer = (WiFiServer *)_server;
133- aWiFiServer->stop ();
134- }
157+ ((WiFiServer *)_server)->stop ();
135158#endif // COMPILE_WIFI
136159 }
137160
@@ -141,8 +164,16 @@ class NetworkServer : public Server
141164
142165 size_t write (uint8_t b)
143166 {
144- if (_server)
145- return _server->write (b);
167+ #if defined(COMPILE_ETHERNET)
168+ if (_networkType == NETWORK_TYPE_ETHERNET)
169+ if (_server)
170+ return ((EthernetServer *)_server)->write (b);
171+ #endif // COMPILE_WIFI
172+ #if defined(COMPILE_WIFI)
173+ if (_networkType == NETWORK_TYPE_WIFI)
174+ if (_server)
175+ return ((WiFiServer *)_server)->write (b);
176+ #endif // COMPILE_WIFI
146177 return 0 ;
147178 }
148179
@@ -152,8 +183,16 @@ class NetworkServer : public Server
152183
153184 size_t write (const uint8_t *buf, size_t size)
154185 {
155- if (_server)
156- return _server->write (buf, size);
186+ #if defined(COMPILE_ETHERNET)
187+ if (_networkType == NETWORK_TYPE_ETHERNET)
188+ if (_server)
189+ return ((EthernetServer *)_server)->write (buf, size);
190+ #endif // COMPILE_WIFI
191+ #if defined(COMPILE_WIFI)
192+ if (_networkType == NETWORK_TYPE_WIFI)
193+ if (_server)
194+ return ((WiFiServer *)_server)->write (buf, size);
195+ #endif // COMPILE_WIFI
157196 return 0 ;
158197 }
159198
@@ -182,11 +221,11 @@ class NetworkEthernetServer : public NetworkServer
182221 {
183222 }
184223
185- NetworkEthernetServer (EthernetServer& server, uint16_t port) :
186- _ethernetServer{& server},
187- NetworkServer (_ethernetServer, NETWORK_TYPE_ETHERNET, port)
188- {
189- }
224+ // NetworkEthernetServer(EthernetServer& server, uint16_t port) :
225+ // _ethernetServer{server},
226+ // NetworkServer(_ethernetServer, NETWORK_TYPE_ETHERNET, port)
227+ // {
228+ // }
190229
191230 ~NetworkEthernetServer ()
192231 {
@@ -200,18 +239,18 @@ class NetworkWiFiServer : public NetworkServer
200239{
201240 protected:
202241
203- WiFiServer _server ;
242+ WiFiServer _wifiServer ;
204243
205244 public:
206245
207246 NetworkWiFiServer (uint16_t port) :
208- NetworkServer (&_server , NETWORK_TYPE_WIFI, port)
247+ NetworkServer (&_wifiServer , NETWORK_TYPE_WIFI, port)
209248 {
210249 }
211250
212251 NetworkWiFiServer (WiFiServer& server, uint16_t port) :
213- _server {server},
214- NetworkServer (&_server , NETWORK_TYPE_WIFI, port)
252+ _wifiServer {server},
253+ NetworkServer (&_wifiServer , NETWORK_TYPE_WIFI, port)
215254 {
216255 }
217256
0 commit comments