diff --git a/src/drivers/gps/devices b/src/drivers/gps/devices index 754ab2051e..160cf11d82 160000 --- a/src/drivers/gps/devices +++ b/src/drivers/gps/devices @@ -1 +1 @@ -Subproject commit 754ab2051e135046be6265f9a3c8150040c3af95 +Subproject commit 160cf11d82c8f867ac84e52ec417e234352fc947 diff --git a/src/drivers/gps/gps.cpp b/src/drivers/gps/gps.cpp index f9a4f86165..857a9021a5 100644 --- a/src/drivers/gps/gps.cpp +++ b/src/drivers/gps/gps.cpp @@ -761,6 +761,27 @@ GPS::run() param_get(handle, &gps_ubx_dynmodel); } + int32_t gps_ubx_dgnss_to = 0; + handle = param_find("GPS_UBX_DGNSS_TO"); + + if (handle != PARAM_INVALID) { + param_get(handle, &gps_ubx_dgnss_to); + } + + int32_t gps_ubx_min_cno = 0; + handle = param_find("GPS_UBX_MIN_CNO"); + + if (handle != PARAM_INVALID) { + param_get(handle, &gps_ubx_min_cno); + } + + int32_t gps_ubx_min_elev = 0; + handle = param_find("GPS_UBX_MIN_ELEV"); + + if (handle != PARAM_INVALID) { + param_get(handle, &gps_ubx_min_elev); + } + handle = param_find("GPS_UBX_MODE"); GPSDriverUBX::UBXMode ubx_mode{GPSDriverUBX::UBXMode::Normal}; @@ -910,6 +931,9 @@ GPS::run() case gps_driver_mode_t::UBX: { GPSDriverUBX::Settings settings = { .dynamic_model = (uint8_t)gps_ubx_dynmodel, + .dgnss_timeout = (uint8_t)gps_ubx_dgnss_to, + .min_cno = (uint8_t)gps_ubx_min_cno, + .min_elev = (int8_t)gps_ubx_min_elev, .heading_offset = heading_offset, .uart2_baudrate = f9p_uart2_baudrate, .ppk_output = ppk_output > 0, diff --git a/src/drivers/gps/params.c b/src/drivers/gps/params.c index dbc655c8d3..2dc7dcd298 100644 --- a/src/drivers/gps/params.c +++ b/src/drivers/gps/params.c @@ -69,6 +69,51 @@ PARAM_DEFINE_INT32(GPS_DUMP_COMM, 0); */ PARAM_DEFINE_INT32(GPS_UBX_DYNMODEL, 7); +/** + * u-blox GPS DGNSS timeout + * + * When set to 0 (default), default DGNSS timeout set by u-blox will be used. + * + * @min 0 + * @max 255 + * @unit s + * + * @reboot_required true + * + * @group GPS + */ +PARAM_DEFINE_INT32(GPS_UBX_DGNSS_TO, 0); + +/** + * u-blox GPS minimum satellite signal level for navigation + * + * When set to 0 (default), default minimum satellite signal level set by u-blox wll be used. + * + * @min 0 + * @max 255 + * @unit dBHz + * + * @reboot_required true + * + * @group GPS + */ +PARAM_DEFINE_INT32(GPS_UBX_MIN_CNO, 0); + +/** + * u-blox GPS minimum elevation for a GNSS satellite to be used in navigation + * + * When set to 0 (default), default minimum elevation set by u-blox will be used. + * + * @min 0 + * @max 127 + * @unit deg + * + * @reboot_required true + * + * @group GPS + */ +PARAM_DEFINE_INT32(GPS_UBX_MIN_ELEV, 0); + /** * Enable sat info (if available) * diff --git a/src/lib/parameters/px4params/srcparser.py b/src/lib/parameters/px4params/srcparser.py index f33d660d7b..e9ed7132e6 100644 --- a/src/lib/parameters/px4params/srcparser.py +++ b/src/lib/parameters/px4params/srcparser.py @@ -363,7 +363,7 @@ class SourceParser(object): 'm/s^3/sqrt(Hz)', 'm/s/sqrt(Hz)', 's/(1000*PWM)', '%m/s', 'min', 'us/C', 'N/(m/s)', 'Nm/rad', 'Nm/(rad/s)', 'Nm', 'N', 'rpm', - 'normalized_thrust/s', 'normalized_thrust', 'norm', 'SD','']) + 'normalized_thrust/s', 'normalized_thrust', 'norm', 'SD', 'dBHz', '']) for group in self.GetParamGroups(): for param in group.GetParams(): name = param.GetName() diff --git a/validation/module_schema.yaml b/validation/module_schema.yaml index 1f17bf5fb2..a2f77f75ee 100644 --- a/validation/module_schema.yaml +++ b/validation/module_schema.yaml @@ -155,7 +155,7 @@ parameters: 'm/s^3/sqrt(Hz)', 'm/s/sqrt(Hz)', 's/(1000*PWM)', '%m/s', 'min', 'us/C', 'N/(m/s)', 'Nm/(rad/s)', 'Nm', 'N', 'rpm', - 'normalized_thrust/s', 'normalized_thrust', 'norm', 'SD'] + 'normalized_thrust/s', 'normalized_thrust', 'norm', 'SD', 'dBHz'] bit: # description of all bits for type bitmask. # The first bit is 0.