fprime-gds 3.6.1__py3-none-any.whl → 4.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fprime_gds/common/communication/adapters/ip.py +14 -9
- fprime_gds/common/communication/adapters/uart.py +34 -25
- fprime_gds/common/communication/ccsds/__init__.py +0 -0
- fprime_gds/common/communication/ccsds/apid.py +19 -0
- fprime_gds/common/communication/ccsds/chain.py +106 -0
- fprime_gds/common/communication/ccsds/space_data_link.py +196 -0
- fprime_gds/common/communication/ccsds/space_packet.py +129 -0
- fprime_gds/common/communication/framing.py +27 -32
- fprime_gds/common/decoders/ch_decoder.py +1 -1
- fprime_gds/common/decoders/event_decoder.py +9 -2
- fprime_gds/common/decoders/pkt_decoder.py +1 -1
- fprime_gds/common/distributor/distributor.py +6 -3
- fprime_gds/common/encoders/ch_encoder.py +2 -2
- fprime_gds/common/encoders/cmd_encoder.py +2 -2
- fprime_gds/common/encoders/event_encoder.py +2 -2
- fprime_gds/common/encoders/pkt_encoder.py +2 -2
- fprime_gds/common/encoders/seq_writer.py +2 -2
- fprime_gds/common/fpy/README.md +56 -0
- fprime_gds/common/fpy/SPEC.md +69 -0
- fprime_gds/common/fpy/__init__.py +0 -0
- fprime_gds/common/fpy/bytecode/__init__.py +0 -0
- fprime_gds/common/fpy/bytecode/directives.py +490 -0
- fprime_gds/common/fpy/codegen.py +1687 -0
- fprime_gds/common/fpy/grammar.lark +88 -0
- fprime_gds/common/fpy/main.py +40 -0
- fprime_gds/common/fpy/parser.py +239 -0
- fprime_gds/common/gds_cli/base_commands.py +1 -1
- fprime_gds/common/handlers.py +39 -0
- fprime_gds/common/loaders/fw_type_json_loader.py +54 -0
- fprime_gds/common/loaders/json_loader.py +15 -0
- fprime_gds/common/loaders/pkt_json_loader.py +125 -0
- fprime_gds/common/loaders/prm_json_loader.py +85 -0
- fprime_gds/common/logger/__init__.py +2 -2
- fprime_gds/common/pipeline/dictionaries.py +60 -41
- fprime_gds/common/pipeline/encoding.py +19 -0
- fprime_gds/common/pipeline/histories.py +4 -0
- fprime_gds/common/pipeline/standard.py +16 -2
- fprime_gds/common/templates/cmd_template.py +8 -0
- fprime_gds/common/templates/prm_template.py +81 -0
- fprime_gds/common/testing_fw/api.py +148 -1
- fprime_gds/common/testing_fw/pytest_integration.py +37 -3
- fprime_gds/common/tools/README.md +34 -0
- fprime_gds/common/tools/params.py +246 -0
- fprime_gds/common/utils/config_manager.py +6 -6
- fprime_gds/common/utils/data_desc_type.py +6 -1
- fprime_gds/executables/apps.py +189 -11
- fprime_gds/executables/cli.py +468 -127
- fprime_gds/executables/comm.py +5 -2
- fprime_gds/executables/data_product_writer.py +164 -165
- fprime_gds/executables/fprime_cli.py +3 -3
- fprime_gds/executables/run_deployment.py +13 -5
- fprime_gds/flask/app.py +3 -0
- fprime_gds/flask/resource.py +5 -2
- fprime_gds/flask/static/addons/chart-display/addon.js +8 -3
- fprime_gds/flask/static/js/datastore.js +1 -0
- fprime_gds/flask/static/js/vue-support/channel.js +1 -1
- fprime_gds/flask/static/js/vue-support/event.js +1 -1
- fprime_gds/plugin/definitions.py +86 -8
- fprime_gds/plugin/system.py +172 -58
- {fprime_gds-3.6.1.dist-info → fprime_gds-4.0.0.dist-info}/METADATA +23 -21
- {fprime_gds-3.6.1.dist-info → fprime_gds-4.0.0.dist-info}/RECORD +66 -50
- {fprime_gds-3.6.1.dist-info → fprime_gds-4.0.0.dist-info}/WHEEL +1 -1
- {fprime_gds-3.6.1.dist-info → fprime_gds-4.0.0.dist-info}/entry_points.txt +2 -0
- fprime_gds/common/loaders/ch_py_loader.py +0 -79
- fprime_gds/common/loaders/cmd_py_loader.py +0 -66
- fprime_gds/common/loaders/event_py_loader.py +0 -75
- fprime_gds/common/loaders/python_loader.py +0 -132
- {fprime_gds-3.6.1.dist-info → fprime_gds-4.0.0.dist-info/licenses}/LICENSE.txt +0 -0
- {fprime_gds-3.6.1.dist-info → fprime_gds-4.0.0.dist-info/licenses}/NOTICE.txt +0 -0
- {fprime_gds-3.6.1.dist-info → fprime_gds-4.0.0.dist-info}/top_level.txt +0 -0
@@ -2,18 +2,23 @@ fastentrypoints.py,sha256=2HO-tsTTZxpzYNd-BaLK3WDLknzCZKzb_yX2p3Ftqa8,4020
|
|
2
2
|
fprime_gds/__init__.py,sha256=y2ljhCEHnvyfSDvXIEgBGIk8oHjjjjCWFxfddOGeYFk,115
|
3
3
|
fprime_gds/version.py,sha256=dlUlfOKTsGaqz_L7TjhCVC-Vanx5cK67kdZlqcHCM8M,395
|
4
4
|
fprime_gds/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
|
-
fprime_gds/common/handlers.py,sha256=
|
5
|
+
fprime_gds/common/handlers.py,sha256=YyhuF4yg3d7tFgWmbvXfxLDHYgea6Z1hpFd2A27gVZY,4464
|
6
6
|
fprime_gds/common/transport.py,sha256=uYXWkM8TYEYz1vfY4AEn0PF8Gu4tkYmJ5t4w1YY1yW8,10565
|
7
7
|
fprime_gds/common/zmq_transport.py,sha256=E_iBZ5sA4JKB99MWSOM6XnPrO-mbFyRvD9eQp9te6-Y,12397
|
8
8
|
fprime_gds/common/communication/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
9
|
fprime_gds/common/communication/checksum.py,sha256=f6W0Tr68U-XGnFmysMqsFzoGYZVE8clKf-VIJja_1YM,741
|
10
|
-
fprime_gds/common/communication/framing.py,sha256=
|
10
|
+
fprime_gds/common/communication/framing.py,sha256=GnEUgHiTc0dEJ3coaVmcA03NXk8ehHfPaywB7hNnoO8,12658
|
11
11
|
fprime_gds/common/communication/ground.py,sha256=9SD3AoyHA43yNE8UYkWnu5nEJt1PgyB3sU3QLDc4eDY,3619
|
12
12
|
fprime_gds/common/communication/updown.py,sha256=UhfCIIA2eM5g2FsIhOGJJH6HzHurUPgcKIJ5fsLb2lE,9888
|
13
13
|
fprime_gds/common/communication/adapters/__init__.py,sha256=ivGtzUTqhBYuve5mhN9VOHITwgZjNMVv7sxuac2Ll3c,470
|
14
14
|
fprime_gds/common/communication/adapters/base.py,sha256=i3mf4HC-4tuf4mNkhdXCKlngRhODyTriia2pw6XBoSQ,3393
|
15
|
-
fprime_gds/common/communication/adapters/ip.py,sha256=
|
16
|
-
fprime_gds/common/communication/adapters/uart.py,sha256=
|
15
|
+
fprime_gds/common/communication/adapters/ip.py,sha256=vxSGbxQYNCC4M0Zp0wvA7VTwsDFQ0i6uqRuOHks1ibA,17322
|
16
|
+
fprime_gds/common/communication/adapters/uart.py,sha256=5WkA8xpQ8E7nv2DbN168fibz1l-GddJUKnf6Hcd4hvU,7194
|
17
|
+
fprime_gds/common/communication/ccsds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
18
|
+
fprime_gds/common/communication/ccsds/apid.py,sha256=Y5K_xHLo1bmpxOlkt-TSLulCXbKIQrbYfa3GXhadqEE,686
|
19
|
+
fprime_gds/common/communication/ccsds/chain.py,sha256=Rkhls55BUwFU0cMlRMY183hlFpfqidQJ9ZUE1kdfi38,4637
|
20
|
+
fprime_gds/common/communication/ccsds/space_data_link.py,sha256=pDi1JpmYBuKGsDgTX80Wp8PU_CDtDPtkzdnX1FXN5eM,7385
|
21
|
+
fprime_gds/common/communication/ccsds/space_packet.py,sha256=27phwn8MfBFfdjS5Vl0Lfe38xfss6xSZnxGkJcQa92g,5190
|
17
22
|
fprime_gds/common/controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
18
23
|
fprime_gds/common/data_types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
24
|
fprime_gds/common/data_types/ch_data.py,sha256=RP9zSyzNcH0nJ3MYyW_IATnmnHYZ6d0KmoJUJantdBI,6111
|
@@ -24,28 +29,37 @@ fprime_gds/common/data_types/file_data.py,sha256=4_G9kf4ThC5NzkxnKa0xNYBdi8UDvZg
|
|
24
29
|
fprime_gds/common/data_types/pkt_data.py,sha256=cxqUnsPte0ijF1E8F1_uglVKIJFAIQbpoBlmwRjMrJY,3405
|
25
30
|
fprime_gds/common/data_types/sys_data.py,sha256=Xfk5xryFg7zWS3VcGUDx9lQYBTajjWXvwkgFK5EUCG4,2095
|
26
31
|
fprime_gds/common/decoders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
27
|
-
fprime_gds/common/decoders/ch_decoder.py,sha256=
|
32
|
+
fprime_gds/common/decoders/ch_decoder.py,sha256=mx0yfT-DQqQ8TrmRM3dr79eL9_E-c0gsKiKvvsjAu98,3849
|
28
33
|
fprime_gds/common/decoders/decoder.py,sha256=9j7u05_nwXaEjR0etsoB--ATsHuILYCXlhk9m9yajKg,2655
|
29
|
-
fprime_gds/common/decoders/event_decoder.py,sha256=
|
34
|
+
fprime_gds/common/decoders/event_decoder.py,sha256=ib-O18V5Z7bcnUUSDE9R0fU--bAZsfxLwuHXm964rzE,4505
|
30
35
|
fprime_gds/common/decoders/file_decoder.py,sha256=Ky2U8bli3YL6GbT9jSSvI73ySOtf0cdZLK4FXTuWjfA,2542
|
31
|
-
fprime_gds/common/decoders/pkt_decoder.py,sha256=
|
36
|
+
fprime_gds/common/decoders/pkt_decoder.py,sha256=kW8k3OSbMy96w6MzsGWp656lAQvwxrIznWkD3Sbi8Ig,3329
|
32
37
|
fprime_gds/common/distributor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
33
|
-
fprime_gds/common/distributor/distributor.py,sha256=
|
38
|
+
fprime_gds/common/distributor/distributor.py,sha256=ay2b-eMuBEGzQwNoSBLK341CXxGnrFHSIcRKErzIQIU,7999
|
34
39
|
fprime_gds/common/encoders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
35
|
-
fprime_gds/common/encoders/ch_encoder.py,sha256=
|
36
|
-
fprime_gds/common/encoders/cmd_encoder.py,sha256=
|
40
|
+
fprime_gds/common/encoders/ch_encoder.py,sha256=TBrTJ7TK4WwCh6KAspozh63WcPxrMImloB8tz7qeulw,2878
|
41
|
+
fprime_gds/common/encoders/cmd_encoder.py,sha256=5wG5854ozmxctnYou3q9MdQNkTQEmpCiT4oBVgNRZdE,3499
|
37
42
|
fprime_gds/common/encoders/encoder.py,sha256=xgFFCi-qKEKG7T5Qfo-qIadSiY0NSnfDgQUBq21fMhw,2984
|
38
|
-
fprime_gds/common/encoders/event_encoder.py,sha256=
|
43
|
+
fprime_gds/common/encoders/event_encoder.py,sha256=aM_3hWWx4OrLKF3-MlhmGSBYnzt-4iktSzMVrcUbfB8,3140
|
39
44
|
fprime_gds/common/encoders/file_encoder.py,sha256=G9uUXQP-oD2eW_GJuGNBrN7xPafKFhmgKiNi-zvZz-g,3830
|
40
|
-
fprime_gds/common/encoders/pkt_encoder.py,sha256=
|
41
|
-
fprime_gds/common/encoders/seq_writer.py,sha256=
|
45
|
+
fprime_gds/common/encoders/pkt_encoder.py,sha256=6hzwrAEg1tjGw9yGycWMuNgbGCoe87Cd-7eP1rvy2d4,3126
|
46
|
+
fprime_gds/common/encoders/seq_writer.py,sha256=rH1I8trAHBKjqxQtNg1isTmLWqAjK3xtZbETTCp6RQI,6882
|
42
47
|
fprime_gds/common/files/File Decoder Documentation.txt,sha256=a-VYHcUMqh7mBGY2fqvMf1nd3gdg3cLdPKwrulNKXjc,5314
|
43
48
|
fprime_gds/common/files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
44
49
|
fprime_gds/common/files/downlinker.py,sha256=CZPfhH0J9-LNqW5Cv_ryicLTuoedLSWK8OPQmmQDZZY,7498
|
45
50
|
fprime_gds/common/files/helpers.py,sha256=sGaxcczXmZ5_soawT7x_eJ_cC2PZ6KOGBfusAV4QC_g,7219
|
46
51
|
fprime_gds/common/files/uplinker.py,sha256=lgqhlgeipBt3Arx-ohzK8vCdS54fKpv9Rg7SUTocUX8,13244
|
52
|
+
fprime_gds/common/fpy/README.md,sha256=AJE9KJDarTTW9nsTJBiZ6cKyPYQbWKbKJbFiNz6M8Z4,1414
|
53
|
+
fprime_gds/common/fpy/SPEC.md,sha256=XTMgr96BIVJheOtjAp6Qgu5l5RE16DxxIkPl0WwXfEs,2248
|
54
|
+
fprime_gds/common/fpy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
55
|
+
fprime_gds/common/fpy/codegen.py,sha256=5VdV-f6CdU1LPJx4swB_GV5pvPe3Cqh9E3bkS0dBAo4,59828
|
56
|
+
fprime_gds/common/fpy/grammar.lark,sha256=QIQgmj58pW9ou2u7DzE39c0fz55eGNj3X7ridzAHRFk,2128
|
57
|
+
fprime_gds/common/fpy/main.py,sha256=U50sQCrwhZgxGzkjKgaJywoQM_cEH78hN9Vy3pDKKMA,1073
|
58
|
+
fprime_gds/common/fpy/parser.py,sha256=g-l67oZN_vB1JAdZ5S3u9m8APf6PdJ88GZyz0iX66qo,4418
|
59
|
+
fprime_gds/common/fpy/bytecode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
60
|
+
fprime_gds/common/fpy/bytecode/directives.py,sha256=tBpPQ2ZnQXA7juB85HhacDdil1vEHUKW8m_AsMf1KdQ,13360
|
47
61
|
fprime_gds/common/gds_cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
48
|
-
fprime_gds/common/gds_cli/base_commands.py,sha256=
|
62
|
+
fprime_gds/common/gds_cli/base_commands.py,sha256=nHnzHRMXs9haRjiUmq-Ciu1DSo1BXtcVscByk1Ypsxo,9432
|
49
63
|
fprime_gds/common/gds_cli/channels.py,sha256=S8y0Mo2JbBFPvMzeW22HFVJ8p-UC-tzpYM7rXqIGWi4,2136
|
50
64
|
fprime_gds/common/gds_cli/command_send.py,sha256=pMPwCixiuhk3r1mP7IbHLlItxYf_np8ez0hGhH0yTUw,6608
|
51
65
|
fprime_gds/common/gds_cli/events.py,sha256=EpaUfDEaXvPwKu7qutkuU1f8zrFoVNsbyCIGUFUloWI,2123
|
@@ -58,20 +72,19 @@ fprime_gds/common/history/ram.py,sha256=ELNlyC6SmQJ-ZKD1NRi4H892tt1ppDNfz7R2c0UF
|
|
58
72
|
fprime_gds/common/history/test.py,sha256=JMOlXPYtS9OTT1xb0GKn2YLI-0ESElbhvhb8usFatz0,5048
|
59
73
|
fprime_gds/common/loaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
60
74
|
fprime_gds/common/loaders/ch_json_loader.py,sha256=YF0nkDTlEJVZVTBWnjID8HFj8W9yq-hV2CkiyayCuhE,4079
|
61
|
-
fprime_gds/common/loaders/ch_py_loader.py,sha256=NKJV03k9jOUB9vELVSXyCorIiUwbGx-MlatwOPsUAP8,2688
|
62
75
|
fprime_gds/common/loaders/ch_xml_loader.py,sha256=wRXAC3GkUShvKtb89O5tY92BtKWOFYoJ7loOF7aL5v8,4093
|
63
76
|
fprime_gds/common/loaders/cmd_json_loader.py,sha256=wcwAaalRHXntAb9m0EvX-fXNCj_ruITzItOvKKhXsGQ,3059
|
64
|
-
fprime_gds/common/loaders/cmd_py_loader.py,sha256=6d_vMP0Vbpg2fnnV4qUtkC-WzlYkVm5kvTUABH-zp4E,2252
|
65
77
|
fprime_gds/common/loaders/cmd_xml_loader.py,sha256=X-fCzLt1aCjqsDu-Exy2gSYDnh_TYi5rDnRpYT7tCZQ,2391
|
66
78
|
fprime_gds/common/loaders/dict_loader.py,sha256=TasuICjsRYPWAsgmHGmsioxa8F7xmgAj9_UplzczylA,3990
|
67
79
|
fprime_gds/common/loaders/event_json_loader.py,sha256=DPVJQ1wIY3r13rxTWrE9n7i6kSAF5m4jB-XRsxaRaDA,3572
|
68
|
-
fprime_gds/common/loaders/event_py_loader.py,sha256=m4KlDl0mXn8ZQr-IfpUg0KaGIOJUErZkcIohlW9jNPc,2598
|
69
80
|
fprime_gds/common/loaders/event_xml_loader.py,sha256=Q3Vm7ROTVgolSp5umkNMp0Eh95sir6ZAyAegrSjkiis,2875
|
70
|
-
fprime_gds/common/loaders/
|
81
|
+
fprime_gds/common/loaders/fw_type_json_loader.py,sha256=Ybtfv0jNnzcTrnmFfi6EujAbLlA4Oocj3EMFBVRXlCM,2048
|
82
|
+
fprime_gds/common/loaders/json_loader.py,sha256=YTvNkVRbaeDAKDs79J5RV7Z8zeO7x0_a8aIz5KLq9rA,9300
|
83
|
+
fprime_gds/common/loaders/pkt_json_loader.py,sha256=OuHYXE0FP33oAh0z6AScUdLgFg9VzXI8rqPJz5pdTdw,5080
|
71
84
|
fprime_gds/common/loaders/pkt_xml_loader.py,sha256=ZS4qchqQnIBx0Tw69ehP8yqm1g_uYSQzmnijR3FxqJg,4795
|
72
|
-
fprime_gds/common/loaders/
|
85
|
+
fprime_gds/common/loaders/prm_json_loader.py,sha256=YCSg3PhVsJTD1FgY_h0i8wV3TNikcZSrczHCzrTM6JM,2896
|
73
86
|
fprime_gds/common/loaders/xml_loader.py,sha256=8AlTTHddJbJqUr6St-zJI8CTqoPuCNtNoRBmdwCorcg,14820
|
74
|
-
fprime_gds/common/logger/__init__.py,sha256=
|
87
|
+
fprime_gds/common/logger/__init__.py,sha256=TLUbrAnkCtckKGsLzh4hXgEshwQfZsWMDaOOt369BqU,1463
|
75
88
|
fprime_gds/common/logger/data_logger.py,sha256=VjfhTGO1gGw954xNhSc0_zpw8JexCho5f8BlXDEYkL4,2505
|
76
89
|
fprime_gds/common/logger/test_logger.py,sha256=wL8Lq49sVmxGRALgv-ei6AnXFh79qlHFehmKJ1A8X28,6475
|
77
90
|
fprime_gds/common/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -82,40 +95,43 @@ fprime_gds/common/models/common/event.py,sha256=gSFrCJT9ZddGJfkf3fGCCqk0aMIQV-SN
|
|
82
95
|
fprime_gds/common/parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
83
96
|
fprime_gds/common/parsers/seq_file_parser.py,sha256=6DZrA0jmt8IqsutfK7pdLtYn4oVHO593rWgAOH63yRg,9587
|
84
97
|
fprime_gds/common/pipeline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
85
|
-
fprime_gds/common/pipeline/dictionaries.py,sha256=
|
86
|
-
fprime_gds/common/pipeline/encoding.py,sha256=
|
98
|
+
fprime_gds/common/pipeline/dictionaries.py,sha256=x3QCZAg6YB9bEumZ330PGo0ilJqODGyo_K70RgbQ53M,8009
|
99
|
+
fprime_gds/common/pipeline/encoding.py,sha256=PttJ8NmXm75mLXyhlmxOJqE8RFt46q1dThaV19PyAr4,7216
|
87
100
|
fprime_gds/common/pipeline/files.py,sha256=J2zm0sucvImtmSnv0iUp5uTpvUO8nlmz2lUdMuMC5aM,2244
|
88
|
-
fprime_gds/common/pipeline/histories.py,sha256=
|
101
|
+
fprime_gds/common/pipeline/histories.py,sha256=7KyboNnm9OARQk4meVPSSeYpeqH0G8RWRiy0BLBL1rw,3671
|
89
102
|
fprime_gds/common/pipeline/router.py,sha256=-P1wI0KXEh_snOzDaq8CjEoWuM_zRm8vUMR1T0oY9qQ,2327
|
90
|
-
fprime_gds/common/pipeline/standard.py,sha256=
|
103
|
+
fprime_gds/common/pipeline/standard.py,sha256=fDSPfyhYPMNhev5IQG2j51sCtQxXZ5PrqmulKH8TNjE,9778
|
91
104
|
fprime_gds/common/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
92
105
|
fprime_gds/common/templates/ch_template.py,sha256=1MoDZsia0dI_CvnIttwyKLhbQhum35OcJnFc50Xohuo,3893
|
93
|
-
fprime_gds/common/templates/cmd_template.py,sha256=
|
106
|
+
fprime_gds/common/templates/cmd_template.py,sha256=n91z4WhFgHwTu6_fQqy7JqpkEObAkllIeEy0AR0DvrQ,5455
|
94
107
|
fprime_gds/common/templates/data_template.py,sha256=U87d8oC-BDTDuBRZbNnPkXy6rI_Pr-XnChHWZunw5jo,735
|
95
108
|
fprime_gds/common/templates/event_template.py,sha256=L0hkWB_kEMhTNodPUqBAev76SMmWT9EWdcqxaaQX9ZE,4062
|
96
109
|
fprime_gds/common/templates/pkt_template.py,sha256=5Wi6389m5j8w7JITBGfeUnw6CYE1-hjcVJ42NJmLDcE,1794
|
110
|
+
fprime_gds/common/templates/prm_template.py,sha256=qd0UX4ARZuPWvnFbU_DO3HkQY4QgMfqPxNcNhk-dl9A,2303
|
97
111
|
fprime_gds/common/testing_fw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
98
|
-
fprime_gds/common/testing_fw/api.py,sha256=
|
112
|
+
fprime_gds/common/testing_fw/api.py,sha256=lnDiyCrnj8Q8uzrmPeFOewSUPX_BvHRisY2jk-4G3eg,66045
|
99
113
|
fprime_gds/common/testing_fw/predicates.py,sha256=CsHsVs_EVXCLQLd2NVOvy8MxmUQVxLMr3i1ouEUqOtQ,18371
|
100
|
-
fprime_gds/common/testing_fw/pytest_integration.py,sha256=
|
114
|
+
fprime_gds/common/testing_fw/pytest_integration.py,sha256=CAvuH9_3RuKplKQVB3t_jerPr-LPzwPWoM6z3lMs16g,6203
|
115
|
+
fprime_gds/common/tools/README.md,sha256=WVEciyfsbEVGmb9xR5A6Ioy5pBVnCsWOIJfySLeq9YM,2325
|
101
116
|
fprime_gds/common/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
117
|
+
fprime_gds/common/tools/params.py,sha256=htnMLlUW9HmBo4Qc7kYhnWr1sO6bK2mckdskLt5rDUk,9323
|
102
118
|
fprime_gds/common/tools/seqgen.py,sha256=O57igktjWku5OJhBqezhCjPYUmh4GZM-9qKCChqEW7g,6034
|
103
119
|
fprime_gds/common/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
104
|
-
fprime_gds/common/utils/config_manager.py,sha256=
|
105
|
-
fprime_gds/common/utils/data_desc_type.py,sha256=
|
120
|
+
fprime_gds/common/utils/config_manager.py,sha256=EurtNdApA9zpIjAXmGSTgFUen0UaVDryH5g9LwMhu1E,5539
|
121
|
+
fprime_gds/common/utils/data_desc_type.py,sha256=0AkEMfEa5refd_moovf1hkgKiNakADRzv4soghvf9a4,883
|
106
122
|
fprime_gds/common/utils/event_severity.py,sha256=7qPXHrDaM_REJ7sKBUEJTZIE0D4qVnVajsPDUuHg7sI,300
|
107
123
|
fprime_gds/common/utils/string_util.py,sha256=u_2iahRG3ROu3lAAt_KVcK226gEByElXqrA8mH8eDpI,3584
|
108
124
|
fprime_gds/executables/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
109
|
-
fprime_gds/executables/apps.py,sha256=
|
110
|
-
fprime_gds/executables/cli.py,sha256=
|
111
|
-
fprime_gds/executables/comm.py,sha256=
|
112
|
-
fprime_gds/executables/data_product_writer.py,sha256=
|
113
|
-
fprime_gds/executables/fprime_cli.py,sha256=
|
114
|
-
fprime_gds/executables/run_deployment.py,sha256=
|
125
|
+
fprime_gds/executables/apps.py,sha256=u79T_PlgMmNmA4YwWjs7LvPMCJnrjnURr05NMthOYP0,13350
|
126
|
+
fprime_gds/executables/cli.py,sha256=Qqq3JQOqTsfDRsbTALw25xnwN7fCEVlpcKDV4jvGopQ,50961
|
127
|
+
fprime_gds/executables/comm.py,sha256=08rO0o0MJgTRngB7Ygu2IL_gEAWKF7WFvFyro1CqReE,5214
|
128
|
+
fprime_gds/executables/data_product_writer.py,sha256=e1Rp2LT_Cpg08f0Ki8GhirC7Wn6LtYiAef7KLAkZHUY,37773
|
129
|
+
fprime_gds/executables/fprime_cli.py,sha256=CMoT7zWNwM8h2mSZW03AR96wl_XnZXoLNiOZN_sDi38,12431
|
130
|
+
fprime_gds/executables/run_deployment.py,sha256=Zl0Y9-6i6c8tZhcS7XkAeVQtzn0d9fV-3UJQZ0bnBrc,7237
|
115
131
|
fprime_gds/executables/tcpserver.py,sha256=KspVpu5YIuiWKOk5E6UDMKvqXYrRB1j9aX8CkMxysfw,17555
|
116
132
|
fprime_gds/executables/utils.py,sha256=SbzXRe1p41qMPdifvPap5_4v0T42gZZ_Rs_OYfITd80,7626
|
117
133
|
fprime_gds/flask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
118
|
-
fprime_gds/flask/app.py,sha256=
|
134
|
+
fprime_gds/flask/app.py,sha256=2LTjx5MFP18ypYz_l80i4ijAWuxv7IVtmzCgCk0fBy8,6852
|
119
135
|
fprime_gds/flask/channels.py,sha256=sOeL-UmWPh2hqYvqj81STpABLlPcjdPgkRwjd3Qx77k,735
|
120
136
|
fprime_gds/flask/commands.py,sha256=62R3b0mnjc3_XpULpqJyUSvAcfOjAyZNifQ3wqHKO7s,3658
|
121
137
|
fprime_gds/flask/components.py,sha256=a-eG8XJfSrqR8MIzIc9StwbNwxcBqkxYMEYq46S2Bmk,4176
|
@@ -125,7 +141,7 @@ fprime_gds/flask/events.py,sha256=BO9OUUwNDnRuOz4ZC6nFHMR7sJJ9P2P0xUxDluGd218,73
|
|
125
141
|
fprime_gds/flask/json.py,sha256=PBljX3afJzyE_04DvZS4OEFOQW_ldVmfWiTYfxPZiGo,5888
|
126
142
|
fprime_gds/flask/logs.py,sha256=CzHkXtv7_UG2b1c_z_cGIw-jJT088Sb7DggEB3c9D8U,1571
|
127
143
|
fprime_gds/flask/requirements.txt,sha256=K6y8h0MJ66Zq9Pz2ZIR721wV0EX1mYDfom2gmBobxb4,20
|
128
|
-
fprime_gds/flask/resource.py,sha256=
|
144
|
+
fprime_gds/flask/resource.py,sha256=1gMu2ITtm1YTTe0fksOQOk2OP4Y9gnyWAdf4B7Sst8A,4291
|
129
145
|
fprime_gds/flask/sequence.py,sha256=1FfOFIUdWFX1qXjONAWm1vklPbyhkBYkuPow8RBt-yk,3554
|
130
146
|
fprime_gds/flask/stats.py,sha256=i62envu9V6WpNsRD_mlhwzB_2dGUOCTf1XpyC5HApzg,1177
|
131
147
|
fprime_gds/flask/updown.py,sha256=7za_zgOwQKHgm-3W1OBZqBgDLCmj7c0ziFEduhEuqdU,6176
|
@@ -143,7 +159,7 @@ fprime_gds/flask/static/addons/channel-render/addon.js,sha256=zAM8H_cVQp4qwXo_9c
|
|
143
159
|
fprime_gds/flask/static/addons/channel-render/channel-render-template.js,sha256=wS8JOTUWp3OYwVYkBDTRJQjSiIdWFgmbnoMV4RukYj8,1966
|
144
160
|
fprime_gds/flask/static/addons/channel-render/channel-render.js,sha256=hL0aGcnm8HEkhz0leKS7phxYFiG3vzWRznDX0qU4t6c,5080
|
145
161
|
fprime_gds/flask/static/addons/chart-display/addon-templates.js,sha256=gyKy_uIh47s8Yia_xyeL81F-XQ3KpXT48IUo6Q_PwqI,6549
|
146
|
-
fprime_gds/flask/static/addons/chart-display/addon.js,sha256=
|
162
|
+
fprime_gds/flask/static/addons/chart-display/addon.js,sha256=uYBnpK0VqlpOx1aRVr_Cv5AQ7dzGtjsrXHH1xWZtljo,9582
|
147
163
|
fprime_gds/flask/static/addons/chart-display/config.js,sha256=df1HOg3D4v8623yIAZ0ipyWtj5Ip5tVQGyEjnREqObQ,3893
|
148
164
|
fprime_gds/flask/static/addons/chart-display/sibling.js,sha256=2-k13yGpmF69kyBdAPR0tkO1kALQ1FnP3JmdJ01Lbes,3604
|
149
165
|
fprime_gds/flask/static/addons/chart-display/modified-vendor/chartjs-plugin-streaming.js,sha256=zSynedxrMPIlkFT-tROg3n9EJ8tyf1vaguT-jv15klc,30243
|
@@ -182,7 +198,7 @@ fprime_gds/flask/static/img/error.svg,sha256=dJOAFEQ_DlLvJg-fBuBGDCBua8rbvSzmY3l
|
|
182
198
|
fprime_gds/flask/static/img/logo.svg,sha256=czqCyVnhqFEw7qsKDMm63w959Pa77nYqY7GyoHVGcZ4,12470
|
183
199
|
fprime_gds/flask/static/img/success.svg,sha256=wCfYG4cPfSCcsZ76JI4SwAJ-y62rahx9rJXyB-2qDIY,1757
|
184
200
|
fprime_gds/flask/static/js/config.js,sha256=3CNrVmUtUGeiomAuoAE22w34r7wA-X0OtXN3JtLZYJ8,1066
|
185
|
-
fprime_gds/flask/static/js/datastore.js,sha256=
|
201
|
+
fprime_gds/flask/static/js/datastore.js,sha256=AAJKRQbcvQuS-4OScad5zBfYjHljDrjsL5RnTcXx39A,15508
|
186
202
|
fprime_gds/flask/static/js/gds.js,sha256=OeDJrNmNA8hUPi8QIHP-s33MW_IYT3QIccxzL75MsjA,1297
|
187
203
|
fprime_gds/flask/static/js/json.js,sha256=kfwzTqoyLu_Feqcp9WEhDWpZ3lziwHy9LGkOg8PCo6s,12429
|
188
204
|
fprime_gds/flask/static/js/loader.js,sha256=IbuJ7Jh70umyZog0iIupOuRGwc1tO5thT88jTW0XZc4,11414
|
@@ -190,12 +206,12 @@ fprime_gds/flask/static/js/performance.js,sha256=fGBbK5anf5UB9iAr6rO4u9sCkrQGlOH
|
|
190
206
|
fprime_gds/flask/static/js/settings.js,sha256=Cfnn1ybZUOmsp48t_b23TDaHBRctvpD_h2ivBVKz6HM,1101
|
191
207
|
fprime_gds/flask/static/js/uploader.js,sha256=HdFUGwJ-SN_OEMXiXXJw0YblC0j_QiOA1y9yVWyS4SI,2730
|
192
208
|
fprime_gds/flask/static/js/validate.js,sha256=yVY_MlpJeRfBRy3-k_JflWqyk-P_YJU3ot-iJtRJFPM,13046
|
193
|
-
fprime_gds/flask/static/js/vue-support/channel.js,sha256=
|
209
|
+
fprime_gds/flask/static/js/vue-support/channel.js,sha256=d0reMOk2yyyUxV8cvN8VNHkdUI_YHVsVEjj_ZWqyCcY,4577
|
194
210
|
fprime_gds/flask/static/js/vue-support/dashboard-box.js,sha256=yX6eH9BQRKRLHk2eBDv1AjVjpLbl8PP8t-SXQPmi0sU,739
|
195
211
|
fprime_gds/flask/static/js/vue-support/dashboard-row.js,sha256=vCkLANr_8GAkPLV4K0WAXWJohevOTods0VbjMrA5zC0,297
|
196
212
|
fprime_gds/flask/static/js/vue-support/dashboard.js,sha256=WOdmZoivmtg9KbLe8usPjlXTzEO_uwJQIY9iIgMhW2g,3022
|
197
213
|
fprime_gds/flask/static/js/vue-support/downlink.js,sha256=zY7S4w5ylQDQJ9-ihN-_1CUOxacGCuTyVO7-jeVefQg,1589
|
198
|
-
fprime_gds/flask/static/js/vue-support/event.js,sha256=
|
214
|
+
fprime_gds/flask/static/js/vue-support/event.js,sha256=p9Kh8Po7pN4cMMfP4lhvx8fnoohRTr07p4cPvWaSheM,5292
|
199
215
|
fprime_gds/flask/static/js/vue-support/fp-row.js,sha256=BwfWOxmTD7WPKKSBPlwLq3eARYQUg3pan1PPA9VzKy0,3760
|
200
216
|
fprime_gds/flask/static/js/vue-support/fptable.js,sha256=ETGE4LlBeLXQnOv6-NNtZtk3JadDOPus6ad3tBEooUo,18874
|
201
217
|
fprime_gds/flask/static/js/vue-support/log.js,sha256=40dDjFgmEugTFZFsy0Y1xqNJpnuEfUiZ_-M3HGTPMCc,2735
|
@@ -226,12 +242,12 @@ fprime_gds/flask/static/third-party/webfonts/fa-solid-900.ttf,sha256=r2OXUD_O-9Y
|
|
226
242
|
fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff,sha256=P200iM9lN09vZ2wxU0CwrCvoMr1VJAyAlEjjbvm5YyY,101648
|
227
243
|
fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff2,sha256=mDS4KtJuKjdYPSJnahLdLrD-fIA1aiEU0NsaqLOJlTc,78268
|
228
244
|
fprime_gds/plugin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
229
|
-
fprime_gds/plugin/definitions.py,sha256=
|
230
|
-
fprime_gds/plugin/system.py,sha256=
|
231
|
-
fprime_gds-
|
232
|
-
fprime_gds-
|
233
|
-
fprime_gds-
|
234
|
-
fprime_gds-
|
235
|
-
fprime_gds-
|
236
|
-
fprime_gds-
|
237
|
-
fprime_gds-
|
245
|
+
fprime_gds/plugin/definitions.py,sha256=QlxW1gNvoiqGMslSJjh3dTFZuv0igFHawN__3XJ0Wns,5355
|
246
|
+
fprime_gds/plugin/system.py,sha256=M9xb-8jBhCUUx3X1z2uAP8Wx_v6NkL8JeaFgGcMnQqY,13432
|
247
|
+
fprime_gds-4.0.0.dist-info/licenses/LICENSE.txt,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
248
|
+
fprime_gds-4.0.0.dist-info/licenses/NOTICE.txt,sha256=vXjA_xRcQhd83Vfk5D_vXg5kOjnnXvLuMi5vFKDEVmg,1612
|
249
|
+
fprime_gds-4.0.0.dist-info/METADATA,sha256=a-Y4yyp1UyFInL-uaxIxyCBXAQPkkjuW6tFhZaU_fZo,24574
|
250
|
+
fprime_gds-4.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
251
|
+
fprime_gds-4.0.0.dist-info/entry_points.txt,sha256=V2XMHMUJUGTVx5s3_kK1jLmoxSKE1vvj2XWHH9y49WQ,423
|
252
|
+
fprime_gds-4.0.0.dist-info/top_level.txt,sha256=6vzFLIX6ANfavKaXFHDMSLFtS94a6FaAsIWhjgYuSNE,27
|
253
|
+
fprime_gds-4.0.0.dist-info/RECORD,,
|
@@ -1,7 +1,9 @@
|
|
1
1
|
[console_scripts]
|
2
2
|
fprime-cli = fprime_gds.executables.fprime_cli:main
|
3
3
|
fprime-dp-write = fprime_gds.executables.data_product_writer:main
|
4
|
+
fprime-fpyc = fprime_gds.common.fpy.main:main
|
4
5
|
fprime-gds = fprime_gds.executables.run_deployment:main
|
6
|
+
fprime-prm-write = fprime_gds.common.tools.params:main
|
5
7
|
fprime-seqgen = fprime_gds.common.tools.seqgen:main
|
6
8
|
|
7
9
|
[pytest11]
|
@@ -1,79 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
@brief Loader class for importing python based channel dictionaries
|
3
|
-
|
4
|
-
@date Created July 11, 2018
|
5
|
-
@author R. Joseph Paetz
|
6
|
-
|
7
|
-
@bug No known bugs
|
8
|
-
"""
|
9
|
-
|
10
|
-
from fprime_gds.common.templates.ch_template import ChTemplate
|
11
|
-
|
12
|
-
# Custom Python Modules
|
13
|
-
from .python_loader import PythonLoader
|
14
|
-
|
15
|
-
|
16
|
-
class ChPyLoader(PythonLoader):
|
17
|
-
"""Class to load python based telemetry channel dictionaries"""
|
18
|
-
|
19
|
-
# Field names in the python module files (used to construct dictionaries)
|
20
|
-
ID_FIELD = "ID"
|
21
|
-
NAME_FIELD = "NAME"
|
22
|
-
COMP_FIELD = "COMPONENT"
|
23
|
-
DESC_FIELD = "CHANNEL_DESCRIPTION"
|
24
|
-
TYPE_FIELD = "TYPE"
|
25
|
-
FMT_STR_FIELD = "FORMAT_STRING"
|
26
|
-
LOW_R_FIELD = "LOW_RED"
|
27
|
-
LOW_O_FIELD = "LOW_ORANGE"
|
28
|
-
LOW_Y_FIELD = "LOW_YELLOW"
|
29
|
-
HIGH_Y_FIELD = "HIGH_YELLOW"
|
30
|
-
HIGH_O_FIELD = "HIGH_ORANGE"
|
31
|
-
HIGH_R_FIELD = "HIGH_RED"
|
32
|
-
|
33
|
-
def construct_dicts(self, path):
|
34
|
-
"""
|
35
|
-
Constructs and returns python dictionaries keyed on id and name
|
36
|
-
|
37
|
-
This function should not be called directly, instead, use
|
38
|
-
get_id_dict(path) and get_name_dict(path)
|
39
|
-
|
40
|
-
Args:
|
41
|
-
path: Path to the python module file dictionary to convert. This
|
42
|
-
should be a directory. If using a regular fprime deployment,
|
43
|
-
this should be a path to the events dictionary in your
|
44
|
-
generated folder:
|
45
|
-
${GENERATED_FOLDER_LOCATION}/generated/${DEPLOYMENT}/channels
|
46
|
-
|
47
|
-
Returns:
|
48
|
-
A tuple with two channel dictionaries (python type dict):
|
49
|
-
(id_dict, name_dict). The keys should be the channels' id and
|
50
|
-
name fields respectively and the values should be ChTemplate
|
51
|
-
objects.
|
52
|
-
"""
|
53
|
-
# We do need it sometimes, so if we don't always set it to true, we will need to pass an arg
|
54
|
-
module_dicts = self.read_dict(path, use_superpkg=True)
|
55
|
-
|
56
|
-
id_dict = {}
|
57
|
-
name_dict = {}
|
58
|
-
|
59
|
-
for ch_dict in module_dicts:
|
60
|
-
# Create a channel template object
|
61
|
-
ch_temp = ChTemplate(
|
62
|
-
ch_dict[self.ID_FIELD],
|
63
|
-
ch_dict[self.NAME_FIELD],
|
64
|
-
ch_dict[self.COMP_FIELD],
|
65
|
-
ch_dict[self.TYPE_FIELD],
|
66
|
-
ch_dict[self.FMT_STR_FIELD],
|
67
|
-
ch_dict[self.DESC_FIELD],
|
68
|
-
ch_dict[self.LOW_R_FIELD],
|
69
|
-
ch_dict[self.LOW_O_FIELD],
|
70
|
-
ch_dict[self.LOW_Y_FIELD],
|
71
|
-
ch_dict[self.HIGH_Y_FIELD],
|
72
|
-
ch_dict[self.HIGH_O_FIELD],
|
73
|
-
ch_dict[self.HIGH_R_FIELD],
|
74
|
-
)
|
75
|
-
|
76
|
-
id_dict[ch_dict[self.ID_FIELD]] = ch_temp
|
77
|
-
name_dict[ch_dict[self.NAME_FIELD]] = ch_temp
|
78
|
-
|
79
|
-
return id_dict, name_dict
|
@@ -1,66 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
@brief Loader class for importing python based command dictionaries
|
3
|
-
|
4
|
-
@date Created July 9, 2018
|
5
|
-
@author R. Joseph Paetz
|
6
|
-
|
7
|
-
@bug No known bugs
|
8
|
-
"""
|
9
|
-
|
10
|
-
from fprime_gds.common.templates import cmd_template
|
11
|
-
|
12
|
-
# Custom Python Modules
|
13
|
-
from . import python_loader
|
14
|
-
|
15
|
-
|
16
|
-
class CmdPyLoader(python_loader.PythonLoader):
|
17
|
-
"""Class to load python based command dictionaries"""
|
18
|
-
|
19
|
-
# Field names in the python module file dictionaries
|
20
|
-
COMPONENT_FIELD = "COMPONENT"
|
21
|
-
MNEMONIC_FIELD = "MNEMONIC"
|
22
|
-
OP_CODE_FIELD = "OP_CODE"
|
23
|
-
DESC_FIELD = "CMD_DESCRIPTION"
|
24
|
-
ARGS_FIELD = "ARGUMENTS"
|
25
|
-
|
26
|
-
def construct_dicts(self, path):
|
27
|
-
"""
|
28
|
-
Constructs and returns python dictionaries keyed on id and name
|
29
|
-
|
30
|
-
This function should not be called directly, instead use
|
31
|
-
get_id_dict(path) and get_name_dict(path) defined in the base Loader
|
32
|
-
class. For the command dictionary, the op_code is treated as the ID and
|
33
|
-
the command mnemonic is treated as the name.
|
34
|
-
|
35
|
-
Args:
|
36
|
-
path: Path to the python module file dictionary to convert. This
|
37
|
-
should be a directory. If using a regular fprime deployment,
|
38
|
-
this should be a path to the events dictionary in your
|
39
|
-
generated folder:
|
40
|
-
${GENERATED_FOLDER_LOCATION}/generated/${DEPLOYMENT}/events
|
41
|
-
|
42
|
-
Returns:
|
43
|
-
A tuple with two event dictionaries (python type dict):
|
44
|
-
(id_dict, name_dict). They should have keys of the id and name
|
45
|
-
fields respectively and the values for both should be event_template
|
46
|
-
objects.
|
47
|
-
"""
|
48
|
-
module_dicts = self.read_dict(path, use_superpkg=True)
|
49
|
-
|
50
|
-
id_dict = {}
|
51
|
-
name_dict = {}
|
52
|
-
|
53
|
-
for cmd_dict in module_dicts:
|
54
|
-
# Create a cmd template object
|
55
|
-
cmd_temp = cmd_template.CmdTemplate(
|
56
|
-
cmd_dict[self.OP_CODE_FIELD],
|
57
|
-
cmd_dict[self.MNEMONIC_FIELD],
|
58
|
-
cmd_dict[self.COMPONENT_FIELD],
|
59
|
-
cmd_dict[self.ARGS_FIELD],
|
60
|
-
cmd_dict[self.DESC_FIELD],
|
61
|
-
)
|
62
|
-
|
63
|
-
id_dict[cmd_dict[self.OP_CODE_FIELD]] = cmd_temp
|
64
|
-
name_dict[cmd_dict[self.MNEMONIC_FIELD]] = cmd_temp
|
65
|
-
|
66
|
-
return id_dict, name_dict
|
@@ -1,75 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
@brief Loader class for importing python based event dictionaries
|
3
|
-
|
4
|
-
@date Created July 3, 2018
|
5
|
-
@author R. Joseph Paetz
|
6
|
-
|
7
|
-
@bug No known bugs
|
8
|
-
"""
|
9
|
-
|
10
|
-
from fprime.common.models.serialize.type_exceptions import TypeMismatchException
|
11
|
-
|
12
|
-
from fprime_gds.common.templates import event_template
|
13
|
-
from fprime_gds.common.utils.event_severity import EventSeverity
|
14
|
-
|
15
|
-
# Custom Python Modules
|
16
|
-
from . import python_loader
|
17
|
-
|
18
|
-
|
19
|
-
class EventPyLoader(python_loader.PythonLoader):
|
20
|
-
"""Class to load python based event dictionaries"""
|
21
|
-
|
22
|
-
# Field names in the python module file dictionaries
|
23
|
-
ID_FIELD = "ID"
|
24
|
-
NAME_FIELD = "NAME"
|
25
|
-
COMP_FIELD = "COMPONENT"
|
26
|
-
SEVERITY_FIELD = "SEVERITY"
|
27
|
-
FMT_STR_FIELD = "FORMAT_STRING"
|
28
|
-
DESC_FIELD = "EVENT_DESCRIPTION"
|
29
|
-
ARGS_FIELD = "ARGUMENTS"
|
30
|
-
|
31
|
-
def construct_dicts(self, path):
|
32
|
-
"""
|
33
|
-
Constructs and returns python dictionaries keyed on id and name
|
34
|
-
|
35
|
-
This function should not be called directly, instead use
|
36
|
-
get_id_dict(path) and get_name_dict(path)
|
37
|
-
|
38
|
-
Args:
|
39
|
-
path: Path to the python module file dictionary to convert. This
|
40
|
-
should be a directory. If using a regular fprime deployment,
|
41
|
-
this should be a path to the events dictionary in your
|
42
|
-
generated folder:
|
43
|
-
${GENERATED_FOLDER_LOCATION}/generated/${DEPLOYMENT}/events
|
44
|
-
|
45
|
-
Returns:
|
46
|
-
A tuple with two event dictionaries (python type dict):
|
47
|
-
(id_dict, name_dict). The keys should be the events' id and name
|
48
|
-
fields respectively and the values should be EventTemplate
|
49
|
-
objects.
|
50
|
-
"""
|
51
|
-
module_dicts = self.read_dict(path, use_superpkg=True)
|
52
|
-
|
53
|
-
id_dict = {}
|
54
|
-
name_dict = {}
|
55
|
-
|
56
|
-
for event_dict in module_dicts:
|
57
|
-
|
58
|
-
try:
|
59
|
-
# Create an event template object
|
60
|
-
event_temp = event_template.EventTemplate(
|
61
|
-
event_dict[self.ID_FIELD],
|
62
|
-
event_dict[self.NAME_FIELD],
|
63
|
-
event_dict[self.COMP_FIELD],
|
64
|
-
event_dict[self.ARGS_FIELD],
|
65
|
-
EventSeverity[event_dict[self.SEVERITY_FIELD]],
|
66
|
-
event_dict[self.FMT_STR_FIELD],
|
67
|
-
event_dict[self.DESC_FIELD],
|
68
|
-
)
|
69
|
-
id_dict[event_dict[self.ID_FIELD]] = event_temp
|
70
|
-
name_dict[event_dict[self.NAME_FIELD]] = event_temp
|
71
|
-
except TypeMismatchException as error:
|
72
|
-
print(f"Type mismatch: {error.getMsg()}")
|
73
|
-
raise error
|
74
|
-
|
75
|
-
return id_dict, name_dict
|
@@ -1,132 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
@brief Base class for all loaders that load dictionaries of python fragments
|
3
|
-
|
4
|
-
The PythonLoader class inherits from the DictLoader base class and is intended
|
5
|
-
to be inherited by all loader classes that read dictionaries in the file system
|
6
|
-
made up of multiple python file fragments.
|
7
|
-
|
8
|
-
This Class only adds helper functions and thus does not overwrite any methods in
|
9
|
-
in the base DictLoader class. Because of this, all dictionaries returned from
|
10
|
-
this class will be empty.
|
11
|
-
|
12
|
-
@date Created July 3, 2018
|
13
|
-
@author R. Joseph Paetz
|
14
|
-
|
15
|
-
@bug No known bugs
|
16
|
-
"""
|
17
|
-
|
18
|
-
import glob
|
19
|
-
import importlib
|
20
|
-
import os
|
21
|
-
import sys
|
22
|
-
|
23
|
-
from fprime_gds.common.data_types import exceptions
|
24
|
-
|
25
|
-
# Custom Python Modules
|
26
|
-
from . import dict_loader
|
27
|
-
|
28
|
-
|
29
|
-
class PythonLoader(dict_loader.DictLoader):
|
30
|
-
"""Class to help load python file based dictionaries"""
|
31
|
-
|
32
|
-
def read_dict(self, path, use_superpkg=False):
|
33
|
-
"""
|
34
|
-
Reads all python modules at the given path and constructs a dict list
|
35
|
-
|
36
|
-
This function assumes that path is a directory containing many python
|
37
|
-
module files. Each module file has several fields with associated
|
38
|
-
values. This function reads each file and constructs a dictionary using
|
39
|
-
the fields and their values. These dictionaries are then compiled into
|
40
|
-
a list that is returned.
|
41
|
-
|
42
|
-
Args:
|
43
|
-
path: File Path to a folder containing python modules to load
|
44
|
-
use_superpkg: [Default=False] When true, modules will be imported
|
45
|
-
using both the package and superpackage qualifiers
|
46
|
-
(from A.B import C instead of from B import C). This
|
47
|
-
allows multiple dictionaries with the same package
|
48
|
-
name to be imported. This is especially important
|
49
|
-
when trying to import dictionaries from multiple
|
50
|
-
deployments.
|
51
|
-
|
52
|
-
Returns:
|
53
|
-
A list of dictionaries. Each dictionary represents one loaded module
|
54
|
-
and for keys has the names of the fields in the file and for values
|
55
|
-
has the values of those fields.
|
56
|
-
"""
|
57
|
-
modules = self.import_modules(path, use_superpkg)
|
58
|
-
|
59
|
-
module_dicts = []
|
60
|
-
for module in modules:
|
61
|
-
# Create a dictionary for this module's fields
|
62
|
-
mod_dict = {
|
63
|
-
field: getattr(module, field)
|
64
|
-
for field in dir(module)
|
65
|
-
if field.find("__") != 0 # Verify it is not a hidden field (doesn't start with "__")
|
66
|
-
}
|
67
|
-
|
68
|
-
module_dicts.append(mod_dict)
|
69
|
-
|
70
|
-
return module_dicts
|
71
|
-
|
72
|
-
@staticmethod
|
73
|
-
def import_modules(path, use_superpkg):
|
74
|
-
"""
|
75
|
-
Imports all modules in the given directory.
|
76
|
-
|
77
|
-
Args:
|
78
|
-
path: File Path to a folder containing python modules to load
|
79
|
-
use_superpkg: When true, modules will be imported
|
80
|
-
using both the package and superpackage qualifiers
|
81
|
-
(from A.B import C instead of from B import C). This
|
82
|
-
allows multiple dictionaries with the same package
|
83
|
-
name to be imported. This is especially important
|
84
|
-
when trying to import dictionaries from multiple
|
85
|
-
deployments.
|
86
|
-
|
87
|
-
Returns:
|
88
|
-
A list of module objects of all the newly imported modules
|
89
|
-
"""
|
90
|
-
# Verify path is a directory
|
91
|
-
if not os.path.isdir(path):
|
92
|
-
raise exceptions.GseControllerUndefinedDirectoryException(path)
|
93
|
-
|
94
|
-
# Compute package and superpackage names
|
95
|
-
(superpkg_path, pkg) = os.path.split(path)
|
96
|
-
(rest_of_path, superpkg) = os.path.split(superpkg_path)
|
97
|
-
|
98
|
-
# Make sure the directory we are importing from is in the python path
|
99
|
-
if use_superpkg:
|
100
|
-
sys.path.append(rest_of_path)
|
101
|
-
else:
|
102
|
-
sys.path.append(superpkg_path)
|
103
|
-
|
104
|
-
# Make sure serializable directory is imported
|
105
|
-
sys.path.append(superpkg_path + os.sep + "serializable")
|
106
|
-
|
107
|
-
# Compute a list of all files to import
|
108
|
-
all_files = glob.glob(path + os.sep + "*.py")
|
109
|
-
|
110
|
-
module_files = []
|
111
|
-
for py_file in all_files:
|
112
|
-
(file_path, file_name) = os.path.split(py_file)
|
113
|
-
if file_name != "__init__.py":
|
114
|
-
module_files.append(file_name)
|
115
|
-
|
116
|
-
# Import modules
|
117
|
-
module_list = []
|
118
|
-
for mf in module_files:
|
119
|
-
# Strip off .py from name by splitting at '.' and taking the first
|
120
|
-
# string
|
121
|
-
mod_name = mf.split(".")[0]
|
122
|
-
|
123
|
-
if use_superpkg:
|
124
|
-
import_name = f"{superpkg}.{pkg}.{mod_name}"
|
125
|
-
else:
|
126
|
-
import_name = f"{pkg}.{mod_name}"
|
127
|
-
|
128
|
-
m = importlib.import_module(import_name)
|
129
|
-
|
130
|
-
module_list.append(m)
|
131
|
-
|
132
|
-
return module_list
|
File without changes
|
File without changes
|
File without changes
|