|
|
|
@ -90,6 +90,7 @@
@@ -90,6 +90,7 @@
|
|
|
|
|
#include <uORB/topics/vtol_vehicle_status.h> |
|
|
|
|
#include <uORB/topics/wind_estimate.h> |
|
|
|
|
#include <uORB/topics/mount_status.h> |
|
|
|
|
#include <uORB/topics/collision_report.h> |
|
|
|
|
#include <uORB/uORB.h> |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1292,6 +1293,73 @@ protected:
@@ -1292,6 +1293,73 @@ protected:
|
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
class MavlinkStreamCollision : public MavlinkStream |
|
|
|
|
{ |
|
|
|
|
public: |
|
|
|
|
const char *get_name() const |
|
|
|
|
{ |
|
|
|
|
return MavlinkStreamCollision::get_name_static(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static const char *get_name_static() |
|
|
|
|
{ |
|
|
|
|
return "COLLISION"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static uint16_t get_id_static() |
|
|
|
|
{ |
|
|
|
|
return MAVLINK_MSG_ID_COLLISION; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
uint16_t get_id() |
|
|
|
|
{ |
|
|
|
|
return get_id_static(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static MavlinkStream *new_instance(Mavlink *mavlink) |
|
|
|
|
{ |
|
|
|
|
return new MavlinkStreamCollision(mavlink); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
unsigned get_size() |
|
|
|
|
{ |
|
|
|
|
return (_collision_time > 0) ? MAVLINK_MSG_ID_COLLISION_LEN + MAVLINK_NUM_NON_PAYLOAD_BYTES : 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
MavlinkOrbSubscription *_collision_sub; |
|
|
|
|
uint64_t _collision_time; |
|
|
|
|
|
|
|
|
|
/* do not allow top copying this class */ |
|
|
|
|
MavlinkStreamCollision(MavlinkStreamCollision &); |
|
|
|
|
MavlinkStreamCollision &operator = (const MavlinkStreamCollision &); |
|
|
|
|
|
|
|
|
|
protected: |
|
|
|
|
explicit MavlinkStreamCollision(Mavlink *mavlink) : MavlinkStream(mavlink), |
|
|
|
|
_collision_sub(_mavlink->add_orb_subscription(ORB_ID(collision_report))), |
|
|
|
|
_collision_time(0) |
|
|
|
|
{} |
|
|
|
|
|
|
|
|
|
void send(const hrt_abstime t) |
|
|
|
|
{ |
|
|
|
|
struct collision_report_s report; |
|
|
|
|
|
|
|
|
|
if (_collision_sub->update(&_collision_time, &report)) { |
|
|
|
|
mavlink_collision_t msg = {}; |
|
|
|
|
|
|
|
|
|
msg.src = report.src; |
|
|
|
|
msg.id = report.id; |
|
|
|
|
msg.action = report.action; |
|
|
|
|
msg.threat_level = report.threat_level; |
|
|
|
|
msg.time_to_minimum_delta = report.time_to_minimum_delta; |
|
|
|
|
msg.altitude_minimum_delta = report.altitude_minimum_delta; |
|
|
|
|
msg.horizontal_minimum_delta = report.horizontal_minimum_delta; |
|
|
|
|
|
|
|
|
|
mavlink_msg_collision_send_struct(_mavlink->get_channel(), &msg); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
class MavlinkStreamCameraTrigger : public MavlinkStream |
|
|
|
|
{ |
|
|
|
|
public: |
|
|
|
@ -3567,6 +3635,7 @@ const StreamListItem *streams_list[] = {
@@ -3567,6 +3635,7 @@ const StreamListItem *streams_list[] = {
|
|
|
|
|
new StreamListItem(&MavlinkStreamExtendedSysState::new_instance, &MavlinkStreamExtendedSysState::get_name_static, &MavlinkStreamExtendedSysState::get_id_static), |
|
|
|
|
new StreamListItem(&MavlinkStreamAltitude::new_instance, &MavlinkStreamAltitude::get_name_static, &MavlinkStreamAltitude::get_id_static), |
|
|
|
|
new StreamListItem(&MavlinkStreamADSBVehicle::new_instance, &MavlinkStreamADSBVehicle::get_name_static, &MavlinkStreamADSBVehicle::get_id_static), |
|
|
|
|
new StreamListItem(&MavlinkStreamCollision::new_instance, &MavlinkStreamCollision::get_name_static, &MavlinkStreamCollision::get_id_static), |
|
|
|
|
new StreamListItem(&MavlinkStreamWind::new_instance, &MavlinkStreamWind::get_name_static, &MavlinkStreamWind::get_id_static), |
|
|
|
|
new StreamListItem(&MavlinkStreamMountStatus::new_instance, &MavlinkStreamMountStatus::get_name_static, &MavlinkStreamMountStatus::get_id_static), |
|
|
|
|
nullptr |
|
|
|
|