pycasx.connectors.protocols

Protocols for connectors.

Module Contents

Classes

PropsDict

A dictionary of properties returned.

PropsConnection

Protocol for a connection to the FlightGear Property Tree.

class pycasx.connectors.protocols.PropsDict

Bases: TypedDict

A dictionary of properties returned.

This dictionary is returned by the list_props method of the PropsConnection protocol.

directories

the directories in the property tree.

Type:

list[str]

properties

the properties in the property tree.

Type:

dict[str, Any]

directories: list[str]
properties: dict[str, Any]
class pycasx.connectors.protocols.PropsConnection

Bases: Protocol

Protocol for a connection to the FlightGear Property Tree.

get_prop(prop_str)

Get a property from FlightGear.

For all general available properties, this works the same as PropsConnection.get_prop(). But as we assume we do not have ADS-B data from the intruder aka the AI, we will use object detection to get the properties under /ai/models/aircraft/.

Parameters:

prop_str (str) – location of the property, should always be relative to the root (/)

Returns:

the value of the property. If FG tells us what the type

is we will pre-convert it (i.e. make an int from a string)

Return type:

Any

set_prop(prop_str, value)

Set a property in FlightGear.

Parameters:
  • prop_str (str) – location of the property, should always be relative to the root (/)

  • value (Any) – value to set the property to. Must be convertible to str

Return type:

None

list_props(path='/', recurse_limit=0)

List properties in the FlightGear property tree.

Parameters:
  • path (str) – directory to list from, should always be relative to the root (/)

  • recurse_limit (int | None) – how many times to recurse into subdirectories. 1 (default) is no recursion, 2 is 1 level deep, etc. Passing in None disables the recursion limit. Be warned that enabling any kind of recursion will take a long time!

Returns:

dictionary with keys:

Return type:

PropsDict

Example for list_props('/position', recurse_limit=0):

{
    'directories': [
        '/position/model'
    ],
    'properties': {
        '/position/altitude-agl-ft': 3.148566963,
        '/position/altitude-agl-m': 0.9596832103,
        '/position/altitude-ft': 3491.986254,
        '/position/ground-elev-ft': 3488.469757,
        '/position/ground-elev-m': 1063.285582,
        '/position/latitude-deg': 0.104476136,
        '/position/latitude-string': '0*06\\'16.1"N',
        '/position/longitude-deg': 100.023135,
        '/position/longitude-string': '100*01\\'23.3"E',
        '/position/sea-level-radius-ft': 20925646.09
    }
}