Skip to content

Commit ae71913

Browse files
committed
Add NTRIP Client
1 parent a92eb28 commit ae71913

File tree

18 files changed

+695
-246
lines changed

18 files changed

+695
-246
lines changed

Firmware/RTK_Surveyor/AP-Config/index.html

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -874,55 +874,57 @@ <h2>
874874
</div>
875875

876876
<div class="form-group row">
877-
<label for="wifiSSID" class="box-margin20 col-sm-3 col-4 col-form-label">WiFi
877+
<label for="ntripServer_wifiSSID" class="box-margin20 col-sm-3 col-4 col-form-label">WiFi
878878
SSID:</label>
879879
<div class="col-sm-8 col-7">
880-
<input type="text" class="form-control" id="wifiSSID">
881-
<p id="wifiSSIDError" class="inlineError"></p>
880+
<input type="text" class="form-control" id="ntripServer_wifiSSID">
881+
<p id="ntripServer_wifiSSIDError" class="inlineError"></p>
882882
</div>
883883
</div>
884884

885885
<div class="form-group row">
886-
<label for="wifiPW" class="box-margin20 col-sm-3 col-4 col-form-label">WiFi PW:</label>
886+
<label for="ntripServer_wifiPW" class="box-margin20 col-sm-3 col-4 col-form-label">WiFi
887+
PW:</label>
887888
<div class="col-sm-8 col-7">
888-
<input type="text" class="form-control" id="wifiPW">
889-
<p id="wifiPWError" class="inlineError"></p>
889+
<input type="text" class="form-control" id="ntripServer_wifiPW">
890+
<p id="ntripServer_wifiPWError" class="inlineError"></p>
890891
</div>
891892
</div>
892893

893894
<div class="form-group row">
894-
<label for="casterHost" class="box-margin20 col-sm-3 col-5 col-form-label">Caster
895+
<label for="ntripServer_CasterHost" class="box-margin20 col-sm-3 col-5 col-form-label">Caster
895896
Host:</label>
896897
<div class="col-sm-8 col-6">
897-
<input type="text" class="form-control" id="casterHost">
898-
<p id="casterHostError" class="inlineError"></p>
898+
<input type="text" class="form-control" id="ntripServer_CasterHost">
899+
<p id="ntripServer_CasterHostError" class="inlineError"></p>
899900
</div>
900901
</div>
901902

902903
<div class="form-group row">
903-
<label for="casterPort" class="box-margin20 col-sm-3 col-5 col-form-label">Caster
904+
<label for="ntripServer_CasterPort" class="box-margin20 col-sm-3 col-5 col-form-label">Caster
904905
Port:</label>
905906
<div class="col-sm-8 col-6">
906-
<input type="text" class="form-control" id="casterPort">
907-
<p id="casterPortError" class="inlineError"></p>
907+
<input type="text" class="form-control" id="ntripServer_CasterPort">
908+
<p id="ntripServer_CasterPortError" class="inlineError"></p>
908909
</div>
909910
</div>
910911

911912
<div class="form-group row">
912-
<label for="mountPointUpload" class="box-margin20 col-sm-3 col-5 col-form-label">Mount
913+
<label for="ntripServer_MountPoint" class="box-margin20 col-sm-3 col-5 col-form-label">Mount
913914
Point:</label>
914915
<div class="col-sm-8 col-6">
915-
<input type="text" class="form-control" id="mountPointUpload">
916-
<p id="mountPointUploadError" class="inlineError"></p>
916+
<input type="text" class="form-control" id="ntripServer_MountPoint">
917+
<p id="ntripServer_MountPointError" class="inlineError"></p>
917918
</div>
918919
</div>
919920

920921
<div class="form-group row">
921-
<label for="mountPointUploadPW" class="box-margin20 col-sm-4 col-6 col-form-label">Mount Point
922+
<label for="ntripServer_MountPointPW" class="box-margin20 col-sm-4 col-6 col-form-label">Mount
923+
Point
922924
PW:</label>
923925
<div class="col-sm-7 col-5">
924-
<input type="text" class="form-control" id="mountPointUploadPW">
925-
<p id="mountPointUploadPWError" class="inlineError"></p>
926+
<input type="text" class="form-control" id="ntripServer_MountPointPW">
927+
<p id="ntripServer_MountPointPWError" class="inlineError"></p>
926928
</div>
927929
</div>
928930
</div>

Firmware/RTK_Surveyor/AP-Config/src/main.js

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -293,12 +293,12 @@ function validateFields() {
293293
checkElementValue("fixedLong", -180, 180, "Must be -180 to 180", "collapseBaseConfig");
294294
checkElementValue("fixedAltitude", 0, 8849, "Must be 0 to 8849", "collapseBaseConfig");
295295

296-
checkElementString("wifiSSID", 1, 30, "Must be 1 to 30 characters", "collapseBaseConfig");
297-
checkElementString("wifiPW", 0, 30, "Must be 0 to 30 characters", "collapseBaseConfig");
298-
checkElementString("casterHost", 1, 30, "Must be 1 to 30 characters", "collapseBaseConfig");
299-
checkElementValue("casterPort", 1, 99999, "Must be 1 to 99999", "collapseBaseConfig");
300-
checkElementString("mountPointUpload", 1, 30, "Must be 1 to 30 characters", "collapseBaseConfig");
301-
checkElementString("mountPointUploadPW", 1, 30, "Must be 1 to 30 characters", "collapseBaseConfig");
296+
checkElementString("ntripServer_wifiSSID", 1, 30, "Must be 1 to 30 characters", "collapseBaseConfig");
297+
checkElementString("ntripServer_wifiPW", 0, 30, "Must be 0 to 30 characters", "collapseBaseConfig");
298+
checkElementString("ntripServer_CasterHost", 1, 30, "Must be 1 to 30 characters", "collapseBaseConfig");
299+
checkElementValue("ntripServer_CasterPort", 1, 99999, "Must be 1 to 99999", "collapseBaseConfig");
300+
checkElementString("ntripServer_MountPoint", 1, 30, "Must be 1 to 30 characters", "collapseBaseConfig");
301+
checkElementString("ntripServer_MountPointPW", 1, 30, "Must be 1 to 30 characters", "collapseBaseConfig");
302302

303303
//System Config
304304
checkElementValue("maxLogTime_minutes", 1, 2880, "Must be 1 to 2880", "collapseSystemConfig");
@@ -610,21 +610,21 @@ document.addEventListener("DOMContentLoaded", (event) => {
610610
ge("enableNtripServer").addEventListener("change", function () {
611611
if (ge("enableNtripServer").checked) {
612612
//Enable NTRIP inputs
613-
ge("wifiSSID").disabled = false;
614-
ge("wifiPW").disabled = false;
615-
ge("casterHost").disabled = false;
616-
ge("casterPort").disabled = false;
617-
ge("mountPointUpload").disabled = false;
618-
ge("mountPointUploadPW").disabled = false;
613+
ge("ntripServer_wifiSSID").disabled = false;
614+
ge("ntripServer_wifiPW").disabled = false;
615+
ge("ntripServer_CasterHost").disabled = false;
616+
ge("ntripServer_CasterPort").disabled = false;
617+
ge("ntripServer_MountPoint").disabled = false;
618+
ge("ntripServer_MountPointPW").disabled = false;
619619
}
620620
else {
621621
//Disable NTRIP inputs
622-
ge("wifiSSID").disabled = true;
623-
ge("wifiPW").disabled = true;
624-
ge("casterHost").disabled = true;
625-
ge("casterPort").disabled = true;
626-
ge("mountPointUpload").disabled = true;
627-
ge("mountPointUploadPW").disabled = true;
622+
ge("ntripServer_wifiSSID").disabled = true;
623+
ge("ntripServer_wifiPW").disabled = true;
624+
ge("ntripServer_CasterHost").disabled = true;
625+
ge("ntripServer_CasterPort").disabled = true;
626+
ge("ntripServer_MountPoint").disabled = true;
627+
ge("ntripServer_MountPointPW").disabled = true;
628628
}
629629
});
630630

Firmware/RTK_Surveyor/Base.ino

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ bool configureUbloxModuleBase()
2626

2727
i2cGNSS.checkUblox(); //Regularly poll to get latest data and any RTCM
2828

29+
i2cGNSS.setNMEAGPGGAcallbackPtr(NULL); // Disable GPGGA call back that may have been set during Rover Client mode
30+
i2cGNSS.disableNMEAMessage(UBX_NMEA_GGA, COM_PORT_I2C); // Disable NMEA message
31+
2932
if (i2cGNSS.getSurveyInActive() == true)
3033
{
3134
log_d("Disabling survey");
@@ -250,9 +253,9 @@ void SFE_UBLOX_GNSS::processRTCM(uint8_t incoming)
250253
}
251254

252255
#ifdef COMPILE_WIFI
253-
if (caster.connected() == true)
256+
if (ntripServer.connected() == true)
254257
{
255-
caster.write(incoming); //Send this byte to socket
258+
ntripServer.write(incoming); //Send this byte to socket
256259
casterBytesSent++;
257260
lastServerSent_ms = millis();
258261
}

Firmware/RTK_Surveyor/Display.ino

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,17 @@ void updateDisplay()
3030
case (STATE_ROVER_RTK_FIX):
3131
paintRoverRTKFix();
3232
break;
33+
34+
case (STATE_ROVER_CLIENT_WIFI_STARTED):
35+
paintRoverWiFiStarted();
36+
break;
37+
case (STATE_ROVER_CLIENT_WIFI_CONNECTED):
38+
paintRoverWiFiStarted();
39+
break;
40+
case (STATE_ROVER_CLIENT_STARTED):
41+
paintRoverWiFiStarted();
42+
break;
43+
3344
case (STATE_BASE_NOT_STARTED):
3445
//Do nothing. Static display shown during state change.
3546
break;
@@ -230,7 +241,7 @@ void paintWirelessIcon()
230241
wifiIconDisplayed = true;
231242

232243
//Draw the icon
233-
displayBitmap(6, 1, WiFi_Symbol_Width, WiFi_Symbol_Height, WiFi_Symbol);
244+
displayBitmap(0, 1, WiFi_Symbol_Width, WiFi_Symbol_Height, WiFi_Symbol);
234245
}
235246
else
236247
wifiIconDisplayed = false;
@@ -239,7 +250,14 @@ void paintWirelessIcon()
239250
else if (radioState == WIFI_CONNECTED)
240251
{
241252
//Solid WiFi icon
242-
displayBitmap(6, 1, WiFi_Symbol_Width, WiFi_Symbol_Height, WiFi_Symbol);
253+
displayBitmap(0, 1, WiFi_Symbol_Width, WiFi_Symbol_Height, WiFi_Symbol);
254+
255+
//If we are connected to NTRIP Client, show download arrow
256+
if(online.ntripClient == true)
257+
displayBitmap(18, 1, DownloadArrow_Width, DownloadArrow_Height, DownloadArrow);
258+
259+
oled.line(0, 11, 16, 11);
260+
243261
}
244262
else
245263
{
@@ -480,7 +498,6 @@ void paintSIV()
480498
if (online.display == true && online.gnss == true)
481499
{
482500
//Blink satellite dish icon if we don't have a fix
483-
uint8_t fixType = fixType;
484501
if (fixType == 3 || fixType == 4 || fixType == 5) //3D, 3D+DR, or Time
485502
{
486503
//Fix, turn on icon
@@ -509,13 +526,9 @@ void paintSIV()
509526
oled.print(":");
510527

511528
if (fixType == 0) //0 = No Fix
512-
{
513529
oled.print("0");
514-
}
515530
else
516-
{
517531
oled.print(numSV);
518-
}
519532

520533
paintResets();
521534
} //End gnss online
@@ -672,6 +685,25 @@ void paintRoverRTKFix()
672685
}
673686
}
674687

688+
//Display Blinking WiFi
689+
void paintRoverWiFiStarted()
690+
{
691+
if (online.display == true)
692+
{
693+
paintBatteryLevel(); //Top right corner
694+
695+
paintWirelessIcon(); //Top left corner
696+
697+
paintBaseState(); //Top center
698+
699+
paintHorizontalAccuracy();
700+
701+
paintSIV();
702+
703+
paintLogging();
704+
}
705+
}
706+
675707
//Start of base / survey in / NTRIP mode
676708
//Screen is displayed while we are waiting for horz accuracy to drop to appropriate level
677709
//Blink crosshair icon until we have we have horz accuracy < user defined level

Firmware/RTK_Surveyor/Form.ino

Lines changed: 59 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -348,17 +348,25 @@ void createSettingsString(char* settingsCSV)
348348
stringRecord(settingsCSV, "fixedAltitude", settings.fixedAltitude, 4);
349349

350350
stringRecord(settingsCSV, "enableNtripServer", settings.enableNtripServer);
351-
stringRecord(settingsCSV, "casterHost", settings.casterHost);
352-
stringRecord(settingsCSV, "casterPort", settings.casterPort);
353-
stringRecord(settingsCSV, "casterUser", settings.casterUser);
354-
stringRecord(settingsCSV, "casterUserPW", settings.casterUserPW);
355-
stringRecord(settingsCSV, "mountPointUpload", settings.mountPointUpload);
356-
stringRecord(settingsCSV, "mountPointUploadPW", settings.mountPointUploadPW);
357-
stringRecord(settingsCSV, "mountPointDownload", settings.mountPointDownload);
358-
stringRecord(settingsCSV, "mountPointDownloadPW", settings.mountPointDownloadPW);
359-
stringRecord(settingsCSV, "casterTransmitGGA", settings.casterTransmitGGA);
360-
stringRecord(settingsCSV, "wifiSSID", settings.wifiSSID);
361-
stringRecord(settingsCSV, "wifiPW", settings.wifiPW);
351+
stringRecord(settingsCSV, "ntripServer_CasterHost", settings.ntripServer_CasterHost);
352+
stringRecord(settingsCSV, "ntripServer_CasterPort", settings.ntripServer_CasterPort);
353+
stringRecord(settingsCSV, "ntripServer_CasterUser", settings.ntripServer_CasterUser);
354+
stringRecord(settingsCSV, "ntripServer_CasterUserPW", settings.ntripServer_CasterUserPW);
355+
stringRecord(settingsCSV, "ntripServer_MountPoint", settings.ntripServer_MountPoint);
356+
stringRecord(settingsCSV, "ntripServer_MountPointPW", settings.ntripServer_MountPointPW);
357+
stringRecord(settingsCSV, "ntripServer_wifiSSID", settings.ntripServer_wifiSSID);
358+
stringRecord(settingsCSV, "ntripServer_wifiPW", settings.ntripServer_wifiPW);
359+
360+
stringRecord(settingsCSV, "enableNtripClient", settings.enableNtripClient);
361+
stringRecord(settingsCSV, "ntripClient_CasterHost", settings.ntripClient_CasterHost);
362+
stringRecord(settingsCSV, "ntripClient_CasterPort", settings.ntripClient_CasterPort);
363+
stringRecord(settingsCSV, "ntripClient_CasterUser", settings.ntripClient_CasterUser);
364+
stringRecord(settingsCSV, "ntripClient_CasterUserPW", settings.ntripClient_CasterUserPW);
365+
stringRecord(settingsCSV, "ntripClient_MountPoint", settings.ntripClient_MountPoint);
366+
stringRecord(settingsCSV, "ntripClient_MountPointPW", settings.ntripClient_MountPointPW);
367+
stringRecord(settingsCSV, "ntripClient_wifiSSID", settings.ntripClient_wifiSSID);
368+
stringRecord(settingsCSV, "ntripClient_wifiPW", settings.ntripClient_wifiPW);
369+
stringRecord(settingsCSV, "ntripClient_TransmitGGA", settings.ntripClient_TransmitGGA);
362370

363371
//Sensor Fusion Config
364372
stringRecord(settingsCSV, "enableSensorFusion", settings.enableSensorFusion);
@@ -440,30 +448,6 @@ void updateSettingWithValue(const char *settingName, const char* settingValueStr
440448
settings.dataPortBaud = settingValue;
441449
else if (strcmp(settingName, "radioPortBaud") == 0)
442450
settings.radioPortBaud = settingValue;
443-
else if (strcmp(settingName, "enableNtripServer") == 0)
444-
settings.enableNtripServer = settingValueBool;
445-
else if (strcmp(settingName, "casterHost") == 0)
446-
strcpy(settings.casterHost, settingValueStr);
447-
else if (strcmp(settingName, "casterPort") == 0)
448-
settings.casterPort = settingValue;
449-
else if (strcmp(settingName, "casterUser") == 0)
450-
strcpy(settings.casterUser, settingValueStr);
451-
else if (strcmp(settingName, "casterUserPW") == 0)
452-
strcpy(settings.casterUserPW, settingValueStr);
453-
else if (strcmp(settingName, "mountPointUpload") == 0)
454-
strcpy(settings.mountPointUpload, settingValueStr);
455-
else if (strcmp(settingName, "mountPointUploadPW") == 0)
456-
strcpy(settings.mountPointUploadPW, settingValueStr);
457-
else if (strcmp(settingName, "mountPointDownload") == 0)
458-
strcpy(settings.mountPointDownload, settingValueStr);
459-
else if (strcmp(settingName, "mountPointDownloadPW") == 0)
460-
strcpy(settings.mountPointDownloadPW, settingValueStr);
461-
else if (strcmp(settingName, "casterTransmitGGA") == 0)
462-
settings.casterTransmitGGA = settingValueBool;
463-
else if (strcmp(settingName, "wifiSSID") == 0)
464-
strcpy(settings.wifiSSID, settingValueStr);
465-
else if (strcmp(settingName, "wifiPW") == 0)
466-
strcpy(settings.wifiPW, settingValueStr);
467451
else if (strcmp(settingName, "enableLogging") == 0)
468452
settings.enableLogging = settingValueBool;
469453
else if (strcmp(settingName, "dataPortChannel") == 0)
@@ -488,6 +472,46 @@ void updateSettingWithValue(const char *settingName, const char* settingValueStr
488472
else if (strcmp(settingName, "profileName") == 0)
489473
strcpy(settings.profileName, settingValueStr);
490474

475+
else if (strcmp(settingName, "enableNtripServer") == 0)
476+
settings.enableNtripServer = settingValueBool;
477+
else if (strcmp(settingName, "ntripServer_CasterHost") == 0)
478+
strcpy(settings.ntripServer_CasterHost, settingValueStr);
479+
else if (strcmp(settingName, "ntripServer_CasterPort") == 0)
480+
settings.ntripServer_CasterPort = settingValue;
481+
else if (strcmp(settingName, "ntripServer_CasterUser") == 0)
482+
strcpy(settings.ntripServer_CasterUser, settingValueStr);
483+
else if (strcmp(settingName, "ntripServer_CasterUserPW") == 0)
484+
strcpy(settings.ntripServer_CasterUserPW, settingValueStr);
485+
else if (strcmp(settingName, "ntripServer_MountPoint") == 0)
486+
strcpy(settings.ntripServer_MountPoint, settingValueStr);
487+
else if (strcmp(settingName, "ntripServer_MountPointPW") == 0)
488+
strcpy(settings.ntripServer_MountPointPW, settingValueStr);
489+
else if (strcmp(settingName, "ntripServer_wifiSSID") == 0)
490+
strcpy(settings.ntripServer_wifiSSID, settingValueStr);
491+
else if (strcmp(settingName, "ntripServer_wifiPW") == 0)
492+
strcpy(settings.ntripServer_wifiPW, settingValueStr);
493+
494+
else if (strcmp(settingName, "enableNtripClient") == 0)
495+
settings.enableNtripClient = settingValueBool;
496+
else if (strcmp(settingName, "ntripClient_CasterHost") == 0)
497+
strcpy(settings.ntripClient_CasterHost, settingValueStr);
498+
else if (strcmp(settingName, "ntripClient_CasterPort") == 0)
499+
settings.ntripClient_CasterPort = settingValue;
500+
else if (strcmp(settingName, "ntripClient_CasterUser") == 0)
501+
strcpy(settings.ntripClient_CasterUser, settingValueStr);
502+
else if (strcmp(settingName, "ntripClient_CasterUserPW") == 0)
503+
strcpy(settings.ntripClient_CasterUserPW, settingValueStr);
504+
else if (strcmp(settingName, "ntripClient_MountPoint") == 0)
505+
strcpy(settings.ntripClient_MountPoint, settingValueStr);
506+
else if (strcmp(settingName, "ntripClient_MountPointPW") == 0)
507+
strcpy(settings.ntripClient_MountPointPW, settingValueStr);
508+
else if (strcmp(settingName, "ntripClient_wifiSSID") == 0)
509+
strcpy(settings.ntripClient_wifiSSID, settingValueStr);
510+
else if (strcmp(settingName, "ntripClient_wifiPW") == 0)
511+
strcpy(settings.ntripClient_wifiPW, settingValueStr);
512+
else if (strcmp(settingName, "ntripClient_TransmitGGA") == 0)
513+
settings.ntripClient_TransmitGGA = settingValueBool;
514+
491515
//Unused variables - read to avoid errors
492516
else if (strcmp(settingName, "measurementRateSec") == 0) {}
493517
else if (strcmp(settingName, "baseTypeSurveyIn") == 0) {}

0 commit comments

Comments
 (0)