CUAV CAN GPS support UAVCAN standard/indication/Button.uavcan

Co-authored-by: Daniel Agar <daniel@agar.ca>
This commit is contained in:
Lorenz Meier
2021-01-27 10:46:49 -05:00
committed by GitHub
co-authored by Daniel Agar
parent 5e79773275
commit 2308cb8a40
10 changed files with 50 additions and 11 deletions
+6 -1
View File
@@ -94,7 +94,12 @@ target_include_directories(uavcan_${UAVCAN_DRIVER}_driver PUBLIC
# generated DSDL
set(DSDLC_INPUTS "${PX4_SOURCE_DIR}/src/drivers/uavcan/dsdl/com" "${LIBUAVCAN_DIR}/dsdl/uavcan")
set(DSDLC_DIR "${PX4_SOURCE_DIR}/src/drivers/uavcan/dsdl")
set(DSDLC_INPUTS
"${DSDLC_DIR}/com"
"${DSDLC_DIR}/standard"
"${LIBUAVCAN_DIR}/dsdl/uavcan"
)
set(DSDLC_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/include/dsdlc_generated")
set(DSDLC_INPUT_FILES)
+15
View File
@@ -83,6 +83,7 @@ UavcanNode::UavcanNode(uavcan::ICanDriver &can_driver, uavcan::ISystemClock &sys
_raw_air_data_publisher(_node),
_range_sensor_measurement(_node),
_flow_measurement_publisher(_node),
_indication_button_publisher(_node),
_param_server(_node),
_cycle_perf(perf_alloc(PC_ELAPSED, MODULE_NAME": cycle time")),
_interval_perf(perf_alloc(PC_INTERVAL, MODULE_NAME": cycle interval")),
@@ -521,6 +522,20 @@ void UavcanNode::Run()
}
}
// safety -> standard::indication::button
if (_safety_sub.updated()) {
safety_s safety;
if (_safety_sub.copy(&safety)) {
if (safety.safety_switch_available) {
standard::indication::Button Button{};
Button.button = standard::indication::Button::BUTTON_SAFETY;
Button.press_time = safety.safety_off ? UINT8_MAX : 0;
_indication_button_publisher.broadcast(Button);
}
}
}
perf_end(_cycle_perf);
pthread_mutex_unlock(&_node_mutex);
+4
View File
@@ -66,6 +66,7 @@
#include <uavcan/equipment/power/BatteryInfo.hpp>
#include <uavcan/equipment/range_sensor/Measurement.hpp>
#include <standard/indication/Button.hpp>
#include <com/hex/equipment/flow/Measurement.hpp>
#include <lib/parameters/param.h>
@@ -78,6 +79,7 @@
#include <uORB/topics/differential_pressure.h>
#include <uORB/topics/distance_sensor.h>
#include <uORB/topics/optical_flow.h>
#include <uORB/topics/safety.h>
#include <uORB/topics/sensor_baro.h>
#include <uORB/topics/sensor_mag.h>
#include <uORB/topics/sensor_gps.h>
@@ -182,6 +184,7 @@ private:
uavcan::Publisher<uavcan::equipment::air_data::RawAirData> _raw_air_data_publisher;
uavcan::Publisher<uavcan::equipment::range_sensor::Measurement> _range_sensor_measurement;
uavcan::Publisher<com::hex::equipment::flow::Measurement> _flow_measurement_publisher;
uavcan::Publisher<standard::indication::Button> _indication_button_publisher;
hrt_abstime _last_static_temperature_publish{0};
@@ -197,6 +200,7 @@ private:
{this, ORB_ID(distance_sensor), 3},
};
uORB::SubscriptionCallbackWorkItem _optical_flow_sub{this, ORB_ID(optical_flow)};
uORB::SubscriptionCallbackWorkItem _safety_sub{this, ORB_ID(safety)};
uORB::SubscriptionCallbackWorkItem _sensor_baro_sub{this, ORB_ID(sensor_baro)};
uORB::SubscriptionCallbackWorkItem _sensor_mag_sub{this, ORB_ID(sensor_mag)};
uORB::SubscriptionCallbackWorkItem _sensor_gps_sub{this, ORB_ID(sensor_gps)};