mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-27 20:13:35 +08:00
UAVCAN Barometer driver fix - reporting temperature in Celsius degrees, not in Kelvin
This commit is contained in:
committed by
Lorenz Meier
parent
473d321af8
commit
3860dbdc8c
@@ -46,9 +46,7 @@ UavcanBarometerBridge::UavcanBarometerBridge(uavcan::INode &node) :
|
|||||||
_sub_air_pressure_data(node),
|
_sub_air_pressure_data(node),
|
||||||
_sub_air_temperature_data(node),
|
_sub_air_temperature_data(node),
|
||||||
_reports(nullptr)
|
_reports(nullptr)
|
||||||
{
|
{ }
|
||||||
last_temperature = 0.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
int UavcanBarometerBridge::init()
|
int UavcanBarometerBridge::init()
|
||||||
{
|
{
|
||||||
@@ -154,7 +152,7 @@ int UavcanBarometerBridge::ioctl(struct file *filp, int cmd, unsigned long arg)
|
|||||||
void UavcanBarometerBridge::air_temperature_sub_cb(const
|
void UavcanBarometerBridge::air_temperature_sub_cb(const
|
||||||
uavcan::ReceivedDataStructure<uavcan::equipment::air_data::StaticTemperature> &msg)
|
uavcan::ReceivedDataStructure<uavcan::equipment::air_data::StaticTemperature> &msg)
|
||||||
{
|
{
|
||||||
last_temperature = msg.static_temperature;
|
last_temperature_kelvin = msg.static_temperature;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UavcanBarometerBridge::air_pressure_sub_cb(const
|
void UavcanBarometerBridge::air_pressure_sub_cb(const
|
||||||
@@ -163,7 +161,7 @@ void UavcanBarometerBridge::air_pressure_sub_cb(const
|
|||||||
baro_report report;
|
baro_report report;
|
||||||
|
|
||||||
report.timestamp = msg.getMonotonicTimestamp().toUSec();
|
report.timestamp = msg.getMonotonicTimestamp().toUSec();
|
||||||
report.temperature = last_temperature;
|
report.temperature = last_temperature_kelvin - 273.15F;
|
||||||
report.pressure = msg.static_pressure / 100.0F; // Convert to millibar
|
report.pressure = msg.static_pressure / 100.0F; // Convert to millibar
|
||||||
report.error_count = 0;
|
report.error_count = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -77,6 +77,6 @@ private:
|
|||||||
uavcan::Subscriber<uavcan::equipment::air_data::StaticTemperature, AirTemperatureCbBinder> _sub_air_temperature_data;
|
uavcan::Subscriber<uavcan::equipment::air_data::StaticTemperature, AirTemperatureCbBinder> _sub_air_temperature_data;
|
||||||
unsigned _msl_pressure = 101325;
|
unsigned _msl_pressure = 101325;
|
||||||
RingBuffer *_reports;
|
RingBuffer *_reports;
|
||||||
float last_temperature;
|
float last_temperature_kelvin = 0.0;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user