Hi fellow wiki editors!

To help newly registered users get more familiar with the wiki (and maybe older users too) there is now a {{Welcome to the wiki}} template. Have a look at it and feel free to add it to new users discussion pages (and perhaps your own).

I have tried to keep the template short, but meaningful. /Johan G

Difference between revisions of "User:Callahanp/Flightgear and Simgear Code/Subsystems"

From FlightGear wiki
Jump to: navigation, search
(Subsystems - Managed by the Subsystem Manager)
m
 
(9 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
{{WIP}}
 +
 +
Major changes to this area are coming.
 +
 +
[[User:Callahanp/Flightgear and Simgear Code/Subsystems |Subsystems]] is intended as a supplement to [http://wiki.flightgear.org/User:Callahanp/Flightgear_and_Simgear_Code/From_Command_Line_to_Holding_Short From Command Line to Holding_Short], providing additional details on the subsystem manager, the subsystem factory and the individual subsystems.  It's focus is on the high level description of the subsystems, their main data and control flows and relationships with other parts of flightgear.
 +
 +
 +
== Factory Managed Subsystems ==
 +
* Managed and accessed through simgear's SGSubsystemMgr
 +
== Component Managed Subsystems ==
 +
* Subsystems managed by an independent Component Manager
 +
== Unmanaged Subsystems ==
 +
* Subsystems without a manager at all
 +
 +
== The Factory ==
 +
== The Manager ==
 +
== Subsystem Index ==
 +
=== Subsystem 1 ===
 +
etc
 +
----
 +
Notes from 2018.
 +
 +
As of Flightgear 2018.2.1, the material below is obsoleted by recent changes in the way subsystems and groups of subsystems are managed.
  
 +
What it's intended to cover is partially covered in
 +
 
The Flightgear and Simgear codebase can be broken down into subsystems.  Some of these are Managed and accessed through simgear's SGSubsystemMgr. Others have their own componentManager independent of SGSubsystemMgr.  Still others have no Manager function per se.
 
The Flightgear and Simgear codebase can be broken down into subsystems.  Some of these are Managed and accessed through simgear's SGSubsystemMgr. Others have their own componentManager independent of SGSubsystemMgr.  Still others have no Manager function per se.
  
The lists below give starting points for exploration of the various subsystems in Flightgear/Simgear.  As a person new to the Flightgear projects codebase, I think its important to understand the code in the following areas in some detail:
+
The lists below give starting points for exploration of the various subsystems in Flightgear/Simgear.  As a person new to the Flightgear projects codebase, I think its important to understand the code in the following areas in some detail.  It is also important to know that as of March 2018 subsystems and their management was under active discussion on the mailing list.  The result of these discussions is a change in the way subsystems are created, initialized, bound and deleted. Work in this area is significant and will have an impact on both testing and the HLA/RTI or other parallelization efforts.
  
 +
* [https://sourceforge.net/p/flightgear/mailman/message/36261734/  Edward d'Auvergne's e-mail on testing]
 +
** Factory Methods
 +
** globals, constructors, init, bind, Incremental Init, update, sub-system dependencies
 +
** syncronizing a global property tree with local property trees
 +
* FGPrecipitationMgr
 +
* FGTrafficMgr
 
* How Sub-Systems are managed  
 
* How Sub-Systems are managed  
 
* Subsystems that are not managed
 
* Subsystems that are not managed
 
* How the main event loop works
 
* How the main event loop works
 
* How properties are set and how their values are accessed.  This includes understanding the concept of "tied" properties.
 
* How properties are set and how their values are accessed.  This includes understanding the concept of "tied" properties.
* How I/O works, especially I/O used for communications
+
* How I/O works, especially I/O used for communications over HTTP or Telnet.
  
====Simgear Subsystem Groups====
+
'''Simgear Subsystem Groups'''
 
The information below is intended to serve as a starting point for exploring code releated to these subsystems.
 
The information below is intended to serve as a starting point for exploring code releated to these subsystems.
 
{{WIP}}
 
{{WIP}}
=====Subsystems - Managed by the Subsystem Manager=====
+
'''Subsystems - Managed by the Subsystem Manager'''
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 49: Line 80:
 
| gui  || /src/GUI|| <NewGUI> || See [[PUI]]
 
| gui  || /src/GUI|| <NewGUI> || See [[PUI]]
 
|-
 
|-
| history || ||
+
| history || || || tracks position and appends it to a buffer (used by the map dialog)
 
|-
 
|-
 
| input  || /src/input || ||
 
| input  || /src/input || ||
Line 69: Line 100:
 
| sound  || /src/Sound/soundmanager.cxx || <SGSoundManager> <FGSoundManager> ||
 
| sound  || /src/Sound/soundmanager.cxx || <SGSoundManager> <FGSoundManager> ||
 
|-
 
|-
| terrasync  || scripts/python/TerraSync/terrasync/main.py || || not an actual fgfs subsystem but a Python script
+
| terrasync  || [[$SG_SRC]] {{simgear file|simgear/scene/tsync/terrasync.cxx}} || <SGTerraSync> || (terrasync in sim <ref>https://sourceforge.net/p/flightgear/flightgear/ci/next/tree/src/Main/fg_init.cxx#l1200</ref>
 
|-
 
|-
 
| time  || /src/Time/TimeManager.cxx || <TimeManager> ||
 
| time  || /src/Time/TimeManager.cxx || <TimeManager> ||
Line 76: Line 107:
 
|}
 
|}
  
=====Subsystems - Independently Managed=====
+
'''Subsystems - Independently Managed'''
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 102: Line 133:
  
 
|}
 
|}
=====Subsystems - Unmanaged=====
+
 
 +
'''Subsystems - Unmanaged'''
 +
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-

Latest revision as of 23:27, 21 October 2019

WIP.png Work in progress
This article or section will be worked on in the upcoming hours or days.
See history for the latest developments.

Major changes to this area are coming.

Subsystems is intended as a supplement to From Command Line to Holding_Short, providing additional details on the subsystem manager, the subsystem factory and the individual subsystems. It's focus is on the high level description of the subsystems, their main data and control flows and relationships with other parts of flightgear.


Factory Managed Subsystems

  • Managed and accessed through simgear's SGSubsystemMgr

Component Managed Subsystems

  • Subsystems managed by an independent Component Manager

Unmanaged Subsystems

  • Subsystems without a manager at all

The Factory

The Manager

Subsystem Index

Subsystem 1

etc


Notes from 2018.

As of Flightgear 2018.2.1, the material below is obsoleted by recent changes in the way subsystems and groups of subsystems are managed.

What it's intended to cover is partially covered in

The Flightgear and Simgear codebase can be broken down into subsystems. Some of these are Managed and accessed through simgear's SGSubsystemMgr. Others have their own componentManager independent of SGSubsystemMgr. Still others have no Manager function per se.

The lists below give starting points for exploration of the various subsystems in Flightgear/Simgear. As a person new to the Flightgear projects codebase, I think its important to understand the code in the following areas in some detail. It is also important to know that as of March 2018 subsystems and their management was under active discussion on the mailing list. The result of these discussions is a change in the way subsystems are created, initialized, bound and deleted. Work in this area is significant and will have an impact on both testing and the HLA/RTI or other parallelization efforts.

  • Edward d'Auvergne's e-mail on testing
    • Factory Methods
    • globals, constructors, init, bind, Incremental Init, update, sub-system dependencies
    • syncronizing a global property tree with local property trees
  • FGPrecipitationMgr
  • FGTrafficMgr
  • How Sub-Systems are managed
  • Subsystems that are not managed
  • How the main event loop works
  • How properties are set and how their values are accessed. This includes understanding the concept of "tied" properties.
  • How I/O works, especially I/O used for communications over HTTP or Telnet.

Simgear Subsystem Groups The information below is intended to serve as a starting point for exploring code releated to these subsystems.

WIP.png Work in progress
This article or section will be worked on in the upcoming hours or days.
See history for the latest developments.

Subsystems - Managed by the Subsystem Manager

Subsystem Name Folder Class Description / Comments
ai-model flightgear/src/AIModel/AIManager.cxx <FGAIManager>
aircraft-performance-db flightgear/src/AIModel/performancedb.cxx
src/AIModel/performancedata.cxx
<PerformanceDB>
airport-dynamics src/Airports/airportDynamicsManager.cxx <AirportDynamicsManager>
ATC src/ATC see flightgear/src/ATC/atc_mgr.hxx
CanvasMgr, Canvas & CanvasGUI flightgear/src/Canvas/canvas_mgr.cxx
controls src/Aircraft/controls.cxx <FGControls>
dns src/Network/DNSClient.cxx <FGDNSClient>
environment src/Environment/environment_mgr.cxx
ephemeris src/Environment/ephemeris.cxx
simgear/ephemeris/ephemeris.cxx
<Ephemeris>
http src/Network/HTTPClient.cxx <FGHTTPClient>
input-mouse /src/Input <FGMouserInput>
scenery /src/Scenery <scenery> <FGScenery>
view-manager /src/Viewer <FGViewMgr>
flight
gui /src/GUI <NewGUI> See PUI
history tracks position and appends it to a buffer (used by the map dialog)
input /src/input
kln89 /src/Instrumentation/kln89 legacy GPS implementation, OD_Gauge based
lighting
logger src/Main/logger.cxx
model-manager /src/Model/modelmgr.cxx
nasal flightgear/src/Scripting <FGNasalSys> scripting subsystem
realwx /src/Environment
route-manager /src/Navaids Route manager
sound /src/Sound/soundmanager.cxx <SGSoundManager> <FGSoundManager>
terrasync $SG_SRC simgear/simgear/scene/tsync/terrasync.cxx <SGTerraSync> (terrasync in sim [1]
time /src/Time/TimeManager.cxx <TimeManager>
traffic-manager /src/Traffic/TrafficMgr.cxx

Subsystems - Independently Managed

Subsystem Name Module Class Name Description
Add-Ons src/Add-ons/
Cockpit src/Cockpit/CockpitDisplayManager.cxx
Events src/Instrumentation/instrument_manager.cxx
Embedded Resources simgear/embedded_resources/EmbeddedResourceManager.cxx
Instrument src/Instrumentation/instrument_manager.cxx
Magnetic Variance src/Environment/magvarmanager.cxx
Multiplay src/Multiplayer/multiplaymgr.cxx
Systems src/Systems/system_mgr.cxx
Subsystems simgear/Systems/SGSubsystemMgr.cxx
simgear/structure/subsystem_mgr.cxx

Subsystems - Unmanaged

Subsystem Name Folder or Module Classes Description
Aircraft src/Aircraft
Autopilot src/Autopilot (FDM-interleaved)
Flight Dynamics Models src/FDM
Navigational Aids /src/Navaids see also Navcache
Network /src/Network
Simgear/serial
simgear/io
scripts/python/FlightGear.py
scripts/python/Terrasync folder
Properties /src/Main/fg_props.cxx
simgear/props/
SGPropertyNode
ChangeListener Classes
SGCondition and sub-classes
Easing Functions
ExtendedPropertyAdapter
PropertyBasedMgr
PropertyInterpolationMgr
See also flightgear/docs-mini/Nasal.html
Radio /src/Radio
Systems /src/Systems
Viewer /src/Viewer
  1. https://sourceforge.net/p/flightgear/flightgear/ci/next/tree/src/Main/fg_init.cxx#l1200