From f8fab0a00a6df4360840c13fb6184c6aa7713d88 Mon Sep 17 00:00:00 2001 From: "CORP\\kamil.golabek" Date: Tue, 3 Apr 2018 13:11:06 +0200 Subject: [PATCH 1/2] Loading situations file from disk. Usage: sit sitFileLocationRelToXPlaneRootDir.sit --- extplane-plugin/xplaneplugin.cpp | 9 +++++++++ extplane-plugin/xplaneplugin.h | 1 + extplane-server/datarefprovider.h | 2 ++ extplane-server/tcpclient.cpp | 6 ++++++ .../datasources/flightgeardatasource.cpp | 3 +++ extplane-transformer/datasources/flightgeardatasource.h | 1 + 6 files changed, 22 insertions(+) diff --git a/extplane-plugin/xplaneplugin.cpp b/extplane-plugin/xplaneplugin.cpp index ea44c24..01555c1 100644 --- a/extplane-plugin/xplaneplugin.cpp +++ b/extplane-plugin/xplaneplugin.cpp @@ -320,6 +320,15 @@ QString XPlanePlugin::refNameWithoutModifiers(QString &original) return original; } +/** + * @brief XPlanePlugin::loadSit + * @param name : situation file location - + * relative to XPlane root folder, e.g. Output/situations/XXX.sit + */ +void XPlanePlugin::loadSit(QString sitFileLocation){ + XPLMLoadDataFile(xplm_DataFile_Situation, sitFileLocation.toLatin1().data()); +} + void XPlanePlugin::pluginStop() { DEBUG; diff --git a/extplane-plugin/xplaneplugin.h b/extplane-plugin/xplaneplugin.h index ea504cd..34ef46d 100644 --- a/extplane-plugin/xplaneplugin.h +++ b/extplane-plugin/xplaneplugin.h @@ -35,6 +35,7 @@ class XPlanePlugin : public QObject, public DataRefProvider { virtual void buttonRelease(int buttonid); virtual void changeDataRef(DataRef *ref); virtual void command(QString &name, extplaneCommandType type); + virtual void loadSit(QString sitFileLocation); public slots: void setFlightLoopInterval(float newInterval); diff --git a/extplane-server/datarefprovider.h b/extplane-server/datarefprovider.h index 4a4f004..2124f11 100644 --- a/extplane-server/datarefprovider.h +++ b/extplane-server/datarefprovider.h @@ -36,6 +36,8 @@ class DataRefProvider { virtual void buttonRelease(int buttonid)=0; // Run a named command virtual void command(QString &name, extplaneCommandType type)=0; + //Load situation file from disk, relatively to XPlane root folder + virtual void loadSit(QString sitFileLocation)=0; }; #endif // DATAREFPROVIDER_H diff --git a/extplane-server/tcpclient.cpp b/extplane-server/tcpclient.cpp index f91e4e4..bd5b772 100644 --- a/extplane-server/tcpclient.cpp +++ b/extplane-server/tcpclient.cpp @@ -194,6 +194,12 @@ void TcpClient::readClient() { } else { INFO << "Invalid cmd command"; } + } else if(command == "sit"){ + if(subLine.size() == 2) { + _refProvider->loadSit(subLine.value(1)); + } else { + INFO << "Invalid sit command"; + } } else { INFO << "Unknown command " << command; } diff --git a/extplane-transformer/datasources/flightgeardatasource.cpp b/extplane-transformer/datasources/flightgeardatasource.cpp index 9bb1706..c47c8f8 100644 --- a/extplane-transformer/datasources/flightgeardatasource.cpp +++ b/extplane-transformer/datasources/flightgeardatasource.cpp @@ -76,6 +76,9 @@ void FlightGearDataSource::buttonRelease(int buttonid) void FlightGearDataSource::command(QString &name, extplaneCommandType type) {} +void FlightGearDataSource::loadSit(QString sitFileLocation) +{} + void FlightGearDataSource::sessionOpened() { setNetworkError(QString()); diff --git a/extplane-transformer/datasources/flightgeardatasource.h b/extplane-transformer/datasources/flightgeardatasource.h index c528baa..8b9f51f 100644 --- a/extplane-transformer/datasources/flightgeardatasource.h +++ b/extplane-transformer/datasources/flightgeardatasource.h @@ -35,6 +35,7 @@ class FlightGearDataSource : public DataSource void buttonPress(int buttonid); void buttonRelease(int buttonid); void command(QString &name, extplaneCommandType type); + void loadSit(QString sitFileLocation); private slots: void sessionOpened(); From c6a4a9bc1df2f964347e7ac157ac8ff720e589f8 Mon Sep 17 00:00:00 2001 From: "CORP\\kamil.golabek" Date: Wed, 4 Apr 2018 08:59:24 +0200 Subject: [PATCH 2/2] updated README.md and code refactored --- README.md | 7 +++++++ extplane-plugin/xplaneplugin.cpp | 11 ++++++++--- extplane-plugin/xplaneplugin.h | 2 +- extplane-server/datarefprovider.h | 2 +- extplane-server/tcpclient.cpp | 2 +- .../datasources/flightgeardatasource.cpp | 2 +- .../datasources/flightgeardatasource.h | 2 +- 7 files changed, 20 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index fb6c379..6b70259 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ external programs through an easy-to-use TCP protocol. * Support for different dataref types: int, float, double, int[], float[], data * Simulate key and button presses * Execute commands +* Load situations * Free & open source under GPLv3 * Client libraries available for Qt (c++), Java and C# @@ -246,6 +247,11 @@ provide a way to lookup keys or buttons by name. Command identifiers are strings that look like datarefs. + +### Situations ### +* ** sit {situationFileLocation} ** situation file location relative to XPlane root folder
+ (e.g., sit Output/situations/SampleSit.sit ) + ### Other ### * **disconnect** Disconnect the TCP socket. @@ -382,6 +388,7 @@ Original Author: Contributors: - Dan Krusi - Bob Gates +- Kamil Gołąbek Use GitHub's issue tracker to report bugs or feature requests. diff --git a/extplane-plugin/xplaneplugin.cpp b/extplane-plugin/xplaneplugin.cpp index 01555c1..5b60915 100644 --- a/extplane-plugin/xplaneplugin.cpp +++ b/extplane-plugin/xplaneplugin.cpp @@ -321,12 +321,17 @@ QString XPlanePlugin::refNameWithoutModifiers(QString &original) } /** - * @brief XPlanePlugin::loadSit + * @brief XPlanePlugin::loadSituation * @param name : situation file location - * relative to XPlane root folder, e.g. Output/situations/XXX.sit */ -void XPlanePlugin::loadSit(QString sitFileLocation){ - XPLMLoadDataFile(xplm_DataFile_Situation, sitFileLocation.toLatin1().data()); +bool XPlanePlugin::loadSituation(QString sitFileLocation){ + int ret = XPLMLoadDataFile(xplm_DataFile_Situation, sitFileLocation.toLatin1().data()); + if(ret == 1){ + return true; + }else { + return false; + } } diff --git a/extplane-plugin/xplaneplugin.h b/extplane-plugin/xplaneplugin.h index 34ef46d..7584d23 100644 --- a/extplane-plugin/xplaneplugin.h +++ b/extplane-plugin/xplaneplugin.h @@ -35,7 +35,7 @@ class XPlanePlugin : public QObject, public DataRefProvider { virtual void buttonRelease(int buttonid); virtual void changeDataRef(DataRef *ref); virtual void command(QString &name, extplaneCommandType type); - virtual void loadSit(QString sitFileLocation); + virtual bool loadSituation(QString sitFileLocation); public slots: void setFlightLoopInterval(float newInterval); diff --git a/extplane-server/datarefprovider.h b/extplane-server/datarefprovider.h index 2124f11..65497aa 100644 --- a/extplane-server/datarefprovider.h +++ b/extplane-server/datarefprovider.h @@ -37,7 +37,7 @@ class DataRefProvider { // Run a named command virtual void command(QString &name, extplaneCommandType type)=0; //Load situation file from disk, relatively to XPlane root folder - virtual void loadSit(QString sitFileLocation)=0; + virtual bool loadSituation(QString sitFileLocation)=0; }; #endif // DATAREFPROVIDER_H diff --git a/extplane-server/tcpclient.cpp b/extplane-server/tcpclient.cpp index bd5b772..7b5a885 100644 --- a/extplane-server/tcpclient.cpp +++ b/extplane-server/tcpclient.cpp @@ -196,7 +196,7 @@ void TcpClient::readClient() { } } else if(command == "sit"){ if(subLine.size() == 2) { - _refProvider->loadSit(subLine.value(1)); + _refProvider->loadSituation(subLine.value(1)); } else { INFO << "Invalid sit command"; } diff --git a/extplane-transformer/datasources/flightgeardatasource.cpp b/extplane-transformer/datasources/flightgeardatasource.cpp index c47c8f8..60257dd 100644 --- a/extplane-transformer/datasources/flightgeardatasource.cpp +++ b/extplane-transformer/datasources/flightgeardatasource.cpp @@ -76,7 +76,7 @@ void FlightGearDataSource::buttonRelease(int buttonid) void FlightGearDataSource::command(QString &name, extplaneCommandType type) {} -void FlightGearDataSource::loadSit(QString sitFileLocation) +bool FlightGearDataSource::loadSituation(QString sitFileLocation) {} void FlightGearDataSource::sessionOpened() diff --git a/extplane-transformer/datasources/flightgeardatasource.h b/extplane-transformer/datasources/flightgeardatasource.h index 8b9f51f..f6df34d 100644 --- a/extplane-transformer/datasources/flightgeardatasource.h +++ b/extplane-transformer/datasources/flightgeardatasource.h @@ -35,7 +35,7 @@ class FlightGearDataSource : public DataSource void buttonPress(int buttonid); void buttonRelease(int buttonid); void command(QString &name, extplaneCommandType type); - void loadSit(QString sitFileLocation); + bool loadSituation(QString sitFileLocation); private slots: void sessionOpened();