Skip to content

Commit 4ad577e

Browse files
committed
Now we're getting somewhere...!
1 parent 66befa0 commit 4ad577e

File tree

4 files changed

+79
-76
lines changed

4 files changed

+79
-76
lines changed

Firmware/RTK_Surveyor/Network.ino

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ void menuNetwork()
386386
NetworkClient * networkClient(uint8_t user, bool useSSL)
387387
{
388388
NetworkClient * client;
389-
int type;
389+
uint8_t type;
390390

391391
type = networkGetType(user);
392392
#if defined(COMPILE_ETHERNET)
@@ -412,25 +412,51 @@ NetworkClient * networkClient(uint8_t user, bool useSSL)
412412
return client;
413413
}
414414

415+
//----------------------------------------
416+
// Allocate a network server
417+
//----------------------------------------
418+
NetworkServer * networkServer(uint8_t user, uint16_t port)
419+
{
420+
NetworkServer * _server;
421+
uint8_t type;
422+
423+
type = networkGetType(user);
424+
#if defined(COMPILE_ETHERNET)
425+
if (type == NETWORK_TYPE_ETHERNET)
426+
{
427+
_server = new NetworkEthernetServer(port);
428+
}
429+
else
430+
#endif // COMPILE_ETHERNET
431+
{
432+
#if defined(COMPILE_WIFI)
433+
_server = new NetworkWiFiServer(port);
434+
#else // COMPILE_WIFI
435+
_server = nullptr;
436+
#endif // COMPILE_WIFI
437+
}
438+
return _server;
439+
}
440+
415441
//----------------------------------------
416442
// Constructor for NetworkServer - header is in NetworkServer.h
417443
//----------------------------------------
418-
NetworkServer::NetworkServer(uint8_t user, uint16_t port)
444+
NetworkServer::NetworkServer(uint8_t user, uint16_t port) :
445+
_friendClass(false),
446+
_networkType{networkGetType(user)},
447+
_port{port}
419448
{
420-
_friendClass = false;
421-
_networkType = networkGetType(user);
422-
_port = port;
423449
#if defined(COMPILE_ETHERNET)
424450
if (_networkType == NETWORK_TYPE_ETHERNET)
425451
{
426-
_server = new NetworkEthernetServer(port);
452+
_server = new EthernetServer(port);
427453
_client = new EthernetClient;
428454
}
429455
else
430456
#endif // COMPILE_ETHERNET
431457
#if defined(COMPILE_WIFI)
432458
{
433-
_server = new NetworkWiFiServer(port);
459+
_server = new WiFiServer(port);
434460
_client = new WiFiClient;
435461
}
436462
#else // COMPILE_WIFI
@@ -439,7 +465,7 @@ NetworkServer::NetworkServer(uint8_t user, uint16_t port)
439465
_client = nullptr;
440466
}
441467
#endif // COMPILE_WIFI
442-
};
468+
}
443469

444470
//----------------------------------------
445471
// Display the IP address

Firmware/RTK_Surveyor/NetworkClient.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class NetworkClient : public Client
3737
#else // COMPILE_WIFI
3838
_client = nullptr;
3939
#endif // COMPILE_WIFI
40-
};
40+
}
4141

4242
//------------------------------
4343
// Delete the network client
@@ -51,7 +51,7 @@ class NetworkClient : public Client
5151
delete _client;
5252
_client = nullptr;
5353
}
54-
};
54+
}
5555

5656
//------------------------------
5757
// Determine if receive data is available

Firmware/RTK_Surveyor/NetworkServer.h

Lines changed: 40 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,28 @@ class NetworkServer : public Server
1818
//------------------------------
1919
// Create the network server
2020
//------------------------------
21-
NetworkServer(Server * server, uint8_t networkType, uint16_t port)
21+
NetworkServer(Server * server, uint8_t networkType, uint16_t port) :
22+
_friendClass(true),
23+
_server{server},
24+
_networkType{networkType},
25+
_port{port}
2226
{
23-
_friendClass = true;
24-
_server = server;
25-
_networkType = networkType;
26-
_port = port;
27+
#if defined(COMPILE_ETHERNET)
2728
if (_networkType == NETWORK_TYPE_ETHERNET)
29+
{
2830
_client = new EthernetClient;
31+
}
2932
else
33+
#endif // COMPILE_ETHERNET
34+
#if defined(COMPILE_WIFI)
35+
{
3036
_client = new WiFiClient;
37+
}
38+
#else // COMPILE_WIFI
39+
{
40+
_client = nullptr;
41+
}
42+
#endif // COMPILE_WIFI
3143
}
3244

3345
//------------------------------
@@ -52,26 +64,19 @@ class NetworkServer : public Server
5264
delete _server;
5365
_server = nullptr;
5466
}
55-
};
67+
if (_client)
68+
delete _client;
69+
_client = nullptr;
70+
}
5671

5772
//------------------------------
5873
// Begin the network server
5974
//------------------------------
6075

61-
void beginMe()
76+
void begin()
6277
{
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();
78+
if (_server)
79+
_server->begin();
7580
}
7681

7782
//------------------------------
@@ -84,8 +89,6 @@ class NetworkServer : public Server
8489
if (_networkType == NETWORK_TYPE_ETHERNET)
8590
if (_server)
8691
{
87-
Serial.printf("_server : %p\r\n", (void *)_server);
88-
Serial.flush();
8992
*_client = ((EthernetServer *)_server)->available();
9093
return _client;
9194
}
@@ -132,24 +135,14 @@ class NetworkServer : public Server
132135

133136
operator bool()
134137
{
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;
138+
return _server;
146139
}
147140

148141
//------------------------------
149142
// Stop the network server
150143
//------------------------------
151144

152-
void stop()
145+
void stop() // WiFiServer only - EthernetServer has no stop method
153146
{
154147
#if defined(COMPILE_WIFI)
155148
if (_networkType == NETWORK_TYPE_WIFI)
@@ -164,16 +157,8 @@ class NetworkServer : public Server
164157

165158
size_t write(uint8_t b)
166159
{
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
160+
if (_server)
161+
return _server->write(b);
177162
return 0;
178163
}
179164

@@ -183,16 +168,8 @@ class NetworkServer : public Server
183168

184169
size_t write(const uint8_t *buf, size_t size)
185170
{
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
171+
if (_server)
172+
return _server->write(buf, size);
196173
return 0;
197174
}
198175

@@ -209,23 +186,23 @@ class NetworkServer : public Server
209186
#ifdef COMPILE_ETHERNET
210187
class NetworkEthernetServer : public NetworkServer
211188
{
212-
private:
189+
protected:
213190

214-
EthernetServer *_ethernetServer;
191+
EthernetServer _ethernetServer;
215192

216193
public:
217194

218-
NetworkEthernetServer(uint16_t port) :
219-
_ethernetServer{new EthernetServer(port)},
220-
NetworkServer(_ethernetServer, NETWORK_TYPE_ETHERNET, port)
195+
NetworkEthernetServer(uint16_t port) :
196+
_ethernetServer{EthernetServer(port)},
197+
NetworkServer(&_ethernetServer, NETWORK_TYPE_ETHERNET, port)
221198
{
222199
}
223200

224-
// NetworkEthernetServer(EthernetServer& server, uint16_t port) :
225-
// _ethernetServer{server},
226-
// NetworkServer(_ethernetServer, NETWORK_TYPE_ETHERNET, port)
227-
// {
228-
// }
201+
NetworkEthernetServer(EthernetServer& server, uint16_t port) :
202+
_ethernetServer{server},
203+
NetworkServer(&_ethernetServer, NETWORK_TYPE_ETHERNET, port)
204+
{
205+
}
229206

230207
~NetworkEthernetServer()
231208
{

Firmware/RTK_Surveyor/PvtServer.ino

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -250,11 +250,11 @@ bool pvtServerStart()
250250

251251
// Start the PVT server
252252
if (pvtServer == nullptr)
253-
pvtServer = new NetworkServer(NETWORK_USER_PVT_SERVER, settings.pvtServerPort);
253+
pvtServer = networkServer(NETWORK_USER_PVT_SERVER, settings.pvtServerPort);
254254
if (!pvtServer)
255255
return false;
256256

257-
pvtServer->beginMe();
257+
pvtServer->begin();
258258
online.pvtServer = true;
259259

260260
systemPrintf("PVT server online, IP address %d.%d.%d.%d:%d\r\n",
@@ -481,7 +481,7 @@ void pvtServerUpdate()
481481
Client *client = pvtServer->available();
482482

483483
// Done if no PVT server client found
484-
if (!*client)
484+
if (!client)
485485
break;
486486

487487
NETWORK_DATA * network;

0 commit comments

Comments
 (0)