1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-26 15:54:15 +01:00

LP-452 Support the Galileo GNSS on U-blox NEO M8N receiver.

The receiver needs to run firmware 3.01 for Galileo to be supported.
Firmware 3.01 supports up to 3 simultaneous constellations.
By default only GPS and Glonass are enabled.
This commit updates the GCS to display the Galileo constellation in a separate color.
This commit is contained in:
Jan NIJS 2016-12-17 00:01:55 +01:00
parent 33188bd78e
commit 58e15feb08
4 changed files with 116 additions and 6 deletions

View File

@ -118,7 +118,7 @@ void GpsConstellationWidget::updateSat(int index, int prn, int elevation, int az
}
// TODO: add range checking
satellites[index][0] = prn;
satellites[index][0] = prn; // UBX SVID
satellites[index][1] = elevation;
satellites[index][2] = azimuth;
satellites[index][3] = snr;
@ -129,7 +129,13 @@ void GpsConstellationWidget::updateSat(int index, int prn, int elevation, int az
-satIcons[index]->boundingRect().center().y());
satIcons[index]->setTransform(QTransform::fromTranslate(opd.x(), opd.y()), false);
// Show normal GPS, SBAS/QZSS (120-158,193-197 range), BeiDou (33-64, 159-163) or GLONASS (65-96, 255 if unidentified)
// Show satellite constellations in a separate color
// The UBX SVID numbers are defined in appendix A of u-blox8-M8_ReceiverDescrProtSpec_(UBX-13003221)_Public.pdf
// GPS = default
// SBAS 120-158, QZSS 193-197
// BeiDou 33-64, 159-163
// GLONASS 65-96, 255 if unidentified
// Galileo 211-246
if ((prn > 119 && prn < 159) || (prn > 192 && prn < 198)) {
if (snr) {
satIcons[index]->setElementId("satellite-sbas");
@ -148,6 +154,12 @@ void GpsConstellationWidget::updateSat(int index, int prn, int elevation, int az
} else {
satIcons[index]->setElementId("sat-beidou-notSeen");
}
} else if (prn > 210 && prn < 247) {
if (snr) {
satIcons[index]->setElementId("satellite-galileo");
} else {
satIcons[index]->setElementId("sat-galileo-notSeen");
}
} else {
if (snr) {
satIcons[index]->setElementId("satellite");

View File

@ -127,7 +127,7 @@
</palette>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Displays the SNR for each detected sat. GPS satellites are shown in green, GLONASS in cyan, BeiDou in red and SBAS/QZSS in orange. Satellite number (PRN) is displayed inside the bar. Sat SNR is displayed above (in dBHz)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Displays the SNR for each detected sat. GPS satellites are shown in green, GLONASS in cyan, BeiDou in red, Galileo in magenta and SBAS/QZSS in orange. Satellite number (PRN) is displayed inside the bar. Sat SNR is displayed above (in dBHz)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>

View File

@ -104,14 +104,21 @@ void GpsSnrWidget::drawSat(int index)
QRectF boxRect = boxes[index]->boundingRect();
// Change color for SBAS & QZSS 120-158, 193-197 range
// GLONASS range 65-96 or 255, BeiDou 33-64 or 159-163
// Show satellite constellations in a separate color
// The UBX SVID numbers are defined in appendix A of u-blox8-M8_ReceiverDescrProtSpec_(UBX-13003221)_Public.pdf
// GPS = default
// SBAS 120-158, QZSS 193-197
// BeiDou 33-64, 159-163
// GLONASS 65-96, 255 if unidentified
// Galileo 211-246
if ((prn > 119 && prn < 159) || (prn > 192 && prn < 198)) {
boxes[index]->setBrush(QColor("#fd700b"));
} else if ((prn > 64 && prn < 97) || 255 == prn) {
boxes[index]->setBrush(QColor("Cyan"));
} else if ((prn > 32 && prn < 65) || (prn > 158 && prn < 164)) {
boxes[index]->setBrush(QColor("Red"));
} else if (prn > 210 && prn < 247) {
boxes[index]->setBrush(QColor("#e162f3"));
} else {
boxes[index]->setBrush(QColor("Green"));
}

View File

@ -14,10 +14,21 @@
height="691.54303"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
inkscape:version="0.91 r13725"
sodipodi:docname="gpsEarth.svg">
<defs
id="defs4">
<linearGradient
id="linearGradient4512">
<stop
id="stop4514"
offset="0"
style="stop-color:#ce00e0;stop-opacity:1" />
<stop
id="stop4516"
offset="1"
style="stop-color:#fff954;stop-opacity:0;" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4431">
@ -1003,6 +1014,46 @@
fx="559.92383"
fy="182.67093"
r="21.496641" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3825"
id="radialGradient3907-5-5"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.11243486,0.51064271,-0.68854473,-0.15160586,748.65596,-75.556107)"
cx="559.92383"
cy="182.67093"
fx="559.92383"
fy="182.67093"
r="21.496641" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4512"
id="linearGradient3859-7-2"
x1="572.75409"
y1="197.75398"
x2="599.88422"
y2="231.04071"
gradientUnits="userSpaceOnUse" />
<radialGradient
r="21.496641"
fy="182.67093"
fx="559.92383"
cy="182.67093"
cx="559.92383"
gradientTransform="matrix(-0.11243486,0.51064271,-0.68854473,-0.15160586,748.65596,-75.556107)"
gradientUnits="userSpaceOnUse"
id="radialGradient4859-3"
xlink:href="#linearGradient3825"
inkscape:collect="always" />
<filter
style="color-interpolation-filters:sRGB"
inkscape:collect="always"
id="filter3997-7-6">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.62142855"
id="feGaussianBlur3999-1-6" />
</filter>
</defs>
<sodipodi:namedview
id="base"
@ -1533,6 +1584,46 @@
d="m 589.99999,195.93361 c 0,11.44018 -9.2741,20.71428 -20.71428,20.71428 -11.44019,0 -20.71429,-9.2741 -20.71429,-20.71428 0,-11.44018 9.2741,-20.71429 20.71429,-20.71429 11.44018,0 20.71428,9.27411 20.71428,20.71429 z"
transform="translate(0.08444218,-2.2540576e-8)" />
</g>
<g
style="display:inline"
id="satellite-galileo"
transform="matrix(0.93879118,0,0,0.93879118,55.180064,91.285495)"
inkscape:label="#g3722">
<circle
r="20.714285"
cy="195.93361"
cx="569.28571"
transform="translate(0.08444214,2.2540576e-8)"
id="path3712-3"
style="fill:url(#linearGradient3859-7-2);fill-opacity:1;stroke:#8d029a;stroke-width:1.56471384;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
r="20.714285"
cy="195.93361"
cx="569.28571"
style="fill:url(#radialGradient4859-3);fill-opacity:1;stroke:none;filter:url(#filter3997-7-6)"
id="path3833-3"
transform="translate(0.08444218,2.2540576e-8)" />
</g>
<g
inkscape:label="#g3722"
transform="matrix(0.93879118,0,0,0.93879118,123.18007,91.285495)"
id="sat-galileo-notSeen"
style="display:inline;opacity:0.4">
<circle
r="20.714285"
cy="195.93361"
cx="569.28571"
style="fill:#ce00e0;fill-opacity:1;stroke:#8d029a;stroke-width:1.56471384;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path3891-0"
transform="translate(0.08444214,2.2540576e-8)" />
<circle
r="20.714285"
cy="195.93361"
cx="569.28571"
transform="translate(0.08444218,2.2540576e-8)"
id="path3897-8"
style="fill:url(#radialGradient3907-5-5);fill-opacity:1;stroke:none" />
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 88 KiB