@@ -139,42 +139,26 @@ int32_t tcpServerClientSendData(int index, uint8_t *data, uint16_t length)
139
139
{
140
140
if (tcpServerClient[index])
141
141
{
142
- // Use a semaphore to prevent tcpServerUpdate from gatecrashing
143
- if (tcpServerSemaphore == NULL )
144
- tcpServerSemaphore = xSemaphoreCreateMutex (); // Create the mutex
145
-
146
- // Take the semaphore
147
- if (xSemaphoreTake (tcpServerSemaphore, 50 / portTICK_PERIOD_MS) == pdPASS)
142
+ length = tcpServerClient[index]->write (data, length);
143
+ if (length > 0 )
148
144
{
149
- tcpServerSemaphoreHolder = " tcpServerClientSendData" ;
150
-
151
- length = tcpServerClient[index]->write (data, length);
145
+ // Update the data sent flag when data successfully sent
152
146
if (length > 0 )
147
+ tcpServerClientDataSent = tcpServerClientDataSent | (1 << index);
148
+ if ((settings.debugTcpServer || PERIODIC_DISPLAY (PD_TCP_SERVER_CLIENT_DATA)) && (!inMainMenu))
153
149
{
154
- // Update the data sent flag when data successfully sent
155
- if (length > 0 )
156
- tcpServerClientDataSent = tcpServerClientDataSent | (1 << index);
157
- if ((settings.debugTcpServer || PERIODIC_DISPLAY (PD_TCP_SERVER_CLIENT_DATA)) && (!inMainMenu))
158
- {
159
- PERIODIC_CLEAR (PD_TCP_SERVER_CLIENT_DATA);
160
- systemPrintf (" TCP server wrote %d bytes to %s\r\n " , length,
161
- tcpServerClientIpAddress[index].toString ().c_str ());
162
- }
163
- }
164
-
165
- // Failed to write the data
166
- else
167
- {
168
- // Done with this client connection
169
- tcpServerStopClient (index);
170
- length = 0 ;
150
+ PERIODIC_CLEAR (PD_TCP_SERVER_CLIENT_DATA);
151
+ systemPrintf (" TCP server wrote %d bytes to %s\r\n " , length,
152
+ tcpServerClientIpAddress[index].toString ().c_str ());
171
153
}
172
-
173
- xSemaphoreGive (tcpServerSemaphore);
174
154
}
155
+
156
+ // Failed to write the data
175
157
else
176
158
{
177
- systemPrintf (" tcpServerClientSendData could not get semaphore - held by %s\r\n " , tcpServerSemaphoreHolder);
159
+ // Done with this client connection
160
+ tcpServerStopClient (index);
161
+ length = 0 ;
178
162
}
179
163
}
180
164
return length;
@@ -569,62 +553,46 @@ void tcpServerUpdate()
569
553
// and respond accordingly
570
554
if (settings.enableNtripCaster || settings.baseCasterOverride )
571
555
{
572
- // Use a semaphore to prevent tcpServerClientSendData from gatecrashing
573
- if (tcpServerSemaphore == NULL )
574
- tcpServerSemaphore = xSemaphoreCreateMutex (); // Create the mutex
575
-
576
- // Take the semaphore
577
- if (xSemaphoreTake (tcpServerSemaphore, 50 / portTICK_PERIOD_MS) == pdPASS)
556
+ // Read response from client
557
+ char response[512 ];
558
+ int spot = 0 ;
559
+ while (tcpServerClient[index]->available ())
560
+ {
561
+ response[spot++] = tcpServerClient[index]->read ();
562
+ if (spot == sizeof (response))
563
+ spot = 0 ; // Wrap
564
+ }
565
+ response[spot] = ' \0 ' ; // Terminate string
566
+
567
+ if (strnstr (response, " GET / " , sizeof (response)) != NULL ) // No mount point in header
568
+ {
569
+ if (settings.debugTcpServer )
570
+ systemPrintln (" Mount point table requested." );
571
+
572
+ // Respond with a single mountpoint
573
+ const char fakeSourceTable[] =
574
+ " SOURCETABLE 200 OK\r\n Server: SparkPNT Caster/1.0\r\n Content-Type: "
575
+ " text/plain\r\n Content-Length: 96\r\n\r\n STR;SparkBase;none;RTCM "
576
+ " 3.0;none;none;none;none;none;none;none;none;none;none;none;B;N;none;none" ;
577
+
578
+ tcpServerClient[index]->write (fakeSourceTable, strlen (fakeSourceTable));
579
+
580
+ tcpServerStopClient (index); // Disconnect from client
581
+ }
582
+ else if (strnstr (response, " GET /" , sizeof (response)) != NULL ) // Mount point in header
578
583
{
579
- tcpServerSemaphoreHolder = " tcpServerUpdate" ;
580
-
581
- // Read response from client
582
- char response[512 ];
583
- int spot = 0 ;
584
- while (tcpServerClient[index]->available ())
585
- {
586
- response[spot++] = tcpServerClient[index]->read ();
587
- if (spot == sizeof (response))
588
- spot = 0 ; // Wrap
589
- }
590
- response[spot] = ' \0 ' ; // Terminate string
591
-
592
- if (strnstr (response, " GET / " , sizeof (response)) != NULL ) // No mount point in header
593
- {
594
- if (settings.debugTcpServer )
595
- systemPrintln (" Mount point table requested." );
596
-
597
- // Respond with a single mountpoint
598
- const char fakeSourceTable[] =
599
- " SOURCETABLE 200 OK\r\n Server: SparkPNT Caster/1.0\r\n Content-Type: "
600
- " text/plain\r\n Content-Length: 96\r\n\r\n STR;SparkBase;none;RTCM "
601
- " 3.0;none;none;none;none;none;none;none;none;none;none;none;B;N;none;none" ;
602
-
603
- tcpServerClient[index]->write (fakeSourceTable, strlen (fakeSourceTable));
604
-
605
- tcpServerStopClient (index); // Disconnect from client
606
- }
607
- else if (strnstr (response, " GET /" , sizeof (response)) != NULL ) // Mount point in header
608
- {
609
- // NTRIP Client is sending us their mount point. Begin sending RTCM.
610
- if (settings.debugTcpServer )
611
- systemPrintln (" NTRIP Client connected - Sending ICY 200 OK" );
612
-
613
- char confirmConnection[] = " ICY 200 OK\r\n " ;
614
- tcpServerClient[index]->write (confirmConnection, strlen (confirmConnection));
615
- }
616
- else
617
- {
618
- // Unknown response
619
- if (settings.debugTcpServer )
620
- systemPrintf (" Unknown response: %s\r\n " , response);
621
- }
622
-
623
- xSemaphoreGive (tcpServerSemaphore);
584
+ // NTRIP Client is sending us their mount point. Begin sending RTCM.
585
+ if (settings.debugTcpServer )
586
+ systemPrintln (" NTRIP Client connected - Sending ICY 200 OK" );
587
+
588
+ char confirmConnection[] = " ICY 200 OK\r\n " ;
589
+ tcpServerClient[index]->write (confirmConnection, strlen (confirmConnection));
624
590
}
625
591
else
626
592
{
627
- systemPrintf (" tcpServerUpdate could not get semaphore - held by %s\r\n " , tcpServerSemaphoreHolder);
593
+ // Unknown response
594
+ if (settings.debugTcpServer )
595
+ systemPrintf (" Unknown response: %s\r\n " , response);
628
596
}
629
597
} // settings.enableNtripCaster == true || settings.baseCasterOverride == true
630
598
0 commit comments