fprime-gds 3.4.3__tar.gz → 3.4.4a2__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.
Files changed (312) hide show
  1. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/.github/actions/spelling/excludes.txt +4 -2
  2. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/.github/actions/spelling/expect.txt +43 -6
  3. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/PKG-INFO +3 -2
  4. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/README.md +1 -1
  5. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/pyproject.toml +6 -2
  6. fprime_gds-3.4.4a2/src/fprime_gds/common/communication/adapters/base.py +89 -0
  7. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/communication/adapters/ip.py +23 -5
  8. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/communication/adapters/uart.py +20 -7
  9. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/communication/checksum.py +1 -3
  10. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/communication/framing.py +53 -4
  11. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/data_types/event_data.py +6 -1
  12. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/data_types/exceptions.py +16 -11
  13. fprime_gds-3.4.4a2/src/fprime_gds/common/loaders/ch_json_loader.py +107 -0
  14. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/loaders/ch_xml_loader.py +5 -5
  15. fprime_gds-3.4.4a2/src/fprime_gds/common/loaders/cmd_json_loader.py +85 -0
  16. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/loaders/dict_loader.py +1 -1
  17. fprime_gds-3.4.4a2/src/fprime_gds/common/loaders/event_json_loader.py +108 -0
  18. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/loaders/event_xml_loader.py +10 -6
  19. fprime_gds-3.4.4a2/src/fprime_gds/common/loaders/json_loader.py +222 -0
  20. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/loaders/xml_loader.py +31 -9
  21. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/pipeline/dictionaries.py +38 -3
  22. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/tools/seqgen.py +4 -4
  23. fprime_gds-3.4.4a2/src/fprime_gds/common/utils/string_util.py +110 -0
  24. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/zmq_transport.py +37 -20
  25. fprime_gds-3.4.4a2/src/fprime_gds/executables/apps.py +150 -0
  26. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/executables/cli.py +239 -103
  27. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/executables/comm.py +17 -27
  28. fprime_gds-3.4.4a2/src/fprime_gds/executables/data_product_writer.py +935 -0
  29. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/executables/run_deployment.py +55 -14
  30. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/executables/utils.py +24 -12
  31. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/sequence.py +1 -1
  32. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/commanding/command-input.js +3 -2
  33. fprime_gds-3.4.4a2/src/fprime_gds/plugin/__init__.py +0 -0
  34. fprime_gds-3.4.4a2/src/fprime_gds/plugin/definitions.py +71 -0
  35. fprime_gds-3.4.4a2/src/fprime_gds/plugin/system.py +225 -0
  36. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds.egg-info/PKG-INFO +3 -2
  37. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds.egg-info/SOURCES.txt +35 -1
  38. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds.egg-info/entry_points.txt +2 -3
  39. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds.egg-info/requires.txt +1 -0
  40. fprime_gds-3.4.4a2/test/fprime_gds/common/loaders/resources/RefTopologyDictionary.json +9659 -0
  41. fprime_gds-3.4.4a2/test/fprime_gds/common/loaders/test_json_loader.py +152 -0
  42. fprime_gds-3.4.4a2/test/fprime_gds/common/tools/expected/simple_expected.bin +0 -0
  43. fprime_gds-3.4.4a2/test/fprime_gds/common/tools/input/simple_bad_sequence.seq +9 -0
  44. fprime_gds-3.4.4a2/test/fprime_gds/common/tools/input/simple_sequence.seq +8 -0
  45. fprime_gds-3.4.4a2/test/fprime_gds/common/tools/resources/simple_dictionary.json +40 -0
  46. fprime_gds-3.4.4a2/test/fprime_gds/common/tools/resources/simple_dictionary.xml +12 -0
  47. fprime_gds-3.4.4a2/test/fprime_gds/common/tools/seqgen_unit_test.py +42 -0
  48. fprime_gds-3.4.4a2/test/fprime_gds/common/utils/test_string_util.py +206 -0
  49. fprime_gds-3.4.4a2/test/fprime_gds/executables/.gitignore +1 -0
  50. fprime_gds-3.4.4a2/test/fprime_gds/executables/dp_writer_data/dictionary.json +9934 -0
  51. fprime_gds-3.4.4a2/test/fprime_gds/executables/dp_writer_data/makeBool.bin +0 -0
  52. fprime_gds-3.4.4a2/test/fprime_gds/executables/dp_writer_data/makeComplex.bin +0 -0
  53. fprime_gds-3.4.4a2/test/fprime_gds/executables/dp_writer_data/makeDataArray.bin +0 -0
  54. fprime_gds-3.4.4a2/test/fprime_gds/executables/dp_writer_data/makeEnum.bin +0 -0
  55. fprime_gds-3.4.4a2/test/fprime_gds/executables/dp_writer_data/makeF32.bin +0 -0
  56. fprime_gds-3.4.4a2/test/fprime_gds/executables/dp_writer_data/makeF64.bin +0 -0
  57. fprime_gds-3.4.4a2/test/fprime_gds/executables/dp_writer_data/makeFppArray.bin +0 -0
  58. fprime_gds-3.4.4a2/test/fprime_gds/executables/dp_writer_data/makeI16.bin +0 -0
  59. fprime_gds-3.4.4a2/test/fprime_gds/executables/dp_writer_data/makeI32.bin +0 -0
  60. fprime_gds-3.4.4a2/test/fprime_gds/executables/dp_writer_data/makeI64.bin +0 -0
  61. fprime_gds-3.4.4a2/test/fprime_gds/executables/dp_writer_data/makeI8.bin +0 -0
  62. fprime_gds-3.4.4a2/test/fprime_gds/executables/dp_writer_data/makeU32.bin +0 -0
  63. fprime_gds-3.4.4a2/test/fprime_gds/executables/dp_writer_data/makeU32Array.bin +0 -0
  64. fprime_gds-3.4.4a2/test/fprime_gds/executables/dp_writer_data/makeU8Array.bin +0 -0
  65. fprime_gds-3.4.4a2/test/fprime_gds/executables/test_data_product_writer.py +49 -0
  66. fprime_gds-3.4.4a2/test/fprime_gds/sample/dictionary.xml +1522 -0
  67. fprime_gds-3.4.4a2/test/fprime_gds/test_plugins.py +327 -0
  68. fprime-gds-3.4.3/pytest.ini +0 -3
  69. fprime-gds-3.4.3/src/fprime_gds/common/communication/adapters/base.py +0 -117
  70. fprime-gds-3.4.3/src/fprime_gds/common/utils/string_util.py +0 -118
  71. fprime-gds-3.4.3/test/fprime_gds/common/tools/seqgen_unit_test.py +0 -7
  72. fprime-gds-3.4.3/test/fprime_gds/common/utils/test_string_util.py +0 -129
  73. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  74. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/.github/actions/codeql/security-pack.yml +0 -0
  75. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/.github/actions/spelling/patterns.txt +0 -0
  76. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/.github/pull_request_template.md +0 -0
  77. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/.github/resources/RefTopologyAppDictionary.xml +0 -0
  78. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/.github/workflows/codeql-security-scan.yml +0 -0
  79. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/.github/workflows/fprime-gds-tests.yml +0 -0
  80. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/.github/workflows/gds-cli-tests.yml +0 -0
  81. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/.github/workflows/publish.yml +0 -0
  82. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/.github/workflows/spelling.yml +0 -0
  83. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/.gitignore +0 -0
  84. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/Doxyfile +0 -0
  85. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/LICENSE.txt +0 -0
  86. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/NOTICE.txt +0 -0
  87. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/configs/__init__.py +0 -0
  88. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/docs/README.md +0 -0
  89. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/docs/_static/css/rtd_width.css +0 -0
  90. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/docs/conf.py +0 -0
  91. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/docs/gendoc.bash +0 -0
  92. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/docs/index.rst +0 -0
  93. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/examples/simple_sequence.bin +0 -0
  94. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/examples/simple_sequence.seq +0 -0
  95. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/setup.cfg +0 -0
  96. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/setup.py +0 -0
  97. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fastentrypoints.py +0 -0
  98. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/__init__.py +0 -0
  99. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/__init__.py +0 -0
  100. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/communication/__init__.py +0 -0
  101. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/communication/adapters/__init__.py +0 -0
  102. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/communication/ground.py +0 -0
  103. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/communication/updown.py +0 -0
  104. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/controllers/__init__.py +0 -0
  105. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/data_types/__init__.py +0 -0
  106. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/data_types/ch_data.py +0 -0
  107. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/data_types/cmd_data.py +0 -0
  108. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/data_types/file_data.py +0 -0
  109. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/data_types/pkt_data.py +0 -0
  110. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/data_types/sys_data.py +0 -0
  111. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/decoders/__init__.py +0 -0
  112. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/decoders/ch_decoder.py +0 -0
  113. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/decoders/decoder.py +0 -0
  114. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/decoders/event_decoder.py +0 -0
  115. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/decoders/file_decoder.py +0 -0
  116. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/decoders/pkt_decoder.py +0 -0
  117. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/distributor/__init__.py +0 -0
  118. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/distributor/distributor.py +0 -0
  119. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/encoders/__init__.py +0 -0
  120. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/encoders/ch_encoder.py +0 -0
  121. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/encoders/cmd_encoder.py +0 -0
  122. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/encoders/encoder.py +0 -0
  123. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/encoders/event_encoder.py +0 -0
  124. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/encoders/file_encoder.py +0 -0
  125. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/encoders/pkt_encoder.py +0 -0
  126. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/encoders/seq_writer.py +0 -0
  127. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/files/File Decoder Documentation.txt +0 -0
  128. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/files/__init__.py +0 -0
  129. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/files/downlinker.py +0 -0
  130. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/files/helpers.py +0 -0
  131. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/files/uplinker.py +0 -0
  132. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/gds_cli/__init__.py +0 -0
  133. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/gds_cli/base_commands.py +0 -0
  134. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/gds_cli/channels.py +0 -0
  135. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/gds_cli/command_send.py +0 -0
  136. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/gds_cli/events.py +0 -0
  137. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/gds_cli/filtering_utils.py +0 -0
  138. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/gds_cli/test_api_utils.py +0 -0
  139. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/handlers.py +0 -0
  140. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/history/__init__.py +0 -0
  141. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/history/chrono.py +0 -0
  142. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/history/history.py +0 -0
  143. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/history/ram.py +0 -0
  144. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/history/test.py +0 -0
  145. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/loaders/__init__.py +0 -0
  146. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/loaders/ch_py_loader.py +0 -0
  147. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/loaders/cmd_py_loader.py +0 -0
  148. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/loaders/cmd_xml_loader.py +0 -0
  149. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/loaders/event_py_loader.py +0 -0
  150. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/loaders/pkt_xml_loader.py +0 -0
  151. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/loaders/python_loader.py +0 -0
  152. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/logger/__init__.py +0 -0
  153. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/logger/data_logger.py +0 -0
  154. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/logger/test_logger.py +0 -0
  155. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/models/__init__.py +0 -0
  156. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/models/common/__init__.py +0 -0
  157. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/models/common/channel_telemetry.py +0 -0
  158. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/models/common/command.py +0 -0
  159. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/models/common/event.py +0 -0
  160. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/parsers/__init__.py +0 -0
  161. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/parsers/seq_file_parser.py +0 -0
  162. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/pipeline/__init__.py +0 -0
  163. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/pipeline/encoding.py +0 -0
  164. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/pipeline/files.py +0 -0
  165. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/pipeline/histories.py +0 -0
  166. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/pipeline/router.py +0 -0
  167. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/pipeline/standard.py +0 -0
  168. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/templates/__init__.py +0 -0
  169. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/templates/ch_template.py +0 -0
  170. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/templates/cmd_template.py +0 -0
  171. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/templates/data_template.py +0 -0
  172. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/templates/event_template.py +0 -0
  173. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/templates/pkt_template.py +0 -0
  174. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/testing_fw/__init__.py +0 -0
  175. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/testing_fw/api.py +0 -0
  176. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/testing_fw/predicates.py +0 -0
  177. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/testing_fw/pytest_integration.py +0 -0
  178. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/tools/__init__.py +0 -0
  179. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/transport.py +0 -0
  180. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/utils/__init__.py +0 -0
  181. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/utils/config_manager.py +0 -0
  182. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/utils/data_desc_type.py +0 -0
  183. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/common/utils/event_severity.py +0 -0
  184. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/executables/__init__.py +0 -0
  185. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/executables/fprime_cli.py +0 -0
  186. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/executables/tcpserver.py +0 -0
  187. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/__init__.py +0 -0
  188. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/app.py +0 -0
  189. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/channels.py +0 -0
  190. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/commands.py +0 -0
  191. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/components.py +0 -0
  192. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/default_settings.py +0 -0
  193. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/errors.py +0 -0
  194. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/events.py +0 -0
  195. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/json.py +0 -0
  196. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/logs.py +0 -0
  197. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/requirements.txt +0 -0
  198. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/resource.py +0 -0
  199. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/.idea/.gitignore +0 -0
  200. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/.idea/misc.xml +0 -0
  201. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/.idea/modules.xml +0 -0
  202. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/.idea/static.iml +0 -0
  203. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/.idea/vcs.xml +0 -0
  204. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/advanced-settings/addon-templates.js +0 -0
  205. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/advanced-settings/addon.js +0 -0
  206. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/channel-render/addon.js +0 -0
  207. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/channel-render/channel-render-template.js +0 -0
  208. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/channel-render/channel-render.js +0 -0
  209. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/chart-display/addon-templates.js +0 -0
  210. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/chart-display/addon.js +0 -0
  211. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/chart-display/config.js +0 -0
  212. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/chartjs-plugin-streaming.js +0 -0
  213. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/chartjs-plugin-zoom.js +0 -0
  214. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/flat.js +0 -0
  215. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/chart-display/sibling.js +0 -0
  216. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/chart-display/vendor/chart.js +0 -0
  217. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/chart-display/vendor/chartjs-adapter-luxon.min.js +0 -0
  218. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/chart-display/vendor/hammer.min.js +0 -0
  219. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/commanding/addon.js +0 -0
  220. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/commanding/argument-templates.js +0 -0
  221. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/commanding/arguments.js +0 -0
  222. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/commanding/command-history-template.js +0 -0
  223. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/commanding/command-history.js +0 -0
  224. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/commanding/command-input-template.js +0 -0
  225. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/commanding/command-string-template.js +0 -0
  226. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/commanding/command-string.js +0 -0
  227. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/dictionary/addon-templates.js +0 -0
  228. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/dictionary/addon.js +0 -0
  229. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/enabled.js +0 -0
  230. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/image-display/addon.js +0 -0
  231. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/image-display/dashboard.xml +0 -0
  232. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/sequencer/README.md +0 -0
  233. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/sequencer/addon-templates.js +0 -0
  234. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/sequencer/addon.js +0 -0
  235. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/sequencer/autocomplete.js +0 -0
  236. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/sequencer/lint.js +0 -0
  237. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/sequencer/third/code-mirror.es.js +0 -0
  238. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/.gitignore +0 -0
  239. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/index.js +0 -0
  240. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/language.grammer +0 -0
  241. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/package.json +0 -0
  242. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/rollup.config.js +0 -0
  243. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/css/fprime.css +0 -0
  244. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/css/fpstyle.css +0 -0
  245. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/favicon.ico +0 -0
  246. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/img/error.svg +0 -0
  247. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/img/logo.svg +0 -0
  248. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/img/success.svg +0 -0
  249. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/index.html +0 -0
  250. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/config.js +0 -0
  251. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/datastore.js +0 -0
  252. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/gds.js +0 -0
  253. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/loader.js +0 -0
  254. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/performance.js +0 -0
  255. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/settings.js +0 -0
  256. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/uploader.js +0 -0
  257. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/validate.js +0 -0
  258. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/vue-support/channel.js +0 -0
  259. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/vue-support/dashboard-box.js +0 -0
  260. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/vue-support/dashboard-row.js +0 -0
  261. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/vue-support/dashboard.js +0 -0
  262. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/vue-support/downlink.js +0 -0
  263. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/vue-support/event.js +0 -0
  264. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/vue-support/fp-row.js +0 -0
  265. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/vue-support/fptable.js +0 -0
  266. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/vue-support/log.js +0 -0
  267. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/vue-support/tabetc.js +0 -0
  268. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/vue-support/uplink.js +0 -0
  269. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/js/vue-support/utils.js +0 -0
  270. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/css/all.min.css +0 -0
  271. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/css/bootstrap.min.css +0 -0
  272. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/css/vue-select.css +0 -0
  273. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/js/luxon.min.js +0 -0
  274. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/js/sorttable.js +0 -0
  275. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/js/v-runtime-template.js +0 -0
  276. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/js/vue-select.js +0 -0
  277. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/js/vue.min.js +0 -0
  278. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.eot +0 -0
  279. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.svg +0 -0
  280. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.ttf +0 -0
  281. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.woff +0 -0
  282. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.woff2 +0 -0
  283. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.eot +0 -0
  284. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.svg +0 -0
  285. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.ttf +0 -0
  286. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.woff +0 -0
  287. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.woff2 +0 -0
  288. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.eot +0 -0
  289. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.svg +0 -0
  290. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.ttf +0 -0
  291. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff +0 -0
  292. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff2 +0 -0
  293. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/stats.py +0 -0
  294. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/flask/updown.py +0 -0
  295. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds/version.py +0 -0
  296. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds.egg-info/dependency_links.txt +0 -0
  297. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/src/fprime_gds.egg-info/top_level.txt +0 -0
  298. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/test/fprime_gds/common/distributor/test_distributor.py +0 -0
  299. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/test/fprime_gds/common/encoders/test_ch_encoder.py +0 -0
  300. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/test/fprime_gds/common/encoders/test_event_encoder.py +0 -0
  301. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/test/fprime_gds/common/encoders/test_pkt_encoder.py +0 -0
  302. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/test/fprime_gds/common/gds_cli/filtering_utils_test.py +0 -0
  303. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/test/fprime_gds/common/gds_cli/utils_test.py +0 -0
  304. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/test/fprime_gds/common/history/chronohistory_unit_test.py +0 -0
  305. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/test/fprime_gds/common/history/testhistory_unit_test.py +0 -0
  306. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/test/fprime_gds/common/testing_fw/UnitTestDictionary.xml +0 -0
  307. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/test/fprime_gds/common/testing_fw/api_unit_test.py +0 -0
  308. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/test/fprime_gds/common/testing_fw/logs/.gitignore +0 -0
  309. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/test/fprime_gds/common/testing_fw/predicate_unit_test.py +0 -0
  310. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/test/fprime_gds/executables/test_run_deployment.py +0 -0
  311. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/test/fprime_gds/executables/test_utils.py +0 -0
  312. {fprime-gds-3.4.3 → fprime_gds-3.4.4a2}/test/gui/GUI_Test_Procedure.md +0 -0
@@ -1,3 +1,5 @@
1
+ pyproject.toml
2
+ setup.py
1
3
  ignore$
2
4
  /html/
3
5
  (?:^|/)(?i)COPYRIGHT
@@ -5,6 +7,8 @@ ignore$
5
7
  (?:^|/)vendor/
6
8
  ^\.github/
7
9
  ^Autocoders/Python/test/.*\.xml$
10
+ RefTopologyDictionary.json
11
+ dictionary.xml
8
12
  /doc/xml/
9
13
  /third-party/
10
14
  /third/
@@ -43,5 +47,3 @@ ignore$
43
47
  \.xlsx$
44
48
  \.xsd$
45
49
  \.ico$
46
- pyproject.toml
47
- setup.py
@@ -47,10 +47,12 @@ backport
47
47
  basestring
48
48
  batchmode
49
49
  baudrate
50
+ bcolors
50
51
  beforeunload
51
52
  BGR
52
53
  Biberstein
53
54
  bibtex
55
+ binascii
54
56
  bitmaps
55
57
  blockquote
56
58
  bmp
@@ -67,8 +69,9 @@ cata
67
69
  cbl
68
70
  CCB
69
71
  CCFF
70
- cdn
71
72
  Cdioux
73
+ cdn
74
+ cdxoefg
72
75
  CFDG
73
76
  CFDP
74
77
  CFPD
@@ -76,6 +79,7 @@ cgi
76
79
  Chainable
77
80
  chartjs
78
81
  checkbox
82
+ CHNG
79
83
  chrono
80
84
  classdocs
81
85
  classmethod
@@ -85,6 +89,7 @@ cls
85
89
  CMake
86
90
  cmdhist
87
91
  cmds
92
+ cmp
88
93
  CODEFILE
89
94
  Codemirror
90
95
  colorized
@@ -95,8 +100,8 @@ combuffer
95
100
  commandsi
96
101
  concat
97
102
  config
98
- configs
99
103
  configparser
104
+ configs
100
105
  Consolas
101
106
  cpp
102
107
  CPython
@@ -128,9 +133,12 @@ deframed
128
133
  deframer
129
134
  deframing
130
135
  DEPRECATEDLIST
136
+ DESER
137
+ Deserial
131
138
  deserialization
132
139
  deserialize
133
140
  deserialized
141
+ deserializes
134
142
  deserializing
135
143
  dest
136
144
  dexc
@@ -166,10 +174,14 @@ doxyrules
166
174
  doxysearch
167
175
  Doxywizard
168
176
  doy
177
+ dpi
178
+ dps
179
+ dpspec
169
180
  dropdown
170
181
  dropleft
171
182
  dropright
172
183
  dropup
184
+ Drv
173
185
  Dsh
174
186
  dst
175
187
  dts
@@ -183,6 +195,7 @@ EINPROGRESS
183
195
  elif
184
196
  Emoji
185
197
  encodable
198
+ ENDC
186
199
  endcond
187
200
  endian
188
201
  endif
@@ -191,6 +204,7 @@ endtime
191
204
  enqueuing
192
205
  entrypoint
193
206
  enum
207
+ Enumtype
194
208
  envvar
195
209
  errno
196
210
  errored
@@ -216,9 +230,12 @@ FFCC
216
230
  FFFF
217
231
  fieldset
218
232
  figcaption
233
+ figsize
234
+ filecmp
219
235
  filemode
220
236
  fileno
221
237
  filepath
238
+ filesize
222
239
  fileurl
223
240
  finditer
224
241
  Firefox
@@ -229,6 +246,7 @@ focusring
229
246
  FONTNAME
230
247
  FONTPATH
231
248
  FONTSIZE
249
+ fpp
232
250
  fprime
233
251
  fptable
234
252
  frac
@@ -277,6 +295,9 @@ hidecallergraph
277
295
  hidecallgraph
278
296
  hideinitializer
279
297
  hlp
298
+ HLTH
299
+ Hookimpl
300
+ hookspec
280
301
  hostname
281
302
  hpaulson
282
303
  hpp
@@ -313,6 +334,7 @@ ints
313
334
  ip
314
335
  ipc
315
336
  ipp
337
+ isabstract
316
338
  isalnum
317
339
  isclass
318
340
  isdir
@@ -357,6 +379,7 @@ libc
357
379
  libclang
358
380
  libcrc
359
381
  libiconv
382
+ lineno
360
383
  Linting
361
384
  Linux
362
385
  listbox
@@ -381,6 +404,7 @@ MAKEVAR
381
404
  marijnh
382
405
  matchobj
383
406
  mathjax
407
+ matplotlib
384
408
  maxcountryman
385
409
  maxdepth
386
410
  mcternan
@@ -409,6 +433,7 @@ myproject
409
433
  namespace
410
434
  nargs
411
435
  navbar
436
+ nbytes
412
437
  Neue
413
438
  newname
414
439
  Nify
@@ -417,6 +442,7 @@ nitpicky
417
442
  noapp
418
443
  noqa
419
444
  normpath
445
+ NOSONAR
420
446
  nosort
421
447
  Noto
422
448
  novalidate
@@ -430,6 +456,8 @@ odl
430
456
  odo
431
457
  oga
432
458
  ogg
459
+ OKBLUE
460
+ OKGREEN
433
461
  OMG
434
462
  onabort
435
463
  onerror
@@ -462,10 +490,12 @@ php
462
490
  phtml
463
491
  pid
464
492
  pkgutil
493
+ pkts
465
494
  Pkts
466
495
  plainnat
467
496
  plantuml
468
497
  plist
498
+ plt
469
499
  plugin
470
500
  png
471
501
  PNGs
@@ -473,6 +503,7 @@ popen
473
503
  posixpath
474
504
  PREDEF
475
505
  preds
506
+ prm
476
507
  procs
477
508
  PROGRAMLISTING
478
509
  progressbar
@@ -487,8 +518,10 @@ ptr
487
518
  px
488
519
  py
489
520
  pyc
521
+ pydantic
490
522
  pylint
491
523
  pypi
524
+ pyplot
492
525
  pyserial
493
526
  pytest
494
527
  PYTHONHOME
@@ -509,6 +542,7 @@ RCE
509
542
  RCVHWM
510
543
  RCVTIMEO
511
544
  RDWR
545
+ Readback
512
546
  readlines
513
547
  README
514
548
  readonly
@@ -541,6 +575,7 @@ rst
541
575
  rtd
542
576
  rtf
543
577
  saba
578
+ savefig
544
579
  scm
545
580
  scrollable
546
581
  scrollbar
@@ -656,8 +691,8 @@ ttl
656
691
  tts
657
692
  twbs
658
693
  txz
659
- typedef'ed
660
694
  typedef
695
+ typedef'ed
661
696
  typehints
662
697
  typeof
663
698
  tzinfo
@@ -673,6 +708,7 @@ UML
673
708
  undef
674
709
  undoc
675
710
  unicode
711
+ UNINIT
676
712
  unittest
677
713
  unpause
678
714
  updown
@@ -682,7 +718,6 @@ uplinkvue
682
718
  uploader
683
719
  upto
684
720
  uri
685
- URI
686
721
  url
687
722
  usec
688
723
  useconds
@@ -714,6 +749,7 @@ vname
714
749
  VRuntime
715
750
  vue
716
751
  vw
752
+ Watney
717
753
  wav
718
754
  webbrowser
719
755
  webified
@@ -737,14 +773,15 @@ xcode
737
773
  xhtml
738
774
  xhttp
739
775
  xl
776
+ xlabel
740
777
  xls
741
778
  xlsx
779
+ xmit
742
780
  xml
743
781
  xy
744
782
  yaml
783
+ ylabel
745
784
  yml
746
785
  zeromq
747
786
  zlib
748
787
  zmq
749
- ZMQ
750
- Zmq
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fprime-gds
3
- Version: 3.4.3
3
+ Version: 3.4.4a2
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:
@@ -239,6 +239,7 @@ Requires-Dist: argcomplete>=1.12.3
239
239
  Requires-Dist: Jinja2>=2.11.3
240
240
  Requires-Dist: openpyxl>=3.0.10
241
241
  Requires-Dist: pyserial>=3.5
242
+ Requires-Dist: pydantic>=2.6
242
243
 
243
244
  # F´ GDS
244
245
 
@@ -267,7 +268,7 @@ output data type included. Command data objects are created in the command panel
267
268
  the command encoder registered to that panel. Encoders take a data object and turn it into binary
268
269
  data that can be sent to the F´ deployment. The binary data is then passed to the TCP client
269
270
  which is registered to the encoder. Finally, the TCP client send the data back to the TCP server and
270
- the F´ deployment. ![The layout of the GDS](https://github.com/nasa/fprime/blob/master/docs/UsersGuide/media/gds_layout.jpg)
271
+ the F´ deployment. ![The layout of the GDS](https://github.com/nasa/fprime/blob/devel/docs/UsersGuide/media/gds_layout.jpg)
271
272
 
272
273
  All of these objects are created and registered to other objects when the GDS
273
274
  is initialized. Thus, all of the structure of the GDS is created in one place,
@@ -25,7 +25,7 @@ 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. ![The layout of the GDS](https://github.com/nasa/fprime/blob/master/docs/UsersGuide/media/gds_layout.jpg)
28
+ the F´ deployment. ![The layout of the GDS](https://github.com/nasa/fprime/blob/devel/docs/UsersGuide/media/gds_layout.jpg)
29
29
 
30
30
  All of these objects are created and registered to other objects when the GDS
31
31
  is initialized. Thus, all of the structure of the GDS is created in one place,
@@ -42,6 +42,7 @@ dependencies = [
42
42
  "Jinja2>=2.11.3",
43
43
  "openpyxl>=3.0.10",
44
44
  "pyserial>=3.5",
45
+ "pydantic>=2.6"
45
46
  ]
46
47
 
47
48
  [project.urls]
@@ -58,8 +59,7 @@ Repository = "https://github.com/fprime-community/fprime-gds"
58
59
  [project.scripts]
59
60
  fprime-cli = "fprime_gds.executables.fprime_cli:main"
60
61
  fprime-seqgen = "fprime_gds.common.tools.seqgen:main"
61
-
62
- [project.gui-scripts]
62
+ fprime-dp-write = "fprime_gds.executables.data_product_writer:main"
63
63
  fprime-gds = "fprime_gds.executables.run_deployment:main"
64
64
 
65
65
  # For Pytest fixtures
@@ -85,3 +85,7 @@ fprime_test_api = "fprime_gds.common.testing_fw.pytest_integration"
85
85
  # - https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html
86
86
  # - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html#src-layout
87
87
  ####
88
+ [tool.pytest.ini_options]
89
+ markers =[
90
+ "gds_cli"
91
+ ]
@@ -0,0 +1,89 @@
1
+ """
2
+ base.py:
3
+
4
+ This file specifies the base-adapter for the F prime comm-layer. This class defines the basic methods needed to interact
5
+ with various wire formats as they are supported by the F prime comm-layer. This file defines a single abstract base
6
+ class representing the core features of the adapter class that must be implemented by every implementation of the
7
+ adapter for use with the comm-layer.
8
+
9
+ @author lestarch
10
+ """
11
+ import abc
12
+ from typing import Type
13
+ from fprime_gds.plugin.definitions import gds_plugin_implementation, gds_plugin_specification
14
+
15
+
16
+ class BaseAdapter(abc.ABC):
17
+ """
18
+ Base adapter for adapting the communications layer. This essentially breaks down to providing the ability to read
19
+ data from, and write to the necessary wire-format. The children of this class must at least implement the 'read' and
20
+ 'write' functions to ensure that data can be read and written. 'open' and 'close' are also provided as a helper to
21
+ the subclass implementer to place resource initialization and release code, however; these implementations are
22
+ defaulted not overridden.
23
+ """
24
+
25
+ def open(self):
26
+ """Null default implementation"""
27
+
28
+ def close(self):
29
+ """Null default implementation"""
30
+
31
+ @abc.abstractmethod
32
+ def read(self, timeout=0.500):
33
+ """
34
+ Read from the interface. Must be overridden by the child adapter. Throw no fatal errors, reconnect instead. This
35
+ call is expected to block waiting on incoming data.
36
+
37
+ :param size: maximum size of data to read before breaking
38
+ :param timeout: timeout for the block, default: 0.500 (500ms) as blocking w/o timeout may be uninterruptible
39
+ :return: byte array of data, or b'' if no data was read
40
+ """
41
+
42
+ @abc.abstractmethod
43
+ def write(self, frame):
44
+ """
45
+ Write to the interface. Must be overridden by the child adapter. Throw no fatal errors, reconnect instead.
46
+
47
+ :param frame: framed data to uplink
48
+ :return: True if data sent through adapter, False otherwise
49
+ """
50
+
51
+ @classmethod
52
+ @gds_plugin_specification
53
+ def register_communication_plugin(cls) -> Type["BaseAdapter"]:
54
+ """Register a communications adapter
55
+
56
+ Plugin hook for registering a plugin that supplies an adapter to the communications interface (radio, uart, i2c,
57
+ etc). This interface is expected to read and write bytes from a wire and will be provided to the framing system.
58
+
59
+ Note: users should return the class, not an instance of the class. Needed arguments for instantiation are
60
+ determined from class methods, solicited via the command line, and provided at construction time to the chosen
61
+ instantiation.
62
+
63
+ Returns:
64
+ BaseAdapter subclass
65
+ """
66
+ raise NotImplementedError()
67
+
68
+
69
+ class NoneAdapter(BaseAdapter):
70
+ """ None adapter used to turn off the comm script """
71
+
72
+ @classmethod
73
+ def get_name(cls):
74
+ """ Get name of the non-adapter """
75
+ return "none"
76
+
77
+ def read(self, timeout=0.500):
78
+ """ Raise exception if this is called"""
79
+ raise NotImplementedError()
80
+
81
+ def write(self, frame):
82
+ """ Raise exception if this is called"""
83
+ raise NotImplementedError()
84
+
85
+ @classmethod
86
+ @gds_plugin_implementation
87
+ def register_communication_plugin(cls):
88
+ """ Register this as a plugin """
89
+ return cls
@@ -18,6 +18,8 @@ import time
18
18
  import fprime_gds.common.communication.adapters.base
19
19
  import fprime_gds.common.logger
20
20
 
21
+ from fprime_gds.plugin.definitions import gds_plugin_implementation
22
+
21
23
  LOGGER = logging.getLogger("ip_adapter")
22
24
 
23
25
 
@@ -114,7 +116,7 @@ class IpAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
114
116
 
115
117
  def write(self, frame):
116
118
  """
117
- Send a given framed bit of data by sending it out the serial interface. It will attempt to reconnect if there is
119
+ Send a given framed bit of data by sending it out the serial interface. It will attempt to reconnect if there
118
120
  was a problem previously. This function will return true on success, or false on error.
119
121
 
120
122
  :param frame: framed data packet to send out
@@ -151,6 +153,11 @@ class IpAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
151
153
  self.write(IpAdapter.KEEPALIVE_DATA)
152
154
  time.sleep(interval)
153
155
 
156
+ @classmethod
157
+ def get_name(cls):
158
+ """ Get the name of this adapter """
159
+ return "ip"
160
+
154
161
  @classmethod
155
162
  def get_arguments(cls):
156
163
  """
@@ -163,13 +170,13 @@ class IpAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
163
170
  "dest": "address",
164
171
  "type": str,
165
172
  "default": "0.0.0.0",
166
- "help": "Address of the IP adapter server. Default: %(default)s",
173
+ "help": "Address of the IP adapter server.",
167
174
  },
168
175
  ("--ip-port",): {
169
176
  "dest": "port",
170
177
  "type": int,
171
178
  "default": 50000,
172
- "help": "Port of the IP adapter server. Default: %(default)s",
179
+ "help": "Port of the IP adapter server.",
173
180
  },
174
181
  ("--ip-client",): {
175
182
  # dest is "server" since it is handled in BaseAdapter.construct_adapter and passed with the same
@@ -182,14 +189,25 @@ class IpAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
182
189
  }
183
190
 
184
191
  @classmethod
185
- def check_arguments(cls, args):
192
+ @gds_plugin_implementation
193
+ def register_communication_plugin(cls):
194
+ """ Register this as a communication plugin """
195
+ return cls
196
+
197
+ @classmethod
198
+ def check_arguments(cls, address, port, server=True):
186
199
  """
187
200
  Code that should check arguments of this adapter. If there is a problem with this code, then a "ValueError"
188
201
  should be raised describing the problem with these arguments.
189
202
 
190
203
  :param args: arguments as dictionary
191
204
  """
192
- check_port(args["address"], args["port"])
205
+ try:
206
+ if server:
207
+ check_port(address, port)
208
+ except OSError as os_error:
209
+ raise ValueError(f"{os_error}")
210
+
193
211
 
194
212
 
195
213
  class IpHandler(abc.ABC):
@@ -15,6 +15,8 @@ from serial.tools import list_ports
15
15
 
16
16
  import fprime_gds.common.communication.adapters.base
17
17
 
18
+ from fprime_gds.plugin.definitions import gds_plugin_implementation
19
+
18
20
  LOGGER = logging.getLogger("serial_adapter")
19
21
 
20
22
 
@@ -151,18 +153,29 @@ class SerialAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
151
153
  "dest": "device",
152
154
  "type": str,
153
155
  "default": default,
154
- "help": "UART device representing the FSW. Default: %(default)s",
156
+ "help": "UART device representing the FSW.",
155
157
  },
156
158
  ("--uart-baud",): {
157
159
  "dest": "baud",
158
160
  "type": int,
159
161
  "default": 9600,
160
- "help": "Baud rate of the serial device. Default: %(default)s",
162
+ "help": "Baud rate of the serial device.",
161
163
  },
162
164
  }
163
165
 
164
166
  @classmethod
165
- def check_arguments(cls, args):
167
+ def get_name(cls):
168
+ """ Get name of the adapter """
169
+ return "uart"
170
+
171
+ @classmethod
172
+ @gds_plugin_implementation
173
+ def register_communication_plugin(cls):
174
+ """ Register this as a communication plugin """
175
+ return cls
176
+
177
+ @classmethod
178
+ def check_arguments(cls, device, baud):
166
179
  """
167
180
  Code that should check arguments of this adapter. If there is a problem with this code, then a "ValueError"
168
181
  should be raised describing the problem with these arguments.
@@ -170,16 +183,16 @@ class SerialAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
170
183
  :param args: arguments as dictionary
171
184
  """
172
185
  ports = map(lambda info: info.device, list_ports.comports(include_links=True))
173
- if args["device"] not in ports:
174
- msg = f"Serial port '{args['device']}' not valid. Available ports: {ports}"
186
+ if device not in ports:
187
+ msg = f"Serial port '{device}' not valid. Available ports: {ports}"
175
188
  raise ValueError(
176
189
  msg
177
190
  )
178
191
  # Note: baud rate may not *always* work. These are a superset
179
192
  try:
180
- baud = int(args["baud"])
193
+ baud = int(baud)
181
194
  except ValueError:
182
- msg = f"Serial baud rate '{args['baud']}' not integer. Use one of: {SerialAdapter.BAUDS}"
195
+ msg = f"Serial baud rate '{baud}' not integer. Use one of: {SerialAdapter.BAUDS}"
183
196
  raise ValueError(
184
197
  msg
185
198
  )
@@ -11,7 +11,6 @@ def crc_calculation(data: bytes):
11
11
  return zlib.crc32(data) & 0xFFFFFFFF
12
12
 
13
13
 
14
- CHECKSUM_SELECTION = "crc32"
15
14
  CHECKSUM_MAPPING = {
16
15
  "fixed": lambda data: 0xCAFECAFE,
17
16
  "crc32": crc_calculation,
@@ -19,8 +18,7 @@ CHECKSUM_MAPPING = {
19
18
  }
20
19
 
21
20
 
22
- def calculate_checksum(data: bytes):
21
+ def calculate_checksum(data: bytes, selected_checksum: str):
23
22
  """Calculates the checksum of bytes"""
24
- selected_checksum = CHECKSUM_SELECTION
25
23
  hash_fn = CHECKSUM_MAPPING.get(selected_checksum, CHECKSUM_MAPPING.get("default"))
26
24
  return hash_fn(data)
@@ -15,8 +15,10 @@ import abc
15
15
  import copy
16
16
  import struct
17
17
  import sys
18
+ from typing import Type
18
19
 
19
- from .checksum import calculate_checksum
20
+ from .checksum import calculate_checksum, CHECKSUM_MAPPING
21
+ from fprime_gds.plugin.definitions import gds_plugin_implementation, gds_plugin_specification
20
22
 
21
23
 
22
24
  class FramerDeframer(abc.ABC):
@@ -70,6 +72,24 @@ class FramerDeframer(abc.ABC):
70
72
  return packets, data, discarded_aggregate
71
73
  packets.append(packet)
72
74
 
75
+ @classmethod
76
+ @gds_plugin_specification
77
+ def register_framing_plugin(cls) -> Type["FramerDeframer"]:
78
+ """Register a plugin to provide framing capabilities
79
+
80
+ Plugin hook for registering a plugin that supplies a FramerDeframer implementation. Implementors of this hook must
81
+ return a non-abstract subclass of FramerDeframer. This class will be provided as a framing implementation option
82
+ that users may select via command line arguments.
83
+
84
+ Note: users should return the class, not an instance of the class. Needed arguments for instantiation are
85
+ determined from class methods, solicited via the command line, and provided at construction time to the chosen
86
+ instantiation.
87
+
88
+ Returns:
89
+ FramerDeframer subclass
90
+ """
91
+ raise NotImplementedError()
92
+
73
93
 
74
94
  class FpFramerDeframer(FramerDeframer):
75
95
  """
@@ -97,10 +117,11 @@ class FpFramerDeframer(FramerDeframer):
97
117
  HEADER_FORMAT = None
98
118
  START_TOKEN = None
99
119
 
100
- def __init__(self):
120
+ def __init__(self, checksum_type):
101
121
  """Sets constants on construction."""
102
122
  # Setup the constants as soon as possible.
103
123
  FpFramerDeframer.set_constants()
124
+ self.checksum = checksum_type
104
125
 
105
126
  @classmethod
106
127
  def set_constants(cls):
@@ -134,7 +155,7 @@ class FpFramerDeframer(FramerDeframer):
134
155
  FpFramerDeframer.HEADER_FORMAT, FpFramerDeframer.START_TOKEN, len(data)
135
156
  )
136
157
  framed += data
137
- framed += struct.pack(">I", calculate_checksum(framed))
158
+ framed += struct.pack(">I", calculate_checksum(framed, self.checksum))
138
159
  return framed
139
160
 
140
161
  def deframe(self, data, no_copy=False):
@@ -176,7 +197,8 @@ class FpFramerDeframer(FramerDeframer):
176
197
  )
177
198
  # If the checksum is valid, return the packet. Otherwise continue to rotate
178
199
  if check == calculate_checksum(
179
- data[: data_size + FpFramerDeframer.HEADER_SIZE]
200
+ data[: data_size + FpFramerDeframer.HEADER_SIZE],
201
+ self.checksum
180
202
  ):
181
203
  data = data[total_size:]
182
204
  return deframed, data, discarded
@@ -192,6 +214,33 @@ class FpFramerDeframer(FramerDeframer):
192
214
  return None, data, discarded
193
215
  return None, data, discarded
194
216
 
217
+ @classmethod
218
+ def get_name(cls):
219
+ """ Get the name of this plugin """
220
+ return "fprime"
221
+
222
+ @classmethod
223
+ def get_arguments(cls):
224
+ """ Get arguments for the framer/deframer """
225
+ return {("--comm-checksum-type",): {
226
+ "dest": "checksum_type",
227
+ "action": "store",
228
+ "type": str,
229
+ "help": "Setup the checksum algorithm. [default: %(default)s]",
230
+ "choices": [
231
+ item
232
+ for item in CHECKSUM_MAPPING.keys()
233
+ if item != "default"
234
+ ],
235
+ "default": "crc32",
236
+ }}
237
+
238
+ @classmethod
239
+ @gds_plugin_implementation
240
+ def register_framing_plugin(cls):
241
+ """ Register a bad plugin """
242
+ return cls
243
+
195
244
 
196
245
  class TcpServerFramerDeframer(FramerDeframer):
197
246
  """
@@ -44,7 +44,12 @@ class EventData(sys_data.SysData):
44
44
  self.display_text = event_temp.description
45
45
  elif event_temp.format_str == "":
46
46
  args_template = self.template.get_args()
47
- self.display_text = str([{args_template[index][0]:arg.val} for index, arg in enumerate(event_args)])
47
+ self.display_text = str(
48
+ [
49
+ {args_template[index][0]: arg.val}
50
+ for index, arg in enumerate(event_args)
51
+ ]
52
+ )
48
53
  else:
49
54
  self.display_text = format_string_template(
50
55
  event_temp.format_str, tuple([arg.val for arg in event_args])