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
42 changes: 39 additions & 3 deletions locales/en/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -1455,7 +1455,7 @@
"description": "Option to use Galileo in the GPS configuration"
},
"configurationGPSGalileoHelp": {
"message": "When enabled, this removes the QZSS system (Japanese) and replaces it for the Galileo system (European).",
"message": "When enabled, the GPS module will also track the Galileo satellite system, usually resulting in more locked satellites. On Betaflight 4.2.x or earlier, it also disables the QZSS augmentation system.",
"description": "Help text for the option to use Galileo in the GPS configuration"
},
"configurationGPSHomeOnce": {
Expand Down Expand Up @@ -2432,11 +2432,47 @@
"gpsSignalStr": {
"message": "Signal Strength"
},
"gpsSignalGnssId": {
"message": "Gnss ID"
},
"gpsSignalSatId": {
"message": "Sat ID"
},
"gpsSignalQty": {
"message": "Qty"
"gpsSignalStatusQly": {
"message": "Status / Quality"
},
"gnssQualityNoSignal": {
"message": "no signal"
},
"gnssQualitySearching": {
"message": "searching"
},
"gnssQualityAcquired": {
"message": "acquired"
},
"gnssQualityUnusable": {
"message": "unusable"
},
"gnssQualityLocked": {
"message": "locked"
},
"gnssQualityFullyLocked": {
"message": "fully locked"
},
"gnssUsedUnused": {
"message": "unused"
},
"gnssUsedUsed": {
"message": "used"
},
"gnssHealthyUnknown": {
"message": "unknown"
},
"gnssHealthyHealthy": {
"message": "healthy"
},
"gnssHealthyUnhealthy": {
"message": "unhealthy"
},

"motorsVoltage": {
Expand Down
13 changes: 13 additions & 0 deletions src/css/tabs/gps.css
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
.tab-gps .GPS_signal_strength table td:nth-child(2) {
text-align: center;
}

.tab-gps .GPS_signal_strength table td:nth-child(3) {
text-align: center;
}

.tab-gps .GPS_signal_strength table td:nth-child(4) {
text-align: left;
padding-left: 10px;
}

.tab-gps progress {
width: 100%;
border-radius: 3px;
Expand Down
58 changes: 53 additions & 5 deletions src/js/tabs/gps.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ TABS.gps.initialize = function (callback) {
const lat = FC.GPS_DATA.lat / 10000000;
const lon = FC.GPS_DATA.lon / 10000000;
const url = `https://maps.google.com/?q=${lat},${lon}`;
const gnssArray = ['GPS', 'SBAS', 'Galileo', 'BeiDou', 'IMES', 'QZSS', 'Glonass'];
const qualityArray = ['gnssQualityNoSignal', 'gnssQualitySearching', 'gnssQualityAcquired', 'gnssQualityUnusable', 'gnssQualityLocked',
'gnssQualityFullyLocked', 'gnssQualityFullyLocked', 'gnssQualityFullyLocked'];
const usedArray = ['gnssUsedUnused', 'gnssUsedUsed'];
const healthyArray = ['gnssHealthyUnknown', 'gnssHealthyHealthy', 'gnssHealthyUnhealthy', 'gnssHealthyUnknown'];
let alt = FC.GPS_DATA.alt;
if (semver.lt(FC.CONFIG.apiVersion, API_VERSION_1_39)) {
alt = alt / 10;
Expand All @@ -64,12 +69,55 @@ TABS.gps.initialize = function (callback) {
// Update GPS Signal Strengths
const eSsTable = $('div.GPS_signal_strength table tr:not(.titles)');

for (let i = 0; i < FC.GPS_DATA.chn.length; i++) {
const row = eSsTable.eq(i);
if (FC.GPS_DATA.chn.length <= 16) {
// Legacy code path: old BF firmware or old ublox module
for (let i = 0; i < FC.GPS_DATA.chn.length; i++) {
const row = eSsTable.eq(i);

$('td', row).eq(0).text(FC.GPS_DATA.svid[i]);
$('td', row).eq(1).text(FC.GPS_DATA.quality[i]);
$('td', row).eq(2).find('progress').val(FC.GPS_DATA.cno[i]);
$('td', row).eq(0).text('-');
$('td', row).eq(1).text(FC.GPS_DATA.svid[i]);
$('td', row).eq(2).find('progress').val(FC.GPS_DATA.cno[i]);
$('td', row).eq(3).text(FC.GPS_DATA.quality[i]);
}
// Cleanup the rest of the table
for (let i = FC.GPS_DATA.chn.length; i < 32; i++) {
const row = eSsTable.eq(i);

$('td', row).eq(0).text('-');
$('td', row).eq(1).text('-');
$('td', row).eq(2).find('progress').val(0);
$('td', row).eq(3).text(' ');
}
} else {
// M8N/M9N on newer firmware

const maxUIChannels = 32; //the list in html can only show 32 channels but future firmware could send more
let channels = Math.min(maxUIChannels, FC.GPS_DATA.chn.length);

for (let i = 0; i < channels; i++) {
const row = eSsTable.eq(i);

if (FC.GPS_DATA.chn[i] <= 6) {
$('td', row).eq(0).text(gnssArray[FC.GPS_DATA.chn[i]]);
} else {
$('td', row).eq(0).text('-');
}

if (FC.GPS_DATA.chn[i] >= 7) {
$('td', row).eq(1).text('-');
$('td', row).eq(2).find('progress').val(0);
$('td', row).eq(3).text(' ');
} else {
$('td', row).eq(1).text(FC.GPS_DATA.svid[i]);
$('td', row).eq(2).find('progress').val(FC.GPS_DATA.cno[i]);

const quality = i18n.getMessage(qualityArray[FC.GPS_DATA.quality[i] & 0x7]);
const used = i18n.getMessage(usedArray[(FC.GPS_DATA.quality[i] & 0x8) >> 3]);
const healthy = i18n.getMessage(healthyArray[(FC.GPS_DATA.quality[i] & 0x30) >> 4]);

$('td', row).eq(3).text(`${quality} | ${used} | ${healthy}`);
}
}
}

const message = {
Expand Down
126 changes: 119 additions & 7 deletions src/tabs/gps.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@


<div class="grid-row">
<div class="grid-col col3">
<div class="grid-col col5">
<div class="gui_box grey">
<div class="gui_box_titlebar">
<div class="spacer_box_title" i18n="gpsHead"></div>
Expand Down Expand Up @@ -45,104 +45,216 @@
</table>
</div>
</div>
</div>
<div class="grid-col col3">

<div class="gui_box grey">
<div class="gui_box_titlebar">
<div class="spacer_box_title" i18n="gpsSignalStrHead"></div>
</div>
<div class="spacer_box GPS_signal_strength">
<table class="cf_table">
<tr class="titles">
<td style="width: 20%;" i18n="gpsSignalSatId"></td>
<td style="width: 15%;" i18n="gpsSignalQty"></td>
<td style="width: 65%;" i18n="gpsSignalStr"></td>
<td style="width: 12%;" i18n="gpsSignalGnssId"></td>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The use of styles into html part is old, now we try to move all styles in to css file.

Copy link
Member

@chmelevskij chmelevskij Dec 20, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wouldn't block this though. Both inline styles and styles files are redundant if we just move to vue/component based architecture, so one way or the other re-work will be needed.

<td style="width: 10%;" i18n="gpsSignalSatId"></td>
<td style="width: 25%;" i18n="gpsSignalStr"></td>
<td style="width: 53%;" i18n="gpsSignalStatusQly"></td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
<tr class="noboarder">
<td>0</td>
<td>0</td>
<td><progress value="0" max="99"></progress></td>
<td>0</td>
</tr>
</table>
</div>
</div>
</div>
<div class="grid-col col6">
<div class="grid-col col7">
<div class="gui_box grey gps_map">
<div class="gui_box_titlebar" style="margin-bottom: 0px;">
<div class="spacer_box_title" i18n="gpsMapHead"></div>
Expand Down