Skip to content

Commit 970b8ad

Browse files
authored
Merge branch 'release_candidate' into pr/662
2 parents 49246c9 + 041c84a commit 970b8ad

27 files changed

+1714
-1115
lines changed

.github/workflows/compile-rtk-everywhere.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ jobs:
150150
run: arduino-cli compile --fqbn "esp32:esp32:esp32":DebugLevel=${{ env.DEBUG_LEVEL }},PSRAM=enabled ./Firmware/RTK_Everywhere/RTK_Everywhere.ino
151151
--build-property build.partitions=RTKEverywhere
152152
--build-property upload.maximum_size=4055040
153-
--build-property "compiler.cpp.extra_flags=-MMD -c \"-DPOINTPERFECT_LBAND_TOKEN=$POINTPERFECT_LBAND_TOKEN\" \"-DPOINTPERFECT_IP_TOKEN=$POINTPERFECT_IP_TOKEN\" \"-DPOINTPERFECT_LBAND_IP_TOKEN=$POINTPERFECT_LBAND_IP_TOKEN\" \"-DFIRMWARE_VERSION_MAJOR=$FIRMWARE_VERSION_MAJOR\" \"-DFIRMWARE_VERSION_MINOR=$FIRMWARE_VERSION_MINOR\" \"-DENABLE_DEVELOPER=${{ env.ENABLE_DEVELOPER }}\""
153+
--build-property "compiler.cpp.extra_flags=-MMD -c \"-DPOINTPERFECT_LBAND_TOKEN=$POINTPERFECT_LBAND_TOKEN\" \"-DPOINTPERFECT_IP_TOKEN=$POINTPERFECT_IP_TOKEN\" \"-DPOINTPERFECT_LBAND_IP_TOKEN=$POINTPERFECT_LBAND_IP_TOKEN\" \"-DPOINTPERFECT_RTCM_TOKEN=$POINTPERFECT_RTCM_TOKEN\" \"-DFIRMWARE_VERSION_MAJOR=$FIRMWARE_VERSION_MAJOR\" \"-DFIRMWARE_VERSION_MINOR=$FIRMWARE_VERSION_MINOR\" \"-DENABLE_DEVELOPER=${{ env.ENABLE_DEVELOPER }}\""
154154
--export-binaries
155155

156156
- name: Rename binary

Firmware/RTK_Everywhere/AP-Config/index.html

Lines changed: 42 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1190,36 +1190,50 @@
11901190

11911191
<div>
11921192
Device ID: <p id="hardwareID" style="display:inline;">N/A</p><br>
1193-
Days until keys expire: <p id="daysRemaining" style="display:inline;">No Keys</p>
11941193
</div>
11951194

1196-
<div class="form-check mt-3">
1197-
<label class="form-check-label" for="enablePointPerfectCorrections">Enable PointPerfect
1198-
Corrections </label>
1199-
<input class="form-check-input" type="checkbox" value="" id="enablePointPerfectCorrections">
1200-
<span class="tt" data-bs-placement="right"
1201-
title="Use L-Band / IP PointPerfect corrections when available. Default: Disabled">
1202-
<span class="icon-info-circle text-primary ms-2"></span>
1203-
</span>
1204-
</div>
1205-
1206-
<div id="geographicRegionDropdown">
1207-
<label for="geographicRegion">Geographic Region:</label>
1208-
<select name="geographicRegion" id="geographicRegion" class="form-dropdown mb-2">
1209-
<option value="0">US</option>
1210-
<option value="1">EU</option>
1211-
<option value="2">AU</option>
1212-
<option value="3">KR</option>
1213-
<option value="4">Japan</option>
1195+
<div id="pointPerfectServiceDropdown">
1196+
<label for="pointPerfectService">PointPerfect Service:</label>
1197+
<select name="pointPerfectService" id="pointPerfectService" class="form-dropdown mb-2">
12141198
</select>
12151199
<span class="tt" data-bs-placement="right"
1216-
title="Select your geographic region. This defines the L-Band frequency and Regional Correction topic. Default: US">
1200+
title="The device will attempt to use PointPerfect for corrections. The device must be registered through SparkFun. NTRIP/RTCM service requires WiFi. Default: Disabled">
12171201
<span class="icon-info-circle text-primary ms-2"></span>
12181202
</span>
1219-
<br>
1203+
<p id="pointPerfectServiceError" class="inlineError"></p>
12201204
</div>
12211205

1222-
<div id="ppSettingsConfig">
1206+
<div id="ppSettingsLBandNAConfig">
1207+
<div>
1208+
Days until keys expire: <p id="daysRemaining" style="display:inline;">No Keys</p>
1209+
</div>
1210+
1211+
<div class="form-check mt-3">
1212+
<label class="form-check-label" for="requestKeyUpdate"
1213+
id="pointPerfectKeyUpdateLabel">Request Key Update</label>
1214+
<input class="form-check-input" type="checkbox" value="" id="requestKeyUpdate">
1215+
<span class="tt" data-bs-placement="right"
1216+
title="When checked, the PointPerfect keys will be requested and updated at the next opportunity. Default: Disabled">
1217+
<span class="icon-info-circle text-primary ms-2"></span>
1218+
</span>
1219+
</div>
1220+
1221+
<div id="geographicRegionDropdown">
1222+
<label for="geographicRegion">Geographic Region:</label>
1223+
<select name="geographicRegion" id="geographicRegion" class="form-dropdown mb-2">
1224+
<option value="0">US</option>
1225+
<option value="1">EU</option>
1226+
<option value="2">AU</option>
1227+
<option value="3">KR</option>
1228+
<option value="4">Japan</option>
1229+
</select>
1230+
<span class="tt" data-bs-placement="right"
1231+
title="Select your geographic region. This defines the L-Band frequency and Regional Correction topic. Default: US">
1232+
<span class="icon-info-circle text-primary ms-2"></span>
1233+
</span>
1234+
<br>
1235+
</div>
1236+
12231237
<div class="form-check mt-3">
12241238
<label class="form-check-label" for="autoKeyRenewal">Auto Key Renewal </label>
12251239
<input class="form-check-input" type="checkbox" value="" id="autoKeyRenewal">
@@ -1243,15 +1257,6 @@
12431257
</div>
12441258
</div>
12451259

1246-
<div class="form-check mt-3">
1247-
<label class="form-check-label" for="requestKeyUpdate">Request Key Update </label>
1248-
<input class="form-check-input" type="checkbox" value="" id="requestKeyUpdate">
1249-
<span class="tt" data-bs-placement="right"
1250-
title="When checked, the PointPerfect keys will be requested and updated at the next opportunity. Default: Disabled">
1251-
<span class="icon-info-circle text-primary ms-2"></span>
1252-
</span>
1253-
</div>
1254-
12551260
<div id="useAssistNowCheckbox">
12561261
<div class="form-check mt-3">
12571262
<label class="form-check-label" for="useAssistNow">AssistNow </label>
@@ -2202,8 +2207,10 @@
22022207

22032208
<div id="shutdownNoChargeTimeoutMinutesCheckboxDetail">
22042209
<div class="form-check mt-3">
2205-
<label class="form-check-label" for="shutdownNoChargeTimeoutMinutes">Shutdown If Not Charging</label>
2206-
<input class="form-check-input" type="checkbox" value="" id="shutdownNoChargeTimeoutMinutesCheckbox">
2210+
<label class="form-check-label" for="shutdownNoChargeTimeoutMinutes">Shutdown If Not
2211+
Charging</label>
2212+
<input class="form-check-input" type="checkbox" value=""
2213+
id="shutdownNoChargeTimeoutMinutesCheckbox">
22072214
<span class="tt" data-bs-placement="right"
22082215
title="If enabled, device will turn off if no external charger is present. This is helpful when deploying in machinery or where a user may forget to turn the device off. Default: Disabled">
22092216
<span class="icon-info-circle text-primary ms-2"></span>
@@ -2213,7 +2220,8 @@
22132220

22142221
<div id="shutdownNoChargeTimeoutMinutesDetails" class="collapse mb-2">
22152222
<div class="form-group row">
2216-
<label for="shutdownNoChargeTimeoutMinutes" class="box-margin40 col-sm-3 col-7 col-form-label">Minutes before
2223+
<label for="shutdownNoChargeTimeoutMinutes"
2224+
class="box-margin40 col-sm-3 col-7 col-form-label">Minutes before
22172225
shutdown:
22182226
<span class="tt" data-bs-placement="right"
22192227
title="If shutdown is enabled, the device will turn off after this many minutes if no external charger is detected. Limits: 0 (disabled) to 10,080.">

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

Lines changed: 65 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,14 @@ function parseIncoming(msg) {
124124
hide("shutdownNoChargeTimeoutMinutesCheckboxDetail");
125125

126126
hide("constellationNavic"); //Not supported on ZED
127+
128+
select = ge("pointPerfectService");
129+
let newOption = new Option('Disabled', '0');
130+
select.add(newOption, undefined);
131+
newOption = new Option('Flex NTRIP/RTCM', '1');
132+
select.add(newOption, undefined);
133+
newOption = new Option('Flex L-Band North America', '2');
134+
select.add(newOption, undefined);
127135
}
128136
else if ((platformPrefix == "Facet v2") || (platformPrefix == "Facet v2 LBand")) {
129137
show("baseConfig");
@@ -186,6 +194,14 @@ function parseIncoming(msg) {
186194
ge("messageRateInfoText").setAttribute('data-bs-original-title', 'The GNSS can output NMEA and RTCMv3 at different rates. For NMEA: select a stream for each message, and set an interval for each stream. For RTCMv3: set an interval for each message group, and enable individual messages.');
187195
ge("rtcmRateInfoText").setAttribute('data-bs-original-title', 'RTCM is transmitted by the base at a default of 1Hz for messages 1005, MSM4, and 0.1Hz for 1033. This can be lowered for radios with low bandwidth or tailored to transmit any/all RTCM messages. Limits: 0.1 to 600.');
188196
ge("enableExtCorrRadioInfoText").setAttribute('data-bs-original-title', 'Enable external radio corrections: RTCMv3 on mosaic COM2. Default: False');
197+
198+
select = ge("pointPerfectService");
199+
newOption = new Option('Disabled', '0');
200+
select.add(newOption, undefined);
201+
newOption = new Option('Flex NTRIP/RTCM', '1');
202+
select.add(newOption, undefined);
203+
newOption = new Option('Flex L-Band North America', '2');
204+
select.add(newOption, undefined);
189205
}
190206
else if (platformPrefix == "Torch") {
191207
show("baseConfig");
@@ -215,6 +231,11 @@ function parseIncoming(msg) {
215231

216232
ge("rtcmRateInfoText").setAttribute('data-bs-original-title', 'RTCM is transmitted by the base at a default of 1Hz for messages 1005, 1074, 1084, 1094, 1124, and 0.1Hz for 1033. This can be lowered for radios with low bandwidth or tailored to transmit any/all RTCM messages. Limits: 0 to 20. Note: The measurement rate is overridden to 1Hz when in Base mode.');
217233

234+
select = ge("pointPerfectService");
235+
newOption = new Option('Disabled', '0');
236+
select.add(newOption, undefined);
237+
newOption = new Option('Flex NTRIP/RTCM', '1');
238+
select.add(newOption, undefined);
218239
}
219240
else if (platformPrefix == "Postcard") {
220241
show("baseConfig");
@@ -245,6 +266,12 @@ function parseIncoming(msg) {
245266
hide("minCNOConfig"); //Not supported on LG290P
246267

247268
ge("rtcmRateInfoText").setAttribute('data-bs-original-title', 'RTCM is transmitted by the base at a default of 1Hz for messages 1005, 1074, 1084, 1094, 1114, 1124, 1134. This can be lowered for radios with low bandwidth or tailored to transmit any/all RTCM messages. Limits: 0 to 20. Note: The measurement rate is overridden to 1Hz when in Base mode.');
269+
270+
select = ge("pointPerfectService");
271+
let newOption = new Option('Disabled', '0');
272+
select.add(newOption, undefined);
273+
newOption = new Option('Flex NTRIP/RTCM', '1');
274+
select.add(newOption, undefined);
248275
}
249276
}
250277
else if (id.includes("gnssFirmwareVersionInt")) {
@@ -473,8 +500,9 @@ function parseIncoming(msg) {
473500
correctionsSourceNames.push(correctionNameLabel);
474501
correctionsSourcePriorities.push(correctionPriority);
475502
}
476-
else
477-
console.log("Too many corrections sources");
503+
else {
504+
console.log("Too many corrections sources: ", correctionsSourceNames.length);
505+
}
478506
}
479507
else if (id.includes("checkingNewFirmware")) {
480508
checkingNewFirmware();
@@ -574,7 +602,7 @@ function parseIncoming(msg) {
574602
ge("enableNtripServer").dispatchEvent(new CustomEvent('change'));
575603
ge("enableNtripClient").dispatchEvent(new CustomEvent('change'));
576604
ge("dataPortChannel").dispatchEvent(new CustomEvent('change'));
577-
ge("enablePointPerfectCorrections").dispatchEvent(new CustomEvent('change'));
605+
ge("pointPerfectService").dispatchEvent(new CustomEvent('change'));
578606
ge("enableExternalPulse").dispatchEvent(new CustomEvent('change'));
579607
ge("enableExternalHardwareEventLogging").dispatchEvent(new CustomEvent('change'));
580608
ge("enableEspNow").dispatchEvent(new CustomEvent('change'));
@@ -893,15 +921,7 @@ function validateFields() {
893921
// }
894922

895923
//PointPerfect Config
896-
if (ge("enablePointPerfectCorrections").checked == true) {
897-
value = ge("pointPerfectDeviceProfileToken").value;
898-
if (value.length > 0)
899-
checkElementString("pointPerfectDeviceProfileToken", 36, 36, "Must be 36 characters", "collapsePPConfig");
900-
}
901-
else {
902-
clearElement("pointPerfectDeviceProfileToken", "");
903-
ge("autoKeyRenewal").checked = true;
904-
}
924+
checkPointPerfectService();
905925

906926
//Port Config
907927
if (ge("enableExternalPulse").checked == true) {
@@ -1062,8 +1082,8 @@ function saveConfig() {
10621082
clearSuccess('saveBtn');
10631083
}
10641084
else {
1065-
sendData();
10661085
clearError('saveBtn');
1086+
sendData();
10671087
showSuccess('saveBtn', "Saving...");
10681088
}
10691089

@@ -1082,6 +1102,30 @@ function checkConstellations() {
10821102
clearError("gnssConstellations");
10831103
}
10841104

1105+
function checkPointPerfectService() {
1106+
if (ge("pointPerfectService").value > 0) {
1107+
value = ge("pointPerfectDeviceProfileToken").value;
1108+
if (value.length > 0)
1109+
checkElementString("pointPerfectDeviceProfileToken", 36, 36, "Must be 36 characters", "collapsePPConfig");
1110+
1111+
if (networkCount() == 0) {
1112+
showError('pointPerfectService', "This PointPerfect service requires at least one WiFi network");
1113+
ge("collapsePPConfig").classList.add('show');
1114+
ge("collapseWiFiConfig").classList.add('show');
1115+
errorCount++;
1116+
}
1117+
else {
1118+
clearError("pointPerfectService");
1119+
}
1120+
1121+
}
1122+
else {
1123+
clearElement("pointPerfectDeviceProfileToken", "");
1124+
ge("autoKeyRenewal").checked = true;
1125+
clearError("pointPerfectService");
1126+
}
1127+
}
1128+
10851129
function checkBitMapValue(id, min, max, bitMap, errorText, collapseID) {
10861130
value = ge(id).value;
10871131
mask = ge(bitMap).value;
@@ -1652,12 +1696,15 @@ document.addEventListener("DOMContentLoaded", (event) => {
16521696
}
16531697
});
16541698

1655-
ge("enablePointPerfectCorrections").addEventListener("change", function () {
1656-
if (ge("enablePointPerfectCorrections").checked) {
1657-
show("ppSettingsConfig");
1699+
ge("pointPerfectService").addEventListener("change", function () {
1700+
if (ge("pointPerfectService").value == 1) { //Flex RTCM
1701+
hide("ppSettingsLBandNAConfig");
16581702
}
1659-
else {
1660-
hide("ppSettingsConfig");
1703+
else if (ge("pointPerfectService").value == 2) { //Flex L-Band NA
1704+
show("ppSettingsLBandNAConfig");
1705+
}
1706+
else { //"pointPerfectService").value == 0 //Disabled
1707+
hide("ppSettingsLBandNAConfig");
16611708
}
16621709
});
16631710

Firmware/RTK_Everywhere/Developer.ino

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ void mqttClientValidateTables() {}
155155
void httpClientPrintStatus() {}
156156
void httpClientUpdate() {}
157157
void httpClientValidateTables() {}
158+
bool pointPerfectServiceUsesKeys() {return(false);}
158159

159160
#endif // COMPILE_HTTP_CLIENT
160161

@@ -300,18 +301,6 @@ void lg290pReset() {}
300301

301302
#ifndef COMPILE_ZED
302303

303-
// MON HW Antenna Status
304-
enum sfe_ublox_antenna_status_e
305-
{
306-
SFE_UBLOX_ANTENNA_STATUS_INIT,
307-
SFE_UBLOX_ANTENNA_STATUS_DONTKNOW,
308-
SFE_UBLOX_ANTENNA_STATUS_OK,
309-
SFE_UBLOX_ANTENNA_STATUS_SHORT,
310-
SFE_UBLOX_ANTENNA_STATUS_OPEN
311-
};
312-
313-
uint8_t aStatus = SFE_UBLOX_ANTENNA_STATUS_DONTKNOW;
314-
315304
// void checkRXMCOR() {}
316305
// void pushRXMPMP() {}
317306
void convertGnssTimeToEpoch(uint32_t *epochSecs, uint32_t *epochMicros) {

0 commit comments

Comments
 (0)