mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-22 06:53:35 +08:00
uORB::Subscription subscribe directly to uORB device node object
This commit is contained in:
@@ -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};
|
||||
};
|
||||
|
||||
@@ -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};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user