@@ -49,7 +49,9 @@ UavcanBarometerBridge::UavcanBarometerBridge(uavcan::INode &node, NodeInfoPublis
4949 UavcanSensorBridgeBase(" uavcan_baro" , ORB_ID(sensor_baro), node_info_publisher),
5050 _sub_air_pressure_data(node),
5151 _sub_air_temperature_data(node)
52- { }
52+ {
53+ set_device_type (DRV_BARO_DEVTYPE_UAVCAN);
54+ }
5355
5456int UavcanBarometerBridge::init ()
5557{
@@ -91,7 +93,7 @@ void UavcanBarometerBridge::air_pressure_sub_cb(const
9193{
9294 const hrt_abstime timestamp_sample = hrt_absolute_time ();
9395
94- uavcan_bridge::Channel *channel = get_channel_for_node (msg.getSrcNodeID ().get ());
96+ uavcan_bridge::Channel *channel = get_channel_for_node (msg.getSrcNodeID ().get (), msg. getIfaceIndex () );
9597
9698 if (channel == nullptr ) {
9799 // Something went wrong - no channel to publish on; return
@@ -105,23 +107,18 @@ void UavcanBarometerBridge::air_pressure_sub_cb(const
105107 return ;
106108 }
107109
108- DeviceId device_id{};
109- device_id.devid_s .bus = 0 ;
110- device_id.devid_s .bus_type = DeviceBusType_UAVCAN;
111-
112- device_id.devid_s .devtype = DRV_BARO_DEVTYPE_UAVCAN;
113- device_id.devid_s .address = static_cast <uint8_t >(channel->node_id );
110+ uint32_t device_id = make_uavcan_device_id (msg);
114111
115112 // Register barometer capability with NodeInfoPublisher after first successful message
116113 if (_node_info_publisher != nullptr ) {
117- _node_info_publisher->registerDeviceCapability (msg.getSrcNodeID ().get (), device_id. devid ,
114+ _node_info_publisher->registerDeviceCapability (msg.getSrcNodeID ().get (), device_id,
118115 NodeInfoPublisher::DeviceCapability::BAROMETER);
119116 }
120117
121118 // publish
122119 sensor_baro_s sensor_baro{};
123120 sensor_baro.timestamp_sample = timestamp_sample;
124- sensor_baro.device_id = device_id. devid ;
121+ sensor_baro.device_id = device_id;
125122 sensor_baro.pressure = msg.static_pressure ;
126123
127124 if (PX4_ISFINITE (_last_temperature_kelvin) && (_last_temperature_kelvin >= 0 .f )) {
0 commit comments