Commit 6dead834 authored by Don Gagne's avatar Don Gagne

Add Vehicle.vibration FactGroup

parent 53c833a0
...@@ -177,7 +177,7 @@ void FactGroup::_loadMetaData(const QString& jsonFilename) ...@@ -177,7 +177,7 @@ void FactGroup::_loadMetaData(const QString& jsonFilename)
// Make sure we have the required keys // Make sure we have the required keys
QString errorString; QString errorString;
QStringList requiredKeys; QStringList requiredKeys;
requiredKeys << _nameJsonKey << _decimalPlacesJsonKey << _typeJsonKey << _shortDescriptionJsonKey; requiredKeys << _nameJsonKey << _typeJsonKey << _shortDescriptionJsonKey;
if (!JsonHelper::validateRequiredKeys(jsonObject, requiredKeys, errorString)) { if (!JsonHelper::validateRequiredKeys(jsonObject, requiredKeys, errorString)) {
qWarning() << errorString; qWarning() << errorString;
return; return;
...@@ -215,7 +215,7 @@ void FactGroup::_loadMetaData(const QString& jsonFilename) ...@@ -215,7 +215,7 @@ void FactGroup::_loadMetaData(const QString& jsonFilename)
FactMetaData* metaData = new FactMetaData(type, this); FactMetaData* metaData = new FactMetaData(type, this);
metaData->setDecimalPlaces(jsonObject.value(_decimalPlacesJsonKey).toInt()); metaData->setDecimalPlaces(jsonObject.value(_decimalPlacesJsonKey).toInt(0));
metaData->setShortDescription(jsonObject.value(_shortDescriptionJsonKey).toString()); metaData->setShortDescription(jsonObject.value(_shortDescriptionJsonKey).toString());
metaData->setRawUnits(jsonObject.value(_unitsJsonKey).toString()); metaData->setRawUnits(jsonObject.value(_unitsJsonKey).toString());
......
...@@ -58,6 +58,7 @@ const char* Vehicle::_altitudeAMSLFactName = "altitudeAMSL"; ...@@ -58,6 +58,7 @@ const char* Vehicle::_altitudeAMSLFactName = "altitudeAMSL";
const char* Vehicle::_gpsFactGroupName = "gps"; const char* Vehicle::_gpsFactGroupName = "gps";
const char* Vehicle::_batteryFactGroupName = "battery"; const char* Vehicle::_batteryFactGroupName = "battery";
const char* Vehicle::_windFactGroupName = "wind"; const char* Vehicle::_windFactGroupName = "wind";
const char* Vehicle::_vibrationFactGroupName = "vibration";
const char* VehicleGPSFactGroup::_hdopFactName = "hdop"; const char* VehicleGPSFactGroup::_hdopFactName = "hdop";
const char* VehicleGPSFactGroup::_vdopFactName = "vdop"; const char* VehicleGPSFactGroup::_vdopFactName = "vdop";
...@@ -83,6 +84,13 @@ const char* VehicleWindFactGroup::_directionFactName = "direction"; ...@@ -83,6 +84,13 @@ const char* VehicleWindFactGroup::_directionFactName = "direction";
const char* VehicleWindFactGroup::_speedFactName = "speed"; const char* VehicleWindFactGroup::_speedFactName = "speed";
const char* VehicleWindFactGroup::_verticalSpeedFactName = "verticalSpeed"; const char* VehicleWindFactGroup::_verticalSpeedFactName = "verticalSpeed";
const char* VehicleVibrationFactGroup::_xAxisFactName = "xAxis";
const char* VehicleVibrationFactGroup::_yAxisFactName = "yAxis";
const char* VehicleVibrationFactGroup::_zAxisFactName = "zAxis";
const char* VehicleVibrationFactGroup::_clipCount1FactName = "clipCount1";
const char* VehicleVibrationFactGroup::_clipCount2FactName = "clipCount2";
const char* VehicleVibrationFactGroup::_clipCount3FactName = "clipCount3";
Vehicle::Vehicle(LinkInterface* link, Vehicle::Vehicle(LinkInterface* link,
int vehicleId, int vehicleId,
MAV_AUTOPILOT firmwareType, MAV_AUTOPILOT firmwareType,
...@@ -150,6 +158,7 @@ Vehicle::Vehicle(LinkInterface* link, ...@@ -150,6 +158,7 @@ Vehicle::Vehicle(LinkInterface* link,
, _gpsFactGroup(this) , _gpsFactGroup(this)
, _batteryFactGroup(this) , _batteryFactGroup(this)
, _windFactGroup(this) , _windFactGroup(this)
, _vibrationFactGroup(this)
{ {
_addLink(link); _addLink(link);
...@@ -232,10 +241,12 @@ Vehicle::Vehicle(LinkInterface* link, ...@@ -232,10 +241,12 @@ Vehicle::Vehicle(LinkInterface* link,
_addFactGroup(&_gpsFactGroup, _gpsFactGroupName); _addFactGroup(&_gpsFactGroup, _gpsFactGroupName);
_addFactGroup(&_batteryFactGroup, _batteryFactGroupName); _addFactGroup(&_batteryFactGroup, _batteryFactGroupName);
_addFactGroup(&_windFactGroup, _windFactGroupName); _addFactGroup(&_windFactGroup, _windFactGroupName);
_addFactGroup(&_vibrationFactGroup, _vibrationFactGroupName);
_gpsFactGroup.setVehicle(this); _gpsFactGroup.setVehicle(this);
_batteryFactGroup.setVehicle(this); _batteryFactGroup.setVehicle(this);
_windFactGroup.setVehicle(this); _windFactGroup.setVehicle(this);
_vibrationFactGroup.setVehicle(this);
} }
Vehicle::~Vehicle() Vehicle::~Vehicle()
...@@ -333,6 +344,9 @@ void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t mes ...@@ -333,6 +344,9 @@ void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t mes
case MAVLINK_MSG_ID_SCALED_IMU3: case MAVLINK_MSG_ID_SCALED_IMU3:
emit mavlinkScaledImu3(message); emit mavlinkScaledImu3(message);
break; break;
case MAVLINK_MSG_ID_VIBRATION:
_handleVibration(message);
break;
// Following are ArduPilot dialect messages // Following are ArduPilot dialect messages
...@@ -346,6 +360,19 @@ void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t mes ...@@ -346,6 +360,19 @@ void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t mes
_uas->receiveMessage(message); _uas->receiveMessage(message);
} }
void Vehicle::_handleVibration(mavlink_message_t& message)
{
mavlink_vibration_t vibration;
mavlink_msg_vibration_decode(&message, &vibration);
_vibrationFactGroup.xAxis()->setRawValue(vibration.vibration_x);
_vibrationFactGroup.yAxis()->setRawValue(vibration.vibration_y);
_vibrationFactGroup.zAxis()->setRawValue(vibration.vibration_z);
_vibrationFactGroup.clipCount1()->setRawValue(vibration.clipping_0);
_vibrationFactGroup.clipCount2()->setRawValue(vibration.clipping_1);
_vibrationFactGroup.clipCount3()->setRawValue(vibration.clipping_2);
}
void Vehicle::_handleWind(mavlink_message_t& message) void Vehicle::_handleWind(mavlink_message_t& message)
{ {
mavlink_wind_t wind; mavlink_wind_t wind;
...@@ -1357,3 +1384,31 @@ void VehicleWindFactGroup::setVehicle(Vehicle* vehicle) ...@@ -1357,3 +1384,31 @@ void VehicleWindFactGroup::setVehicle(Vehicle* vehicle)
{ {
_vehicle = vehicle; _vehicle = vehicle;
} }
VehicleVibrationFactGroup::VehicleVibrationFactGroup(QObject* parent)
: FactGroup(1000, ":/json/Vehicle/VibrationFact.json", parent)
, _vehicle(NULL)
, _xAxisFact (0, _xAxisFactName, FactMetaData::valueTypeDouble)
, _yAxisFact (0, _yAxisFactName, FactMetaData::valueTypeDouble)
, _zAxisFact (0, _zAxisFactName, FactMetaData::valueTypeDouble)
, _clipCount1Fact (0, _clipCount1FactName, FactMetaData::valueTypeUint32)
, _clipCount2Fact (0, _clipCount2FactName, FactMetaData::valueTypeUint32)
, _clipCount3Fact (0, _clipCount3FactName, FactMetaData::valueTypeUint32)
{
_addFact(&_xAxisFact, _xAxisFactName);
_addFact(&_yAxisFact, _yAxisFactName);
_addFact(&_zAxisFact, _zAxisFactName);
_addFact(&_clipCount1Fact, _clipCount1FactName);
_addFact(&_clipCount2Fact, _clipCount2FactName);
_addFact(&_clipCount3Fact, _clipCount3FactName);
// Start out as not available "--.--"
_xAxisFact.setRawValue(std::numeric_limits<float>::quiet_NaN());
_yAxisFact.setRawValue(std::numeric_limits<float>::quiet_NaN());
_zAxisFact.setRawValue(std::numeric_limits<float>::quiet_NaN());
}
void VehicleVibrationFactGroup::setVehicle(Vehicle* vehicle)
{
_vehicle = vehicle;
}
...@@ -52,6 +52,46 @@ Q_DECLARE_LOGGING_CATEGORY(VehicleLog) ...@@ -52,6 +52,46 @@ Q_DECLARE_LOGGING_CATEGORY(VehicleLog)
class Vehicle; class Vehicle;
class VehicleVibrationFactGroup : public FactGroup
{
Q_OBJECT
public:
VehicleVibrationFactGroup(QObject* parent = NULL);
Q_PROPERTY(Fact* xAxis READ xAxis CONSTANT)
Q_PROPERTY(Fact* yAxis READ yAxis CONSTANT)
Q_PROPERTY(Fact* zAxis READ zAxis CONSTANT)
Q_PROPERTY(Fact* clipCount1 READ clipCount1 CONSTANT)
Q_PROPERTY(Fact* clipCount2 READ clipCount2 CONSTANT)
Q_PROPERTY(Fact* clipCount3 READ clipCount3 CONSTANT)
Fact* xAxis(void) { return &_xAxisFact; }
Fact* yAxis(void) { return &_yAxisFact; }
Fact* zAxis(void) { return &_zAxisFact; }
Fact* clipCount1(void) { return &_clipCount1Fact; }
Fact* clipCount2(void) { return &_clipCount2Fact; }
Fact* clipCount3(void) { return &_clipCount3Fact; }
void setVehicle(Vehicle* vehicle);
static const char* _xAxisFactName;
static const char* _yAxisFactName;
static const char* _zAxisFactName;
static const char* _clipCount1FactName;
static const char* _clipCount2FactName;
static const char* _clipCount3FactName;
private:
Vehicle* _vehicle;
Fact _xAxisFact;
Fact _yAxisFact;
Fact _zAxisFact;
Fact _clipCount1Fact;
Fact _clipCount2Fact;
Fact _clipCount3Fact;
};
class VehicleWindFactGroup : public FactGroup class VehicleWindFactGroup : public FactGroup
{ {
Q_OBJECT Q_OBJECT
...@@ -73,8 +113,6 @@ public: ...@@ -73,8 +113,6 @@ public:
static const char* _speedFactName; static const char* _speedFactName;
static const char* _verticalSpeedFactName; static const char* _verticalSpeedFactName;
private slots:
private: private:
Vehicle* _vehicle; Vehicle* _vehicle;
Fact _directionFact; Fact _directionFact;
...@@ -242,7 +280,8 @@ public: ...@@ -242,7 +280,8 @@ public:
Q_PROPERTY(FactGroup* gps READ gpsFactGroup CONSTANT) Q_PROPERTY(FactGroup* gps READ gpsFactGroup CONSTANT)
Q_PROPERTY(FactGroup* battery READ batteryFactGroup CONSTANT) Q_PROPERTY(FactGroup* battery READ batteryFactGroup CONSTANT)
Q_PROPERTY(FactGroup* wind READ windFactGroup CONSTANT) Q_PROPERTY(FactGroup* wind READ windFactGroup CONSTANT)
Q_PROPERTY(FactGroup* vibration READ vibrationFactGroup CONSTANT)
/// Resets link status counters /// Resets link status counters
Q_INVOKABLE void resetCounters (); Q_INVOKABLE void resetCounters ();
...@@ -389,9 +428,10 @@ public: ...@@ -389,9 +428,10 @@ public:
Fact* altitudeRelative (void) { return &_altitudeRelativeFact; } Fact* altitudeRelative (void) { return &_altitudeRelativeFact; }
Fact* altitudeAMSL (void) { return &_altitudeAMSLFact; } Fact* altitudeAMSL (void) { return &_altitudeAMSLFact; }
FactGroup* gpsFactGroup (void) { return &_gpsFactGroup; } FactGroup* gpsFactGroup (void) { return &_gpsFactGroup; }
FactGroup* batteryFactGroup (void) { return &_batteryFactGroup; } FactGroup* batteryFactGroup (void) { return &_batteryFactGroup; }
FactGroup* windFactGroup (void) { return &_windFactGroup; } FactGroup* windFactGroup (void) { return &_windFactGroup; }
FactGroup* vibrationFactGroup (void) { return &_vibrationFactGroup; }
void setConnectionLostEnabled(bool connectionLostEnabled); void setConnectionLostEnabled(bool connectionLostEnabled);
...@@ -495,6 +535,7 @@ private: ...@@ -495,6 +535,7 @@ private:
void _handleBatteryStatus(mavlink_message_t& message); void _handleBatteryStatus(mavlink_message_t& message);
void _handleSysStatus(mavlink_message_t& message); void _handleSysStatus(mavlink_message_t& message);
void _handleWind(mavlink_message_t& message); void _handleWind(mavlink_message_t& message);
void _handleVibration(mavlink_message_t& message);
void _missionManagerError(int errorCode, const QString& errorMsg); void _missionManagerError(int errorCode, const QString& errorMsg);
void _mapTrajectoryStart(void); void _mapTrajectoryStart(void);
void _mapTrajectoryStop(void); void _mapTrajectoryStop(void);
...@@ -605,9 +646,10 @@ private: ...@@ -605,9 +646,10 @@ private:
Fact _altitudeRelativeFact; Fact _altitudeRelativeFact;
Fact _altitudeAMSLFact; Fact _altitudeAMSLFact;
VehicleGPSFactGroup _gpsFactGroup; VehicleGPSFactGroup _gpsFactGroup;
VehicleBatteryFactGroup _batteryFactGroup; VehicleBatteryFactGroup _batteryFactGroup;
VehicleWindFactGroup _windFactGroup; VehicleWindFactGroup _windFactGroup;
VehicleVibrationFactGroup _vibrationFactGroup;
static const char* _rollFactName; static const char* _rollFactName;
static const char* _pitchFactName; static const char* _pitchFactName;
...@@ -621,6 +663,7 @@ private: ...@@ -621,6 +663,7 @@ private:
static const char* _gpsFactGroupName; static const char* _gpsFactGroupName;
static const char* _batteryFactGroupName; static const char* _batteryFactGroupName;
static const char* _windFactGroupName; static const char* _windFactGroupName;
static const char* _vibrationFactGroupName;
static const int _vehicleUIUpdateRateMSecs = 100; static const int _vehicleUIUpdateRateMSecs = 100;
......
{
"version": 1,
"properties": [
{
"name": "xAxis",
"shortDescription": "Vibe xAxis",
"type": "double",
"decimalPlaces": 1
},
{
"name": "yAxis",
"shortDescription": "Vibe yAxis",
"type": "double",
"decimalPlaces": 1
},
{
"name": "zAxis",
"shortDescription": "Vibe zAxis",
"type": "double",
"decimalPlaces": 1
},
{
"name": "clipCount1",
"shortDescription": "Clip Count (1)",
"type": "uint32"
},
{
"name": "clipCount2",
"shortDescription": "Clip Count (2)",
"type": "uint32"
},
{
"name": "clipCount3",
"shortDescription": "Clip Count (3)",
"type": "uint32"
}
]
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment