summaryrefslogtreecommitdiffhomepage
path: root/proto-simconnect
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2017-04-07 21:36:10 +0200
committerStanislaw Halik <sthalik@misaki.pl>2017-04-07 21:36:10 +0200
commit0bc78d53028f5ac68b9ab454347b8ad453988c08 (patch)
tree913abe48caeaf01e08707dfa4d0ef6aac3903b24 /proto-simconnect
parentbf5954132b776b19b20586b0a4b2b622ab0642ea (diff)
rename several protocols from abbreviated names
Diffstat (limited to 'proto-simconnect')
-rw-r--r--proto-simconnect/CMakeLists.txt3
-rw-r--r--proto-simconnect/ftnoir-protocol-sc.rc4
-rw-r--r--proto-simconnect/ftnoir_protocol_sc.cpp193
-rw-r--r--proto-simconnect/ftnoir_protocol_sc.h108
-rw-r--r--proto-simconnect/ftnoir_protocol_sc_dialog.cpp35
-rw-r--r--proto-simconnect/ftnoir_sccontrols.ui109
-rw-r--r--proto-simconnect/images/fsx.pngbin0 -> 813 bytes
-rw-r--r--proto-simconnect/images/fsx1.pngbin0 -> 1920 bytes
-rw-r--r--proto-simconnect/lang/nl_NL.ts45
-rw-r--r--proto-simconnect/lang/ru_RU.ts45
-rw-r--r--proto-simconnect/lang/stub.ts45
-rw-r--r--proto-simconnect/sc-protocol.qrc5
-rw-r--r--proto-simconnect/scserver.manifest13
-rw-r--r--proto-simconnect/scserver_acceleration.manifest13
-rw-r--r--proto-simconnect/scserver_sp2.manifest13
15 files changed, 631 insertions, 0 deletions
diff --git a/proto-simconnect/CMakeLists.txt b/proto-simconnect/CMakeLists.txt
new file mode 100644
index 00000000..26047b6f
--- /dev/null
+++ b/proto-simconnect/CMakeLists.txt
@@ -0,0 +1,3 @@
+if(WIN32)
+ otr_module(proto-simconnect)
+endif()
diff --git a/proto-simconnect/ftnoir-protocol-sc.rc b/proto-simconnect/ftnoir-protocol-sc.rc
new file mode 100644
index 00000000..c89eb9a7
--- /dev/null
+++ b/proto-simconnect/ftnoir-protocol-sc.rc
@@ -0,0 +1,4 @@
+#include <winuser.h>
+142 RT_MANIFEST scserver.manifest
+143 RT_MANIFEST scserver_sp2.manifest
+144 RT_MANIFEST scserver_acceleration.manifest \ No newline at end of file
diff --git a/proto-simconnect/ftnoir_protocol_sc.cpp b/proto-simconnect/ftnoir_protocol_sc.cpp
new file mode 100644
index 00000000..c8df0443
--- /dev/null
+++ b/proto-simconnect/ftnoir_protocol_sc.cpp
@@ -0,0 +1,193 @@
+/* Homepage http://facetracknoir.sourceforge.net/home/default.htm *
+ * *
+ * ISC License (ISC) *
+ * *
+ * Copyright (c) 2015, Wim Vriend
+ * Copyright (c) 2014, Stanislaw Halik <sthalik@misaki.pl>
+ * *
+ * Permission to use, copy, modify, and/or distribute this software for any *
+ * purpose with or without fee is hereby granted, provided that the above *
+ * copyright notice and this permission notice appear in all copies. *
+ */
+#include "ftnoir_protocol_sc.h"
+#include "api/plugin-api.hpp"
+#include "opentrack-library-path.h"
+
+simconnect::simconnect() : should_stop(false), hSimConnect(nullptr)
+{
+}
+
+simconnect::~simconnect()
+{
+ should_stop = true;
+ wait();
+}
+
+void simconnect::run()
+{
+ HANDLE event = CreateEvent(NULL, FALSE, FALSE, nullptr);
+
+ if (event == nullptr)
+ {
+ qDebug() << "simconnect: event create" << GetLastError();
+ return;
+ }
+
+ while (!should_stop)
+ {
+ if (SUCCEEDED(simconnect_open(&hSimConnect, "opentrack", NULL, 0, event, 0)))
+ {
+ simconnect_subscribetosystemevent(hSimConnect, 0, "Frame");
+
+ while (!should_stop)
+ {
+ if (WaitForSingleObject(event, 10) == WAIT_OBJECT_0)
+ {
+ if (FAILED(simconnect_calldispatch(hSimConnect, processNextSimconnectEvent, reinterpret_cast<void*>(this))))
+ break;
+ }
+ }
+
+ (void) simconnect_close(hSimConnect);
+ }
+
+ if (!should_stop)
+ Sleep(100);
+ }
+
+ CloseHandle(event);
+}
+
+void simconnect::pose( const double *headpose ) {
+ // euler degrees
+ virtSCRotX = float(-headpose[Pitch]);
+ virtSCRotY = float(headpose[Yaw]);
+ virtSCRotZ = float(headpose[Roll]);
+
+ // cm to meters
+ virtSCPosX = float(-headpose[TX]/100);
+ virtSCPosY = float(headpose[TY]/100);
+ virtSCPosZ = float(-headpose[TZ]/100);
+}
+
+#ifdef __GNUC__
+# pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
+
+class ActivationContext {
+public:
+ ActivationContext(const int resid) : ok(false) {
+ hactctx = INVALID_HANDLE_VALUE;
+ actctx_cookie = 0;
+ ACTCTXA actx = {0};
+ actx.cbSize = sizeof(ACTCTXA);
+ actx.lpResourceName = MAKEINTRESOURCEA(resid);
+ actx.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID;
+#ifdef _MSC_VER
+# define PREFIX ""
+#else
+# define PREFIX "lib"
+#endif
+ static const QString prefix = OPENTRACK_BASE_PATH + OPENTRACK_LIBRARY_PATH;
+ QString path = prefix + PREFIX "opentrack-proto-simconnect.dll";
+ QByteArray name = QFile::encodeName(path);
+ actx.lpSource = name.constData();
+ hactctx = CreateActCtxA(&actx);
+ actctx_cookie = 0;
+ if (hactctx != INVALID_HANDLE_VALUE) {
+ if (!ActivateActCtx(hactctx, &actctx_cookie)) {
+ qDebug() << "SC: can't set win32 activation context" << GetLastError();
+ ReleaseActCtx(hactctx);
+ hactctx = INVALID_HANDLE_VALUE;
+ }
+ else
+ ok = true;
+ } else {
+ qDebug() << "SC: can't create win32 activation context" << GetLastError();
+ }
+ }
+ ~ActivationContext() {
+ if (hactctx != INVALID_HANDLE_VALUE)
+ {
+ DeactivateActCtx(0, actctx_cookie);
+ ReleaseActCtx(hactctx);
+ }
+ }
+ bool is_ok() { return ok; }
+private:
+ ULONG_PTR actctx_cookie;
+ HANDLE hactctx;
+ bool ok;
+};
+
+bool simconnect::correct()
+{
+ if (!SCClientLib.isLoaded())
+ {
+ ActivationContext ctx(142 + static_cast<int>(s.sxs_manifest));
+
+ if (ctx.is_ok())
+ {
+ SCClientLib.setFileName("SimConnect.dll");
+ if (!SCClientLib.load()) {
+ qDebug() << "SC load" << SCClientLib.errorString();
+ return false;
+ }
+ }
+ else
+ return false;
+ }
+
+ simconnect_open = (importSimConnect_Open) SCClientLib.resolve("SimConnect_Open");
+ if (simconnect_open == NULL) {
+ qDebug() << "simconnect::correct() says: SimConnect_Open function not found in DLL!";
+ return false;
+ }
+ simconnect_set6DOF = (importSimConnect_CameraSetRelative6DOF) SCClientLib.resolve("SimConnect_CameraSetRelative6DOF");
+ if (simconnect_set6DOF == NULL) {
+ qDebug() << "simconnect::correct() says: SimConnect_CameraSetRelative6DOF function not found in DLL!";
+ return false;
+ }
+ simconnect_close = (importSimConnect_Close) SCClientLib.resolve("SimConnect_Close");
+ if (simconnect_close == NULL) {
+ qDebug() << "simconnect::correct() says: SimConnect_Close function not found in DLL!";
+ return false;
+ }
+
+ simconnect_calldispatch = (importSimConnect_CallDispatch) SCClientLib.resolve("SimConnect_CallDispatch");
+ if (simconnect_calldispatch == NULL) {
+ qDebug() << "simconnect::correct() says: SimConnect_CallDispatch function not found in DLL!";
+ return false;
+ }
+
+ simconnect_subscribetosystemevent = (importSimConnect_SubscribeToSystemEvent) SCClientLib.resolve("SimConnect_SubscribeToSystemEvent");
+ if (simconnect_subscribetosystemevent == NULL) {
+ qDebug() << "simconnect::correct() says: SimConnect_SubscribeToSystemEvent function not found in DLL!";
+ return false;
+ }
+
+ start();
+
+ return true;
+}
+
+void simconnect::handle()
+{
+ (void) simconnect_set6DOF(hSimConnect, virtSCPosX, virtSCPosY, virtSCPosZ, virtSCRotX, virtSCRotZ, virtSCRotY);
+}
+
+void CALLBACK simconnect::processNextSimconnectEvent(SIMCONNECT_RECV* pData, DWORD, void *self_)
+{
+ simconnect& self = *reinterpret_cast<simconnect*>(self_);
+
+ switch(pData->dwID)
+ {
+ default:
+ break;
+ case SIMCONNECT_RECV_ID_EVENT_FRAME:
+ self.handle();
+ break;
+ }
+}
+
+OPENTRACK_DECLARE_PROTOCOL(simconnect, SCControls, simconnectDll)
diff --git a/proto-simconnect/ftnoir_protocol_sc.h b/proto-simconnect/ftnoir_protocol_sc.h
new file mode 100644
index 00000000..ff664351
--- /dev/null
+++ b/proto-simconnect/ftnoir_protocol_sc.h
@@ -0,0 +1,108 @@
+/* Homepage http://facetracknoir.sourceforge.net/home/default.htm *
+ * *
+ * ISC License (ISC) *
+ * *
+ * Copyright (c) 2015, Wim Vriend *
+ * Copyright (c) 2014, Stanislaw Halik *
+ * *
+ * Permission to use, copy, modify, and/or distribute this software for any *
+ * purpose with or without fee is hereby granted, provided that the above *
+ * copyright notice and this permission notice appear in all copies. *
+ */
+#pragma once
+#include "api/plugin-api.hpp"
+
+#include "ui_ftnoir_sccontrols.h"
+#include <QThread>
+#include <QMessageBox>
+#include <QSettings>
+#include <QLibrary>
+#include <QProcess>
+#include <QDebug>
+#include <QFile>
+#include "options/options.hpp"
+using namespace options;
+#include <windows.h>
+
+struct settings : opts {
+ value<int> sxs_manifest;
+ settings() :
+ opts("proto-simconnect"),
+ sxs_manifest(b, "sxs-manifest-version", 0)
+ {}
+};
+
+class simconnect : public IProtocol, private QThread
+{
+public:
+ simconnect();
+ ~simconnect() override;
+ bool correct();
+ void pose(const double* headpose);
+ void handle();
+ QString game_name() {
+ return "FS2004/FSX";
+ }
+private:
+ enum { SIMCONNECT_RECV_ID_EVENT_FRAME = 7 };
+
+ #pragma pack(push, 1)
+ struct SIMCONNECT_RECV
+ {
+ DWORD dwSize;
+ DWORD dwVersion;
+ DWORD dwID;
+ };
+ #pragma pack(pop)
+
+ typedef void (CALLBACK *DispatchProc)(SIMCONNECT_RECV*, DWORD, void*);
+
+ typedef HRESULT (WINAPI *importSimConnect_Open)(HANDLE * phSimConnect, LPCSTR szName, HWND hWnd, DWORD UserEventWin32, HANDLE hEventHandle, DWORD ConfigIndex);
+ typedef HRESULT (WINAPI *importSimConnect_Close)(HANDLE hSimConnect);
+ typedef HRESULT (WINAPI *importSimConnect_CameraSetRelative6DOF)(HANDLE hSimConnect, float fDeltaX, float fDeltaY, float fDeltaZ, float fPitchDeg, float fBankDeg, float fHeadingDeg);
+ typedef HRESULT (WINAPI *importSimConnect_CallDispatch)(HANDLE hSimConnect, DispatchProc pfcnDispatch, void * pContext);
+ typedef HRESULT (WINAPI *importSimConnect_SubscribeToSystemEvent)(HANDLE hSimConnect, DWORD EventID, const char * SystemEventName);
+
+ void run() override;
+ volatile bool should_stop;
+
+ volatile float virtSCPosX;
+ volatile float virtSCPosY;
+ volatile float virtSCPosZ;
+ volatile float virtSCRotX;
+ volatile float virtSCRotY;
+ volatile float virtSCRotZ;
+
+ importSimConnect_Open simconnect_open;
+ importSimConnect_Close simconnect_close;
+ importSimConnect_CameraSetRelative6DOF simconnect_set6DOF;
+ importSimConnect_CallDispatch simconnect_calldispatch;
+ importSimConnect_SubscribeToSystemEvent simconnect_subscribetosystemevent;
+
+ HANDLE hSimConnect;
+ static void CALLBACK processNextSimconnectEvent(SIMCONNECT_RECV* pData, DWORD cbData, void *pContext);
+ settings s;
+ QLibrary SCClientLib;
+};
+
+class SCControls: public IProtocolDialog
+{
+ Q_OBJECT
+public:
+ SCControls();
+ void register_protocol(IProtocol *) {}
+ void unregister_protocol() {}
+private:
+ Ui::UICSCControls ui;
+ settings s;
+private slots:
+ void doOK();
+ void doCancel();
+};
+
+class simconnectDll : public Metadata
+{
+public:
+ QString name() { return QString(QCoreApplication::translate("simconnectDll", "Microsoft FSX SimConnect")); }
+ QIcon icon() { return QIcon(":/images/fsx.png"); }
+};
diff --git a/proto-simconnect/ftnoir_protocol_sc_dialog.cpp b/proto-simconnect/ftnoir_protocol_sc_dialog.cpp
new file mode 100644
index 00000000..a14c6b44
--- /dev/null
+++ b/proto-simconnect/ftnoir_protocol_sc_dialog.cpp
@@ -0,0 +1,35 @@
+/* Homepage http://facetracknoir.sourceforge.net/home/default.htm *
+ * *
+ * ISC License (ISC) *
+ * *
+ * Copyright (c) 2015, Wim Vriend *
+ * *
+ * Permission to use, copy, modify, and/or distribute this software for any *
+ * purpose with or without fee is hereby granted, provided that the above *
+ * copyright notice and this permission notice appear in all copies. *
+ */
+#include "ftnoir_protocol_sc.h"
+#include <QDebug>
+#include "api/plugin-api.hpp"
+
+SCControls::SCControls()
+{
+ ui.setupUi( this );
+
+ // Connect Qt signals to member-functions
+ connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK()));
+ connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel()));
+
+ tie_setting(s.sxs_manifest, ui.comboBox);
+}
+
+void SCControls::doOK() {
+ s.b->save();
+ close();
+}
+
+void SCControls::doCancel()
+{
+ close();
+}
+
diff --git a/proto-simconnect/ftnoir_sccontrols.ui b/proto-simconnect/ftnoir_sccontrols.ui
new file mode 100644
index 00000000..887d6d80
--- /dev/null
+++ b/proto-simconnect/ftnoir_sccontrols.ui
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>UICSCControls</class>
+ <widget class="QWidget" name="UICSCControls">
+ <property name="windowModality">
+ <enum>Qt::NonModal</enum>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>346</width>
+ <height>148</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Protocol settings</string>
+ </property>
+ <property name="windowIcon">
+ <iconset>
+ <normaloff>images/FaceTrackNoIR.png</normaloff>images/FaceTrackNoIR.png</iconset>
+ </property>
+ <property name="layoutDirection">
+ <enum>Qt::LeftToRight</enum>
+ </property>
+ <property name="autoFillBackground">
+ <bool>false</bool>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QFrame" name="frame">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>FSX version</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="comboBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <item>
+ <property name="text">
+ <string>SP1</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>SP2</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Acceleration</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>You need to install SimConnect SDK for your FSX version. For the Steam version, choose SP1 in the above combo box.</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+ <slots>
+ <slot>startEngineClicked()</slot>
+ <slot>stopEngineClicked()</slot>
+ <slot>cameraSettingsClicked()</slot>
+ </slots>
+</ui>
diff --git a/proto-simconnect/images/fsx.png b/proto-simconnect/images/fsx.png
new file mode 100644
index 00000000..16b072a1
--- /dev/null
+++ b/proto-simconnect/images/fsx.png
Binary files differ
diff --git a/proto-simconnect/images/fsx1.png b/proto-simconnect/images/fsx1.png
new file mode 100644
index 00000000..a1f0f188
--- /dev/null
+++ b/proto-simconnect/images/fsx1.png
Binary files differ
diff --git a/proto-simconnect/lang/nl_NL.ts b/proto-simconnect/lang/nl_NL.ts
new file mode 100644
index 00000000..f01f6d88
--- /dev/null
+++ b/proto-simconnect/lang/nl_NL.ts
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="nl_NL">
+<context>
+ <name>UICSCControls</name>
+ <message>
+ <location filename="../ftnoir_sccontrols.ui" line="+17"/>
+ <source>Protocol settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>FSX version</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>SP1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>SP2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Acceleration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>You need to install SimConnect SDK for your FSX version. For the Steam version, choose SP1 in the above combo box.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>simconnectDll</name>
+ <message>
+ <location filename="../ftnoir_protocol_sc.h" line="+106"/>
+ <source>Microsoft FSX SimConnect</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/proto-simconnect/lang/ru_RU.ts b/proto-simconnect/lang/ru_RU.ts
new file mode 100644
index 00000000..3d49c8b8
--- /dev/null
+++ b/proto-simconnect/lang/ru_RU.ts
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ru_RU">
+<context>
+ <name>UICSCControls</name>
+ <message>
+ <location filename="../ftnoir_sccontrols.ui" line="+17"/>
+ <source>Protocol settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>FSX version</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>SP1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>SP2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Acceleration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>You need to install SimConnect SDK for your FSX version. For the Steam version, choose SP1 in the above combo box.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>simconnectDll</name>
+ <message>
+ <location filename="../ftnoir_protocol_sc.h" line="+106"/>
+ <source>Microsoft FSX SimConnect</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/proto-simconnect/lang/stub.ts b/proto-simconnect/lang/stub.ts
new file mode 100644
index 00000000..522fc4e8
--- /dev/null
+++ b/proto-simconnect/lang/stub.ts
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>UICSCControls</name>
+ <message>
+ <location filename="../ftnoir_sccontrols.ui" line="+17"/>
+ <source>Protocol settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>FSX version</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>SP1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>SP2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Acceleration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>You need to install SimConnect SDK for your FSX version. For the Steam version, choose SP1 in the above combo box.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>simconnectDll</name>
+ <message>
+ <location filename="../ftnoir_protocol_sc.h" line="+106"/>
+ <source>Microsoft FSX SimConnect</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/proto-simconnect/sc-protocol.qrc b/proto-simconnect/sc-protocol.qrc
new file mode 100644
index 00000000..127d5180
--- /dev/null
+++ b/proto-simconnect/sc-protocol.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/">
+ <file>images/fsx.png</file>
+ </qresource>
+</RCC>
diff --git a/proto-simconnect/scserver.manifest b/proto-simconnect/scserver.manifest
new file mode 100644
index 00000000..d342cfda
--- /dev/null
+++ b/proto-simconnect/scserver.manifest
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
+<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
+ <dependency>
+ <dependentAssembly>
+ <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect' version='10.0.61259.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' />
+ </dependentAssembly>
+ </dependency>
+ <dependency>
+ <dependentAssembly>
+ <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
+ </dependentAssembly>
+ </dependency>
+</assembly>
diff --git a/proto-simconnect/scserver_acceleration.manifest b/proto-simconnect/scserver_acceleration.manifest
new file mode 100644
index 00000000..06459587
--- /dev/null
+++ b/proto-simconnect/scserver_acceleration.manifest
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
+<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
+ <dependency>
+ <dependentAssembly>
+ <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect ' version='10.0.61242.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' />
+ </dependentAssembly>
+ </dependency>
+ <dependency>
+ <dependentAssembly>
+ <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
+ </dependentAssembly>
+ </dependency>
+</assembly>
diff --git a/proto-simconnect/scserver_sp2.manifest b/proto-simconnect/scserver_sp2.manifest
new file mode 100644
index 00000000..3020d16c
--- /dev/null
+++ b/proto-simconnect/scserver_sp2.manifest
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
+<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
+ <dependency>
+ <dependentAssembly>
+ <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect ' version='10.0.60905.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' />
+ </dependentAssembly>
+ </dependency>
+ <dependency>
+ <dependentAssembly>
+ <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
+ </dependentAssembly>
+ </dependency>
+</assembly>