Skip to content

Commit b396f0a

Browse files
author
Ivan Efimov
authored
Merge pull request #2603 from TonyBlit/gps_sat_list_extra
Enhanced sat list for M8N/M9N
2 parents 51d0633 + cbfeb25 commit b396f0a

File tree

4 files changed

+224
-15
lines changed

4 files changed

+224
-15
lines changed

locales/en/messages.json

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1482,7 +1482,7 @@
14821482
"description": "Option to use Galileo in the GPS configuration"
14831483
},
14841484
"configurationGPSGalileoHelp": {
1485-
"message": "When enabled, this removes the QZSS system (Japanese) and replaces it for the Galileo system (European).",
1485+
"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.",
14861486
"description": "Help text for the option to use Galileo in the GPS configuration"
14871487
},
14881488
"configurationGPSHomeOnce": {
@@ -2519,11 +2519,47 @@
25192519
"gpsSignalStr": {
25202520
"message": "Signal Strength"
25212521
},
2522+
"gpsSignalGnssId": {
2523+
"message": "Gnss ID"
2524+
},
25222525
"gpsSignalSatId": {
25232526
"message": "Sat ID"
25242527
},
2525-
"gpsSignalQty": {
2526-
"message": "Qty"
2528+
"gpsSignalStatusQly": {
2529+
"message": "Status / Quality"
2530+
},
2531+
"gnssQualityNoSignal": {
2532+
"message": "no signal"
2533+
},
2534+
"gnssQualitySearching": {
2535+
"message": "searching"
2536+
},
2537+
"gnssQualityAcquired": {
2538+
"message": "acquired"
2539+
},
2540+
"gnssQualityUnusable": {
2541+
"message": "unusable"
2542+
},
2543+
"gnssQualityLocked": {
2544+
"message": "locked"
2545+
},
2546+
"gnssQualityFullyLocked": {
2547+
"message": "fully locked"
2548+
},
2549+
"gnssUsedUnused": {
2550+
"message": "unused"
2551+
},
2552+
"gnssUsedUsed": {
2553+
"message": "used"
2554+
},
2555+
"gnssHealthyUnknown": {
2556+
"message": "unknown"
2557+
},
2558+
"gnssHealthyHealthy": {
2559+
"message": "healthy"
2560+
},
2561+
"gnssHealthyUnhealthy": {
2562+
"message": "unhealthy"
25272563
},
25282564

25292565
"motorsVoltage": {

src/css/tabs/gps.css

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
1+
.tab-gps .GPS_signal_strength table td:nth-child(2) {
2+
text-align: center;
3+
}
4+
5+
.tab-gps .GPS_signal_strength table td:nth-child(3) {
6+
text-align: center;
7+
}
8+
9+
.tab-gps .GPS_signal_strength table td:nth-child(4) {
10+
text-align: left;
11+
padding-left: 10px;
12+
}
13+
114
.tab-gps progress {
215
width: 100%;
316
border-radius: 3px;

src/js/tabs/gps.js

Lines changed: 53 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ TABS.gps.initialize = function (callback) {
4848
const lat = FC.GPS_DATA.lat / 10000000;
4949
const lon = FC.GPS_DATA.lon / 10000000;
5050
const url = `https://maps.google.com/?q=${lat},${lon}`;
51+
const gnssArray = ['GPS', 'SBAS', 'Galileo', 'BeiDou', 'IMES', 'QZSS', 'Glonass'];
52+
const qualityArray = ['gnssQualityNoSignal', 'gnssQualitySearching', 'gnssQualityAcquired', 'gnssQualityUnusable', 'gnssQualityLocked',
53+
'gnssQualityFullyLocked', 'gnssQualityFullyLocked', 'gnssQualityFullyLocked'];
54+
const usedArray = ['gnssUsedUnused', 'gnssUsedUsed'];
55+
const healthyArray = ['gnssHealthyUnknown', 'gnssHealthyHealthy', 'gnssHealthyUnhealthy', 'gnssHealthyUnknown'];
5156
let alt = FC.GPS_DATA.alt;
5257
if (semver.lt(FC.CONFIG.apiVersion, API_VERSION_1_39)) {
5358
alt = alt / 10;
@@ -64,12 +69,55 @@ TABS.gps.initialize = function (callback) {
6469
// Update GPS Signal Strengths
6570
const eSsTable = $('div.GPS_signal_strength table tr:not(.titles)');
6671

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

70-
$('td', row).eq(0).text(FC.GPS_DATA.svid[i]);
71-
$('td', row).eq(1).text(FC.GPS_DATA.quality[i]);
72-
$('td', row).eq(2).find('progress').val(FC.GPS_DATA.cno[i]);
77+
$('td', row).eq(0).text('-');
78+
$('td', row).eq(1).text(FC.GPS_DATA.svid[i]);
79+
$('td', row).eq(2).find('progress').val(FC.GPS_DATA.cno[i]);
80+
$('td', row).eq(3).text(FC.GPS_DATA.quality[i]);
81+
}
82+
// Cleanup the rest of the table
83+
for (let i = FC.GPS_DATA.chn.length; i < 32; i++) {
84+
const row = eSsTable.eq(i);
85+
86+
$('td', row).eq(0).text('-');
87+
$('td', row).eq(1).text('-');
88+
$('td', row).eq(2).find('progress').val(0);
89+
$('td', row).eq(3).text(' ');
90+
}
91+
} else {
92+
// M8N/M9N on newer firmware
93+
94+
const maxUIChannels = 32; //the list in html can only show 32 channels but future firmware could send more
95+
let channels = Math.min(maxUIChannels, FC.GPS_DATA.chn.length);
96+
97+
for (let i = 0; i < channels; i++) {
98+
const row = eSsTable.eq(i);
99+
100+
if (FC.GPS_DATA.chn[i] <= 6) {
101+
$('td', row).eq(0).text(gnssArray[FC.GPS_DATA.chn[i]]);
102+
} else {
103+
$('td', row).eq(0).text('-');
104+
}
105+
106+
if (FC.GPS_DATA.chn[i] >= 7) {
107+
$('td', row).eq(1).text('-');
108+
$('td', row).eq(2).find('progress').val(0);
109+
$('td', row).eq(3).text(' ');
110+
} else {
111+
$('td', row).eq(1).text(FC.GPS_DATA.svid[i]);
112+
$('td', row).eq(2).find('progress').val(FC.GPS_DATA.cno[i]);
113+
114+
const quality = i18n.getMessage(qualityArray[FC.GPS_DATA.quality[i] & 0x7]);
115+
const used = i18n.getMessage(usedArray[(FC.GPS_DATA.quality[i] & 0x8) >> 3]);
116+
const healthy = i18n.getMessage(healthyArray[(FC.GPS_DATA.quality[i] & 0x30) >> 4]);
117+
118+
$('td', row).eq(3).text(`${quality} | ${used} | ${healthy}`);
119+
}
120+
}
73121
}
74122

75123
const message = {

src/tabs/gps.html

Lines changed: 119 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88

99
<div class="grid-row">
10-
<div class="grid-col col3">
10+
<div class="grid-col col5">
1111
<div class="gui_box grey">
1212
<div class="gui_box_titlebar">
1313
<div class="spacer_box_title" i18n="gpsHead"></div>
@@ -45,104 +45,216 @@
4545
</table>
4646
</div>
4747
</div>
48-
</div>
49-
<div class="grid-col col3">
48+
5049
<div class="gui_box grey">
5150
<div class="gui_box_titlebar">
5251
<div class="spacer_box_title" i18n="gpsSignalStrHead"></div>
5352
</div>
5453
<div class="spacer_box GPS_signal_strength">
5554
<table class="cf_table">
5655
<tr class="titles">
57-
<td style="width: 20%;" i18n="gpsSignalSatId"></td>
58-
<td style="width: 15%;" i18n="gpsSignalQty"></td>
59-
<td style="width: 65%;" i18n="gpsSignalStr"></td>
56+
<td style="width: 12%;" i18n="gpsSignalGnssId"></td>
57+
<td style="width: 10%;" i18n="gpsSignalSatId"></td>
58+
<td style="width: 25%;" i18n="gpsSignalStr"></td>
59+
<td style="width: 53%;" i18n="gpsSignalStatusQly"></td>
60+
</tr>
61+
<tr>
62+
<td>0</td>
63+
<td>0</td>
64+
<td><progress value="0" max="99"></progress></td>
65+
<td>0</td>
66+
</tr>
67+
<tr>
68+
<td>0</td>
69+
<td>0</td>
70+
<td><progress value="0" max="99"></progress></td>
71+
<td>0</td>
72+
</tr>
73+
<tr>
74+
<td>0</td>
75+
<td>0</td>
76+
<td><progress value="0" max="99"></progress></td>
77+
<td>0</td>
78+
</tr>
79+
<tr>
80+
<td>0</td>
81+
<td>0</td>
82+
<td><progress value="0" max="99"></progress></td>
83+
<td>0</td>
84+
</tr>
85+
<tr>
86+
<td>0</td>
87+
<td>0</td>
88+
<td><progress value="0" max="99"></progress></td>
89+
<td>0</td>
90+
</tr>
91+
<tr>
92+
<td>0</td>
93+
<td>0</td>
94+
<td><progress value="0" max="99"></progress></td>
95+
<td>0</td>
96+
</tr>
97+
<tr>
98+
<td>0</td>
99+
<td>0</td>
100+
<td><progress value="0" max="99"></progress></td>
101+
<td>0</td>
102+
</tr>
103+
<tr>
104+
<td>0</td>
105+
<td>0</td>
106+
<td><progress value="0" max="99"></progress></td>
107+
<td>0</td>
108+
</tr>
109+
<tr>
110+
<td>0</td>
111+
<td>0</td>
112+
<td><progress value="0" max="99"></progress></td>
113+
<td>0</td>
114+
</tr>
115+
<tr>
116+
<td>0</td>
117+
<td>0</td>
118+
<td><progress value="0" max="99"></progress></td>
119+
<td>0</td>
60120
</tr>
61121
<tr>
62122
<td>0</td>
63123
<td>0</td>
64124
<td><progress value="0" max="99"></progress></td>
125+
<td>0</td>
65126
</tr>
66127
<tr>
67128
<td>0</td>
68129
<td>0</td>
69130
<td><progress value="0" max="99"></progress></td>
131+
<td>0</td>
70132
</tr>
71133
<tr>
72134
<td>0</td>
73135
<td>0</td>
74136
<td><progress value="0" max="99"></progress></td>
137+
<td>0</td>
75138
</tr>
76139
<tr>
77140
<td>0</td>
78141
<td>0</td>
79142
<td><progress value="0" max="99"></progress></td>
143+
<td>0</td>
80144
</tr>
81145
<tr>
82146
<td>0</td>
83147
<td>0</td>
84148
<td><progress value="0" max="99"></progress></td>
149+
<td>0</td>
85150
</tr>
86151
<tr>
87152
<td>0</td>
88153
<td>0</td>
89154
<td><progress value="0" max="99"></progress></td>
155+
<td>0</td>
90156
</tr>
91157
<tr>
92158
<td>0</td>
93159
<td>0</td>
94160
<td><progress value="0" max="99"></progress></td>
161+
<td>0</td>
95162
</tr>
96163
<tr>
97164
<td>0</td>
98165
<td>0</td>
99166
<td><progress value="0" max="99"></progress></td>
167+
<td>0</td>
100168
</tr>
101169
<tr>
102170
<td>0</td>
103171
<td>0</td>
104172
<td><progress value="0" max="99"></progress></td>
173+
<td>0</td>
105174
</tr>
106175
<tr>
107176
<td>0</td>
108177
<td>0</td>
109178
<td><progress value="0" max="99"></progress></td>
179+
<td>0</td>
110180
</tr>
111181
<tr>
112182
<td>0</td>
113183
<td>0</td>
114184
<td><progress value="0" max="99"></progress></td>
185+
<td>0</td>
186+
</tr>
187+
<tr>
188+
<td>0</td>
189+
<td>0</td>
190+
<td><progress value="0" max="99"></progress></td>
191+
<td>0</td>
115192
</tr>
116193
<tr>
117194
<td>0</td>
118195
<td>0</td>
119196
<td><progress value="0" max="99"></progress></td>
197+
<td>0</td>
120198
</tr>
121199
<tr>
122200
<td>0</td>
123201
<td>0</td>
124202
<td><progress value="0" max="99"></progress></td>
203+
<td>0</td>
125204
</tr>
126205
<tr>
127206
<td>0</td>
128207
<td>0</td>
129208
<td><progress value="0" max="99"></progress></td>
209+
<td>0</td>
130210
</tr>
131211
<tr>
132212
<td>0</td>
133213
<td>0</td>
134214
<td><progress value="0" max="99"></progress></td>
215+
<td>0</td>
216+
</tr>
217+
<tr>
218+
<td>0</td>
219+
<td>0</td>
220+
<td><progress value="0" max="99"></progress></td>
221+
<td>0</td>
222+
</tr>
223+
<tr>
224+
<td>0</td>
225+
<td>0</td>
226+
<td><progress value="0" max="99"></progress></td>
227+
<td>0</td>
228+
</tr>
229+
<tr>
230+
<td>0</td>
231+
<td>0</td>
232+
<td><progress value="0" max="99"></progress></td>
233+
<td>0</td>
234+
</tr>
235+
<tr>
236+
<td>0</td>
237+
<td>0</td>
238+
<td><progress value="0" max="99"></progress></td>
239+
<td>0</td>
240+
</tr>
241+
<tr>
242+
<td>0</td>
243+
<td>0</td>
244+
<td><progress value="0" max="99"></progress></td>
245+
<td>0</td>
135246
</tr>
136247
<tr class="noboarder">
137248
<td>0</td>
138249
<td>0</td>
139250
<td><progress value="0" max="99"></progress></td>
251+
<td>0</td>
140252
</tr>
141253
</table>
142254
</div>
143255
</div>
144256
</div>
145-
<div class="grid-col col6">
257+
<div class="grid-col col7">
146258
<div class="gui_box grey gps_map">
147259
<div class="gui_box_titlebar" style="margin-bottom: 0px;">
148260
<div class="spacer_box_title" i18n="gpsMapHead"></div>

0 commit comments

Comments
 (0)