fprime-gds 4.0.0a9__tar.gz → 4.0.0a10__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 (332) hide show
  1. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/PKG-INFO +1 -1
  2. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/executables/data_product_writer.py +66 -30
  3. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds.egg-info/PKG-INFO +1 -1
  4. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  5. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/.github/actions/codeql/security-pack.yml +0 -0
  6. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/.github/actions/spelling/excludes.txt +0 -0
  7. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/.github/actions/spelling/expect.txt +0 -0
  8. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/.github/actions/spelling/patterns.txt +0 -0
  9. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/.github/pull_request_template.md +0 -0
  10. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/.github/resources/RefTopologyAppDictionary.xml +0 -0
  11. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/.github/workflows/codeql-security-scan.yml +0 -0
  12. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/.github/workflows/fprime-gds-tests.yml +0 -0
  13. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/.github/workflows/gds-cli-tests.yml +0 -0
  14. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/.github/workflows/publish.yml +0 -0
  15. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/.github/workflows/spelling.yml +0 -0
  16. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/.gitignore +0 -0
  17. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/Doxyfile +0 -0
  18. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/LICENSE.txt +0 -0
  19. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/NOTICE.txt +0 -0
  20. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/README.md +0 -0
  21. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/configs/__init__.py +0 -0
  22. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/docs/README.md +0 -0
  23. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/docs/_static/css/rtd_width.css +0 -0
  24. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/docs/conf.py +0 -0
  25. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/docs/gendoc.bash +0 -0
  26. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/docs/index.rst +0 -0
  27. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/examples/simple_sequence.bin +0 -0
  28. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/examples/simple_sequence.seq +0 -0
  29. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/pyproject.toml +0 -0
  30. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/setup.cfg +0 -0
  31. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/setup.py +0 -0
  32. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fastentrypoints.py +0 -0
  33. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/__init__.py +0 -0
  34. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/__init__.py +0 -0
  35. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/communication/__init__.py +0 -0
  36. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/communication/adapters/__init__.py +0 -0
  37. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/communication/adapters/base.py +0 -0
  38. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/communication/adapters/ip.py +0 -0
  39. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/communication/adapters/uart.py +0 -0
  40. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/communication/ccsds/__init__.py +0 -0
  41. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/communication/ccsds/apid.py +0 -0
  42. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/communication/ccsds/chain.py +0 -0
  43. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/communication/ccsds/space_data_link.py +0 -0
  44. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/communication/ccsds/space_packet.py +0 -0
  45. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/communication/checksum.py +0 -0
  46. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/communication/framing.py +0 -0
  47. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/communication/ground.py +0 -0
  48. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/communication/updown.py +0 -0
  49. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/controllers/__init__.py +0 -0
  50. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/data_types/__init__.py +0 -0
  51. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/data_types/ch_data.py +0 -0
  52. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/data_types/cmd_data.py +0 -0
  53. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/data_types/event_data.py +0 -0
  54. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/data_types/exceptions.py +0 -0
  55. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/data_types/file_data.py +0 -0
  56. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/data_types/pkt_data.py +0 -0
  57. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/data_types/sys_data.py +0 -0
  58. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/decoders/__init__.py +0 -0
  59. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/decoders/ch_decoder.py +0 -0
  60. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/decoders/decoder.py +0 -0
  61. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/decoders/event_decoder.py +0 -0
  62. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/decoders/file_decoder.py +0 -0
  63. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/decoders/pkt_decoder.py +0 -0
  64. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/distributor/__init__.py +0 -0
  65. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/distributor/distributor.py +0 -0
  66. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/encoders/__init__.py +0 -0
  67. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/encoders/ch_encoder.py +0 -0
  68. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/encoders/cmd_encoder.py +0 -0
  69. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/encoders/encoder.py +0 -0
  70. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/encoders/event_encoder.py +0 -0
  71. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/encoders/file_encoder.py +0 -0
  72. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/encoders/pkt_encoder.py +0 -0
  73. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/encoders/seq_writer.py +0 -0
  74. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/files/File Decoder Documentation.txt +0 -0
  75. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/files/__init__.py +0 -0
  76. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/files/downlinker.py +0 -0
  77. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/files/helpers.py +0 -0
  78. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/files/uplinker.py +0 -0
  79. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/fpy/README.md +0 -0
  80. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/fpy/SPEC.md +0 -0
  81. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/fpy/__init__.py +0 -0
  82. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/fpy/bytecode/__init__.py +0 -0
  83. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/fpy/bytecode/directives.py +0 -0
  84. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/fpy/codegen.py +0 -0
  85. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/fpy/grammar.lark +0 -0
  86. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/fpy/main.py +0 -0
  87. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/fpy/parser.py +0 -0
  88. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/gds_cli/__init__.py +0 -0
  89. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/gds_cli/base_commands.py +0 -0
  90. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/gds_cli/channels.py +0 -0
  91. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/gds_cli/command_send.py +0 -0
  92. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/gds_cli/events.py +0 -0
  93. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/gds_cli/filtering_utils.py +0 -0
  94. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/gds_cli/test_api_utils.py +0 -0
  95. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/handlers.py +0 -0
  96. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/history/__init__.py +0 -0
  97. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/history/chrono.py +0 -0
  98. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/history/history.py +0 -0
  99. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/history/ram.py +0 -0
  100. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/history/test.py +0 -0
  101. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/loaders/__init__.py +0 -0
  102. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/loaders/ch_json_loader.py +0 -0
  103. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/loaders/ch_xml_loader.py +0 -0
  104. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/loaders/cmd_json_loader.py +0 -0
  105. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/loaders/cmd_xml_loader.py +0 -0
  106. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/loaders/dict_loader.py +0 -0
  107. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/loaders/event_json_loader.py +0 -0
  108. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/loaders/event_xml_loader.py +0 -0
  109. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/loaders/fw_type_json_loader.py +0 -0
  110. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/loaders/json_loader.py +0 -0
  111. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/loaders/pkt_json_loader.py +0 -0
  112. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/loaders/pkt_xml_loader.py +0 -0
  113. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/loaders/prm_json_loader.py +0 -0
  114. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/loaders/xml_loader.py +0 -0
  115. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/logger/__init__.py +0 -0
  116. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/logger/data_logger.py +0 -0
  117. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/logger/test_logger.py +0 -0
  118. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/models/__init__.py +0 -0
  119. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/models/common/__init__.py +0 -0
  120. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/models/common/channel_telemetry.py +0 -0
  121. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/models/common/command.py +0 -0
  122. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/models/common/event.py +0 -0
  123. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/parsers/__init__.py +0 -0
  124. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/parsers/seq_file_parser.py +0 -0
  125. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/pipeline/__init__.py +0 -0
  126. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/pipeline/dictionaries.py +0 -0
  127. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/pipeline/encoding.py +0 -0
  128. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/pipeline/files.py +0 -0
  129. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/pipeline/histories.py +0 -0
  130. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/pipeline/router.py +0 -0
  131. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/pipeline/standard.py +0 -0
  132. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/templates/__init__.py +0 -0
  133. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/templates/ch_template.py +0 -0
  134. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/templates/cmd_template.py +0 -0
  135. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/templates/data_template.py +0 -0
  136. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/templates/event_template.py +0 -0
  137. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/templates/pkt_template.py +0 -0
  138. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/templates/prm_template.py +0 -0
  139. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/testing_fw/__init__.py +0 -0
  140. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/testing_fw/api.py +0 -0
  141. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/testing_fw/predicates.py +0 -0
  142. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/testing_fw/pytest_integration.py +0 -0
  143. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/tools/README.md +0 -0
  144. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/tools/__init__.py +0 -0
  145. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/tools/params.py +0 -0
  146. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/tools/seqgen.py +0 -0
  147. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/transport.py +0 -0
  148. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/utils/__init__.py +0 -0
  149. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/utils/config_manager.py +0 -0
  150. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/utils/data_desc_type.py +0 -0
  151. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/utils/event_severity.py +0 -0
  152. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/utils/string_util.py +0 -0
  153. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/common/zmq_transport.py +0 -0
  154. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/executables/__init__.py +0 -0
  155. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/executables/apps.py +0 -0
  156. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/executables/cli.py +0 -0
  157. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/executables/comm.py +0 -0
  158. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/executables/fprime_cli.py +0 -0
  159. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/executables/run_deployment.py +0 -0
  160. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/executables/tcpserver.py +0 -0
  161. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/executables/utils.py +0 -0
  162. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/__init__.py +0 -0
  163. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/app.py +0 -0
  164. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/channels.py +0 -0
  165. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/commands.py +0 -0
  166. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/components.py +0 -0
  167. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/default_settings.py +0 -0
  168. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/errors.py +0 -0
  169. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/events.py +0 -0
  170. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/json.py +0 -0
  171. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/logs.py +0 -0
  172. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/requirements.txt +0 -0
  173. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/resource.py +0 -0
  174. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/sequence.py +0 -0
  175. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/.idea/.gitignore +0 -0
  176. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/.idea/misc.xml +0 -0
  177. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/.idea/modules.xml +0 -0
  178. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/.idea/static.iml +0 -0
  179. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/.idea/vcs.xml +0 -0
  180. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/advanced-settings/addon-templates.js +0 -0
  181. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/advanced-settings/addon.js +0 -0
  182. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/channel-render/addon.js +0 -0
  183. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/channel-render/channel-render-template.js +0 -0
  184. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/channel-render/channel-render.js +0 -0
  185. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/chart-display/addon-templates.js +0 -0
  186. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/chart-display/addon.js +0 -0
  187. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/chart-display/config.js +0 -0
  188. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/chartjs-plugin-streaming.js +0 -0
  189. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/chartjs-plugin-zoom.js +0 -0
  190. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/flat.js +0 -0
  191. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/chart-display/sibling.js +0 -0
  192. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/chart-display/vendor/chart.js +0 -0
  193. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/chart-display/vendor/chartjs-adapter-luxon.min.js +0 -0
  194. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/chart-display/vendor/hammer.min.js +0 -0
  195. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/commanding/addon.js +0 -0
  196. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/commanding/argument-templates.js +0 -0
  197. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/commanding/arguments.js +0 -0
  198. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/commanding/command-history-template.js +0 -0
  199. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/commanding/command-history.js +0 -0
  200. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/commanding/command-input-template.js +0 -0
  201. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/commanding/command-input.js +0 -0
  202. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/commanding/command-string-template.js +0 -0
  203. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/commanding/command-string.js +0 -0
  204. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/dictionary/addon-templates.js +0 -0
  205. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/dictionary/addon.js +0 -0
  206. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/enabled.js +0 -0
  207. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/image-display/addon.js +0 -0
  208. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/image-display/dashboard.xml +0 -0
  209. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/sequencer/README.md +0 -0
  210. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/sequencer/addon-templates.js +0 -0
  211. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/sequencer/addon.js +0 -0
  212. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/sequencer/autocomplete.js +0 -0
  213. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/sequencer/lint.js +0 -0
  214. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/sequencer/third/code-mirror.es.js +0 -0
  215. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/.gitignore +0 -0
  216. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/index.js +0 -0
  217. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/language.grammer +0 -0
  218. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/package.json +0 -0
  219. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/rollup.config.js +0 -0
  220. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/css/fprime.css +0 -0
  221. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/css/fpstyle.css +0 -0
  222. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/favicon.ico +0 -0
  223. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/img/error.svg +0 -0
  224. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/img/logo.svg +0 -0
  225. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/img/success.svg +0 -0
  226. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/index.html +0 -0
  227. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/config.js +0 -0
  228. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/datastore.js +0 -0
  229. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/gds.js +0 -0
  230. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/json.js +0 -0
  231. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/loader.js +0 -0
  232. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/performance.js +0 -0
  233. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/settings.js +0 -0
  234. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/uploader.js +0 -0
  235. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/validate.js +0 -0
  236. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/vue-support/channel.js +0 -0
  237. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/vue-support/dashboard-box.js +0 -0
  238. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/vue-support/dashboard-row.js +0 -0
  239. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/vue-support/dashboard.js +0 -0
  240. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/vue-support/downlink.js +0 -0
  241. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/vue-support/event.js +0 -0
  242. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/vue-support/fp-row.js +0 -0
  243. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/vue-support/fptable.js +0 -0
  244. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/vue-support/log.js +0 -0
  245. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/vue-support/tabetc.js +0 -0
  246. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/vue-support/uplink.js +0 -0
  247. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/js/vue-support/utils.js +0 -0
  248. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/css/all.min.css +0 -0
  249. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/css/bootstrap.min.css +0 -0
  250. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/css/vue-select.css +0 -0
  251. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/js/luxon.min.js +0 -0
  252. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/js/sorttable.js +0 -0
  253. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/js/v-runtime-template.js +0 -0
  254. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/js/vue-select.js +0 -0
  255. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/js/vue.min.js +0 -0
  256. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.eot +0 -0
  257. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.svg +0 -0
  258. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.ttf +0 -0
  259. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.woff +0 -0
  260. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.woff2 +0 -0
  261. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.eot +0 -0
  262. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.svg +0 -0
  263. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.ttf +0 -0
  264. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.woff +0 -0
  265. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.woff2 +0 -0
  266. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.eot +0 -0
  267. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.svg +0 -0
  268. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.ttf +0 -0
  269. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff +0 -0
  270. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff2 +0 -0
  271. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/stats.py +0 -0
  272. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/flask/updown.py +0 -0
  273. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/plugin/__init__.py +0 -0
  274. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/plugin/definitions.py +0 -0
  275. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/plugin/system.py +0 -0
  276. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds/version.py +0 -0
  277. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds.egg-info/SOURCES.txt +0 -0
  278. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds.egg-info/dependency_links.txt +0 -0
  279. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds.egg-info/entry_points.txt +0 -0
  280. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds.egg-info/requires.txt +0 -0
  281. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/src/fprime_gds.egg-info/top_level.txt +0 -0
  282. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/communication/ccsds/test_space_data_link.py +0 -0
  283. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/communication/ccsds/test_space_packet.py +0 -0
  284. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/data_types/test_cmd_data.py +0 -0
  285. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/distributor/test_distributor.py +0 -0
  286. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/encoders/test_ch_encoder.py +0 -0
  287. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/encoders/test_event_encoder.py +0 -0
  288. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/encoders/test_pkt_encoder.py +0 -0
  289. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/fpy/disabled_test_compiler.py +0 -0
  290. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/gds_cli/filtering_utils_test.py +0 -0
  291. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/gds_cli/utils_test.py +0 -0
  292. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/history/chronohistory_unit_test.py +0 -0
  293. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/history/testhistory_unit_test.py +0 -0
  294. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/loaders/resources/RefTopologyDictionary.json +0 -0
  295. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/loaders/test_json_loader.py +0 -0
  296. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/testing_fw/UnitTestDictionary.xml +0 -0
  297. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/testing_fw/api_unit_test.py +0 -0
  298. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/testing_fw/logs/.gitignore +0 -0
  299. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/testing_fw/predicate_unit_test.py +0 -0
  300. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/tools/expected/simple_expected.bin +0 -0
  301. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/tools/expected/simple_paramdb.dat +0 -0
  302. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/tools/input/simple_bad_paramdb.json +0 -0
  303. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/tools/input/simple_bad_sequence.seq +0 -0
  304. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/tools/input/simple_paramdb.json +0 -0
  305. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/tools/input/simple_sequence.seq +0 -0
  306. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/tools/resources/simple_dictionary.json +0 -0
  307. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/tools/resources/simple_dictionary.xml +0 -0
  308. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/tools/seqgen_unit_test.py +0 -0
  309. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/tools/test_paramdb_gen.py +0 -0
  310. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/common/utils/test_string_util.py +0 -0
  311. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/.gitignore +0 -0
  312. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/dp_writer_data/dictionary.json +0 -0
  313. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/dp_writer_data/makeBool.bin +0 -0
  314. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/dp_writer_data/makeComplex.bin +0 -0
  315. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/dp_writer_data/makeDataArray.bin +0 -0
  316. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/dp_writer_data/makeEnum.bin +0 -0
  317. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/dp_writer_data/makeF32.bin +0 -0
  318. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/dp_writer_data/makeF64.bin +0 -0
  319. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/dp_writer_data/makeFppArray.bin +0 -0
  320. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/dp_writer_data/makeI16.bin +0 -0
  321. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/dp_writer_data/makeI32.bin +0 -0
  322. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/dp_writer_data/makeI64.bin +0 -0
  323. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/dp_writer_data/makeI8.bin +0 -0
  324. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/dp_writer_data/makeU32.bin +0 -0
  325. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/dp_writer_data/makeU32Array.bin +0 -0
  326. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/dp_writer_data/makeU8Array.bin +0 -0
  327. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/test_data_product_writer.py +0 -0
  328. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/test_run_deployment.py +0 -0
  329. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/executables/test_utils.py +0 -0
  330. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/sample/dictionary.xml +0 -0
  331. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/fprime_gds/test_plugins.py +0 -0
  332. {fprime_gds-4.0.0a9 → fprime_gds-4.0.0a10}/test/gui/GUI_Test_Procedure.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fprime-gds
3
- Version: 4.0.0a9
3
+ Version: 4.0.0a10
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:
@@ -194,6 +194,7 @@ class QualifiedType(BaseModel):
194
194
  class StructMember(BaseModel):
195
195
  type: Union[IntegerType, FloatType, BoolType, StringType, QualifiedType]
196
196
  size: int = 1
197
+ index: int
197
198
 
198
199
  class StructType(BaseModel):
199
200
  kind: str
@@ -209,7 +210,7 @@ class StructType(BaseModel):
209
210
  class AliasType(BaseModel):
210
211
  kind: str
211
212
  qualifiedName: str
212
- type: Union[AliasType, StructType, ArrayType, IntegerType, FloatType, QualifiedType, StringType]
213
+ type: Union[AliasType, StructType, ArrayType, IntegerType, BoolType, FloatType, StringType, QualifiedType]
213
214
  underlyingType: Union[StructType, ArrayType, IntegerType, BoolType, FloatType, StringType, QualifiedType]
214
215
 
215
216
  @field_validator('kind')
@@ -222,7 +223,7 @@ class ArrayType(BaseModel):
222
223
  kind: str
223
224
  qualifiedName: str
224
225
  size: int
225
- elementType: Union[AliasType, StructType, ArrayType, IntegerType, FloatType, QualifiedType, StringType]
226
+ elementType: Union[AliasType, StructType, ArrayType, IntegerType, BoolType, FloatType, StringType, QualifiedType]
226
227
 
227
228
  @field_validator('kind')
228
229
  def kind_qualifiedIdentifier(cls, v):
@@ -297,29 +298,33 @@ class DPHeader(BaseModel):
297
298
  @computed_field
298
299
  @property
299
300
  def header(self) -> Dict[str, Union[Type, ArrayType, EnumType]]:
300
- # All types/constants that make up the DP header
301
- header_dict = {
302
- "FwPacketDescriptorType": None,
303
- "FwDpIdType": None,
304
- "FwDpPriorityType" : None,
305
- "Seconds": None,
306
- "USeconds": None,
307
- "FwTimeBaseStoreType": None,
308
- "FwTimeContextStoreType": None,
309
- "Fw.DpCfg.ProcType": None,
310
- "Fw.DpCfg.CONTAINER_USER_DATA_SIZE": None,
311
- "Fw.DpState": None,
312
- "FwSizeStoreType": None
301
+ # Mapping from type/constant names to header field names
302
+ header_field_names = {
303
+ "FwPacketDescriptorType": "PacketDescriptor",
304
+ "FwDpIdType": "Id",
305
+ "FwDpPriorityType" : "Priority",
306
+ "Seconds": "Seconds",
307
+ "USeconds": "USeconds",
308
+ "FwTimeBaseStoreType": "TimeBase",
309
+ "FwTimeContextStoreType": "Context",
310
+ "Fw.DpCfg.ProcType": "ProcTypes",
311
+ "Fw.DpCfg.CONTAINER_USER_DATA_SIZE": "UserData",
312
+ "Fw.DpState": "DpState",
313
+ "FwSizeStoreType": "DataSize"
313
314
  }
314
- for k in header_dict.keys():
315
+ # All types/constants that make up the DP header
316
+ # Key: Values of above header_field_names
317
+ # Values: Initialized to None, populated below based on type names/constants in the JSON dictionary
318
+ header_dict = {v: None for v in header_field_names.values()}
319
+ for k, v in header_field_names.items():
315
320
  # Seconds and USeconds are not in the dictionary, but are both always U32
316
321
  if k == "Seconds" or k == "USeconds":
317
- header_dict[k] = Type(type=IntegerType(name="U32", kind="integer", size=32, signed=False))
322
+ header_dict[v] = Type(type=IntegerType(name="U32", kind="integer", size=32, signed=False))
318
323
  # According to Fw.Dp SDD, Header::UserData is an array of U8 of size Fw::DpCfg::CONTAINER_USER_DATA_SIZE.
319
324
  elif k == "Fw.DpCfg.CONTAINER_USER_DATA_SIZE":
320
325
  for t in self.constants:
321
326
  if t.qualifiedName == k:
322
- header_dict[k] = ArrayType(
327
+ header_dict[v] = ArrayType(
323
328
  kind="array",
324
329
  qualifiedName="UserData",
325
330
  size=t.value,
@@ -329,7 +334,7 @@ class DPHeader(BaseModel):
329
334
  else:
330
335
  for t in self.typeDefinitions:
331
336
  if t.qualifiedName == k:
332
- header_dict[k] = t
337
+ header_dict[v] = t
333
338
  break
334
339
 
335
340
  return header_dict
@@ -337,12 +342,15 @@ class DPHeader(BaseModel):
337
342
  @computed_field
338
343
  @property
339
344
  def dataId(self) -> AliasType:
340
- return self.header.get("FwDpIdType")
345
+ return self.header.get("Id")
341
346
 
342
347
  @computed_field
343
348
  @property
344
349
  def dataSize(self) -> AliasType:
345
- return self.header.get("FwSizeStoreType")
350
+ return self.header.get("DataSize")
351
+
352
+ def get_size_store_bytes(self) -> int:
353
+ return self.header.get("DataSize").underlyingType.size // 8
346
354
 
347
355
  @model_validator(mode='after')
348
356
  def validate_header(self) -> 'DPHeader':
@@ -371,7 +379,8 @@ type_mapping = {
371
379
  'U64': 'Q', # Unsigned 64-bit integer
372
380
  'F32': 'f', # 32-bit float
373
381
  'F64': 'd', # 64-bit float
374
- 'bool': '?' # An 8 bit boolean
382
+ 'bool': '?', # An 8 bit boolean
383
+ 'string': 's'
375
384
  # Add more mappings as needed
376
385
  }
377
386
 
@@ -485,6 +494,7 @@ class DataProductWriter:
485
494
  self.binaryFileName = binaryFileName
486
495
  self.totalBytesRead = 0
487
496
  self.calculatedCRC = 0
497
+ self.headerJSON = None
488
498
 
489
499
 
490
500
  # ----------------------------------------------------------------------------------------------
@@ -520,8 +530,29 @@ class DataProductWriter:
520
530
  except KeyError:
521
531
  raise KeyError(f"Unrecognized JSON Dictionary Type: {intType}")
522
532
  data = struct.unpack(format_str, bytes_read)[0]
533
+ return data
534
+
535
+ def read_and_deserialize_string(self) -> str:
536
+ size_store_type_bytes = self.headerJSON.get_size_store_bytes()
537
+ bytes_read_store = self.binaryFile.read(size_store_type_bytes)
538
+ if len(bytes_read_store) != size_store_type_bytes:
539
+ raise IOError(f"Tried to read {size_store_type_bytes} bytes from the binary file, but failed.")
540
+
541
+ self.totalBytesRead += size_store_type_bytes
542
+
543
+ format_str = f'{BIG_ENDIAN}H'
544
+ string_size_data = struct.unpack(format_str, bytes_read_store)[0]
545
+
546
+ bytes_read = self.binaryFile.read(string_size_data)
547
+ if len(bytes_read) != string_size_data:
548
+ raise IOError(f"Tried to read {string_size_data} bytes from the binary file, but failed.")
523
549
 
550
+ self.calculatedCRC = crc32(bytes_read_store + bytes_read, self.calculatedCRC) & 0xffffffff
551
+ self.totalBytesRead += string_size_data
524
552
 
553
+ format_str = f'{BIG_ENDIAN}{string_size_data}s'
554
+ data = struct.unpack(format_str, bytes_read)[0]
555
+ data = data.decode()
525
556
  return data
526
557
 
527
558
  # -----------------------------------------------------------------------------------------------------------------------
@@ -568,7 +599,7 @@ class DataProductWriter:
568
599
  # AssertionError: If the field_config is not an IntegerType, FloatType, or BoolType.
569
600
  # -----------------------------------------------------------------------------------------------------------------------
570
601
 
571
- def read_field(self, field_config: Union[IntegerType, FloatType, BoolType]) -> Union[int, float, bool]:
602
+ def read_field(self, field_config: Union[IntegerType, FloatType, BoolType, StringType]) -> Union[int, float, bool]:
572
603
 
573
604
  if type(field_config) is IntegerType:
574
605
  sizeBytes = field_config.size // 8
@@ -579,6 +610,9 @@ class DataProductWriter:
579
610
  elif type(field_config) is BoolType:
580
611
  sizeBytes = field_config.size // 8
581
612
 
613
+ elif type(field_config) is StringType:
614
+ return self.read_and_deserialize_string()
615
+
582
616
  else:
583
617
  assert False, "Unsupported typeKind encountered"
584
618
 
@@ -626,6 +660,8 @@ class DataProductWriter:
626
660
  elif isinstance(typeKind, BoolType):
627
661
  parent_dict[field_name] = self.read_field(typeKind)
628
662
 
663
+ elif isinstance(typeKind, StringType):
664
+ parent_dict[field_name] = self.read_field(typeKind)
629
665
 
630
666
  elif isinstance(typeKind, EnumType):
631
667
  value = self.read_field(typeKind.representationType)
@@ -646,7 +682,8 @@ class DataProductWriter:
646
682
 
647
683
  elif isinstance(typeKind, StructType):
648
684
  array_list = []
649
- for key, member in typeKind.members.items():
685
+ sorted_members = dict(sorted(typeKind.members.items(), key=lambda member: member[1].index))
686
+ for key, member in sorted_members.items():
650
687
  for i in range(member.size):
651
688
  element_dict = {}
652
689
  self.get_struct_item(key, member.type, typeList, element_dict)
@@ -830,7 +867,7 @@ class DataProductWriter:
830
867
  header_json["typeDefinitions"] = dict_json["typeDefinitions"]
831
868
  if "constants" in dict_json:
832
869
  header_json["constants"] = dict_json["constants"]
833
- headerJSON = DPHeader(**header_json)
870
+ self.headerJSON = DPHeader(**header_json)
834
871
 
835
872
  except json.JSONDecodeError as e:
836
873
  raise DictionaryError(self.jsonDict, e.lineno)
@@ -840,10 +877,10 @@ class DataProductWriter:
840
877
  with open(self.binaryFileName, 'rb') as self.binaryFile:
841
878
 
842
879
  # Read the header data up until the Records
843
- headerData = self.get_header_info(headerJSON)
880
+ headerData = self.get_header_info(self.headerJSON)
844
881
 
845
882
  # Read the total data size
846
- dataSize = headerData['FwSizeStoreType']
883
+ dataSize = headerData['DataSize']
847
884
 
848
885
  # Restart the count of bytes read
849
886
  self.totalBytesRead = 0
@@ -851,13 +888,12 @@ class DataProductWriter:
851
888
  recordList = [headerData]
852
889
 
853
890
  while self.totalBytesRead < dataSize:
854
-
855
- recordData = self.get_record_data(headerJSON, dictJSON)
891
+ recordData = self.get_record_data(self.headerJSON, dictJSON)
856
892
  recordList.append(recordData)
857
893
 
858
894
  computedCRC = self.calculatedCRC
859
895
  # Read the data checksum
860
- headerData['dataHash'] = self.read_field(headerJSON.dataHash.type)
896
+ headerData['dataHash'] = self.read_field(self.headerJSON.dataHash.type)
861
897
 
862
898
  if computedCRC != headerData['dataHash']:
863
899
  raise CRCError("Data", headerData['dataHash'], computedCRC)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fprime-gds
3
- Version: 4.0.0a9
3
+ Version: 4.0.0a10
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:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes