48 #include <uORB/topics/vehicle_gps_position.h> 50 #include <uavcan/uavcan.hpp> 51 #include <uavcan/equipment/gnss/Fix.hpp> 52 #include <uavcan/equipment/gnss/Fix2.hpp> 54 #include "sensor_bridge.hpp" 58 static constexpr
unsigned ORB_TO_UAVCAN_FREQUENCY_HZ = 10;
61 static const char *
const NAME;
66 const char *
get_name()
const override {
return NAME; }
78 void gnss_fix_sub_cb(
const uavcan::ReceivedDataStructure<uavcan::equipment::gnss::Fix> &msg);
79 void gnss_fix2_sub_cb(
const uavcan::ReceivedDataStructure<uavcan::equipment::gnss::Fix2> &msg);
81 template <
typename FixType>
82 void process_fixx(
const uavcan::ReceivedDataStructure<FixType> &msg,
83 const float (&pos_cov)[9],
84 const float (&vel_cov)[9],
85 const bool valid_pos_cov,
86 const bool valid_vel_cov);
88 void broadcast_from_orb(
const uavcan::TimerEvent &);
91 void (UavcanGnssBridge::*)(
const uavcan::ReceivedDataStructure<uavcan::equipment::gnss::Fix> &) >
94 typedef uavcan::MethodBinder < UavcanGnssBridge *,
95 void (UavcanGnssBridge::*)(
const uavcan::ReceivedDataStructure<uavcan::equipment::gnss::Fix2> &) >
98 typedef uavcan::MethodBinder<UavcanGnssBridge *,
99 void (UavcanGnssBridge::*)(
const uavcan::TimerEvent &)>
102 uavcan::INode &_node;
103 uavcan::Subscriber<uavcan::equipment::gnss::Fix, FixCbBinder> _sub_fix;
104 uavcan::Subscriber<uavcan::equipment::gnss::Fix2, Fix2CbBinder> _sub_fix2;
105 uavcan::Publisher<uavcan::equipment::gnss::Fix2> _pub_fix2;
106 uavcan::TimerEventForwarder<TimerCbBinder> _orb_to_uavcan_pub_timer;
107 int _receiver_node_id = -1;
109 bool _old_fix_subscriber_active =
true;
113 int _orb_sub_gnss = -1;
115 bool _system_clock_set =
false;
unsigned get_num_redundant_channels() const override
Returns number of active redundancy channels.
Definition: gnss.cpp:96
void print_status() const override
Prints current status in a human readable format to stdout.
Definition: gnss.cpp:101
A sensor bridge class must implement this interface.
Definition: sensor_bridge.hpp:49
__BEGIN_DECLS typedef void * orb_advert_t
ORB topic advertiser handle.
Definition: uORB.h:134
API for the uORB lightweight object broker.
int init() override
Starts the bridge.
Definition: gnss.cpp:67
const char * get_name() const override
Returns ASCII name of the bridge.
Definition: gnss.hpp:66