diff --git a/src/lib/systemlib/system_params.c b/src/lib/systemlib/system_params.c index 263097da27..c5829445e5 100644 --- a/src/lib/systemlib/system_params.c +++ b/src/lib/systemlib/system_params.c @@ -191,6 +191,20 @@ PARAM_DEFINE_INT32(SYS_CAL_TMIN, 5); */ PARAM_DEFINE_INT32(SYS_CAL_TMAX, 10); +/** + * Control if the vehicle has a GPS + * + * Disable this if the system has no GPS. + * If disabled, the sensors hub will not process sensor_gps, + * and GPS will not be available for the rest of the system. + * + * @boolean + * @reboot_required true + * + * @group System + */ +PARAM_DEFINE_INT32(SYS_HAS_GPS, 1); + /** * Control if the vehicle has a magnetometer * diff --git a/src/modules/sensors/sensors.cpp b/src/modules/sensors/sensors.cpp index 7ffd6d7246..9e3a5c42de 100644 --- a/src/modules/sensors/sensors.cpp +++ b/src/modules/sensors/sensors.cpp @@ -219,6 +219,7 @@ private: DEFINE_PARAMETERS( (ParamBool) _param_sys_has_baro, + (ParamBool) _param_sys_has_gps, (ParamBool) _param_sys_has_mag, (ParamBool) _param_sens_imu_mode ) @@ -534,12 +535,10 @@ void Sensors::InitializeVehicleAirData() { if (_param_sys_has_baro.get()) { if (_vehicle_air_data == nullptr) { - if (orb_exists(ORB_ID(sensor_baro), 0) == PX4_OK) { - _vehicle_air_data = new VehicleAirData(); + _vehicle_air_data = new VehicleAirData(); - if (_vehicle_air_data) { - _vehicle_air_data->Start(); - } + if (_vehicle_air_data) { + _vehicle_air_data->Start(); } } } @@ -547,8 +546,8 @@ void Sensors::InitializeVehicleAirData() void Sensors::InitializeVehicleGPSPosition() { - if (_vehicle_gps_position == nullptr) { - if (orb_exists(ORB_ID(sensor_gps), 0) == PX4_OK) { + if (_param_sys_has_gps.get()) { + if (_vehicle_gps_position == nullptr) { _vehicle_gps_position = new VehicleGPSPosition(); if (_vehicle_gps_position) { @@ -602,12 +601,10 @@ void Sensors::InitializeVehicleMagnetometer() { if (_param_sys_has_mag.get()) { if (_vehicle_magnetometer == nullptr) { - if (orb_exists(ORB_ID(sensor_mag), 0) == PX4_OK) { - _vehicle_magnetometer = new VehicleMagnetometer(); + _vehicle_magnetometer = new VehicleMagnetometer(); - if (_vehicle_magnetometer) { - _vehicle_magnetometer->Start(); - } + if (_vehicle_magnetometer) { + _vehicle_magnetometer->Start(); } } }