Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 9 additions & 8 deletions Firmware/RTK_Everywhere/AP-Config/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -313,11 +313,12 @@
</div>

<div class="form-group mt-3" id="constellationCheckBoxes">
<label for="gnssConstellations">Constellations:</label>
<span class="tt" data-bs-placement="right"
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.">
<span class="icon-info-circle text-primary ms-2"></span>
</span>
<label>Constellations:
<span class="tt" data-bs-placement="right"
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.">
<span class="icon-info-circle text-primary ms-2"></span>
</span>
</label>
<div id="constellationBeiDou" class="form-check mt-3 box-margin20">
<label class="form-check-label" for="constellation_BeiDou">BeiDou</label>
<input class="form-check-input" type="checkbox" value="" id="constellation_BeiDou">
Expand Down Expand Up @@ -377,7 +378,7 @@
<div class="form-group row">
<label for="rtcmMinElev" class="col-sm-4 col-6 col-form-label">Min SV Elevation for RTCM:
<span class="tt" data-bs-placement="right"
title="Minimum elevation in degrees for a GNSS satellite to be used for RTCM corrections.">
title="Minimum elevation in degrees for a GNSS satellite to be used for RTCM corrections. Default: -90">
<span class="icon-info-circle text-primary ms-2"></span>
</span>
</label>
Expand Down Expand Up @@ -1946,7 +1947,7 @@
<div class="card card-body">

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

Expand Down Expand Up @@ -2081,7 +2082,7 @@

<div id="logFile" class="row">
<div class="mb-2">
<label for="logFile" class="form-group box-margin20">Log file name: <span
<label class="form-group box-margin20">Log file name: <span
id="logFileName" style="display:inline;">SFE_Log.ubx</span>
</label>
</div>
Expand Down
54 changes: 52 additions & 2 deletions Firmware/RTK_Everywhere/AP-Config/src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -508,6 +508,23 @@ function parseIncoming(msg) {
messageText += "<p id='" + messageName + "Error' class='inlineError'></p>";
messageText += "</div></div>";
}
else if (id.includes("messageRatePQTM")) {
// messageRatePQTM_EPE
var messageName = id;
var messageNameLabel = "";

var messageData = messageName.split('_');
messageNameLabel = messageData[1];

messageText += "<div class='form-check mt-3'>";
messageText += "<label class='form-check-label' for='" + messageName + "'>Enable " + messageNameLabel + "</label>";
messageText += "<input class='form-check-input' type='checkbox' id='" + messageName + "'>";
messageText += "</div>";

// Save the name and value as we can't set 'checked' yet. messageText has not yet been added to innerHTML
savedCheckboxNames.push(messageName);
savedCheckboxValues.push(val);
}
else if (id.includes("messageRate") || id.includes("messageIntervalRTCM")) {
// messageRateNMEA_GPDTM
// messageRateRTCMRover_RTCM1001
Expand Down Expand Up @@ -812,6 +829,14 @@ function checkMessageValueUM980Base(id) {
checkElementValue(id, 0, 65, "Must be between 0 and 65", "collapseGNSSConfigMsgBase");
}

function checkMessageValueLG290P01(id) {
checkElementValue(id, 0, 1, "Must be between 0 and 1", "collapseGNSSConfigMsg");
}

function checkMessageValueLG290P01200(id) {
checkElementValue(id, 0, 1200, "Must be between 0 and 1200", "collapseGNSSConfigMsg");
}

function collapseSection(section, caret) {
ge(section).classList.remove('show');
ge(caret).classList.remove('icon-caret-down');
Expand Down Expand Up @@ -918,6 +943,25 @@ function validateFields() {
}
}

//Check all LG290P message boxes
else if ((platformPrefix == "Postcard") || (platformPrefix == "Torch X2")) {
var messages = document.querySelectorAll('input[id^=messageRateNMEA_]');
for (let x = 0; x < messages.length; x++) {
var messageName = messages[x].id;
checkMessageValueLG290P01(messageName);
}
var messages = document.querySelectorAll('input[id^=messageRateRTCMRover_]');
for (let x = 0; x < messages.length; x++) {
var messageName = messages[x].id;
checkMessageValueLG290P01200(messageName);
}
var messages = document.querySelectorAll('input[id^=messageRateRTCMBase_]');
for (let x = 0; x < messages.length; x++) {
var messageName = messages[x].id;
checkMessageValueLG290P01200(messageName);
}
}

//Base Config
if (ge("baseTypeSurveyIn").checked == true) {
checkElementValue("observationSeconds", 60, 600, "Must be between 60 to 600", "collapseBaseConfig");
Expand Down Expand Up @@ -1434,6 +1478,12 @@ function zeroMessages() {
var messageName = messages[x].id;
ge(messageName).checked = false;
}
//match messageRatePQTM_
messages = document.querySelectorAll('input[id^=messageRatePQTM_]');
for (let x = 0; x < messages.length; x++) {
var messageName = messages[x].id;
ge(messageName).checked = false;
}
}

function zeroBaseMessages() {
Expand Down Expand Up @@ -1490,7 +1540,7 @@ function resetToSurveyingDefaults() {

ge("messageIntervalRTCMRover_RTCM1033").value = 10.0;
}
else if (platformPrefix == "Postcard") {
else if ((platformPrefix == "Postcard") || (platformPrefix == "Torch X2")) {
ge("messageRateNMEA_GPRMC").value = 1;
ge("messageRateNMEA_GPGGA").value = 1;
ge("messageRateNMEA_GPGSV").value = 1;
Expand Down Expand Up @@ -1529,7 +1579,7 @@ function resetToLoggingDefaults() {
ge("messageRateRTCMRover_RTCM1094").value = 30;
ge("messageRateRTCMRover_RTCM1124").value = 30;
}
else if (platformPrefix == "Postcard") {
else if ((platformPrefix == "Postcard") || (platformPrefix == "Torch X2")) {
ge("messageRateNMEA_GPRMC").value = 1;
ge("messageRateNMEA_GPGGA").value = 1;
ge("messageRateNMEA_GPGSV").value = 1;
Expand Down
27 changes: 27 additions & 0 deletions Firmware/RTK_Everywhere/GNSS_LG290P.ino
Original file line number Diff line number Diff line change
Expand Up @@ -556,6 +556,25 @@ bool GNSS_LG290P::configureBase()
//----------------------------------------
void GNSS_LG290P::createMessageList(String &returnText)
{
for (int messageNumber = 0; messageNumber < MAX_LG290P_NMEA_MSG; messageNumber++)
{
// Strictly, this should be bool true/false as only 0/1 values are allowed
// and a checkbox should be used to select. BUT other platforms permit
// rates higher than 1. It's way cleaner if we just use 0/1 here
returnText += "messageRateNMEA_" + String(lgMessagesNMEA[messageNumber].msgTextName) + "," +
String(settings.lg290pMessageRatesNMEA[messageNumber]) + ",";
}
for (int messageNumber = 0; messageNumber < MAX_LG290P_RTCM_MSG; messageNumber++)
{
returnText += "messageRateRTCMRover_" + String(lgMessagesRTCM[messageNumber].msgTextName) + "," +
String(settings.lg290pMessageRatesRTCMRover[messageNumber]) + ",";
}
for (int messageNumber = 0; messageNumber < MAX_LG290P_PQTM_MSG; messageNumber++)
{
// messageRatePQTM is unique to the LG290P. So we can use true/false and a checkbox
returnText += "messageRatePQTM_" + String(lgMessagesPQTM[messageNumber].msgTextName) + "," +
String(settings.lg290pMessageRatesPQTM[messageNumber] ? "true" : "false") + ",";
}
}

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

//----------------------------------------
Expand Down
2 changes: 2 additions & 0 deletions Firmware/RTK_Everywhere/GNSS_ZED.h
Original file line number Diff line number Diff line change
Expand Up @@ -526,6 +526,8 @@ class GNSS_ZED : GNSS

// Given the name of a message, return the array number
uint8_t getMessageNumberByName(const char *msgName);
uint8_t getMessageNumberByNameSkipChecks(const char *msgName);
uint8_t getMessageNumberByName(const char *msgName, bool skipPlatformChecks);

// Given the name of a message, find it, and return the rate
uint8_t getMessageRateByName(const char *msgName);
Expand Down
12 changes: 10 additions & 2 deletions Firmware/RTK_Everywhere/GNSS_ZED.ino
Original file line number Diff line number Diff line change
Expand Up @@ -1230,7 +1230,15 @@ double GNSS_ZED::getLongitude()
//----------------------------------------
uint8_t GNSS_ZED::getMessageNumberByName(const char *msgName)
{
if (present.gnss_zedf9p)
return getMessageNumberByName(msgName, false);
}
uint8_t GNSS_ZED::getMessageNumberByNameSkipChecks(const char *msgName)
{
return getMessageNumberByName(msgName, true);
}
uint8_t GNSS_ZED::getMessageNumberByName(const char *msgName, bool skipPlatformChecks)
{
if (skipPlatformChecks || present.gnss_zedf9p)
{
for (int x = 0; x < MAX_UBX_MSG; x++)
{
Expand Down Expand Up @@ -2977,7 +2985,7 @@ void inputMessageRate(uint8_t &localMessageRate, uint8_t messageNumber)
if (rate == INPUT_RESPONSE_GETNUMBER_TIMEOUT || rate == INPUT_RESPONSE_GETNUMBER_EXIT)
return;

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