swift - Add getOwnAircraftVelocityData dbus method
This commit is contained in:
parent
938bfd1604
commit
509fbbcebc
2 changed files with 82 additions and 3 deletions
|
@ -22,8 +22,9 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <simgear/debug/logstream.hxx>
|
#include <simgear/debug/logstream.hxx>
|
||||||
#include <simgear/structure/commands.hxx>
|
#include <simgear/structure/commands.hxx>
|
||||||
|
#include <simgear/constants.h>
|
||||||
|
|
||||||
#define FGSWIFTBUS_API_VERSION 2;
|
#define FGSWIFTBUS_API_VERSION 3;
|
||||||
|
|
||||||
namespace FGSwiftBus {
|
namespace FGSwiftBus {
|
||||||
|
|
||||||
|
@ -62,6 +63,12 @@ CService::CService()
|
||||||
m_speedBrakeDeployRatioNode = fgGetNode("/surface-positions/speedbrake-pos-norm", true);
|
m_speedBrakeDeployRatioNode = fgGetNode("/surface-positions/speedbrake-pos-norm", true);
|
||||||
m_aircraftNameNode = fgGetNode("/sim/aircraft", true);
|
m_aircraftNameNode = fgGetNode("/sim/aircraft", true);
|
||||||
m_groundElevationNode = fgGetNode("/position/ground-elev-m", true);
|
m_groundElevationNode = fgGetNode("/position/ground-elev-m", true);
|
||||||
|
m_velocityXNode = fgGetNode("/velocities/speed-east-fps", true);
|
||||||
|
m_velocityYNode = fgGetNode("/velocities/speed-down-fps", true);
|
||||||
|
m_velocityZNode = fgGetNode("/velocities/speed-north-fps", true);
|
||||||
|
m_rollRateNode = fgGetNode("/orientation/roll-rate-degps", true);
|
||||||
|
m_pichRateNode = fgGetNode("/orientation/pitch-rate-degps", true);
|
||||||
|
m_yawRateNode = fgGetNode("/orientation/yaw-rate-degps", true);
|
||||||
|
|
||||||
SG_LOG(SG_NETWORK, SG_INFO, "FGSwiftBus Service initialized");
|
SG_LOG(SG_NETWORK, SG_INFO, "FGSwiftBus Service initialized");
|
||||||
}
|
}
|
||||||
|
@ -316,6 +323,35 @@ std::string CService::getAircraftName() const
|
||||||
return m_aircraftNameNode->getStringValue();
|
return m_aircraftNameNode->getStringValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double CService::getVelocityX() const
|
||||||
|
{
|
||||||
|
return m_velocityXNode->getDoubleValue() * SG_FEET_TO_METER;
|
||||||
|
}
|
||||||
|
|
||||||
|
double CService::getVelocityY() const
|
||||||
|
{
|
||||||
|
return m_velocityYNode->getDoubleValue() * SG_FEET_TO_METER * -1; // + (up), - (down)
|
||||||
|
}
|
||||||
|
|
||||||
|
double CService::getVelocityZ() const
|
||||||
|
{
|
||||||
|
return m_velocityZNode->getDoubleValue() * SG_FEET_TO_METER;
|
||||||
|
}
|
||||||
|
|
||||||
|
double CService::getRollRate() const
|
||||||
|
{
|
||||||
|
return m_rollRateNode->getDoubleValue() * SG_DEGREES_TO_RADIANS;
|
||||||
|
}
|
||||||
|
double CService::getPitchRate() const
|
||||||
|
{
|
||||||
|
return m_pichRateNode->getDoubleValue() * SG_DEGREES_TO_RADIANS;
|
||||||
|
}
|
||||||
|
|
||||||
|
double CService::getYawRate() const
|
||||||
|
{
|
||||||
|
return m_yawRateNode->getDoubleValue() * SG_DEGREES_TO_RADIANS;
|
||||||
|
}
|
||||||
|
|
||||||
static const char* introspection_service = DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE;
|
static const char* introspection_service = DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE;
|
||||||
|
|
||||||
DBusHandlerResult CService::dbusMessageHandler(const CDBusMessage& message_)
|
DBusHandlerResult CService::dbusMessageHandler(const CDBusMessage& message_)
|
||||||
|
@ -361,6 +397,24 @@ DBusHandlerResult CService::dbusMessageHandler(const CDBusMessage& message_)
|
||||||
reply.appendArgument(pressAlt);
|
reply.appendArgument(pressAlt);
|
||||||
sendDBusMessage(reply);
|
sendDBusMessage(reply);
|
||||||
});
|
});
|
||||||
|
} else if (message.getMethodName() == "getOwnAircraftVelocityData") {
|
||||||
|
queueDBusCall([=]() {
|
||||||
|
double velocityX = getVelocityX();
|
||||||
|
double velocityY = getVelocityY();
|
||||||
|
double velocityZ = getVelocityZ();
|
||||||
|
double pitchVelocity = getPitchRate();
|
||||||
|
double rollVelocity = getRollRate();
|
||||||
|
double yawVelocity = getYawRate();
|
||||||
|
CDBusMessage reply = CDBusMessage::createReply(sender, serial);
|
||||||
|
reply.beginArgumentWrite();
|
||||||
|
reply.appendArgument(velocityX);
|
||||||
|
reply.appendArgument(velocityY);
|
||||||
|
reply.appendArgument(velocityZ);
|
||||||
|
reply.appendArgument(pitchVelocity);
|
||||||
|
reply.appendArgument(rollVelocity);
|
||||||
|
reply.appendArgument(yawVelocity);
|
||||||
|
sendDBusMessage(reply);
|
||||||
|
});
|
||||||
} else if (message.getMethodName() == "getVersionNumber") {
|
} else if (message.getMethodName() == "getVersionNumber") {
|
||||||
queueDBusCall([=]() {
|
queueDBusCall([=]() {
|
||||||
sendDBusReply(sender, serial, getVersionNumber());
|
sendDBusReply(sender, serial, getVersionNumber());
|
||||||
|
|
|
@ -196,6 +196,24 @@ public:
|
||||||
//! Get ground elevation at aircraft current position
|
//! Get ground elevation at aircraft current position
|
||||||
double getGroundElevation() const;
|
double getGroundElevation() const;
|
||||||
|
|
||||||
|
//! Get x velocity in m/s
|
||||||
|
double getVelocityX() const;
|
||||||
|
|
||||||
|
//! Get y velocity in m/s
|
||||||
|
double getVelocityY() const;
|
||||||
|
|
||||||
|
//! Get z velocity in m/s
|
||||||
|
double getVelocityZ() const;
|
||||||
|
|
||||||
|
//! Get roll rate in rad/sec
|
||||||
|
double getRollRate() const;
|
||||||
|
|
||||||
|
//! Get pitch rate in rad/sec
|
||||||
|
double getPitchRate() const;
|
||||||
|
|
||||||
|
//! Get yaw rate in rad/sec
|
||||||
|
double getYawRate() const;
|
||||||
|
|
||||||
//! Perform generic processing
|
//! Perform generic processing
|
||||||
int process();
|
int process();
|
||||||
|
|
||||||
|
@ -239,6 +257,13 @@ private:
|
||||||
//SGPropertyNode_ptr numberEnginesNode;
|
//SGPropertyNode_ptr numberEnginesNode;
|
||||||
//SGPropertyNode_ptr engineN1PercentageNode;
|
//SGPropertyNode_ptr engineN1PercentageNode;
|
||||||
SGPropertyNode_ptr m_aircraftNameNode;
|
SGPropertyNode_ptr m_aircraftNameNode;
|
||||||
|
SGPropertyNode_ptr m_velocityXNode;
|
||||||
|
SGPropertyNode_ptr m_velocityYNode;
|
||||||
|
SGPropertyNode_ptr m_velocityZNode;
|
||||||
|
SGPropertyNode_ptr m_rollRateNode;
|
||||||
|
SGPropertyNode_ptr m_pichRateNode;
|
||||||
|
SGPropertyNode_ptr m_yawRateNode;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
} // namespace FGSwiftBus
|
} // namespace FGSwiftBus
|
||||||
|
|
Loading…
Add table
Reference in a new issue