uORB::Subscription subscribe directly to uORB device node object

This commit is contained in:
Daniel Agar
2019-06-03 17:06:21 -04:00
parent 2d1c60bc85
commit 2c63e335e9
37 changed files with 766 additions and 270 deletions
+8 -9
View File
@@ -62,8 +62,6 @@
#include <uORB/topics/vehicle_local_position.h>
using math::constrain;
using uORB::Publication;
using uORB::Subscription;
using namespace time_literals;
@@ -233,14 +231,15 @@ private:
bool _print_avoidance_msg_once{false};
// Subscriptions
Subscription<airspeed_s> _airspeed_sub{ORB_ID(airspeed)};
Subscription<estimator_status_s> _estimator_status_sub{ORB_ID(estimator_status)};
Subscription<mission_result_s> _mission_result_sub{ORB_ID(mission_result)};
Subscription<sensor_bias_s> _sensor_bias_sub{ORB_ID(sensor_bias)};
Subscription<vehicle_global_position_s> _global_position_sub{ORB_ID(vehicle_global_position)};
Subscription<vehicle_local_position_s> _local_position_sub{ORB_ID(vehicle_local_position)};
uORB::SubscriptionData<airspeed_s> _airspeed_sub{ORB_ID(airspeed)};
uORB::SubscriptionData<estimator_status_s> _estimator_status_sub{ORB_ID(estimator_status)};
uORB::SubscriptionData<mission_result_s> _mission_result_sub{ORB_ID(mission_result)};
uORB::SubscriptionData<sensor_bias_s> _sensor_bias_sub{ORB_ID(sensor_bias)};
uORB::SubscriptionData<vehicle_global_position_s> _global_position_sub{ORB_ID(vehicle_global_position)};
uORB::SubscriptionData<vehicle_local_position_s> _local_position_sub{ORB_ID(vehicle_local_position)};
Publication<home_position_s> _home_pub{ORB_ID(home_position)};
// Publications
uORB::Publication<home_position_s> _home_pub{ORB_ID(home_position)};
orb_advert_t _status_pub{nullptr};
};
+8 -8
View File
@@ -100,7 +100,7 @@ static bool check_calibration(const char *param_template, int32_t device_id)
return calibration_found;
}
static bool magnometerCheck(orb_advert_t *mavlink_log_pub, vehicle_status_s &status, unsigned instance, bool optional,
static bool magnometerCheck(orb_advert_t *mavlink_log_pub, vehicle_status_s &status, uint8_t instance, bool optional,
int32_t &device_id, bool report_fail)
{
const bool exists = (orb_exists(ORB_ID(sensor_mag), instance) == PX4_OK);
@@ -109,7 +109,7 @@ static bool magnometerCheck(orb_advert_t *mavlink_log_pub, vehicle_status_s &sta
if (exists) {
uORB::Subscription<sensor_mag_s> magnetometer{ORB_ID(sensor_mag), 0, instance};
uORB::SubscriptionData<sensor_mag_s> magnetometer{ORB_ID(sensor_mag), instance};
mag_valid = (hrt_elapsed_time(&magnetometer.get().timestamp) < 1_s);
@@ -236,7 +236,7 @@ static bool magConsistencyCheck(orb_advert_t *mavlink_log_pub, vehicle_status_s
return true;
}
static bool accelerometerCheck(orb_advert_t *mavlink_log_pub, vehicle_status_s &status, unsigned instance,
static bool accelerometerCheck(orb_advert_t *mavlink_log_pub, vehicle_status_s &status, uint8_t instance,
bool optional, bool dynamic, int32_t &device_id, bool report_fail)
{
const bool exists = (orb_exists(ORB_ID(sensor_accel), instance) == PX4_OK);
@@ -245,7 +245,7 @@ static bool accelerometerCheck(orb_advert_t *mavlink_log_pub, vehicle_status_s &
if (exists) {
uORB::Subscription<sensor_accel_s> accel{ORB_ID(sensor_accel), 0, instance};
uORB::SubscriptionData<sensor_accel_s> accel{ORB_ID(sensor_accel), instance};
accel_valid = (hrt_elapsed_time(&accel.get().timestamp) < 1_s);
@@ -300,7 +300,7 @@ static bool accelerometerCheck(orb_advert_t *mavlink_log_pub, vehicle_status_s &
return success;
}
static bool gyroCheck(orb_advert_t *mavlink_log_pub, vehicle_status_s &status, unsigned instance, bool optional,
static bool gyroCheck(orb_advert_t *mavlink_log_pub, vehicle_status_s &status, uint8_t instance, bool optional,
int32_t &device_id, bool report_fail)
{
const bool exists = (orb_exists(ORB_ID(sensor_gyro), instance) == PX4_OK);
@@ -309,7 +309,7 @@ static bool gyroCheck(orb_advert_t *mavlink_log_pub, vehicle_status_s &status, u
if (exists) {
uORB::Subscription<sensor_gyro_s> gyro{ORB_ID(sensor_gyro), 0, instance};
uORB::SubscriptionData<sensor_gyro_s> gyro{ORB_ID(sensor_gyro), instance};
gyro_valid = (hrt_elapsed_time(&gyro.get().timestamp) < 1_s);
@@ -345,14 +345,14 @@ static bool gyroCheck(orb_advert_t *mavlink_log_pub, vehicle_status_s &status, u
return calibration_valid && gyro_valid;
}
static bool baroCheck(orb_advert_t *mavlink_log_pub, vehicle_status_s &status, unsigned instance, bool optional,
static bool baroCheck(orb_advert_t *mavlink_log_pub, vehicle_status_s &status, uint8_t instance, bool optional,
int32_t &device_id, bool report_fail)
{
const bool exists = (orb_exists(ORB_ID(sensor_baro), instance) == PX4_OK);
bool baro_valid = false;
if (exists) {
uORB::Subscription<sensor_baro_s> baro{ORB_ID(sensor_baro), 0, instance};
uORB::SubscriptionData<sensor_baro_s> baro{ORB_ID(sensor_baro), instance};
baro_valid = (hrt_elapsed_time(&baro.get().timestamp) < 1_s);
@@ -60,7 +60,7 @@ typedef enum {
FAILURE_ALT = vehicle_status_s::FAILURE_ALT,
} failure_detector_bitmak;
using uORB::Subscription;
using uORB::SubscriptionData;
class FailureDetector : public ModuleParams
{
@@ -79,8 +79,8 @@ private:
)
// Subscriptions
Subscription<vehicle_attitude_s> _sub_vehicle_attitude_setpoint;
Subscription<vehicle_attitude_s> _sub_vehicule_attitude;
SubscriptionData<vehicle_attitude_s> _sub_vehicle_attitude_setpoint;
SubscriptionData<vehicle_attitude_s> _sub_vehicule_attitude;
uint8_t _status{FAILURE_NONE};