@@ -82,7 +82,9 @@ const char *const tcpServerStateName[] = {
82
82
83
83
const int tcpServerStateNameEntries = sizeof (tcpServerStateName) / sizeof (tcpServerStateName[0 ]);
84
84
85
- const RtkMode_t tcpServerMode = RTK_MODE_BASE_FIXED | RTK_MODE_BASE_SURVEY_IN | RTK_MODE_ROVER;
85
+ const RtkMode_t baseCasterMode = RTK_MODE_BASE_FIXED;
86
+ const RtkMode_t tcpServerMode = RTK_MODE_ROVER
87
+ | RTK_MODE_BASE_SURVEY_IN;
86
88
87
89
// ----------------------------------------
88
90
// Locals
@@ -92,6 +94,7 @@ const RtkMode_t tcpServerMode = RTK_MODE_BASE_FIXED | RTK_MODE_BASE_SURVEY_IN |
92
94
static NetworkServer *tcpServer = nullptr ;
93
95
static uint8_t tcpServerState;
94
96
static uint32_t tcpServerTimer;
97
+ static const char * tcpServerName;
95
98
96
99
// TCP server clients
97
100
static volatile uint8_t tcpServerClientConnected;
@@ -146,7 +149,8 @@ int32_t tcpServerClientSendData(int index, uint8_t *data, uint16_t length)
146
149
if (length > 0 )
147
150
tcpServerClientDataSent = tcpServerClientDataSent | (1 << index);
148
151
if ((settings.debugTcpServer || PERIODIC_DISPLAY (PD_TCP_SERVER_CLIENT_DATA)) && (!inMainMenu))
149
- systemPrintf (" TCP server wrote %d bytes to %s\r\n " , length,
152
+ systemPrintf (" %s wrote %d bytes to %s\r\n " ,
153
+ tcpServerName, length,
150
154
tcpServerClientIpAddress[index].toString ().c_str ());
151
155
}
152
156
@@ -167,22 +171,66 @@ int32_t tcpServerClientSendData(int index, uint8_t *data, uint16_t length)
167
171
bool tcpServerEnabled (const char ** line)
168
172
{
169
173
bool enabled;
174
+ const char * name;
170
175
171
176
do
172
177
{
178
+ // Determine if the server is enabled
173
179
enabled = false ;
180
+ if ((settings.enableTcpServer
181
+ || settings.enableNtripCaster
182
+ || settings.baseCasterOverride ) == false )
183
+ {
184
+ *line = " , Not enabled!" ;
185
+ break ;
186
+ }
187
+
188
+ // Determine if the TCP server should be running
189
+ if ((EQ_RTK_MODE (tcpServerMode) && settings.enableTcpServer ))
190
+ {
191
+ // TCP server running in Rover mode
192
+ name = " TCP Server" ;
193
+ }
194
+
195
+ // Determine if the base caster should be running
196
+ else if (EQ_RTK_MODE (baseCasterMode)
197
+ && (settings.enableNtripCaster || settings.baseCasterOverride ))
198
+ {
199
+ // Select the base caster WiFi mode and port number
200
+ if (settings.baseCasterOverride )
201
+ {
202
+ name = " Base Caster" ;
203
+ }
204
+ else
205
+ {
206
+ name = " NTRIP Caster" ;
207
+ }
208
+ }
174
209
175
- // Verify the operating mode
176
- if ( NEQ_RTK_MODE (tcpServerMode))
210
+ // Wrong mode for TCP server or base caster operation
211
+ else
177
212
{
178
213
*line = " , Wrong mode!" ;
179
214
break ;
180
215
}
181
216
182
- // Verify still enabled
183
- enabled = settings.enableTcpServer || settings.baseCasterOverride ;
184
- if (enabled == false )
185
- *line = " , Not enabled!" ;
217
+ // Only change modes when in off state
218
+ if (tcpServerState == TCP_SERVER_STATE_OFF)
219
+ {
220
+ // Update the TCP server configuration
221
+ tcpServerName = name;
222
+ }
223
+
224
+ // Shutdown and restart the TCP server when configuration changes
225
+ else if (name != tcpServerName)
226
+ {
227
+ *line = " , Wrong state to switch configuration!" ;
228
+ break ;
229
+ }
230
+
231
+ // The server is enabled and in the correct mode
232
+ *line = " " ;
233
+ enabled = true ;
186
234
} while (0 );
187
235
return enabled;
188
236
}
@@ -265,7 +313,7 @@ void tcpServerSetState(uint8_t newState)
265
313
{
266
314
if (newState >= TCP_SERVER_STATE_MAX)
267
315
{
268
- systemPrintf (" Unknown TCP Server state: %d\r\n " , tcpServerState);
316
+ systemPrintf (" Unknown %s state: %d\r\n " , tcpServerName , tcpServerState);
269
317
reportFatalError (" Unknown TCP Server state" );
270
318
}
271
319
else
@@ -281,7 +329,7 @@ bool tcpServerStart()
281
329
IPAddress localIp;
282
330
283
331
if (settings.debugTcpServer && (!inMainMenu))
284
- systemPrintln ( " TCP server starting the server" );
332
+ systemPrintf ( " %s starting the server\r\n " , tcpServerName );
285
333
286
334
uint16_t tcpPort = settings.tcpServerPort ;
287
335
if (settings.baseCasterOverride == true )
@@ -296,12 +344,8 @@ bool tcpServerStart()
296
344
online.tcpServer = true ;
297
345
298
346
localIp = networkGetIpAddress ();
299
- if (settings.enableNtripCaster || settings.baseCasterOverride )
300
- systemPrintf (" TCP server online, IP address %s:%d, responding as NTRIP Caster\r\n " , localIp.toString ().c_str (),
301
- tcpPort);
302
- else
303
- systemPrintf (" TCP server online, IP address %s:%d\r\n " , localIp.toString ().c_str (), tcpPort);
304
-
347
+ systemPrintf (" %s online, IP address %s:%d\r\n " , tcpServerName,
348
+ localIp.toString ().c_str (), tcpPort);
305
349
return true ;
306
350
}
307
351
@@ -316,7 +360,8 @@ void tcpServerStop()
316
360
if (online.tcpServer )
317
361
{
318
362
if (settings.debugTcpServer && (!inMainMenu))
319
- systemPrintf (" TcpServer: Notifying GNSS UART task to stop sending data\r\n " );
363
+ systemPrintf (" %s: Notifying GNSS UART task to stop sending data\r\n " ,
364
+ tcpServerName);
320
365
321
366
// Notify the GNSS UART tasks of the TCP server shutdown
322
367
online.tcpServer = false ;
@@ -336,15 +381,15 @@ void tcpServerStop()
336
381
{
337
382
// Stop the TCP server
338
383
if (settings.debugTcpServer && (!inMainMenu))
339
- systemPrintln ( " TcpServer : Stopping the server" );
384
+ systemPrintf ( " %s : Stopping the server\r\n " , tcpServerName );
340
385
tcpServer->stop ();
341
386
delete tcpServer;
342
387
tcpServer = nullptr ;
343
388
}
344
389
345
390
// Stop using the network
346
391
if (settings.debugTcpServer && (!inMainMenu))
347
- systemPrintln ( " TcpServer : Stopping network consumers" );
392
+ systemPrintf ( " %s : Stopping network consumers\r\n " , tcpServerName );
348
393
networkConsumerOffline (NETCONSUMER_TCP_SERVER);
349
394
if (tcpServerState != TCP_SERVER_STATE_OFF)
350
395
{
@@ -379,10 +424,13 @@ void tcpServerStopClient(int index)
379
424
dataSent = ((millis () - tcpServerTimer) < TCP_SERVER_CLIENT_DATA_TIMEOUT)
380
425
|| (tcpServerClientDataSent & (1 << index));
381
426
if (!dataSent)
382
- systemPrintf (" TCP Server: No data sent over %d seconds\r\n " , TCP_SERVER_CLIENT_DATA_TIMEOUT / 1000 );
427
+ systemPrintf (" %s: No data sent over %d seconds\r\n " ,
428
+ tcpServerName,
429
+ TCP_SERVER_CLIENT_DATA_TIMEOUT / 1000 );
383
430
if (!connected)
384
- systemPrintf (" TCP Server: Link to client broken\r\n " );
385
- systemPrintf (" TCP server client %d disconnected from %s\r\n " , index,
431
+ systemPrintf (" %s: Link to client broken\r\n " , tcpServerName);
432
+ systemPrintf (" %s client %d disconnected from %s\r\n " ,
433
+ tcpServerName, index,
386
434
tcpServerClientIpAddress[index].toString ().c_str ());
387
435
}
388
436
@@ -447,7 +495,7 @@ void tcpServerUpdate()
447
495
if (enabled)
448
496
{
449
497
if (settings.debugTcpServer && (!inMainMenu))
450
- systemPrintln ( " TCP server start" );
498
+ systemPrintf ( " %s start/r/n " , tcpServerName );
451
499
if (settings.tcpUdpOverWiFiStation == true )
452
500
networkConsumerAdd (NETCONSUMER_TCP_SERVER, NETWORK_ANY, __FILE__, __LINE__);
453
501
else
@@ -485,7 +533,7 @@ void tcpServerUpdate()
485
533
if ((settings.debugTcpServer || PERIODIC_DISPLAY (PD_TCP_SERVER_DATA)) && (!inMainMenu))
486
534
{
487
535
PERIODIC_CLEAR (PD_TCP_SERVER_DATA);
488
- systemPrintln ( " TCP server initiating shutdown" );
536
+ systemPrintf ( " %s initiating shutdown\r\n " , tcpServerName );
489
537
}
490
538
491
539
// Network connection failed, attempt to restart the network
@@ -510,7 +558,8 @@ void tcpServerUpdate()
510
558
if (PERIODIC_DISPLAY (PD_TCP_SERVER_DATA) && (!inMainMenu))
511
559
{
512
560
PERIODIC_CLEAR (PD_TCP_SERVER_DATA);
513
- systemPrintf (" TCP server client %d connected to %s\r\n " , index,
561
+ systemPrintf (" %s client %d connected to %s\r\n " ,
562
+ tcpServerName, index,
514
563
tcpServerClientIpAddress[index].toString ().c_str ());
515
564
}
516
565
}
@@ -544,7 +593,8 @@ void tcpServerUpdate()
544
593
if ((settings.debugTcpServer || PERIODIC_DISPLAY (PD_TCP_SERVER_DATA)) && (!inMainMenu))
545
594
{
546
595
PERIODIC_CLEAR (PD_TCP_SERVER_DATA);
547
- systemPrintf (" TCP server client %d connected to %s\r\n " , index,
596
+ systemPrintf (" %s client %d connected to %s\r\n " ,
597
+ tcpServerName, index,
548
598
tcpServerClientIpAddress[index].toString ().c_str ());
549
599
}
550
600
@@ -614,7 +664,7 @@ void tcpServerUpdate()
614
664
// Periodically display the TCP state
615
665
if (PERIODIC_DISPLAY (PD_TCP_SERVER_STATE) && (!inMainMenu))
616
666
{
617
- systemPrintf (" TCP Server state: %s%s\r\n " ,
667
+ systemPrintf (" %s state: %s%s\r\n " , tcpServerName ,
618
668
tcpServerStateName[tcpServerState], line);
619
669
PERIODIC_CLEAR (PD_TCP_SERVER_STATE);
620
670
}
0 commit comments