swift
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 
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 
33 namespace 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
bool writeConfig(bool tcas, bool debug)
Update and write config file.
Definition: config.cpp:80
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
Main plugin class.
Definition: plugin.h:42
CPlugin()
Constructor.
Definition: plugin.cpp:22
void onSceneryLoaded()
Called by XPluginReceiveMessage when some scenery is loaded.
Definition: plugin.cpp:156
void onAircraftRepositioned()
Called by XPluginReceiveMessage when the aircraft is positioned at an airport.
Definition: plugin.cpp:151
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:142
virtual const CConfig & getConfig() const
Get settings from xswiftbus.conf (needed during plugin initialization)
Definition: plugin.h:66
bool isRunning() const
Is running.
Definition: plugin.h:60
~CPlugin()
Destructor.
Definition: plugin.cpp:62
Something owning the settings.
Definition: settings.h:31
DataRefType get() const
Get the value of the dataref.
Definition: datarefs.h:117
Plugin loaded by X-Plane which publishes a DBus service.
Definition: command.h:14