1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-26 09:45:28 +03:00

Merge pull request #2603 from TonyBlit/gps_sat_list_extra

Enhanced sat list for M8N/M9N
This commit is contained in:
Ivan Efimov 2021-12-20 17:43:41 -06:00 committed by GitHub
commit b396f0a667
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 224 additions and 15 deletions

View file

@ -1482,7 +1482,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": {
@ -2519,11 +2519,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": {

View file

@ -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;

View file

@ -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;
@ -64,12 +69,55 @@ TABS.gps.initialize = function (callback) {
// Update GPS Signal Strengths
const eSsTable = $('div.GPS_signal_strength table tr:not(.titles)');
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(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 = {

View file

@ -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>
@ -45,8 +45,7 @@
</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>
@ -54,95 +53,208 @@
<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>
<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>