fprime-gds 3.6.2a1__tar.gz → 4.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/.github/actions/spelling/expect.txt +56 -1
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/.github/actions/spelling/patterns.txt +3 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/.github/workflows/codeql-security-scan.yml +4 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/.github/workflows/fprime-gds-tests.yml +5 -1
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/.github/workflows/gds-cli-tests.yml +5 -1
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/.github/workflows/spelling.yml +4 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/PKG-INFO +23 -21
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/README.md +14 -17
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/pyproject.toml +9 -3
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/communication/adapters/ip.py +14 -9
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/communication/adapters/uart.py +34 -25
- fprime_gds-4.0.0/src/fprime_gds/common/communication/ccsds/apid.py +19 -0
- fprime_gds-4.0.0/src/fprime_gds/common/communication/ccsds/chain.py +106 -0
- fprime_gds-4.0.0/src/fprime_gds/common/communication/ccsds/space_data_link.py +196 -0
- fprime_gds-4.0.0/src/fprime_gds/common/communication/ccsds/space_packet.py +129 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/communication/framing.py +27 -32
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/decoders/ch_decoder.py +1 -1
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/decoders/event_decoder.py +9 -2
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/decoders/pkt_decoder.py +1 -1
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/distributor/distributor.py +6 -3
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/encoders/ch_encoder.py +2 -2
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/encoders/cmd_encoder.py +2 -2
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/encoders/event_encoder.py +2 -2
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/encoders/pkt_encoder.py +2 -2
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/encoders/seq_writer.py +2 -2
- fprime_gds-4.0.0/src/fprime_gds/common/fpy/README.md +56 -0
- fprime_gds-4.0.0/src/fprime_gds/common/fpy/SPEC.md +69 -0
- fprime_gds-4.0.0/src/fprime_gds/common/fpy/bytecode/directives.py +490 -0
- fprime_gds-4.0.0/src/fprime_gds/common/fpy/codegen.py +1687 -0
- fprime_gds-4.0.0/src/fprime_gds/common/fpy/grammar.lark +88 -0
- fprime_gds-4.0.0/src/fprime_gds/common/fpy/main.py +40 -0
- fprime_gds-4.0.0/src/fprime_gds/common/fpy/parser.py +239 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/gds_cli/base_commands.py +1 -1
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/handlers.py +39 -0
- fprime_gds-4.0.0/src/fprime_gds/common/loaders/fw_type_json_loader.py +54 -0
- fprime_gds-4.0.0/src/fprime_gds/common/loaders/pkt_json_loader.py +125 -0
- fprime_gds-4.0.0/src/fprime_gds/common/loaders/prm_json_loader.py +85 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/logger/__init__.py +2 -2
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/pipeline/dictionaries.py +28 -2
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/pipeline/encoding.py +19 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/pipeline/histories.py +4 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/pipeline/standard.py +16 -2
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/templates/cmd_template.py +8 -0
- fprime_gds-4.0.0/src/fprime_gds/common/templates/prm_template.py +81 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/testing_fw/api.py +148 -1
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/testing_fw/pytest_integration.py +37 -3
- fprime_gds-4.0.0/src/fprime_gds/common/tools/README.md +34 -0
- fprime_gds-4.0.0/src/fprime_gds/common/tools/params.py +246 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/utils/config_manager.py +6 -6
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/utils/data_desc_type.py +6 -1
- fprime_gds-4.0.0/src/fprime_gds/executables/__init__.py +0 -0
- fprime_gds-4.0.0/src/fprime_gds/executables/apps.py +328 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/executables/cli.py +468 -127
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/executables/comm.py +5 -2
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/executables/data_product_writer.py +164 -165
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/executables/fprime_cli.py +3 -3
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/executables/run_deployment.py +13 -5
- fprime_gds-4.0.0/src/fprime_gds/flask/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/vue-support/channel.js +1 -1
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/vue-support/event.js +1 -1
- fprime_gds-4.0.0/src/fprime_gds/plugin/__init__.py +0 -0
- fprime_gds-4.0.0/src/fprime_gds/plugin/definitions.py +149 -0
- fprime_gds-4.0.0/src/fprime_gds/plugin/system.py +339 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds.egg-info/PKG-INFO +23 -21
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds.egg-info/SOURCES.txt +27 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds.egg-info/entry_points.txt +2 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds.egg-info/requires.txt +4 -0
- fprime_gds-4.0.0/test/fprime_gds/common/communication/ccsds/test_space_data_link.py +90 -0
- fprime_gds-4.0.0/test/fprime_gds/common/communication/ccsds/test_space_packet.py +109 -0
- fprime_gds-4.0.0/test/fprime_gds/common/fpy/disabled_test_compiler.py +765 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/loaders/resources/RefTopologyDictionary.json +1008 -338
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/loaders/test_json_loader.py +46 -0
- fprime_gds-4.0.0/test/fprime_gds/common/tools/expected/simple_paramdb.dat +0 -0
- fprime_gds-4.0.0/test/fprime_gds/common/tools/input/simple_bad_paramdb.json +5 -0
- fprime_gds-4.0.0/test/fprime_gds/common/tools/input/simple_paramdb.json +5 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/tools/resources/simple_dictionary.json +12 -0
- fprime_gds-4.0.0/test/fprime_gds/common/tools/test_paramdb_gen.py +39 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/dp_writer_data/dictionary.json +240 -28
- fprime_gds-4.0.0/test/fprime_gds/test_plugins.py +503 -0
- fprime_gds-3.6.2a1/src/fprime_gds/executables/apps.py +0 -150
- fprime_gds-3.6.2a1/src/fprime_gds/plugin/definitions.py +0 -71
- fprime_gds-3.6.2a1/src/fprime_gds/plugin/system.py +0 -225
- fprime_gds-3.6.2a1/test/fprime_gds/test_plugins.py +0 -327
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/.github/actions/codeql/security-pack.yml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/.github/actions/spelling/excludes.txt +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/.github/pull_request_template.md +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/.github/resources/RefTopologyAppDictionary.xml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/.github/workflows/publish.yml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/.gitignore +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/Doxyfile +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/LICENSE.txt +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/NOTICE.txt +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/configs/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/docs/README.md +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/docs/_static/css/rtd_width.css +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/docs/conf.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/docs/gendoc.bash +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/docs/index.rst +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/examples/simple_sequence.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/examples/simple_sequence.seq +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/setup.cfg +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/setup.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fastentrypoints.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/communication/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/communication/adapters/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/communication/adapters/base.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/controllers → fprime_gds-4.0.0/src/fprime_gds/common/communication/ccsds}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/communication/checksum.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/communication/ground.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/communication/updown.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/data_types → fprime_gds-4.0.0/src/fprime_gds/common/controllers}/__init__.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/decoders → fprime_gds-4.0.0/src/fprime_gds/common/data_types}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/data_types/ch_data.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/data_types/cmd_data.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/data_types/event_data.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/data_types/exceptions.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/data_types/file_data.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/data_types/pkt_data.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/data_types/sys_data.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/distributor → fprime_gds-4.0.0/src/fprime_gds/common/decoders}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/decoders/decoder.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/decoders/file_decoder.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/encoders → fprime_gds-4.0.0/src/fprime_gds/common/distributor}/__init__.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/files → fprime_gds-4.0.0/src/fprime_gds/common/encoders}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/encoders/encoder.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/encoders/file_encoder.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/files/File Decoder Documentation.txt +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/gds_cli → fprime_gds-4.0.0/src/fprime_gds/common/files}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/files/downlinker.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/files/helpers.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/files/uplinker.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/history → fprime_gds-4.0.0/src/fprime_gds/common/fpy}/__init__.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/loaders → fprime_gds-4.0.0/src/fprime_gds/common/fpy/bytecode}/__init__.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/models → fprime_gds-4.0.0/src/fprime_gds/common/gds_cli}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/gds_cli/channels.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/gds_cli/command_send.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/gds_cli/events.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/gds_cli/filtering_utils.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/gds_cli/test_api_utils.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/models/common → fprime_gds-4.0.0/src/fprime_gds/common/history}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/history/chrono.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/history/history.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/history/ram.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/history/test.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/parsers → fprime_gds-4.0.0/src/fprime_gds/common/loaders}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/loaders/ch_json_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/loaders/ch_xml_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/loaders/cmd_json_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/loaders/cmd_xml_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/loaders/dict_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/loaders/event_json_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/loaders/event_xml_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/loaders/json_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/loaders/pkt_xml_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/loaders/xml_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/logger/data_logger.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/logger/test_logger.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/pipeline → fprime_gds-4.0.0/src/fprime_gds/common/models}/__init__.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/templates → fprime_gds-4.0.0/src/fprime_gds/common/models/common}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/models/common/channel_telemetry.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/models/common/command.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/models/common/event.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/testing_fw → fprime_gds-4.0.0/src/fprime_gds/common/parsers}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/parsers/seq_file_parser.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/tools → fprime_gds-4.0.0/src/fprime_gds/common/pipeline}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/pipeline/files.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/pipeline/router.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/utils → fprime_gds-4.0.0/src/fprime_gds/common/templates}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/templates/ch_template.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/templates/data_template.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/templates/event_template.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/templates/pkt_template.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/executables → fprime_gds-4.0.0/src/fprime_gds/common/testing_fw}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/testing_fw/predicates.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/flask → fprime_gds-4.0.0/src/fprime_gds/common/tools}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/tools/seqgen.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/transport.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/plugin → fprime_gds-4.0.0/src/fprime_gds/common/utils}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/utils/event_severity.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/utils/string_util.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/common/zmq_transport.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/executables/tcpserver.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/executables/utils.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/app.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/channels.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/commands.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/components.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/default_settings.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/errors.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/events.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/json.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/logs.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/requirements.txt +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/resource.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/sequence.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/.idea/.gitignore +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/.idea/misc.xml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/.idea/modules.xml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/.idea/static.iml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/.idea/vcs.xml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/advanced-settings/addon-templates.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/advanced-settings/addon.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/channel-render/addon.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/channel-render/channel-render-template.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/channel-render/channel-render.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/chart-display/addon-templates.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/chart-display/addon.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/chart-display/config.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/chartjs-plugin-streaming.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/chartjs-plugin-zoom.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/flat.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/chart-display/sibling.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/chart-display/vendor/chart.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/chart-display/vendor/chartjs-adapter-luxon.min.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/chart-display/vendor/hammer.min.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/commanding/addon.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/commanding/argument-templates.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/commanding/arguments.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/commanding/command-history-template.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/commanding/command-history.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/commanding/command-input-template.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/commanding/command-input.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/commanding/command-string-template.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/commanding/command-string.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/dictionary/addon-templates.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/dictionary/addon.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/enabled.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/image-display/addon.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/image-display/dashboard.xml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/sequencer/README.md +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/sequencer/addon-templates.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/sequencer/addon.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/sequencer/autocomplete.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/sequencer/lint.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/sequencer/third/code-mirror.es.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/.gitignore +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/index.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/language.grammer +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/package.json +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/rollup.config.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/css/fprime.css +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/css/fpstyle.css +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/favicon.ico +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/img/error.svg +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/img/logo.svg +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/img/success.svg +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/index.html +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/config.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/datastore.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/gds.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/json.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/loader.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/performance.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/settings.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/uploader.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/validate.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/vue-support/dashboard-box.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/vue-support/dashboard-row.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/vue-support/dashboard.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/vue-support/downlink.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/vue-support/fp-row.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/vue-support/fptable.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/vue-support/log.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/vue-support/tabetc.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/vue-support/uplink.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/js/vue-support/utils.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/css/all.min.css +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/css/bootstrap.min.css +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/css/vue-select.css +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/js/luxon.min.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/js/sorttable.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/js/v-runtime-template.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/js/vue-select.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/js/vue.min.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.eot +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.svg +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.ttf +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.woff +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.woff2 +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.eot +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.svg +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.ttf +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.woff +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.woff2 +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.eot +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.svg +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.ttf +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff2 +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/stats.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/flask/updown.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds/version.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds.egg-info/dependency_links.txt +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/src/fprime_gds.egg-info/top_level.txt +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/data_types/test_cmd_data.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/distributor/test_distributor.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/encoders/test_ch_encoder.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/encoders/test_event_encoder.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/encoders/test_pkt_encoder.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/gds_cli/filtering_utils_test.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/gds_cli/utils_test.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/history/chronohistory_unit_test.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/history/testhistory_unit_test.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/testing_fw/UnitTestDictionary.xml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/testing_fw/api_unit_test.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/testing_fw/logs/.gitignore +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/testing_fw/predicate_unit_test.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/tools/expected/simple_expected.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/tools/input/simple_bad_sequence.seq +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/tools/input/simple_sequence.seq +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/tools/resources/simple_dictionary.xml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/tools/seqgen_unit_test.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/common/utils/test_string_util.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/.gitignore +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/dp_writer_data/makeBool.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/dp_writer_data/makeComplex.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/dp_writer_data/makeDataArray.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/dp_writer_data/makeEnum.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/dp_writer_data/makeF32.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/dp_writer_data/makeF64.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/dp_writer_data/makeFppArray.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/dp_writer_data/makeI16.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/dp_writer_data/makeI32.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/dp_writer_data/makeI64.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/dp_writer_data/makeI8.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/dp_writer_data/makeU32.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/dp_writer_data/makeU32Array.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/dp_writer_data/makeU8Array.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/test_data_product_writer.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/test_run_deployment.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/executables/test_utils.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/fprime_gds/sample/dictionary.xml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0}/test/gui/GUI_Test_Procedure.md +0 -0
@@ -23,6 +23,7 @@ autosectionlabel
|
|
23
23
|
backface
|
24
24
|
batchmode
|
25
25
|
baudrate
|
26
|
+
BBBBBHI
|
26
27
|
bcolors
|
27
28
|
BGR
|
28
29
|
Biberstein
|
@@ -31,25 +32,32 @@ bitmaps
|
|
31
32
|
breadcrumb
|
32
33
|
Btns
|
33
34
|
BUGLIST
|
35
|
+
calcsize
|
34
36
|
calibri
|
35
37
|
callergraph
|
36
38
|
callgraph
|
37
39
|
cata
|
38
40
|
CCB
|
39
41
|
CCFF
|
42
|
+
ccsds
|
43
|
+
Cdh
|
40
44
|
Cdioux
|
41
45
|
cdn
|
42
46
|
cdxoefg
|
43
47
|
CFDG
|
44
48
|
CFDP
|
45
49
|
CFPD
|
50
|
+
chans
|
46
51
|
chartjs
|
47
52
|
CHNG
|
48
53
|
classdocs
|
49
54
|
clearfix
|
50
55
|
cls
|
51
56
|
cmdhist
|
57
|
+
cmps
|
58
|
+
cmt
|
52
59
|
CODEFILE
|
60
|
+
codegen
|
53
61
|
COLORSTYLE
|
54
62
|
colorwheel
|
55
63
|
columnify
|
@@ -59,10 +67,12 @@ configs
|
|
59
67
|
Consolas
|
60
68
|
creatingdocsetswithdoxygen
|
61
69
|
csum
|
70
|
+
ctx
|
62
71
|
curateable
|
63
72
|
curated
|
64
73
|
curating
|
65
74
|
customise
|
75
|
+
cuz
|
66
76
|
daringfireball
|
67
77
|
dataobjects
|
68
78
|
dblclick
|
@@ -74,7 +84,7 @@ deframed
|
|
74
84
|
deframer
|
75
85
|
deframing
|
76
86
|
DEPRECATEDLIST
|
77
|
-
|
87
|
+
deser
|
78
88
|
Deserial
|
79
89
|
deserializes
|
80
90
|
dests
|
@@ -111,6 +121,7 @@ ECONNRESET
|
|
111
121
|
ect
|
112
122
|
EEXIST
|
113
123
|
Efg
|
124
|
+
elifs
|
114
125
|
ENDC
|
115
126
|
endcond
|
116
127
|
errorhandler
|
@@ -125,20 +136,33 @@ fastentrypoints
|
|
125
136
|
fbuild
|
126
137
|
fd
|
127
138
|
FEEDNAME
|
139
|
+
FEQ
|
128
140
|
FFCC
|
129
141
|
FFFF
|
142
|
+
FGE
|
143
|
+
FGT
|
130
144
|
fileurl
|
131
145
|
Firefox
|
146
|
+
FLE
|
132
147
|
focusring
|
148
|
+
FNE
|
133
149
|
FONTNAME
|
134
150
|
FONTPATH
|
135
151
|
FONTSIZE
|
152
|
+
FPEXT
|
136
153
|
fpp
|
137
154
|
fprime
|
138
155
|
fptable
|
156
|
+
FPTOSI
|
157
|
+
FPTOUI
|
158
|
+
FPTRUNC
|
159
|
+
fpy
|
160
|
+
fpybc
|
161
|
+
fqn
|
139
162
|
fsw
|
140
163
|
gdiplus
|
141
164
|
getbootstrap
|
165
|
+
getoption
|
142
166
|
github
|
143
167
|
grayscales
|
144
168
|
gse
|
@@ -160,29 +184,38 @@ hpaulson
|
|
160
184
|
htags
|
161
185
|
hyperlinks
|
162
186
|
idct
|
187
|
+
idk
|
163
188
|
idl
|
189
|
+
idx
|
164
190
|
ieeetr
|
191
|
+
IEQ
|
165
192
|
ified
|
166
193
|
ifun
|
167
194
|
IH
|
195
|
+
INE
|
168
196
|
inprogress
|
169
197
|
intersphinx
|
170
198
|
intlimits
|
171
199
|
ip
|
172
200
|
ipc
|
173
201
|
ipp
|
202
|
+
issuecomment
|
174
203
|
itcl
|
175
204
|
ixx
|
176
205
|
janamian
|
206
|
+
jawest
|
177
207
|
Jdk
|
178
208
|
jpl
|
179
209
|
JSO
|
180
210
|
jsonable
|
181
211
|
jsonified
|
182
212
|
jsonify
|
213
|
+
junitxml
|
183
214
|
keepalive
|
184
215
|
keyify
|
185
216
|
kinda
|
217
|
+
lalr
|
218
|
+
leisher
|
186
219
|
lestarch
|
187
220
|
levelname
|
188
221
|
Lezer
|
@@ -195,6 +228,7 @@ logdir
|
|
195
228
|
logpath
|
196
229
|
logselect
|
197
230
|
luxon
|
231
|
+
LVAR
|
198
232
|
makeindex
|
199
233
|
MAKEVAR
|
200
234
|
marijnh
|
@@ -224,6 +258,7 @@ NOSONAR
|
|
224
258
|
nosort
|
225
259
|
nosubgrouping
|
226
260
|
Noto
|
261
|
+
nreg
|
227
262
|
NSPACES
|
228
263
|
nuntil
|
229
264
|
odl
|
@@ -235,9 +270,11 @@ oring
|
|
235
270
|
osexc
|
236
271
|
OSX
|
237
272
|
outputfile
|
273
|
+
Packetize
|
238
274
|
packetized
|
239
275
|
Paetz
|
240
276
|
PARAMDOC
|
277
|
+
paramdb
|
241
278
|
passthrough
|
242
279
|
pb
|
243
280
|
pdflatex
|
@@ -246,8 +283,10 @@ pkts
|
|
246
283
|
plainnat
|
247
284
|
plantuml
|
248
285
|
PNGs
|
286
|
+
postlex
|
249
287
|
preds
|
250
288
|
prm
|
289
|
+
prmdb
|
251
290
|
procs
|
252
291
|
PROGRAMLISTING
|
253
292
|
projectbrief
|
@@ -285,6 +324,7 @@ rollup
|
|
285
324
|
rpaetz
|
286
325
|
rst
|
287
326
|
saba
|
327
|
+
scid
|
288
328
|
sdd
|
289
329
|
searchdata
|
290
330
|
Segoe
|
@@ -292,19 +332,27 @@ seqfile
|
|
292
332
|
seqgen
|
293
333
|
serializables
|
294
334
|
serialutil
|
335
|
+
SGE
|
336
|
+
SGT
|
295
337
|
showinitializer
|
296
338
|
sideeffect
|
297
339
|
SIGALRM
|
340
|
+
SITOFP
|
298
341
|
sizeb
|
299
342
|
SMAP
|
300
343
|
Smath
|
344
|
+
smth
|
301
345
|
SNDHWM
|
302
346
|
sorttable
|
347
|
+
spacepacket
|
303
348
|
squashify
|
349
|
+
sreg
|
304
350
|
sss
|
305
351
|
Ssymbols
|
306
352
|
stackoverflow
|
307
353
|
startuml
|
354
|
+
subclasscheck
|
355
|
+
subcmd
|
308
356
|
subgrouping
|
309
357
|
subhist
|
310
358
|
subhistory
|
@@ -322,6 +370,7 @@ Theif
|
|
322
370
|
thtcp
|
323
371
|
thudp
|
324
372
|
timebase
|
373
|
+
timectx
|
325
374
|
timescales
|
326
375
|
timespan
|
327
376
|
timestep
|
@@ -344,7 +393,9 @@ typedef
|
|
344
393
|
uart
|
345
394
|
ucf
|
346
395
|
udp
|
396
|
+
UGE
|
347
397
|
UIs
|
398
|
+
UITOFP
|
348
399
|
uk
|
349
400
|
ul
|
350
401
|
UNINIT
|
@@ -356,6 +407,8 @@ usec
|
|
356
407
|
useconds
|
357
408
|
usepackage
|
358
409
|
usr
|
410
|
+
vcid
|
411
|
+
VCP
|
359
412
|
vh
|
360
413
|
vhd
|
361
414
|
vhdl
|
@@ -375,6 +428,8 @@ xapian
|
|
375
428
|
xhttp
|
376
429
|
xl
|
377
430
|
xmit
|
431
|
+
xmlpath
|
378
432
|
xy
|
379
433
|
zeromq
|
380
434
|
zmq
|
435
|
+
zimri
|
@@ -8,6 +8,10 @@ on:
|
|
8
8
|
pull_request:
|
9
9
|
# The branches below must be a subset of the branches above
|
10
10
|
branches: [ devel ]
|
11
|
+
# Cancel in-progress runs if a newer run is started on a given PR
|
12
|
+
concurrency:
|
13
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
14
|
+
cancel-in-progress: ${{ !contains(github.ref, 'devel') && !contains(github.ref, 'release/')}}
|
11
15
|
|
12
16
|
jobs:
|
13
17
|
analyze:
|
@@ -6,6 +6,10 @@ on:
|
|
6
6
|
pull_request:
|
7
7
|
# The branches below must be a subset of the branches above
|
8
8
|
branches: [ devel ]
|
9
|
+
# Cancel in-progress runs if a newer run is started on a given PR
|
10
|
+
concurrency:
|
11
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
12
|
+
cancel-in-progress: ${{ !contains(github.ref, 'devel') && !contains(github.ref, 'release/')}}
|
9
13
|
|
10
14
|
jobs:
|
11
15
|
Unit-tests:
|
@@ -13,7 +17,7 @@ jobs:
|
|
13
17
|
runs-on: ubuntu-latest
|
14
18
|
strategy:
|
15
19
|
matrix:
|
16
|
-
python-version: ["3.
|
20
|
+
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
|
17
21
|
|
18
22
|
steps:
|
19
23
|
- uses: actions/checkout@v4
|
@@ -6,6 +6,10 @@ on:
|
|
6
6
|
pull_request:
|
7
7
|
# The branches below must be a subset of the branches above
|
8
8
|
branches: [ devel ]
|
9
|
+
# Cancel in-progress runs if a newer run is started on a given PR
|
10
|
+
concurrency:
|
11
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
12
|
+
cancel-in-progress: ${{ !contains(github.ref, 'devel') && !contains(github.ref, 'release/')}}
|
9
13
|
|
10
14
|
env:
|
11
15
|
DICTIONARY: ./.github/resources/RefTopologyAppDictionary.xml
|
@@ -16,7 +20,7 @@ jobs:
|
|
16
20
|
runs-on: ubuntu-latest
|
17
21
|
strategy:
|
18
22
|
matrix:
|
19
|
-
python-version: ["3.
|
23
|
+
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
|
20
24
|
|
21
25
|
steps:
|
22
26
|
|
@@ -11,6 +11,10 @@ on:
|
|
11
11
|
tags-ignore:
|
12
12
|
- "**"
|
13
13
|
types: ['opened', 'reopened', 'synchronize']
|
14
|
+
# Cancel in-progress runs if a newer run is started on a given PR
|
15
|
+
concurrency:
|
16
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
17
|
+
cancel-in-progress: ${{ !contains(github.ref, 'devel') && !contains(github.ref, 'release/')}}
|
14
18
|
|
15
19
|
jobs:
|
16
20
|
spelling:
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: fprime-gds
|
3
|
-
Version:
|
3
|
+
Version: 4.0.0
|
4
4
|
Summary: F Prime Flight Software Ground Data System layer
|
5
5
|
Author-email: Michael Starch <Michael.D.Starch@jpl.nasa.gov>, Thomas Boyer-Chammard <Thomas.Boyer.Chammard@jpl.nasa.gov>
|
6
6
|
License:
|
@@ -216,15 +216,15 @@ Classifier: Operating System :: Unix
|
|
216
216
|
Classifier: Operating System :: POSIX
|
217
217
|
Classifier: Programming Language :: Python
|
218
218
|
Classifier: Programming Language :: Python :: 3
|
219
|
-
Classifier: Programming Language :: Python :: 3.8
|
220
219
|
Classifier: Programming Language :: Python :: 3.9
|
221
220
|
Classifier: Programming Language :: Python :: 3.10
|
222
221
|
Classifier: Programming Language :: Python :: 3.11
|
223
222
|
Classifier: Programming Language :: Python :: 3.12
|
223
|
+
Classifier: Programming Language :: Python :: 3.13
|
224
224
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
225
225
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
226
226
|
Classifier: License :: OSI Approved :: Apache Software License
|
227
|
-
Requires-Python: >=3.
|
227
|
+
Requires-Python: >=3.9
|
228
228
|
Description-Content-Type: text/markdown
|
229
229
|
License-File: LICENSE.txt
|
230
230
|
License-File: NOTICE.txt
|
@@ -240,10 +240,15 @@ Requires-Dist: Jinja2>=2.11.3
|
|
240
240
|
Requires-Dist: openpyxl>=3.0.10
|
241
241
|
Requires-Dist: pyserial>=3.5
|
242
242
|
Requires-Dist: pydantic>=2.6
|
243
|
+
Requires-Dist: lark>=1.2.2
|
244
|
+
Requires-Dist: PyYAML>=6.0.2
|
245
|
+
Requires-Dist: spacepackets>=0.30.0
|
246
|
+
Requires-Dist: crc>=7.0.0
|
247
|
+
Dynamic: license-file
|
243
248
|
|
244
249
|
# F´ GDS
|
245
250
|
|
246
|
-
**Note:** This README describes GDS internals. Refer to the [
|
251
|
+
**Note:** This README describes GDS internals. Refer to the [F´ Documentation](https://fprime.jpl.nasa.gov/latest/docs/user-manual/overview/gds-introduction/) for instructions on how to use the GDS.
|
247
252
|
|
248
253
|
Issues should be reported here: [File an issue](https://github.com/nasa/fprime/issues/new/choose)
|
249
254
|
|
@@ -268,7 +273,8 @@ output data type included. Command data objects are created in the command panel
|
|
268
273
|
the command encoder registered to that panel. Encoders take a data object and turn it into binary
|
269
274
|
data that can be sent to the F´ deployment. The binary data is then passed to the TCP client
|
270
275
|
which is registered to the encoder. Finally, the TCP client send the data back to the TCP server and
|
271
|
-
the F´ deployment.
|
276
|
+
the F´ deployment.
|
277
|
+

|
272
278
|
|
273
279
|
All of these objects are created and registered to other objects when the GDS
|
274
280
|
is initialized. Thus, all of the structure of the GDS is created in one place,
|
@@ -285,15 +291,11 @@ commands and registering consumers to the GDS decoders. The Standard Pipeline ca
|
|
285
291
|
[here](src/fprime_gds/common/pipeline/standard.py).
|
286
292
|
|
287
293
|
### GDS Integration Test API
|
288
|
-
The Integration Test API is a tool that provides the ability to write integration-level tests for an
|
289
|
-
F´ deployment using the GDS. The tool provides history searches/asserts, command sending, a
|
290
|
-
detailed test log, sub-histories and convenient access to GDS data objects. The test API comes with
|
291
|
-
separate [documentation](https://github.com/nasa/fprime/blob/master/docs/UsersGuide/dev/testAPI/markdown/contents.md) and its own [user
|
292
|
-
guide](https://github.com/nasa/fprime/blob/master/docs/UsersGuide/dev/testAPI/user_guide.md) and is built on top of the Standard Pipeline.
|
294
|
+
The Integration Test API is a tool that provides the ability to write integration-level tests for an F´ deployment using the GDS. The tool provides history searches/asserts, command sending, a detailed test log, sub-histories and convenient access to GDS data objects. The test API comes with its own [user guide](https://fprime.jpl.nasa.gov/latest/docs/user-manual/gds/gds-test-api-guide/) and is built on top of the Standard Pipeline.
|
293
295
|
|
294
296
|
## GDS GUI Usage
|
295
297
|
|
296
|
-
A guide for how to use the GDS is available in the [
|
298
|
+
A guide for how to use the GDS is available in the [F Prime documentation](https://fprime.jpl.nasa.gov/latest/docs/user-manual/overview/gds-introduction)
|
297
299
|
|
298
300
|
## Classes
|
299
301
|
The GDS back end is composed of several different data processing units. For
|
@@ -316,8 +318,15 @@ that descriptor. Descriptor types include events, channels, packets, etc (a full
|
|
316
318
|
enumeration can be found in (src/utils/data_desc_type.py). The binary data that
|
317
319
|
the descriptor receives should be of the form:
|
318
320
|
|
319
|
-
|
320
|
-
|
321
|
+
```mermaid
|
322
|
+
---
|
323
|
+
title: "Binary format received by Distributors"
|
324
|
+
---
|
325
|
+
packet-beta
|
326
|
+
0-31: "Length [4 bytes]"
|
327
|
+
32-63: "Type Descriptor [4 bytes]"
|
328
|
+
64-95: "Message Data [variable length]"
|
329
|
+
```
|
321
330
|
|
322
331
|
The distributor should then pass only the message data along to the decoders.
|
323
332
|
|
@@ -433,10 +442,3 @@ pip install doxypypy
|
|
433
442
|
|
434
443
|
Next, make `docs/py_filter` available in your system path however you see fit.
|
435
444
|
Now you can run `doxygen Doxyfile` in the root directory to generate documentation in `docs/doxy/index.html`
|
436
|
-
|
437
|
-
## Notes
|
438
|
-
- Currently, the models/common directory has command.py, event.py, and
|
439
|
-
channel.py. These files must be present in order for the python dictionaries
|
440
|
-
to be properly imported. However, they are empty and not used in the GDS.
|
441
|
-
When we switch fully to XML dictionaries, these can go away.
|
442
|
-
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# F´ GDS
|
2
2
|
|
3
|
-
**Note:** This README describes GDS internals. Refer to the [
|
3
|
+
**Note:** This README describes GDS internals. Refer to the [F´ Documentation](https://fprime.jpl.nasa.gov/latest/docs/user-manual/overview/gds-introduction/) for instructions on how to use the GDS.
|
4
4
|
|
5
5
|
Issues should be reported here: [File an issue](https://github.com/nasa/fprime/issues/new/choose)
|
6
6
|
|
@@ -25,7 +25,8 @@ output data type included. Command data objects are created in the command panel
|
|
25
25
|
the command encoder registered to that panel. Encoders take a data object and turn it into binary
|
26
26
|
data that can be sent to the F´ deployment. The binary data is then passed to the TCP client
|
27
27
|
which is registered to the encoder. Finally, the TCP client send the data back to the TCP server and
|
28
|
-
the F´ deployment.
|
28
|
+
the F´ deployment.
|
29
|
+

|
29
30
|
|
30
31
|
All of these objects are created and registered to other objects when the GDS
|
31
32
|
is initialized. Thus, all of the structure of the GDS is created in one place,
|
@@ -42,15 +43,11 @@ commands and registering consumers to the GDS decoders. The Standard Pipeline ca
|
|
42
43
|
[here](src/fprime_gds/common/pipeline/standard.py).
|
43
44
|
|
44
45
|
### GDS Integration Test API
|
45
|
-
The Integration Test API is a tool that provides the ability to write integration-level tests for an
|
46
|
-
F´ deployment using the GDS. The tool provides history searches/asserts, command sending, a
|
47
|
-
detailed test log, sub-histories and convenient access to GDS data objects. The test API comes with
|
48
|
-
separate [documentation](https://github.com/nasa/fprime/blob/master/docs/UsersGuide/dev/testAPI/markdown/contents.md) and its own [user
|
49
|
-
guide](https://github.com/nasa/fprime/blob/master/docs/UsersGuide/dev/testAPI/user_guide.md) and is built on top of the Standard Pipeline.
|
46
|
+
The Integration Test API is a tool that provides the ability to write integration-level tests for an F´ deployment using the GDS. The tool provides history searches/asserts, command sending, a detailed test log, sub-histories and convenient access to GDS data objects. The test API comes with its own [user guide](https://fprime.jpl.nasa.gov/latest/docs/user-manual/gds/gds-test-api-guide/) and is built on top of the Standard Pipeline.
|
50
47
|
|
51
48
|
## GDS GUI Usage
|
52
49
|
|
53
|
-
A guide for how to use the GDS is available in the [
|
50
|
+
A guide for how to use the GDS is available in the [F Prime documentation](https://fprime.jpl.nasa.gov/latest/docs/user-manual/overview/gds-introduction)
|
54
51
|
|
55
52
|
## Classes
|
56
53
|
The GDS back end is composed of several different data processing units. For
|
@@ -73,8 +70,15 @@ that descriptor. Descriptor types include events, channels, packets, etc (a full
|
|
73
70
|
enumeration can be found in (src/utils/data_desc_type.py). The binary data that
|
74
71
|
the descriptor receives should be of the form:
|
75
72
|
|
76
|
-
|
77
|
-
|
73
|
+
```mermaid
|
74
|
+
---
|
75
|
+
title: "Binary format received by Distributors"
|
76
|
+
---
|
77
|
+
packet-beta
|
78
|
+
0-31: "Length [4 bytes]"
|
79
|
+
32-63: "Type Descriptor [4 bytes]"
|
80
|
+
64-95: "Message Data [variable length]"
|
81
|
+
```
|
78
82
|
|
79
83
|
The distributor should then pass only the message data along to the decoders.
|
80
84
|
|
@@ -190,10 +194,3 @@ pip install doxypypy
|
|
190
194
|
|
191
195
|
Next, make `docs/py_filter` available in your system path however you see fit.
|
192
196
|
Now you can run `doxygen Doxyfile` in the root directory to generate documentation in `docs/doxy/index.html`
|
193
|
-
|
194
|
-
## Notes
|
195
|
-
- Currently, the models/common directory has command.py, event.py, and
|
196
|
-
channel.py. These files must be present in order for the python dictionaries
|
197
|
-
to be properly imported. However, they are empty and not used in the GDS.
|
198
|
-
When we switch fully to XML dictionaries, these can go away.
|
199
|
-
|
@@ -7,7 +7,7 @@ name = "fprime-gds"
|
|
7
7
|
dynamic = ["version"]
|
8
8
|
description = "F Prime Flight Software Ground Data System layer"
|
9
9
|
readme = "README.md"
|
10
|
-
requires-python = ">=3.
|
10
|
+
requires-python = ">=3.9"
|
11
11
|
license = {file = "LICENSE.txt"}
|
12
12
|
keywords = ["fprime", "embedded", "nasa", "flight", "software"]
|
13
13
|
authors = [
|
@@ -21,11 +21,11 @@ classifiers = [
|
|
21
21
|
"Operating System :: POSIX",
|
22
22
|
"Programming Language :: Python",
|
23
23
|
"Programming Language :: Python :: 3",
|
24
|
-
"Programming Language :: Python :: 3.8",
|
25
24
|
"Programming Language :: Python :: 3.9",
|
26
25
|
"Programming Language :: Python :: 3.10",
|
27
26
|
"Programming Language :: Python :: 3.11",
|
28
27
|
"Programming Language :: Python :: 3.12",
|
28
|
+
"Programming Language :: Python :: 3.13",
|
29
29
|
"Programming Language :: Python :: Implementation :: CPython",
|
30
30
|
"Programming Language :: Python :: Implementation :: PyPy",
|
31
31
|
"License :: OSI Approved :: Apache Software License",
|
@@ -42,7 +42,11 @@ dependencies = [
|
|
42
42
|
"Jinja2>=2.11.3",
|
43
43
|
"openpyxl>=3.0.10",
|
44
44
|
"pyserial>=3.5",
|
45
|
-
"pydantic>=2.6"
|
45
|
+
"pydantic>=2.6",
|
46
|
+
"lark>=1.2.2",
|
47
|
+
"PyYAML>=6.0.2",
|
48
|
+
"spacepackets>=0.30.0",
|
49
|
+
"crc>=7.0.0"
|
46
50
|
]
|
47
51
|
|
48
52
|
[project.urls]
|
@@ -61,6 +65,8 @@ fprime-cli = "fprime_gds.executables.fprime_cli:main"
|
|
61
65
|
fprime-seqgen = "fprime_gds.common.tools.seqgen:main"
|
62
66
|
fprime-dp-write = "fprime_gds.executables.data_product_writer:main"
|
63
67
|
fprime-gds = "fprime_gds.executables.run_deployment:main"
|
68
|
+
fprime-prm-write = "fprime_gds.common.tools.params:main"
|
69
|
+
fprime-fpyc = "fprime_gds.common.fpy.main:main"
|
64
70
|
|
65
71
|
# For Pytest fixtures
|
66
72
|
[project.entry-points."pytest11"]
|
@@ -50,13 +50,11 @@ class IpAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
|
|
50
50
|
both. This data is concatenated and returned up the stack for processing.
|
51
51
|
"""
|
52
52
|
|
53
|
-
# Interval to send a KEEPALIVE packet. None will turn off KEEPALIVE.
|
54
|
-
KEEPALIVE_INTERVAL = 0.500
|
55
53
|
# Data to send out as part of the KEEPALIVE packet. Should not be null nor empty.
|
56
54
|
KEEPALIVE_DATA = b"sitting well"
|
57
55
|
MAXIMUM_DATA_SIZE = 4096
|
58
56
|
|
59
|
-
def __init__(self, address, port, server=True):
|
57
|
+
def __init__(self, address, port, server=True, keepalive_interval=0.5):
|
60
58
|
"""
|
61
59
|
Initialize this adapter by creating a handler for UDP and TCP. A thread for the KEEPALIVE application packets
|
62
60
|
will be created, if the interval is not none. Handlers are servers unless server=False.
|
@@ -64,7 +62,8 @@ class IpAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
|
|
64
62
|
self.address = address
|
65
63
|
self.port = port
|
66
64
|
self.stop = False
|
67
|
-
self.
|
65
|
+
self.keepalive_thread = None
|
66
|
+
self.keepalive_interval = keepalive_interval
|
68
67
|
self.tcp = TcpHandler(address, port, server=server)
|
69
68
|
self.udp = UdpHandler(address, port, server=server)
|
70
69
|
self.thtcp = None
|
@@ -91,11 +90,11 @@ class IpAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
|
|
91
90
|
self.thudp.daemon = True
|
92
91
|
self.thudp.start()
|
93
92
|
# Start up a keep-alive ping if desired. This will hit the TCP uplink, and die if the connection is down
|
94
|
-
if
|
95
|
-
self.
|
96
|
-
target=self.th_alive, name="KeepCommAliveThread", args=[
|
93
|
+
if self.keepalive_interval > 0.0:
|
94
|
+
self.keepalive_thread = threading.Thread(
|
95
|
+
target=self.th_alive, name="KeepCommAliveThread", args=[self.keepalive_interval]
|
97
96
|
)
|
98
|
-
self.
|
97
|
+
self.keepalive_thread.start()
|
99
98
|
except (ValueError, TypeError) as exc:
|
100
99
|
LOGGER.error(
|
101
100
|
f"Failed to start keep-alive thread. {type(exc).__name__}: {str(exc)}"
|
@@ -186,6 +185,12 @@ class IpAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
|
|
186
185
|
"default": True,
|
187
186
|
"help": "Run the IP adapter as the client (connects to FSW running TcpServer)",
|
188
187
|
},
|
188
|
+
("--keepalive-interval",): {
|
189
|
+
"dest": "keepalive_interval",
|
190
|
+
"type": float,
|
191
|
+
"default": 0.5000,
|
192
|
+
"help": "Keep alive packet interval. 0.0 = off, default = 0.5",
|
193
|
+
},
|
189
194
|
}
|
190
195
|
|
191
196
|
@classmethod
|
@@ -195,7 +200,7 @@ class IpAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
|
|
195
200
|
return cls
|
196
201
|
|
197
202
|
@classmethod
|
198
|
-
def check_arguments(cls, address, port, server=True):
|
203
|
+
def check_arguments(cls, address, port, server=True, keepalive_interval=0.5):
|
199
204
|
"""
|
200
205
|
Code that should check arguments of this adapter. If there is a problem with this code, then a "ValueError"
|
201
206
|
should be raised describing the problem with these arguments.
|