Skip to content

Commit 66befa0

Browse files
committed
Getting closer - maybe?
1 parent 1031bd1 commit 66befa0

File tree

3 files changed

+94
-42
lines changed

3 files changed

+94
-42
lines changed

Firmware/RTK_Surveyor/Network.ino

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,13 +422,22 @@ NetworkServer::NetworkServer(uint8_t user, uint16_t port)
422422
_port = port;
423423
#if defined(COMPILE_ETHERNET)
424424
if (_networkType == NETWORK_TYPE_ETHERNET)
425+
{
425426
_server = new NetworkEthernetServer(port);
427+
_client = new EthernetClient;
428+
}
426429
else
427430
#endif // COMPILE_ETHERNET
428431
#if defined(COMPILE_WIFI)
432+
{
429433
_server = new NetworkWiFiServer(port);
434+
_client = new WiFiClient;
435+
}
430436
#else // COMPILE_WIFI
437+
{
431438
_server = nullptr;
439+
_client = nullptr;
440+
}
432441
#endif // COMPILE_WIFI
433442
};
434443

Firmware/RTK_Surveyor/NetworkServer.h

Lines changed: 74 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Firmware/RTK_Surveyor/PvtServer.ino

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -249,11 +249,12 @@ bool pvtServerStart()
249249
systemPrintln("PVT server starting the server");
250250

251251
// Start the PVT server
252-
pvtServer = new NetworkServer(NETWORK_USER_PVT_SERVER, settings.pvtServerPort);
252+
if (pvtServer == nullptr)
253+
pvtServer = new NetworkServer(NETWORK_USER_PVT_SERVER, settings.pvtServerPort);
253254
if (!pvtServer)
254255
return false;
255256

256-
pvtServer->begin();
257+
pvtServer->beginMe();
257258
online.pvtServer = true;
258259

259260
systemPrintf("PVT server online, IP address %d.%d.%d.%d:%d\r\n",
@@ -475,18 +476,21 @@ void pvtServerUpdate()
475476
// Determine if the client data structure is in use
476477
if (!(pvtServerClientConnected & (1 << index)))
477478
{
478-
NetworkClient client = NetworkClient(NETWORK_USER_PVT_CLIENT);
479-
480479
// Data structure not in use
481480
// Check for another PVT server client
482-
client = pvtServer->available();
481+
Client *client = pvtServer->available();
483482

484483
// Done if no PVT server client found
485-
if (!client)
484+
if (!*client)
485+
break;
486+
487+
NETWORK_DATA * network;
488+
network = &networkData;
489+
if (!network)
486490
break;
487491

488492
// Start processing the new PVT server client connection
489-
pvtServerClient[index] = new NetworkClient(client);
493+
pvtServerClient[index] = new NetworkClient(client, network->type);
490494
pvtServerClientIpAddress[index] = pvtServerClient[index]->remoteIP();
491495
pvtServerClientConnected |= 1 << index;
492496
pvtServerClientDataSent |= 1 << index;

0 commit comments

Comments
 (0)