Skip to content

Commit 57257e3

Browse files
authored
Merge pull request #754 from sparkfun/pcUpdates
pcUpdates : add command interface "command types" JSON blob - to describe (e.g.) message rates
2 parents 5fed834 + c192891 commit 57257e3

File tree

6 files changed

+425
-32
lines changed

6 files changed

+425
-32
lines changed

Firmware/RTK_Everywhere/AP-Config/index.html

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -313,11 +313,12 @@
313313
</div>
314314

315315
<div class="form-group mt-3" id="constellationCheckBoxes">
316-
<label for="gnssConstellations">Constellations:</label>
317-
<span class="tt" data-bs-placement="right"
318-
title="The receiver is capable of concurrently receiving signals from multiple satellites across multiple constellations. Some applications dictate the need to turn off certain constellation reception. Deselecting a given constellation will cause the receiver to ignore those signals preventing them from being used during position calculations. Default: All enabled.">
319-
<span class="icon-info-circle text-primary ms-2"></span>
320-
</span>
316+
<label>Constellations:
317+
<span class="tt" data-bs-placement="right"
318+
title="The receiver is capable of concurrently receiving signals from multiple satellites across multiple constellations. Some applications dictate the need to turn off certain constellation reception. Deselecting a given constellation will cause the receiver to ignore those signals preventing them from being used during position calculations. Default: All enabled.">
319+
<span class="icon-info-circle text-primary ms-2"></span>
320+
</span>
321+
</label>
321322
<div id="constellationBeiDou" class="form-check mt-3 box-margin20">
322323
<label class="form-check-label" for="constellation_BeiDou">BeiDou</label>
323324
<input class="form-check-input" type="checkbox" value="" id="constellation_BeiDou">
@@ -377,7 +378,7 @@
377378
<div class="form-group row">
378379
<label for="rtcmMinElev" class="col-sm-4 col-6 col-form-label">Min SV Elevation for RTCM:
379380
<span class="tt" data-bs-placement="right"
380-
title="Minimum elevation in degrees for a GNSS satellite to be used for RTCM corrections.">
381+
title="Minimum elevation in degrees for a GNSS satellite to be used for RTCM corrections. Default: -90">
381382
<span class="icon-info-circle text-primary ms-2"></span>
382383
</span>
383384
</label>
@@ -1946,7 +1947,7 @@
19461947
<div class="card card-body">
19471948

19481949
<div id="uploadNewFirmwareDiv" class="mb-2">
1949-
<label class="form-check-label" for="uploadNewFirmware">System Firmware:</label>
1950+
<label class="form-check-label">System Firmware:</label>
19501951
<span id="rtkFirmwareVersionUpgrade" style="display:inline;">v0.0</span>
19511952
</div>
19521953

@@ -2081,7 +2082,7 @@
20812082

20822083
<div id="logFile" class="row">
20832084
<div class="mb-2">
2084-
<label for="logFile" class="form-group box-margin20">Log file name: <span
2085+
<label class="form-group box-margin20">Log file name: <span
20852086
id="logFileName" style="display:inline;">SFE_Log.ubx</span>
20862087
</label>
20872088
</div>

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

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,23 @@ function parseIncoming(msg) {
508508
messageText += "<p id='" + messageName + "Error' class='inlineError'></p>";
509509
messageText += "</div></div>";
510510
}
511+
else if (id.includes("messageRatePQTM")) {
512+
// messageRatePQTM_EPE
513+
var messageName = id;
514+
var messageNameLabel = "";
515+
516+
var messageData = messageName.split('_');
517+
messageNameLabel = messageData[1];
518+
519+
messageText += "<div class='form-check mt-3'>";
520+
messageText += "<label class='form-check-label' for='" + messageName + "'>Enable " + messageNameLabel + "</label>";
521+
messageText += "<input class='form-check-input' type='checkbox' id='" + messageName + "'>";
522+
messageText += "</div>";
523+
524+
// Save the name and value as we can't set 'checked' yet. messageText has not yet been added to innerHTML
525+
savedCheckboxNames.push(messageName);
526+
savedCheckboxValues.push(val);
527+
}
511528
else if (id.includes("messageRate") || id.includes("messageIntervalRTCM")) {
512529
// messageRateNMEA_GPDTM
513530
// messageRateRTCMRover_RTCM1001
@@ -812,6 +829,14 @@ function checkMessageValueUM980Base(id) {
812829
checkElementValue(id, 0, 65, "Must be between 0 and 65", "collapseGNSSConfigMsgBase");
813830
}
814831

832+
function checkMessageValueLG290P01(id) {
833+
checkElementValue(id, 0, 1, "Must be between 0 and 1", "collapseGNSSConfigMsg");
834+
}
835+
836+
function checkMessageValueLG290P01200(id) {
837+
checkElementValue(id, 0, 1200, "Must be between 0 and 1200", "collapseGNSSConfigMsg");
838+
}
839+
815840
function collapseSection(section, caret) {
816841
ge(section).classList.remove('show');
817842
ge(caret).classList.remove('icon-caret-down');
@@ -918,6 +943,25 @@ function validateFields() {
918943
}
919944
}
920945

946+
//Check all LG290P message boxes
947+
else if ((platformPrefix == "Postcard") || (platformPrefix == "Torch X2")) {
948+
var messages = document.querySelectorAll('input[id^=messageRateNMEA_]');
949+
for (let x = 0; x < messages.length; x++) {
950+
var messageName = messages[x].id;
951+
checkMessageValueLG290P01(messageName);
952+
}
953+
var messages = document.querySelectorAll('input[id^=messageRateRTCMRover_]');
954+
for (let x = 0; x < messages.length; x++) {
955+
var messageName = messages[x].id;
956+
checkMessageValueLG290P01200(messageName);
957+
}
958+
var messages = document.querySelectorAll('input[id^=messageRateRTCMBase_]');
959+
for (let x = 0; x < messages.length; x++) {
960+
var messageName = messages[x].id;
961+
checkMessageValueLG290P01200(messageName);
962+
}
963+
}
964+
921965
//Base Config
922966
if (ge("baseTypeSurveyIn").checked == true) {
923967
checkElementValue("observationSeconds", 60, 600, "Must be between 60 to 600", "collapseBaseConfig");
@@ -1434,6 +1478,12 @@ function zeroMessages() {
14341478
var messageName = messages[x].id;
14351479
ge(messageName).checked = false;
14361480
}
1481+
//match messageRatePQTM_
1482+
messages = document.querySelectorAll('input[id^=messageRatePQTM_]');
1483+
for (let x = 0; x < messages.length; x++) {
1484+
var messageName = messages[x].id;
1485+
ge(messageName).checked = false;
1486+
}
14371487
}
14381488

14391489
function zeroBaseMessages() {
@@ -1490,7 +1540,7 @@ function resetToSurveyingDefaults() {
14901540

14911541
ge("messageIntervalRTCMRover_RTCM1033").value = 10.0;
14921542
}
1493-
else if (platformPrefix == "Postcard") {
1543+
else if ((platformPrefix == "Postcard") || (platformPrefix == "Torch X2")) {
14941544
ge("messageRateNMEA_GPRMC").value = 1;
14951545
ge("messageRateNMEA_GPGGA").value = 1;
14961546
ge("messageRateNMEA_GPGSV").value = 1;
@@ -1529,7 +1579,7 @@ function resetToLoggingDefaults() {
15291579
ge("messageRateRTCMRover_RTCM1094").value = 30;
15301580
ge("messageRateRTCMRover_RTCM1124").value = 30;
15311581
}
1532-
else if (platformPrefix == "Postcard") {
1582+
else if ((platformPrefix == "Postcard") || (platformPrefix == "Torch X2")) {
15331583
ge("messageRateNMEA_GPRMC").value = 1;
15341584
ge("messageRateNMEA_GPGGA").value = 1;
15351585
ge("messageRateNMEA_GPGSV").value = 1;

Firmware/RTK_Everywhere/GNSS_LG290P.ino

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,25 @@ bool GNSS_LG290P::configureBase()
556556
//----------------------------------------
557557
void GNSS_LG290P::createMessageList(String &returnText)
558558
{
559+
for (int messageNumber = 0; messageNumber < MAX_LG290P_NMEA_MSG; messageNumber++)
560+
{
561+
// Strictly, this should be bool true/false as only 0/1 values are allowed
562+
// and a checkbox should be used to select. BUT other platforms permit
563+
// rates higher than 1. It's way cleaner if we just use 0/1 here
564+
returnText += "messageRateNMEA_" + String(lgMessagesNMEA[messageNumber].msgTextName) + "," +
565+
String(settings.lg290pMessageRatesNMEA[messageNumber]) + ",";
566+
}
567+
for (int messageNumber = 0; messageNumber < MAX_LG290P_RTCM_MSG; messageNumber++)
568+
{
569+
returnText += "messageRateRTCMRover_" + String(lgMessagesRTCM[messageNumber].msgTextName) + "," +
570+
String(settings.lg290pMessageRatesRTCMRover[messageNumber]) + ",";
571+
}
572+
for (int messageNumber = 0; messageNumber < MAX_LG290P_PQTM_MSG; messageNumber++)
573+
{
574+
// messageRatePQTM is unique to the LG290P. So we can use true/false and a checkbox
575+
returnText += "messageRatePQTM_" + String(lgMessagesPQTM[messageNumber].msgTextName) + "," +
576+
String(settings.lg290pMessageRatesPQTM[messageNumber] ? "true" : "false") + ",";
577+
}
559578
}
560579

561580
//----------------------------------------
@@ -566,6 +585,14 @@ void GNSS_LG290P::createMessageList(String &returnText)
566585
//----------------------------------------
567586
void GNSS_LG290P::createMessageListBase(String &returnText)
568587
{
588+
for (int messageNumber = 0; messageNumber < MAX_LG290P_RTCM_MSG; messageNumber++)
589+
{
590+
// Strictly, this should be bool true/false as only 0/1 values are allowed
591+
// and a checkbox should be used to select. BUT other platforms permit
592+
// rates higher than 1. It's way cleaner if we just use 0/1 here
593+
returnText += "messageRateRTCMBase_" + String(lgMessagesRTCM[messageNumber].msgTextName) + "," +
594+
String(settings.lg290pMessageRatesRTCMBase[messageNumber]) + ",";
595+
}
569596
}
570597

571598
//----------------------------------------

Firmware/RTK_Everywhere/GNSS_ZED.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,8 @@ class GNSS_ZED : GNSS
526526

527527
// Given the name of a message, return the array number
528528
uint8_t getMessageNumberByName(const char *msgName);
529+
uint8_t getMessageNumberByNameSkipChecks(const char *msgName);
530+
uint8_t getMessageNumberByName(const char *msgName, bool skipPlatformChecks);
529531

530532
// Given the name of a message, find it, and return the rate
531533
uint8_t getMessageRateByName(const char *msgName);

Firmware/RTK_Everywhere/GNSS_ZED.ino

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1230,7 +1230,15 @@ double GNSS_ZED::getLongitude()
12301230
//----------------------------------------
12311231
uint8_t GNSS_ZED::getMessageNumberByName(const char *msgName)
12321232
{
1233-
if (present.gnss_zedf9p)
1233+
return getMessageNumberByName(msgName, false);
1234+
}
1235+
uint8_t GNSS_ZED::getMessageNumberByNameSkipChecks(const char *msgName)
1236+
{
1237+
return getMessageNumberByName(msgName, true);
1238+
}
1239+
uint8_t GNSS_ZED::getMessageNumberByName(const char *msgName, bool skipPlatformChecks)
1240+
{
1241+
if (skipPlatformChecks || present.gnss_zedf9p)
12341242
{
12351243
for (int x = 0; x < MAX_UBX_MSG; x++)
12361244
{
@@ -2977,7 +2985,7 @@ void inputMessageRate(uint8_t &localMessageRate, uint8_t messageNumber)
29772985
if (rate == INPUT_RESPONSE_GETNUMBER_TIMEOUT || rate == INPUT_RESPONSE_GETNUMBER_EXIT)
29782986
return;
29792987

2980-
while (rate < 0 || rate > 255) // 8 bit limit
2988+
while (rate < 0 || rate > 250) // 8 bit limit. Avoid 254!
29812989
{
29822990
systemPrintln("Error: Message rate out of range");
29832991
systemPrintf("Enter %s message rate (0 to disable): ", ubxMessages[messageNumber].msgTextName);

0 commit comments

Comments
 (0)