swift
Loading...
Searching...
No Matches
plugin.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
2// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3
4#ifndef SWIFT_SIM_XSWIFTBUS_PLUGIN_H
5#define SWIFT_SIM_XSWIFTBUS_PLUGIN_H
6
8
13
14#ifndef NOMINMAX
15# define NOMINMAX
16#endif
17
18// clang-format off
19#include <memory>
20#include <thread>
21
22#include "dbusconnection.h"
23#include "dbusdispatcher.h"
24#include "dbusserver.h"
25#include "datarefs.h"
26#include "menus.h"
27#include "config.h"
28#include "settings.h"
29
30#include "XPLM/XPLMCamera.h"
31// clang-format on
32
33namespace XSwiftBus
34{
35 class CService;
36 class CTraffic;
37
41 class CPlugin final : public CSettingsProvider
42 {
43 public:
45 CPlugin();
46
48 ~CPlugin();
49
52
55
57 void onSceneryLoaded();
58
60 bool isRunning() const { return m_isRunning; }
61
63 bool shouldStop() const { return m_shouldStop; }
64
66 virtual const CConfig &getConfig() const override { return m_pluginConfig; }
67
69 virtual bool writeConfig(bool tcas, bool debug) override { return m_pluginConfig.writeConfig(tcas, debug); }
70
71 private:
72 CConfig m_pluginConfig;
73 CDBusDispatcher m_dbusDispatcher;
74 std::unique_ptr<CDBusServer> m_dbusP2PServer;
75 std::shared_ptr<CDBusConnection> m_dbusConnection;
76 std::unique_ptr<CService> m_service;
77 std::unique_ptr<CTraffic> m_traffic;
78 CMenu m_menu;
79 CMenuItem m_showHideLabelsMenuItem;
80 CMenuItem m_enableDisableXPlaneAtisMenuItem;
81 CMenu m_messageWindowSubMenu;
82 CMenuItem m_toggleMessageWindowMenuItem;
83 CMenuItem m_popupMessageWindowMenuItem;
84 CMenuItem m_disappearMessageWindowMenuItem;
85 CMenu m_planeViewSubMenu;
86 CMenuItem m_planeViewOwnAircraftMenuItem;
87
89 decltype(m_atisEnabled.get()) m_atisSaved = 0;
90
91 std::thread m_dbusThread;
92 bool m_isRunning = false;
93 bool m_shouldStop = false;
94
95 void readConfig();
96 void startServer();
97
98 static float startServerDeferred(float, float, int, void *refcon);
99 static float flightLoopCallback(float, float, int, void *refcon);
100 };
101} // namespace XSwiftBus
102
103#endif // SWIFT_SIM_XSWIFTBUS_PLUGIN_H
xswiftbus configuration class
Definition config.h:15
Class-based interface to X-Plane SDK menus.
Definition menus.h:63
Class-based interface to X-Plane SDK menu items.
Definition menus.h:25
CPlugin()
Constructor.
Definition plugin.cpp:22
void onSceneryLoaded()
Called by XPluginReceiveMessage when some scenery is loaded.
Definition plugin.cpp:162
void onAircraftRepositioned()
Called by XPluginReceiveMessage when the aircraft is positioned at an airport.
Definition plugin.cpp:154
virtual bool writeConfig(bool tcas, bool debug)
Write a config file with these new values.
Definition plugin.h:69
bool shouldStop() const
Should stop.
Definition plugin.h:63
void onAircraftModelChanged()
Called by XPluginReceiveMessage when the model is changed.
Definition plugin.cpp:145
bool isRunning() const
Is running.
Definition plugin.h:60
virtual const CConfig & getConfig() const
Get settings from xswiftbus.conf (needed during plugin initialization).
Definition plugin.h:66
~CPlugin()
Destructor.
Definition plugin.cpp:62
xswiftbus service object which is accessible through DBus
Definition service.h:36
Something owning the settings.
Definition settings.h:31
xswiftbus service object for traffic aircraft which is accessible through DBus
Definition traffic.h:35
Class providing access to a single X-Plane dataref.
Definition datarefs.h:92
DataRefType get() const
Get the value of the dataref.
Definition datarefs.h:119
Plugin loaded by X-Plane which publishes a DBus service.
Definition command.h:14