Skip to content

Commit

Permalink
Display heading from mag
Browse files Browse the repository at this point in the history
  • Loading branch information
atomgomba committed Feb 24, 2023
1 parent 139aee2 commit 6156a2e
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 32 deletions.
5 changes: 4 additions & 1 deletion locales/en/messages.json
Expand Up @@ -2479,6 +2479,9 @@
"gpsLon": {
"message": "Longitude:"
},
"gpsHeading": {
"message": "Heading:"
},
"gpsSpeed": {
"message": "Speed:"
},
Expand Down Expand Up @@ -4875,7 +4878,7 @@
},
"osdTextElementVTXchannelVariantPower": {
"message": "VTX power",
"description": "One of the variants of the VTX channel element of the OSD"
"description": "One of the variants of the VTX channel element of the OSD"
},
"osdTextElementVTXchannelVariantFull": {
"message": "Band:Channel:Pwr:Pit",
Expand Down
11 changes: 11 additions & 0 deletions src/components/shared/TestThrottleSelector/container.html
@@ -0,0 +1,11 @@
<table class="test-throttle-selector" style="position: relative; z-index: 10000">
<tr>
<td class="test-throttle-selector-label">
<span i18n="throttle">Throttle</span>
</td>
<td>
<div class="list"></div>
<br style="clear: both" />
</td>
</tr>
</table>
2 changes: 2 additions & 0 deletions src/js/VirtualFC.js
Expand Up @@ -156,6 +156,8 @@ const VirtualFC = {
mag_hardware: 1,
};

virtualFC.SENSOR_DATA = { ...FC.SENSOR_DATA };

virtualFC.RC = {
channels: Array.from({length: 16}),
active_channels: 16,
Expand Down
19 changes: 13 additions & 6 deletions src/js/tabs/gps.js
Expand Up @@ -21,6 +21,8 @@ gps.initialize = async function (callback) {
await MSP.promise(MSPCodes.MSP_GPS_CONFIG);
await MSP.promise(MSPCodes.MSP_STATUS);

const hasMag = have_sensor(FC.CONFIG.activeSensors, 'mag');

load_html();

function load_html() {
Expand Down Expand Up @@ -52,7 +54,11 @@ gps.initialize = async function (callback) {
}

function get_gpsvinfo_data() {
MSP.send_message(MSPCodes.MSP_GPS_SV_INFO, false, false, update_ui);
MSP.send_message(MSPCodes.MSP_GPS_SV_INFO, false, false, hasMag ? get_imu_data : update_ui);
}

function get_imu_data() {
MSP.send_message(MSPCodes.MSP_RAW_IMU, false, false, update_ui);
}

// To not flicker the divs while the fix is unstable
Expand Down Expand Up @@ -178,6 +184,10 @@ gps.initialize = async 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 heading = hasMag
? Math.atan2(FC.SENSOR_DATA.magnetometer[1], FC.SENSOR_DATA.magnetometer[0])
: undefined;
const headingDeg = heading === undefined ? 0 : heading * 180 / Math.PI;
const gnssArray = ['GPS', 'SBAS', 'Galileo', 'BeiDou', 'IMES', 'QZSS', 'Glonass'];
const qualityArray = ['gnssQualityNoSignal', 'gnssQualitySearching', 'gnssQualityAcquired', 'gnssQualityUnusable', 'gnssQualityLocked',
'gnssQualityFullyLocked', 'gnssQualityFullyLocked', 'gnssQualityFullyLocked'];
Expand All @@ -189,6 +199,7 @@ gps.initialize = async function (callback) {
$('.GPS_info td.alt').text(`${alt} m`);
$('.GPS_info td.lat a').prop('href', url).text(`${lat.toFixed(4)} deg`);
$('.GPS_info td.lon a').prop('href', url).text(`${lon.toFixed(4)} deg`);
$('.GPS_info td.heading').text(`${headingDeg.toFixed(4)} deg`);
$('.GPS_info td.speed').text(`${FC.GPS_DATA.speed} cm/s`);
$('.GPS_info td.sats').text(FC.GPS_DATA.numSat);
$('.GPS_info td.distToHome').text(`${FC.GPS_DATA.distanceToHome} m`);
Expand Down Expand Up @@ -263,6 +274,7 @@ gps.initialize = async function (callback) {
action: 'center',
lat: lat,
lon: lon,
heading: heading,
};

frame = document.getElementById('map');
Expand Down Expand Up @@ -295,11 +307,6 @@ gps.initialize = async function (callback) {

// enable data pulling
GUI.interval_add('gps_pull', function gps_update() {
// avoid usage of the GPS commands until a GPS sensor is detected for targets that are compiled without GPS support.
if (!have_sensor(FC.CONFIG.activeSensors, 'gps')) {
//return;
}

get_raw_gps_data();
}, 75, true);

Expand Down
49 changes: 24 additions & 25 deletions src/js/tabs/map.js
Expand Up @@ -76,31 +76,30 @@ function initializeMap() {
}

function processMapEvents(e) {

try {
switch(e.data.action) {

case 'zoom_in':
mapView.setZoom(mapView.getZoom() + 1);
break;

case 'zoom_out':
mapView.setZoom(mapView.getZoom() - 1);
break;

case 'center':
iconFeature.setStyle(iconStyle);
const center = ol.proj.fromLonLat([e.data.lon, e.data.lat]);
mapView.setCenter(center);
iconGeometry.setCoordinates(center);
break;

case 'nofix':
iconFeature.setStyle(iconStyleNoFix);
break;
switch (e.data.action) {
case 'zoom_in':
mapView.setZoom(mapView.getZoom() + 1);
break;

case 'zoom_out':
mapView.setZoom(mapView.getZoom() - 1);
break;

case 'center':
iconFeature.setStyle(iconStyle);
const center = ol.proj.fromLonLat([e.data.lon, e.data.lat]);
mapView.setCenter(center);
const heading = e.data.heading === undefined ? 0 : e.data.heading;
mapView.setRotation(heading);
iconGeometry.setCoordinates(center);
break;

case 'nofix':
iconFeature.setStyle(iconStyleNoFix);
break;
}

} catch (err) {
console.log(`Map error ${err}`);
}
} catch (err) {
console.error('Map error', err);
}
}
4 changes: 4 additions & 0 deletions src/tabs/gps.html
Expand Up @@ -100,6 +100,10 @@
<td i18n="gpsLon"></td>
<td class="lon"><a href="#" target="_blank">0.0000 deg</a></td>
</tr>
<tr>
<td i18n="gpsHeading"></td>
<td class="heading"><a href="#" target="_blank">0.0000 deg</a></td>
</tr>
<tr>
<td i18n="gpsSpeed"></td>
<td class="speed">0 cm/s</td>
Expand Down

0 comments on commit 6156a2e

Please sign in to comment.