swift
contextownaircraft.cpp
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 
5 
6 #include "core/application.h"
10 #include "core/webdataservices.h"
12 #include "misc/dbusserver.h"
13 
14 using namespace swift::misc;
15 using namespace swift::misc::aviation;
16 using namespace swift::misc::physical_quantities;
17 using namespace swift::misc::geo;
18 using namespace swift::misc::simulation;
19 
20 namespace swift::core::context
21 {
22  IContextOwnAircraft *IContextOwnAircraft::create(CCoreFacade *parent, CCoreFacadeConfig::ContextMode mode,
23  CDBusServer *server, QDBusConnection &connection)
24  {
25  switch (mode)
26  {
27  case CCoreFacadeConfig::Local: return new CContextOwnAircraft(mode, parent);
28  case CCoreFacadeConfig::LocalInDBusServer:
29  {
30  auto *context = new CContextOwnAircraft(mode, parent);
31  context->registerWithDBus(ObjectPath(), server);
32  return context;
33  }
34  case CCoreFacadeConfig::Remote:
35  return new CContextOwnAircraftProxy(CDBusServer::coreServiceName(connection), connection, mode, parent);
36  case CCoreFacadeConfig::NotUsed:
37  default: return new CContextOwnAircraftEmpty(parent);
38  }
39  }
40 
41  const CAircraftSituation &IContextOwnAircraft::getDefaultSituation()
42  {
43  static const CAircraftSituation situation(
44  CCoordinateGeodetic(CLatitude::fromWgs84("N 049° 18' 17"), CLongitude::fromWgs84("E 008° 27' 05"),
45  CAltitude(312, CAltitude::MeanSeaLevel, CLengthUnit::ft())));
46  return situation;
47  }
48 
49  CAircraftModel IContextOwnAircraft::getDefaultOwnAircraftModel()
50  {
51  // if all fails
52  static const CAircraftModel defaultModel(
53  "", CAircraftModel::TypeOwnSimulatorModel, "default model",
54  CAircraftIcaoCode("C172", "L1P", "Cessna", "172", CWakeTurbulenceCategory::LIGHT, true, false, false, 0));
55 
56  // create one from DB data
57  if (sApp && sApp->hasWebDataServices())
58  {
60  static const CLivery livery = sApp->getWebDataServices()->getLiveryForCombinedCode("_CC_WHITE_WHITE");
61  static const CAircraftModel model("", CAircraftModel::TypeOwnSimulatorModel, icao, livery);
62  return model;
63  }
64  return defaultModel;
65  }
66 } // namespace swift::core::context
SWIFT_CORE_EXPORT swift::core::CApplication * sApp
Single instance of application object.
Definition: application.cpp:71
bool hasWebDataServices() const
Web data services available?
CWebDataServices * getWebDataServices() const
Get the web data services.
ContextMode
How to handle a given context.
The class providing facades (the contexts) for all DBus relevant operations.
Definition: corefacade.h:57
swift::misc::aviation::CAircraftIcaoCode getAircraftIcaoCodeForDesignator(const QString &designator) const
ICAO code for designator.
swift::misc::aviation::CLivery getLiveryForCombinedCode(const QString &combinedCode) const
Livery for its combined code.
Empty context, used during shutdown/initialization.
Own aircraft context implementation. Central instance of data for.
Custom DBusServer.
Definition: dbusserver.h:34
static const QString & coreServiceName()
Default service name.
Definition: dbusserver.cpp:98
Value object for ICAO classification.
Value object encapsulating information of an aircraft's situation.
Altitude as used in aviation, can be AGL or MSL altitude.
Definition: altitude.h:52
Value object encapsulating information about an airpot.
Definition: livery.h:29
Aircraft model (used by another pilot, my models on disk)
Definition: aircraftmodel.h:71
Free functions in swift::misc.