From f602e04fadbcc97bb3ae0be9dcbe7823c49e296b Mon Sep 17 00:00:00 2001 From: Laurent Lalanne Date: Thu, 14 Feb 2019 23:39:42 +0100 Subject: [PATCH] LP-608 Add Airspeed data to General and Electric Air module message --- flight/modules/UAVOHottBridge/inc/uavohottbridge.h | 3 ++- flight/modules/UAVOHottBridge/uavohottbridge.c | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/flight/modules/UAVOHottBridge/inc/uavohottbridge.h b/flight/modules/UAVOHottBridge/inc/uavohottbridge.h index 470ab6304..1af2d09e9 100644 --- a/flight/modules/UAVOHottBridge/inc/uavohottbridge.h +++ b/flight/modules/UAVOHottBridge/inc/uavohottbridge.h @@ -176,7 +176,8 @@ struct telemetrydata { FlightBatteryStateData Battery; FlightStatusData FlightStatus; GPSPositionSensorData GPS; - GPSTimeData GPStime; + AirspeedStateData Airspeed; + GPSTimeData GPStime; GyroSensorData Gyro; HomeLocationData Home; PositionStateData Position; diff --git a/flight/modules/UAVOHottBridge/uavohottbridge.c b/flight/modules/UAVOHottBridge/uavohottbridge.c index b3bb55b5b..c7ab2300c 100644 --- a/flight/modules/UAVOHottBridge/uavohottbridge.c +++ b/flight/modules/UAVOHottBridge/uavohottbridge.c @@ -45,6 +45,7 @@ #include "gyrosensor.h" #include "gpspositionsensor.h" #include "gpstime.h" +#include "airspeedstate.h" #include "homelocation.h" #include "positionstate.h" #include "systemalarms.h" @@ -451,6 +452,10 @@ uint16_t build_GAM_message(struct hott_gam_message *msg) msg->current = scale_float2uword(current, 10, 0); msg->capacity = scale_float2uword(energy, 0.1f, 0); + // AirSpeed + float airspeed = (telestate->Airspeed.TrueAirspeed > 0) ? telestate->Airspeed.TrueAirspeed : 0; + msg->speed = scale_float2uword(airspeed, MS_TO_KMH, 0); + // pressure kPa to 0.1Bar msg->pressure = scale_float2uint8(telestate->Baro.Pressure, 0.1f, 0); @@ -496,6 +501,10 @@ uint16_t build_EAM_message(struct hott_eam_message *msg) msg->current = scale_float2uword(current, 10, 0); msg->capacity = scale_float2uword(energy, 0.1f, 0); + // AirSpeed + float airspeed = (telestate->Airspeed.TrueAirspeed > 0) ? telestate->Airspeed.TrueAirspeed : 0; + msg->speed = scale_float2uword(airspeed, MS_TO_KMH, 0); + // temperatures msg->temperature1 = scale_float2uint8(telestate->Gyro.temperature, 1, OFFSET_TEMPERATURE); msg->temperature2 = scale_float2uint8(telestate->Baro.Temperature, 1, OFFSET_TEMPERATURE); @@ -597,6 +606,9 @@ void update_telemetrydata() if (GPSPositionSensorHandle() != NULL) { GPSPositionSensorGet(&telestate->GPS); } + if (AirspeedStateHandle() != NULL) { + AirspeedStateGet(&telestate->Airspeed); + } if (GPSTimeHandle() != NULL) { GPSTimeGet(&telestate->GPStime); }