fprime-gds 3.6.2a1__tar.gz → 4.0.0a2__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.0a2}/.github/actions/spelling/expect.txt +22 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/.github/workflows/fprime-gds-tests.yml +1 -1
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/.github/workflows/gds-cli-tests.yml +1 -1
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/PKG-INFO +18 -19
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/README.md +14 -17
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/pyproject.toml +4 -1
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/communication/adapters/uart.py +34 -25
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/decoders/ch_decoder.py +1 -1
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/decoders/event_decoder.py +2 -1
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/decoders/pkt_decoder.py +1 -1
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/distributor/distributor.py +2 -2
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/encoders/ch_encoder.py +2 -2
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/encoders/cmd_encoder.py +2 -2
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/encoders/event_encoder.py +2 -2
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/encoders/pkt_encoder.py +2 -2
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/encoders/seq_writer.py +2 -2
- fprime_gds-4.0.0a2/src/fprime_gds/common/fpy/serialize_bytecode.py +229 -0
- fprime_gds-4.0.0a2/src/fprime_gds/common/fpy/types.py +203 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/gds_cli/base_commands.py +1 -1
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/handlers.py +39 -0
- fprime_gds-4.0.0a2/src/fprime_gds/common/loaders/fw_type_json_loader.py +54 -0
- fprime_gds-4.0.0a2/src/fprime_gds/common/loaders/pkt_json_loader.py +121 -0
- fprime_gds-4.0.0a2/src/fprime_gds/common/loaders/prm_json_loader.py +85 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/pipeline/dictionaries.py +21 -4
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/pipeline/encoding.py +19 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/pipeline/histories.py +4 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/pipeline/standard.py +16 -2
- fprime_gds-4.0.0a2/src/fprime_gds/common/templates/prm_template.py +81 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/testing_fw/api.py +42 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/testing_fw/pytest_integration.py +25 -2
- fprime_gds-4.0.0a2/src/fprime_gds/common/tools/README.md +34 -0
- fprime_gds-4.0.0a2/src/fprime_gds/common/tools/params.py +246 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/utils/config_manager.py +6 -6
- fprime_gds-4.0.0a2/src/fprime_gds/executables/apps.py +323 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/executables/cli.py +443 -125
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/executables/comm.py +5 -2
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/executables/fprime_cli.py +3 -3
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/executables/run_deployment.py +12 -4
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/vue-support/channel.js +1 -1
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/vue-support/event.js +1 -1
- fprime_gds-4.0.0a2/src/fprime_gds/plugin/__init__.py +0 -0
- fprime_gds-4.0.0a2/src/fprime_gds/plugin/definitions.py +149 -0
- fprime_gds-4.0.0a2/src/fprime_gds/plugin/system.py +338 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds.egg-info/PKG-INFO +18 -19
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds.egg-info/SOURCES.txt +14 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds.egg-info/entry_points.txt +2 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds.egg-info/requires.txt +1 -0
- fprime_gds-4.0.0a2/test/fprime_gds/common/fpy/integrated_tests.py +273 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/loaders/resources/RefTopologyDictionary.json +1008 -338
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/loaders/test_json_loader.py +46 -0
- fprime_gds-4.0.0a2/test/fprime_gds/common/tools/expected/simple_paramdb.dat +0 -0
- fprime_gds-4.0.0a2/test/fprime_gds/common/tools/input/simple_bad_paramdb.json +5 -0
- fprime_gds-4.0.0a2/test/fprime_gds/common/tools/input/simple_paramdb.json +5 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/tools/resources/simple_dictionary.json +12 -0
- fprime_gds-4.0.0a2/test/fprime_gds/common/tools/test_paramdb_gen.py +39 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/test_plugins.py +167 -75
- 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 → fprime_gds-4.0.0a2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/.github/actions/codeql/security-pack.yml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/.github/actions/spelling/excludes.txt +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/.github/actions/spelling/patterns.txt +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/.github/pull_request_template.md +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/.github/resources/RefTopologyAppDictionary.xml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/.github/workflows/codeql-security-scan.yml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/.github/workflows/publish.yml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/.github/workflows/spelling.yml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/.gitignore +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/Doxyfile +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/LICENSE.txt +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/NOTICE.txt +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/configs/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/docs/README.md +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/docs/_static/css/rtd_width.css +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/docs/conf.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/docs/gendoc.bash +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/docs/index.rst +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/examples/simple_sequence.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/examples/simple_sequence.seq +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/setup.cfg +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/setup.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fastentrypoints.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/communication/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/communication/adapters/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/communication/adapters/base.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/communication/adapters/ip.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/communication/checksum.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/communication/framing.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/communication/ground.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/communication/updown.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/controllers/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/data_types/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/data_types/ch_data.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/data_types/cmd_data.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/data_types/event_data.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/data_types/exceptions.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/data_types/file_data.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/data_types/pkt_data.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/data_types/sys_data.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/decoders/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/decoders/decoder.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/decoders/file_decoder.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/distributor/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/encoders/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/encoders/encoder.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/encoders/file_encoder.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/files/File Decoder Documentation.txt +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/files/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/files/downlinker.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/files/helpers.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/files/uplinker.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/gds_cli → fprime_gds-4.0.0a2/src/fprime_gds/common/fpy}/__init__.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/history → fprime_gds-4.0.0a2/src/fprime_gds/common/gds_cli}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/gds_cli/channels.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/gds_cli/command_send.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/gds_cli/events.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/gds_cli/filtering_utils.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/gds_cli/test_api_utils.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/loaders → fprime_gds-4.0.0a2/src/fprime_gds/common/history}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/history/chrono.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/history/history.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/history/ram.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/history/test.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/models → fprime_gds-4.0.0a2/src/fprime_gds/common/loaders}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/loaders/ch_json_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/loaders/ch_xml_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/loaders/cmd_json_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/loaders/cmd_xml_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/loaders/dict_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/loaders/event_json_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/loaders/event_xml_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/loaders/json_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/loaders/pkt_xml_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/loaders/xml_loader.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/logger/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/logger/data_logger.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/logger/test_logger.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/models/common → fprime_gds-4.0.0a2/src/fprime_gds/common/models}/__init__.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/parsers → fprime_gds-4.0.0a2/src/fprime_gds/common/models/common}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/models/common/channel_telemetry.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/models/common/command.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/models/common/event.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/pipeline → fprime_gds-4.0.0a2/src/fprime_gds/common/parsers}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/parsers/seq_file_parser.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/templates → fprime_gds-4.0.0a2/src/fprime_gds/common/pipeline}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/pipeline/files.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/pipeline/router.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/testing_fw → fprime_gds-4.0.0a2/src/fprime_gds/common/templates}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/templates/ch_template.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/templates/cmd_template.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/templates/data_template.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/templates/event_template.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/templates/pkt_template.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/tools → fprime_gds-4.0.0a2/src/fprime_gds/common/testing_fw}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/testing_fw/predicates.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/common/utils → fprime_gds-4.0.0a2/src/fprime_gds/common/tools}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/tools/seqgen.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/transport.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/executables → fprime_gds-4.0.0a2/src/fprime_gds/common/utils}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/utils/data_desc_type.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/utils/event_severity.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/utils/string_util.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/zmq_transport.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/flask → fprime_gds-4.0.0a2/src/fprime_gds/executables}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/executables/data_product_writer.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/executables/tcpserver.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/executables/utils.py +0 -0
- {fprime_gds-3.6.2a1/src/fprime_gds/plugin → fprime_gds-4.0.0a2/src/fprime_gds/flask}/__init__.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/app.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/channels.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/commands.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/components.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/default_settings.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/errors.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/events.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/json.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/logs.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/requirements.txt +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/resource.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/sequence.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/.idea/.gitignore +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/.idea/misc.xml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/.idea/modules.xml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/.idea/static.iml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/.idea/vcs.xml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/advanced-settings/addon-templates.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/advanced-settings/addon.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/channel-render/addon.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/channel-render/channel-render-template.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/channel-render/channel-render.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/chart-display/addon-templates.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/chart-display/addon.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/chart-display/config.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/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.0a2}/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.0a2}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/flat.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/chart-display/sibling.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/chart-display/vendor/chart.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/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.0a2}/src/fprime_gds/flask/static/addons/chart-display/vendor/hammer.min.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/commanding/addon.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/commanding/argument-templates.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/commanding/arguments.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/commanding/command-history-template.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/commanding/command-history.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/commanding/command-input-template.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/commanding/command-input.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/commanding/command-string-template.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/commanding/command-string.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/dictionary/addon-templates.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/dictionary/addon.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/enabled.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/image-display/addon.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/image-display/dashboard.xml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/sequencer/README.md +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/sequencer/addon-templates.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/sequencer/addon.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/sequencer/autocomplete.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/sequencer/lint.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/sequencer/third/code-mirror.es.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/.gitignore +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/index.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/language.grammer +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/package.json +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/rollup.config.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/css/fprime.css +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/css/fpstyle.css +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/favicon.ico +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/img/error.svg +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/img/logo.svg +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/img/success.svg +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/index.html +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/config.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/datastore.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/gds.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/json.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/loader.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/performance.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/settings.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/uploader.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/validate.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/vue-support/dashboard-box.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/vue-support/dashboard-row.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/vue-support/dashboard.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/vue-support/downlink.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/vue-support/fp-row.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/vue-support/fptable.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/vue-support/log.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/vue-support/tabetc.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/vue-support/uplink.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/js/vue-support/utils.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/css/all.min.css +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/css/bootstrap.min.css +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/css/vue-select.css +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/js/luxon.min.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/js/sorttable.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/js/v-runtime-template.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/js/vue-select.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/js/vue.min.js +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.eot +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.svg +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.ttf +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.woff +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.woff2 +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.eot +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.svg +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.ttf +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.woff +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.woff2 +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.eot +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.svg +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.ttf +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff2 +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/stats.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/flask/updown.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/version.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds.egg-info/dependency_links.txt +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds.egg-info/top_level.txt +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/data_types/test_cmd_data.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/distributor/test_distributor.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/encoders/test_ch_encoder.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/encoders/test_event_encoder.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/encoders/test_pkt_encoder.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/gds_cli/filtering_utils_test.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/gds_cli/utils_test.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/history/chronohistory_unit_test.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/history/testhistory_unit_test.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/testing_fw/UnitTestDictionary.xml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/testing_fw/api_unit_test.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/testing_fw/logs/.gitignore +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/testing_fw/predicate_unit_test.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/tools/expected/simple_expected.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/tools/input/simple_bad_sequence.seq +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/tools/input/simple_sequence.seq +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/tools/resources/simple_dictionary.xml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/tools/seqgen_unit_test.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/common/utils/test_string_util.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/.gitignore +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/dp_writer_data/dictionary.json +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/dp_writer_data/makeBool.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/dp_writer_data/makeComplex.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/dp_writer_data/makeDataArray.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/dp_writer_data/makeEnum.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/dp_writer_data/makeF32.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/dp_writer_data/makeF64.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/dp_writer_data/makeFppArray.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/dp_writer_data/makeI16.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/dp_writer_data/makeI32.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/dp_writer_data/makeI64.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/dp_writer_data/makeI8.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/dp_writer_data/makeU32.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/dp_writer_data/makeU32Array.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/dp_writer_data/makeU8Array.bin +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/test_data_product_writer.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/test_run_deployment.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/executables/test_utils.py +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/test/fprime_gds/sample/dictionary.xml +0 -0
- {fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/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,6 +32,7 @@ bitmaps
|
|
31
32
|
breadcrumb
|
32
33
|
Btns
|
33
34
|
BUGLIST
|
35
|
+
calcsize
|
34
36
|
calibri
|
35
37
|
callergraph
|
36
38
|
callgraph
|
@@ -49,6 +51,7 @@ classdocs
|
|
49
51
|
clearfix
|
50
52
|
cls
|
51
53
|
cmdhist
|
54
|
+
cmt
|
52
55
|
CODEFILE
|
53
56
|
COLORSTYLE
|
54
57
|
colorwheel
|
@@ -59,10 +62,12 @@ configs
|
|
59
62
|
Consolas
|
60
63
|
creatingdocsetswithdoxygen
|
61
64
|
csum
|
65
|
+
ctx
|
62
66
|
curateable
|
63
67
|
curated
|
64
68
|
curating
|
65
69
|
customise
|
70
|
+
cuz
|
66
71
|
daringfireball
|
67
72
|
dataobjects
|
68
73
|
dblclick
|
@@ -136,9 +141,13 @@ FONTSIZE
|
|
136
141
|
fpp
|
137
142
|
fprime
|
138
143
|
fptable
|
144
|
+
fpy
|
145
|
+
fpybc
|
146
|
+
fqn
|
139
147
|
fsw
|
140
148
|
gdiplus
|
141
149
|
getbootstrap
|
150
|
+
getoption
|
142
151
|
github
|
143
152
|
grayscales
|
144
153
|
gse
|
@@ -161,6 +170,7 @@ htags
|
|
161
170
|
hyperlinks
|
162
171
|
idct
|
163
172
|
idl
|
173
|
+
idx
|
164
174
|
ieeetr
|
165
175
|
ified
|
166
176
|
ifun
|
@@ -171,18 +181,22 @@ intlimits
|
|
171
181
|
ip
|
172
182
|
ipc
|
173
183
|
ipp
|
184
|
+
issuecomment
|
174
185
|
itcl
|
175
186
|
ixx
|
176
187
|
janamian
|
188
|
+
jawest
|
177
189
|
Jdk
|
178
190
|
jpl
|
179
191
|
JSO
|
180
192
|
jsonable
|
181
193
|
jsonified
|
182
194
|
jsonify
|
195
|
+
junitxml
|
183
196
|
keepalive
|
184
197
|
keyify
|
185
198
|
kinda
|
199
|
+
leisher
|
186
200
|
lestarch
|
187
201
|
levelname
|
188
202
|
Lezer
|
@@ -195,6 +209,7 @@ logdir
|
|
195
209
|
logpath
|
196
210
|
logselect
|
197
211
|
luxon
|
212
|
+
LVAR
|
198
213
|
makeindex
|
199
214
|
MAKEVAR
|
200
215
|
marijnh
|
@@ -235,9 +250,11 @@ oring
|
|
235
250
|
osexc
|
236
251
|
OSX
|
237
252
|
outputfile
|
253
|
+
Packetize
|
238
254
|
packetized
|
239
255
|
Paetz
|
240
256
|
PARAMDOC
|
257
|
+
paramdb
|
241
258
|
passthrough
|
242
259
|
pb
|
243
260
|
pdflatex
|
@@ -248,6 +265,7 @@ plantuml
|
|
248
265
|
PNGs
|
249
266
|
preds
|
250
267
|
prm
|
268
|
+
prmdb
|
251
269
|
procs
|
252
270
|
PROGRAMLISTING
|
253
271
|
projectbrief
|
@@ -305,6 +323,7 @@ sss
|
|
305
323
|
Ssymbols
|
306
324
|
stackoverflow
|
307
325
|
startuml
|
326
|
+
subcmd
|
308
327
|
subgrouping
|
309
328
|
subhist
|
310
329
|
subhistory
|
@@ -322,6 +341,7 @@ Theif
|
|
322
341
|
thtcp
|
323
342
|
thudp
|
324
343
|
timebase
|
344
|
+
timectx
|
325
345
|
timescales
|
326
346
|
timespan
|
327
347
|
timestep
|
@@ -375,6 +395,8 @@ xapian
|
|
375
395
|
xhttp
|
376
396
|
xl
|
377
397
|
xmit
|
398
|
+
xmlpath
|
378
399
|
xy
|
379
400
|
zeromq
|
380
401
|
zmq
|
402
|
+
zimri
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: fprime-gds
|
3
|
-
Version:
|
3
|
+
Version: 4.0.0a2
|
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:
|
@@ -240,10 +240,12 @@ 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: PyYAML>=6.0.2
|
244
|
+
Dynamic: license-file
|
243
245
|
|
244
246
|
# F´ GDS
|
245
247
|
|
246
|
-
**Note:** This README describes GDS internals. Refer to the [
|
248
|
+
**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
249
|
|
248
250
|
Issues should be reported here: [File an issue](https://github.com/nasa/fprime/issues/new/choose)
|
249
251
|
|
@@ -268,7 +270,8 @@ output data type included. Command data objects are created in the command panel
|
|
268
270
|
the command encoder registered to that panel. Encoders take a data object and turn it into binary
|
269
271
|
data that can be sent to the F´ deployment. The binary data is then passed to the TCP client
|
270
272
|
which is registered to the encoder. Finally, the TCP client send the data back to the TCP server and
|
271
|
-
the F´ deployment.
|
273
|
+
the F´ deployment.
|
274
|
+

|
272
275
|
|
273
276
|
All of these objects are created and registered to other objects when the GDS
|
274
277
|
is initialized. Thus, all of the structure of the GDS is created in one place,
|
@@ -285,15 +288,11 @@ commands and registering consumers to the GDS decoders. The Standard Pipeline ca
|
|
285
288
|
[here](src/fprime_gds/common/pipeline/standard.py).
|
286
289
|
|
287
290
|
### 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.
|
291
|
+
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
292
|
|
294
293
|
## GDS GUI Usage
|
295
294
|
|
296
|
-
A guide for how to use the GDS is available in the [
|
295
|
+
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
296
|
|
298
297
|
## Classes
|
299
298
|
The GDS back end is composed of several different data processing units. For
|
@@ -316,8 +315,15 @@ that descriptor. Descriptor types include events, channels, packets, etc (a full
|
|
316
315
|
enumeration can be found in (src/utils/data_desc_type.py). The binary data that
|
317
316
|
the descriptor receives should be of the form:
|
318
317
|
|
319
|
-
|
320
|
-
|
318
|
+
```mermaid
|
319
|
+
---
|
320
|
+
title: "Binary format received by Distributors"
|
321
|
+
---
|
322
|
+
packet-beta
|
323
|
+
0-31: "Length [4 bytes]"
|
324
|
+
32-63: "Type Descriptor [4 bytes]"
|
325
|
+
64-95: "Message Data [variable length]"
|
326
|
+
```
|
321
327
|
|
322
328
|
The distributor should then pass only the message data along to the decoders.
|
323
329
|
|
@@ -433,10 +439,3 @@ pip install doxypypy
|
|
433
439
|
|
434
440
|
Next, make `docs/py_filter` available in your system path however you see fit.
|
435
441
|
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
|
-
|
@@ -42,7 +42,8 @@ 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
|
+
"PyYAML>=6.0.2"
|
46
47
|
]
|
47
48
|
|
48
49
|
[project.urls]
|
@@ -61,6 +62,8 @@ fprime-cli = "fprime_gds.executables.fprime_cli:main"
|
|
61
62
|
fprime-seqgen = "fprime_gds.common.tools.seqgen:main"
|
62
63
|
fprime-dp-write = "fprime_gds.executables.data_product_writer:main"
|
63
64
|
fprime-gds = "fprime_gds.executables.run_deployment:main"
|
65
|
+
fprime-prm-write = "fprime_gds.common.tools.params:main"
|
66
|
+
fprime-fpy-bytecode = "fprime_gds.common.fpy.serialize_bytecode:main"
|
64
67
|
|
65
68
|
# For Pytest fixtures
|
66
69
|
[project.entry-points."pytest11"]
|
{fprime_gds-3.6.2a1 → fprime_gds-4.0.0a2}/src/fprime_gds/common/communication/adapters/uart.py
RENAMED
@@ -59,7 +59,7 @@ class SerialAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
|
|
59
59
|
4000000,
|
60
60
|
]
|
61
61
|
|
62
|
-
def __init__(self, device, baud):
|
62
|
+
def __init__(self, device, baud, skip_check):
|
63
63
|
"""
|
64
64
|
Initialize the serial adapter using the default settings. This does not open the serial port, but sets up all
|
65
65
|
the internal variables used when opening the device.
|
@@ -77,9 +77,14 @@ class SerialAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
|
|
77
77
|
Opens the serial port based on previously supplied settings. If the port is already open, then close it first.
|
78
78
|
Then open the port up again.
|
79
79
|
"""
|
80
|
-
|
81
|
-
|
82
|
-
|
80
|
+
try:
|
81
|
+
self.close()
|
82
|
+
self.serial = serial.Serial(self.device, self.baud)
|
83
|
+
return self.serial is not None
|
84
|
+
except serial.serialutil.SerialException as exc:
|
85
|
+
LOGGER.warning("Serial exception caught: %s. Reconnecting.", (str(exc)))
|
86
|
+
self.close()
|
87
|
+
return False
|
83
88
|
|
84
89
|
def close(self):
|
85
90
|
"""
|
@@ -100,12 +105,11 @@ class SerialAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
|
|
100
105
|
:return: True, when data was sent through the UART. False otherwise.
|
101
106
|
"""
|
102
107
|
try:
|
103
|
-
if self.serial is None:
|
104
|
-
self.
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
return True
|
108
|
+
if self.serial is not None or self.open():
|
109
|
+
written = self.serial.write(frame)
|
110
|
+
# Not believed to be possible to not send everything without getting a timeout exception
|
111
|
+
assert written == len(frame)
|
112
|
+
return True
|
109
113
|
except serial.serialutil.SerialException as exc:
|
110
114
|
LOGGER.warning("Serial exception caught: %s. Reconnecting.", (str(exc)))
|
111
115
|
self.close()
|
@@ -121,17 +125,16 @@ class SerialAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
|
|
121
125
|
"""
|
122
126
|
data = b""
|
123
127
|
try:
|
124
|
-
if self.serial is None:
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
) # Drain the incoming data queue
|
128
|
+
if self.serial is not None or self.open():
|
129
|
+
# Read as much data as possible, while ensuring to block if no data is available at this time. Note: as much
|
130
|
+
# data is read as possible to avoid a long-return time to this call. Minimum data to read is one byte in
|
131
|
+
# order to block this function while data is incoming.
|
132
|
+
self.serial.timeout = timeout
|
133
|
+
data = self.serial.read(1) # Force a block for at least 1 character
|
134
|
+
while self.serial.in_waiting:
|
135
|
+
data += self.serial.read(
|
136
|
+
self.serial.in_waiting
|
137
|
+
) # Drain the incoming data queue
|
135
138
|
except serial.serialutil.SerialException as exc:
|
136
139
|
LOGGER.warning("Serial exception caught: %s. Reconnecting.", (str(exc)))
|
137
140
|
self.close()
|
@@ -161,6 +164,12 @@ class SerialAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
|
|
161
164
|
"default": 9600,
|
162
165
|
"help": "Baud rate of the serial device.",
|
163
166
|
},
|
167
|
+
("--uart-skip-port-check",): {
|
168
|
+
"dest": "skip_check",
|
169
|
+
"default": False,
|
170
|
+
"action": "store_true",
|
171
|
+
"help": "Skip checking that the port exists"
|
172
|
+
}
|
164
173
|
}
|
165
174
|
|
166
175
|
@classmethod
|
@@ -175,20 +184,20 @@ class SerialAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
|
|
175
184
|
return cls
|
176
185
|
|
177
186
|
@classmethod
|
178
|
-
def check_arguments(cls, device, baud):
|
187
|
+
def check_arguments(cls, device, baud, skip_check):
|
179
188
|
"""
|
180
189
|
Code that should check arguments of this adapter. If there is a problem with this code, then a "ValueError"
|
181
190
|
should be raised describing the problem with these arguments.
|
182
191
|
|
183
192
|
:param args: arguments as dictionary
|
184
193
|
"""
|
185
|
-
ports = map(lambda info: info.device, list_ports.comports(include_links=True))
|
186
|
-
if device not in ports:
|
194
|
+
ports = list(map(lambda info: info.device, list_ports.comports(include_links=True)))
|
195
|
+
if not skip_check and device not in ports:
|
187
196
|
msg = f"Serial port '{device}' not valid. Available ports: {ports}"
|
188
197
|
raise ValueError(
|
189
198
|
msg
|
190
199
|
)
|
191
|
-
# Note: baud rate may not *always* work. These are a superset
|
200
|
+
# Note: baud rate may not *always* work. These are a superset.
|
192
201
|
try:
|
193
202
|
baud = int(baud)
|
194
203
|
except ValueError:
|
@@ -19,6 +19,7 @@ from fprime.common.models.serialize.type_exceptions import TypeException
|
|
19
19
|
|
20
20
|
from fprime_gds.common.data_types import event_data
|
21
21
|
from fprime_gds.common.decoders import decoder
|
22
|
+
from fprime_gds.common.decoders.decoder import DecodingException
|
22
23
|
from fprime_gds.common.utils import config_manager
|
23
24
|
|
24
25
|
|
@@ -43,7 +44,7 @@ class EventDecoder(decoder.Decoder):
|
|
43
44
|
config = config_manager.ConfigManager().get_instance()
|
44
45
|
|
45
46
|
self.__dict = event_dict
|
46
|
-
self.id_obj = config.get_type("
|
47
|
+
self.id_obj = config.get_type("FwEventIdType")
|
47
48
|
|
48
49
|
def decode_api(self, data):
|
49
50
|
"""
|
@@ -57,7 +57,7 @@ class Distributor(DataHandler):
|
|
57
57
|
self.key_frame = int(config.get("framing", "key_val"), 16)
|
58
58
|
self.key_obj = config.get_type("key_val")
|
59
59
|
self.len_obj = config.get_type("msg_len")
|
60
|
-
self.desc_obj = config.get_type("
|
60
|
+
self.desc_obj = config.get_type("FwPacketDescriptorType")
|
61
61
|
|
62
62
|
# NOTE we could use either the type of the object or an enum as the type argument.
|
63
63
|
# It should indicate what the decoder decodes.
|
@@ -204,4 +204,4 @@ class Distributor(DataHandler):
|
|
204
204
|
try:
|
205
205
|
d.data_callback(msg)
|
206
206
|
except DecodingException as dexc:
|
207
|
-
LOGGER.warning("Decoding error occurred: %s. Skipping.", dexc)
|
207
|
+
LOGGER.warning("Decoding error occurred: %s. Skipping.", dexc)
|
@@ -57,8 +57,8 @@ class ChEncoder(Encoder):
|
|
57
57
|
super().__init__(config)
|
58
58
|
|
59
59
|
self.len_obj = self.config.get_type("msg_len")
|
60
|
-
self.desc_obj = self.config.get_type("
|
61
|
-
self.id_obj = self.config.get_type("
|
60
|
+
self.desc_obj = self.config.get_type("FwPacketDescriptorType")
|
61
|
+
self.id_obj = self.config.get_type("FwChanIdType")
|
62
62
|
|
63
63
|
def encode_api(self, data):
|
64
64
|
"""
|
@@ -72,8 +72,8 @@ class CmdEncoder(encoder.Encoder):
|
|
72
72
|
super().__init__(config)
|
73
73
|
|
74
74
|
self.len_obj = self.config.get_type("msg_len")
|
75
|
-
self.desc_obj = self.config.get_type("
|
76
|
-
self.opcode_obj = self.config.get_type("
|
75
|
+
self.desc_obj = self.config.get_type("FwPacketDescriptorType")
|
76
|
+
self.opcode_obj = self.config.get_type("FwOpcodeType")
|
77
77
|
|
78
78
|
def encode_api(self, data):
|
79
79
|
"""
|
@@ -61,8 +61,8 @@ class EventEncoder(Encoder):
|
|
61
61
|
super().__init__(config)
|
62
62
|
|
63
63
|
self.len_obj = self.config.get_type("msg_len")
|
64
|
-
self.desc_obj = self.config.get_type("
|
65
|
-
self.id_obj = self.config.get_type("
|
64
|
+
self.desc_obj = self.config.get_type("FwPacketDescriptorType")
|
65
|
+
self.id_obj = self.config.get_type("FwEventIdType")
|
66
66
|
|
67
67
|
def encode_api(self, data):
|
68
68
|
"""
|
@@ -61,8 +61,8 @@ class PktEncoder(Encoder):
|
|
61
61
|
super().__init__(config)
|
62
62
|
|
63
63
|
self.len_obj = self.config.get_type("msg_len")
|
64
|
-
self.desc_obj = self.config.get_type("
|
65
|
-
self.id_obj = self.config.get_type("
|
64
|
+
self.desc_obj = self.config.get_type("FwPacketDescriptorType")
|
65
|
+
self.id_obj = self.config.get_type("FwTlmPacketizeIdType")
|
66
66
|
|
67
67
|
def encode_api(self, data):
|
68
68
|
"""
|
@@ -28,8 +28,8 @@ class SeqBinaryWriter:
|
|
28
28
|
|
29
29
|
self.__fd = None
|
30
30
|
self.__timebase = timebase
|
31
|
-
self.desc_obj = config.get_type("
|
32
|
-
self.opcode_obj = config.get_type("
|
31
|
+
self.desc_obj = config.get_type("FwPacketDescriptorType")
|
32
|
+
self.opcode_obj = config.get_type("FwOpcodeType")
|
33
33
|
self.len_obj = config.get_type("msg_len")
|
34
34
|
|
35
35
|
def open(self, filename):
|