diff --git a/locales/en/messages.json b/locales/en/messages.json index e6b9710981..2aa9ea84d9 100755 --- a/locales/en/messages.json +++ b/locales/en/messages.json @@ -2843,6 +2843,9 @@ "gpsPositionalDop": { "message": "Positional DOP:" }, + "gpsStatus": { + "message": "Status:" + }, "gpsSignalStrHead": { "message": "GPS Signal Strength" }, diff --git a/src/js/msp/MSPHelper.js b/src/js/msp/MSPHelper.js index 26267dcc4a..58e69ec925 100644 --- a/src/js/msp/MSPHelper.js +++ b/src/js/msp/MSPHelper.js @@ -298,6 +298,9 @@ MspHelper.prototype.process_data = function(dataHandler) { if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_46)) { FC.GPS_DATA.positionalDop = data.readU16(); } + if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_47)) { + FC.GPS_DATA.status = data.readU8(); + } break; case MSPCodes.MSP_COMP_GPS: FC.GPS_DATA.distanceToHome = data.readU16(); @@ -510,6 +513,9 @@ MspHelper.prototype.process_data = function(dataHandler) { // Introduced in API version 1.43 FC.GPS_CONFIG.home_point_once = data.readU8(); FC.GPS_CONFIG.ublox_use_galileo = data.readU8(); + if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_47)) { + FC.GPS_CONFIG.ublox_version = data.readU8(); + } break; case MSPCodes.MSP_GPS_RESCUE: FC.GPS_RESCUE.angle = data.readU16(); diff --git a/src/js/tabs/gps.js b/src/js/tabs/gps.js index 3ab9cfbdc4..7eb76ea4a1 100644 --- a/src/js/tabs/gps.js +++ b/src/js/tabs/gps.js @@ -1,6 +1,6 @@ import { i18n } from "../localization"; import semver from 'semver'; -import { API_VERSION_1_46 } from '../data_storage'; +import { API_VERSION_1_46, API_VERSION_1_47 } from '../data_storage'; import GUI, { TABS } from '../gui'; import FC from '../fc'; import MSP from "../msp"; @@ -114,6 +114,28 @@ gps.initialize = async function (callback) { '9600', ]; + const GPS_STATE = [ + "UNKNOWN", + "DETECT_BAUD", + "INITIALIZED", + "CHANGE_BAUD", + "CONFIGURE", + "RECEIVING_DATA", + "PROCESS_DATA", + "LOST_COMMUNICATION", + "COUNT", + ]; + + const UBX_VERSION = [ + "UNKNOWN", + "M5", + "M6", + "M7", + "M8", + "M9", + "M10", + ]; + const gpsSbas = [ i18n.getMessage('gpsSbasAutoDetect'), i18n.getMessage('gpsSbasEuropeanEGNOS'), @@ -169,6 +191,8 @@ gps.initialize = async function (callback) { gpsAutoBaudGroup.toggle((ubloxSelected || mspSelected) && semver.lt(FC.CONFIG.apiVersion, API_VERSION_1_46)); gpsAutoConfigGroup.toggle(ubloxSelected || mspSelected); + $('#ublox_version').text(ubloxSelected ? UBX_VERSION[FC.GPS_CONFIG.ublox_version] : ''); + }).prop('checked', FC.GPS_CONFIG.auto_config === 1).trigger('change'); gpsUbloxGalileoElement.change(function() { @@ -348,6 +372,10 @@ gps.initialize = async function (callback) { $('.GPS_info td.positionalDop').text(`${positionalDop.toFixed(2)}`); } + if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_47)) { + $('.GPS_info td.status').text(GPS_STATE[FC.GPS_DATA.status]); + } + updateSignalStrengths(); let gpsFoundPosition = false; diff --git a/src/tabs/gps.html b/src/tabs/gps.html index f9cfce2b78..b47791e0e1 100755 --- a/src/tabs/gps.html +++ b/src/tabs/gps.html @@ -20,6 +20,7 @@ +