From a245100ae624d8409d0d6027a977551fb1f1b7a1 Mon Sep 17 00:00:00 2001 From: giacomo892 Date: Sat, 21 Mar 2020 11:39:02 +0100 Subject: [PATCH] AP_GPS_UBLOX: Fix GALILEO auto configuration --- libraries/AP_GPS/AP_GPS_UBLOX.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/libraries/AP_GPS/AP_GPS_UBLOX.cpp b/libraries/AP_GPS/AP_GPS_UBLOX.cpp index 500ce06086..2bda2eb65e 100644 --- a/libraries/AP_GPS/AP_GPS_UBLOX.cpp +++ b/libraries/AP_GPS/AP_GPS_UBLOX.cpp @@ -979,16 +979,21 @@ AP_GPS_UBLOX::_parse_gps(void) gnssCount++; } } - for(int i = 0; i < _buffer.gnss.numConfigBlocks; i++) { - // Reserve an equal portion of channels for all enabled systems + // Reserve an equal portion of channels for all enabled systems that supports it if(gps._gnss_mode[state.instance] & (1 << _buffer.gnss.configBlock[i].gnssId)) { - if(GNSS_SBAS !=_buffer.gnss.configBlock[i].gnssId) { + if(GNSS_SBAS !=_buffer.gnss.configBlock[i].gnssId && (_hardware_generation > UBLOX_M8 || GNSS_GALILEO !=_buffer.gnss.configBlock[i].gnssId)) { _buffer.gnss.configBlock[i].resTrkCh = (_buffer.gnss.numTrkChHw - 3) / (gnssCount * 2); _buffer.gnss.configBlock[i].maxTrkCh = _buffer.gnss.numTrkChHw; } else { - _buffer.gnss.configBlock[i].resTrkCh = 1; - _buffer.gnss.configBlock[i].maxTrkCh = 3; + if(GNSS_SBAS ==_buffer.gnss.configBlock[i].gnssId) { + _buffer.gnss.configBlock[i].resTrkCh = 1; + _buffer.gnss.configBlock[i].maxTrkCh = 3; + } + if(GNSS_GALILEO ==_buffer.gnss.configBlock[i].gnssId) { + _buffer.gnss.configBlock[i].resTrkCh = (_buffer.gnss.numTrkChHw - 3) / (gnssCount * 2); + _buffer.gnss.configBlock[i].maxTrkCh = 8; //Per the M8 receiver description UBX-13003221 - R16, 4.1.1.3 it is not recommended to set the number of galileo channels higher then eigh + } } _buffer.gnss.configBlock[i].flags = _buffer.gnss.configBlock[i].flags | 0x00000001; } else {