Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
48c896bb
Unverified
Commit
48c896bb
authored
Nov 12, 2017
by
Gus Grubba
Committed by
GitHub
Nov 12, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #5834 from mavlink/hobbsMeter
Adding access to the vehicle hobbs meter
parents
af45d4ad
cca928e5
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
58 additions
and
0 deletions
+58
-0
Vehicle.cc
src/Vehicle/Vehicle.cc
+43
-0
Vehicle.h
src/Vehicle/Vehicle.h
+10
-0
VehicleFact.json
src/Vehicle/VehicleFact.json
+5
-0
No files found.
src/Vehicle/Vehicle.cc
View file @
48c896bb
...
@@ -57,6 +57,7 @@ const char* Vehicle::_altitudeAMSLFactName = "altitudeAMSL";
...
@@ -57,6 +57,7 @@ const char* Vehicle::_altitudeAMSLFactName = "altitudeAMSL";
const
char
*
Vehicle
::
_flightDistanceFactName
=
"flightDistance"
;
const
char
*
Vehicle
::
_flightDistanceFactName
=
"flightDistance"
;
const
char
*
Vehicle
::
_flightTimeFactName
=
"flightTime"
;
const
char
*
Vehicle
::
_flightTimeFactName
=
"flightTime"
;
const
char
*
Vehicle
::
_distanceToHomeFactName
=
"distanceToHome"
;
const
char
*
Vehicle
::
_distanceToHomeFactName
=
"distanceToHome"
;
const
char
*
Vehicle
::
_hobbsFactName
=
"hobbs"
;
const
char
*
Vehicle
::
_gpsFactGroupName
=
"gps"
;
const
char
*
Vehicle
::
_gpsFactGroupName
=
"gps"
;
const
char
*
Vehicle
::
_batteryFactGroupName
=
"battery"
;
const
char
*
Vehicle
::
_batteryFactGroupName
=
"battery"
;
...
@@ -165,6 +166,7 @@ Vehicle::Vehicle(LinkInterface* link,
...
@@ -165,6 +166,7 @@ Vehicle::Vehicle(LinkInterface* link,
,
_flightDistanceFact
(
0
,
_flightDistanceFactName
,
FactMetaData
::
valueTypeDouble
)
,
_flightDistanceFact
(
0
,
_flightDistanceFactName
,
FactMetaData
::
valueTypeDouble
)
,
_flightTimeFact
(
0
,
_flightTimeFactName
,
FactMetaData
::
valueTypeElapsedTimeInSeconds
)
,
_flightTimeFact
(
0
,
_flightTimeFactName
,
FactMetaData
::
valueTypeElapsedTimeInSeconds
)
,
_distanceToHomeFact
(
0
,
_distanceToHomeFactName
,
FactMetaData
::
valueTypeDouble
)
,
_distanceToHomeFact
(
0
,
_distanceToHomeFactName
,
FactMetaData
::
valueTypeDouble
)
,
_hobbsFact
(
0
,
_hobbsFactName
,
FactMetaData
::
valueTypeString
)
,
_gpsFactGroup
(
this
)
,
_gpsFactGroup
(
this
)
,
_batteryFactGroup
(
this
)
,
_batteryFactGroup
(
this
)
,
_windFactGroup
(
this
)
,
_windFactGroup
(
this
)
...
@@ -183,6 +185,8 @@ Vehicle::Vehicle(LinkInterface* link,
...
@@ -183,6 +185,8 @@ Vehicle::Vehicle(LinkInterface* link,
connect
(
this
,
&
Vehicle
::
flightModeChanged
,
this
,
&
Vehicle
::
_handleFlightModeChanged
);
connect
(
this
,
&
Vehicle
::
flightModeChanged
,
this
,
&
Vehicle
::
_handleFlightModeChanged
);
connect
(
this
,
&
Vehicle
::
armedChanged
,
this
,
&
Vehicle
::
_announceArmedChanged
);
connect
(
this
,
&
Vehicle
::
armedChanged
,
this
,
&
Vehicle
::
_announceArmedChanged
);
connect
(
_toolbox
->
multiVehicleManager
(),
&
MultiVehicleManager
::
parameterReadyVehicleAvailableChanged
,
this
,
&
Vehicle
::
_vehicleParamLoaded
);
_uas
=
new
UAS
(
_mavlink
,
this
,
_firmwarePluginManager
);
_uas
=
new
UAS
(
_mavlink
,
this
,
_firmwarePluginManager
);
connect
(
_uas
,
&
UAS
::
imageReady
,
this
,
&
Vehicle
::
_imageReady
);
connect
(
_uas
,
&
UAS
::
imageReady
,
this
,
&
Vehicle
::
_imageReady
);
...
@@ -337,6 +341,7 @@ Vehicle::Vehicle(MAV_AUTOPILOT firmwareType,
...
@@ -337,6 +341,7 @@ Vehicle::Vehicle(MAV_AUTOPILOT firmwareType,
,
_flightDistanceFact
(
0
,
_flightDistanceFactName
,
FactMetaData
::
valueTypeDouble
)
,
_flightDistanceFact
(
0
,
_flightDistanceFactName
,
FactMetaData
::
valueTypeDouble
)
,
_flightTimeFact
(
0
,
_flightTimeFactName
,
FactMetaData
::
valueTypeElapsedTimeInSeconds
)
,
_flightTimeFact
(
0
,
_flightTimeFactName
,
FactMetaData
::
valueTypeElapsedTimeInSeconds
)
,
_distanceToHomeFact
(
0
,
_distanceToHomeFactName
,
FactMetaData
::
valueTypeDouble
)
,
_distanceToHomeFact
(
0
,
_distanceToHomeFactName
,
FactMetaData
::
valueTypeDouble
)
,
_hobbsFact
(
0
,
_hobbsFactName
,
FactMetaData
::
valueTypeString
)
,
_gpsFactGroup
(
this
)
,
_gpsFactGroup
(
this
)
,
_batteryFactGroup
(
this
)
,
_batteryFactGroup
(
this
)
,
_windFactGroup
(
this
)
,
_windFactGroup
(
this
)
...
@@ -352,6 +357,7 @@ void Vehicle::_commonInit(void)
...
@@ -352,6 +357,7 @@ void Vehicle::_commonInit(void)
connect
(
this
,
&
Vehicle
::
coordinateChanged
,
this
,
&
Vehicle
::
_updateDistanceToHome
);
connect
(
this
,
&
Vehicle
::
coordinateChanged
,
this
,
&
Vehicle
::
_updateDistanceToHome
);
connect
(
this
,
&
Vehicle
::
homePositionChanged
,
this
,
&
Vehicle
::
_updateDistanceToHome
);
connect
(
this
,
&
Vehicle
::
homePositionChanged
,
this
,
&
Vehicle
::
_updateDistanceToHome
);
connect
(
this
,
&
Vehicle
::
hobbsMeterChanged
,
this
,
&
Vehicle
::
_updateHobbsMeter
);
_missionManager
=
new
MissionManager
(
this
);
_missionManager
=
new
MissionManager
(
this
);
connect
(
_missionManager
,
&
MissionManager
::
error
,
this
,
&
Vehicle
::
_missionManagerError
);
connect
(
_missionManager
,
&
MissionManager
::
error
,
this
,
&
Vehicle
::
_missionManagerError
);
...
@@ -393,6 +399,9 @@ void Vehicle::_commonInit(void)
...
@@ -393,6 +399,9 @@ void Vehicle::_commonInit(void)
_addFact
(
&
_flightTimeFact
,
_flightTimeFactName
);
_addFact
(
&
_flightTimeFact
,
_flightTimeFactName
);
_addFact
(
&
_distanceToHomeFact
,
_distanceToHomeFactName
);
_addFact
(
&
_distanceToHomeFact
,
_distanceToHomeFactName
);
_hobbsFact
.
setRawValue
(
QVariant
(
QString
(
"0000:00:00"
)));
_addFact
(
&
_hobbsFact
,
_hobbsFactName
);
_addFactGroup
(
&
_gpsFactGroup
,
_gpsFactGroupName
);
_addFactGroup
(
&
_gpsFactGroup
,
_gpsFactGroupName
);
_addFactGroup
(
&
_batteryFactGroup
,
_batteryFactGroupName
);
_addFactGroup
(
&
_batteryFactGroup
,
_batteryFactGroupName
);
_addFactGroup
(
&
_windFactGroup
,
_windFactGroupName
);
_addFactGroup
(
&
_windFactGroup
,
_windFactGroupName
);
...
@@ -2862,6 +2871,11 @@ void Vehicle::_updateDistanceToHome(void)
...
@@ -2862,6 +2871,11 @@ void Vehicle::_updateDistanceToHome(void)
}
}
}
}
void
Vehicle
::
_updateHobbsMeter
(
void
)
{
_hobbsFact
.
setRawValue
(
hobbsMeter
());
}
void
Vehicle
::
forceInitialPlanRequestComplete
(
void
)
void
Vehicle
::
forceInitialPlanRequestComplete
(
void
)
{
{
_initialPlanRequestComplete
=
true
;
_initialPlanRequestComplete
=
true
;
...
@@ -2873,6 +2887,35 @@ void Vehicle::sendPlan(QString planFile)
...
@@ -2873,6 +2887,35 @@ void Vehicle::sendPlan(QString planFile)
PlanMasterController
::
sendPlanToVehicle
(
this
,
planFile
);
PlanMasterController
::
sendPlanToVehicle
(
this
,
planFile
);
}
}
QString
Vehicle
::
hobbsMeter
()
{
static
const
char
*
HOOBS_HI
=
"LND_FLIGHT_T_HI"
;
static
const
char
*
HOOBS_LO
=
"LND_FLIGHT_T_LO"
;
//-- TODO: Does this exist on non PX4?
if
(
_parameterManager
->
parameterExists
(
FactSystem
::
defaultComponentId
,
HOOBS_HI
)
&&
_parameterManager
->
parameterExists
(
FactSystem
::
defaultComponentId
,
HOOBS_LO
))
{
Fact
*
factHi
=
_parameterManager
->
getParameter
(
FactSystem
::
defaultComponentId
,
HOOBS_HI
);
Fact
*
factLo
=
_parameterManager
->
getParameter
(
FactSystem
::
defaultComponentId
,
HOOBS_LO
);
uint64_t
hobbsTimeSeconds
=
((
uint64_t
)
factHi
->
rawValue
().
toUInt
()
<<
32
|
(
uint64_t
)
factLo
->
rawValue
().
toUInt
())
/
1000000
;
int
hours
=
hobbsTimeSeconds
/
3600
;
int
minutes
=
(
hobbsTimeSeconds
%
3600
)
/
60
;
int
seconds
=
hobbsTimeSeconds
%
60
;
QString
timeStr
;
timeStr
.
sprintf
(
"%04d:%02d:%02d"
,
hours
,
minutes
,
seconds
);
qCDebug
(
VehicleLog
)
<<
"Hobbs Meter:"
<<
timeStr
<<
"("
<<
factHi
->
rawValue
().
toUInt
()
<<
factLo
->
rawValue
().
toUInt
()
<<
")"
;
return
timeStr
;
}
return
QString
(
"0000:00:00"
);
}
void
Vehicle
::
_vehicleParamLoaded
(
bool
ready
)
{
//-- TODO: This seems silly but can you think of a better
// way to update this?
if
(
ready
)
{
emit
hobbsMeterChanged
();
}
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
...
...
src/Vehicle/Vehicle.h
View file @
48c896bb
...
@@ -319,6 +319,7 @@ public:
...
@@ -319,6 +319,7 @@ public:
Q_PROPERTY
(
bool
initialPlanRequestComplete
READ
initialPlanRequestComplete
NOTIFY
initialPlanRequestCompleteChanged
)
Q_PROPERTY
(
bool
initialPlanRequestComplete
READ
initialPlanRequestComplete
NOTIFY
initialPlanRequestCompleteChanged
)
Q_PROPERTY
(
QVariantList
staticCameraList
READ
staticCameraList
CONSTANT
)
Q_PROPERTY
(
QVariantList
staticCameraList
READ
staticCameraList
CONSTANT
)
Q_PROPERTY
(
QGCCameraManager
*
dynamicCameras
READ
dynamicCameras
NOTIFY
dynamicCamerasChanged
)
Q_PROPERTY
(
QGCCameraManager
*
dynamicCameras
READ
dynamicCameras
NOTIFY
dynamicCamerasChanged
)
Q_PROPERTY
(
QString
hobbsMeter
READ
hobbsMeter
NOTIFY
hobbsMeterChanged
)
// Vehicle state used for guided control
// Vehicle state used for guided control
Q_PROPERTY
(
bool
flying
READ
flying
NOTIFY
flyingChanged
)
///< Vehicle is flying
Q_PROPERTY
(
bool
flying
READ
flying
NOTIFY
flyingChanged
)
///< Vehicle is flying
...
@@ -343,6 +344,7 @@ public:
...
@@ -343,6 +344,7 @@ public:
Q_PROPERTY
(
Fact
*
altitudeAMSL
READ
altitudeAMSL
CONSTANT
)
Q_PROPERTY
(
Fact
*
altitudeAMSL
READ
altitudeAMSL
CONSTANT
)
Q_PROPERTY
(
Fact
*
flightDistance
READ
flightDistance
CONSTANT
)
Q_PROPERTY
(
Fact
*
flightDistance
READ
flightDistance
CONSTANT
)
Q_PROPERTY
(
Fact
*
distanceToHome
READ
distanceToHome
CONSTANT
)
Q_PROPERTY
(
Fact
*
distanceToHome
READ
distanceToHome
CONSTANT
)
Q_PROPERTY
(
Fact
*
hobbs
READ
hobbs
CONSTANT
)
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
)
...
@@ -613,6 +615,7 @@ public:
...
@@ -613,6 +615,7 @@ public:
Fact
*
altitudeAMSL
(
void
)
{
return
&
_altitudeAMSLFact
;
}
Fact
*
altitudeAMSL
(
void
)
{
return
&
_altitudeAMSLFact
;
}
Fact
*
flightDistance
(
void
)
{
return
&
_flightDistanceFact
;
}
Fact
*
flightDistance
(
void
)
{
return
&
_flightDistanceFact
;
}
Fact
*
distanceToHome
(
void
)
{
return
&
_distanceToHomeFact
;
}
Fact
*
distanceToHome
(
void
)
{
return
&
_distanceToHomeFact
;
}
Fact
*
hobbs
(
void
)
{
return
&
_hobbsFact
;
}
FactGroup
*
gpsFactGroup
(
void
)
{
return
&
_gpsFactGroup
;
}
FactGroup
*
gpsFactGroup
(
void
)
{
return
&
_gpsFactGroup
;
}
FactGroup
*
batteryFactGroup
(
void
)
{
return
&
_batteryFactGroup
;
}
FactGroup
*
batteryFactGroup
(
void
)
{
return
&
_batteryFactGroup
;
}
...
@@ -690,7 +693,9 @@ public:
...
@@ -690,7 +693,9 @@ public:
bool
capabilitiesKnown
(
void
)
const
{
return
_vehicleCapabilitiesKnown
;
}
bool
capabilitiesKnown
(
void
)
const
{
return
_vehicleCapabilitiesKnown
;
}
uint64_t
capabilityBits
(
void
)
const
{
return
_capabilityBits
;
}
// Change signalled by capabilityBitsChanged
uint64_t
capabilityBits
(
void
)
const
{
return
_capabilityBits
;
}
// Change signalled by capabilityBitsChanged
QGCCameraManager
*
dynamicCameras
()
{
return
_cameras
;
}
QGCCameraManager
*
dynamicCameras
()
{
return
_cameras
;
}
QString
hobbsMeter
();
/// @true: When flying a mission the vehicle is always facing towards the next waypoint
/// @true: When flying a mission the vehicle is always facing towards the next waypoint
bool
vehicleYawsToNextWaypointInMission
(
void
)
const
;
bool
vehicleYawsToNextWaypointInMission
(
void
)
const
;
...
@@ -736,6 +741,7 @@ signals:
...
@@ -736,6 +741,7 @@ signals:
void
firmwareTypeChanged
(
void
);
void
firmwareTypeChanged
(
void
);
void
vehicleTypeChanged
(
void
);
void
vehicleTypeChanged
(
void
);
void
dynamicCamerasChanged
();
void
dynamicCamerasChanged
();
void
hobbsMeterChanged
();
void
capabilitiesKnownChanged
(
bool
capabilitiesKnown
);
void
capabilitiesKnownChanged
(
bool
capabilitiesKnown
);
void
initialPlanRequestCompleteChanged
(
bool
initialPlanRequestComplete
);
void
initialPlanRequestCompleteChanged
(
bool
initialPlanRequestComplete
);
void
capabilityBitsChanged
(
uint64_t
capabilityBits
);
void
capabilityBitsChanged
(
uint64_t
capabilityBits
);
...
@@ -834,6 +840,8 @@ private slots:
...
@@ -834,6 +840,8 @@ private slots:
void
_clearTrajectoryPoints
(
void
);
void
_clearTrajectoryPoints
(
void
);
void
_clearCameraTriggerPoints
(
void
);
void
_clearCameraTriggerPoints
(
void
);
void
_updateDistanceToHome
(
void
);
void
_updateDistanceToHome
(
void
);
void
_updateHobbsMeter
(
void
);
void
_vehicleParamLoaded
(
bool
ready
);
private:
private:
bool
_containsLink
(
LinkInterface
*
link
);
bool
_containsLink
(
LinkInterface
*
link
);
...
@@ -1055,6 +1063,7 @@ private:
...
@@ -1055,6 +1063,7 @@ private:
Fact
_flightDistanceFact
;
Fact
_flightDistanceFact
;
Fact
_flightTimeFact
;
Fact
_flightTimeFact
;
Fact
_distanceToHomeFact
;
Fact
_distanceToHomeFact
;
Fact
_hobbsFact
;
VehicleGPSFactGroup
_gpsFactGroup
;
VehicleGPSFactGroup
_gpsFactGroup
;
VehicleBatteryFactGroup
_batteryFactGroup
;
VehicleBatteryFactGroup
_batteryFactGroup
;
...
@@ -1073,6 +1082,7 @@ private:
...
@@ -1073,6 +1082,7 @@ private:
static
const
char
*
_flightDistanceFactName
;
static
const
char
*
_flightDistanceFactName
;
static
const
char
*
_flightTimeFactName
;
static
const
char
*
_flightTimeFactName
;
static
const
char
*
_distanceToHomeFactName
;
static
const
char
*
_distanceToHomeFactName
;
static
const
char
*
_hobbsFactName
;
static
const
char
*
_gpsFactGroupName
;
static
const
char
*
_gpsFactGroupName
;
static
const
char
*
_batteryFactGroupName
;
static
const
char
*
_batteryFactGroupName
;
...
...
src/Vehicle/VehicleFact.json
View file @
48c896bb
...
@@ -74,5 +74,10 @@
...
@@ -74,5 +74,10 @@
"shortDescription"
:
"Flight Time"
,
"shortDescription"
:
"Flight Time"
,
"type"
:
"elapsedSeconds"
,
"type"
:
"elapsedSeconds"
,
"decimalPlaces"
:
1
"decimalPlaces"
:
1
},
{
"name"
:
"hobbs"
,
"shortDescription"
:
"Hobbs Meter"
,
"type"
:
"string"
}
}
]
]
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment